Я работаю в системе MYSQL / PHP, где у меня есть следующее:
- набор широты, долготы в виде (широта, долгота), сохраненный в текстовом формате: (широта,lng1) # (lat2, lng2) # (lat3, lng3) и т. д., который в основном является многоугольником, нарисованным над экземпляром googlemap, хранящимся в базе данных.
- таблица, которая хранит в поле - координаты точки P (plat, plng), которая в основном является точкой, в которой находится устройство
Мне нужно выяснить, сколько полигонов изпервая таблица находится на расстоянии X километров от точки P, в основном с использованием MYSQL.
Я уже сталкивался с довольно большим количеством библиотек Google Map по этому поводу, но я намерен решить эту проблему самым быстрым из возможных способов -который я предполагаю, через запрос MYSQL.
Может ли кто-нибудь, пожалуйста, пролить свет на это?
До сих пор я рассмотрел несколько примеров геопространственных запросов - и придумаю следующее:
SELECT user_id, latitude, longitude,
GeomFromText( "POINT(CONCAT_WS(' ',latitude,longitude))" ) AS point,
Contains( GeomFromText( 'POLYGON(-26.167918065075458 28.10680389404297,
- 26.187020810321858 28.091354370117188, -26.199805575765794 28.125,-26.181937320958628 28.150405883789062, -26.160676690299308 28.13220977783203, -26.167918065075458 28.10680389404297)' ) ,
GEOMFromText( "POINT(CONCAT_WS(' ',latitude,longitude))" ) )
FROM user_location
Но проблема в том, что он показывает запись с lat: -26.136230, long: 28.338850, который находится далеко от границ многоугольника.Может кто-нибудь, пожалуйста, руководство?