Le statistiche zonali sono possibili in PostGIS2?


12

Ora con Postgis2 che supporta i raster di default è possibile fare un'analisi statistica zonale?

Ho cercato su Google ma non ho trovato nulla di solido? C'è un tutorial là fuori per iniziare?

Qualcuno può darmi un esempio sql su come farlo?

MODIFICARE :

Una query aggiornata (semplificata) secondo il blog Aragon menziona:

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;

Ciao @nickves, sei mai riuscito a far funzionare le statistiche zonali? Non riesco a far funzionare la query aggiornata.
Cliff

@CliffPatterson ricordo che mi sono allenato - sono passati tre anni da allora, molte cose sono cambiate. Sto per provare Querry più tardi e confermare o aggiornare.
Nickves

qualcosa deve essere cambiato dall'ultima volta che l'ho usato; al momento non c'è abbastanza tempo per vedere dove prende il calcio. se riesci a risolverlo, ti preghiamo di aggiornarlo gratuitamente
nickves

Dai un'occhiata alla mia recente domanda sull'argomento.
Cliff,

Risposte:


6

dovresti dare un'occhiata a Memorizza, manipola e analizza i dati raster all'interno del documento di database spaziale PostgreSQL / PostGIS di Pierre Racine e Steve Cumming che è stato presentato al FOSS, qui . Esistono molte funzioni definite come statistiche raster per risolvere il tuo problema. penso che ST_SummaryStats ti aiuterà a capire la statica zonale, ovviamente, non abbastanza.

ST_SummaryStats(raster) ti trasformerà in un set di (min, max, sum, mean, stddev, count (of withdata pixels)) record.

Postgis 2.0 supporta l'analisi delle statistiche zonali con alcune query sql su cui hai lavorato. mi sono imbattuto in una buona documentazione in rete sulle statistiche zonali con esri vs postgis 2.0. dovresti controllare alcune informazioni su Moving Spatial qui . ad entrambi è stato dato lo stesso risultato statistico con alcune query difficili.

query di esempio che è stata presa dal sito di Anthony Lopez che ho menzionato prima ...

 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;

Risultato delle statistiche zonali Esri: Popolazione: 207.578 Conteggio delle cellule: 14.400

Risultato del metodo Postgis: Popolazione: 207.578 Numero di cellule: 14.400.

Differenza percentuale della popolazione: 0%

non l'ho ancora provato, ma Anthony ha detto che c'era qualche problema di prestazioni con l'analisi raster con i postgis.

spero che ti aiuti ...


È un buon punto di partenza!
Nickves
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.