Czy możliwe są statystyki strefowe w PostGIS2?

12

Czy w przypadku postgis2, który domyślnie obsługuje rastry, można przeprowadzić analizę statystyk strefowych?

Mam google, ale nie znalazłem nic solidnego? Czy jest jakiś samouczek na początek?

Czy ktoś może mi dać przykład sql, jak to zrobić?

EDYTOWAĆ :

Zaktualizowana (uproszczona) kwerenda według wzmianki w blogu 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
źródło
Cześć @nickves, czy zdołałeś kiedyś uruchomić statystyki strefowe? Nie mogę uruchomić zaktualizowanego zapytania.
Cliff
@CliffPatterson pamiętaj, że ćwiczyłem - od tego czasu minęły trzy lata, wiele się zmieniło. Idę wypróbować querry później i potwierdzić lub zaktualizować.
nickves
coś musiało się zmienić od ostatniego użycia; w tej chwili za mało czasu, aby zobaczyć, gdzie rozpoczyna się Kwerenda. jeśli uda się to naprawić, prosimy o bezpłatną aktualizację
nickves
Sprawdź moje ostatnie pytanie na ten temat.
Cliff

Odpowiedzi:

6

należy sprawdzić Store, manipulowania i analizować dane rastrowe w obrębie bazy danych przestrzennych PostgreSQL / PostGIS dokumentu przez Pierre Racine i Steve Cumming, który został przedstawiony w FOSS, tutaj . Istnieje wiele funkcji zdefiniowanych jako statystyki rastrowe w celu rozwiązania problemu. myślę, że ST_SummaryStats pomoże ci na temat statyki strefowej, oczywiście za mało.

ST_SummaryStats(raster) zmieni ci zestaw rekordów (min, maks, suma, średnia, stddev, liczba (withdata pikseli)).

Postgis 2.0 obsługuje analizę statystyk strefowych za pomocą niektórych zapytań SQL, nad którymi pracujesz. natknąłem się na dobrą dokumentację w sieci na temat statystyk strefowych z esri vs postgis 2.0. należy sprawdzić dla niektórych informacji na jadący Spatial tutaj . oba uzyskały ten sam wynik statystyczny z pewnymi trudnymi zapytaniami.

przykładowe zapytanie pobrane ze strony Anthony'ego Lopeza, o której wspomniałem wcześniej ...

 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;

Wynik statystyk strefowych Esri: Populacja: 207,578 Liczba komórek: 14,400

Wynik metody Postgis: Populacja: 207,578 Liczba komórek: 14,400.

Różnica procentowa populacji: 0%

nie próbowałem tego jeszcze, ale Anthony wspomniał, że był pewien problem z wydajnością w analizie rastrowej z postgis.

Mam nadzieję, że Ci to pomoże...

Aragonia
źródło
To dobry punkt wyjścia!
nickves