2017-09-24 2 views
1

Ich benutze Pandas, und ein Datensatz, den ich erhalten habe, hat eine Positionsspalte in einem WKT-Format. Zum Beispiel:Erhalten der Mitte eines WKT-Polygons

hospital.get_value(1,'WKT')

POLYGON ((-58.4932 -34.5810,-58.4925 -34.5815,-58.4924 -34.5817)) 

Es gibt viel mehr Punkte und mit größerer Präzision in diesem Beispiel, aber ich verkürzt es zu illustrativen Zwecken. Außerdem weiß ich nicht, ob es eine WKT oder nur eine Zeichenfolge ist. Wie erhalte ich die Mitte dieses Polygons, damit ich es als Koordinate verwenden kann? Danke im Voraus.

+0

Es wird nicht genau in der Mitte, aber es wird wahrscheinlich innerhalb des Polygons, wenn Sie nur die Längen im Durchschnitt zusammen und der Mittelwert der Breiten zusammen. Andernfalls würden Sie die Schwerpunktformel anwenden wollen, und während die Gebäude relativ klein im Vergleich zur Erdkrümmung sind, könnte eine solche Formel in Längen- und Breitenraum einen Fehler verursachen. Um dies zu vermeiden, möchten Sie wahrscheinlich in Cartesian umwandeln Koordinaten, wenden Sie die Schwerpunktformel an und konvertieren Sie dann zurück in Längen- und Breitengrad (ignorieren Sie die radiale Komponente). – kpie

Antwort

0

Sie haben fast WKT, außer dass der lineare Ring eines Polygons geschlossen werden muss.

Shapely hat eine .centroid Eigenschaft den Mittelpunkt zu bekommen:

from shapely import wkt 
g = wkt.loads(
    'POLYGON ((-58.4932 -34.5810,-58.4925 -34.5815,-58.4924 -34.5817,-58.4932 -34.5810))') 
print(g.centroid) # POINT (-58.49270000000001 -34.5814) 
print(g.centroid.coords[0]) # (-58.492700000000006, -34.581399999999995) 
Verwandte Themen