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

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

1
วิธีคัดลอกสไตล์สีไปยังคอลัมน์สีในตารางแอตทริบิวต์ของเลเยอร์
ฉันมีเลเยอร์หลายเหลี่ยมใน QGIS ที่ฉันใช้สไตล์สีแบบสุ่มกับรูปหลายเหลี่ยมแต่ละรูป ภายใต้คุณสมบัติเลเยอร์ -> สไตล์ฉันเลือกสไตล์การจัดหมวดหมู่แล้วสร้างทางลาดสีแบบสุ่ม ฉันเพิ่มคอลัมน์สีลงในตารางเลเยอร์ มีวิธีคัดลอกสีที่กำหนดในสไตล์ไปยังคอลัมน์สีโดยอัตโนมัติสำหรับแต่ละรูปหลายเหลี่ยมในรูปแบบ "# ff0000" หรือไม่ ท้ายที่สุดฉันต้องการส่งออกเป็นเลเยอร์ GeoJSON และนำเข้าสู่แผนที่แผ่นพับ คอลัมน์สีจะตั้งค่าสีในแผ่นพับ
15 qgis  leaflet  pyqgis  style 

2
สร้างภาคสำหรับเสาโทรคมนาคมหรือไม่
ฉันทำงานในอุตสาหกรรมเครือข่ายมือถือและฉันทำงานเพื่อสร้างปลั๊กอินสำหรับ QGIS โดยใช้c++/pythonสิ่งต่อไปนี้: ขั้นตอนที่ 1: สร้างคะแนนที่สอดคล้องกับหอคอยเคลื่อนที่แต่ละแห่งโดยอิงจาก Lat / Long ของแต่ละหอคอย (ตอนนี้ฉันทำสำเร็จแล้ว) ขั้นตอนที่ 2: เพิ่มเติม: เซกเตอร์: แต่ละเสาเหล่านี้จะมีเสาอากาศที่มุ่งเน้นไปที่ azimuths ที่แตกต่างกัน ดังนั้นฉันจำเป็นต้องสร้างสัญลักษณ์สำหรับแต่ละทิศทางของเสาอากาศ (ในท้ายที่สุดจะดูเหมือนกลีบดอกไม้ในดอกไม้หรือรูปสามเหลี่ยมด้านใน) ขั้นตอนที่ 3: เมื่อฉันคลิกที่เซกเตอร์ใด ๆ เซกเตอร์ใกล้เคียงทั้งหมดที่หันหน้าไปทางเซกเตอร์ควรเน้นในบางวิธี (ดังนั้นฉันสามารถค้นหาเพื่อนบ้าน) สิ่งที่ฉันต้องเริ่มต้นคือไฟล์ excel ขนาดใหญ่ที่มีชื่อเซ็กเตอร์, lattitude, ลองจิจูด, การวางสายอากาศ ฯลฯ ไม่มีใครมีความคิดเห็นใด ๆ ?

6
PyCharm 2019 ไม่ทำงานกับ QGIS อีกต่อไป
ตั้งแต่อัพเดตเป็น PyCharm 2019 ฉันไม่สามารถโหลดโมดูล QGIS Python ได้ ฉันไม่สามารถใช้การทำให้สมบูรณ์อัตโนมัติได้เช่นกัน ฉันลบแคชไปแล้ว (โดยการทำให้แคชใน PyCharm ไม่ถูกต้องและโดยการลบโฟลเดอร์ "system" ในไดเรกทอรีการตั้งค่าผู้ใช้) ดูเหมือนจะไม่มีอะไรทำงาน เมื่อเริ่มต้น Python console ภายใน PyCharm และพิมพ์ "import qgis.core" ฉันได้รับข้อผิดพลาดดังต่อไปนี้: Traceback (most recent call last): File "<input>", line 1, in <module> File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.2\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import module = self._system_import(name, *args, **kwargs) …

