Questions tagged «qgis-processing»

空间数据处理框架,为QGIS带来了高级分析功能。

3
QGIS 2.14独立的GRASS提供程序缺少Msys文件夹,无法执行工具
在QGIS 2.12及更低版本中,当手动设置GRASS provider文件夹路径时,这就是做到这一点的方法 在GIS 2.14中,同一路径(... \ apps \ msys)中没有Msys文件夹,也没有QGIS安装中的任何其他文件夹。 因此,即使QGIS独立版本需要正确设置才能使GRASS工具正常工作,也无法做到。 那么,如何使GRASS工具在QGIS 2.14中工作?

2
无法在Windows 7 64位上加​​载插件“处理”
我同时使用独立安装程序和OSgeo4w安装程序安装了QGIS(2.0.1-Dufour Dufour,d94c044),似乎处理插件有问题。起初我以为是python路径问题,但现在我想知道所有安装是否正确。我不知道这些库在哪里,所以我需要一些调试该问题的帮助。 这是我所知道的: 启动QGIS时出现以下错误消息 我的计算机上不存在以下文件夹: C:\ Users \ gstein / .qgis2 / python C:\ Users \ gstein / .qgis2 / python / plugins C:\ PROGRA〜1 \ QGISDU〜1 \ bin \ python27.zip C:\ PROGRA〜1 \ QGISDU〜1 \ apps \ Python27 \ lib \ plat-win C:\ PROGRA〜1 \ QGISDU〜1 \ apps \ …

2
是否将ArcToolbox工具添加到QGIS?
我一直在使用ArcGIS中一个称为SPreAD-GIS的公共工具。它是一系列“作为ArcGIS工具箱实现”(带有tbx文件)的python脚本。 我是QGIS的新手。 有没有办法在QGIS中整合和使用SPreAD-GIS?

3
使用QGIS求和相邻多边形的值?
我希望您能解决以下问题:我有一个向量(多边形)层。我想为该图层添加一个属性-对于每个多边形-将其所有相邻多边形的特定字段的值相加。 举一个更具体的例子:我有一个包含人口信息的地区的多边形层。现在,对于每个地区,我想知道在其所有邻近地区中有多少人居住。 因为我有300多个区,所以无法为每个区手动执行此操作。 有什么方法可以在QGIS中更有效地做到这一点?

