แสดงผลบรรทัดที่ทับซ้อนกัน


24

ฉันกำลังสร้างแผนที่ที่มีข้อมูลเกี่ยวกับการขนส่งสาธารณะ: รถบัสรถรางและอื่น ๆ แผนที่จะมีเลเยอร์ที่มีตัวอย่างเช่นสายรถราง แต่ละบรรทัดมีสีของตัวเองและมีรูปทรงเรขาคณิตของสตริงบรรทัด

ปัญหาคือหลายบรรทัดมีส่วนที่ทับซ้อนกันซึ่งมากกว่าหนึ่งสายรถรางครอบคลุมส่วนเดียวกัน เพื่อแสดงสิ่งนี้แก่ผู้ใช้ฉันต้องการให้เส้นวิ่งขนานกันแทนที่จะถูกวาดทับกัน ตัวอย่างเช่นดูว่า Google แผนที่แสดงเส้นทางรถไฟใต้ดินนิวยอร์กได้อย่างไร

ฉันสงสัยว่านี่เป็นปัญหาที่พบได้บ่อยในวิชาเขียนแผนที่ แต่ไม่ทราบว่าฉันควรค้นหาคำศัพท์ใด

ฉันใช้ PostGIS / GeoServer / OpenLayers เป็นสแต็กของฉัน แต่โซลูชันโอเพ่นซอร์สใด ๆ ก็ยอมรับได้


มีปัญหาเดียวกันกับรถไฟใต้ดินสาย คุณพบ / ใช้งานโซลูชันที่ยอมรับได้หรือไม่?
Geert-Jan

น่าเสียดายที่ไม่มี ลูกค้าไม่ได้จัดลำดับความสำคัญนี้และเราทำการแฮกที่น่ารังเกียจเพื่อป้องกันการทับซ้อนกัน
Liedman

คำตอบ:


7

หากคุณกำลังสนใจในการเรียนรู้เพิ่มเติมเกี่ยวกับพื้นที่นี้ปัญหาการตั้งชื่อแทนที่การทำแผนที่และแง่มุมหนึ่งของหลักเกณฑ์การทำแผนที่

บทความสองสามข้อเกี่ยวกับการกำจัดและแนวทางในการจัดการปัญหา:


"แทนที่"! นั่นคือคำอื่น ๆ ที่ฉันพยายามจะจำ เรามีเครื่องมือใน FME (ขออภัย - ไม่ใช่โอเพนซอร์ซ) ที่ "แก้ปัญหาความขัดแย้งใกล้เคียงระหว่างคุณลักษณะที่ใช้อัลกอริทึมการกระจัดแบบ Nickerson" - บางที Google ของ Nickerson จะเห็นว่าเกิดอะไรขึ้น?
มาร์คไอร์แลนด์

scholar.google.com/?hl=thสร้างลิงก์ไปยังบทความต้นฉบับ (จ่ายที่น่าเศร้าด้วยการกำแพง) และผู้คนจำนวนมากที่อ้างอิงถึง บทความที่เกี่ยวข้องบางส่วนนั้นฟรีและดูน่าสนใจ
Ian Turton

4

ปัญหานี้เป็นปัญหาที่พบได้ทั่วไปในการทำแผนที่ทั่วไป วิธีอัตโนมัติมีอยู่สำหรับสิ่งนั้น แต่ยังไม่มีการใช้งาน

วิธีการที่ใช้ " คาน " และ " งู " จะให้ผลลัพธ์ที่มีประสิทธิภาพในการแก้ปัญหาความขัดแย้งในการทำแผนที่ของข้อมูลเครือข่าย (ดูข้อมูลอ้างอิงจากscw ) นี่คือผลลัพธ์บางส่วนของอัลกอริทึมคานบนข้อมูลถนน:

ก่อน:

ข้อความแสดงแทน

หลังจาก:

ข้อความแสดงแทน

ดูเอกสารนี้และงานนำเสนอที่อธิบายวิธีการเปลี่ยนแปลงนี้

แก้ไข: ฉันไม่เคยทดสอบ แต่ดูเหมือนว่ามีบางสิ่งที่เกี่ยวข้องกับงูใน GRASS ดูที่นี่


1
มันใช้งานได้ไหมถ้าส่วนของเส้นสองเส้น (แทร็กรถบัส) มีรูปทรงเรขาคณิตที่เหมือนกันทุกประการหรือไม่
underdark

