สามารถใช้ Zonal Statistics ใน PostGIS2 ได้หรือไม่


12

ขณะนี้มี postgis2 ซึ่งรองรับ rasters โดยค่าเริ่มต้นแล้วมันเป็นไปได้ไหมที่จะทำการวิเคราะห์ทางสถิติแบบโซน?

ฉันเป็น google มัน แต่ฉันไม่พบอะไรที่เป็นของแข็ง? มีบทช่วยสอนที่จะเริ่มต้นให้ฉันได้ไหม

ทุกคนสามารถให้ฉันเป็นตัวอย่าง sql ในการทำมันได้หรือไม่

แก้ไข:

ข้อความค้นหาที่อัปเดต (ง่าย) ตามบล็อกของ Aragon กล่าวถึง:

CREATE TABLE sum_pop3 AS 
 SELECT gid, SUM((ST_SummaryStats(ST_Clip(rast,1,geom))).sum)
 FROM perez_grid, ls_den
 WHERE ST_Intersects(geom,rast) 
GROUP BY gid;

สวัสดี @nickves คุณเคยจัดการให้สถิติโซนทำงานได้หรือไม่? ดูเหมือนว่าฉันจะไม่สามารถทำให้คิวรีที่อัปเดตทำงานได้
หน้าผา

@ CliffPatterson จำได้ว่าฉันออกกำลังกาย - มันเป็นเวลาสามปีแล้วที่มีการเปลี่ยนแปลงมากมาย ฉันจะลอง querry ในภายหลังและยืนยันหรืออัปเดต
nickves

บางสิ่งต้องเปลี่ยนไปจากครั้งสุดท้ายที่ฉันใช้มัน; เวลาไม่เพียงพอในขณะนี้เพื่อดูว่าการค้นหาเตะที่ใด หากคุณจัดการเพื่อแก้ไขโปรดอัปเดตได้ฟรี
nickves

ลองดูคำถามล่าสุดของฉันเกี่ยวกับเรื่องนี้
หน้าผา

คำตอบ:


6

คุณควรตรวจสอบร้านค้าจัดการและวิเคราะห์ข้อมูลแรสเตอร์ที่อยู่ในฐานข้อมูล PostgreSQL / PostGIS อวกาศเอกสารโดยปิแอร์ไซน์และสตีฟคัมมิงซึ่งถูกนำเสนอในฟอสส์ที่นี่ มีฟังก์ชันจำนวนมากที่กำหนดเป็นสถิติแรสเตอร์เพื่อแก้ไขปัญหาของคุณ ฉันคิดว่า ST_SummaryStats จะช่วยคุณเกี่ยวกับสถิติสถิตยศาสตร์ของหลักสูตรไม่เพียงพอ

ST_SummaryStats(raster) จะเปลี่ยนชุดของ (min, max, sum, mean, stddev, count (of withdata pixels)) บันทึก

Postgis 2.0 รองรับการวิเคราะห์สถิติเชิงพื้นที่ด้วยข้อความค้นหา sql บางรายการที่คุณทำงาน ฉันเจอเอกสารที่ดีเกี่ยวกับสถิติเกี่ยวกับสถิติของ esri กับ postgis 2.0 คุณควรตรวจสอบข้อมูลบางอย่างที่ย้ายเชิงพื้นที่ที่นี่ ทั้งคู่ได้รับผลสถิติเดียวกันโดยมีการสืบค้นอย่างหนัก

ตัวอย่างแบบสอบถามที่นำมาจากเว็บไซต์ Anthony Lopez ฉันได้กล่าวถึงก่อน ...

 CREATE TABLE sum_pop2 AS
WITH 
   feat AS (SELECT gid, geom FROM perez_grid AS b ),
   b_stats AS
(SELECT  gid, (stats).*
FROM (
SELECT gid, ST_SummaryStats(ST_Clip(rast,1,geom)) AS stats
FROM ls_den
INNER JOIN feat
ON ST_Intersects(feat.geom,rast) ) AS foo )
SELECT gid, SUM(count) AS cell_count
  ,SUM(sum) AS population
FROM b_stats
 WHERE count > 0
GROUP BY gid
ORDER BY gid;

ผลสถิติ Esri Zonal: ประชากร: 207,578 จำนวนเซลล์: 14,400

ผลลัพธ์ของ Postgis: จำนวนประชากร: 207,578 จำนวนเซลล์: 14,400

ความแตกต่างเปอร์เซ็นต์ของประชากร: 0%

ฉันยังไม่ได้ลองเลย แต่แอนโทนี่บอกว่ามีปัญหาเรื่องประสิทธิภาพกับการวิเคราะห์แรสเตอร์กับ postgis

ฉันหวังว่ามันจะช่วยคุณ ...


มันเป็นจุดเริ่มต้นที่ดี!
nickves
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.