Mengklasifikasikan data lulus secara manual di luar jangkauan di ArcGIS untuk Desktop?

13

Saya memiliki dua shapefile yang mewakili kisi-kisi dengan nilai-nilai yang dilambangkan dengan warna-warna bertingkat, yang ditunjukkan di bawah ini:

Asli

Anda dapat melihat bahwa kedua shapefile mencakup rentang data yang serupa, tetapi menetapkan warna yang sedikit berbeda untuk rentang dalam data ini. Saya ingin menyimbolkan rentang di masing-masing dua shapefile menggunakan warna yang sama untuk rentang yang sama, memungkinkan perbandingan yang lebih mudah antara file dan memungkinkan legenda tunggal untuk digunakan.

Namun, ketika saya mencoba untuk mengklasifikasikan rentang dengan interval manual, ArcGIS memaksa apa yang seharusnya menjadi rentang paling atas untuk juga memasukkan nilai minimum dari dataset. Anda dapat melihat ini di kisaran "-81.64 - 10.00" dari bingkai data kiri, di bawah ini. Ini memaksa seluruh lapisan disimbolkan dengan warna ini. Pada dasarnya, ArcGIS mensyaratkan bahwa nilai minimum dalam dataset digunakan sebagai nilai di salah satu rentang.

Interval Baru

Apakah ada cara untuk menghindari fitur ini?

hfisch
sumber
Saya ingat memiliki masalah ini juga, meskipun saya tidak ingat persis bagaimana saya menyelesaikannya. Jika Anda mengklasifikasikan sebagai "interval yang sama" dan klik dua kali pada nilai, dapatkah Anda mengubahnya seperti itu?
GISKid
@GISKid segera setelah saya klik dua kali, klasifikasi kembali ke "Manual", sayangnya.
hfisch
Bagaimana dengan menyesuaikan nilai pada histogram itu sendiri?
GISKid
@GISKid nilai akan kembali ke nilai minimum jika Anda menyeretnya di bawah nilai minimum.
hfisch
2
Saya pikir jawaban terbaik dan paling sederhana untuk ini adalah gis.stackexchange.com/a/136497 - jawaban pertama (dan saat ini diterima) terlalu panjang untuk saya sukai.
PolyGeo

Jawaban:

12

Ini pasti menyebalkan ketika ArcMap mencoba menjadi, um, membantu bahkan ketika Anda benar-benar tidak menginginkannya.

Satu solusi yang saya temukan adalah membuat set data sementara baru, dan menambahkan beberapa poin dengan nilai minimum dan maksimum yang Anda tahu akan Anda butuhkan dalam output - pastikan untuk mencakup seluruh jajaran.

Buat simbologi Anda berdasarkan dataset palsu ini dan simpan simbologi ini dalam file layer :

masukkan deskripsi gambar di sini

... lalu Impor simbologi dari file * .lyr ke set data asli Anda:

masukkan deskripsi gambar di sini

Stephen Lead
sumber
1
Solusi ini tidak setampan saya. Saya beralih ke jawaban Anda.
hfisch
Terima kasih, bekerja seperti pesona jika Anda membaca semua dialog yang melemparkan Anda dengan cukup hati-hati.
Luuklag
6

@ChrisW berkata:

Sejauh yang saya tahu dan dapat menemukan bukti, Anda tidak dapat menetapkan rentang klasifikasi di bawah nilai minimum dalam data.

Ini membuat saya berpikir, dan saya benar-benar menemukan cara untuk mengatur kisaran klasifikasi di bawah nilai minimum. Masalah asli saya dibuat berdasarkan fakta bahwa kisaran klasifikasi terendah diperlukan untuk memuat nilai minimum dalam data.

Namun, tidak ada batasan seperti itu ditempatkan pada rentang klasifikasi lain yang digunakan. Oleh karena itu, seseorang dapat memaksa dua (atau lebih) rentang klasifikasi untuk jatuh di bawah nilai minimum dalam data. Salah satunya akan mewakili kisaran klasifikasi minimum yang disukai, sementara yang lain akan berfungsi sebagai rentang dummy untuk mengandung nilai minimum.


Inilah titik awal yang saya gunakan untuk klasifikasi. Masing-masing lapisan dalam empat kerangka data diklasifikasikan menggunakan interval 10 kaki yang ditentukan tanpa memperhatikan rentang data lapisan lainnya.

Titik pangkal

Rentang klasifikasi maksimum di salah satu dari empat kerangka data adalah "0,01 hingga 10,00", dan rentang klasifikasi minimum adalah "-110,62 hingga -110,00" (yang idealnya akan menjadi "-119,00 hingga -110,00"). Karena saya berusaha mempertahankan interval 10 kaki, ini berarti total 13 interval.


