จะแปลงฟีเจอร์หลายส่วนที่เลือกเป็นฟีเจอร์เดี่ยวขณะแก้ไขใน QGIS ได้อย่างไร?


9

มีคำถามมากมายและคำตอบที่เกี่ยวข้องสำหรับวิธีการสร้างคุณลักษณะหลายส่วนเลเยอร์เป็นคุณสมบัติส่วนเดียวโดยใช้ QGIS:

แต่โซลูชั่นทั้งหมดที่ฉันเห็นสร้างเลเยอร์ใหม่ทั้งหมดและจะแปลงรูปเรขาคณิตหลายส่วนทั้งหมดเป็นแบบเดี่ยว

ดังนั้นคำถามคือจะมีวิธีการอย่างไรในช่วงเซสชั่นการแก้ไขเลือกคุณสมบัติหลายส่วนให้เป็นคุณสมบัติส่วนเดียวโดยไม่จำเป็นต้องสร้างเลเยอร์ใหม่

มันจะตรงกันข้ามกับเครื่องมือ "ผสานคุณสมบัติที่เลือก" และคล้ายกับการระเบิดใน ArcGIS

มีปลั๊กอินทำเช่นนี้? วิธีนี้สามารถทำได้โดยใช้คอนโซลหลาม?

คำตอบ:


18

ได้รับแรงบันดาลใจจากคำถาม & คำตอบนี้เป็นตัวอย่างว่า "ง่าย ๆ " สามารถสร้างโซลูชันของตัวเองเมื่อใช้ Open Source ได้อย่างไรฉันพยายามสร้างรหัสของตัวเองเพื่อเลือก "กระจาย" คุณสมบัติหลายส่วนในระหว่างการแก้ไข

ฉันได้สำรวจQGIS 1.8 APIเป็นครั้งแรกและออกมาพร้อมโค้ดชิ้นนี้ที่สามารถทำงานได้:

layer = qgis.utils.iface.mapCanvas().currentLayer()
remove_list = []

for feature in layer.selectedFeatures():
    geom = feature.geometry()
    # check if feature geometry is multipart
    if geom.isMultipart():
        remove_list.append(feature.id())
        new_features = []
        temp_feature = QgsFeature(feature)
        # create a new feature using the geometry of each part
        for part in geom.asGeometryCollection ():
            temp_feature.setGeometry(part)
            new_features.append(QgsFeature(temp_feature))
        # add new features to layer
        layer.addFeatures(new_features, False)

# remove the original (multipart) features from layer
if len(remove_list) > 0:
    for id in remove_list:
        layer.deleteFeature (id)    

ฉันไม่ใช่โปรแกรมเมอร์ที่มีประสบการณ์ดังนั้นรหัสอาจไม่ใช่โค้ดที่มีประสิทธิภาพมากที่สุด

ชันต่อไปคือการสร้างปลั๊กอินจากมัน ... หรืออย่างน้อยก็ลอง!

อัปเดต:
ฉันสามารถสร้างปลั๊กอินได้ มันเรียกว่าMultipart Splitและสามารถพบได้ในพื้นที่เก็บข้อมูลอย่างเป็นทางการของ QGIS


1
เป็นไปได้ไหมที่จะใช้งาน Multipart -> การแปลง Singlepart โดยไม่มี QGIS มีวิธีที่จะทำได้ด้วย Standalone Python หรือไม่? @Alexandre Neto
Akhil

โปรดสังเกตว่าวิธีนี้ขึ้นอยู่กับการเลือกคุณสมบัติของเลเยอร์ในระหว่างการแก้ไขในพื้นที่แสดงแผนที่ ในการแปลงฟีเจอร์ทั้งหมดของเลเยอร์ (พูดรูปร่างไฟล์) เป็นฟีเจอร์ส่วนเดียวฉันคิดว่าคุณสามารถใช้ไลบรารี OGR ดูที่ลิงค์นี้
Alexandre Neto

ไชโย! ช่วย .. !!
Akhil

ฉันต้องการใช้เลเยอร์ที่เป็นรูปหลายเหลี่ยมหลายส่วนและแปลงเป็นส่วนเดียว - ฉันไม่สามารถหารหัสไพ ธ อนเพื่อทำสิ่งนี้ใน qgis ฉันเห็นว่ามีคำสั่งภายใต้เวกเตอร์ - เครื่องมือเรขาคณิต - หลายส่วนเป็น Singleparts นี่คือสิ่งที่ฉันต้องการฉันเพียงต้องการไวยากรณ์ของหลาม
kflaw

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