คำถามติดแท็ก pyqgis

งูเหลือมผูกสำหรับ QGIS

2
การเพิ่มแถบเครื่องมือผ่าน PyQGIS?
ฉันได้เรียนรู้วิธีการเพิ่มปุ่มเครื่องมือลงในปลั๊กอิน - แถบเครื่องมือผ่าน python ตอนนี้ฉันสงสัยว่าจะเพิ่มแถบเครื่องมือที่สมบูรณ์ด้วยปุ่มแถบเครื่องมือผ่าน python ได้อย่างไร ใครสามารถให้โค้ดตัวอย่างได้บ้าง?
10 pyqgis  toolbar 

2
processing.getObject () ใน QGIS 3
ดูเหมือนว่าprocessing.getObject()ไม่มีใน QGIS อีกต่อไป from PyQt5.QtCore import * from qgis.core import * #... layer = processing.getObject(layer) # -> ...module 'processing' has no attribute 'getObject' มีวิธีการใช้ใหม่get.Objectหรือไม่?

1
QGIS 2.18.10 เวอร์ชั่นใดที่รองรับ
เริ่มต้นด้วยการ QGIS 2.18.10 ไม่ได้มีพจนานุกรมที่เรียกว่าSagaAlgorithmProvider supportedVersionsก่อนหน้านี้ดูเหมือนว่านี้: supportedVersions = {"2.1.2": ("2.1.2", SagaAlgorithm212), "2.1.3": ("2.1.3", SagaAlgorithm213), "2.1.4": ("2.1.4", SagaAlgorithm214), "2.2.0": ("2.2.0", SagaAlgorithm214), "2.2.1": ("2.2.0", SagaAlgorithm214), "2.2.2": ("2.2.2", SagaAlgorithm214), "2.2.3": ("2.2.3", SagaAlgorithm214), "2.3.0": ("2.3.0", SagaAlgorithm230), "2.3.1": ("2.3.0", SagaAlgorithm230)} ตอนนี้มันก็พูดว่า: if not version.startswith('2.3.'): ProcessingLog.addToLog(ProcessingLog.LOG_ERROR, self.tr('Problem with SAGA installation unsupported SAGA version found.')) ดังนั้นฉันคิดว่าตอนนี้รองรับเฉพาะรุ่น SAGA ที่เริ่มต้นด้วย …

1
การแก้ไขสไตล์เลเยอร์ shp พร้อมกันใน QGIS?
ฉันมีรูปหลายเหลี่ยมในไฟล์ shp ที่ฉันต้องเปลี่ยนความกว้างของเส้น ฉันหัวเข้าร่วมพวกเขาในกลุ่มเดียว มีวิธีในการเปลี่ยนบรรทัดด้วยสำหรับเลเยอร์ทั้งหมดในกลุ่มพร้อมกันหรือไม่
9 qgis  python  pyqgis  layers  style 

1
ป้ายกำกับที่ใช้นิพจน์ใน Atlas ที่เขียนสคริปต์ไม่สามารถอัปเดตได้
ฉันพยายามติดตามนักแต่งเพลงแบบเขียนโปรแกรมจากเทมเพลตและสร้างแอตลาสโดยใช้ pyQgisเพื่อทำให้แอปพลิเคชันการพิมพ์แอตลาสโดยอัตโนมัติโดยใช้ pyqgis: เฉพาะในรหัส atlas พูดว่า: myAtlasMap = myComposition.getComposerMapById(0) myAtlas = QgsAtlasComposition(myComposition) myAtlas.setCoverageLayer(atlas_desktop) myAtlas.setComposerMap(myAtlasMap) myAtlas.setFixedScale(True) myAtlas.fixedScale() myAtlas.setHideCoverage(False) myAtlas.setFilterFeatures(True) รหัสนี้ใช้ได้กับงานของฉันและฉันใช้แผนที่ atlas feutures ใหม่ 100 อัน แต่ในtemplate.qptฉันมีป้ายกำกับพร้อมรหัสดังนี้: QGIS [%concat( "OBJECTID" )%] นั่นOBJECTIDเป็นสิ่งเดียวกันสำหรับแผนที่ใหม่ทั้งหมด 100 แผนที่ มีความคิดอะไรไหม ถ้าฉันใช้การส่งออกแผนที่ด้วยตนเองแล้วสำหรับOBJECTIDการเปลี่ยนแปลงแผนที่ใด ๆ ฉันมีรายละเอียดเพิ่มเติมจริงไม่ทำงานอะไรที่เกี่ยวข้องกับเลเยอร์แอตลาสในtemplate.qptฉันมีกฎสไตล์ฐานหรือกฎป้ายกำกับฐานดังนี้: intersects($atlasgeometry, $geometry ) หรือ $id = $atlasfeatureid นั่นคือบางส่วนใน 100 แผนที่: ฉันคิดว่าเพื่อให้นักแต่งเพลงโหลดโปรแกรมจากเทมเพลตและสร้างแอตลาสโดยใช้ pyQgisเพียงแค่ส่งออกฟีเจอร์ของฉันจากเลเยอร์แอตลาสและแอตลาสในเทมเพลตของฉันเป็นเท็จ ความคิดใด ๆ