Saya menggunakan bingkai data kiri atas sebagai sumber untuk legenda generik saya. Saya mulai dengan membuka Properti Lapisan dan pergi ke Klasifikasi. Karena saya ingin 13 interval terlihat, saya harus memilih 14 interval untuk memiliki rentang dummy yang tersedia. Saya melakukan ini dengan memilih Manual sebagai metode dan membuat 14 kelas.

Langkah 1a

Dengan rentang yang diatur dalam kondisi saat ini (dengan nilai terbesar di bagian atas), setiap perubahan pada nilai yang dimasukkan dalam rentang tidak akan memengaruhi apa pun selain rentang di bagian paling bawah daftar. @ChrisW menunjukkan bahwa ini bukan bug, melainkan fitur bagaimana ArcGIS menetapkan nilai break. Ini adalah jendela Layer Properties setelah memilih metode Manual tetapi sebelum membuat perubahan apa pun pada rentang:

Langkah 1b


Untuk mengatasi masalah ini, saya sementara membalikkan penyortiran lapisan. Pada titik ini, rentang terendah ada di atas, sedangkan rentang tertinggi ada di bawah.

Langkah 2a

Sekarang, jika saya gulir ke bagian bawah daftar rentang (di mana rentang tertinggi ditampilkan) dan mulai mendefinisikan interval yang tepat dari bawah ke atas, ArcGIS akan mengingat rentang yang saya tentukan:

Langkah 2b

Dalam gambar ini, saya telah menetapkan nilai teratas dalam 5 dari 14 rentang, dimulai dengan nilai terbesar (10.00) dan bekerja ke bawah.


Ketika saya mencapai bagian atas daftar dan mengedit rentang ke-14 saya, nilai minimumnya masih akan didefinisikan sebagai nilai minimum dalam lapisan, karena tidak ada rentang lain di bawahnya untuk menarik nilai dari:

Langkah 3a

Ini tidak masalah, karena itu adalah rentang dummy yang saya sebutkan sebelumnya. Pada titik ini, saya membalikkan penyortiran lapisan sekali lagi, sehingga rentang tertinggi lagi di atas. Gambar di bawah ini menunjukkan legenda yang diperbarui untuk bingkai data kiri atas, yang sekarang mencerminkan rentang yang tepat untuk keempat frame data, termasuk rentang boneka ke-14:

Langkah 3b


Langkah selanjutnya adalah menyebarkan perubahan ini ke seluruh frame data. Namun, beberapa masalah tampak jelas ketika saya mencoba mengimpor simbologi ke bingkai data lainnya:

Langkah 4a

Seperti yang ditunjukkan oleh @ChrisW, ini disebabkan oleh keputusan saya untuk memulai dengan layer yang tidak memiliki nilai minimum absolut di semua frame data. Tampaknya bingkai data tidak akan menampilkan rentang apa pun yang berada di bawah rentang yang ada dalam bingkai data asli.

Jika Anda memulai dengan layer seperti yang saya lakukan, solusi terbaik yang saya temukan untuk ini adalah mengulangi langkah-langkah yang saya bahas di atas untuk masing-masing dari empat frame data; secara manual mendefinisikan 14 kelas, membalikkan penyortiran kelas, mendefinisikan ulang bagian atas setiap rentang, lalu membalikkan penyortiran untuk menempatkan rentang tertinggi di bagian atas.

Namun, solusi paling sederhana adalah memulai proses klasifikasi dengan layer yang memiliki nilai terkecil. Opsi Impor Simbologi kemudian dapat digunakan dengan benar untuk bingkai data lainnya.

Langkah 4b


Akhirnya, saya bisa menghapus tiga legenda dan menyembunyikan rentang dummy dalam legenda yang tersisa atau mengubahnya menjadi grafik dan menghapus rentang dummy.

Ending Point

