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

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

2
หยุดสคริปต์ PyQGIS ที่มีการวนซ้ำไม่สิ้นสุดโดยใช้แป้นพิมพ์ใช่หรือไม่
ดังนั้นฉันจึงเขียนสคริปต์ที่ทำสิ่งที่ฉันต้องการซ้ำแล้วซ้ำอีกโดยใช้ "ในขณะที่ True:" ในช่วงเวลาหนึ่ง (ทุก ๆ 5 วินาทีโดยใช้ time.sleep (5)) จนถึงตอนนี้ดีมาก แต่เมื่อฉันต้องการหยุดมันฉันก็ทำไม่ได้ ฉันได้ลอง Control + C, Control + Break, Escape แล้วก็ข้ามคีย์บอร์ดของฉันไป วิธีเดียวที่จะหยุดมันได้คือปิด QGIS ความคิดใด ๆ นอกจากนี้เมื่อสคริปต์เปิดใช้งาน time.sleep (5) ชนิด QGIS ของ lags และค้างเป็นเวลา 5 วินาทีและฉันไม่สามารถยกเลเยอร์ได้ แต่ฉันถือว่านี่เป็นเรื่องปกติ นี่คือสคริปต์ของฉัน: from PyQt4.QtGui import * from PyQt4.QtCore import * from qgis.core import * from …
12 pyqgis  loop 

2
วิธีการเปลี่ยนค่าของแอตทริบิวต์โดยใช้ QgsFeature ใน PyQGIS
ฉันต้องการอัปเดตคุณลักษณะหนึ่งคุณลักษณะ อย่างไรก็ตามฉันไม่ทราบว่าจะอัปเดตโดยใช้คุณสมบัติของวัตถุ ฉันต้องใช้ผู้ให้บริการข้อมูลเพื่ออัปเดต layers = QgsMapLayerRegistry.instance().mapLayersByName('my_line') layer = layers[0] dp = layer.dataProvider() it = dp.getFeatures() for i in range(0, dp.featureCount()): feat = it.next() attrs = { 2 : 30 } layer.dataProvider().changeAttributeValues({ feat.id() : attrs }) ฉันสามารถเปลี่ยนค่าของคุณสมบัติโดยใช้QgsFeatureวัตถุได้หรือไม่? ยิ่งไปกว่านั้นมันเป็นไปได้ที่จะวนซ้ำโดยใช้วัตถุตัววนซ้ำ?
12 qgis  python  pyqgis  features 

