Apakah Statistik Zonal dimungkinkan di PostGIS2?

12

Sekarang dengan postgis2 yang mendukung raster secara default, apakah mungkin untuk melakukan analisis statistik zona?

Saya sudah google tapi saya belum menemukan sesuatu yang solid? Apakah ada tutorial di luar sana untuk memulai?

Adakah yang bisa memberi saya contoh sql tentang cara melakukannya?

EDIT:

Kueri yang diperbarui (disederhanakan) menurut blog Aragon menyebutkan:

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;
Nickes
sumber
Hai @nickves, apakah Anda pernah berhasil membuat statistik zona berfungsi? Tampaknya saya tidak bisa membuat kueri yang diperbarui berfungsi.
Cliff
@CliffPatterson ingat saya berhasil - sudah tiga tahun sejak itu, banyak yang telah berubah. Saya akan mencoba querry nanti dan mengkonfirmasi atau memperbarui.
Nickves
sesuatu pasti telah berubah sejak terakhir kali saya menggunakannya; tidak cukup waktu saat ini untuk melihat di mana Query menendang. jika Anda berhasil memperbaikinya, bebas untuk memperbarui
nickves
Lihatlah pertanyaan terakhir saya tentang masalah ini.
Cliff

Jawaban:

6

Anda harus memeriksa Store, memanipulasi dan menganalisis data raster dalam dokumen basis data spasial PostgreSQL / PostGIS oleh Pierre Racine dan Steve Cumming yang dipresentasikan di FOSS, di sini . Ada banyak fungsi yang didefinisikan sebagai statistik raster untuk menyelesaikan masalah Anda. Saya pikir ST_SummaryStats akan membantu Anda tentang statika zona, tentu saja, tidak cukup.

ST_SummaryStats(raster) akan memberi Anda satu set rekaman (min, maks, jumlah, rata-rata, stddev, hitungan (dari piksel penarikan)).

Postgis 2.0 mendukung analisis statistik zona dengan beberapa kueri sql yang telah Anda kerjakan. Saya telah menemukan dokumentasi yang bagus di internet tentang zonal statitics dengan esri vs postgis 2.0. Anda harus memeriksa beberapa informasi di Moving Spatial di sini . keduanya diberi hasil statistik yang sama dengan beberapa query yang sulit.

contoh kueri yang diambil dari situs Anthony Lopez yang telah saya sebutkan sebelumnya ...

 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;

Hasil Statistik Esri Zonal: Populasi: 207.578 Jumlah Sel: 14.400

Hasil Metode Postgis: Populasi: 207.578 Jumlah Sel: 14.400.

Perbedaan Persen Populasi: 0%

Saya belum mencobanya tetapi Anthony menyebutkan bahwa ada beberapa masalah kinerja dengan analisis raster dengan postgis.

Saya harap ini membantu Anda ...

Aragon
sumber
Ini adalah titik awal yang baik!
Nickes