Postgresql 带Z坐标的PostGIS拓扑

Postgresql 带Z坐标的PostGIS拓扑,postgresql,postgis,Postgresql,Postgis,我正在尝试构建一个具有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

我正在尝试构建一个具有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)中有一个新节点,因为第1行和第3行相交,其他行没有连接到任何东西。但我实际上得到了所有2D交点的节点,就像PostGIS Topo忽略Z坐标来计算交点一样。见下图:


这是PostGIS拓扑的正常行为还是一个bug?如果是正常的,是否可以构建一个拓扑,其边缘在二维投影中重叠(即忽略Z坐标),但在三维视图中不相交?

经过进一步研究,我发现PostGIS拓扑仅支持ISO拓扑几何标准,而不支持ISO拓扑网络(定义如下:)。因此,Z坐标仅用于向拓扑添加一些浮雕,而不是实际的3D。因此,以前的行为实际上是正常的,我必须找到另一种方法来获得我期望的结果。

你找到解决办法了吗?我也有同样的情况:重叠的边缘不应该交叉。最后我手动完成了。如果我还记得的话(我无法再访问代码),这并不难,但很不方便。解决方法是使用PostGIS拓扑还是其他数据库?它只是使用带有手动公式的PostGIS。但是现在我认为可以用CGAL函数来实现,尽管我没有尝试过。