1
มันใช้กับบรรทัดที่ปิดเกินไปและไม่ควรทำงานได้ดีสำหรับบรรทัดที่ทับซ้อนกันทุกประการ จำเป็นต้องมีการปรับตัว
julien

1

ฉันไม่รู้วิธีแก้ปัญหา แต่ฉันคิดว่าคำที่คุณกำลังมองหาคือ "การแก้ไขข้อขัดแย้ง" - หัวข้อของการวางแผนที่ทั่วไป การค้นหาโดย Google เกี่ยวกับ "ความขัดแย้งของแผนที่ทั่วไป" แสดงข้อมูลที่น่าสนใจ แต่ฉันไม่รู้ว่ามีประโยชน์อะไรมากมาย


1

ในการใช้งานปัจจุบันคุณมักจะพบ "Offset" หรือ "Dislocation" การใช้สแต็กปัจจุบันของคุณมันดูยากที่จะได้รับเส้นคู่ขนานโดยอัตโนมัติ:

วิธีสรุป: วิธีที่ง่ายที่สุดที่ฉันรู้คือใช้ UMN Mapserver และค่า Offset ที่นั่น ตัวอย่างสไตล์สำหรับ mapfile ของคุณ:

STYLE
 SYMBOL 7
 OUTLINECOLOR 160 160 160
 SIZE 5
 OFFSET 2 -99 # <-- This will offset the line to the right.
 ANTIALIAS FALSE
END # STYLE

0

หากคุณกำลังวาดเลเยอร์ของบรรทัดที่ทับซ้อนกันคุณมีหลายตัวเลือกเพื่อให้ผู้ดูเห็นทุกบรรทัด

  1. ความกว้าง - คุณเปลี่ยนความกว้างของเส้นระหว่างเลเยอร์และใส่บรรทัดที่กว้างขึ้นที่ด้านล่าง
  2. ความทึบ / ความโปร่งใส - คุณสามารถทำให้แต่ละเลเยอร์บรรทัดทึบแสงบางส่วนเพื่อให้คุณสามารถ 'ทะลุ' แต่ละเลเยอร์
  3. Offset - คุณสามารถชดเชยสัญลักษณ์เส้นที่แสดงถึงคุณสมบัติเส้นที่เกิดขึ้นจริงกับด้านใดด้านหนึ่งของรูปทรงเรขาคณิตที่แท้จริงของบรรทัด แต่ละชั้นสามารถชดเชยด้วยจำนวนที่แตกต่างกันและในทิศทางที่แตกต่างกันเพื่อให้เห็นทุกชั้น
  4. เส้นสามารถแสดงโดยชุดสัญลักษณ์สัญลักษณ์ที่มีช่องว่างที่กำหนดระหว่างสัญลักษณ์ โดยการเปลี่ยนสัญลักษณ์สีสัญลักษณ์ขนาดสัญลักษณ์และช่องว่างระหว่างเลเยอร์บรรทัดที่แตกต่างกันคุณควรทำให้เลเยอร์บรรทัดแต่ละรายการแยกแยะได้

ฉันไม่ได้ใช้ GeoServer แต่ฉันรู้ว่า MapServer มีฟังก์ชั่นในการทำสิ่งเหล่านี้ทั้งหมด มีโอกาสที่ GeoServer จะทำเช่นกัน


ดูเหมือนว่าเราต้องการ # 3 แต่สำหรับคุณลักษณะที่ทับซ้อนกันเท่านั้น เป็นไปได้ไหม
mwalker

2
MapServer และเซิร์ฟเวอร์แผนที่บนเว็บอื่น ๆ และ GIS ทำการแก้ไขข้อขัดแย้งสำหรับป้ายกำกับ แต่ฉันไม่ทราบถึงคุณลักษณะที่จะช่วยให้คุณทำสิ่งนี้ได้อย่างรวดเร็ว แน่นอนถ้าข้อมูลของคุณค่อนข้างคงที่คุณสามารถประมวลผลข้อมูลของคุณล่วงหน้าเพื่อระบุว่าเส้นที่มาจากเลเยอร์ที่แตกต่างกันตัดกัน (หรืออยู่ในช่วงที่ยอมรับได้) และจำแนกข้อมูลตามสิ่งนี้ เครื่องมือแสดงผลแผนที่ของคุณสามารถใช้สัญลักษณ์ 'แทนที่' ตามคุณลักษณะในข้อมูลของคุณ
DavidF
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.