Questions tagged «python»

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

4
如何使用PostGIS处理复杂的地理处理工作流程?
我们的组织正在考虑将地理处理工作流移至PostGIS。我们目前正在使用ArcGIS,并在ModelBuilder中使用了大量自定义Python工具。我们正在将大部分数据移至PostGIS中,以供各种应用程序使用,现在我们要问的是,在该处执行数据处理是否也有意义。 我们处理数据以使其与我们的软件兼容。客户购买了我们的软件,向我们提供了他们的数据,然后我们对其进行处理以进行优化以用于我们的软件。这就要求我们构建各种工具来处理各种质量的输入数据。我们不能期望以特定的格式或架构接收数据,因此我们构建了将输入字段映射到输出字段,将单个字段解析为多个字段,合并多个数据集等的工具。我们还执行空间连接,相交,修剪空白和连接字段以及许多其他常见操作。PostGIS似乎完全能够满足我们的所有处理需求。 对于那些使用PostGIS进行数据处理的人,您是否对组织,使用工具等有任何建议? 结合QGIS python处理使用它吗? 人们使用Python ORM进行非Web处理吗?我一直倾向于使用GeoDjango,因为它具有适用于PostGIS的Python ORM。我们使用PostGIS处理数据的初步测试在Python代码中包含许多大型SQL文本块,并且我们认为GeoDjango ORM可能有助于创建更易管理和可读的代码。还有一个GeoAlchemy ORM与PostGIS类似地交互,并且似乎不像Django那样特定于Web。 我没有听说像使用QGIS或ArcGIS的人那样使用PostGIS进行地理处理,所以我想知道它是否是可比的替代方案。

2
在ArcPy脚本中阅读Excel工作表?
我正在编写一个Python代码,将excel中的X,Y点转换为shapefile。在此过程中,我必须从shhet1中读取xy点。从Excel工作簿(97-2003)的sheet1中读取数据时,我必须包括哪些步骤。 我写了如下代码。 import arcpy from arcpy import env import Xlrd env.workspace="E:\" input_table="123.xls\Sheet1" 但是它不起作用。
12 python  excel 

2
衡量脚本写作能力?
我的经理曾要求我提出某种能力衡量标准,以帮助员工理解脚本/编程。因为我是一个自学成才的程序员,所以我真的对如何在编写脚本时了解自己的理解水平没有一个正式的了解。 我们一直在ArcGIS和QGIS中使用Python。我们将VB.Net与我们的MS Office产品一起使用,并且我们已经开始涉足Java以进行Web映射。 我想知道你们中的任何GIS经理是否都有某种矩阵/方法来确定员工在编写脚本时的技能水平。
12 python 

1
如何在Python中解决新的“已完成任务”的QgsMessageBar?
我真的很惊讶QGIS在过去几个月中所采取的巨大步骤。新的图标集,改进的打印作曲家以及在QGIS 2.0中可以看到的更多变化真是太棒了! 除了其他许多不错的改进之外,还有一个漂亮的蓝色任务栏,我觉得它很有吸引力。 是否有可能在python中解决此条脚本和插件的问题(例如在完成计算后显示一条小消息)?我在这里问这个问题,因为我相信许多QGIS开发人员也会访问此问答站点。 PS:该栏仅在QGIS开发人员中可见,并且仅在某些操作中可见。
12 qgis  python  pyqgis 

3
GDAL和Python:如何获取具有特定值的所有单元格的坐标?
我有一个Arc / Info Binary Grid(具体地说,是ArcGIS流累积栅格),并且我想识别所有具有特定值(或值范围)的像元。最终,我想要一个表示这些单元的点的shapefile。 我可以使用QGIS打开hdr.adf并获得此结果,工作流程为: QGIS>栅格菜单>栅格计算器(用目标值标记所有点) QGIS>栅格菜单>多边形 QGIS>矢量菜单>几何子菜单>多边形形心 编辑质心以删除不需要的多质心(这些质心= 0) 这种方法“完成了任务”,但是对我来说并不有吸引力,因为它创建了两个我必须删除的文件,然后我必须从形心的shapefile中删除不需要的记录(即那些= 0)。 一个现有的问题可以解决这个问题,但是它是针对ArcGIS / ArcPy量身定制的,我想留在FOSS领域。 是否有人拥有可查询栅格像元值的现有GDAL / Python配方/脚本,并且在找到目标值(或目标范围内的值)时,将记录添加到shapefile中?这样不仅可以避免与UI的交互,而且还可以通过一次创建干净的结果。 我通过与Chris Garrard的一个演示文稿进行对比而对此进行了射击,但是光栅工作不在我的操盘手,并且我不想用我的弱代码使问题变得混乱。 如果有人希望使用确切的数据集,我将它作为.zip放在这里。 [编辑注释]留给后代保留。请参阅与om_henners的评论交流。基本上,x / y(行/列)值被翻转。最初的答案是这样的: (y_index, x_index) = np.nonzero(a == 1000) 倒像这样: (x_index, y_index) = np.nonzero(a == 1000) 当我第一次遇到屏幕快照中说明的问题时,我想知道我是否正确地实现了几何图形,并通过在此行中翻转x / y坐标值进行了实验: point.SetPoint(0, x, y) ..如.. point.SetPoint(0, y, x) 但是那没有用。而且我不认为尝试翻转om_henners的Numpy表达式中的值,是错误地认为在任一行上翻转它们都是等效的。我认为真正的问题分别与x_size和y_size值有关,当行和列索引用于计算单元格的点坐标时,将应用和。30-30 [原始编辑] …
12 python  raster  gdal 

