gpt4 book ai didi

join - Postgis:用于与人口普查枚举区多边形进行空间连接的最佳栅格切片大小

转载 作者:行者123 更新时间:2023-12-02 01:48:38 25 4
gpt4 key购买 nike

问题是在将 30x30m 空间分辨率的栅格导入 Postgis 数据库时如何选择栅格切片大小,以优化与复杂多边形的空间连接。

即,在 raster2pgsql 中,您如何选择“-t”开关来优化空间连接查询?

栅格数据表示从 30m 分辨率的 SRTM 数据导出的斜率。
多边形代表巴西人口普查的查点区 (setor censitário)。一个点查区对应于覆盖 300 户家庭的区域(~美国人口普查轨迹的 1/4),在城市地区可以是 1 到 8 个城市街区)。

我正在尝试使用以下查询获取每个枚举区的平均地形坡度:

-- importing
shp2pgsql -c -s 4674:4326 -I -W LATIN1 enum_districs_2010 public.enum_districs_2010 | psql -d r342471958
raster2pgsql -c -s 4326 -I -t 100x100 *.tif public.slope | psql -d r342471958

-- average slop per enum distric
select sv.cd_geocodi, SUM(sv.val * ST_Area(sv.geom)) / ST_Area(ST_Union(sv.geom)) As avgsqm
from (
select set.cd_geocodi, (ST_Intersection(slo.rast,1, set.geom)).*
from enum_districs_2010 set
inner join slopes slo on ST_Intersects(slo.rast, 1, set.geom)
) sv
group by sv.cd_geocodi

选择磁贴尺寸 (-t) 是否有一些经验法则?

最佳答案

我相信这是为矢量/栅格交集编写空间连接的最简洁的方法。

select sv.cd_geocodi, avg(sv.val) As avgsqm
from (
select set.cd_geocodi, (ST_Intersection(slo.rast, 1, distr.geom)).*
from enum_districs_2010 distr, slopes slo
where ST_Intersects(slo.rast, 1, distr.geom)
) sv
group by sv.cd_geocodi

此外,我认为您应该能够使用 avg 功能,因为您已经按人口普查区进行了分组。
关于栅格/矢量相交的最佳切片的问题是一个很好的问题,很难给出明确的经验法则。通常,由于您实际上必须打开栅格以获取其像素值,因此您将要选择大小相似(可能稍大一点)然后您的矢量包裹的栅格,这样,在最坏的情况下,您只需要为与您相交的每个矢量多边形打开 4 个栅格。最终,栅格与矢量大小的最佳比率是一个复杂的统计问题,但据传闻(来自新闻组帖子),并且直观地,较小的栅格尺寸预计会比较大的栅格尺寸表现得更好。我建议您尝试稍微减小光栅图块的大小。

解释的输出可能很难用空间数据来理解,因为成本本质上是从磁盘中提取数据的成本的度量,并没有考虑相交和交集等底层空间操作的成本。您的解释输出表明未使用空间索引,这可能是尝试使用较小切片尺寸的另一个原因。此外,向 enum_districts 添加主键,如果您还没有,请运行分析以更新统计信息,然后再次尝试解释。有时,解释哪些复杂的空间查询可能不会有太大变化,因此我仍然建议您尝试运行查询并查看它是否变得更快。

关于join - Postgis:用于与人口普查枚举区多边形进行空间连接的最佳栅格切片大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24083732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com