Memperoleh batas gambar raster sebagai poligon di ArcGIS Desktop?

28

Saya memiliki gambar raster persegi panjang di ArcGIS Desktop.

Bagaimana saya bisa menghasilkan poligon yang hanya sebatas gambar raster?

Artinya, saya ingin memiliki lapisan poligon dengan segi empat tunggal yang merupakan ujung gambar.

Saya sudah mencoba melakukan konversi Raster-> Polygon, tetapi ini mencoba menggunakan data dalam gambar untuk menghasilkan garis besar - yang saya inginkan hanyalah garis besar tepi gambar.

Saya menggunakan ArcGIS Desktop 10.

Robintw
sumber

Jawaban:

33

Jika Anda memiliki Spatial Analyst maka Anda dapat:

  1. Lipat gandakan raster dengan 0 untuk membuat raster nilai konstan menggunakan Raster Calculator. (pastikan mengonversinya ke tipe integer atau langkah 2 tidak akan berfungsi)
  2. Konversi hasil langkah 1 ke poligon menggunakan alat Raster ke Poligon.

Solusi lain:

Jika Anda memiliki lisensi 3D Analyst maka Anda dapat menggunakan alat Raster Domain di bawah 3D Analyst> Conversion> dari raster (namun tidak memiliki fungsi mulus)

Alex Markov
sumber
12

Anda dapat menggunakan alat Domain Raster dari Analis 3D untuk membuat poligon dengan tingkat yang sama dengan data raster Anda

Andreas
sumber
Selamat datang di GIS SE! Bisakah Anda menambahkan referensi ke jawaban Anda? Dengan begitu akan lebih solid.
RK
Alat Raster Domain berhasil, dengan sempurna! Membuat garis besar atau batas data raster.
1
Satu kata peringatan tentang alat ini - poligon pembatas yang dibuat adalah sejauh mana data raster Anda dimulai & diakhiri di PUSAT piksel, bukan tepi luar piksel. Saya baru saja mencobanya dan berpikir itu mengembalikan kotak pembatas luar raster, tetapi ketika Anda memperbesar Anda akan melihat bahwa kotak pembatas dimulai pada pusat piksel.
fbiles
Sebenarnya ada parameter untuk metode IRasterDomainExtractor.ExtractDomain yang mengontrol apakah menggunakan pusat atau tepi luar piksel / sel.
Preston
Ini sempurna! Satu alat dan saya memiliki garis poligon raster saya. Terima kasih!
user3281667
11

Bagaimana dengan mendigitalisasi saja? Klik-klik-klik-klik sudah selesai.

Mat
sumber
8
Tidak begitu yakin mengapa opsi ini tidak dipilih. Anda dapat menemukan koordinat sudut sejauh dan membuat simpul di koordinat tersebut. Bahkan dapat digunakan untuk analisis. Jika itu hanya untuk tampilan, klik-klik-klik-klik berfungsi dengan baik.
Baltok
3
Saya katakan karena raster bisa menjadi bentuk yang tidak teratur dan, tergantung pada kerumitannya, dapat menghasilkan pekerjaan digitalisasi yang cukup melelahkan
Phil Henley
4
Tapi OP mengatakan itu persegi panjang. Sepertinya pekerjaan yang sangat sederhana bagi saya. Dengan memperbesar dan menjadi akurat, perbedaan antara garis besar raster aktual dan garis digital akan diabaikan untuk setiap aplikasi dunia nyata.
Matt
10

Anda bisa menggunakan alat Build Footprint di Toolbox manajemen data. Anda harus membuat Dataset Mosaik dari raster Anda.

Buat Mosaik baru di File Geodatabase, tambahkan raster Anda.

Buka Mosaik Anda di ArcMap dan Ekstrak Jejak Kaki.

Itu yang akan saya lakukan.

Dom
sumber
8

Saya menggunakan skrip python sederhana ini, ia membuat poligon featureeclass dengan tingkat semua raster yang ada di folder. Untuk menggunakannya, Anda bisa membuat alat di ArcToolbox atau Anda cukup mengubah variabel InFolder dan Dest (Tujuan).

import arcpy,os

InFolder = arcpy.GetParameterAsText(0)
Dest=arcpy.GetParameterAsText(1)

arcpy.env.workspace=InFolder
#The raster datasets in the input workspace
in_raster_datasets = arcpy.ListRasters()

arcpy.CreateFeatureclass_management(os.path.dirname(Dest),
                                   os.path.basename(Dest),
                                   "POLYGON")
arcpy.AddField_management(Dest,"RasterName", "String","","",250)
arcpy.AddField_management(Dest,"RasterPath", "String","","",250)

cursor = arcpy.InsertCursor(Dest)
point = arcpy.Point()
array = arcpy.Array()
corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]
for Ras in in_raster_datasets:
    feat = cursor.newRow()  
    r = arcpy.Raster(Ras)
    for corner in corners:    
        point.X = getattr(r.extent, "%s" % corner).X
        point.Y = getattr(r.extent, "%s" % corner).Y
        array.add(point)
    array.add(array.getObject(0))
    polygon = arcpy.Polygon(array)
    feat.shape = polygon
    feat.setValue("RasterName", Ras)
    feat.setValue("RasterPath", InFolder + "\\" + Ras)
    cursor.insertRow(feat)
    array.removeAll()
