จะละลายรูปหลายเหลี่ยมจาก shapefile โดยใช้เครื่องมือโอเพนซอร์สได้อย่างไร


10

ในโครงการปัจจุบันของฉันฉันเห็นภาพข้อมูลบนแผนที่แสดงค่าบางอย่างสำหรับแต่ละเขตการปกครองของประเทศ ฉันได้รับไฟล์รูปร่างของประเทศนี้ซึ่งฉันแปลงเป็น GeoJSON เพื่อใช้กับ PolyMaps ตอนนี้ฉันมีความต้องการในการจัดกลุ่มหลาย ๆ พื้นที่ให้ใหญ่ขึ้นเนื่องจากไม่มีข้อมูลสำหรับชิ้นส่วนเล็ก ๆ บางส่วน แต่สามารถรวบรวมข้อมูลสำหรับชิ้นส่วนขนาดใหญ่ได้ กลุ่มเหล่านั้นถูกกำหนดไว้ล่วงหน้า (เช่น A + B + C = D) ดังนั้นฉันคิดว่ามันจะง่ายกว่าในการสร้างรูปร่างไฟล์คลัสเตอร์และแปลงเป็น GeoJSON หลังจากนั้น

แต่ฉันจะสร้างคลัสเตอร์ดังกล่าวได้อย่างไรโดยอัตโนมัติและมีเครื่องมือโอเพนซอร์ส? แน่นอนว่าวิธีอื่น ๆ ก็เหมาะสมเช่นกัน

คำตอบ:


5

คุณสามารถใช้เครื่องมือโอเพนซอร์ซเช่น QGIS เพื่อเปิดรูปร่างของคุณและผสานคุณสมบัติโดยใช้เครื่องมือ "ผสานคุณสมบัติที่เลือก" ในตัว (เพียงเลือกคุณสมบัติคลิกผสานเลือกคุณสมบัติเพื่อสืบทอดคุณสมบัติใหม่ที่ผสานเสร็จสิ้นแล้ว)

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

แก้ไข: ตกลงฉันโง่ถ้าคุณมีคุณสมบัติทั่วไปสำหรับคุณสมบัติทั้งหมดที่คุณจะ "กลุ่ม" (เช่นชื่อจังหวัดหรือเขต) นี่จะเป็นกรณีสำหรับเครื่องมือละลาย เปิด shapefile ของคุณเลือกละลาย (ใน QGIS มันอยู่ที่ Vector> เครื่องมือในการประมวลผลทางภูมิศาสตร์> ละลาย) เลือกคอลัมน์ที่มีชื่อสามัญที่กล่าวถึงข้างต้นและเริ่มกระบวนการ หวังว่าสิ่งนี้ควร (ถ้าฉันไม่ได้เข้าใจผิด) ส่งผลให้สิ่งที่คุณกำลังมองหา


โดยทั่วไปแล้วคำแนะนำที่ดีและถ้าทุกอย่างเกิดขึ้นกับการทำงานด้วยตนเองฉันจะหาคนที่จะสร้างรูปร่างไฟล์เหล่านั้นให้ฉันด้วย QGIS ตามที่คุณอธิบาย อย่างไรก็ตามฉันต้องการสามารถกำหนดกลุ่มเหล่านั้น (เช่นผ่านรหัส NUTS: ผสาน FR413 และ FR411 เป็นสิ่งที่เรียกว่า _FRX1) จากนั้นเรียกใช้สคริปต์ซึ่งจะสร้างรูปร่างไฟล์คลัสเตอร์เหล่านั้น ฉันต้องการที่จะสามารถแก้ไขข้อผิดพลาดหรือรองรับการเปลี่ยนแปลงที่ติดตามอย่างรวดเร็วโดยไม่มีค่าใช้จ่ายของเครื่องมือ GUI เป็นไปได้อย่างสมบูรณ์แบบที่กลุ่มเหล่านั้นจะถูกกำหนดโดยผู้ใช้ปลายทางในวันหนึ่งดังนั้นฉันต้องการความยืดหยุ่นเล็กน้อย
Nikolai Prokoschenko

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

เป็นไปได้อย่างสมบูรณ์แบบฉันเป็นมือใหม่อย่างสมบูรณ์ในทุกสิ่ง GIS ฉันจะดูการเขียนสคริปต์ QGIS ขอบคุณ
Nikolai Prokoschenko

2

สำหรับการทำงานแบบแมนนวลน้อยคุณอาจดู SpatiaLite คุณสามารถนำเข้า shapefiles ได้อย่างง่ายดายโดยใช้เช่น

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

จากนั้นสำหรับส่วนที่ละลาย:

ฉันต้องการที่จะสามารถกำหนดกลุ่มเหล่านั้น (เช่นผ่านรหัส NUTS: ผสาน FR413 และ FR411 เป็นสิ่งที่เรียกว่า _FRX1)

ฟังก์ชั่นที่คุณต้องการที่นี่คือ GUnion () คุณอาจต้องการกำหนด "กลุ่ม" ของคุณในตารางที่สอง จากนั้นคุณสามารถเข้าร่วมคลัสเตอร์และตารางพื้นที่และใช้ GUnion () กับ GROUP BY เพื่อสร้าง union_table ขั้นสุดท้าย

จากนั้นคุณสามารถส่งออกไปยังรูปร่างไฟล์โดยใช้. dumphp

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

หากคุณต้องการ GeoJSON คุณสามารถแปลงไฟล์ได้ทันที

คุณสามารถเขียนสคริปต์สั้น ๆ เช่น Python ที่จัดการโหลดเหล่านี้รวมและทิ้ง


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