2010-07-27 30 views
5

¿Cómo puedo calcular el área de un polígono almacenado en una base de datos MySql? Los puntos de los polígonos son longitudes de lat. Entonces, los grados y minutos parecen estar causando un problema.¿Cómo puedo calcular el área de un polígono en una base de datos MySQL cuando los puntos del polígono son Lat Longs?

que he probado:

SELECT AREA(my_polygon) 
FROM `my_table` 
WHERE name = 'Newport' 

Porque, los puntos son largos lat, consigo resultados extraños.

(No puedo cambiar a Postgre). ¿Hay alguna manera de hacer esto en MySQL? Me gustaría obtener los resultados en metros cuadrados o kilómetros cuadrados o millas cuadradas, cualquiera de estos estaría bien.

+0

¿Está utilizando/echó un vistazo a las características SIG para MySQL? http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html – relet

+0

Hola relet, Gracias por su mensaje. Sí, estoy usando extensiones espaciales MySQL. Los datos se almacenan como polígonos MySQL. – Laxmidi

+0

¿Estás diciendo que AREA (my_polygon) no funciona porque tienes [lat longs] en lugar de [long lats]? El formato nativo debería ser [Long Lat] y no sé si eso afectaría los cálculos de área. En mi caso AREA (poly) funcionó bien. – derickito

Respuesta

3

Tienes que transformar esos lats y longs en un sistema de coordenadas más apropiado.

Dado que la tierra es una esfera, estás hablando de calcular un área en coordenadas esféricas.

Los documentos dicen que MySQL "AREA" function toma como entrada un polígono. Yo diría que si quieres que el área sea como millas cuadradas, debes convertir tus coordenadas lat/long en coordenadas equivalentes de superficie (x, y) con las unidades correctas (por ejemplo, millas). Luego páselos a la función AREA.

This link sugiere que otra persona ha tenido este problema y lo ha resuelto.

+0

Hola duffymo, Gracias por el consejo. Tendré que estudiar el enlace que me proporcionó. – Laxmidi

+0

La función de área hace todos sus cálculos de forma cartesiana. –

+1

Es por eso que dije "convierte tus coordenadas lat/long en coordenadas equivalentes de superficie (x, y) con las unidades correctas (por ejemplo, millas). Luego, transfiérelas a la función AREA". Si me rechazó porque no leyó mi respuesta, entonces la vergüenza. No sé lo que hizo para merecer el título "Dr.", pero su comprensión de lectura necesita algo de trabajo. – duffymo

Cuestiones relacionadas