1
รับเลเยอร์ตามชื่อใน PyQGIS?
ฉันมีปลั๊กอินที่ค้นหาบัฟเฟอร์สำหรับรายชื่อเมืองให้ระยะทาง ชื่อรัฐและเมืองจะนำมาจากตารางแอตทริบิวต์และได้รับการกรองตาม สิ่งที่ฉันต้องการคือปลั๊กอินของฉันควรระบุชื่อเลเยอร์หรือคำสั่งของเลเยอร์ใน Canvas โดยไม่คำนึงถึงเลเยอร์อื่นที่อยู่ในผืนผ้าใบและเข้าถึงแอตทริบิวต์ที่เกี่ยวข้องจากเลเยอร์นั้น ฉันแค่อยากรู้ว่าการชี้ชื่อเลเยอร์เฉพาะในโค้ดจะทำให้เกิดข้อผิดพลาดในการทำซ้ำหรือไม่แม้ว่ามีเลเยอร์อื่นอยู่บ้าง? ด้านล่างเป็นรหัสของฉันโปรดบอกฉันว่าฉันควรจะทำการเปลี่ยนแปลงที่ไหนและจะมีการเปลี่ยนแปลงอย่างไร if dist and centerCity: #QMessageBox.information(self.dlg, "info", "both True") st = '"name" = \'' + centerCity + '\'' exp = QgsExpression(st) else: QMessageBox.warning(self.dlg, "Enter the distance","Enter the distance and try again.") return #terminate the function layer = self.iface.activeLayer() it = layer.getFeatures(QgsFeatureRequest(exp)) feature = it.next() …

