sql >> Database >  >> RDS >> Mysql

Zoek een tabel voor Point in Polygon met MySQL

Na een nachtje slapen vond ik de volgende oplossing.

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

Het werkt voor MySQL 5.6.1 waar ST_ voorvoegsel functie zijn geïmplementeerd. Hoewel ik geen metingen heb van een klassieke benadering (röntgenalgoritme), geloof ik dat dit vrij snel is. Het heeft 0,17 seconden nodig om een ​​punt in 2700 polygonen te lokaliseren, waarbij sommige polygonen meer dan 1.500 punten hebben.



  1. ZDLRA – RMAN-20035 ongeldige hoge RECID

  2. MySQL-telling in dezelfde tabel inclusief nultellingswaarden

  3. Een kop- en voettekst toevoegen aan een rapport in Microsoft Access

  4. MySQL-jokerteken in select