Questions tagged «python»

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

1
是否从QGIS测量工具获得距离?
我已经建立了一个插件来为Spatialite数据库提供输入掩码。有两个字段代表对象的最小/最大尺寸。 当我iface.actionMeasure().trigger()用两个按钮“ Measure” 调用“测量工具”()时,单击尺寸,然后用键盘将值键入字段(QLineEdit)。 使用“测量工具”右键单击(完成测量)后,是否有可能将值自动提交到该字段(最小或最大,QLineEdit)? 通话计量工具(有效) 左键单击:开始测量 4.一次:右键单击并将“测量工具的总值”提交到最小值字段(QLineEdit)。 更新1: 问了这个问题的一天后,我想到了一个线串层,可以用作测量工具(ST_Length(geom))。优点是您可以完全控制操作并从中获取数据。缺点是项目中的附加层。 工作流程可以是: 单击测量:切换编辑,激活“添加功能” 创建代表对象最小尺寸的线串 确认更改,计算线串的长度(ST_Length(geom)),将长度提交给QLineEdit 关闭对话框并删除线串(DELETE FROM) 但是我的实际问题仍然存在。有没有办法直接从测量工具获取距离值? 更新2: 在Jakob的帮助下,我可以使用Measure Tool的Total值更新QLineEdit,直到关闭Measure Tool。然后将该值设置为“ 0,000 m”。我通过使用以下方法解决了这个问题: def text_changed(str_measure): if str_measure == '0,000 m': pass else: self.min.setText(str_measure) 它可以工作,但是我不知道这是否是正确的解决方案。

3
增加图块缓存速度(TileStache)
我正在使用TileStache提供矢量图块,我已经按照需要设置了所有内容。我的数据存储在Postgres中,并且我正在使用VecTiles提供程序来提供GeoJSON切片。 我想缓存所有图块,以使图块的投放速度更快。我正在使用tiletache-seed.py播种我的缓存。我正在多台机器上运行tiletache种子。Tilestache-seed的13级缩放效果非常好,但是在那之后花费太长时间来缓存图块。仅对于16级缩放,我要缓存5023772个图块,而每台机器每天只能得到10万至20万个图块。 如何使我的图块缓存更快?有没有一种方法可以微调tilestache-seed.py并使它更快地播种? 更新:我曾尝试在表上(在几何列和用于通过where子句过滤数据的列上)建立空间索引,但我仍然没有看到平铺速度的显着提高。以这种速度,只有Zoom 17会占用我一个月的时间,而随着我朝Zoom 21的方向移动,这一次只会成倍增加 更新2:我也尝试制作实例化视图,并且性能没有明显变化,因此优化数据库无法正常工作。我想我将需要优化tiletache-seed.py本身,或者设计一种新的方式来缓存图块。 硬件信息我正在8台不同的PC上运行缓存过程,其中一台是具有32GB内存的i7,另一台是具有4GB内存的i3,但是它们都为我提供了几乎相同的缓存速度(每天大约100k磁贴)

1
将特征计数为形状多边形的交点
我有一个包含数百个形状和几何形状的大熊猫 。多边形在很多地方重叠。我想制作一个新几何,其中包含其中有多少重叠的计数。像这样:GeoDataFramePolygonMultiPolygon 有人对如何解决这个问题有任何想法吗?我什至看不到办法。 最终,我特别希望能够对多边形进行加权,以使某些多边形自己值2。使用shapely的Z字段执行此操作可能很好。 除了:我与这些库都不特别相关,这就是我最终的去向。这些几何形状中的坐标实际上是像素坐标-我正努力制作栅格以使其覆盖在另一幅图像上。我希望将占用空间保持尽可能小,因为我希望能够将这些资源部署到可能无法安装随机资源的云服务器等中。

