Пересечение MySQL Great Circle (пересекаются ли две дороги?)

MySQL OpenGIS CROSSES, похоже, не работает для меня:

SET @ls = 'LineString(1 1, 2 2, 3 3)';
SET @xx = 'LineString(0 2, 10 2)';

# SELECT AsText(EndPoint(GeomFromText(@ls)));
select crosses(GeomFromText(@ls), GeomFromText(@xx))

возвращает 0 - ожидается 1

Как бы я переписал это как функцию MySQL?

Бонусные баллы за использование широты, долготы и сферической проекции (и, возможно, Большого круга).

PS Я не могу создавать теги, и я потерял свой старый логин: Полезными тегами будут: MySQL OpenGIS CROSSES greatcircle lat lon - :)


person monk.e.boy    schedule 05.01.2011    source источник


Ответы (2)


Просто используйте INTERSECTS(line1,line2)

SET @ls = 'LineString(1 0,1 2)';
SET @xx = 'LineString(0 1, 2 1)';
select INTERSECTS(GeomFromText(@ls), GeomFromText(@xx));
person Joseph Lust    schedule 05.01.2011
comment
Не могу поверить, что пропустил эту функцию :( ой! Я оставлю свой вопрос без ответа, так как хотел бы посмотреть, есть ли у кого-нибудь INTERSECTS, который работает со сферой. - person monk.e.boy; 06.01.2011
comment
SET @aa = 'LineString(0 3, 5 10)'; SET @bb = 'LineString(0 0, 10 10)'; выберите ПЕРЕСЕЧЕНИЕ(GeomFromText(@aa), GeomFromText(@bb)) AS i; возвращает 1 - эти линии не пересекаются? Или я туплю? - person monk.e.boy; 06.01.2011
comment
ОК, INTERSECTS ошибочен: stackoverflow .com/questions/4610762/ - person monk.e.boy; 06.01.2011

Хорошо, в конце концов я просто реализовал это: http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/

person monk.e.boy    schedule 07.01.2011