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

Python เป็นภาษาโปรแกรมโอเพ่นซอร์สที่ใช้ในโปรแกรม GIS จำนวนมาก

1
ลงทะเบียน qgsfunction ที่กำหนดเองใน pyqgis
ฉันใช้ pyqgis ในแอปพลิเคชันแบบสแตนด์อโลน ตอนนี้ผมต้องการที่จะสร้างการแสดงออกที่กำหนดเองเพื่อที่จะใช้เป็น FilterExpression ruleBasedRendererV2ในการปกครองของ (ฉันลองใช้โหมดแสดงภาพกับฟังก์ชั่นที่มีอยู่ก่อนหน้าและทุกอย่างทำงานได้ดี!) Custom qgisfunction(bitwise AND-function - เนื่องจากยังไม่มีฟังก์ชั่นดังกล่าว) มีลักษณะดังนี้: from qgis.utils import qgsfunction @qgsfunction(args="auto", group='Python') def bitwise_and(value1, value2, feature, parent): return value1 & value2 ฉันพยายามลงทะเบียนผ่าน: from qgis.core import QgsExpression QgsExpression.registerFunction(bitwise_and) ทดสอบการแสดงออกผ่าน: expressionString = 'bitwise_and(2, 2) = 2' exp = QgsExpression(expressionString) if exp.hasParserError(): print(exp.parserErrorString()) (ให้2=2เสมอTrue) ทำงานหลังจากลงทะเบียนฟังก์ชั่นและล้มเหลวหากไม่ได้ แต่ถึงกระนั้นฉันไม่สามารถใช้การแสดงออกภายในกฎ …

3
การหารูปหลายเหลี่ยมโดยทางโปรแกรม> 90% ซ้อนทับโดยชั้นรูปหลายเหลี่ยมเวกเตอร์อื่นโดยใช้ QGIS?
ฉันพยายามหาวิธีใช้ python เพื่อแยกรูปหลายเหลี่ยมในเวกเตอร์หนึ่งที่ซ้อนทับด้วย> 90% โดยเวกเตอร์อื่น ฉันต้องการมีเวกเตอร์ / แผนที่ที่จะแสดงรูปหลายเหลี่ยมเหล่านั้นเท่านั้น ภาพตัวอย่างแสดงเลเยอร์ของฉัน ฉันต้องการรูปหลายเหลี่ยมสีเทาทั้งหมดที่> แดง 90% ฉันต้องทำสิ่งนี้ผ่านทาง python (หรือวิธีการแบบอัตโนมัติในทำนองเดียวกัน) ฉันมีแผนที่ประมาณ 1,000 แผนที่เพื่อดำเนินการในลักษณะเดียวกัน
9 qgis  python  pyqgis 

1
เพิ่ม GDAL เป็นการพึ่งพาแพ็คเกจ Python หรือไม่
ฉันพยายามจัดทำสคริปต์ Python ที่ใช้ GDAL สำหรับ PyPI ฉันเริ่มต้นด้วยการอ้างอิงโดยตรงในsetup.py: install_requires=['GDAL==1.11.2'], วิธีนี้แพ็คเกจไม่สามารถติดตั้งในสภาพแวดล้อมการทดสอบเสมือนจริงของฉัน: extensions/gdal_wrap.cpp:2855:22: fatal error: cpl_port.h: No such file or directory #include "cpl_port.h" ^ compilation terminated. error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ฉันลองแล้วมีการอ้างอิงถึงpygdalเนื่องจากมีการทำเครื่องหมายเป็นรุ่นที่เป็นมิตร virtualenv: install_requires=['pygdal'], วิธีนี้การติดตั้งจะเสร็จสิ้นโดยไม่มีข้อผิดพลาด (แต่ด้วยการโหลดคำเตือนการคอมไพล์ตามปกติ) อย่างไรก็ตามเมื่อนั้นฉันจึงเรียกใช้สคริปต์ฉันได้รับข้อผิดพลาดนี้กลับมา: Traceback (most recent call last): File "/home/desouslu/.virtualenvs/test_p3/bin/hasc2gml", line …
9 python  gdal 

