PostGIS2'de Bölgesel İstatistikler mümkün mü?


12

Şimdi varsayılan olarak rasterleri destekleyen postgis2 ile bir bölgesel istatistik analizi yapmak mümkün müdür?

Google'ı kullandım ama sağlam bir şey bulamadım? Beni başlatmak için bir öğretici var mı?

Birisi bana nasıl yapılacağına dair bir örnek verebilir mi?

DÜZENLE :

Aragon bloguna göre güncellenmiş (basitleştirilmiş) bir sorgu :

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;

Merhaba @ nickick, hiç bölgesel istatistiklerin çalışmasını başardın mı? Güncellenmiş sorguyu çalıştıramıyorum.
Cliff

@CliffPatterson çalıştığımı hatırlıyor - o zamandan bu yana üç yıl geçti, çok şey değişti. Ben daha sonra querry deneyin ve onaylamak veya güncellemek gidiyorum.
nickves

bunu son kullandığım zamandan itibaren bir şeyler değişmiş olmalı; Sorgunun başladığını görmek için şu anda yeterli zaman yok. düzeltmeyi
başarırsanız

Konu ile ilgili son sorumu inceleyin .
Cliff

Yanıtlar:


6

size kontrol etmelisiniz , Store'u manipüle ve PostgreSQL / PostGIS uzaysal veritabanı içinde tarama verilerini analiz , FOSS sunuldu Pierre Racine ve Steve Cumming tarafından belgenin burada . Sorununuzu çözmek için raster istatistikleri olarak tanımlanan birçok işlev vardır. Sanırım ST_SummaryStats bölgesel statik konusunda size yardımcı olacak, elbette, yeterli değil.

ST_SummaryStats(raster) size bir dizi (min, maks, toplam, ortalama, stddev, sayım (veri pikselleri ile)) kaydı getirir.

Postgis 2.0, üzerinde çalıştığınız bazı sql sorguları ile bölgesel istatistik analizini destekler. Ben esri vs postgis 2.0 ile bölgesel istatistik hakkında net iyi bir belge geldi. Burada Moving Spatial'da bazı bilgilere göz atmalısınız . her ikisine de bazı sert sorgulamalarla aynı istatistik sonucu verildi.

daha önce bahsettiğim Anthony Lopez sitesinden alınmış örnek sorgu ...

 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 İstatistik sonucu: Nüfus: 207.578 Hücre Sayısı: 14.400

Postgis Yöntem sonucu: Nüfus: 207.578 Hücre Sayısı: 14.400.

Nüfus Yüzdesi Farkı: 0%

Henüz denemedim ama Anthony postgis ile raster analizi ile bazı performans sorunu olduğunu söyledi.

umarım sana yardımcı olur ...


İyi bir başlangıç ​​noktası!
nickves
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.