J'essaie d'obtenir la zone de chaque polygone dans le fichier .shp, puis de l'ajouter à une nouvelle colonne dans la table attributaire.Recherche d'une zone à l'aide de SHAPE @ AREA
import os
import arcpy
import math
folderpath = 'C:\Users\Michaelf\Desktop\GEOG M173'
arcpy.env.workspace = folderpath
arcpy.env.overwriteOutput = True
input_shp = folderpath + r'\lower48_county_2012_election.shp'
equal_shape = folderpath + r'\project_lower48.shp'
out_point = folderpath + r'\lower_48_centroid.shp'
out_shp = folderpath + r'\48_State_Centroids.shp'
totarea = []
arcpy.AddField_management(input_shp, "totarea")
geometryField = arcpy.Describe(totarea).shapeFieldName
cursor = arcpy.UpdateCursor(totarea)
for row in cursor:
AreaValue = row.getValue(geometryField).area
row.setValue("total_area",AreaValue)
cursor.updateRow(row)
del row, cursor
print AreaValue
est ci-dessous une suggestion que je l'ai reçu, mais je ne comprends pas bien
with arcpy.da.SearchCursor(input_shp, ("[email protected]", "[email protected]")) as cursor:
for row in cursor:
print("Feature {0} has an area of {1}".format(row[0], row[1]))
Voici mon message d'erreur:
Traceback (most recent call last):
File "C:/Users/Michaelf/Desktop/GEOG M173/test2.py", line 16, in <module>
geometryField = arcpy.Describe(totarea).shapeFieldName
File "C:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\__init__.py", line 1246, in Describe
return gp.describe(value)
File "C:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\geoprocessing\_base.py", line 374, in describe
self._gp.Describe(*gp_fixargs(args, True)))
RuntimeError: Object: Describe input value is not valid type
Utilisez-vous Arc 10.1 ou plus? (Les curseurs DA sont plus faciles à utiliser, mais pas disponibles dans les versions antérieures.) – Erica
Vos fonctions Describe et UpdateCursor ont besoin du paramètre input_shp et non de votre tableau vide (totarea) param. Vous n'avez pas besoin de la totarea si vous ne voulez que des surfaces par ligne calculées. Cela devrait ajouter une nouvelle colonne à votre input_shp avec la zone pour chacun. Notez que vous pouvez utiliser Calc Field pour cela et tout faire en même temps. – Tom