Questions tagged «python»

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

1
Python:根据条件中断线串
我有一堆线串的geopandas数据框,其中的一些数据与每个顶点/点相关: Point_x = (Lat, Lon, Time, ID, Data1, Data2, Data3) 这些点将根据ID转换为线串,并按时间排序。 我想在满足某些条件的地方断开线串。此时,点之间的距离大于某个值。将来,数据字段的功能可能会有所价值。例如,当Speed超过5 kph时拆分线串。 当前的问题是,某些轨道是由具有重复ID的点形成的,因此线串在很长的距离上来回跳跃,我希望有一个阈值来打破这些线。 关于构建此方法的正确方法或可能有用的库/方法的任何想法? 该数据帧有超过15万条磁道,每个磁道中有许多点,因此效率会很高。 这是轨道DF的示例: ID geometry 204235000 LINESTRING (37.62001 -28.99535, 37.62015 -28.9... 205400000 LINESTRING (3.807816666666666 -18.083181666666... 207138000 LINESTRING (22.73206 -34.97915833333333, 22.73... 209016000 LINESTRING (8.447673333333331 -23.522783333333... 这是DF点的示例。共有18列,包括日期时间,时间点(经度,纬度),速度,大小等: Index Heading Latitude Longitude ID 20 92.8 -35.946802 13.089695 210725000 21 …

1
如何从我的virtualenv访问QGIS模块
我正在运行Ubuntu 14.4,并且已经安装了python虚拟环境。然后我pip安装了几个python库(gdal,lxml,psycopg2等) 同样在我的系统中,我有用于QGIS的模块。因此,当我输入python时,我可以将该模块导入为: import qgis.core 但是,当我尝试通过virtualenv执行相同操作时,出现错误:找不到模块。 创建virtualenv时,我使用了以下选项: virtualenv --no-site-packages env 这限制了我的环境不受系统环境的影响。问题是如何在我的virtualenv中访问QGIS模块?
11 qgis  python 

2
如何使用Python将透明度设置为多个栅格值
使用以下代码,我可以将100%透明度设置为栅格值0: map=None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "some_layer": map= lyr tr=None tr=QgsRasterTransparency() tr.initializeTransparentPixelList(0) map.renderer().setRasterTransparency(tr) map.triggerRepaint() 如何定义两个值(0和8)为100%透明? 当我用栅格值8重复最后一个块的命令时,第一个值(0)从图层透明度中删除。

1
ENVI(经典)ROI的二进制格式是什么?
我是一个充满ENVI / IDL用户的办公室里的Pythonist。我创建了一些工具来弥合差距,但是其中一个绊脚石是ENVI Classic .roi文件,我的同事们经常使用它。 因为基于文本的格式易于解析,所以我可以轻松地将ENVI 5 ROI导入Python。但是,我对ENVI Classic .roi文件的二进制格式没有足够的了解,该文件构成了我小组中大量的数据交换。是否有人拥有读取或写入这些文件的代码,或者对如何处理这些文件有任何见解? 每次我想来回跳动ENVI 5都有些乏味-如果可能,我宁愿从源头上解决问题。

1
在python中使用GDAL读取,修改和编写Geotiff
我正在尝试学习使用Python GDAL绑定和numpy进行遥感图像处理的绳索。作为首次尝试,我正在读取Landsat8 geotiff文件,进行简单的操作并将结果写入新文件。下面的代码看起来工作正常,除了原始栅格转储在输出文件中,而不是转储在操纵的栅格中。 欢迎提出任何意见或建议,但要特别注意为何未在结果中显示操纵的栅格。 import os import gdal gdal.AllRegister() file = "c:\~\LC81980242015071LGN00.tiff" (fileRoot, fileExt) = os.path.splitext(file) outFileName = fileRoot + "_mod" + fileExt ds = gdal.Open(file) band = ds.GetRasterBand(1) arr = band.ReadAsArray() [cols, rows] = arr.shape arr_min = arr.Min() arr_max = arr.Max() arr_mean = int(arr.mean()) arr_out = numpy.where((arr < arr_mean), …

4
如何使用QGIS轻松高效地重新投影500个CSV文件?
我知道,我的问题类似于该网站上的一些旧问题。 我有很多CSV文件(地理坐标)要导入到qgis(然后进行转换),通常的方法不是最好的方法(太长)。 我有将近500个CSV文件(wgs84坐标),这就是我想要做的: 一次将所有CSV文件导入QGIS 投射他们 再次将它们导出到CSV文件中,但坐标不同(转换为UTM33N) 我试图了解如何使用python控制台,但我没有继续:( 谁能向我解释如何逐步实现它?
11 qgis  python  pyqgis  export  csv 

3
使用Python,GDAL和Scikit-Image进行图像处理
我正在努力进行处理,希望可以在此解决。 我使用应用于林业的遥感技术,尤其是处理LiDAR数据。想法是使用Scikit图像进行树顶检测。由于我是Python的新手,因此我认为完成以下工作非常有个人才能: 导入CHM(使用matplotlib); 运行高斯过滤器(带有scikit-image包); 运行一个最大值过滤器(带有scikit-image包); 运行peak_local_max(带有scikit-image包); 显示带有局部最大值的CHM(带有matplotlib); 现在我的问题。当我使用matplot导入时,图像会丢失其地理坐标。因此,我拥有的坐标只是基本图像坐标(即250,312)。我需要获取图像中局部最大值点(图像中的红色点)下的像素值。在论坛的这里,我看到一个人在问同样的事情(在没有NumPy的情况下,在OGR点下获取GDAL栅格的GDAL像素的像素值?),但是他已经在shapefile中包含了这些点。在我的情况下,这些点是使用scikit-image计算的(这是一个具有每个树顶坐标的数组)。所以我没有shapefile。 总之,我最后想要的是一个txt文件,其中每个局部最大值的坐标都在地理坐标中,例如: 525412 62980123 1150 ...

2
匀称地阅读Postgis几何
我正在ipython Notebook中使用geopandas和shape进行小型工作流,​​有时从shapefile,有时从postgis(执行更昂贵的处理)中提取一堆地理空间数据。 现在,我使用将该postgis表拖入python中sqlalchemy,并一路将几何体转换为WKT,得到如下结果: sql = """ SELECT ST_AsText(ST_Transform(the_geom,4326)) as newgeom,* FROM public.parcels2010_small limit 5; """ parcels = pd.read_sql(sql, engine) parcels +----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+ | id | newgeom | the_geom | parcel_id | osm_node_id | +----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+ | 0 | MULTIPOLYGON(((-122.991093691444 38.4878691106... | 01060000209C0E00000100000001030000000100000097... | 1805792 | 66237 | +----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+ | 1 | MULTIPOLYGON(((-122.444576448624 …


2
如何从两点创建匀称的LineString
如果有两个点,我要从中创建一个直线LineString对象: from shapely.geometry import Point, LineString A = Point(0,0) B = Point(1,1) 关于LineString状态的Shapely手册: Point实例序列不是有效的构造函数参数。A LineString由点描述,但不由Point实例组成。 因此,如果我有两个点A和B,是否有AB比我当前“最佳”猜测更短/更好/更容易的方式来创建线... AB = LineString(tuple(A.coords) + tuple(B.coords)) ...看起来很复杂。有没有更简单的方法? 更新资料 对于今天发布的Shapely 1.3.2,手册中的上述声明不再正确。所以从现在开始 AB = LineString([A, B]) 工程!
11 python  shapely 

3
Python加载项与.NET加载项对ArcGIS for Desktop的优缺点是什么?
我在ESRI .NET帮助中找到了: 蟒蛇 所有ArcGIS Desktop应用程序都包含一种称为Python的嵌入式脚本语言。通过简化的Python应用程序编程接口(API)可以访问ArcGIS的许多区域(尤其是地理处理区域),从而使创作和自动执行常见任务变得容易。Python脚本易于共享,无需外部开发环境即可生成。有许多公共领域的Python模块专注于科学,工程和数学等领域。凭借其所有优点,Python并不适合所有编程任务。尽管覆盖范围有所改善,但当前并非所有ArcGIS领域都可以使用Python。此外,Python的编辑和调试经验不像商业开发环境(如Visual Studio)所包含的那样复杂或易于使用。最后,您无法使用Python侦听和响应ArcGIS事件,实现COM接口或插入ESRI的许多COM可扩展性点。 并在ArcGIS Desktop帮助中: ArcGIS 10.1将Python引入了用于编写桌面外接程序的语言列表,从而为您提供了扩展桌面功能的简单解决方案。为了简化Python加载项的开发,必须下载并使用Python加载项向导声明自定义类型。该向导将生成该外接程序正常工作所需的所有必需文件。 Python和.NET加载项是否具有相同的功能?这是否意味着我可以在Python和.NET中做同样的事情?

3
使用Python进行直方图匹配以改善多个重叠栅格的镶嵌过程?
我正在尝试使用Python进行直方图匹配,以改善多个重叠栅格的镶嵌过程。我的代码基于以下代码: http://www.idlcoyote.com/ip_tips/histomatch.html 到目前为止,我已经设法裁剪了两个相邻栅格的重叠区域并展平了阵列。 所以我有两个相同长度的1维数组。 然后,我根据上述网站上的代码编写了以下代码。在所示的代码中,我为gd和bd图像替换了两个非常小的数据集。 import matplotlib.pyplot as plt from scipy.interpolate import interp1d bins = range(0,100, 10) gd_hist = [1,2,3,4,5,4,3,2,1] bd_hist = [2,4,6,8,10,8,6,4,2] nPixels = len(gd_hist) # here we are creating the cumulative distribution frequency for the bad image cdf_bd = [] for k in range(0, len(bins)-1): b = sum(bd_hist[:k]) …


1
如何在QGIS中保存python会话?
在QGIS的python控制台中运行了许多脚本之后,我有10多个字典和列表,并且需要它们进行进一步分析。有没有一种方法可以保存所有这些变量的python会话? 总的来说,我的问题是如何将变量从python控制台导出到某些东西,以便将来可以再次加载它们? 谢谢
11 qgis  python  pyqgis 

1
我如何使用QThread和PyQGIS来维护可重复使用的GUI
我一直在开发一些批处理工具作为QGIS 1.8的python插件。 我发现在我的工具运行时,GUI变得无响应。 一般的看法是,应该在工作线程上完成工作,并将状态/完成信息作为信号传递回GUI。 我已经通过阅读河岸文档,并研究doGeometry.py源(从工作实施ftools)。 使用这些资源,我尝试构建一个简单的实现,以便在更改已建立的代码库之前探索此功能。 整体结构是“插件”菜单中的一个条目,它展开了一个带有“开始”和“停止”按钮的对话框。这些按钮控制着一个计数为100的线程,将每个数字的信号发送回GUI。GUI接收每个信号,然后发送一个字符串,其中包含消息日志和窗口标题的编号。 此实现的代码在这里: from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * class ThreadTest: def __init__(self, iface): self.iface = iface def initGui(self): self.action = QAction( u"ThreadTest", self.iface.mainWindow()) self.action.triggered.connect(self.run) self.iface.addPluginToMenu(u"&ThreadTest", self.action) def unload(self): self.iface.removePluginMenu(u"&ThreadTest",self.action) def run(self): BusyDialog(self.iface.mainWindow()) class BusyDialog(QDialog): def __init__(self, parent): QDialog.__init__(self, …

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.