2
วิธีลดขนาดของรูปร่างเมื่อคุณสมบัติถูกลบไปแล้ว?
สคริปต์ตัวจิ๋วนี้จะลบฟีเจอร์เล็ก ๆ ทั้งหมดในเลเยอร์ทั้งหมด ใช้งานได้ดี แต่ขนาดของไฟล์. shp จะไม่ลดลง บอกฉันทีว่าทำไม... canvas = iface.mapCanvas() expr = QgsExpression("$length<100") for l in canvas.layers(): l.startEditing() it = l.getFeatures(QgsFeatureRequest(expr)) for ft in it: l.deleteFeature(ft.id()) l.commitChanges()
9 qgis  python 

1
กำลังค้นหาเอกสาร Python GDAL อยู่ใช่ไหม
มีเอกสารอย่างเป็นทางการสำหรับโมดูล python GDAL หรือไม่ มีตำราหลายเล่ม แต่มีข้อมูลไม่เพียงพอในแต่ละฟังก์ชันหรืออาร์กิวเมนต์สำหรับฟังก์ชันพื้นฐานที่สุด

3
การทำ Spatial Query ในลูปใน PyQGIS
สิ่งที่ฉันพยายามทำ: วนลูปผ่านไฟล์รูปร่างจุดและเลือกแต่ละจุดที่อยู่ในรูปหลายเหลี่ยม โค้ดต่อไปนี้ได้รับแรงบันดาลใจจากตัวอย่างการสืบค้นเชิงพื้นที่ที่ฉันพบในหนังสือ: mitte_path = r"D:\PythonTesting\SelectByLocation\mitte.shp" punkte_path = r"D:\PythonTesting\SelectByLocation\punkte.shp" polygon = QgsVectorLayer(mitte_path, 'Mitte', 'ogr') points = QgsVectorLayer(punkte_path, 'Berlin Punkte', 'ogr') QgsMapLayerRegistry.instance().addMapLayer(polygon) QgsMapLayerRegistry.instance().addMapLayer(points) polyFeatures = polygon.getFeatures() pointsCount = 0 for poly_feat in polyFeatures: polyGeom = poly_feat.geometry() pointFeatures = points.getFeatures(QgsFeatureRequest().setFilterRect(polyGeom.boundingBox())) for point_feat in pointFeatures: points.select(point_feat.id()) pointsCount += 1 print 'Total:',pointsCount มันใช้งานได้และมันเลือกชุดข้อมูล แต่ปัญหาก็คือมันเลือกตามขอบกล่องดังนั้นจึงทำให้เห็นได้ชัดว่าฉันไม่สนใจจุดกลับมา: …

3
การสร้างคะแนนสุ่มจำนวนมากในไบนารีแรสเตอร์?
ฉันต้องการสร้างชุดข้อมูลเวกเตอร์แบบจุด 10,000 จุด (หรือใหญ่กว่า) ภายในไบนารีแรสเตอร์ซึ่งจุดควรถูก จำกัด พื้นที่ที่ค่าแรสเตอร์เป็น 1 ฉันลองทำตามขั้นตอนต่อไปนี้ รูปหลายเหลี่ยมแรสเตอร์ QGIS: Vector -> เครื่องมือวิจัย -> คะแนนสุ่ม วิธีนี้ใช้งานได้ดีมากถึง 2,000 คะแนน แต่สิ่งที่เหนือกว่าเพียงแค่ทำให้ QGIS ผิดพลาด มีวิธีในการสร้างชุดข้อมูลเวกเตอร์ที่มีคุณสมบัติจุดจำนวนมากที่ จำกัด โดยไบนารีแรสเตอร์ (หรือรุ่นที่มีรูปหลายเหลี่ยมของมัน) หรือไม่? เครื่องมือต่อไปนี้อยู่ในการกำจัดของฉันจัดอันดับจากที่นิยมมากไปน้อย: QGIS, Python, R, ArcGIS นี่คือสิ่งที่ฉันจะทำเพียง 10 เท่าที่มีคุณสมบัติจุด