hfisch
sumber
Senang Anda bisa menyelesaikan sesuatu. Saya mengedit jawaban saya untuk memperbaiki pernyataan salah yang Anda kutip (saya tidak yakin mengapa saya mengatakan itu - gambar asli Anda menunjukkan Anda bisa).
Chris W
Sebenarnya, saya kesulitan mereplikasi ini. Untuk membuat jawaban sedikit lebih bermanfaat, bisakah Anda mengedit dengan tepat bagaimana Anda membuat rentang di bawah nilai minimum?
Chris W
@ Chris Saya telah sangat memperluas prosesnya. Beri tahu saya jika masih tidak masuk akal!
hfisch
2
Terima kasih atas pembaruannya. Saya menemukan masalah - ada perbedaan yang signifikan dalam cara mendefinisikan istirahat ditangani antara klasifikasi dan dialog simbologi yang berkaitan dengan apa yang Anda pertanyakan sebagai bug. Pada dasarnya ia mengurutkan nilai break, tetapi break terendah di bawah nilai min selalu dikaitkan dengan nilai min dan muncul di bagian atas (atau bawah tergantung pada jenis). FYI, sementara Anda tidak dapat menentukan jumlah total Anda dapat menambah atau menghapus kelas dalam Manual dengan mengklik kanan pada histogram.
Chris W
1
Sejauh menerapkan simbologi ke bingkai data lainnya, seperti yang disebutkan dalam jawaban saya coba mulai dengan data yang memiliki nilai terendah (-110,62) menggunakannya untuk simbologi awal. Saya perhatikan pada gambar ketiga hingga terakhir, nilai min class dummy masih -61,01 untuk keempatnya, yang saya percaya adalah mengapa tidak ada yang di bawah ini yang membuat meskipun ada kelas untuk itu. Jika Anda mulai dengan yang terendah dan nilai min lebih tinggi, saya yakin itu akan menyertakan atau memunculkan min simbologi ke data min ketika Anda menerapkan simbologi ke set data lainnya.
Chris W
5

Saya menemukan masalah yang sama, saya pikir .... Jika saya mengerti benar Anda memiliki dua (atau lebih) dataset dan Anda perlu mendapatkan rentang skala dataset agar sesuai sehingga perbandingan dapat dibuat.

Saya menyelesaikannya dengan:

  1. Buat dataset pertama Anda sesuai keinginan. Idealnya dengan rentang data terbesar hanya agar simbol dapat disalin lebih mudah ke dataset kedua (rentang yang lebih kecil).

masukkan deskripsi gambar di sini

  1. Buat Anda dataset kedua tetapi jangan khawatir tentang simbologi apa pun dulu. Pada dataset kedua, Layer Properties> tab Symbology memilih jenis klasifikasi yang sama dengan dataset pertama, untuk contoh ini saya menggunakan Categories> Unique Values lalu klik tombol Add All Values .

masukkan deskripsi gambar di sini

  1. Nilai kelompok sehingga mereka jatuh ke dalam rentang yang sesuai yang digunakan dalam dataset pertama. Pilih semua nilai untuk kategori tertentu dan kemudian klik kanan dan pilih Grup . Dua kategori teratas telah dikelompokkan dalam gambar di bawah ini, empat katup yang disorot akan "ditarik" ke dalam kelompok ketiga.

masukkan deskripsi gambar di sini

  1. Saya merasa lebih mudah pada tahap ini untuk memberi label ulang kategori sehingga lebih mudah untuk dilacak. Pada titik ini Anda dapat melihat lima dari tujuh kategori terisi.

masukkan deskripsi gambar di sini

  1. Akhirnya (hampir) dan inti dari masalah ini, untuk menambahkan kategori kosong yang ada di luar rentang data dari dataset kedua. Pada tab Layer Properties> Symbology klik tombol Add Values dan isi dengan kategori yang diperlukan di atas dan di bawah rentang data seperti yang diperlukan.

masukkan deskripsi gambar di sini

  1. Terakhir beri label ulang kategori kosong baru sehingga sesuai dengan dataset pertama dan kemudian warnai kembali setiap kategori sehingga cocok dengan yang pertama.

masukkan deskripsi gambar di sini

Maaf jika itu sedikit terlalu disederhanakan atau bahkan praktik salah / buruk. Saya sudah lama menjadi pengguna GIS Stack Exchange dan berpikir tentang waktu saya mulai berkontribusi jadi ini adalah posting pertama saya!

Nige
sumber
2
Maaf baru menyadari bahwa OP adalah untuk Data Lulus dan setelah pemeriksaan cepat sekarang menyadari solusi saya tidak valid. Saya akan membaca lebih dekat lain kali ....
Nige
4
  1. Pilih jumlah kelas yang Anda inginkan.
  2. Klik kanan pada simbol dan pilih save class breaks
  3. ini menyimpan file xml yang dapat Anda buka dan edit dalam editor teks apa pun
  4. edit istirahat kelas yang Anda inginkan dalam file xml dan simpan
  5. klik kanan pada simbol lagi dan impor file istirahat kelas yang baru diedit

DIBUAT

Craig
sumber
3

Sementara klasifikasi menggunakan rentang yang sama, data tidak berbagi rentang. Saya pikir solusinya di sini adalah untuk menyelesaikannya dalam tugas legenda dan warna, dan bukan klasifikasi yang sebenarnya.

