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

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


3
การหาจุดหลายเหลี่ยมหลายจุดใน Python อย่างมีประสิทธิภาพ
ฉันอยากได้จุดตัดของรูปหลายเหลี่ยมหลายอัน ใช้shapelyแพ็คเกจของ Python ฉันสามารถหาจุดตัดของรูปหลายเหลี่ยมสองรูปได้โดยใช้intersectionฟังก์ชัน มีฟังก์ชั่นที่มีประสิทธิภาพคล้ายกันเพื่อให้ได้จุดตัดของรูปหลายเหลี่ยมหลายรูปแบบหรือไม่? นี่คือข้อมูลโค้ดเพื่อทำความเข้าใจสิ่งที่ฉันหมายถึง: from shapely.geometry import Point coord1 = ( 0,0 ) point1 = Point(coord1) circle1 = point1.buffer(1) coord2 = ( 1,1 ) point2 = Point(coord2) circle2 = point2.buffer(1) coord3 = ( 1,0 ) point3 = Point(coord3) circle3 = point3.buffer(1) circle1.intersection(circle2)สี่แยกของวงกลมสองวงสามารถพบได้โดย ฉันสามารถหาจุดตัดของทั้งสามวงกลมcircle1.intersection(circle2).intersection(circle3)ได้ อย่างไรก็ตามวิธีนี้ไม่สามารถขายได้กับรูปหลายเหลี่ยมจำนวนมากเนื่องจากต้องใช้รหัสมากขึ้น ฉันต้องการฟังก์ชันที่ใช้รูปหลายเหลี่ยมหลายรูปแบบโดยพลการและคืนค่าจุดตัดของพวกมัน

1
วิธีการเข้าถึงโมดูล QGIS จาก virtualenv ของฉัน
ฉันใช้ Ubuntu 14.4 และฉันได้ติดตั้งสภาพแวดล้อมเสมือนของหลาม จากนั้นฉันก็ติดตั้งไพ ธ อนหลายไลบรารี (gdal, lxml, psycopg2 และอื่น ๆ ) นอกจากนี้ในระบบของฉันฉันมีโมดูลสำหรับ QGIS ดังนั้นเมื่อฉันพิมพ์หลามแล้วฉันสามารถนำเข้าโมดูลนี้เป็น: import qgis.core แต่เมื่อฉันพยายามทำสิ่งเดียวกันผ่าน virtualenv ฉันได้รับข้อผิดพลาด: ไม่พบโมดูล เมื่อฉันสร้าง virtualenv ฉันทำกับตัวเลือก: virtualenv --no-site-packages env ซึ่ง จำกัด env ของฉันจาก env ของระบบ คำถามคือวิธีการเข้าถึงโมดูล QGIS ใน virtualenv ของฉัน
12 qgis  python 

2
วิธีการคำนวณ Straight Skeletons โดยใช้ Python
มีแพ็คเกจ Python ที่ให้การทำงานของ Straight Skeleton algorithm หรือไม่? ฉันทราบว่าCGALโครงการโอเพ่นซอร์ส (C ++) ได้รับการนำไปใช้แต่ดูเหมือนว่าการผูกมัดของ cgal จะไม่รวมแพ็คเกจ CGALนี้ ไม่ว่าในกรณีใดฉันต้องการใช้ Python อย่างแท้จริงซึ่งฉันสามารถแก้ไข / ขยายได้ตามความต้องการ ในขณะที่การใช้งานที่สามารถจัดการรูปหลายเหลี่ยมกับหลุมจะดีกว่าก็ไม่จำเป็นอย่างเคร่งครัด

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 