1
การวิเคราะห์รูปหลายเหลี่ยม PostGIS (การวางแนวความยาวขอบ)
ฉันค่อนข้างใหม่ในโลกของ GIS และโดยเฉพาะอย่างยิ่ง PostGIS ดังนั้นโปรดขอโทษด้วยถ้าคำตอบดูเหมือนชัดเจน ... ฉันต้องการทำการวิเคราะห์เกี่ยวกับอาคารหลายหลัง สิ่งหนึ่งที่ฉันสนใจคือพื้นผิวด้านหน้าของพวกเขาพร้อมกับทิศทางที่เกี่ยวข้อง ดังที่แสดงในภาพด้านล่างฉันต้องการมีความยาวและการวางแนว (ปกติ) ของขอบทั้งหมดในชุดรูปหลายเหลี่ยม ในตัวอย่างฉันเน้นเพียงพื้นผิวเดียว ตารางผลลัพธ์อาจมีลักษณะเช่นนี้: building_id | edge_id | orientation | edge_length ------------------------------------------------- 1 | 1 | 315 | 10.0 1 | 2 | 45 | 7.0 1 | ... | ... | ... อย่างไรก็ตามฉันไม่แน่ใจว่ามันเป็นวิธีที่ฉลาดในการจัดเก็บผลลัพธ์เพื่อการประมวลผลเพิ่มเติม (เช่นคำนวณระยะทางจากขอบไปยังอาคารถัดไป ฯลฯ ) ดังนั้นคำถามของฉันคือสองเท่า: มีฟังก์ชัน PostGIS ที่มีประสิทธิภาพที่สามารถวิเคราะห์ขอบของรูปหลายเหลี่ยมได้หรือไม่ …

2
การพิจารณาว่า Shapefile และแรสเตอร์ซ้อนทับกันใน Python โดยใช้ OGR / GDAL หรือไม่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันกำลังสร้างสคริปต์ใน python โดยใช้ OGR / GDAL ฉันมีชุดไฟล์รูปร่างและชุดไฟล์แรสเตอร์ GeoTiff ฉันต้องการให้สคริปต์ของฉันเพิกเฉยกับรูปร่างของไฟล์หากพวกเขาไม่ตัดกันกับพื้นที่แรสเตอร์ Shapefile ไม่ได้เป็นรูปสี่เหลี่ยมผืนผ้าดังนั้นฉันไม่สามารถเปรียบเทียบค่า xmin / xmax, ymin / ymax ที่ส่งกลับโดย layer เท่านั้น GetGetExtent () ฉันต้องการรูปหลายเหลี่ยมที่เกิดขึ้นจริงซึ่งเป็นรูปร่างโดยรวมแล้ววิธีพิจารณาว่ารูปหลายเหลี่ยมนั้นตัดกับสี่เหลี่ยมแรสเตอร์หรือไม่ ฉันคิดว่าฉันสามารถรวมรูปหลายเหลี่ยมทั้งหมดใน shapefile เข้ากับคุณลักษณะหนึ่งแล้วอ่านเรขาคณิตในคุณลักษณะนั้นแล้วเปรียบเทียบข้อมูลนั้นกับขอบเขตแรสเตอร์ อย่างไรก็ตามฉันไม่แน่ใจเกี่ยวกับวิธีการดำเนินการนี้โดยเฉพาะ วิธีดึงข้อมูลรูปหลายเหลี่ยมเส้นขอบจาก shapefile? วิธีการตรวจสอบว่ารูปหลายเหลี่ยมนั้นตัดกันพื้นที่สี่เหลี่ยมที่กำหนดหรือไม่