3
将复杂的shapefile划分为网格
我有一个具有多边形/多多边形特征的相当详细的shapefile(文件约为500mb)。它实际上是整个世界的shapefile,其特征代表海岸线。我需要使用网格划分此数据。明确地说,我不想对数据进行“排序”,而是将多边形实际切成小块。我知道之前曾有人问过这个问题,但是我发现的解决方案对我不起作用。 我试过了: 使用QGIS并将我的shapefile内容与矢量网格相交-结果非常糟糕。大多数主要陆地都神奇地消失了,尽管有时似乎有较小的一块土地。我应该注意,这种方法对简单得多的数据(例如,较少的点)非常有效 使用OGR的相交工具。我通过ogr2ogr甚至通过滚动自己的C ++工具都进行了尝试。两者都具有与QGIS相同的问题。对于简单的文件,它们也不会出现此问题,但是对于较复杂的文件,则不会通过。作为参考,我使用的是澳大利亚和新西兰的shapefile,大小不超过20mb,并且QGIS和OGR都无法对其进行“网格化”。 有人建议一次使用PostGIS,因为它具有交集功能-但PostGIS的ST_Intersect使用与OGR相同的GEOS后端。实际上,据我所知,它们都调用相同的函数,因此我认为PostGIS不会产生不同的结果。 我一直在寻找关于其他尝试方法的建议。我需要一个功能强大的应用程序或工具包,可以将高度详细的shapefile划分为图块。 编辑:添加一些更多的信息 针对Simbamangu: shapefile基本上是来自OpenStreetMap的海岸线数据。这是“ processed_p”文件的合并版本(因此不会拆分为图块),我通过给他们的开发人员列表发送了电子邮件。请注意,他们将瓦片分割成100km x 100km重叠的块并不一定是我想要的-我不希望重叠,我想自由选择网格大小,或者我只想使用默认处理的_p。 默认情况下,海岸线数据具有QGIS报告的几何误差。我使用一个小的工具将这些错误汇总在一起,使用发现的一些代码专门解决了这个问题(修复海岸线数据中的几何错误:https : //github.com/tudelft-gist/prepair)。使用此工具在文件上运行几乎可以修复QGIS发现的所有错误。我仅在清理文件后尝试进行相交。 我使用QGIS所做的正是:打开数据以确保它在QGIS中看起来不错。尝试通过使用具有指定间距的Vector Grid创建一层瓷砖,然后将这两层相交,将其分成多个瓷砖-不行。尝试使用较小的数据集-选择大洋洲(Aus,NZ)中的要素以尝试使用较小的数据集-此形状文件的大小小于20mb。再次尝试将其分割,不起作用。 我对OGR所做的事情:ogr2ogr直接使用带有spat_extent的'-spat'和'-clipsrc'选项。还写了一个可以在WKT上运行的小型C ++工具,因此我使用ogr2​​ogr将shapefile转换为WKT,然后将文本文件提供给我的应用程序。它遍历该文件并调用此处记录的Intersection()方法:http : //www.gdal.org/ogr/classOGRGeometry.html。我认为最终结果与直接使用ogr2​​ogr完全一样。 针对布伦特: 是的 一切都在WGS84纬度/经度中 我以为是相反的事实-对于给定的一组网格图块,与一个巨型多面体相交将花费更长的时间,而不是一堆可以在空间上更局部地定位于每个图块的零碎要素,但这是一个有趣的建议-我会尝试并报告。 在此过程中不会保留任何属性字段,我只对几何感兴趣。 我不确定,但是我想你是说我应该选择与给定网格图块重叠的多边形,然后执行相交。使用QGIS手动操作太麻烦了。我的工具已经通过边界框检查在一定程度上做到了这一点。速度有所提高,但是最终结果仍然很差,并且没有明显的不同。 这不是一个选择。现在,我正在尝试将数据划分为1度经度x 1度经度,并且我正在寻找一种适用于所有情况的通用/稳健方法。我尝试增加网格尺寸(即10x10)以查看是否可以获得更好的结果,并且看不到网格尺寸与输出质量之间的任何关联。 编辑#2: 我尝试了更多,总的来说,使用GEOS和QGIS(使用fTools,我不知道是否又使用GEOS)时,结果似乎都不可靠。我错误地指出网格的大小与结果无关—网格越大,结果越好(这是很好的认识,但仍然不是解决方案)。这是一个实际间隔开的网格的屏幕截图,该网格大部分可用,但在一个磁贴中部分失败: 几何图形很干净-QGIS使用“检查有效性”工具显示0错误。我不是要逐步解决这个问题。验证某些特征是否在视觉上不明显(且不会使用较小的图块)的情况下,无法通过如此大的数据集的交集不可行。

2
processing.runalg()引发“ TypeError:不允许捕获未继承自BaseException的类”
大家好,我是PyQGIS的新手,我一直在尝试在QGIS 3.0中运行脚本而没有成功(它在2.18中完美运行),并且总是遇到相同的错误: AttributeError:模块“处理”没有属性“ runalg”在处理上述异常期间,发生了另一个异常:追溯(最近一次调用为最后一次):文件“ C:\ PROGRA〜1 \ QGIS3〜1.0 \ apps \ Python36 \ lib \ Runcode exec(code,self.locals)文件中的code.py“,行91,TypeError中的行8,”:捕获不继承自BaseException的类是不允许的 这与PYTHONPATH有关吗?输入时,我什至看不到算法列表:processing.alglist()


3
如何从QGIS处理加载内存输出?
许多处理算法可以选择将输出保存为内存。如果从工具箱运行,则可以正常工作,因为您可以选中“运行算法后打开输出文件”框。 查看QGIS的源代码,似乎在函数中定义了用于加载内存层的代码Postprocessing.handleAlgorithmResults。该函数使用对alg.outputs列表的访问权,并执行以下操作: for out in alg.outputs: progress.setPercentage(100 * i / float(len(alg.outputs))) if out.hidden or not out.open: continue if isinstance(out, (OutputRaster, OutputVector, OutputTable)): try: if out.value.startswith('memory:'): layer = out.memoryLayer # NOTE!! QgsMapLayerRegistry.instance().addMapLayers([layer]) # NOTE!! else: # ... 当您从控制台运行处理算法时,是否可以在不访问该对象的情况下加载图层?我可以跑 processing.runalg("qgis:intersection", layer1, layer2, "memory:") 甚至 processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName") 但是,我找不到一种方法来获取结果输出。

1
在线串上时,在随机鱼网的像元中以彼此指定的距离创建点
我们有一个陆地协议,在该协议中,我们收到一个1x1公里网孔的鱼网。一些单元格是随机选择的。我们需要在每个单元格中放置4个点,这些点也必须在路上。如果可能,则每个像元的每个点的最小距离必须为500m,否则,我们希望最大距离。 在第一次尝试中,我们使用ST_CreateFishnet将每个像元划分为四个500x500 m像元,然后将点放在子像元的质心,然后放在最近的道路(ST_ClosestPoint)上。我们得到了一些不错的结果,但是在下面的示例中,您可以看到点5离点6太近了,可以在左路上移动。 WITH r1 AS ( -- only sub-cells which intersects random cells SELECT id_maille, ROW_NUMBER() OVER() AS id_grille, fishnet_500.geomgrille FROM fishnet_500 JOIN t_mailles ON ST_Intersects(ST_Buffer(t_mailles.geom,-200), fishnet_500.geomgrille) -- buffer < 0 to not select neightbours ) , r2 AS ( -- cut roads in every cells SELECT id_maille, id_grille, …


2
QGIS 2.14.6处理扩展,缺少“多边形化”工具
刚刚从OSGEO4W安装程序安装了QGIS 2.14.6 64Bit。处理扩展版本为2.12.99。从屏幕快照中可以看出,我无法像往常一样切换到“高级界面”以访问该Polygonize工具(到多边形的线仍然不起作用,cp。QGIS 2.12到多边形的线无法正常工作): 在另一台计算机上并行运行的同一安装具有处理插件版本2.10.3,在这里我可以切换到高级界面并访问该Polygonize工具: 添加/更新: 完全令人困惑:在独立安装程序安装的2.14.5中,处理插件的版本也为2.12.99,但是在这里我可以访问该Polyonize工具: 到目前为止的研究工作:我意识到在情况2中,处理插件安装在username\.qgis2\python\plugins\核心插件的异常路径下。显然(或也许?)问题是在处理成为核心插件之前先安装了QGIS,因此此处的插件似乎覆盖了核心插件。这也将解释为什么更新2.下的插件不受更新的影响(由于处理是核心插件,因此在存储库中不可用)。解决方案只是卸载插件,重新启动QGIS和核心插件版本2.12.99。显着:Polygonize工具仍然可用(与情况1相反)。到目前为止,一切都很好。 总结一下: 在这三种情况下,处理插件的版本均为2.12.99: OSGeo4W安装程序,无Polygonize工具 OSGeo4W安装程序,提供Polygonize工具 独立安装程序,提供Polygonize工具 那么情况1可能是什么问题呢?我可以错过OSGeo4W安装程序中的某些内容吗?

3
如何创建将序列添加到PostGIS中唯一标识符列的QGIS处理脚本?
有人可以帮助我创建QGIS处理脚本,以将序列添加到PostGIS中现有的唯一标识符列(类型:整数)吗? 这将非常有帮助,例如,作为错误#6798的解决方法。不幸的是,我没有任何Python经验。 CREATE SEQUENCE /*input_schema*/./*input_table*/_/*uic*/_seq OWNED BY /*input_schema*/./*input_table*/./*uic*/; SELECT SETVAL('/*input_schema*/./*input_table*/_/*uic*/_seq', (SELECT MAX(/*uic*/) FROM /*input_schema*/./*input_table*/)); ALTER TABLE /*input_schema*/./*input_table*/ ALTER COLUMN /*uic*/ SET DEFAULT nextval('/*input_schema*/./*input_table*/_/*uic*/_seq'::regclass);

2
在独立的python脚本中导入QGIS处理?
我想编写一些使用Qgis处理工具箱的独立脚本。 我已经读了一些线程(例如,在这里和这里),但是找不到有效的解决方案。 在Ubuntu Xenial 16.04 LTS上使用Qgis 2.16.1 我的脚本的import部分如下所示: # Python modules import sys import time import os # Qgis modules from qgis.core import * import qgis.utils from PyQt4.QtCore import QFileInfo, QSettings 有人知道我无法导入处理模块吗? 通过简单的导入处理,我得到了: Original exception was: Traceback (most recent call last): File "/home/steph/Documents/Projets/20141227-CIM_Bishkek/Scripts/python/00-projets/20160811-AnalysesUAVs/20160811-UAVAnalyse.py", line 36, in <module> import processing File …

2
QGIS中的核心功能会利用多线程吗?
阅读完在QGIS中启用多线程处理后?,我想知道QGIS 2.6在运行各种过程时是否将包括此功能。我在网上检查了一下,发现QGIS 2.4引入了多线程渲染(我认为它在2.6中将再次可用)。现在,可以非常快速地重绘地图,尤其是在处理大型数据集时。 我读到将多线程包含到核心功能中是相当困难的,建议用户操纵Python代码以实现此功能,例如在PyQGIS中的并行GIS操作中?。 我还检查了功能请求,但Tim Sutton已将其关闭了9个月,最新评论为: “我要结束这一点-Martin Dobias在分支机构中有一个实现,它将在QGIS 2.2之后合并。” QGIS 2.6中的某些功能是否会利用多线程(或者将再次专注于呈现),如果没有,在QGIS 3.0中会有所改变吗?

1
在QGIS处理/ SEXTANTE中使用内存矢量层
我正在尝试qgis:clip从控制台运行算法,但是在使用内存层作为overlay参数时遇到错误。这是意料之中的,还是我做错了什么? 码: mem_layer = QgsVectorLayer("Polygon?crs=epsg:4326", "temp_layer", "memory") if not mem_layer.isValid(): raise Exception("Failed to create memory layer") mem_layer_provider = mem_layer.dataProvider() clip_polygon = QgsFeature() clip_polygon.setGeometry(QgsGeometry.fromRect( QgsRectangle( self.output_layer.extent().xMinimum() + 10, self.output_layer.extent().yMinimum() + 10, self.output_layer.extent().xMaximum() - 10, self.output_layer.extent().yMaximum() - 10 ) )) mem_layer_provider.addFeatures([clip_polygon]) mem_layer.updateExtents() output = self.output_layer_path + "2" processing.runalg("qgis:clip", layer, mem_layer, output) # …

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.