En arcgis 10 y python quiero obtener el grado (xmax, ymax, xmin, ymin) información de cada uno de los polígonos en un archivo de forma.
Puedo obtener la medida de toda forma de archivo de uso
file=r"D:\SCRATCH\ARCGIS\100k_trc_tiles_TVM.shp"
desc=arcpy.Describe(file)
print desc.extent.Xmax
394551.52085039532
Pero me parece que no puede averiguar cómo obtener la misma información para cada fila del conjunto de datos.
rows = arcpy.SearchCursor("100k_trc_tiles_TVM")
for row in rows:
print row
imprime el 31 de filas en el conjunto de datos, pero
for row in rows:
desc=arcpy.Describe(row)
print desc.extent.Xmax
da un error.
Error de tiempo de ejecución : Objeto: Describir entrada el valor no es válido el tipo de
Yo estaba pensando en añadir la medida en que los valores de la tabla usando "calcular la geometría", pero esto sólo le da el centroide. Entonces supongo que podemos usar algo como fila.GetValue("xmax").
Dicho esto yo sé que podemos crear en el X/Y, max/min utilizando la función de http://www.ian-ko.com/free/free_arcgis.htm pero sería mejor si podemos evitar tener que añadir campos, especialmente si arcpy puede obtener estos valores.
Básicamente necesito para obtener las extensiones para alimentar a la herramienta clip a clip de 30 áreas de datos (de acuerdo a la 1:100.000 de la hoja de mapa) para el geoprocesamiento ya que la División de la herramienta de falla debido al gran tamaño del conjunto de datos (ver Problemas con grandes conjuntos de datos). Quiero automatizar esto, ya que se repite en una serie de conjuntos de datos.
=== guión de trabajo ===
# Emulates Arc Info SPLIT tool by using Clip but
# Requires a FC from which each row is used as the input clip feature.
# Each row must be rectangular.
# Used on 12GB FGDB with 100 million records.
#Licence: Creative Commons
#Created by: George Corea; georgec@atgis.com.au, coreagc@gmail.com
import arcpy, string
#inFrame=arcpy.GetParameterAsText(0) # Input dataframe FC
#inFile=arcpy.GetParameterAsText(1) # Input FC for splitting
#outDir=arcpy.GetParameterAsText(2) # Output FGDB
inFrame=r"D:\SCRATCH\ARCGIS\100k_trc_tiles_TVM.shp"
inFile=r"c:\junk\106\data\7_Merge.gdb\FullRez_m2b"
outDir=r"D:\SCRATCH\Projects\206\datasplit\test_slaasp.gdb"
#NameField="Name_1"
#arcpy.env.workspace = r"C:/Workspace"
arcpy.env.overwriteOutput = True
rows = arcpy.SearchCursor(inFrame)
shapeName = arcpy.Describe(inFrame).shapeFieldName
for row in rows:
feat = row.getValue(shapeName)
Name = row.Name_1
print "Executing clip on: "+str(Name)
extent = feat.extent
#print extent.XMin,extent.YMin,extent.XMax,extent.YMax
# Create an in_memory polygon
XMAX = extent.XMax
XMIN = extent.XMin
YMAX = extent.YMax
YMIN = extent.YMin
pnt1 = arcpy.Point(XMIN, YMIN)
pnt2 = arcpy.Point(XMIN, YMAX)
pnt3 = arcpy.Point(XMAX, YMAX)
pnt4 = arcpy.Point(XMAX, YMIN)
array = arcpy.Array()
array.add(pnt1)
array.add(pnt2)
array.add(pnt3)
array.add(pnt4)
array.add(pnt1)
polygon = arcpy.Polygon(array)
ShapeFile = outDir+"\\temp_poly"
arcpy.CopyFeatures_management(polygon, ShapeFile)
#print Name
### Set local variables
in_features = inFile
clip_features = ShapeFile
out_feature_class = outDir+"\\"+Name
xy_tolerance = "0.22"
# Execute Clip
try:
arcpy.Clip_analysis(in_features, clip_features, out_feature_class, xy_tolerance)
print "Completed: "+str(Name)
except:
error = arcpy.GetMessages()
print "Failed on: "+str(Name)+" due to "+str(error)