1
วิธีการกรองเลเยอร์ QGIS จากไพ ธ อน?
การใช้คอนโซล Python ของ QGIS 2.4 ฉันพยายามแสดงเฉพาะเซ็ตย่อยของคุณสมบัติเลเยอร์ ฉันจัดการเพื่อรับคุณสมบัติทั้งจากเลเยอร์: featuresIterator = layer.getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4')) และจาก dataProvider: featuresIterator = layer.dataProvider().getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4')) (ฉันไม่แน่ใจที่จะเข้าใจความแตกต่าง) สิ่งที่ฉันต้องการบรรลุในตอนนี้คือการแสดงเฉพาะคุณสมบัติเหล่านี้ ในลักษณะเดียวกับที่ใช้ในการสร้างแบบสอบถามจาก GUI ฉันไม่ทราบว่าจะต้องมีการจัดการที่ระดับการแสดงผล (ซึ่งจะทำให้คุณลักษณะบางอย่างและไม่ใช่คุณสมบัติอื่น ๆ ) หรือในระดับผู้ให้บริการข้อมูล (ซึ่งจะให้มุมมองข้อมูลที่มีเพียงชั้นเท่านั้น เซตย่อยที่ต้องการ) หรือที่อื่น ๆ ในระหว่างนั้น
9 qgis  python 

3
การตั้งค่าคำอธิบายสัญลักษณ์ของตำนานเค้าโครง ArcMap จากตาราง?
ArcMap มีความสามารถในการแสดงคำอธิบายเพิ่มเติมสำหรับแต่ละรายการในรายการสัญลักษณ์ ฉันจะเติมคุณสมบัตินั้นจากตารางได้อย่างไร เป้าหมายคือการหลีกเลี่ยงการแก้ไขแต่ละสัญลักษณ์หนึ่งโดยหนึ่งในการสั่งซื้อเพื่อเพิ่มคำอธิบาย

3
จะทำให้ QGIS เล่นด้วยนุ่น (Windows) ได้อย่างไร?
มีใครบ้างที่ประสบความสำเร็จในการทำให้แพนด้าทำงานกับการติดตั้ง Python ของ QGIS บน Windows? ฉันใช้ตัวติดตั้ง OSGeo4W เพื่อติดตั้ง QGIS2.2 ซึ่งมาพร้อมกับ Python 2.7 และ Numpy 1.5.1 แพนด้ารุ่นใหม่ที่สมเหตุสมผลต้องใช้ Numpy 1.6.1 หรือใหม่กว่า ดังนั้นดูเหมือนว่าปัญหาหลักของฉัน ฉันได้ลอง: - สร้าง pandas รุ่นเก่ากว่า (เช่น 0.7.3 และ 0.4.1) โดยใช้ easy_install แต่นั่นทำให้ฉันมีรายการข้อผิดพลาดที่ยาวมากอย่างน้อยที่สุดตัวสุดท้ายจะเกี่ยวข้องกับ distutils \ msvc9compiler.py - การใช้ไบนารีของนุ่นรุ่นเก่า แต่มันถูกสร้างขึ้นสำหรับ Numpy 1.6.1 - การอัปเกรด Numpy ซึ่งทำให้ฉันมีข้อผิดพลาด ในกรณีที่ใครสนใจข้อความลงท้ายด้วย "ไฟล์" C: \ OSGeo4W …
9 qgis  python  numpy 

