Mặc dù câu hỏi ban đầu là 10.0, tôi đã cập nhật mã bên dưới cho 10.3.1.
Sao chép dán này vào cửa sổ python trong arcmap để tạo chức năng 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)
Sau đó, bạn có thể sử dụng cửa sổ python để tạo lớp tính năng của mình bằng cách gọi
RasterCenter("<reference to raster">)
Vì vậy, ví dụ, nếu bạn có một raster tên là DEM, bạn gọi RasterCenter ("dem") trong cửa sổ python và nó sẽ thêm một lớp có tên là "dem_center" với một điểm duy nhất ở trung tâm của raster. Lớp được lưu trữ trong bộ nhớ, vì vậy nếu bạn muốn giữ nó, hãy xuất nó.
Để đi xa hơn một bước, bạn có thể lưu tập lệnh vào tệp .py và đặt tệp .py vào đường dẫn tìm kiếm python. ví dụ: lưu nó dưới dạng RasterCenter.py và đặt nó vào PYTHONPATH (thông thường vị trí của cái này là C: \ Python26 \ ArcGIS10.0 \ Lib)
Sau đó, bạn có thể làm:
import RasterCenter
RasterCenter.RasterCenter("<reference to raster">)