Ekstrak raster dengan keluaran topeng tidak sepenuhnya tumpang tindih topeng?

8

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
Martin
sumber

Jawaban:

1

Apakah mungkin untuk mengubah seluruh gambar menjadi titik dan kemudian memilih titik berdasarkan interesaksi antara poligon dan lapisan poin ?. Saya tahu ini tidak memberikan wawasan apa pun tentang hasil aneh yang Anda peroleh, tetapi ini mungkin merupakan "penyelesaian" yang bermanfaat

dango
sumber
Ya, saya bisa melakukannya. Satu-satunya masalah adalah bahwa raster agak terlalu besar, sehingga akan memakan waktu cukup lama untuk dihitung. Saya mungkin akan mencobanya, sebagai lawan tidak bekerja sama sekali. Terima kasih atas masukan Anda!
Martin
Tidak yakin apakah ini akan membantu tetapi Anda dapat mengimpor simbologi, jadi mungkin Anda dapat mengatur simbologi untuk satu dan kemudian mengimpornya ke yang lainnya. Pernahkah Anda melihat pada jendela Analisis gambar, ia memiliki banyak fitur yang mungkin membantu. Juga pertimbangkan untuk membuat dataset mosaik jika gambarnya besar. Dengan mosaik, Anda dapat menambahkan fungsi yang dapat meningkatkan tampilan visual. harap itu membantu :)
dango
Saya belum banyak bekerja dengan analisis Gambar sebelumnya, tetapi sekarang saya mungkin harus mencobanya. Saya akan melaporkan kembali jika ini dapat membawa saya ke mana saja :)
Martin
1

Di lingkungan raster Anda, atur snap raster agar sama dengan input raster Anda (yang sedang diekstraksi). Ini akan menghindari pergeseran apa pun.

James C
sumber