1
วิธีแก้ปัญหาด้วยพาเนลข้อความบันทึกใน QGIS:“ ไม่บันทึกข้อผิดพลาดคำขอเกิน 100 ข้อ”
ฉันใช้รหัสต่อไปนี้ใน pyqgis เพื่อตรวจจับข้อผิดพลาด / คำเตือนจาก WMS- เลเยอร์เพื่อที่จะทริกเกอร์ทาสีทันทีที่ตรวจพบข้อผิดพลาด / คำเตือน (ตามคำถามก่อนหน้า: วิธีการจับข้อผิดพลาด WMS จากแผงข้อความบันทึก ใน QGIS กับ python หรือไม่? ) แต่เห็นได้ชัดว่าผู้ให้บริการ "WMS" ดูเหมือนจะมีข้อ จำกัด ว่าจะไม่ส่งคำขอข้อผิดพลาดมากกว่า 100 รายการไปยังบันทึกข้อความซึ่งหมายถึงหลังจากข้อผิดพลาด / คำเตือนครบ 100 ครั้งแล้วฉันไม่สามารถรับสัญญาณใด ๆ ได้อีกต่อไป ยังไม่ตอบสนองอย่างถูกต้อง อย่างไรก็ตามหากฉันส่งข้อความของตัวเองไปที่แผงควบคุมดูเหมือนจะไม่มีข้อ จำกัด ใด ๆ (ดูรหัสด้านล่าง) มีความเป็นไปได้ที่จะตรวจจับข้อผิดพลาด / คำเตือนโดยตรงจากอินสแตนซ์ที่รับผิดชอบที่นี่ (ฉันเดาว่าเป็นผู้ให้บริการ WMS) แทนที่จะใช้แผงบันทึกข้อความ หรืออาจแค่ล้าง / รีเซ็ตพาเนลข้อความบันทึกในกระบวนการที่กำลังรันอยู่หรือลบข้อ จำกัด ออกไป ฉันใช้ …
9 qgis  pyqgis  wms  log 

1
บันทึกสคริปต์หลามโดยอัตโนมัติใน QGIS
เมื่อมีการเขียนสคริปต์หลาม QGIS ไม่ได้บันทึกไว้เมื่อผู้ใช้บันทึกโครงการหลักของเขากับคำสั่งหรือctrl+S Project->Saveนอกจากนี้เมื่อออกจาก QGIS โปรแกรมจะไม่เตือนเกี่ยวกับการเปลี่ยนแปลงที่ไม่ได้บันทึกไว้ในสคริปต์หลามแม้ว่ามันจะเตือนเกี่ยวกับการเปลี่ยนแปลงที่ไม่ได้บันทึกไว้ในโครงการและข้อเสนอเพื่อบันทึก มีตัวเลือกในการเปลี่ยนแปลงพฤติกรรมนี้หรือไม่? ฉันควรจะเพิ่มสิ่งนั้นโดยใช้ตัวเลือกการเจรจาเพื่อบันทึกโครงการเมื่อเลิกจริง ๆ แล้วบันทึกโครงการ แต่ไม่ใช่สคริปต์งูหลาม สิ่งเหล่านั้นจะหายไป