1
การเพิ่มรายการเมนูใหม่ไปยังแอป QGIS Desktop?
ฉันต้องเพิ่มรายการเมนูใหม่ลงในเมนูระดับบนสุดของ QGIS Desktop (2.7.0); นั่นคือจะต้องอยู่ในระดับเดียวกับ "Project", "Edit", "View", "Layer" เป็นต้น เท่าที่ฉันรู้มีวิธีที่ดีในการซ่อนรายการเมนู (การตั้งค่า> การปรับแต่ง) และการใช้ QgisInterface ( http://qgis.org/api/classQgisInterface.html ) ฉันสามารถเพิ่มรายการใหม่ลงในเมนู QGIS ได้แล้ว ( addLayerMenu, addPluginToDatabaseMenu ฯลฯ ) จากรหัสปลั๊กอินของฉัน แต่ฉันต้องการรายการเมนูใหม่ที่เลเยอร์บนสุด (นี่คือคำขอจากลูกค้า)
14 qgis  pyqgis  qt  gui  context-menu 

1
เป็นไปได้ไหมที่จะแสดงข้อความที่กำหนดเองของเราในแถบสถานะ QGIS โดยใช้ python?
มีวิธีแสดงข้อความที่กำหนดเองของเราในแถบสถานะของ Qgis โดยใช้ python หรือไม่? เหมือนกับในอาร์กิจิสIApplication.statusbar.message(0) = "Please wait..." เช่นนั้นจะมีตัวเลือกใด ๆ ที่จะแสดงแถบความคืบหน้าใน Qgis เช่น IApplication.progressbar.show()
14 qgis  pyqgis 

1
ได้รับระยะทางจากเครื่องมือวัด QGIS หรือไม่
ฉันสร้างปลั๊กอินสำหรับป้อนฐานข้อมูล Spatialite ด้วยรูปแบบการป้อนข้อมูล มีสองฟิลด์ซึ่งแสดงมิติต่ำสุด / สูงสุดของวัตถุ ในช่วงเวลาที่ฉันเรียกเครื่องมือวัด ( iface.actionMeasure().trigger()) ด้วยปุ่มกด "วัด" สองปุ่มให้คลิกส่วนข้อมูลและพิมพ์ค่าด้วยแป้นพิมพ์ของฉันลงในช่อง (QLineEdit) มีความเป็นไปได้ไหมที่หลังจากฉันคลิกขวา (เสร็จสิ้นการวัด) ด้วยเครื่องมือวัดค่าจะถูกกำหนดโดยอัตโนมัติไปยังฟิลด์ (ต่ำสุดหรือสูงสุด, QLineEdit)? เครื่องมือวัดการโทร (ใช้งานได้) คลิกซ้าย: เริ่มการวัด และ 4. ในครั้งเดียว: คลิกขวาและยอมรับมูลค่ารวมของเครื่องมือวัดลงในฟิลด์ขั้นต่ำ (QLineEdit) อัปเดต 1: วันหนึ่งหลังจากถามคำถามนี้ฉันมีความคิดที่จะมีเลเยอร์ความยาวซึ่งฉันสามารถใช้เป็นเครื่องมือวัด (ST_Length (geom)) ข้อดีคือคุณสามารถควบคุมได้อย่างเต็มที่ในการจัดการและรับข้อมูลจากมัน ข้อเสียคือเลเยอร์เพิ่มเติมในโครงการ เวิร์กโฟลว์อาจเป็น: คลิกการวัด: สลับแก้ไขเปิดใช้งาน "เพิ่มคุณสมบัติ" สร้าง linestring ที่แสดงมิติขั้นต่ำของวัตถุ ยืนยันการเปลี่ยนแปลงคำนวณความยาวของการคืนความยาว (ST_Length (geom)) ยอมรับความยาวกับ QLineEdit ปิดกล่องโต้ตอบและลบการคืนค่า (ลบจาก) แต่คำถามที่แท้จริงของฉันยังคงอยู่ มีวิธีรับค่าระยะทางจากเครื่องมือวัดโดยตรงหรือไม่ …

1
วิธีทำให้เลเยอร์หรือกลุ่มไม่ปรากฏในแผงเลเยอร์
ฉันมีเลเยอร์จำนวนมากในเลเยอร์พาเนลภายในกลุ่ม แต่ฉันไม่ต้องการให้แสดง (มีค่อนข้างมากดังนั้นมันจึงดูไม่เป็นระเบียบ) เลเยอร์เหล่านี้จะเข้าร่วมกับคนอื่น ๆ หลายคน เป็นไปได้หรือไม่ที่จะทำให้ผู้ใช้มองไม่เห็นเลเยอร์เหล่านี้( เช่นไม่แสดงในเลเยอร์พาเนลมันไม่เกี่ยวกับการตั้งค่าการมองเห็นของเลเยอร์ ) แต่ยังสามารถเข้าร่วมเลเยอร์อื่นได้หรือไม่? หรืออาจทำให้กลุ่มไม่ปรากฏตัว ที่ใกล้ที่สุดที่ฉันพบคือโพสต์นี้ แต่หวังว่าจะมีวิธีการโดยตรงมากขึ้น: แสดงเลเยอร์เพียงบางส่วนในตำนาน QGIS หรือไม่

5
วิธี snap เครือข่ายถนนไปยังตารางหกเหลี่ยมใน QGIS?
ฉันพยายามใช้ QGIS 2.14 เพื่อจับเครือข่ายถนนไปยังตารางหกเหลี่ยม แต่ฉันได้รับสิ่งประดิษฐ์แปลก ๆ ฉันได้สร้างกริดหกเหลี่ยมด้วยMMQGISเซลล์มีขนาดประมาณ 20 x 23 เมตร ฉันบัฟเฟอร์เครือข่ายถนน 1 ม. และเพิ่มความหนาแน่นจึงมีโหนดทุกสองสามเมตร คุณสามารถเห็นสิ่งที่ฉันพยายามบรรลุด้านล่าง อย่างที่คุณเห็นฉันสามารถทำให้มันทำงานได้ในบางกรณี: - สีน้ำเงินคือถนนหนาแน่น (เส้นบัฟเฟอร์) สีแดงเป็นรุ่น 'hexified' - นี่คือสิ่งที่ฉันต้องการค้นหา สีเทาคือตารางฐานสิบหก จากนั้นฉันใช้คุณสมบัติรูปทรงใหม่ของSnapเพื่อจัดเรียงโหนดไปยังมุมหกเหลี่ยมที่ใกล้เคียงที่สุด ผลลัพธ์มีแนวโน้ม แต่ดูเหมือนจะมีบางกรณีขอบที่เส้นขยายออกเพื่อเติมหกเหลี่ยม (หรือส่วนหนึ่งของมัน): - เหตุผลของบัฟเฟอร์คือรูปทรงเรขาคณิตของ Snapไม่อนุญาตให้คุณไปยังชั้นที่มีรูปทรงเรขาคณิตที่แตกต่างกัน ตัวอย่างเช่นคุณไม่สามารถจัดเรียงโหนดบนเลเยอร์ LINE เพื่อให้คะแนนในเลเยอร์ POINT) ดูเหมือนว่า POLYGON จะมีความสุขมากที่สุดในการถ่าย POLYGON ฉันสงสัยว่าถนนจะขยายออกไปเมื่อด้านหนึ่งของถนนสายบัฟเฟอร์ที่กระโดดไปด้านหนึ่งของเซลล์ฐานสิบหกและอีกฝั่งหนึ่งกระโดดไปด้านอื่น ๆ ของเซลล์ฐานสิบหก ในตัวอย่างของฉันถนนที่ข้ามไปทางทิศตะวันตกทิศตะวันออกในมุมที่รุนแรงดูเหมือนจะเลวร้ายที่สุด สิ่งที่ฉันพยายามไม่ประสบความสำเร็จ: - บัฟเฟอร์เครือข่ายถนนด้วยจำนวนเล็กน้อยดังนั้นมันจึงยังคงเป็นรูปหลายเหลี่ยม แต่บางมาก ทำให้เซลล์หกเหลี่ยมมีความหนาแน่นเพิ่มขึ้น (ดังนั้นจึงมีโหนตามขอบไม่ใช่ที่มุม) …

