【发布时间】:2017-04-01 20:51:59
【问题描述】:
我在将一组几何图形与其自身属性相关联时遇到了一些问题。
数据
我有一张带有一组几何图形的表格,
buildings {
gid integer,
geom geometry(Multipoligon,4326)
}
我已经在“buildings”表上运行了具有特定阈值的函数ST_ClusterWithin。 从那个聚类分析中,我得到了一个名为“clusters”的表,
clusters {
cid Integer,
geom geometry(GeometryCollection,4326)
}
问题
我很想将所有几何及其自己的集群信息提取到一个表中。
clustered_building {
gid Integer
cid Integer
geom geometry(Multipoligon,4326)
}
gid | cid | geom |
-----+------------+-----------------------+
1 | 1 | multypoligon(...) |
2 | 1 | multypoligon(...) |
3 | 1 | multypoligon(...) |
4 | 2 | multypoligon(...) |
5 | 3 | multypoligon(...) |
6 | 3 | multypoligon(...) |
我做了什么(但不起作用)
我一直在尝试使用两个函数 ST_GeometryN / ST_NumGeometries 解析每个 MultyGeometry 并使用源自 ST_Geometry 手册页的标准示例之一的查询提取集群的信息。
INSERT INTO clustered_building (cid, c_item , geom)
SELECT sel.cid, n, ST_GeometryN(sel.geom, n) as singlegeom
FROM ( SELECT cid, geom, ST_NumGeometries(geom) as num
FROM clusters") AS sel
CROSS JOIN generate_series(1,sel.num) n
WHERE n <= ST_NumGeometries(sel.geom);
查询,如果我强制使用一系列 10 则需要几秒钟。
CROSS JOIN generate_series(1,10)
但是当我要求根据每个 GeometryCollection 中的项目数生成一个系列时它卡住了。 而且,这个查询不允许我将单个几何体与他自己的特征链接到构建表中,因为我失去了“gid”
有人可以帮助我吗? 谢谢
斯特凡诺
【问题讨论】:
标签: sql cluster-analysis postgis