Pregunta

Necesito una consulta MySQL (o función) para calcular el punto medio geográfico de un número arbitrario de latitud / longitud coordina. Quiero usar el Método C (latitud media / longitud) como se describe en esta página http: //www.geomidpoint .com / calculation.html pero no puede encontrar la manera de convertir esto en una consulta SQL. Busco algo de la forma:

seleccione LATITUDE_AVG_FORMULA (points.latitude), LONGITUDE_AVG_FORMULA (points.longitude) a partir de puntos;

Donde cada punto en la tabla de puntos tiene como latitud y longitud asociada en formato decimal. Estoy esperando que alguien, o bien ya tiene una consulta de MySQL (o función) que están utilizando para esto o tienen mucha más experiencia con los cálculos geoespaciales que yo. Gracias de antemano por su ayuda!

¿Fue útil?

Solución

Método C parece ser básicamente un promedio ponderado. Su pregunta está cerca de la sintaxis de MySQL. Teniendo en cuenta que estos son formato decimal.

Si usted tiene pesos:

SELECT
    SUM( longitude * weight ) / SUM( weight ) AS Avg_Long,
    SUM( latitude * weight ) / SUM( weight ) AS Avg_Lat
FROM
    points

O no ponderado:

SELECT
    AVG( longitude ) AS Avg_Long,
    AVG( latitude ) AS Avg_Lat
FROM
    points

Sus alude a la línea de base de referencia ajustes, pero no estoy seguro de que se necesita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top