1
วิธีเข้าถึงแอตทริบิวต์ที่ถูกลบ (ก่อนที่จะส่ง)
ฉันมีการตั้งค่าสัญญาณสำหรับเหตุการณ์การลบคุณสมบัติในเลเยอร์: self.layer.featureDeleted.connect(self.feature_deleted) เมื่อฉันพยายามคว้าคุณลักษณะจากคุณลักษณะที่ถูกลบในสล็อตข้อผิดพลาดStopIterationจะถูกส่งออกไป (นั่นคือไม่สามารถเรียกคืนคุณสมบัติ) ฉันคิดว่าฉันควรจะยังคงสามารถดึงข้อมูลคุณลักษณะจากคุณลักษณะที่ถูกลบก่อนที่การเปลี่ยนแปลงในเลเยอร์จะเกิดขึ้นได้อย่างไร มิฉะนั้นฉันไม่เห็นสิ่งที่ใช้พารามิเตอร์ fid คือ def feature_deleted(self, fid): feature = self.layer.getFeatures(QgsFeatureRequest().setFilterFid(int(fid))).next() idx = self.layer.fieldNameIndex('my_attribute') print feature.attributes()[idx] ฉันจะเข้าถึงคุณลักษณะของคุณลักษณะที่ถูกลบได้ (ก่อนที่จะมีการเปลี่ยนแปลงในเลเยอร์)

2
การเรียกปลั๊กอินการแก้ไขจากคอนโซล Python ของ QGIS
ฉันต้องการเรียกใช้ฟังก์ชั่นปลั๊กอินการแก้ไข QGIS (วิธี TIN) (Raster-> Interpolate) จากคอนโซลของงูหลาม ฉันไม่พบฟังก์ชันที่เกี่ยวข้องภายใน QGIS API หรือภายในรายการอัลกอริทึมการประมวลผล ฉันพบอัลกอริธึม SAGA Triangulation ซึ่งทำงานได้ดี แต่ช้ากว่า 5-10 เท่าและความเร็วมีความสำคัญในกรณีของฉัน ความคิดวิธีการดำเนินการใด ๆ

2
วิธีรับชื่อฟิลด์ใน pyqgis 2.0
ฉันกำลังพยายามเปลี่ยนปลั๊กอินจาก QGIS 1.8 เป็น 2.0 ในรุ่น 1.8 ฉันสร้างตารางชื่อเขตข้อมูลเช่นนี้: layer = vlayer provider = layer.dataProvider() feat = QGSFeatrue() allAttrs = provider.attributeIndexes() provider.select(allAttrs) fieldNames = [] while provider.nextFeature(feat) fields = layer.pendingFields() for (k, field) in fields.iteritems(): fieldNames.append(field.name()) ฉันลองสิ่งนี้สำหรับรุ่น 2.0 ด้วย layer = vlayer fieldNames = [] for feature in layer.getFeatures(): fields = …
13 python  pyqgis  qgis-2 