Mulailah dengan hasil kiri bawah Anda, dan ubah legenda itu menjadi grafik. Edit teks untuk mendapatkan rentang yang Anda inginkan. Saya perhatikan semua gambar Anda yang lain memiliki kisaran 10 unit, tetapi yang ini melakukan 20 dan tumpang tindih. Misalnya, tiga gambar memiliki -49,99 hingga -40,00 tetapi kiri bawah memiliki -49,99 hingga -60,00, dan kelas berikutnya adalah -59,99 hingga -70,00. Gambar juga rentang yang berlawanan - yaitu tiga adalah nilai yang lebih rendah di sebelah kiri sedangkan kiri bawah adalah nilai yang lebih rendah di sebelah kanan (yang berbunyi jauh lebih alami bagi saya, meningkatkan angka jika bukan nilai dari kiri ke kanan). Mungkin masalah-masalah itu perlu diatasi terlebih dahulu untuk menghemat waktu daripada hanya mengedit teks manual.

Setelah Anda memiliki legenda dengan rentang dan jalur warna yang Anda sukai, Anda dapat kembali ke dua lapisan pertama Anda (yang sudah diklasifikasikan dengan benar) dan secara manual mengedit setiap tambalan warna rentang untuk mencocokkan warna yang Anda pilih untuk rentang dalam legenda. . Karena dua lapisan tidak akan menampilkan legenda mereka sendiri, tidak masalah bahwa di salah satu dari mereka kisaran sebenarnya -89,99 hingga -80,00 dan yang lain adalah -81,64 hingga -80,00 karena keduanya akan memiliki warna yang sama .

Namun perlu dicatat bahwa ini akan menyiratkan kedua set data memiliki rentang yang sama, yang tidak mereka miliki. Bahkan sepertinya akan ada dua tambalan warna yang hanya digunakan dalam satu peta masing-masing (tertinggi dan terendah). Anda mungkin ingin meletakkan catatan di setiap peta yang memberikan rentang data absolut mereka. Saya juga akan menggunakan 'untuk' daripada '-' di antara rentang, karena dengan nilai negatif itu agak membingungkan untuk dibaca.


Solusi alternatif:

Sejauh yang saya tahu dan dapat menemukan bukti, Anda harus memiliki kelas yang dimulai pada nilai minimum Anda. Anda dapat secara manual menambahkan kelas (bahkan yang kosong) di atas atau di bawah rentang data Anda, tetapi satu kelas harus dimulai dengan nilai minimum.

Jadi, atur simbologi Anda menggunakan raster yang berisi nilai terendah / minimum dari semua raster. Dapatkan ini disimbolkan. Anda kemudian dapat mengedit label kelas untuk mengatakan apa pun yang Anda inginkan. Jadi, jika nilai terendah Anda adalah 0,4, Anda masih bisa mengubah label menjadi 0.

Setelah Anda selesai dan mengatur dengan ramp warna yang Anda suka, simpan file lyr dari simbologi. Anda kemudian dapat membuka raster lainnya dan menerapkan simbologi yang sama. Karena raster lain semua akan memiliki nilai yang lebih tinggi, mereka harus mengklasifikasikan dengan benar dan hanya nilai minimum itu sendiri yang akan meningkat (atau mungkin kelas itu akan turun jika tidak ada yang termasuk di dalamnya). Yang mana lagi Anda dapat mengubah label kelas ke lantai kelas bukan nilai aktual jika itu tidak terbawa dengan simbologi.

Chris W
sumber
Anda sebenarnya dapat melewatkan langkah .lyr dan cukup mengklasifikasikan satu raster sesuai keinginan (rentang, warna, dll.) Lalu menggunakan fungsi simbologi impor untuk menerapkan ini pada semua raster lainnya. Buka Properti Lapisan, pilih tab Simbologi, pilih Ikon Folder @ kanan atas (yang akan menunjukkan Impor ketika Anda mengarahkan kursor ke sana) - dan kemudian pilih raster yang ingin Anda tiru.
JWallace
@JWallace Benar, asalkan raster Anda yang lain sudah dimuat ke dokumen peta yang sama (mungkin dataframe yang sama - tidak dapat mengingat jika itu akan memungkinkan Anda mengimpor simbologi dari yang berbeda) dan Anda bersedia membiarkan pekerjaan Anda dalam mengatur simbologi hanya berada di mxd (dan Anda mungkin menyimpan cadangan jika Anda mengubah hal-hal). Saya punya jawaban grafis yang mencakup langkah-langkah itu di sini .
Chris W
Tangkapan bagus pada unit aneh untuk hasil kiri bawah. Saya pikir itu adalah artefak dari upaya saya untuk menentukan rentang secara manual, dan saya mendefinisikannya dalam urutan terbalik. Penggunaan 'untuk' bukan '-' juga bagus. Masalah yang saya miliki dengan solusi asli Anda adalah bahwa itu membutuhkan banyak pekerjaan manual dengan pewarnaan dan pelabelan, dan saya perlu menghasilkan serangkaian angka-angka ini. Solusi alternatif Anda memberi saya beberapa ide. Saya rasa saya menemukan cara untuk membuatnya sedikit lebih elegan dan menghapus masalah nilai minimum.
hfisch
3

