Orijinal soru 10.0 olmasına rağmen, aşağıdaki kodu 10.3.1 için güncelledim.
RasterCenter işlevini oluşturmak için bunu arcmap'teki python penceresine kopyalayın:
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)
Ardından, arayarak özellik sınıfınızı oluşturmak için python penceresini kullanabilirsiniz.
RasterCenter("<reference to raster">)
Örneğin, DEM adında bir rasteriniz varsa, python penceresinde RasterCenter'ı ("dem") çağırırsınız ve raster merkezinde tek bir nokta bulunan "dem_center" adlı bir katman ekler. Katman bellekte saklanır, bu nedenle saklamak istiyorsanız dışa aktarın.
Bir adım daha ileri gitmek için, komut dosyasını bir .py dosyasına kaydedebilir ve .py dosyasını python arama yoluna yerleştirebilirsiniz. örneğin RasterCenter.py olarak kaydedin ve PYTHONPATH içine yerleştirin (normalde bunun yeri C: \ Python26 \ ArcGIS10.0 \ Lib'dir)
Sonra şunları yapabilirsiniz:
import RasterCenter
RasterCenter.RasterCenter("<reference to raster">)