Tenemos que encontrar un método rápido y bastante preciso para punto-en-polígono para latitud y longitud de los valores y polígonos en los mapas de Google. Después de algunas investigaciones - se encontró con algunos mensajes sobre MySQL extensiones geométricas, y puso en práctica eso también -Implementación MySQL del algoritmo Ray-Casting?
SELECT id, Contains(PolyFromText('POLYGON(".$polygonpath.")') , PointFromText(concat(\"POINT(\", latitude, \" \", longitude, \")\"))) AS
CONTAINS
FROM tbl_points
Eso no obstante trabajar con polígonos formados por un gran número de puntos :(
Después de un poco más de investigación - encontré un algoritmo estándar llamado el algoritmo Ray-casting pero antes de intentar desarrollar una consulta para eso en MySQL, quería arriesgarme si alguien ya había pasado por eso o si encontraba un enlace útil que muestra cómo implementar el algoritmo en MySQL/SQL-server.
Así que, resumiendo, la pregunta es:
¿Alguien puede proporcionar la implementación de MySQL/servidor SQL del algoritmo de transmisión de rayos?
detalle adicional:
- Los polígonos son cualquiera de cóncava, convexa o compleja.
- Dirigiendo la ejecución rápida con más del 100% de precisión.
Cuando miré las extensiones geoespaciales en MySQL hace aproximadamente un año, tenían calidad beta en el mejor de los casos. Terminé usando PostgreSQL para mi base de datos geo.Nunca he oído hablar de alguien tratando de implementar Ray casting en una base de datos, sin embargo ... –
@EricJ. - Gracias por su respuesta. Desearía poder usar postGIS para este problema ... pero no puedo hacerlo porque es solo una (pequeña) parte de un gran sistema. :( – zarun
MySQL tiene funciones cos/sin/tan, ¿eso te ayuda? Link: http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html – Johan