Saya memiliki jaringan akumulasi aliran dan shapefile yang berisi daerah tangkapan air. Sekarang saya ingin melakukan beberapa perhitungan pada mereka sehingga saya perlu mengekstraksi data dari sel di raster yang berdekatan dengan daerah tangkapan air tertentu.
Dalam proses itu saya mencoba menggunakan Ekstrak oleh Topeng di raster saya, dengan salah satu poligon tangkapan sebagai topeng (dalam satu lingkaran nanti, tapi sekarang saya hanya perlu untuk bekerja sekali).
Masalahnya adalah bahwa raster yang diekstraksi digeser setengah sel ke kiri, dibandingkan dengan raster asli dan poligon penyamaran. Ini mengacaukan sisa proses saya, karena saya mencoba mengubah raster menjadi titik dan berpotongan dengan poligon lain di kemudian hari. Dan kecuali raster yang diekstraksi tumpang tindih dengan yang asli, saya tidak akan mendapatkan poligon yang tepat.
Raster asli dan poligon sejajar dengan sempurna, karena poligon dibuat dari raster. Saya telah mencoba memeriksa apakah ada semacam perubahan dalam proyeksi, tetapi tidak dapat menemukannya. Saya juga telah mencoba dalam dokumen ArcMap baru, me-restart semuanya beberapa kali (ini sering memecahkan masalah) dan mengeksekusi alat dari python prompt alih-alih memanggil skrip saya. Saya bahkan telah mencoba untuk menjalankan alat Extract by Mask dari Toolbox, dengan hasil yang sama.
Ini adalah kode (sangat sederhana) yang saya gunakan di python prompt di ArcMap:
inpgs = r'C:\GIS\Catchm_ex.shp'
flowacc = r'C:\GIS\flowacc'
arcpy.MakeFeatureLayer_management(inpgs, 'currentMask', '"HydroID" = 269634')
outRaster = arcpy.sa.ExtractByMask(flowacc, 'currentMask')
Saya punya beberapa file sampel di sini
Saya menggunakan Windows 7, ArcInfo 10.0 dan Python 2.6.
Saya telah mencoba Ekstrak oleh Polygon sekarang, dan itu sepertinya berfungsi dengan baik. Apakah ini hanya mesin saya yang tidak berfungsi pada ExtractByMask? Hanya kekurangannya adalah bahwa saya mengalami masalah dalam menggunakan fungsi itu dalam skrip saya, karena saya tidak dapat menemukan cara untuk mendapatkan koordinat poligon penyamaran saya (hanya mencakup 9 sel, dengan titik di tengah jika itu membantu).
Saya sekarang dapat menggunakannya dengan Ekstrak dengan poligon dengan menggunakan kode di bawah ini (dimodifikasi dari halaman dukungan Esri ). Sayangnya, ini tidak menyelesaikan masalah saya. Tampaknya seolah-olah output (dari alat ini dan juga Ekstrak dengan topeng) kadang-kadang digeser setengah sel ke kiri, dan kadang-kadang tidak. Sebagian besar memang, tetapi kadang-kadang sebenarnya terletak di tempat yang seharusnya.
Jadi sekarang saya benar-benar bingung. Apakah ini hanya terjadi pada saya, di komputer saya? Jika ada orang lain yang mengalami hal yang sama, silakan tulis komentar jadi saya tahu bahwa saya tidak sendirian :) Bagi saya masalah ini tampaknya menjadi masalah yang terlalu besar untuk menjadi bug, yang membuat saya menjadi masalah. bahwa saya telah menciptakan diri saya di sepanjang jalan.
Ada ide tentang cara menghindarinya?
def ReadPoints(infc):
try:
import arcpy, numpy
except ImportError:
sys.exit('Unable to import arcpy')
# Identify the geometry field
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName
points = []
# Create search cursor
rows = arcpy.SearchCursor(infc)
# Enter for loop for each feature/row
for row in rows:
# Create the geometry object
feat = row.getValue(shapefieldname)
partnum = 0
# Step through each part of the feature
for part in feat:
# Step through each vertex in the feature
for pnt in feat.getPart(partnum):
if pnt:
points.append([int(pnt.X), int(pnt.Y)])
pt = numpy.array(points)
pts = []
for i in range(len(pt)):
t = pt[i]
pts.append(arcpy.Point(t[0],t[1]))
return pts
Di lingkungan raster Anda, atur snap raster agar sama dengan input raster Anda (yang sedang diekstraksi). Ini akan menghindari pergeseran apa pun.
sumber