2010-07-27 6 views
5

Wie berechne ich die Fläche eines in einer MySql-Datenbank gespeicherten Polygons? Die Punkte der Polygone sind Lat Longs. Grad und Minuten scheinen also ein Problem zu verursachen.Wie berechne ich den Bereich eines Polygons in einer MySQL-Datenbank, wenn die Polygon-Punkte Lat Longs sind?

Ich habe versucht:

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

Da die Punkte lat longs sind, ich seltsame Ergebnisse.

(Ich kann nicht zu Postgre wechseln). Gibt es eine Möglichkeit, dies in MySQL zu tun? Ich würde gerne die Ergebnisse in Quadratmetern oder Quadratkilometern oder Quadratmeilen erhalten - alles wäre in Ordnung.

+0

Verwenden Sie/haben Sie sich die GIS-Funktionen für MySQL angesehen? http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html – relet

+0

Hallo rolet, Danke für Ihre Nachricht. Ja, ich verwende räumliche Erweiterungen von MySQL. Die Daten werden als MySQL-Polygone gespeichert. – Laxmidi

+0

Sie sagen also, dass AREA (my_polygon) nicht funktioniert, weil Sie [lat longs] anstelle von [long lats] haben? Das native Format sollte [Long Lat] sein und ich weiß nicht, ob das Flächenberechnungen beeinflussen würde. In meinem Fall funktionierte AREA (poly) gut. – derickito

Antwort

3

Sie müssen diese Lats und Longs in ein geeigneteres Koordinatensystem umwandeln.

Da es sich bei der Erde um eine Kugel handelt, handelt es sich um die Berechnung eines Bereichs in Kugelkoordinaten.

Die Dokumentation sagt, dass die MySQL "AREA" function ein Polygon als Eingabe verwendet. Ich würde sagen, wenn Sie einen Bereich als etwas wie Quadratmeilen möchten, sollten Sie Ihre Breiten-/Längenkoordinaten in äquivalente Flächenkoordinaten (x, y) mit den richtigen Einheiten (z. B. Meilen) umwandeln. Übergeben Sie diese dann in die AREA-Funktion.

schlägt vor, dass jemand anderes dieses Problem hatte und löste es.

+0

Hallo Duffymo, Vielen Dank für den Hinweis. Ich muss den Link, den du angegeben hast, studieren. – Laxmidi

+0

Die Bereichsfunktion führt alle Berechnungen kartesisch durch. –

+1

Deshalb habe ich gesagt: "wandle deine Breiten- und Längenkoordinaten in äquivalente Flächenkoordinaten (x, y) mit den richtigen Einheiten um (z. B. Meilen). Übergeben Sie diese dann in die AREA-Funktion." Wenn Sie mich gewählt haben, weil Sie meine Antwort nicht gelesen haben, dann schämen Sie sich. Ich weiß nicht, was Sie getan haben, um den Titel "Dr." zu verdienen, aber Ihr Leseverstehen braucht etwas Arbeit. – duffymo