2
การผสานเลเยอร์เวกเตอร์ผ่าน python ใน QGIS 2.18.1
ฉันกำลังใช้รหัสต่อไปนี้เพื่อรวมเลเยอร์เวกเตอร์สองตัวเข้าด้วยกัน: def append_layers(layer1, layer2, output): from processing.core.Processing import Processing Processing.initialize() import processing.tools processing.tools.general.runalg("qgis:mergevectorlayers", layer1, layer2, output) append_layers(layer1.shp, layer2.shp, output.shp) ดูเหมือนว่าจะทำงานได้ดีใน QGIS 2.14 แต่ล้มเหลวใน 2.18.1 พร้อมกับข้อความต่อไปนี้: Error: Wrong number of parameters ALGORITHM: Merge vector layers มีบางสิ่งที่เปลี่ยนแปลงระหว่าง 2.14 และ 2.18 หรือไม่ หรือฉันแค่คิดถึงบางสิ่งที่ชัดเจนจริงๆ?

2
การแยกข้อความจากฟิลด์สตริงก่อนตัวคั่นแต่ละตัวกับฟิลด์ใหม่
ฉันพยายามที่จะดึงข้อมูลข้อความจากเขตข้อมูลสตริงที่มีข้อความคั่นด้วยจุดและวางไว้ในสาขาใหม่โดยใช้เครื่องคิดเลขฟิลด์ ฉันใช้ฟังก์ชัน python นี้ (นำมาจากวิธีการแยกข้อความก่อน / ใน QGIS? ): from qgis.core import * from qgis.gui import * @qgsfunction(args='auto', group='Custom') def func(value1, feature, parent): return value1.split('.')[0] ส่งคืนข้อความทั้งหมดก่อนจุดแรก ตอนนี้ฉันสงสัยว่าจะเขียนฟังก์ชันเพื่อวางแถวข้อความที่คั่นด้วยแต่ละตัวในฟิลด์แยก ก่อน: หลังจาก:


1
กำลังบันทึกดัชนีเชิงพื้นที่ใน QGIS API หรือไม่
ฉันกำลังพยายามสร้างดัชนีเชิงพื้นที่สำหรับรูปร่างบางไฟล์โดยใช้ Qgis API ฉันได้ทำตามขั้นตอนที่อธิบายไว้ในบล็อกของ Nathan Woodrow ( https://nathanw.net/2013/01/04/using-a-qgis-spatial-index-to-speed-up-your-code/ ) และใช้งานได้ดี : layer = QgsVectorLayer(path, name, 'ogr') idx = QgsSpatialIndex() all_features = layer.getFeatures() map(idx.insertFeature, all_features) ปัญหาของฉันคือฉันไม่มีไฟล์ที่เป็นผลลัพธ์ (.qix? .sbn? .sbx?) ฉันจะบันทึกดัชนีเชิงพื้นที่นี้เพื่อให้ผู้ใช้ในอนาคตของรูปร่างไฟล์ได้ประโยชน์จากมันได้อย่างไร

1
ฉันจะแสดงรายการเลเยอร์โครงการในสคริปต์ PyQGIS แบบสแตนด์อโลนได้อย่างไร
ฉันกำลังพยายามโหลดโครงการ. qgs ที่มีอยู่และรับรายการเลเยอร์ภายใน ฉันดูเหมือนจะสามารถเปิดโครงการได้ แต่ฉันไม่สามารถรับรายการเลเยอร์ได้ ฉันสับสนเล็กน้อยเกี่ยวกับไวยากรณ์ PyQGIS พื้นฐานและตำราอาหารไม่ครอบคลุมตัวอย่างเฉพาะนี้ from qgis.core import * from PyQt4.QtCore import QFileInfo QgsApplication.setPrefixPath(r"C:\OSGeo4W\apps\qgis-ltr", True) qgs = QgsApplication([], False) qgs.initQgis() # Get the project instance project = QgsProject.instance() # Open the project project.read(QFileInfo( r'C:\path\to\project\project.qgs')) print project.fileName() # Get the layers in the project layers = QgsMapLayerRegistry.instance().mapLayers() print …
9 pyqgis 

3
เปลี่ยนการเข้ารหัสแหล่งข้อมูล Shapefile หรือไม่
ฉันพยายามเปลี่ยนเฉพาะการเข้ารหัสแหล่งข้อมูล shapefile ผ่านคุณสมบัติและวิธีการเข้ารหัส shapefiles จาก LATIN1 เป็น UTF-8 แต่มันไม่เปลี่ยน หากไม่มีการบันทึกโครงการ QGIS ฉันไม่สามารถเปลี่ยนการเข้ารหัสแหล่งข้อมูล shapefile โดยตรงได้หรือไม่ ฉันยังลองใช้รหัสนี้มันแสดงการเปลี่ยนการเข้ารหัส แต่เมื่อฉันเปิด shapefile อีกครั้งมันจะแสดงการเข้ารหัสระบบเดิม: for layer in QgsMapLayerRegistry.instance().mapLayers().values(): layer.setProviderEncoding(u'UTF-8') layer.dataProvider().setEncoding(u'UTF-8') print layer.name(), layer.dataProvider().encoding() (ฉันไม่ได้บันทึกโครงการ QGIS เพียงแค่เข้าถึงและบันทึก shapefile โดยตรงเมื่อฉันบันทึกโครงการและทำงานนี้มันจะทำงานอย่างถูกต้อง )
9 qgis  pyqgis  encoding 

2
การแปลงสายเป็นรูปหลายเหลี่ยมใน QGIS จะสร้างรูปหลายเหลี่ยมแบบเศษไม้
ในขณะที่พยายามที่จะทำให้รูปหลายเหลี่ยมชั้น Polyline ใน PyQGIS ใช้ processing.runandload("qgis:linestopolygons",explode_path,polygon_path) คำสั่งในคอนโซลหลามมันไม่ได้สร้างรูปหลายเหลี่ยมที่สอดคล้องกับเส้นขอบ แต่มันจะสร้างรูปหลายเหลี่ยมเศษไม้ตามขอบโค้ง ทำไมรูปหลายเหลี่ยมไม่ถูกสร้างตามแนวเส้น? ในรูปหลายเหลี่ยมเส้นสีดำควรเป็นขอบของรูปหลายเหลี่ยมที่สร้างขึ้น มีเพียงไม่กี่ตัวเท่านั้นที่สร้างขึ้นตามขอบโค้ง (รูปหลายเหลี่ยมสีน้ำเงิน)

2
กำลังบันทึกผลลัพธ์การประมวลผลในไฟล์โดยใช้ตัวจำลอง QGIS หรือไม่
จากแบบจำลองฉันต้องการบันทึกผลลัพธ์การประมวลผลในไฟล์ ในแบบจำลองของฉันฉันมีExtract by locationอัลกอริทึม (ที่มีอินพุตแบบเวกเตอร์สองตัว) ให้ผลลัพธ์ที่สมเหตุสมผล แต่เป็นเลเยอร์ชั่วคราวซึ่งฉันต้องทำSave as...เอง ดีที่สุดฉันต้องการส่งเส้นทางไปยังแบบจำลองของฉันซึ่งผลลัพธ์ของฉันจะถูกบันทึกเป็น shapefiles (ในขั้นตอนแรก) นี่คือรูปแบบ โปรดทราบว่าเอาต์พุตเวกเตอร์ (ไฟล์) ไม่สามารถเชื่อมต่อกับผลลัพธ์การประมวลผลใด ๆ : ดังที่เห็นในภาพหน้าจอ a) เราสามารถส่งชื่อสำหรับผลลัพธ์สุดท้าย แต่ไม่ใช่ไฟล์แม้แต่ในSave selected featuresอัลกอริทึม b) ก) ข) ฉันมีความคิดที่คลุมเครือว่าจะบรรลุผลอย่างไรด้วยสคริปต์ไพ ธ อน แต่สิ่งนี้สามารถทำได้ด้วยการรวมกันของเครื่องมือที่มีอยู่หรือไม่

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