Я пытаюсь сделать простое пересечение с postgis, но результат, который я получаю, неверен. В начале функции отсутствует сегмент длиной около 7 м.
Вот команда sql, которую я использую для пересечения:
select ST_Intersection(t2.wkb_geometry,
t1.wkb_geometry), t2.sde_id as s_sde, t2.mtb_id,
ST_Length(ST_Intersection(t1.wkb_geometry,t2.wkb_geometry))
from
public.mountainbike_pavement_temp2 t1 inner join public.mountainbike_strecken_temp2 t2 on
t1.wkb_geometry && t2.wkb_geometry;
Длина результата должно быть около 187 метров, но результат - всего около 180 метров. Я много пробовал, но не могу найти причину, почему это происходит, и как это исправить.
Когда я делаю это пересечение в ArcGis, все работает как положено.
I пробовал это с postgres 9.6.15 и postgis 2.4
, а также с
postgres 12.1 и postgis 3.0, те же результаты.
Таблицы и данные можно найти здесь:
https://pastebin.com/4vHqRYx5
https://pastebin.com/RAfzXXW6
Имена таблиц: mountainbike_pavement_temp2 publi c .mountainbike_strecken_temp2
Расстояние первых вершин от mountainbike_pavement_temp2 до mountainbike_strecken_temp2 равно 0, рассчитывается с помощью ST_Distance в postgis (см. Комментарий ниже). Поэтому я бы предположил, что есть пересечение.