ประสิทธิภาพในการคำนวณสถิติแรสเตอร์ใน PostGIS
ฉันพยายามคำนวณสถิติแรสเตอร์ (ต่ำสุด, สูงสุด, ค่าเฉลี่ย) สำหรับแต่ละรูปหลายเหลี่ยมในเลเยอร์เวกเตอร์โดยใช้ PostgreSQL / PostGIS คำตอบ GIS.SE นี้อธิบายวิธีการทำเช่นนี้โดยการคำนวณจุดตัดระหว่างรูปหลายเหลี่ยมและแรสเตอร์แล้วคำนวณค่าเฉลี่ยถ่วงน้ำหนัก: https://gis.stackexchange.com/a/19858/12420 ฉันใช้ข้อความค้นหาต่อไปนี้ (ซึ่งdemเป็นแรสเตอร์topo_area_su_regionของฉันคือเวกเตอร์ของฉันและtoidเป็นรหัสเฉพาะ: SELECT toid, Min((gv).val) As MinElevation, Max((gv).val) As MaxElevation, Sum(ST_Area((gv).geom) * (gv).val) / Sum(ST_Area((gv).geom)) as MeanElevation FROM (SELECT toid, ST_Intersection(rast, geom) AS gv FROM topo_area_su_region,dem WHERE ST_Intersects(rast, geom)) foo GROUP BY toid ORDER BY toid; ใช้งานได้ แต่ช้าเกินไป …