Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Suchen Sie mit MySQL in einer Tabelle nach Point in Polygon

Nach einer Nacht Schlaf fand ich die folgende Lösung.

set @p = GeomFromText('POINT(23.923739342824817 38.224714465253733)');
select municipalID FROM ecovis.municipal_border
where ST_Contains(municipal_border.boundary, @p);

Es funktioniert für MySQL 5.6.1, wo ST_-Präfix Funktion wurden implementiert. Obwohl ich keine Messungen von einem klassischen Ansatz (Röntgen-Algorithmus) habe, glaube ich, dass das ziemlich schnell ist. Es dauert 0,17 Sekunden, um einen Punkt in 2700 Polygonen zu finden, wobei einige Polygone weit mehr als 1.500 Punkte haben.