Хотя оригинальный вопрос был для 10.0, я обновил код ниже для 10.3.1.
Скопируйте и вставьте его в окно python в arcmap, чтобы создать функцию 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)
Затем вы можете использовать окно Python для создания вашего класса объектов, вызвав
RasterCenter("<reference to raster">)
Так, например, если у вас есть растр с именем DEM, вы вызываете RasterCenter ("dem") в окне python, и он добавляет слой с именем "dem_center" с одной точкой в центре растра. Слой хранится в памяти, поэтому, если вы хотите сохранить его, экспортируйте его.
Чтобы продвинуться еще дальше, вы можете сохранить сценарий в файле .py и поместить файл .py в путь поиска для python. например, сохраните его как RasterCenter.py и поместите в PYTHONPATH (обычно это место C: \ Python26 \ ArcGIS10.0 \ Lib)
Тогда вы могли бы сделать:
import RasterCenter
RasterCenter.RasterCenter("<reference to raster">)