Mewarnai ribuan poligon sehingga masing-masing berbeda dari tetangganya?


28

Saya menggunakan ArcGIS 10, dan saya memiliki lapisan blok sensus 2010, grup blok, dan traktat. Ada ribuan poligon di lapisan ini.

Saya ingin mewarnai mereka sehingga masing-masing berbeda dari tetangganya, tetapi yang bisa saya pikirkan adalah bagaimana memberi masing-masing warna yang berbeda. Warna setiap poligon tidak terlalu penting; Saya hanya ingin membedakan masing-masing dari tetangganya berdasarkan warna, bukan dengan perbatasan.

Atau apakah itu sesuatu yang hanya Anda lihat di peta sekolah dasar 50 Amerika Serikat?


9
(+1) Secara teknis, ArcGIS memang memberikan warna yang berbeda, karena dapat memilihnya secara acak di antara (saya percaya) palet 2 ^ 24 dan karena itu kemungkinan dua tetangga mendapatkan warna yang persis sama rendah. Ini menunjukkan bahwa Anda benar-benar ingin memperbaiki sejumlah kecil warna yang mudah terdiferensiasi dan menetapkannya sehingga tidak ada poligon tetangga yang mendapatkan warna yang sama. Ada algoritma untuk melakukan ini selama lima atau lebih warna ketika semua poligon terhubung dan hanya terhubung. (Manifold memiliki prosedur
bawaan

6
Ada juga sebuah plugin di QGIS yang disebut "topocolour" yang menyediakan kemampuan ini. Anda mungkin dapat melihat kode mereka dan membuat sendiri sesuatu jika Anda tidak dapat menemukan utilitas kalengan di ArcGIS.
RyanDalton

9
Saya menulis plugin topocolour yang disebutkan di atas! Saya pikir itu mungkin berjuang dengan ribuan poligon, untuk menyelesaikan semua kedekatan. Saya juga baru-baru ini menulis versi dalam R untuk berjaga-jaga kalau-kalau ada yang ingin mewarnai peta dengan R seperti itu. Saya tidak akan menyentuh ArcGIS sekalipun!
Spacedman

2
BTW, ArcGIS sekarang memiliki prosedur internal yang efisien untuk menghitung adjacencies poligon. Saya ingat melakukan semua blok dalam keadaan (sekitar setengah juta dari mereka) dalam waktu sekitar 30 menit: 15 untuk calcs, 15 untuk menulis file adjacency. Dengan mesin yang lebih baru, pekerjaan akan berjalan 5-10 kali lebih cepat. Jadi Anda bisa meminta kode R Anda mengunyah file adjacency yang diproduksi oleh ArcGIS, yang terdengar seperti cara optimal untuk menggunakan kedua platform untuk masalah ini.
Whuber

2
"Empat warna sudah cukup" (seseorang harus mengatakannya).
barrycarter

Jawaban:




0

Saya telah membuat kode alat ArcPy yang memberikan atribut dari daftar yang disediakan ke poligon menggunakan tabel lingkungan sehingga tidak ada tetangga yang memiliki warna yang sama. Biasanya berhasil menggunakan kurang dari enam warna menggunakan heuristik pewarnaan grafik sederhana (atau, jika perlu, dapat menetapkan warna secara acak, masih menghormati lingkungan).

Kotak alat bersama dengan beberapa dokumentasi dapat diunduh dari http://geocite.ic.cz/coloring.zip .



0

Lakukan pengisian Banjir pada poligon di Python menambahkan sejumlah perubahan warna untuk panggilan rekursif ke fungsi pengisian banjir, mengubah warna saat Anda pergi.


-2

Anda dapat menerapkan klasifikasi simbologi pada bidang pengidentifikasi unik / GWID.


9
Ini tidak akan menjamin warna yang unik di seluruh poligon yang berdekatan

Seharusnya karena nilai RGB dapat berkisar dari 0 hingga 255 untuk masing-masing, yang berarti ada berbagai kombinasi untuk nilai R, B, dan G. jadi secara teknis Anda tidak akan memiliki rona yang sama, kecuali Anda memiliki lebih dari satu miliar catatan unik.
GISdork

4
Teknik ini tidak akan menjamin bahwa dua poligon yang berdekatan memiliki warna yang berbeda untuk "membedakan setiap [poligon] dari tetangganya". Meskipun kombinasi RGB unik, mereka mungkin terlihat sangat mirip. Jadi jika dua poligon yang berdekatan diberi nilai yang sama, tidak akan mudah / mungkin untuk membedakannya. Silakan lihat komentar pertama whuber pada pertanyaan awal.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.