Mysql найти пересекающуюся точку широты в многоугольнике - PullRequest
0 голосов
/ 15 февраля 2019

Я ищу решение для нахождения LAT, точка LNG содержится внутри любого многоугольника в моей таблице MySQL.

По некоторым причинам, которые выходят за рамки моих знаний SQL, мои запросы с использованием ST_Intersects возвращают«Функция не найдена».Поэтому я остановился на этом месте:

SELECT `area_title` FROM `service_areas` WHERE MBRIntersects(`area_poly`, GEOMFROMTEXT('POINT(40.775032, -73.970778)'));

Моя таблица для тестирования довольно проста и хранит
1. area_poly GEOMETRY магазинов POLYGON((-71.740723 41.360319,-71.685791 42.106374,-71.71875 42.407235,-71.905518 42.771211,-72.070312 43.036776,-72.432861 43.157109,-72.718506 43.397065,-73.190918 43.55651,-73.619385 43.580391,-74.32251 43.572432,-75.201416 43.277205,-75.717773 43.004647,-75.926514 42.795401,-76.135254 42.528796,-76.256103 42.138968,-76.289062 41.869561,-76.234131 41.442726,-76.190185 40.955011,-75.992432 40.472024,-75.849609 40.153687,-75.629883 39.783213,-75.311279 39.529467,-74.94873 39.368279,-74.520264 39.257778,-74.256592 39.478606,-71.5979 40.971604,-71.740723 41.360319))
И
2. area_title VARCHAR(20) store service area 1

Я пытаюсь передать точку как POINT(40.775032, -73.970778), как показано выше.

Ожидаемый результат будет возвращать любые area_title, в которых точка находится внутри ее многоугольника;Тем не менее, мой запрос возвращает 0 Rows.

Я знаю, что есть тонна вопросов / ответов на слабину и в Интернете, но я не нашел решения, пробующего большинство методов.Из-за недостатка знаний SQL я не уверен, правильно ли я храню Poly или не использую правильную функцию для его поиска.

Любая помощь, даже указывающая в правильном направлении, приветствуется.

1 Ответ

0 голосов
/ 16 февраля 2019

Простое решение для тех, кто сталкивается с той же проблемой:

SELECT ea.name, ea.area_poly from service_areas as ea WHERE contains(ea.area_poly, GeomFromText(AsText(point(@lat, @lng)), 4326))

Мой полигон ea.area_poly сохраняется как Polygon((lat1 lng1,lat2 lng2, etc..)) как тип geometry в SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...