Les statistiques zonales sont-elles possibles dans PostGIS2?

12

Maintenant, avec postgis2 qui prend en charge les rasters par défaut, est-il possible de faire une analyse statistique zonale?

Je l'ai sur Google mais je n'ai rien trouvé de solide? Existe-t-il un tutoriel pour me lancer?

Quelqu'un peut-il me donner un exemple sql sur la façon de le faire?

ÉDITER :

Une requête mise à jour (simplifiée) selon la mention du blog 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
la source
Bonjour @nickves, avez-vous déjà réussi à faire fonctionner les statistiques zonales? Je n'arrive pas à faire fonctionner la requête mise à jour.
Cliff
@CliffPatterson rappelez-vous que j'ai travaillé - cela fait trois ans depuis, beaucoup de choses ont changé. Je vais essayer le querry plus tard et confirmer ou mettre à jour.
nickves
quelque chose doit avoir changé depuis la dernière fois que j'ai utilisé ça; pas assez de temps pour le moment pour voir où la requête démarre. si vous parvenez à le réparer, veuillez mettre à jour gratuitement
nickves
Consultez ma récente question sur le sujet.
Cliff

Réponses:

6

vous devriez vérifier Stocker, manipuler et analyser les données raster dans le document de base de données spatiales PostgreSQL / PostGIS de Pierre Racine et Steve Cumming qui a été présenté au FOSS, ici . De nombreuses fonctions sont définies en tant que statistiques raster pour résoudre votre problème. je pense que ST_SummaryStats vous aidera sur la statique zonale, bien sûr, pas assez.

ST_SummaryStats(raster) vous donnera un ensemble d'enregistrements (min, max, sum, mean, stddev, count (of withdata pixels)).

Postgis 2.0 prend en charge l'analyse des statistiques zonales avec certaines requêtes SQL sur lesquelles vous avez travaillé. je suis tombé sur une bonne documentation sur net sur les statistiques zonales avec esri vs postgis 2.0. vous devriez vérifier quelques informations au déménagement du territoire ici . les deux ont obtenu le même résultat statistique avec quelques interrogations difficiles.

exemple de requête qui a été prise sur le site Anthony Lopez que j'ai mentionné auparavant ...

 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;

Résultat des statistiques zonales d'Esri: Population: 207 578 Nombre de cellules: 14 400

Résultat de la méthode Postgis: Population: 207 578 Nombre de cellules: 14 400.

Différence en pourcentage de la population: 0%

je n'ai pas encore essayé mais Anthony a mentionné qu'il y avait un problème de performance avec l'analyse raster avec postgis.

J'espère que ça t'aide...

Aragon
la source
C'est un bon point de départ!
nickves