3
了解RTree使用空间索引的情况?
我在理解RTree的空间索引使用方面遇到麻烦。 示例:我有300个缓冲点,我需要用多边形shapefile知道每个缓冲区的相交区域。多边形shapefile具有> 20,000个多边形。建议我使用空间索引来加快此过程。 所以...如果我为多边形shapefile创建空间索引,它会以某种方式“附加”到文件,还是会独立存在?也就是说,创建完之后,我可以在多边形文件上运行交集函数并获得更快的结果吗?交叉点会“看到”有空间索引并且知道该怎么做吗?还是我需要在索引上运行它,然后通过FID或类似的方法将那些结果关联回我的原始多边形文件? RTree文档对我没有太大帮助(可能是因为我只是在学习编程)。它们显示了如何通过读取手动创建的点,然后针对其他手动创建的点查询索引来创建索引,这些其他点返回包含在窗口中的ID。说得通。但是,他们没有解释这与索引将来自的原始文件之间的关系。 我认为它必须是这样的: 从我的多边形shapefile中为每个多边形要素拉出bbox,并将其放置在空间索引中,为其提供一个与shapefile中的id相同的ID。 查询该索引以获取相交的ID。 然后,仅对通过查询索引确定的原始shapefile中的要素重新运行交集(不知道我将如何做最后一部分)。 我有正确的主意吗?我有什么想念的吗? 现在,我正在尝试使此代码在仅包含一个点要素的一个点shapefile和一个包含> 20,000个面要素的多边形shapefile上工作。 我正在使用Fiona导入shapefile,使用RTree添加空间索引,并尝试使用Shapely进行交点。 我的测试代码如下: #point shapefile representing location of desired focal statistic traps = fiona.open('single_pt_speed_test.shp', 'r') #polygon shapefile representing land cover of interest gl = MultiPolygon([shape(pol['geometry']) for pol in fiona.open('class3_aa.shp', 'r')]) #search area areaKM2 = 20 #create empty spatial index …

4
用于遥感的Python资源?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我正在寻找一个很好的资源(MOOC,书籍等)来教Python用于遥感应用程序。我已经熟悉http://www.rsgislib.org/-是否有其他资源可供初学者使用Python程序员?

2
从QGIS的Python控制台调用插值插件
我想从python控制台调用QGIS插值插件功能(TIN方法)(Raster-> Interpolate)。 我在QGIS API或处理算法列表中找不到相应的功能。我发现SAGA三角剖分算法可以正常工作,但速度要慢5-10倍,而速度对我而言很重要。 知道如何执行吗?

1
将GRASS和SAGA模块导入python脚本
我是新来的。我正在为qgis“构建”一个python插件,我想从GRASS和SAGA导入模块,但是我不知道该怎么做。我要导入的插件是SAGA的Kriging插值或GRASS的v.surf.idw或Raster qgis的插值插件。我想要一种插值方法来转换网格中的点。 你能帮助我吗? 我还有一个疑问。 我在代码中运行以下行: vectorlayer_vector = ftools_utils.getVectorLayerByName(inputLayer) Elevation = self.lineAttrib.currentText() cellSize = int(self.linePix.value()) outPath = self.inputLayerCombo3.text() output = ftools_utils.getRasterLayerByName(outPath) Processing.runAlgorithm("saga:shapestogrid", vectorlayer_vector, Elevation, 0, 0, 4, None, cellSize, output) 跑步时,我会得到一张tiff图像,但什么也没有。.aux文件未创建,当我尝试打开创建的tiff图像时,出现以下消息: c:... teste3.tif不是受支持的栅格数据源 所以,我想输出是错误的。我必须怎么做才能获得正确的输出?我想念什么?

2
如何在pyqgis 2.0中获取字段名称
我正在尝试将插件从QGIS 1.8更改为2.0。在1.8版本中,我创建了一个字段名称表,如下所示: layer = vlayer provider = layer.dataProvider() feat = QGSFeatrue() allAttrs = provider.attributeIndexes() provider.select(allAttrs) fieldNames = [] while provider.nextFeature(feat) fields = layer.pendingFields() for (k, field) in fields.iteritems(): fieldNames.append(field.name()) 我尝试使用2.0版本 layer = vlayer fieldNames = [] for feature in layer.getFeatures(): fields = layer.pendingFields() for (k, field) in fields.iteritems(): fieldNames.append(field.name()) 但是,pendingFields()对我不起作用。现在是否有一种获取字段名称的新方法?
13 python  pyqgis  qgis-2 