2
แอปพลิเคชันแบบสแตนด์อโลนที่ใช้ QGIS และตัวแปรสภาพแวดล้อม
ฉันได้ลองใช้ IRC เพื่อดูว่าผู้คนสามารถช่วยฉันได้หรือไม่ แต่สื่อดูเหมือนจะเงอะงะเล็กน้อยสำหรับการตอบคำถามที่ชัดเจนดังนั้นฉันจะลองทำแทน ฉันต้องการตั้งโปรแกรมแอปพลิเคชันแบบสแตนด์อโลนโดยใช้ PyQGIS วิธีที่ฉันสามารถโปรแกรมแอปพลิเคชันแบบสแตนด์อโลนโดยใช้ ArcPy PyQGIS นั้นตรงไปตรงมา ฉันไม่มีปัญหาในการใช้งานสคริปต์ Python ภายในเอดิเตอร์คอนโซล QGIS อย่างไรก็ตามเพื่อที่จะใช้การผูก Python ในสคริปต์แบบสแตนด์อโลนฉันแนะนำให้ฉันต้องเปลี่ยนการตั้งค่าสภาพแวดล้อมโดยใช้ชุดสคริปต์ (ฉันใช้ Windows Vista ที่บ้านดังนั้นเราจึงกำลังพูดถึงการเขียนสคริปต์ชุดสำหรับ Windows) สิ่งนี้ส่งผลให้เกิดความยุ่งเหยิงในตอนท้ายของฉันเนื่องจากฉันไม่เข้าใจการเขียนสคริปต์แบบชุดและฉันไม่ชอบความคิดที่ว่าฉันกำลังรีเซ็ตสภาพแวดล้อมที่ต้องเป็นวิธีหนึ่งสำหรับแอปพลิเคชันอื่นที่ฉันใช้ ฉันมีปัญหาในการทำความเข้าใจว่าทำไมคำแนะนำในการสร้างการตั้งค่าเหล่านี้จึงมีความซับซ้อนเกินความจำเป็นและเหตุใดพวกเขาจึงไม่ถึงจำนวนหนึ่งบรรทัดของรหัสว่า "ไปยังที่ที่มีการเชื่อมโยงทำให้ไลบรารีที่ฉันต้องการ ) แน่นอนว่า ArcPy ไม่ต้องการให้ผู้คนยุ่งกับการตั้งค่าสภาพแวดล้อมของคอมพิวเตอร์ดังนั้นฉันจึงมีปัญหาในการเข้าใจว่าทำไม PyQGIS ทำเช่นนั้นดูเหมือนว่าฉันจะยอมแพ้แทนที่จะสอนภาษา Windows Batch Script ให้ตัวเอง ตอนนี้ฉันสังเกตเห็นว่าเมื่อฉันเรียกใช้สคริปต์ในตัวแก้ไขคอนโซลของ QGIS มันทำงานได้ ได้รับมันยังทำให้ส่วนที่เหลือของ QGIS ใช้งานไม่ได้หลังจากที่สคริปต์ทำงานดังนั้นฉันต้องรีสตาร์ท QGIS อีกครั้งหลังจากนั้น แต่สคริปต์ทำงานตรงตามที่ฉันได้ตั้งโปรแกรมให้ทำงาน แต่เมื่อฉันทำนอกเหนือจากแอปพลิเคชัน QGIS มันไม่ได้ ปัญหาดูเหมือนว่าฉันไม่ได้นำเข้าแพคเกจ Python บางอย่างที่นำเข้าโดยอัตโนมัติโดยแอปพลิเคชัน …
12 qgis  pyqgis 

1
กำลังเขียนเลเยอร์เวกเตอร์เป็นไฟล์ CSV ด้วยเรขาคณิตโดยใช้ PyQGIS หรือไม่
ฉันใช้ Python พยายามเขียนไฟล์ vector layer ไปยังไฟล์ csv ด้วยรหัสนี้: QgsVectorFileWriter.writeAsVectorFormat(mylayer, r'c:\temp\xyz.csv', "utf-8", None, "CSV") มันสามารถส่งออกไปยัง xyz.csv แต่แสดงเฉพาะคุณลักษณะใน csv ไม่ใช่คอลัมน์รูปทรงเรขาคณิต ฉันจะส่งออกทั้งแอตทริบิวต์และข้อมูลเชิงพื้นที่ไปยังไฟล์ csv ได้อย่างไร

4
การเปลี่ยนชื่อ Shapefiles ใน QGIS?
ฉันมีรายการเลเยอร์จำนวนมากในโครงการที่ตั้งชื่อเป็นภาษาต่างประเทศ ฉันต้องการแปลและเพิ่มชื่อภาษาอังกฤษเป็นชื่อ เมื่อฉันคลิกขวาที่เลเยอร์และเลือกProperties -> Generalและเปลี่ยนชื่อเลเยอร์มันจะเห็นภาพในแผนผังชั้น แต่ไฟล์ต้นฉบับยังคงเหมือนเดิม มีวิธีการเปลี่ยนชื่อไฟล์ต้นฉบับจาก QGIS หรือไม่? มีมากมายที่การค้นหาทั้งหมดในโฟลเดอร์ของฉันอาจใช้เวลานานเกินไป

2
การซูมจากคอนโซลหลามของ QGIS
คำสั่งที่ใช้กับการซูมทุกประเภท (เต็ม, บนเลเยอร์ที่เลือก, ฯลฯ ) ในคอนโซลหลามคืออะไร? ฉันกำลังค้นหาทั้งในตำราตำรา pyqgis และเอกสาร API แต่ฉันไม่พบสิ่งที่น่าสนใจ
11 qgis  pyqgis 

