PostGIS2中可以进行区域统计吗?


12

现在,使用默认支持栅格的postgis2可以进行区域统计分析吗?

我已经用谷歌搜索了,但是还没有找到任何可靠的东西?有没有可以帮助我入门的教程?

任何人都可以给我一个有关如何执行此操作的sql示例吗?

编辑:

根据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,您有没有设法使分区统计数据正常工作?我似乎无法使更新的查询正常工作。
悬崖

@CliffPatterson记得我确实锻炼过-从那以后已经三年了,很多变化。我将稍后尝试Querry并确认或更新。
尼克

上次使用时一定发生了变化;目前没有足够的时间查看查询的开始位置。如果您设法修复它,请随时更新
尼克

看看我最近关于这个问题的问题。
悬崖

Answers:


6

你应该看看存储,处理和PostgreSQL的/ PostGIS的空间数据库内分析栅格数据由皮埃尔·拉辛和史蒂夫·卡明文件,该文件已提交FOSS,在这里。有很多功能定义为栅格统计信息来解决您的问题。我认为ST_SummaryStats当然可以帮助您解决区域静态问题。

ST_SummaryStats(raster) 将为您提供一组(最小,最大,总和,平均值,stddev,计数(含数据像素))记录。

Postgis 2.0通过您正在处理的一些sql查询支持区域统计分析。我通过esri vs postgis 2.0在网上找到了有关纬向统计的良好文档。您应该在此处的“移动空间”中查看一些信息。通过艰苦的查询,他们两个都得到了相同的统计结果。

示例查询取自我之前提到的Anthony Lopez网站...

 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%

我还没有尝试过,但是Anthony提到postgis的栅格分析存在一些性能问题。

我希望它可以帮助您...


这是一个很好的起点!
尼克斯,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.