แม้ว่าคำถามเดิมสำหรับ 10.0 ฉันได้ปรับปรุงรหัสด้านล่างสำหรับ 10.3.1
คัดลอกวางลงในหน้าต่างไพ ธ อนใน 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)
จากนั้นคุณสามารถใช้หน้าต่างหลามเพื่อสร้างคลาสคุณลักษณะของคุณโดยการโทร
RasterCenter("<reference to raster">)
ตัวอย่างเช่นถ้าคุณมีแรสเตอร์ชื่อ DEM คุณจะเรียก RasterCenter ("dem") ในหน้าต่างไพ ธ อนและมันจะเพิ่มเลเยอร์ชื่อ "dem_center" โดยมีจุดเดียวที่กึ่งกลางของแรสเตอร์ เลเยอร์จะถูกเก็บไว้ในหน่วยความจำดังนั้นหากคุณต้องการเก็บไว้ให้ส่งออก
หากต้องการไปอีกขั้นตอนหนึ่งคุณสามารถบันทึกสคริปต์เป็นไฟล์. และวางไฟล์. pi ในพา ธ การค้นหาสำหรับ python เช่นบันทึกเป็น RasterCenter.py และวางไว้ใน PYTHONPATH (ปกติจุดนี้คือ C: \ Python26 \ ArcGIS10.0 \ Lib)
จากนั้นคุณสามารถทำได้:
import RasterCenter
RasterCenter.RasterCenter("<reference to raster">)