6
如何遍历连续栅格中的每个像元?
有关更多详细信息,请参见此链接。 问题: 我想遍历一个连续的栅格(一个没有属性表的栅格),逐个像元,并获取像元的值。我想采用这些值并对它们运行条件,模拟下面详细介绍的地图代数步骤,而无需实际使用栅格计算器。 根据下面的评论请求,我添加了详细信息,为问题提供了背景,并证明有必要在下面称为“所需的分析:”的部分中实施这样的方法。 下面提出的分析虽然通过提供背景与我的问题相关,但无需在答案中进行。问题的范围仅涉及对连续栅格进行迭代以获取/设置像元值。 分析需要: 如果满足以下任一条件,则将输出单元格的值设置为1。如果不满足任何条件,则仅将输出单元格的值设置为0。 条件1:如果单元格值大于顶部和底部单元格,则给出值1: Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0) 内核文件如下所示: 3 3 0 1 0 0 0 0 0 1 0 条件2:如果单元格值大于左右单元格,则给定值1: Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0) 内核文件如下所示: 3 3 0 0 0 1 0 1 0 0 0 条件3:如果单元格的值大于左上角和右下角的单元格,则将值设为1: Con("raster" > …
13 python  raster  arcobjects  gdal  c# 


4
寻找一种Python方式来计算WKT线串的长度
我对以WGS84为单位计算线串长度并不满意。它让我想知道是否存在一种更方便的Python方式根据给定的SRID计算WKT线串的长度。 我想到的是: srid="WGS84" line="LINESTRING(3.0 4.0, 3.1 4.1)" print length(line, srid) 我正在寻找一个准确的答案,而不是sin\cos近似值。 有任何想法吗?
13 python  wkt  wgs84  srid  length 

2
如何使用Python在ArcMap中禁用和启用绘图?
我正在编写的脚本将重新放置两个数据框并设置其范围。 这样做时,它将重绘整个Active View 4次,从而大大降低了脚本速度。 在运行脚本之前按F9或单击“暂停绘图”按钮将禁用绘图并使脚本运行得更快,但是我希望脚本自动执行此操作。 我想在脚本开头禁用ArcMap 10绘图,并在结尾处启用它。 我该怎么做呢?

4
使用Shapely将单个线段焊接到一个LineString中
我在python中使用Shapely,并给了MultiLineString它一堆Linestring对象。我可以保证所有LineString对象都是只有2个顶点的简单线,并且它们都是一条直线的一部分(无分支)。 我想“连接点”并创建一个LineString。我是否需要为此编写递归焊接方法,还是有更快的方法?
13 python  shapely 

3
用于逻辑运算符和其他功能的gdal_calc栅格计算器语法
在gdal_calc的文档中,使用numpy语法声明了命令行栅格计算器。稍后有几个示例,其中一个示例: gdal_calc.py -A input.tif --outfile = result.tif --calc =“ A *(A> 0)” --NoDataValue = 0- 表示将零以下的值设置为null 不幸的是,没有逻辑运算符的示例,例如: --calc =“ A *(A> 0和A> B)”- 表示如果A大于零且B较大,则保留A,并将其余值设置为null 基于Numpy / Scipy逻辑函数,我希望将逻辑运算符写为: --calc =“ A * logical_and(A> 0,A> B)” 我尝试了一下,它似乎可以工作,但是我想向您保证这是正确的。 以类似的方式,如果您想要最少的A和B: --calc =“ A *(A <= B)+ B *(A> B)” 您可以这样写: --calc =“ minimum(A,B)” 我的问题是我找不到任何食谱来确保我做对了。是否有一些不错的食谱,其中包含有关gdal_calc什么是和不可能的高级示例?
13 python  gdal  numpy  gdal-calc 

3
geopandas空间连接极慢
我正在使用下面的代码来查找数百万个GPS点的国家(有时是州)。该代码当前每点大约需要一秒钟,这非常慢。shapefile为6 MB。 我读到geopandas使用rtree进行空间连接,这使它们效率极高,但这在这里似乎不起作用。我究竟做错了什么?我希望每秒能获得一千个积分。 可以在此处(5MB)下载shapefile和csv:https ://www.dropbox.com/s/gdkxtpqupj0sidm/SpatialJoin.zip ? dl =0 import pandas as pd import geopandas as gpd from geopandas import GeoDataFrame, read_file from geopandas.tools import sjoin from shapely.geometry import Point, mapping,shape import time #parameters shapefile="K:/.../Shapefiles/Used/World.shp" df=pd.read_csv("K:/.../output2.csv",index_col=None,nrows=20)# Limit to 20 rows for testing if __name__=="__main__": start=time.time() df['geometry'] = df.apply(lambda z: Point(z.Longitude, z.Latitude), …

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.