我正在尝试构建一个具有Z坐标的边的PostGIS拓扑。我使用以下命令:
SELECT topology.CreateTopology('test_topo', 2154, 0, true);
SELECT topology.TopoGeo_AddLineString('test_topo', ST_GeomFromEWKT('SRID=2154;LINESTRINGZ(0 0 0, 1 1 0)'), 0);
SELECT topology.TopoGeo_AddLineString('test_topo', ST_GeomFromEWKT('SRID=2154;LINESTRINGZ(0 0.5 0.5, 1 0.5 0.5)'), 0);
SELECT topology.TopoGeo_AddLineString('test_topo', ST_GeomFromEWKT('SRID=2154;LINESTRINGZ(0 1 0, 1 0 0)'), 0);
SELECT topology.TopoGeo_AddLineString('test_topo', ST_GeomFromEWKT('SRID=2154;LINESTRINGZ(0 0.25 1, 1 0.25 1)'), 0);
在那之后,我希望在(0.5,0.5,0)中有一个新的节点,因为第一行和第三行的交集以及其他没有连接到任何东西的行。但我实际上得到了所有2D交叉点的节点,就像PostGIS Topo忽略Z坐标来计算交叉点一样。如下图所示:
这是PostGIS拓扑的正常行为还是错误?如果它是正常的,是否可以构建具有在2D投影中重叠的边的拓扑(即,忽略Z坐标),但在三维视图中不相交?
发布于 2019-01-10 16:01:06
经过进一步的研究,我发现PostGIS拓扑只支持ISO Geometry标准,而不支持ISO Topology-Network (这里的定义:https://www.gaia-gis.it/fossil/libspatialite/wiki?name=topo-intro)。因此,Z坐标仅用于向拓扑添加一些浮雕,而不是实际的3D。因此,之前的行为实际上是正常的,我必须找到另一种方法来获得我期望的结果。
https://stackoverflow.com/questions/54090942
复制相似问题