1
alglist และ alghelp ใหม่ในการประมวลผล QGIS 3.0 คืออะไร?
การเข้าถึงสคริปต์ประมวลผล QGIS 3.0 ใหม่ผ่านทางคอนโซล Python กำลังพิสูจน์ให้เห็นว่าเป็นสิ่งที่ท้าทายสำหรับฉันโดยเฉพาะอย่างยิ่งตั้งแต่คำสั่ง หนึ่งเรียกรายการของสคริปต์การประมวลผลได้อย่างไร หนึ่งเรียกข้อมูลความช่วยเหลือสำหรับแต่ละสคริปต์ได้อย่างไร

2
'pyrcc5' ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอก
ฉันติดตั้ง Qgis 3.0 บน windows 10 ฉันได้รับข้อผิดพลาดนี้ทุกครั้งที่ฉันเรียกใช้คำสั่ง pyrcc4 หรือ pyrcc5: 'pyrcc4' is not recognized as an internal or external command, แม้ว่าฉันจะหาสถานที่ที่มีไฟล์ pyrcc4.exe หรือสถานที่ที่มีไฟล์ apyrcc5.bat และเพิ่มเส้นทางไปยังตัวแปรสภาพแวดล้อมที่ฉันได้รับข้อผิดพลาดเดียวกัน ในการติดตั้ง osgeo4w ก่อนหน้านี้ฉันมีโฟลเดอร์ pyqtdev หรือมีสิ่งที่คล้ายกันปรากฏขึ้นฉันคิดว่ามันเป็น C / ควรจะมีโฟลเดอร์ดังกล่าวฉันจะต้องดาวน์โหลด pyqt แยกต่างหากหรือไม่?
11 qgis  pyqgis 

2
กำลังสร้างรูปหลายเหลี่ยมแบบสม่ำเสมอในหน่วยมิลลิเมตรหรือไม่
ฉันมีฟังก์ชั่นที่สร้างแผงเซลล์แสงอาทิตย์ Photovolatic ที่แสดงเป็นรูปหลายเหลี่ยม โดยพื้นฐานแล้วมันจะสร้างกริดสี่เหลี่ยมที่ผู้ใช้สามารถระบุพารามิเตอร์ต่อไปนี้: ความยาว ความกว้าง ระยะทางแนวนอน ระยะทางแนวตั้ง รหัสนี้เป็นไปตามปลั๊กอินFeatureGridCreatorแต่เน้นเฉพาะในรูปหลายเหลี่ยม ใช้ได้ดีกับส่วนใหญ่โดยเฉพาะเมื่อสร้างรูปหลายเหลี่ยมที่มีขนาดใหญ่ (เช่นความยาวและความกว้าง 10 ม. ระยะทางแนวนอนและแนวตั้ง 10 ม.) แต่ฉันสังเกตเห็นสองประเด็น: เมื่อระบุรูปหลายเหลี่ยมสำหรับขนาดที่น้อยกว่า 2 เมตรสำหรับทั้งความยาวและความกว้างจะไม่สร้างรูปหลายเหลี่ยม เมื่อระบุรูปหลายเหลี่ยมที่มีขนาดต่างกัน (เช่นความยาว 5 ม. และความกว้าง 7 ม.) ขนาดนั้นไม่เหมือนกันเมื่อวัดด้วยเครื่องมือวัดเส้น สำหรับมิติเหล่านี้ความยาวและความกว้างถูกแสดงเป็น 4m และ 6m ตามลำดับ CRS ที่ใช้สำหรับการฉายภาพและเลเยอร์คือEPSG: 27700แม้ว่าฉันจะไม่คิดว่ามันจะเป็นปัญหา ดังนั้นใครบ้างมีความคิดใด ๆ ที่อาจทำให้เกิดปัญหาเหล่านี้ ฉันยังเปิดให้คำแนะนำเกี่ยวกับวิธีการปรับปรุงรหัสหรือแทนที่ด้วยทางเลือกที่ดีกว่า นี่คือรหัสที่สามารถทำซ้ำได้ในPython Consoleต้องเลือกเลเยอร์รูปหลายเหลี่ยมด้วย CRS ที่เกี่ยวข้องก่อนเรียกใช้ฟังก์ชัน: from PyQt4.QtCore import QVariant from math …

