2016-05-23 9 views
0

Hallo Jungs zu verwenden Ich habe einen Text mit einigen Geodaten füllen, die wie folgt aussehen:wie eine Zeile aus einem Text nehmen als Eingabe für eine Funktion Python

[(-76.34666,40.006886), (- 76,34666, 40.073017), (- 76.25411,40.073017), (76.25411,40.006886)] [(-84.82031,38.403187)), (- 84.82031,42.327133), (- 80.51862,42.327133), (- 80.51862,38.403187)]

jetzt möchte ich es Zeile für Zeile als Eingabe für eine Polygonfunktion nehmen. Ich habe zuerst versucht, es mit einer Zeile zu machen, bevor ich Iteration versuche, aber es wird nicht funktionieren. Das ist mein Code für jetzt:

from shapely.wkt import loads as load_wkt 
    from shapely.geometry import Point, Polygon 

    f = open('koordinat.txt', 'r') 
    line = f.readline() 
    p = Polygon(line) 
    print (p.centroid) 

ich die ganze Zeit durch die „p = Polygon (Linie)“ und „A Linearring muss mindestens 3 Koordinatentupel“ die gleichen Fehler, aber wenn nehmen Sie einen der die Zeilen und setzen es in das Funktionshandbuch es funktioniert gut.

Irgendwelche Hilfe? Auch ein Beispiel für eine mögliche Iteration wäre nett :)

+0

'line' noch eine Zeichenfolge ist. Konvertieren Sie es in eine Liste von Tupeln, und vielleicht wird das funktionieren? – dwanderson

+0

Wenn Sie die Zeile aus der Datei lesen, erhalten Sie eine Zeichenfolge. Sie müssen die Zeichenfolge in eine Liste von Koordinaten konvertieren. –

Antwort

0

Sie übergeben eine Zeichenfolge an Polygon, aber es erwartet eine Liste von Koordinaten (Zahlen).

Try this:

import ast 
line = ast.literal_eval(f.readline()) 
+0

So funktioniert es: D – Vedad