1
การกำหนดชื่อเขตพื้นที่รูปร่าง
ฉันกำลังจัดการกับความหลากหลายของไฟล์รูปหลายเหลี่ยมเชิงพื้นที่ (shapefiles, ไฟล์ / คุณสมบัติส่วนบุคคล gdb ชั้นเรียน, คุณลักษณะชั้นเรียน sde (บางส่วนที่มีมุมมองเชิงพื้นที่)) และขึ้นอยู่กับประเภทไฟล์ที่ฉันได้รับ ฟิลด์ที่ต้องการไม่ใช่ฟิลด์ที่สร้างขึ้น) ตัวอย่างเช่นชื่อฟิลด์จะแตกต่างจาก "Shape_Area", "SHAPE_Area", "SHAPE.AREA", "GEOMETRY_Area", "GEOMETRY.AREA" ฉันเขียนสคริปต์หลามเพื่อดึงพื้นที่ของคลาสคุณลักษณะเหล่านี้ทั้งหมดและฉันจะทำบางสิ่งตามบรรทัดของ: for field in arcpy.ListFields(fc): if field.name in ["Shape_Area", "SHAPE_Area", "SHAPE.AREA", "GEOMETRY_Area", "GEOMETRY.AREA"]: do something ฉันสงสัยว่ามีวิธีที่ฉลาดกว่าในการดึงฟิลด์รูปร่างออกมาแทนที่จะแสดงรายการทุกวิธีที่สามารถตั้งชื่อได้หรือไม่ ดูเหมือนจะไม่มีคุณสมบัติเขตข้อมูลสำหรับสิ่งที่ต้องการพื้นที่ มีวิธีอื่นในการทำเช่นนี้หรือไม่?

2
ผลลัพธ์ที่ผิดปกติสำหรับการทดสอบความเร็วการประมวลผลทางภูมิศาสตร์
ฉันสังเกตการทำงานผิดปกติด้วยสคริปต์การประมวลผล Python สคริปต์ (แนบ) ดำเนินการต่อไปนี้: ใช้เคอร์เซอร์ค้นหาเพื่อค้นหาโซน UTM ที่สอดคล้องกับคุณสมบัติรูปหลายเหลี่ยม สร้างวัตถุอ้างอิงเชิงพื้นที่โดยยึดตามผลลัพธ์ของเคอร์เซอร์ค้นหา แปลง. csv เป็นเลเยอร์คุณลักษณะแล้วไปยังคลาสคุณลักษณะจุด ฉันสังเกตเห็นเวลาการประมวลผลที่แตกต่างกันอย่างชัดเจนตามวิธีการเรียกใช้สคริปต์: การประมวลผลแบบ 32 บิตโดยใช้IDLE = 203 วินาที เครื่องมือประมวลผลเบื้องหน้า32 บิต = 91 วินาที เครื่องมือสคริปต์พื้นหลังการประมวลผล64 บิต = 206 วินาที เหตุใดสคริปต์นี้จึงทำงานแตกต่างกันไปตามเงื่อนไขข้างต้น แน่นอนว่าฉันไม่คาดหวังว่าเครื่องมือสคริปต์ 32 บิตจะทำงานในเบื้องหน้าว่าเร็วถึง 2X เท่าวิธีอื่น ๆ import arcpy, os, time ###IDLE Parameters ##fc = r'C:\path\to\polygon\fc\with\utm\zones\and\features' ##outws = r'C:\out\location' ##arcpy.env.workspace = …

3
ค้นหาระเบียนที่ซ้ำกันในฟิลด์โดยใช้ ArcGIS for Desktop หรือไม่
ฉันกำลังมองหาระเบียนที่ซ้ำกันในไฟล์ dbf ตามคุณลักษณะที่เรียกว่า 'ID' ฉันมีไฟล์ dbf ต่าง ๆ จาก 500,000 เรคคอร์ดถึง 1.5 ล้านและฉันรู้ว่ามีโฮสต์ของการซ้ำซ้อน ฉันต้องการเพิ่มฟิลด์ 'ทำซ้ำ' ซึ่งระบุว่าใช่หรือไม่ใช่ (หรือ 1 หรือ 0 ใช้ได้) เมื่อมีแอตทริบิวต์ ID อยู่ที่อื่น การใช้สคริปต์ python ต่อไปนี้ใน Field Calculator ส่งคืน 1 สำหรับรายการที่ซ้ำกันและ 0 สำหรับรายการที่ไม่ซ้ำ uniqueList = [] def isDuplicate(inValue): if inValue in uniqueList: return 1 else: uniqueList.append(inValue) return 0 isDuplicate(!FIELD_NAME!) …

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