Хоча початкове запитання було для 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">)