Топология PostGIS с координатой Z - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь построить топологию 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 для вычисления пересечений. Смотрите на следующем рисунке:

result

Это нормальное поведение для PostGIS Topology или это ошибка? Если это нормально, возможно ли построить топологию с ребрами, которые перекрываются в 2D-проекции (т.е. игнорируют координату Z), но не пересекаются в 3D-виде?

1 Ответ

0 голосов
/ 10 января 2019

После еще одного исследования я выяснил, что топология PostGIS поддерживает только стандарт топологии-геометрии ISO, но не сеть топологии ISO (определения здесь: https://www.gaia -gis.it / fossil / libspatialite / wiki? имя = тая-интро ). Таким образом, координата Z предназначена только для добавления некоторого рельефа к топологии, но не для реального 3D. Поэтому предыдущее поведение на самом деле нормальное, и мне нужно найти другой способ получить ожидаемый результат.

...