ShelestovAnt
@ShelestovAnt
Верстаю и программирую

Определение расстояния между точками и вхождение точки в полигон?

Народ запутался с геометрическими объектами в mysql

К примеру
SELECT ST_Distance_Sphere(ST_GeomFromText('POINT(59.92221140264606 30.33592959805362 )'), ST_GeomFromText('POINT( 59.91757448179685 30.34996245507689 )')) as distance

Результат: 1622.5853896756541 метров что не корректно.
Если в каждой точке поменять местами координаты то: 936.7446267405903 метров и Это правильно!

Далее запрос определения входения точки в полигон:
SELECT ST_Within(ST_GeomFromText('POINT(59.92221140264606 30.33592959805362 )'), ST_GeomFromText('POLYGON((59.960439 30.155863,59.970939 30.183329,60.00551300831579 30.30108880468746,59.97782267102391 30.418505281249995,59.90478568802594 30.452150609374957,59.873384939513095 30.331301148437454,59.890813753470574 30.22040838085935,59.912545 30.191226,59.924611 30.157924,59.945285999999996 30.139728,59.960439 30.155863))')) as inner_point

Результат: точка входит в полигон

НО если в точке изменить порядок координат то точка уже не будет входить в полигон!!

В чем заключается проблема: проблема в порядке координат точек.
1. расстояние не точное - точка входит в полигон
2. расстояние точное - точка не входит в полигон.

Может кто подсказать как побороть эту проблемку?
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Milliard
В сферической системе координаты не равнозначны. При замене порядка координат расстояние между точками будет различаться.
В качестве примера: две точки с широтой 90°, долгота любая. Дистанция между точками всегда ноль. Меняем порядок координат: долгота 90° и дистанция уже не ноль, а напрямую зависит от широт точек.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы