вы должны проверить магазин, обработку и анализ растровых данных в пространственных базах данных PostgreSQL / PostGIS документа Пьера Расин и Стив Камминг , который был представлен на FOSS, здесь . Существует множество функций, определенных как растровая статистика для решения вашей проблемы. я думаю, что ST_SummaryStats поможет вам по поводу зональной статики, конечно, недостаточно.
ST_SummaryStats(raster)
превратит вас в набор записей (мин, макс, сумма, среднее, стандартное отклонение, количество (пикселей данных)).
Postgis 2.0 поддерживает анализ зональной статистики с некоторыми SQL-запросами, над которыми вы работаете. я наткнулся на хорошую документацию в сети о зональной статистике с esri vs postgis 2.0. Вы должны проверить некоторую информацию в Moving Spatial здесь . им обоим был дан один и тот же статистический результат с некоторыми сложными запросами.
пример запроса, который был взят с сайта Энтони Лопеса, о котором я упоминал ранее ...
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 Статистика результат: Население: 207 578 Количество клеток: 14 400
Результат метода Postgis: население: 207 578, количество клеток: 14 400.
Разница в процентах населения: 0%
Я еще не пробовал, но Энтони упомянул, что есть некоторые проблемы с производительностью при растровом анализе с Postgis.
я надеюсь, что это поможет вам ...