Chociaż pierwotne pytanie dotyczyło wersji 10.0, zaktualizowałem poniższy kod dla wersji 10.3.1.
Skopiuj wklej to do okna Pythona w arcmap, aby utworzyć funkcję 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)
Następnie możesz użyć okna Pythona, aby utworzyć klasę obiektów, wywołując
RasterCenter("<reference to raster">)
Na przykład, jeśli masz raster o nazwie DEM, wywołujesz RasterCenter („dem”) w oknie pythona, a to doda warstwę o nazwie „dem_center” z pojedynczym punktem na środku rastra. Warstwa jest przechowywana w pamięci, więc jeśli chcesz ją zachować, wyeksportuj ją.
Aby przejść o krok dalej, możesz zapisać skrypt w pliku .py i umieścić plik .py w ścieżce wyszukiwania dla Pythona. np. zapisz go jako RasterCenter.py i umieść w PYTHONPATH (zwykle miejscem na to jest C: \ Python26 \ ArcGIS10.0 \ Lib)
Następnie możesz zrobić:
import RasterCenter
RasterCenter.RasterCenter("<reference to raster">)