Ok, also, ich hab das jetzt mal "SO" geändert:
Code: Alles auswählen
input_filename='c:\DGM\BitLand\DGM5_RP.xyz'
output_filename='c:\DGM\BitLand\Output.xyz'
left_border = 326000
bottom_border = 5536000
right_border = 328000
top_border = 5538000
with open(input_filename) as points_in:
with open(output_filename, 'w') as points_out:
for line in points_in:
point = map(float, line.split())
if left_border <= point[0] <= right_border and top_border <= point[1] <= bottom_border:
points_out.write(line)
Leider kommt da eine für mich ziemliche kryptische Fehlermeldung:
Traceback (most recent call last):
File "C:\Users\arwed.fraenken\Desktop\dgm.py", line 11, in <module>
if left_border <= point[0] <= right_border and top_border <= point[1] <= bottom_border:
TypeError: 'map' object is not subscriptable
Da scheint wohl irgendwas mit den Daten in der Zeile nicht richtig zu sein. Muss ich die Zeile nicht irgendwie auf die obigen "border"-Grenzen temporär auf Variablen setzen und direkt vergleichen? Wenn ich z.b. die Zeilen nochmal zeige:
308000.000 5526000.000 314.916
308005.000 5526000.000 317.069
308010.000 5526000.000 319.278
Dann ist die 308000 zu vergleichen mit "left_border" - wenn die dann kleiner ist wie "left_border", dann kann die Zeile ja schon direkt "vergessen" werden.
Wenn der zweite Wert in der Zeile - 5526000 ist bzw. kleiner als der "bottom_border", dann kann die Zeile auch vergessen werden.
Wenn der erste Wert in der Zeile - 308000 größer wie der "right_border", dann kann die Zeile auch vergessen werden.
Wenn der zweite Wert in der Zeile - 5526000 größer wie der "top_border", dann kann die Zeile auch vergessen werden.
Aber die 2 ersten Werte (308000 und 5526000) in der Zeile müssten doch irgendwie gezielt als Variable markiert/aufgeschlüsselt werden, um diese in der if-klause zu erkennen und dann zu bearbeiten...?
Die z-Koordinate kann komplett wegfallen - in Sachen Bearbeitung!
Achherje...