1
GDAL รูปหลายเหลี่ยมในงูหลามการสร้างรูปหลายเหลี่ยมว่างเปล่า?
ฉันมีปัญหาในการใช้ฟังก์ชัน Polygonize ใน python ตัวอย่างตำราสำหรับการนี้สามารถพบได้ที่นี่ ส่วนที่เกี่ยวข้องของรหัสของฉันคือ: sourceRaster = gdal.Open('myraster.tif') band = sourceRaster.GetRasterBand(1) bandArray = band.ReadAsArray() outShapefile = "polygonized" driver = ogr.GetDriverByName("ESRI Shapefile") if os.path.exists(outShapefile+".shp"): driver.DeleteDataSource(outShapefile+".shp") outDatasource = driver.CreateDataSource(outShapefile+ ".shp") outLayer = outDatasource.CreateLayer("polygonized", srs=None) gdal.Polygonize( band, None, outLayer, -1, [], callback=None ) outDatasource.Destroy() sourceRaster = None ฉันรู้ว่าวงดนตรีมีข้อมูลที่เกี่ยวข้องนี่เป็นตัวอย่างของbandArray: array([[ 4., 4., 3., …
12 python  gdal 

2
การสร้าง Shapely MultiPolygons จาก shapefile MultiPolygons
ฉันกำลังอ่าน shapefile โดยใช้ฟิโอน่า: with fiona.open('data/boroughs/boroughs_n.shp') as source: mpolys = [p for p in source] candidate = polys[0]['geometry'] สิ่งนี้ให้ฉันตามที่มีรายการของพิกัดและพิมพ์ 'MultiPolygon' อย่างไรก็ตามฉันไม่แน่ใจว่าจะใช้ข้อมูลพิกัดเพื่อสร้าง Shapely MultiPolygon ได้อย่างไรเนื่องจากต้องการ a sequence of exterior ring and hole list tuples: [((a1, ..., aM), [(b1, ..., bN), ...]), ...]. มีวิธีที่ 'ถูกต้อง' ในการทำเช่นนี้โดยใช้ Fiona และ Shapely หรือไม่?
12 python  shapely  fiona 

3
Python ที่เทียบเท่ากับ gdalbuildvrt
มีวิธีในการทำงานเช่นเดียวกับยูทิลิตี gdalbuildvrt โดยใช้การผูก GDAL Python หรือไม่ จนถึงตอนนี้ฉันยังไม่พบวิธีการอื่นนอกเหนือจากการสร้าง vrt ของชุดข้อมูลเดียวและแก้ไข xml ด้วยตนเอง ฉันต้องการสร้าง vrt จากหลายภาพแรสเตอร์ เป็นไปได้ไหมถ้าใช้ Python แท้? ตัวเลือกอื่น ๆ ของฉันคือใช้ subprocess เพื่อเรียก gdalbuildvrt

4
ใช้หุ่นดี: แปลระหว่างรูปหลายเหลี่ยมและ MultiPolygons
[แก้ไข: การแก้ปัญหานี้เพียงเพื่อใช้ OGR เพื่ออ่านรูปร่างไฟล์ ดูตัวอย่างของ geographika] ใน Shapefile ของ ESRI ไม่มีความแตกต่างระหว่างรูปหลายเหลี่ยมและ MultiPolygons นอกจากนี้ไม่มีความแตกต่างที่ชัดเจนระหว่างหลุมภายในและวงแหวนภายนอก (นอกเหนือจาก "ความถนัด" ของรูปหลายเหลี่ยมที่กำหนด) ดังนั้นหลังจากอ่านไฟล์รูปร่างฉันมีรายการลำดับการประสานที่อธิบายวงแหวน แต่หากไม่มีการประมวลผลที่เข้มข้นกว่านี้ฉันไม่สามารถแยกแยะว่าวงแหวนใดเป็นวงแหวนภายนอกหลุมภายในหรือรูปหลายเหลี่ยมเพิ่มเติม ปรากฏว่าสำหรับหุ่นดี 's รูปหลายเหลี่ยมและ MultiPolygon ก่อสร้างจะต้องมีความแตกต่างที่ชัดเจนระหว่างภายนอกและแหวนภายในดังนั้นวิธีการที่ฉันควรจะย้ายจากรายการที่ไม่ชัดเจนของแหวนชุดสั่งซื้อของรูปหลายเหลี่ยมแยกออกจากกันกับที่กำหนดไว้อย่างชัดเจนภายในและแหวนภายนอก ? ในการสรุป: ถ้าฉันมีรายการรูปหลายเหลี่ยมของวง แต่ฉันไม่รู้ว่าวงแหวนใดที่เป็นรูในการตกแต่งภายในหรือเป็นรูปหลายเหลี่ยมที่แยกจากกัน ฉันกำลังมองหาโซลูชันอัลกอริทึมแบบง่ายที่ฉันสามารถนำไปใช้ในไพ ธ อนสามารถใช้ในการประมวลผลรูปหลายเหลี่ยมหลายร้อยใน ~ นาทีหรือน้อยกว่าและฉันทำเช่นนี้เพื่อดำเนินการแยกจำนวนมาก

5
ฉันจะแปลงเชพไฟล์เป็นขอบเขตละติจูดและลองจิจูดได้อย่างไร
ฉันมี shapefile ของเขตการปกครองของประเทศและฉันต้องการแยกอาร์เรย์ของละติจูดและลองจิจูดสำหรับแต่ละแผนก .. มันเป็นไปได้ไหมที่จะทำ?
12 python  shapefile  ogr 

1
ไดรเวอร์ของ Fiona
แพคเกจหลามfionaมีไดรเวอร์ใดบ้าง? เมื่อฉันตรวจสอบคู่มือมันบอกว่า[...] and the possible formats are enumerated in the fiona.drivers list. อย่างไรก็ตามเมื่อฉันพิมพ์ในหลาม from fiona import drivers print drivers > <function drivers at 0x108763050> ฉันจะดู "เป็น" ที่ได้อย่างไร
12 python  fiona 

2
กำลังเข้าถึงไฟล์ geodatabase (.gdb) rasters ด้วย GDAL หรือไม่
ฉันกำลังทำงานกับเครื่องมือที่แปลงเลเยอร์แรสเตอร์เป็นอาร์เรย์สำหรับการประมวลผลด้วย NumPy และในอุดมคติฉันต้องการที่จะทำงานกับ rasters ที่มาในแพ็คเกจด้วย. gdb โดยไม่ต้องส่งออกทั้งหมด (โดยเฉพาะถ้าต้องการ ArcGIS หรือ ArcPy ) เป็นไปได้กับไดรเวอร์ OpenFileGDB หรือไม่ จากสิ่งที่ฉันบอกได้ว่าไดรเวอร์นี้ดูเหมือนว่าจะรักษาเลเยอร์แรสเตอร์เหมือนกับเลเยอร์เวกเตอร์ซึ่งให้คุณเข้าถึงข้อมูลบางอย่างเกี่ยวกับเลเยอร์ แต่ไม่ได้ให้ฟังก์ชั่น ReadAsArray

5
วิธีการแปลงคุณสมบัติง่าย ๆ ของเส้นเป็นเครือข่ายทอพอโลยี
การใช้ Gdal / OGR มีวิธีแปลงเลเยอร์บรรทัด shp, kml หรือ PostGIS เป็นเครือข่ายของโหนดและเซ็กเมนต์ดังนั้นจึงสามารถใช้ในแพ็คเกจเช่น networkx?

2
Python ไม่สามารถอ่าน shapefile ได้
ฉันกำลังพยายามเปิด shapefile ด้วยสมุดบันทึก Jupyter แต่ฉันไม่สามารถเปิดได้ Shapefile ตั้งอยู่ในโฟลเดอร์เดียวกับสมุดงานของฉันและ Python ไม่สามารถระบุได้แม้ว่าฉันจะใช้เส้นทางแบบเต็ม import shapefile as shp import matplotlib.pyplot as plt sf = shp.Reader(r'C:\Users\Public\Documents\1-11-99n.shp') ShapefileException: Unable to open C:\Users\Public\Documents\1-11-99n.dbf or C:\Users\Public\Documents\1-11-99n.shp. การเปิดด้วย fiona และ geopandas ก็ไม่ทำงานเช่นกัน import fiona shape = fiona.open("1-11-99n.shp") และ import geopandas as gp shp = gp.GeoDataFrame.from_file('1-11-99n.shp') print (shp) จบทั้งคู่ด้วย CPLE_OpenFailedError: b'Unable …
11 python  shapefile 

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 

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