1
นักแต่งเพลงส่งออก QGIS เป็น pdf ในหลาม
ฉันมีโครงการ QGIS ซึ่งมีนักแต่งเพลง แน่นอนว่าถ้าฉันเข้าสู่ GUI ฉันสามารถส่งออกเป็น pdf และอื่น ๆ สำหรับสคริปต์ทำของฉันแม้ว่าฉันต้องการทำสิ่งนี้ผ่านสคริปต์ python จากการอ่านออนไลน์นี่คือความพยายามของฉัน: #!/usr/bin/env python import sys from qgis.gui import QgsMapCanvas, QgsLayerTreeMapCanvasBridge from PyQt4.QtCore import QFileInfo from PyQt4.QtXml import QDomDocument from qgis.core import * qgs = QgsApplication(sys.argv, True) QgsApplication.setPrefixPath("/usr", True) qgs.initQgis() def make_pdf(): canvas = QgsMapCanvas() bridge = QgsLayerTreeMapCanvasBridge( QgsProject.instance().layerTreeRoot(), canvas) …
11 qgis  python  pyqgis  pdf 

1
รอให้ Canvas วาดเสร็จก่อนบันทึกภาพ
ฉันกำลังพยายามเขียนสคริปต์ที่จะบันทึกการเรนเดอร์ของเลเยอร์หลาย ๆ อันโดยใช้โปรแกรมแต่งแผนที่ ปัญหาที่ฉันพบคือสคริปต์บันทึกไว้ก่อน qgis แสดงผลเลเยอร์ทั้งหมดเสร็จสิ้นแล้ว จากคำตอบอื่น ๆ อีกหลายข้อ ( 1 , 2 , 3 ) ฉันพยายามใช้iface.mapCanvas.mapCanvasRefreshed.connect()และวางการบันทึกภาพไว้ในฟังก์ชั่น แต่ฉันยังคงพบปัญหาเดียวกัน - ภาพไม่รวมเลเยอร์ทั้งหมด รหัสที่ฉันใช้รวมถึงรูปภาพของหน้าต่างหลักและการเรนเดอร์หน้าตามีลักษณะดังรายการด้านล่าง ฉันสังเกตว่าถ้าฉันเปิดหน้าต่างคอนโซลและไม่แสดงข้อคิดเห็นทั้งสามprint layerListบรรทัดโปรแกรมจะรอการเรนเดอร์ให้เสร็จก่อนบันทึกภาพ ฉันไม่แน่ใจว่านี่เป็นเพราะเวลาในการประมวลผลที่เพิ่มขึ้นหรือหากมีการเปลี่ยนแปลงวิธีการทำงานของโปรแกรม ฉันจะใช้สิ่งนี้อย่างถูกต้องได้อย่างไรเพื่อให้เลเยอร์ทั้งหมดรวมอยู่ในภาพ from qgis.core import * from qgis.utils import * from qgis.gui import * from PyQt4.QtCore import * from PyQt4.QtGui import * import os.path ##StackExchange Version=name ##Map_Save_Folder=folder …

2
การตั้งค่าความกว้างของแผงเลเยอร์ใน QGIS?
เมื่อฉันเปิด QGIS แผงเลเยอร์จะใช้ค่าเริ่มต้นเป็นความกว้างที่ไม่แสดงปุ่ม "ลบเลเยอร์ / กลุ่ม" ดังนั้นฉันต้องปรับขนาดพาเนลเพื่อแสดงปุ่มทุกครั้งที่ฉันเปิด QGIS เป็นไปได้ไหมที่จะตั้งค่าความกว้างเริ่มต้นสำหรับพาเนลนี้ดังนั้นฉันไม่จำเป็นต้องปรับขนาดหรือไม่ ฉันใช้ QGIS 2.18.5 บน Windows 10

