Binlerce çokgen boyayın, böylece her biri komşularından farklı mıydı?


28

ArcGIS 10 kullanıyorum ve 2010 nüfus sayımı blokları, blok grupları ve izleri katmanlarım var. Bu katmanlarda binlerce çokgen var.

Onları, her biri komşularından farklı olacak şekilde renklendirmek istiyorum, ancak tek bulabildiğim, her birine ayrı bir renk vermektir. Her çokgenin rengi gerçekten önemli değil; Sadece her birini komşusundan komşularından ziyade renklerle kolayca ayırt etmek istiyorum.

Yoksa bu yalnızca 50 ABD’nin ilköğretim okul haritasında gördüğünüz bir şey mi?


9
(1) Teknik olarak, ArcGIS yapar o (sanırım) arasında rastgele seçmek çünkü, 2 ^ 24 ve dolayısıyla alma iki komşu şansı bir palet farklı renkler sağlamak tam olarak aynı renk düşüktür. Bu, çok az sayıda kolayca ayırt edilebilen renkleri düzeltmenizi ve bunları atamanızı sağlar, böylece komşu çokgenler aynı rengi alamaz. Tüm çokgenler bağlandığında ve basitçe bağlandığında bunu beş veya daha fazla renk için yapacak bir algoritma vardır. (Manifold, herhangi bir poligon katmanını beş renklendirmek için yerleşik bir prosedür vardır :-).)
whuber

6
QGIS'de "topocolour" adı verilen ve bu özelliği sağlayan bir eklenti de var . ArcGIS’te korunmuş bir yardımcı program bulamazsanız kodlarına bakabilir ve kendiniz bir şeyler oluşturabilirsiniz.
RyanDalton

9
Yukarıda belirtilen topocolour eklentisini yazdım! Tüm komşuları çözmenin binlerce poligonla mücadele edebileceğini düşünüyorum. Ayrıca son zamanlarda R'de bir versiyon yazdım, sadece birinin R'yi bu şekilde renklendirmek istemesi durumunda. Yine de ArcGIS'e dokunmayacağım!
Spacedman

2
BTW, ArcGIS, şimdi çokgen bitişiklerinin hesaplanması için etkin iç prosedürlere sahiptir. Bir eyalet içindeki tüm blokları (yaklaşık yarım milyon) 30 dakika içinde yaptığımı hatırlıyorum: hesaplamalar için 15, bitişik dosyayı yazmak için 15. Daha yeni makinelerle iş 5-10 kat daha hızlı geçiyordu. Böylece, R kodunuzun ArcGIS tarafından üretilen ve bu sorun için her iki platformu kullanmanın en uygun yolu gibi görünen bir bitişik dosya üzerinde çiğnenmesini sağlayabilirsiniz.
whuber

2
"Dört renk yeterli" (birileri söylemek zorunda kaldı).
barrycarter

Yanıtlar:




0

Hiçbir komşunun aynı rengi paylaşmaması için mahalle tablosunu kullanarak sağlanan listeden çokgenlere bir özellik atanan bir ArcPy aracını kodladım. Genellikle sezgisel basit bir grafik renklendirme kullanarak altı renkten daha az renk kullanmayı başarır (veya gerekirse renkleri rastgele, hatta mahalleye saygılı olarak atayabilir).

Bazı belgelerle birlikte araç kutusu http://geocite.ic.cz/coloring.zip adresinden indirilebilir .



0

Python'daki çokgenler üzerinde bir Sel dolgusu gerçekleştirin, sel doldurma işlevine bir özyinelemeli çağrıya belirli bir miktar renk değişikliği ekleyerek rengi ilerledikçe değiştirin.


-2

semboloji sınıflandırmasını benzersiz bir tanımlayıcı / GWID alanına uygulayabilirsiniz.


9
Bu, komşu çokgenler arasında benzersiz bir renk garanti etmez

RGB değeri, her biri için 0 ila 255 arasında değişebildiğinden, R, B ve G değerleri için çok çeşitli kombinasyonlar olduğu anlamına gelmelidir. Bu nedenle, teknik olarak bir milyardan fazla benzersiz kaydınız yoksa, aynı renk tonuna sahip olmazsınız.
GISdork

4
Bu teknik, iki komşu poligonun "her bir poligonu komşusundan kolayca ayırt etmek" için farklı renklere sahip olduğunu garanti etmeyecektir. RGB kombinasyonları benzersiz olsa da, çok benzeyebilirler. Dolayısıyla, iki komşu poligona benzer değerler atanırsa, bunları ayırt etmek kolay / mümkün olmayacaktır. Lütfen, orijinal soru hakkındaki whuber'in ilk yorumuna bakınız.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.