Я пытаюсь построить топологию PostGIS с ребрами, имеющими координату Z. Я использую следующие команды:
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 Topology или это ошибка? Если это нормально, возможно ли построить топологию с ребрами, которые перекрываются в 2D-проекции (т.е. игнорируют координату Z), но не пересекаются в 3D-виде?