arcpy.da.updateCursor

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
scofield
User
Beiträge: 1
Registriert: Dienstag 13. Mai 2014, 16:07

Hallo,
ich bin noch totaler Programmierneuling und habe auch eine dementsprechend (für euch sicher) banale Frage. Ich will mit einem Python-Script in ein bereits existierendes shapefile in ArcGIS 10.1 eine ID hineinschreiben, die sich u.a. aus den Koordinaten der entsprechenden Polygone zusammensetzt (GLIMS_ID). Der folgende Code ist nur ein Anfang, an dem ich wohl noch viel rumprobieren werde, aber das Problem ist, dass für jedes Polygon, das in dem shapefile existiert, die ID von einem einzigen Polygon reingeschrieben wird. Wie kann ich es bewirken, dass jedes Polygon auch seine eigene spezifische ID erhält?

Code: Alles auswählen

import arcpy

arcpy.env.workspace = "**************"
outline = "***********testoutline7.shp"
fields = ['SHAPE@XY']

with arcpy.da.SearchCursor(outline, fields) as cursor:
      for row in cursor:
            coordX = row[0][0]
            if coordX < 0:
                coordX = coordX + 360
            coordY = row[0][1]
            print "X: {}, Y: {}".format(coordX,coordY)
            #----Umwandlung der Centroid-Koordinaten---#
            Xrnd = round(coordX, 3)
            longitude = str(Xrnd)
            glimsLongitude = longitude.split('.')
            Yrnd = round(coordY, 3)
            latitude = str(Yrnd)
            glimsLatitude = latitude.split('.')
            #-----------------------------------------#
            with arcpy.da.UpdateCursor(outline, "GLIMS_ID") as crsr:
                for glims in crsr:
                      glims[0] = "G" + glimsLongitude[0] + glimsLongitude[1] + "E" + glimsLatitude[0] + glimsLatitude[1] + "N"
                      crsr.updateRow(glims)
Ich weiß, der Code ließe sich mit Sicherheit viel besser schreiben (bin auch für jeden Verbesserungsvorschlag offen), aber das Hauptproblem ist momentan wie gesagt, dass wenn ich ihn ausführe, in jedes Polygon meines shapefiles der gleiche Text geschrieben wird (und zwar die ID von nur einem bestimmten dieser Polygone).
Ich vermute, es geht um die letzten 4 Zeilen. Denn mit der weiter oben stehenden print-Anweisung werden mir auch alle Koordinaten von allen Polygonen ausgegeben. Ich habe schon probiert, die letzten 4 Zeilen an eine andere Position im Code zu packen, aber ohne Erfolg.

Wäre für eure Hilfe sehr dankbar!
Antworten