Questions tagged «python»

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

2
使用GDAL创建具有特定纬度/经度位置的图像?
我有以下格式的纬度,经度和data_val的ASCII文件。 35-13.643782N, 080-57.190157W, 118.6 ... 我有一个GeoTiff图像文件,可以轻松查看它。 我想在ASCII文件中找到的特定纬度/经度位置上,在图像上放置“大头针”(可以是点/标记/星号,或者最简单的东西)。 到目前为止,这是我设法做到的: 我的源图像如下所示: Driver: GTiff/GeoTIFF Files: /tmp/Charlotte SEC 100.tif Size is 16867, 12358 Coordinate System is: PROJCS["Lambert Conformal Conic", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.2572221010042, AUTHORITY["EPSG","7019"]], AUTHORITY["EPSG","6269"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4269"]], PROJECTION["Lambert_Conformal_Conic_2SP"], PARAMETER["standard_parallel_1",38.66666666666666], PARAMETER["standard_parallel_2",33.33333333333334], PARAMETER["latitude_of_origin",34.11666666666667], PARAMETER["central_meridian",-78.75], PARAMETER["false_easting",0], PARAMETER["false_northing",0], UNIT["metre",1, AUTHORITY["EPSG","9001"]]] Origin = (-365041.822331817995291,240536.419747152860509) Pixel Size = (42.334586069440391,-42.334898968590878) …

1
在pyqgis中注册自定义qgsfunction
我在独立应用程序中使用pyqgis。现在,我想创建一个自定义表达式,以根据的规则用作filterExpression ruleBasedRendererV2。(我之前尝试过使用现有功能的渲染器,并且一切正常!) 自定义qgisfunction(按位AND功能-由于尚无此功能)如下所示: 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)在注册功能后有效,否则失败。但是,我仍然不能在规则内使用表达式... 现在,包含该功能的文件位于我的项目文件夹的顶部,该文件夹自动包含在PATH中,对吗?(根据Nathan Woodrow的说法,文件可以放在PATH中的任何位置-请参阅https://nathanw.net/2012/11/10/user-defined-expression-functions-for-qgis/)。 更新:到目前为止,函数的注册可以通过上面的代码进行-现在问题出在函数本身上。 更新#2: 很奇怪!do_nothing获得两个参数的简单函数在我的代码中运行良好: @qgsfunction(args="auto", group='Python') def do_nothing(value1, value2, feature, parent): …

3
使用QGIS以编程方式查找与另一个矢量多边形图层重叠> 90%的多边形?
我试图弄清楚如何使用python提取一个向量中与另一个向量重叠> 90%的多边形。然后,我想要一个仅显示这些多边形的矢量/地图。示例图片显示了我的图层。我希望所有> 90%红色的灰色多边形。 我需要通过python(或类似的自动化方法)来完成所有操作。我有约1000张地图以相同的方式处理。
9 qgis  python  pyqgis 

1
将GDAL添加为对Python包的依赖项?
我正在尝试打包一个将GDAL用于PyPI的Python脚本。我首先在我的文章中加入了直接参考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 5, in <module> from pkg_resources import load_entry_point File "/home/desouslu/.virtualenvs/test_p3/lib/python3.4/site-packages/pkg_resources.py", …
9 python  gdal 

2
删除特征时如何减小shapefile的大小?
这个小小的脚本删除了所有图层中的所有小功能。这可以正常工作,但.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 

3
在PyQGIS中循环执行空间查询
我所试图做的事:循环通过一个点shapefile,然后选择属于每个点为一个多边形。 以下代码受我在一本书中发现的空间查询示例的启发: 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 这有效,并且确实选择了数据集,但是问题在于它是通过bounding box选择的,因此显然返回的点我不感兴趣: 如何不使用qgis:selectbylocation仅返回多边形内的点? …


3
在二进制栅格中创建大量随机点?
我想在二进制栅格中创建10000个点(或更大点)的点矢量数据集,该点应限制在栅格值为1的区域中。 我尝试了以下步骤。 多边形栅格化 QGIS:矢量->研究工具->随机点 这可以正常工作到2000点,但是任何以上都会导致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功能可以分析多边形的边缘?如果没有本地PostGIS功能,我可能会对基于Python的方法感兴趣。 由于多边形的边数可能不同,因此将结果存储在PostGIS表中的聪明方法是什么?

2
使用OGR / GDAL确定shapefile和栅格在Python中是否重叠?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 我正在使用OGR / GDAL在python中构建脚本。 我有一组shapefile和一组GeoTiff栅格文件。 如果脚本不与栅格区域相交,我希望脚本忽略它们。 shapefile不是矩形,因此我不能简单地比较layer.GetExtent()返回的xmin / xmax,ymin / ymax值。我需要代表其整体形状的实际多边形,然后通过某种方式确定该多边形是否与栅格正方形相交。 我当时想我可以以某种方式将shapefile中的所有多边形合并为一个要素,然后读取该要素上的几何图形,然后将该信息与栅格范围进行比较。但是,我不确定具体如何执行此操作。 如何从shapefile中提取边界多边形信息? 如何确定该多边形是否与给定的正方形相交?

1
如何从python过滤QGIS层?
使用QGIS 2.4 python控制台,我试图仅显示图层功能的子集。我已经设法从图层中获得了两个功能: featuresIterator = layer.getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4')) 并从dataProvider中: featuresIterator = layer.dataProvider().getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4')) (我不确定是否会有所区别)。 我现在想要实现的是仅显示这些功能。使用与GUI中的查询生成器完全相同的方法。我不知道是否必须在渲染级别(将渲染某些功能而不是其他功能)或数据提供者的级别(仅向图层提供仅包含数据的视图的视图)进行管理所需的子集),或介于两者之间的某处。
9 qgis  python 


