Questions tagged «python»

Python是许多GIS程序中使用的一种开源解释型编程语言。


3
在Python中高效获取多个多边形的交集
我想得到多个多边形的交集。使用Python的shapely程序包,我可以使用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)。但是,这种方法不适用于大量的多边形,因为它需要越来越多的代码。我想要一个接受任意数量的多边形并返回其交点的函数。

2
如何使用Python计算直形骨骼?
是否有Python包提供了Straight Skeleton算法的实现? 我知道开源(C ++)项目CGAL包含一个实现,但似乎cgal-bindings不包含此CGAL包。 无论如何,我都希望使用纯Python实现,可以对其进行修改/扩展以满足自己的需求。 尽管可以处理带孔多边形的实现是可取的,但并非绝对必要。

2
如何在PyQGIS中使用QgsFeature更改属性的值?
我想更新一项功能的属性。但是,我不知道使用功能对象来更新它。我必须使用数据提供程序来更新它。 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在Python中多边形创建空白多边形?
我在python中使用Polygonize函数遇到麻烦。可以在此处找到此食谱的示例。 我的代码的相关部分是: 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., 3., 3., 2., 2., …
12 python  gdal 

2
从shapefile MultiPolygons创建匀称的MultiPolygons
我正在使用Fiona读取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
相当于gdalbuildvrt的Python
有没有一种方法可以使用GDAL Python绑定执行与gdalbuildvrt实用程序相同的任务?到目前为止,除了创建单个数据集的vrt和手动编辑xml之外,我没有找到任何其他方法。我想从多个栅格创建vrt(本质上是执行镶嵌)。使用纯Python是否可能?我的另一个选择是使用子进程简单地调用gdalbuildvrt。

1
Python:找到一种计算多边形的“内部质心”(在弧图中也称为labelPoint)的方法
我正在寻找一种计算(不规则)多边形的内部点(在弧图中也称为labelPoint)的X,Y坐标的方法。我尝试在不使用ArcGIS模块的情况下找到解决方案 “质心”和labelPoint之间的区别在于,质心可能在多边形之外。 我正在使用匀称的模块 从shapely.geometry导入多边形 ref_polygon = Polygon(points) # get the x and y coordinate of the centroid ref_polygon.centroid.wkt 'POINT (558768.9293489187300000 6361851.0362532493000000)' 使用以下数据(我的多边形的顶点) 在此先感谢您的帮助和建议 points = [(560036.4495758876, 6362071.890493258), (560036.4495758876, 6362070.890493258), (560036.9495758876, 6362070.890493258), (560036.9495758876, 6362070.390493258), (560037.4495758876, 6362070.390493258), (560037.4495758876, 6362064.890493258), (560036.4495758876, 6362064.890493258), (560036.4495758876, 6362063.390493258), (560035.4495758876, 6362063.390493258), (560035.4495758876, 6362062.390493258), (560034.9495758876, 6362062.390493258), (560034.9495758876, 6362061.390493258), (560032.9495758876, …

4
匀称地使用:在多边形和多多边形之间转换
[编辑:解决方案只是使用OGR读取shapefile。参见geographika的示例。] 在ESRI shapefile中,“多边形”和“多多边形”之间没有区别。此外,内部孔和外部环之间没有明确的区别(除了给定多边形的“手感”)。 因此,在读取shapefile之后,我获得了描述环的坐标序列的列表,但是如果不进行更深入的处理,我将无法区分这些环中的哪些是外环,内孔或其他多边形。 似乎对于shapely的Polygon和MultiPolygon构造函数,必须明确区分外圈和内圈,所以我应该如何从不清晰的圈列表移动到有序的一组分离的多边形,并明确指定内圈和外圈? 总结一下:如果我有一个多边形环的列表,但是我不知道哪些环是内部的孔或单独的多边形,那么如何最好地将它们分类为具有指定内部孔的单独的多边形? 我正在寻找一种可以在python中实现的简单算法解决方案,该解决方案可用于在1分钟或更短的时间内处理数百个多边形,而我这样做是为了执行大量的交集。


1
Fiona的驱动程序
python软件包fiona有哪些驱动程序?当我查看手册时会说,[...] and the possible formats are enumerated in the fiona.drivers list. 但是,当我输入python时 from fiona import drivers print drivers > <function drivers at 0x108763050> 我如何看待它?
12 python  fiona 

2
使用GDAL访问文件地理数据库(.gdb)栅格吗?
我正在使用一种工具将栅格图层转换为数组以进行NumPy处理,并且理想情况下,我希望能够处理打包在.gdb中的栅格而不导出所有栅格(特别是如果这需要使用ArcGIS或ArcPy的话) )。 OpenFileGDB驱动程序可以做到这一点吗? 据我所知,该驱动程序似乎将栅格图层与矢量图层相同,这使您可以访问有关该图层的一些数据,但不具有ReadAsArray功能。


2
Python无法读取shapefile
我正在尝试使用Jupyter笔记本打开shapefile,但是无法打开它。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 to open 1-11-99n.shx or 1-11-99n.SHX.Try --config SHAPE_RESTORE_SHX true to restore or create …
11 python  shapefile 

1
QGIS导出作曲家在python中为pdf
我有一个包含作曲家的QGIS项目。当然,如果进入GUI,我可以将其导出为pdf等。对于我的make脚本,尽管我想通过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) bridge.setCanvasLayers() QgsProject.instance().read(QFileInfo('../board.qgs')) composition = QgsComposition(canvas.mapSettings()) map_item = composition.getComposerItemById('board36x48') map_item.setMapCanvas(canvas) map_item.zoomToExtent(canvas.extent()) composition.refreshItems() …
11 qgis  python  pyqgis  pdf 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.