Solusi yang lebih mudah tetapi juga kotor yang telah bekerja untuk saya. Jangan lupa untuk membuat cadangan data asli Anda.

  1. Buka Tabel Atribut dan Mulai Editing
  2. Edit dua nilai apa pun secara manual sehingga nilai minimum dan maksimum yang Anda inginkan untuk klasifikasi Anda disertakan (ingat nilai aslinya)
  3. Simpan dan Hentikan Pengeditan
  4. Klasifikasi berdasarkan ekstrema baru
  5. Mulai lagi dan ganti nilai yang diubah secara manual dengan nilai aslinya
  6. Klasifikasi yang ada tidak akan terpengaruh
Alex_A
sumber
2

Saya percaya ini tentang legenda fitur tetapi bukan raster. Jika ini tentang raster, abaikan saran saya. Saya biasanya menggunakan ini:

  • Gabungkan 2 (atau lebih shapefile) ANAK menjadi satu, sebut saja KELUARGA
  • buat legenda untuk KELUARGA
  • impor simbologi untuk setiap ANAK dari KELUARGA

Semoga ini bisa membantu, FP

FelixIP
sumber
Sadarilah bahwa ini sangat mirip dengan JWallace
FelixIP
2

Saya melakukan solusi berikut. Saya membuat jeda kelas saya sendiri dalam dokumen XML dan memuatnya ke simbologi rahasia kedua lapisan.

  1. Untuk mendapatkan templat class break-XML-document: di layer properties klik kanan pada rentang klasifikasi dan kemudian "save class breaks".
  2. Edit dokumen XML: masukkan jeda kelas dalam dokumen XML, Anda juga dapat memasukkan angka yang akan keluar dari jangkauan dataset Anda.
  3. Memuat jeda kelas XML: me yang sama dengan tempat Anda menyimpan templat (lihat 1), klik "muat jeda kelas"

    Langkah 1 dan 3

Langkah 2

Maja Ott
sumber
1
Versi ArcMap apa? Saya tidak memiliki opsi untuk menyimpan jeda kelas di v10.6: i.imgur.com/znDqUpQ.png
matt wilkie
@ mattwilkie Ini bukan pertanyaan tentang versi tetapi tipe data. Anda sedang melihat dialog simbologi untuk data vektor, dan menyimpan jeda kelas seperti ini hanya tersedia untuk data raster. Jawaban ini pada dasarnya menggandakan Craig, tetapi dengan ilustrasi.
Chris W
1

Cara alternatif adalah menggabungkan semua nilai dari setiap lapisan menjadi satu lapisan, dengan menggunakan cara ini Anda akan memiliki nilai minimum dan maksimum pada lapisan.

Ilustrasi:
1. Menggabungkan nilai dari semua lapisan ke dalam satu kolom (beri nama All_Vals) dalam lembar excel

  1. di sebelah kolom All_Vals tambahkan dua kolom baru bernama X dan Y dan isi dengan nol.

  2. Dalam arcmap, tambahkan lembar excel sebagai tabel dan gunakan itu untuk membuat kelas fitur titik dengan menggunakan perintah / alat data display xy kemudian ekspor layer acara ke shapefile (saya akan beri nama NB_Point) dan menambahkannya ke bingkai data.

4. Konversikan file bentuk NB_Point menjadi banyak tipe kelas fitur dari layer Anda, misalnya jika tipe layer fitur Anda adalah poligon, gunakan alat buffer untuk membuat kelas fitur poligon dari NB_Point shapefile (sebut saja sebagai NB_polygon).

  1. Sekarang yang harus Anda lakukan adalah mengeklik kanan layer terakhir NB_polygon dan menerapkan simbologi warna bertingkat menggunakan klasifikasi jeda natural, mengekspornya ke file .lyr untuk menggunakannya sebagai layer input saat menggunakan utilitas simbologi impor layer untuk setiap dari lapisan aslinya.

Semoga ini bisa membantu dan maaf untuk kesalahan ejaan.

BMB
sumber