Todavía soy un poco principiante en arcpy así que quizás esto no sea tan sofisticado, pero he creado una herramienta script para esto y me funciona. En tu caja de herramientas, añade una nueva herramienta script. Haga el python script debajo de la fuente. Establezca el primer parámetro de la herramienta como entrada de la capa de características y el segundo parámetro como salida de la capa de características (asegúrese de establecer un parámetro de salida). Tenga en cuenta que esta herramienta devolverá puntos dentro de la capa de entrada en lugar del verdadero centroide.
import arcpy
import os
inputFC = arcpy.GetParameterAsText(0)
outputPath = arcpy.GetParameterAsText(1)
scratchPath = arcpy.env.scratchGDB
inputFCSpatialReference = arcpy.Describe(inputFC).spatialReference
##copy to new fc in scratchGBD and make new layer
FCCopy = arcpy.CopyFeatures_management(inputFC,os.path.join(scratchPath,"FCCopy"))
FCLyr = arcpy.MakeFeatureLayer_management(FCCopy,"FCLyr")
arcpy.AddMessage("FC LAYER CREATED")
##add and calculate X and Y fields
arcpy.AddField_management(FCLyr,"Xcoor","DOUBLE")
arcpy.CalculateField_management(FCLyr,"Xcoor","!SHAPE!.centroid.X","PYTHON")
arcpy.AddField_management(FCLyr,"Ycoor","DOUBLE")
arcpy.CalculateField_management(FCLyr,"Ycoor","!SHAPE!.centroid.Y","PYTHON")
arcpy.AddMessage("X,Y FIELDS CREATED")
##create point layer from X Y fields
FCTable = arcpy.MakeTableView_management(FCLyr,"FCTable")
pointsLyr = arcpy.MakeXYEventLayer_management(FCTable,"Xcoor","Ycoor","pointsLyr",inputFCSpatialReference)
arcpy.AddMessage("TABLE LAYER CREATED")
##export points to feature class
arcpy.CopyFeatures_management(pointsLyr,outputPath)
arcpy.AddMessage("POINT LAYER CREATED")
##delete data from scratchGBD
arcpy.Delete_management(FCCopy)
7 votos
Puedes exportar esa tabla de eventos XY a una nueva clase de característica.
0 votos
¡Wow! Un montón de soluciones. Me apunto. Este gis.stackexchange.com/questions/147790/ creará el centro del círculo inscrito más grande del polígono y transferirá todos los campos visibles a la clase de característica de punto de salida. Aunque es un poco lento...
0 votos
Tendré que recordarlo @FelixIP, ese código es bastante agradable y puedo ver situaciones en las que sería útil.
0 votos
@MichaelMiles-Stimson gracias. Definitivamente ayudó aquí gis.stackexchange.com/questions/166230/ aunque no funcionará con los donuts y los polígonos de varias partes