5
Windows上的GEOS和Shapely安装
尝试在Windows 64位计算机上安装Shapely时,无法使GEOS库正常工作。 到目前为止,我已经运行了OSGeo4W安装程序,从中安装了GDAL(我相信该软件包中包含geos库)。之后,我检查了C:\OSGeo4W\bin目录中是否有geos_c.dll ,但是我错过了一些配置步骤,或者库不起作用。 我需要Shapely来工作,因此我也pip install shapely安装了GDAL之后也运行了,显然可以使用(尽管找不到GEOS的C库)。 在我的代码中,我可以导入Shapely,但是当我尝试使用它时,出现一条错误消息,告诉我"geos.dll"找不到。
12 qgis  python  gdal  shapely 

1
GDAL RasterizeLayer不会将所有多边形刻录到Raster吗?
我正在尝试使用GDAL的RasterizeLayer将shapefile刻录到栅格。给定特定的像素大小,我从另一个shapefile中预先创建了一个感兴趣的区域栅格。然后,此AOI将用作所有后续栅格化(相同数量的列和行,相同的投影和地理转换)的基础。 但是,当我基于相同的像素大小和投影将形状刻录到自己的栅格时,会发生问题。下面的链接(没有足够的代表来发布图像),以棕褐色显示原始shapefile,以及RasterizeLayer刻录数据的深粉红色。浅粉红色是深粉红色栅格数据的nodata值。灰色是完成形状文件刻录的AOI。 给定shapefile多边形的范围,我希望看到底部两个角处的刻录值,以及显示的数据下方的两个像素。但是,显然不是这种情况。 以下是我用来生成这些代码的代码。所有形状都是使用QGIS创建的,并且都在同一投影中创建。(应该注意的是,所示图片中的网格只是用来说明我所使用的像素大小。) from osgeo import ogr from osgeo import gdal aoi_uri = 'AOI_Raster.tif' aoi_raster = gdal.Open(aoi_uri) def new_raster_from_base(base, outputURI, format, nodata, datatype): cols = base.RasterXSize rows = base.RasterYSize projection = base.GetProjection() geotransform = base.GetGeoTransform() bands = base.RasterCount driver = gdal.GetDriverByName(format) new_raster = driver.Create(str(outputURI), cols, rows, bands, datatype) new_raster.SetProjection(projection) …

1
有没有办法在Python中适当地使GDAL引发异常?
我正在Python中使用GDAL,并且想让GDAL引发异常,以便我可以对它们做一些有用的事情。例如,如果无法使用gdal.Open()打开文件,我想抛出一个异常,而不是gdal返回None。我只想捕获错误而不是将它们转储到sys.stdout。 目前,我已经尝试使用该gdal.UseExceptions()功能,但是遇到了一个问题。当gdal.UseExceptions()设置似乎隐藏某些错误,他们不会引发异常。例如ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17消失,没有异常引发。这似乎很危险。 任何想法表示赞赏,谢谢。
12 python  gdal  ogr  osgeo 

