Sebbene la domanda originale fosse per 10.0, ho aggiornato il codice seguente per 10.3.1.
Copia incollalo nella finestra di Python in arcmap per creare la funzione RasterCenter:
import arcpy, os
def RasterCenter(raster):
#raster: string reference to raster
raster = arcpy.Raster(raster)
fcname = "{}_center".format(os.path.basename(str(raster)))
x = raster.extent.XMin + (raster.extent.XMax - raster.extent.XMin)/2
y = raster.extent.YMin + (raster.extent.YMax - raster.extent.YMin)/2
featureclass = arcpy.CreateFeatureclass_management("in_memory", fcname, "POINT",spatial_reference = raster.spatialReference)
with arcpy.da.InsertCursor(featureclass, ['SHAPE@XY']) as cursor:
cursor.insertRow(((x, y),))
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
arcpy.MakeFeatureLayer_management(featureclass, fcname)
layer = arcpy.mapping.Layer(fcname)
arcpy.mapping.AddLayer(df, layer)
Quindi, puoi utilizzare la finestra di Python per creare la tua classe di funzionalità chiamando
RasterCenter("<reference to raster">)
Quindi, ad esempio, se hai un raster chiamato DEM, chiami RasterCenter ("dem") nella finestra di Python e aggiungerà un layer chiamato "dem_center" con un singolo punto al centro del raster. Il livello è archiviato in memoria, quindi se si desidera mantenerlo, esportarlo.
Per fare un passo avanti, è possibile salvare lo script in un file .py e posizionare il file .py nel percorso di ricerca di python. ad es. salvarlo come RasterCenter.py e posizionarlo in PYTHONPATH (normalmente lo spot è C: \ Python26 \ ArcGIS10.0 \ Lib)
Quindi potresti fare:
import RasterCenter
RasterCenter.RasterCenter("<reference to raster">)