代码之家  ›  专栏  ›  技术社区  ›  StormRider

带Z坐标的PostGIS拓扑

  •  0
  • StormRider  · 技术社区  · 7 年前

    我正在尝试构建一个带有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坐标来计算交点。请参见下图:

    result

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   StormRider    7 年前

    经过进一步研究,我发现PostGIS拓扑只支持ISO拓扑几何标准,而不支持ISO拓扑网络(定义如下: https://www.gaia-gis.it/fossil/libspatialite/wiki?name=topo-intro )因此,Z坐标仅用于为拓扑添加一些浮雕,而不是实际的3D。所以之前的行为实际上是正常的,我必须找到另一种方法来达到我预期的结果。

    推荐文章