del feat
del cursor  
jeb
sumber
dapat memberi tahu kami secara detail cara menggunakan kode ini. Saya ingin menggunakannya pada file .asc raster. Gambar saya berbeda sub folder yang berbeda.
GIS Data Butcher
1
Jawaban dari jeb telah bekerja untuk saya, tidak memiliki perwakilan yang cukup untuk memilihnya. @GIS Data Butcher Simpan sumber lengkap ke dalam file script.py dan jalankan dari Python Window dalam ArcMap. Anda dapat menggunakan perintah berikut di Jendela Python untuk menjalankan skrip dari file. > execfile (r'd: \ temp \ script.py ')
Asad
sempurna!! saya bertanya-tanya, apakah ada cara untuk alat membaca subfolder juga?
raphael
@raphael, pasti, Anda hanya perlu mengimplementasikan python standar os.listdir atau os.walk dalam skrip.
jeb
@ jeb ya, saya mendapatkan konsep ... bot saya sangat baru dalam hal ini, dan tidak bisa membuatnya bekerja ... bisakah Anda memberikan bantuan?
raphael
4

Selain itu, cara mudah adalah dengan menggunakan alat Klasifikasi Ulang di mana Anda harus mengklik tombol Klasifikasi dan mengubah jumlah kelas menjadi 1. Klik Ok. Sekarang, raster keluaran dapat dengan mudah dikonversi menggunakan Alat konversi Raster ke Polygon. ;)

Adrian Croitor
sumber
4

Saya pikir bahwa mengklasifikasi ulang dan mengubah raster ke poligon dapat memakan waktu terlalu lama. Menurut pendapat saya, cara termudah untuk melakukannya adalah:

  • Dapatkan maxX, maxY, minX, minY (ini bisa dilakukan dengan Python dengan perintah uraikan)
  • Jalankan Create Fishnet dengan luas seperti di atas dan jumlah baris / kolom sebagai 1

Jika Anda memiliki banyak raster, ini harus dilakukan dengan Python dan dapat membuat ratusan jejak kaki dalam hitungan detik.

Felicia Fitzgerald
sumber
0

Di ArcCatalog Anda dapat membuat katalog raster di .gdb (Alat Manajemen Data-> Raster). Tidak terkelola baik-baik saja. Kemudian klik kanan dan muat (jika raster hanya duduk di folder kemudian "muat dari ruang kerja". Jika Anda memuat katalog raster ke ArcMap Anda dapat mengklik kanan-> data-> ekspor jejak kaki, sebagai file bentuk atau kelas fitur. File bentuk akan memiliki bidang 'nama' yang diisi dengan nama raster.

Katalog Raster akan secara otomatis menampilkan luasan tetapi saya perlu mengirim luasan kepada seseorang yang tidak menggunakan ArcGIS.

SgtSchultz
sumber
0

Gunakan alat "Raster ke Polygon" di kotak alat alat konversi. Pastikan untuk menghapus centang pada kotak penyederhanaan poligon. Ini akan menciptakan apa yang Anda inginkan.

Boyle300
sumber
8
Apakah Anda yakin ini tidak hanya membuat kekacauan besar poligon, satu untuk setiap rangkaian piksel bernilai-sama yang berdekatan pada gambar asli?
whuber
Anda selalu bisa menambahkan yang dibubarkan setelah ini untuk mendapatkan tingkat poli. Namun, saya yakin solusi python yang terdaftar oleh @ jeb lebih cepat.
GeoJohn
0

Alat "Raster Domain" akan membuat poligon di sekitar raster yang tidak beraturan. Saya percaya ini memerlukan lisensi untuk ekstensi analis 3d.

RWRogers
sumber
0

Menggunakan ArcCatalog adalah pilihan terbaik. Buat Kumpulan Mosaik dari raster yang tersedia. Tentukan "NO VALUE" di mosaik untuk menghindari latar belakang raster agar tidak dimasukkan dalam poligon. Buat jejak kaki menggunakan metode Radiometrik. Buka dataset Mosaic di ArcGIS dan ekspor Footprints ke file shp. Cara hebat untuk mendapatkan batas mosaik ...

pengguna109590
sumber
0

Jika Anda mencoba untuk mendapatkan garis besar raster DEM maka Anda perlu melakukan hal berikut

Jika Anda memiliki Spatial Analyst dan 3d Analyst maka Anda dapat:

  1. kalikan raster dengan 0 untuk membuat raster nilai konstan menggunakan Raster Calculator.
  2. Konversi hasil langkah 1 ke integer raster dengan menggunakan "INT (Alat)". Ini diperlukan untuk langkah selanjutnya.
  3. konversi hasil langkah 2 ke poligon menggunakan alat Raster ke Poligon (hanya berfungsi dengan raster integer).
seamster02
sumber
Hai Seamster02, selamat datang di GIS Stack Exchange :) Seperti yang tertulis ini tidak jauh berbeda dari jawaban yang diterima, gis.stackexchange.com/a/22016/108 .
matt wilkie