2009-11-03 10 views
0

J'ai besoin d'une requête MySQL (ou d'une fonction) pour calculer le point milieu géographique d'un nombre arbitraire de coordonnées latitude/longitude. Je veux utiliser la méthode C (latitude/longitude moyenne) comme décrit sur cette page http://www.geomidpoint.com/calculation.html mais je n'arrive pas à comprendre comment la convertir en requête SQL. Je cherche quelque chose de la forme:Requête MySQL pour le point milieu géographique

sélectionnez LATITUDE_AVG_FORMULA (points.latitude), LONGITUDE_AVG_FORMULA (points.longitude) de points;

Où chaque point de la table de points a la latitude et la longitude associées au format décimal. J'espère que quelqu'un a déjà une requête MySQL (ou une fonction) qu'ils utilisent pour cela ou ont beaucoup plus d'expérience avec les calculs géospaciaux que j'ai. Merci d'avance pour votre aide!

+0

De quel format sont les valeurs lat et long actuellement stockées dans la base de données? – mjv

+0

Comme mentionné dans mon article d'origine, les valeurs lat et long sont stockées en tant que décimales. Plus précisément, latitude décimale (11,7) et longitude décimale (12,7). J'espère que cela aide! –

Répondre

1

Le procédé C semble être fondamentalement une moyenne pondérée. Votre question est proche de la syntaxe MySQL. Étant donné que ce sont des formats décimaux.

Si vous avez des poids:

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

ou non pondérés:

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

Votre référence fait allusion à des ajustements de base, mais je ne suis pas sûr qu'il faut.

+0

C'était aussi ma supposition, mais en regardant l'explication, je ne savais pas s'il y avait quelque chose de plus compliqué à faire pour convertir les coordonnées décimales en coordonnées cartésiennes afin que le calcul soit précis. J'espère que vous et moi avons raison. Merci d'y jeter un coup d'oeil! –

Questions connexes