แสดงเส้นที่สร้างขึ้นจากขอบเขตแผนที่โดยใช้ QGIS?


12

ฉันวาดแผนผังการไหลของ OD โดยใช้ตัวสร้างรูปทรงเรขาคณิตของ QGIS โดยใช้นิพจน์ต่อไปนี้:

make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
           $currentfeature, 'Attribute2') ) ) ) )

ฉันปรับทุกอย่างเรียบร้อยแล้วกำหนดความกว้างของเส้นตามคุณลักษณะ

แต่เมื่อฉันซูมไปที่ "ฮับ" เส้นที่เชื่อมโยงไปยังสถานที่นอกผืนผ้าใบแผนที่จะไม่ปรากฏขึ้น ฉันเดาว่าเป็นเพราะคุณสมบัติไม่ควรปรากฏบนแผนที่

ฉันพยายามยกเลิกการเลือกตัวเลือก "คุณสมบัติคลิปเพื่อผ้าใบขอบเขต" ในเมนูขั้นสูงทั้งใน "ตัวสร้างเรขาคณิต" และในระดับ "บรรทัด" แต่ก็ยังไม่ปรากฏขึ้น

เมื่อซูมเข้าที่ฮับ

เมื่อไม่ได้ซูม

ฉันต้องการให้ทุกบรรทัดปรากฏแม้ว่าจะซูมเข้าที่ฮับ


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

อาจเป็นเพราะคุณสามารถอัปโหลดข้อมูลของคุณ (shp ... ) เพื่อให้สามารถทำซ้ำขั้นตอนของคุณและลองรับคำตอบ
César Arquero

1
Shapefile มาจากที่นี่: IGNและตารางที่เข้าร่วมจากINSEE
mamouthautapis

บางทีการแบ่งส่วนของเส้นอาจเป็นการแฮ็กเพื่อทำให้มันปรากฏบนแผนที่หากเส้นแสดงให้เห็นเพียงปลายทั้งสองข้างใกล้เคียงกับขอบเขตแผนที่ Grass-tool 'v.split.length' อาจทำงานได้
Julian

1
นี่เป็นปัญหาเดียวกับที่ฉันเคยมีหรือไม่ (ถ้ามันเป็นวิธีที่ง่ายในการเข้าใจปัญหานี้ - ถ้าไม่เพิกเฉยต่อฉัน): ฉันต้องการแสดงชุดข้อมูลจุดด้วยชุดคะแนนที่สร้างขึ้นทั้งหมดขยับไปทางตะวันออก 300 กิโลเมตรและ 600 กม. เหนือเมื่อเปรียบเทียบกับคะแนนจริง ใช้งานได้ - แต่เมื่อซูมออกเพื่อให้จุดดั้งเดิมอยู่ในพื้นที่วาดแผนที่ ทันทีที่คุณซูมไปที่ชุดของจุดที่สร้าง (การย้ายตำแหน่งจุดที่เกิดขึ้นจริงภายนอกผ้าใบ) จุดที่สร้างหายไป (QGIS 2.14)
Rostranimin

คำตอบ:


2

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

ลองใช้เครื่องมือระยะทางสู่ฮับที่ใกล้ที่สุดซึ่งอยู่ในกล่องเครื่องมือการประมวลผลภายใต้เครื่องมือวิเคราะห์ Vector ฉันทราบว่าคุณกำลังเลือกรูปหลายเหลี่ยมสำหรับซี่ของคุณและจัดแต่งทรงผมตามลักษณะอื่น ๆ สิ่งนี้เป็นไปได้ แต่คุณจะต้องทำสองสามอย่างเพื่อเตรียมตัว โชคดีที่เครื่องมือนี้ใช้เซนทรอยด์โดยอัตโนมัติเมื่อเลือกอินพุตรูปหลายเหลี่ยม

  1. เครื่องมือการเลือกเวกเตอร์ > แยกตามแอตทริบิวต์
    • เลเยอร์อินพุต: 'LAYER_1'
    • แอตทริบิวต์การเลือก: 'ATTRIBUTE_1'
    • ผู้ประกอบการ: =
    • ค่า: 'ค่าหมายถึงฮับรูปหลายเหลี่ยม'
    • แยกแล้ว (แอตทริบิวต์): 'HUB'

  2. เครื่องมือการเลือกเวกเตอร์ > แยกตามแอตทริบิวต์
    • เลเยอร์อินพุต: 'LAYER_1'
    • แอตทริบิวต์การเลือก: 'ATTRIBUTE_2'
    • ผู้ประกอบการ: เลือกตามต้องการ
    • ค่า: 'ค่าหมายถึงรูปหลายเหลี่ยมที่พูด'
    • แยกแล้ว (แอตทริบิวต์): 'SPOKES'

  3. เครื่องมือวิเคราะห์เวกเตอร์ > ระยะทางสู่ศูนย์กลางที่ใกล้ที่สุด
    • เลเยอร์จุดที่มา: 'พูด'
    • เลเยอร์ฮับปลายทาง: 'HUB'
    • แอตทริบิวต์ชื่อเลเยอร์ของเลเยอร์: สร้างฟิลด์ "ชื่อฮับ" ในเอาต์พุตตามแอททริบิวที่เลือกในกรณีที่ฮับจำนวนมากถูกระบุในชั้นข้อมูลเข้า
    • ประเภทรูปร่างขาออก: Line to hub
    • หน่วยวัด: เมตร
    • ระยะทางจากศูนย์กลาง: 'OUTPUT_LAYER_NAME'

ผลลัพธ์ที่ได้จะยังคงรักษาแอตทริบิวต์ทั้งหมดของอินพุตเลเยอร์ 'พูด' ดังนั้นคุณลักษณะที่จำเป็นสำหรับการจัดแต่งบรรทัดจะยังคงปรากฏอยู่ ในฐานะที่เป็นเลเยอร์เวกเตอร์ของตนเองเส้นจะยังคงปรากฏให้เห็นในทุกระดับการย่อ / ขยายโดยไม่คำนึงถึงการมองเห็นของจุดปลายทั้งสอง

หากคุณพอใจกับ Graphical Modeler คุณอาจสร้างขั้นตอนเหล่านี้เป็นกระบวนการเดียวเพื่อไม่ให้เกิดความยุ่งเหยิงในพื้นที่ทำงานของคุณด้วยเลเยอร์ที่ไม่จำเป็น


3

พบวิธีแก้ไขปัญหาต่อไปนี้: ใช้เลเยอร์เสมือนเพิ่มเติมแทนเครื่องกำเนิดรูปทรงเรขาคณิตเพื่อแสดงบรรทัด

คำจำกัดความของเลเยอร์เสมือน:

select m.FID, make_line(.....) as geometry from my_layer m

(รูปทรงเรขาคณิตดั้งเดิมสามารถอ้างอิงได้โดยใช้m.geometry)

เพื่อให้มั่นใจว่าการรีเฟรชเลเยอร์เสมือนเมื่อแก้ไข my_layer ให้ไปที่คุณสมบัติของเลเยอร์ | การพึ่งพาและให้แน่ใจว่ามีการตรวจสอบ my_layer (ซึ่งเป็นสีเทาตามค่าเริ่มต้น)

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