2
在ArcGIS中优化Multcore处理的方法
我对学习方法有兴趣,以充分利用台式计算机上可用的多核处理能力。Arc指出,后台地理处理允许用户利用多个核心,但是,任务本质上必须排队等待上一个任务完成。 是否有人在Arc / Python中开发了并行或多线程地理处理方法?是否存在阻止单个任务进行多核处理的硬件瓶颈? 尽管不是地理处理示例,但我在Stackoverflow中找到了一个有趣的示例,引起了我的兴趣: from multiprocessing import Pool import numpy numToFactor = 976 def isFactor(x): result = None div = (numToFactor / x) if div*x == numToFactor: result = (x,div) return result if __name__ == '__main__': pool = Pool(processes=4) possibleFactors = range(1,int(numpy.floor(numpy.sqrt(numToFactor)))+1) print 'Checking ', possibleFactors result = pool.map(isFactor, …

4
密歇根州立大学Python地理处理课程资料的镜像
一直在使用MSU的GEOG 825(python地理处理)课程来学习使用Python进行地理处理。不幸的是,链接现在已经死了。我知道这是一个远景,但是有人从该课程中获得材料的副本吗?我真的很想完成它。 已经签出了其他在线Python地理处理课程。在宾夕法尼亚州和犹他州找到了一个。但是无论是ogr / gdal还是ArcGIS的arcpy / arcgisscripting,这些工具都专注于使用工具。据我所知,只有密歇根州立大学的课程讨论算法和数据结构。

1
从卫星图像自动检测屋顶方向?
不久前,我通过目视检查每个屋顶并分别标记它们是否朝南或几乎朝南,对太阳能电池板的部署进行了邻里屋顶定向调查。 由于这非常耗时,因此我想找到一种自动执行此操作的方法,但不知道仅通过分析屋顶阴影如何实现。 我可以编写一些脚本,但从未编写任何插件。 我还需要包括哪些其他元素? 我们的预算非常低,因此请寻求任何建议,以使用开源工具进行此操作。

5
使用Python确定ASCII栅格数据集中的最小值和最大值吗?
我有一个ASCII格式的栅格数据集。使用Python,我需要确定数据集中的min和max值。有人告诉我,标题信息是关键,它包含行/列数,单元格大小等信息。 您不能简单地跳过标头信息并读取整个数据集以确定min和max值吗? 这就是我想要做的。我跳过了包含标题信息的前几行,并试图从那里开始确定值。以下是我所拥有的,但是由于我是Python的新手,因此需要一些指导。 raster_file = open('data.asc', 'r') # Open the file data = raster_file.readlines()[4:] # Read the lines in the file, and skip the first six lines for lines in data: print max(data) # Find the max value in data print min(data) # Find hte min value in data 有什么建议?

5
嵌入式设备的最小GIS库?
我需要在运行基于Linux的简单操作系统的嵌入式设备中使用非常简单的几何运算(读取SHP或其他标准格式和简单搜索)。 我可以使用的最小,最简单的API是什么? 可以用C / C ++或Python编写它,以便与我的系统集成。 谢谢, 塞缪尔
12 python  linux 

5
编译使用ArcGIS地理处理工具的Python脚本(至.exe)?
我已经使用Python编写代码已有几个月了,并且已经为主要的地理处理任务开发了一些相当复杂的脚本。话虽这么说,但由于我来自SQL / VBA / VBScript背景,因此我仍在学习很多东西。 我知道编译后的代码通常比语言解释器要处理的代码运行得更快,因此我对将地理处理Python脚本编译为.EXE文件以处理大数据的可能性感兴趣。 这有可能吗?如果是,那么编译正在导入arcgisscripting或arcpy模块的Python(.py)脚本的最佳方法是什么? 我花了几分钟试图找到我想做的事,搜索结果返回了这篇文章,其中包括:http : //www.ehow.com/how_2091641_compile-python-code.html 编译器似乎可以工作,但是在执行生成的.EXE文件时,出现了一个神秘错误,表明某些文件不可用。 Python脚本可以从命令行正常运行,但是我想知道如果我能够编译.py文件,是否可以看到一些细微的改进。同样,我正在处理一些需要20多个小时才能处理的大型数据集(从输入的水质采样点确定流域)。我会采取一切我可以改进的方式。 使用一组测试站点,与从ArcCatalog的新工具箱中将脚本设置为脚本工具相比,从命令行在ArcGIS外将脚本运行速度提高了10%。我一直从命令行运行脚本,而没有在专用计算机上打开的任何ArcGIS实例。 因此,是否可以编译导入arcgisscripting模块并调用ArcToolBox工具的Python脚本? 编辑 感谢您的输入,这对我很有帮助。该脚本主要是一种协调许多ArcGIS工具并以所需格式/位置/具有适当属性的输出的方式。我认为通过写临时文件夹而不是临时栅格文件的临时个人地理数据库,可以减少一些麻烦,因此可以将它们存储为ESRI GRID格式和IMG格式。我将检查探查器的建议。 我办公室里有一些人对Python提出质疑,主要是说与经过编译的Visual Basic程序或VB.NET程序相比,“经过编译的代码比通过解释器运行的代码要快得多”,但这是一个很好的观点,无论哪种方式,工具都将花费时间。而且,似乎对于当今的计算机而言,解释代码可能不会比编译后的代码慢那么多,以保证可以加倍努力。 编辑 -使用光栅格式更新程序的优化。 想跟进我对该Python程序的“优化”,并且通过将临时栅格写入GRID格式而不是个人地理数据库中,从而节省了2个小时的处理时间。不仅如此,数据大小的磁盘空间消耗显着减少。我最初编写所有栅格的过程(它们只是转换为栅格的点要素,然后是分水岭的栅格),仅这些文件就产生了37.1 GB的数据。将后两个数据输出以GRID格式写入文件夹时,数据减少到667 MB。 我很想知道文件GDB如何处理这些数据,尽管主要是通过数据大小来实现的。但是,将我的处理时间从9.5小时减少到7.5小时肯定足以倡导以GRID格式处理地理数据库之外的栅格。

4
用Python在栅格上对点数据进行双线性插值?
我有一个栅格,想要对它进行点插值。这是我的位置: from osgeo import gdal from numpy import array # Read raster source = gdal.Open('my_raster.tif') nx, ny = source.RasterXSize, source.RasterYSize gt = source.GetGeoTransform() band_array = source.GetRasterBand(1).ReadAsArray() # Close raster source = None # Compute mid-point grid spacings ax = array([gt[0] + ix*gt[1] + gt[1]/2.0 for ix in range(nx)]) ay = …

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.