การระบายสีรูปหลายเหลี่ยมหลายพันดังนั้นแต่ละคนแตกต่างจากเพื่อนบ้านหรือไม่


28

ฉันใช้ ArcGIS 10 และฉันมีเลเยอร์ของบล็อกการสำรวจสำมะโนประชากรปี 2010 กลุ่มบล็อกและผืนผ้าใบ มีรูปหลายเหลี่ยมหลายพันในชั้นเหล่านี้

ฉันต้องการระบายสีพวกเขาเพื่อให้แต่ละคนแตกต่างจากเพื่อนบ้าน แต่สิ่งที่ฉันคิดได้ก็คือจะให้สีที่แตกต่างกันอย่างไร สีของรูปหลายเหลี่ยมแต่ละรูปนั้นไม่สำคัญ ฉันแค่ต้องการแยกแยะความแตกต่างจากเพื่อนบ้านโดยใช้สีแทนที่จะเป็นเส้นขอบ

หรือว่าเป็นสิ่งที่คุณเห็นในแผนที่โรงเรียนประถมของ 50 ประเทศสหรัฐอเมริกาเท่านั้น


9
(+1) เทคนิค ArcGIS ไม่ให้สีที่แตกต่างกันเพราะมันสามารถเลือกพวกเขาสุ่มหมู่ (ผมเชื่อว่า) จานสีของ 2 ^ 24 และดังนั้นโอกาสของสองประเทศเพื่อนบ้านได้รับตรงสีเดียวกันอยู่ในระดับต่ำ สิ่งนี้ชี้ให้เห็นว่าคุณต้องการแก้ไขสีที่แตกต่างกันจำนวนเล็กน้อยและกำหนดให้เพื่อไม่ให้รูปหลายเหลี่ยมเพื่อนบ้านมีสีเดียวกัน มีอัลกอริทึมในการทำเช่นนี้สำหรับสีห้าสีขึ้นไปเมื่อมีการเชื่อมต่อรูปหลายเหลี่ยมทั้งหมดและเชื่อมต่อได้อย่างง่ายดาย (Manifold มีขั้นตอนการติดตั้งในห้าสีรูปหลายเหลี่ยมชั้นใด ๆ :-).)
whuber

6
นอกจากนี้ยังมีปลั๊กอินใน QGIS ที่เรียกว่า"topocolour"ที่ให้ความสามารถนี้ คุณอาจจะสามารถดูรหัสของพวกเขาและสร้างบางอย่างด้วยตัวคุณเองหากคุณไม่พบโปรแกรมอรรถประโยชน์กระป๋องใน ArcGIS
RyanDalton

9
ฉันเขียนปลั๊กอิน topocolour ดังกล่าวแล้ว! ฉันคิดว่ามันอาจจะต่อสู้กับรูปหลายเหลี่ยมหลายพันเพื่อที่จะได้ผลลัพท์ทั้งหมด ฉันเพิ่งเขียนเวอร์ชันใน R เมื่อไม่นานมานี้ในกรณีที่ใครก็ตามต้องการระบายสีแผนที่ด้วย R ฉันจะไม่แตะต้อง ArcGIS!
Spacedman

2
BTW, ArcGIS มีขั้นตอนภายในที่มีประสิทธิภาพในขณะนี้สำหรับการคำนวณการเติมรูปหลายเหลี่ยม ฉันจำได้ว่าทำบล็อคทั้งหมดภายในสถานะ (ประมาณครึ่งล้านบล็อก) ในเวลาประมาณ 30 นาที: 15 สำหรับ calcs และ 15 สำหรับการเขียนไฟล์ adjacency ด้วยเครื่องจักรที่ใหม่กว่างานจะเร็วขึ้น 5-10 เท่า ดังนั้นคุณสามารถให้โค้ด R ของคุณเคี้ยวในไฟล์ adjacency ที่สร้างโดย ArcGIS ซึ่งฟังดูเป็นวิธีที่ดีที่สุดในการใช้ทั้งสองแพลตฟอร์มสำหรับปัญหานี้
whuber

2
"สี่สีพอเพียง" (มีคนบอกว่ามัน)
barrycarter

คำตอบ:




0

ฉันเขียนโค้ดเครื่องมือ ArcPy ที่กำหนดแอตทริบิวต์จากรายการที่มีให้กับรูปหลายเหลี่ยมโดยใช้ตารางพื้นที่ใกล้เคียงเพื่อไม่ให้เพื่อนบ้านแบ่งปันสีเดียวกัน มันมักจะจัดการให้ใช้น้อยกว่าหกสีโดยใช้ฮิวริสติกการระบายสีกราฟอย่างง่าย (หรือถ้าจำเป็นก็สามารถกำหนดสีแบบสุ่ม

ร่วมกันกับกล่องเอกสารบางอย่างสามารถดาวน์โหลดได้จากhttp://geocite.ic.cz/coloring.zip


ดูเพิ่มเติมได้ที่นี่: gis.stackexchange.com/questions/54029/…
radouxju

0

ทำการเติมน้ำท่วมบนรูปหลายเหลี่ยมใน Python โดยเพิ่มจำนวนชุดการเปลี่ยนสีให้กับการเรียกซ้ำไปยังฟังก์ชันเติมน้ำท่วมเพื่อเปลี่ยนสีตามที่คุณไป


-2

คุณสามารถใช้การจำแนกประเภทสัญลักษณ์ในฟิลด์ตัวระบุ / GWID ที่ไม่ซ้ำกัน


9
สิ่งนี้จะไม่รับประกันสีที่ไม่เหมือนใครในรูปหลายเหลี่ยมที่อยู่ใกล้เคียง

ควรเป็นเพราะค่า RGB สามารถอยู่ในช่วงตั้งแต่ 0 ถึง 255 สำหรับแต่ละค่าซึ่งหมายความว่ามีชุดค่าผสมมากมายสำหรับค่า R, B และ G ดังนั้นโดยทางเทคนิคแล้วคุณจะไม่มีสีสันเหมือนกันเว้นแต่ว่าคุณมีบันทึกที่ไม่ซ้ำกันหลายพันรายการ
GISdork

4
เทคนิคนี้จะไม่รับประกันได้ว่ารูปหลายเหลี่ยมสองรูปที่อยู่ติดกันจะมีสีที่แตกต่างกันเพื่อ "แยกความแตกต่างของ [รูปหลายเหลี่ยม] ออกจากเพื่อนบ้าน" ได้อย่างง่ายดาย แม้ว่าชุดค่าผสม RGB จะไม่ซ้ำกัน แต่ก็อาจดูคล้ายกันมาก ดังนั้นหากรูปหลายเหลี่ยมที่อยู่ใกล้เคียงสองค่านั้นมีค่าใกล้เคียงกันมันจะไม่ง่ายเลยที่จะบอกความแตกต่าง โปรดดูความคิดเห็นแรกของ whuber ในคำถามเดิม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.