3
如何使QGIS与熊猫一起玩(Windows)?
有没有人成功让熊猫在Windows上使用QGIS的Python安装?我已经使用OSGeo4W安装程序来安装QGIS2.2,它随Python 2.7和Numpy 1.5.1一起提供。任何合理的新版熊猫都需要Numpy 1.6.1或更高版本。所以这似乎是我的主要问题。我尝试过:-使用easy_install构建较旧版本的熊猫(例如0.7.3和0.4.1),但这给了我很长的错误列表,至少其中最后一个与distutils \ msvc9compiler.py有关。 -使用旧的熊猫版本的二进制文件,但它们都是为Numpy 1.6.1构建的-升级Numpy,这也给我一个错误消息。如果有人感兴趣,该消息以query_vcvarsall中的第299行“ File:C:\ OSGeo4W \ apps \ Python27 \ lib \ distutils \ msvc9compiler.py”结尾。 我想知道是否有其他人能够成功使熊猫与Windows上的QGIS安装配合使用? 如果QGIS附带不到三年的Numpy版本,那就太容易了。有人知道这种升级是否适用于即将发布的QGIS版本吗?
9 qgis  python  numpy 

1
确定形状区域字段名称
我正在处理各种空间多边形文件(shapefile,文件/个人gdb要素类,sde要素类(某些具有空间视图)),并且根据文件类型,我得到了多个Shape Area要素类字段名称(必填字段,而不是已创建的字段) 因此,例如,字段名称的范围从“ Shape_Area”,“ SHAPE_Area”,“ SHAPE.AREA”,“ GEOMETRY_Area”,“ GEOMETRY.AREA” 我正在编写一个python脚本以提取所有这些类型的要素类的区域,并且按照以下方式进行操作: for field in arcpy.ListFields(fc): if field.name in ["Shape_Area", "SHAPE_Area", "SHAPE.AREA", "GEOMETRY_Area", "GEOMETRY.AREA"]: do something 我想知道是否还有一种更聪明的方法来提取形状区域字段,而不只是列出所有可以命名的方式?似乎没有像Area这样的字段属性。还有其他方法吗?

2
地理处理速度测试的结果异常
我一直在观察Python地理处理脚本的异常性能。(附加的)脚本执行以下操作: 使用搜索光标查找与面要素相对应的UTM区域 根据搜索光标结果创建空间参考对象 将.csv转换为要素图层,然后转换为点要素类 根据脚本的运行方式,我注意到处理时间明显不同: 使用IDLE = 203秒的32位处理 32位处理前台脚本工具 = 91秒 64位处理后台脚本工具 = 206秒 在上述条件下,为什么此脚本的性能会如此不同? 我当然不希望前台运行的32位脚本工具的速度是其他方法的2倍。 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 = r'C:\workspace' #################### ## Script tool parameters fc = arcpy.GetParameterAsText(0) # Feature class outws = arcpy.GetParameterAsText(1) # Folder arcpy.env.workspace = arcpy.GetParameterAsText(2) …

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.