2
ฉันจะสร้างและเพิ่มฟีเจอร์ให้กับเลเยอร์หน่วยความจำใน QGIS 1.9 ได้อย่างไร
ฉันมีปลั๊กอินที่ใช้งานได้ใน QGIS 1.8 ซึ่งอ่านข้อมูลจากฐานข้อมูล MSAccess และเพิ่มลงในชุดของเลเยอร์หน่วยความจำ มีการประมวลผลที่เกี่ยวข้องในระหว่างกาลดังนั้นฉันไม่คิดว่าการใช้ QGIS เพื่ออ่านโดยตรงจากฐานข้อมูลเป็นตัวเลือก ฉันต้องการย้ายจาก QGIS 1.8 เป็น 1.9 (สาเหตุหลักมาจากการปรับปรุงคุณภาพของนักแต่งเพลงการพิมพ์) ปลั๊กอินไม่ทำงานกับ API ใหม่ ฉันลองใช้วิธีการหลายวิธีที่ปรากฏในการค้นหาของ Google หนึ่งแก้ไขรหัสด้านล่าง - จากhttp://www.qgis.org/pyqgis-cookbook/vector.html#memory-providerเช่นการเพิ่มรูปทรงเรขาคณิตและคุณลักษณะให้กับดาต้าเบสเดอร์จากนั้นอัปเดตเลเยอร์ - เพื่อให้เหมาะกับ API ใหม่ที่ทำงาน เล็กน้อย แต่ไม่สามารถมองเห็นแอตทริบิวต์ได้จนกว่าฉันจะเข้าสู่โหมดแก้ไข (คล้ายกับhttp://hub.qgis.org/issues/3713 ) วิธีอื่นที่มีรายละเอียดในการตอบกลับ # 1 ของลิงค์ด้านบนเพิ่มเลเยอร์และคุณลักษณะอย่างถูกต้อง แต่ฉันไม่สามารถเพิ่มคุณสมบัติให้กับเลเยอร์ได้ ระบุว่ามันควรจะเป็นงานที่ค่อนข้างง่ายฉันหวังว่าบางคนในที่นี้จะสามารถนำเสนอตัวอย่างการทำงานของวิธีการที่ควรทำ (PS ฉันไม่ใช่โปรแกรมเมอร์มืออาชีพและการเข้ารหัสส่วนใหญ่ของฉันค่อนข้างหยาบ - ฉันยินดีต้อนรับแนวทางใด ๆ แต่ขอให้คุณแก้ตัวไม่รู้ในส่วนของฉัน) # Receivers = a list of lists …

1
วิธีสร้างป้ายข้อความพร้อมกล่องพื้นหลัง
ฉันกำลังพยายามสร้างป้ายกำกับที่กำหนดเองสำหรับคุณสมบัติจุดในเลเยอร์เวกเตอร์จุด QGIS และฉันต้องการเขียนปลั๊กอินหลามเพื่อทำมัน เราต้องการให้ฉลากของเราแสดงด้วยสีย้อมสี่เหลี่ยมด้านหลัง (หรืออื่น ๆ !) เลเบลเป็นสตริงที่มีความยาวและถูกสร้างโดยใช้นิพจน์เอ็นจินและเงื่อนไข ฉันคิดว่าวิธีที่ง่ายที่สุดคือให้ผู้ใช้ตั้งค่าเลเบลสำหรับเลเยอร์ที่แอคทีฟตามที่ต้องการแล้วให้ปลั๊กอินของฉันสามารถคว้าข้อความเลเบลจากฟีเจอร์ในเลเยอร์และใช้สตริงข้อความเพื่อสร้างกล่อง ปัญหาของฉันคือฉันไม่สามารถหาวิธีเข้าถึงสตริงข้อความเหล่านั้นใน QGIS API สตริงฉลากสร้างขึ้นโดยเอ็นจิ้นการติดฉลากที่จัดเก็บใน QGIS ได้อย่างไรและฉันจะไปหาพวกเขาได้อย่างไร
13 qgis  pyqgis  labeling 

4
รับพา ธ ของโครงการหรือไฟล์เลเยอร์ใน PyQGIS หรือไม่
ฉันกำลังสร้างไฟล์แรสเตอร์ใหม่จากชั้นเวกเตอร์ในโครงการ ฉันต้องการบันทึกไว้ในไดเรกทอรีเดียวกันกับโครงการหรือไฟล์เลเยอร์ ฉันจะค้นหาเส้นทางนี้โดยใช้ PyQGIS ได้อย่างไร
13 pyqgis  layers 

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