5
ลากจุดยอดต่าง ๆ ของคุณสมบัติเส้นต่าง ๆ ใน QGIS
เป็นไปได้ไหมที่จะลากจุดยอดหลายจุดของเส้นคู่ขนานบางเส้นใน QGIS พร้อมกัน? ฉันมีเลเยอร์คู่กับเส้นขนาน ในบางภูมิภาคฉันต้องย้ายจุดยอดของเส้นขนานทั้งหมดเพื่อให้ระยะห่างระหว่างกัน ด้วยเครื่องมือโหนดฉันสามารถเลือกจุดยอดของหนึ่งในบรรทัดของฉันฉันต้องการลาก แต่ไม่หลายบรรทัดในเวลาเดียวกัน: ใน Multiline-Layers เป็นไปได้ที่จะลากทุกบรรทัดในเวลาเดียวกัน แต่นั่นไม่ใช่ตัวเลือกเพราะฉันต้องรักษาคุณสมบัติทั้งหมดของบรรทัดเดียวของฉัน มีตัวเลือกอื่น ๆ เพื่อลากเส้นของฉันทั้งหมดในเวลาเดียวกันหรือไม่? แก้ไข 1: เพิ่งพบCadNodeTool ( https://github.com/wonder-sk/CadNodeTool ) ด้วยปลั๊กอินนี้มันเป็นไปได้อย่างน้อยที่สุดแล้วที่จะเลือกจุดยอดของหลายบรรทัดในเวลาเดียวกัน บางทีปลั๊กอินนี้สามารถขยายเพื่อย้ายจุดยอดของเส้นคู่ขนาน

2
วิธีการตั้งค่าความโปร่งใสให้กับหลายค่าแรสเตอร์ด้วย Python
ด้วยรหัสต่อไปนี้ฉันสามารถตั้งค่าความโปร่งใส 100% เป็นค่า raster 0: map=None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "some_layer": map= lyr tr=None tr=QgsRasterTransparency() tr.initializeTransparentPixelList(0) map.renderer().setRasterTransparency(tr) map.triggerRepaint() ฉันจะกำหนดสองค่า (0 และ 8) ให้โปร่งใส 100% ได้อย่างไร เมื่อฉันทำซ้ำคำสั่งของบล็อกสุดท้ายด้วยค่าแรสเตอร์ 8 ค่าแรก (0) จะถูกลบออกจากเลเยอร์โปร่งใส

3
จะตรวจสอบรหัสกระเบื้องใกล้เคียงใน QGIS ได้อย่างไร?
ฉันถูกถามในหลักสูตรฝึกอบรมเมื่อเร็ว ๆ นี้ว่า QGIS สามารถคำนวณหมายเลขหน้าถัดไป / ก่อนหน้าและด้านบน / ด้านล่างโดยอัตโนมัติสำหรับหนังสือแผนที่ที่สร้างโดยใช้ตัวสร้างแผนที่ ฉันจัดการกับการแสดงออกของฉลากที่สมเหตุสมผลสำหรับกริดปกติถ้าคุณทราบความกว้างและความสูงของกริด แต่จากนั้นเราก็เริ่มนึกถึงตัวอย่างที่เป็นจริงที่เราไม่ต้องการวาดหน้าเว็บที่ไม่มีเขตที่เราสนใจเช่นหนึ่งในเขตของฉัน: ดังนั้นบ่ายนี้ฉันได้เล่นสคริปต์ไพ ธ อนเพื่อหา 4 เพื่อนบ้านที่ฉันสนใจสำหรับแต่ละตารางเซลล์และเพิ่มค่าเหล่านั้นในตารางของฉัน (นี่ขึ้นอยู่กับการสอนของ Ujaval Gandhi ) for f in feature_dict.values(): print 'Working on %s' % f[_NAME_FIELD] geom = f.geometry() # Find all features that intersect the bounding box of the current feature. # We use spatial …

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