Suite

Tamponnant une classe d'entités par une distance différente, le résultat est que la distance tampon devient la même 100 pieds


try: # Import modules import arcpy from arcpy import env # Définir l'espace de travail env.workspace = r"C:EsripresspythonGISTPythonDataCity of Oleander.gdb" # Créer une variable avec le nom de la classe d'entités sujet fcName = "StreetLights" # La distance tampon dépend du type de lumière # Vérifiez pour voir de quel type il s'agit typeCursor = arcpy.da.SearchCursor(fcName,["TYPE"]) pour la ligne dans typeCursor: lightType = row[0] # TYPE == MV utilise un buffer de 125 # TYPE == MVH utilise un buffer de 160 # TYPE == SV utilise un buffer de 100 # TYPE == SVH utilise un buffer de 200 si lightType == "MV": lightBuffDist = 125 elif lightType == "MVH": lightBuffDist = 160 elif lightType == "SV": lightBuffDist = 100 else: lightBuffDist = 200 # effectue la mise en mémoire tampon arcpy.Buffer_analysis(fcName,r"C:EsripresspythonGISTPythonDataCity of Oleander.gdbLightBuffer",lightBuffDist) print "Terminé" sauf : print "le processus ne s'est pas terminé."

Tamponner l'éclairage public à différentes distances, afin de déterminer s'il existe des zones de la ville qui ne disposent pas d'un éclairage nocturne adéquat. ce programme fonctionne mais la valeur de buffer_Distance est devenue 100. Je me demandais pourquoi cette situation s'est produite ?


Ce problème ici est que vous parcourez votre classe d'entités en entrée avec votre curseur et que vous attribuez une valeur à la variablelightBuffDist. Cette variable est mise à jour pour chaque ligne de votre curseur. Enfin, il atteint la dernière ligne, qui semble avoir la valeur "SV" dans le champ "TYPE". Cela affecte 100 à la variable lightBuffDist. Votre Buffer_analysis est ensuite effectuée avec 100 comme entrée de distance.

Afin d'effectuer votre analyse de zone tampon avec différentes distances de zone tampon, vous devrez ajouter un champ à votre classe d'entités à l'aide deAddField_management, puis remplissez ce champ avec la distance tampon souhaitée à l'aide d'unMettre à jour le curseur.

Essayez ce code :

try: # Import modules import arcpy from arcpy import env # Définir l'espace de travail env.workspace = r"C:EsripresspythonGISTPythonDataCity of Oleander.gdb" # Créer une variable avec le nom de la classe d'entités sujet fcName = "StreetLights" # La distance tampon dépend du type de lumière # Ajouter un champ Pour enregistrer la distance DistFldName = "BUFF_DIS" AddField_management (fcName, DistFldName, "SHORT") typeCursor = arcpy.da.UpdateCursor(fcName,["TYPE", DistFldName]) pour la ligne dans le typeCursor : lightType = row[0] # TYPE == MV utilise un tampon de 125 # TYPE == MVH utilise un tampon de 160 # TYPE == SV utilise un tampon de 100 # TYPE == SVH utilise un tampon de 200 if lightType == "MV": row[1] = 125 elif lightType == "MVH": row[1] = 160 elif lightType == "SV": row[1] = 100 else: row[ 1] = 200 typeCursor.updateRow(row) # effectuer la mise en mémoire tampon arcpy.Buffer_analysis(fcName,r"C:EsripresspythonGISTPythonDataCity of Oleander.gdbLightBuffer", DistFldName) # Facultatif : Supprimer le champ avec la distance de la mémoire tampon arcpy.DeleteFi eld_management (fcName, DistFldName) print "Terminé" sauf : print "le processus ne s'est pas terminé."