在ArcGIS 10中,Python已成为ESRI的事实上的脚本语言。虽然领先的开源软件(例如QGIS,GeoServer,PostGIS)都支持Python。因此,对于GIS开发人员以及用户来说,了解/学习Python变得很重要。

谁能列出GIS中至关重要的Python工具/模块/插件列表?

评论

我认为这个问题过于笼统,应该仅限于可在任何支持Python的GIS中使用的python软件包。

ArcPy是真正的Python模块吗?

@Mapperz它实际上是一个网站包。以前的arcgisscripting是一个模块。请参阅help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…

@underdark-我认为有一个很好的广泛问题可能会有用。在这种情况下,它提供了一个中央资源,供搜索引擎在有人开始谷歌搜索要使用的python工具集时找到。

+1代表范围太广。该问题最相关的答案将在[tag:python] + [tag:my-software]搜索的末尾找到,并通过投票和常见问题解答标签进行排序。这里的答案永远都不能希望与之匹配。

#1 楼



NumPy:NumPy是使用Python进行科学计算的基本软件包。它包含以下内容:


强大的N维数组对象
复杂的(广播)函数
用于集成C / C ++和Fortran代码的工具
有用的线性代数,傅立叶变换和随机数功能

NumPy除了具有明显的科学用途外,还可以用作通用数据的高效多维容器。可以定义任意数据类型。这使NumPy可以无缝,快速地与各种数据库进行集成。

SciPy:SciPy(发音为“ Sigh Pie”)是用于数学,科学和工程的开源软件。它也是非常受欢迎的Python科学编程会议的名称。 SciPy库依赖于NumPy,该库提供了便捷的N维数组操作。 SciPy库是为与NumPy数组一起使用而构建的,它提供了许多用户友好且高效的数值例程,例如用于数值积分和优化的例程。它们一起运行在所有流行的操作系统上,安装迅速且免费。 NumPy和SciPy易于使用,但功能强大到足以被一些世界领先的科学家和工程师所依赖。如果需要在计算机上处​​理数字并显示或发布结果,请尝试SciPy!
Shapely:Shapely是BSD许可的Python软件包,用于处理和分析平面几何对象。它基于广泛部署的GEOS(PostGIS的引擎)和JTS(移植了GEOS的库)库。以此C依赖关系交换了以极快的速度执行的能力。 Shapely不关心数据格式或坐标系,但可以很容易地与现有的软件包集成。
GDAL Python绑定:此Python包和扩展是用于编程和操作GDAL地理空间数据抽象库的许多工具。

GeoDjango:GeoDjango打算成为世界级的地理Web框架。它的目标是使构建GIS Web应用程序和利用空间启用的数据的功能变得尽可能容易。 />

评论


我想为任何希望看这个旧答案的人添加积极开发的geopandas.org库!

–clifgray
17-10-5在16:25

#2 楼

为了回答我自己的问题,我刚刚找到了这个Pythons模块。尽管我还没有使用过它,但是它看起来很令人兴奋。
复杂网络的功能。





rtree-Python GIS的空间索引


#3 楼

请转到主题::科学/工程:: GIS
,您已经拥有所有GIS的Python模块(用于处理shapefile,栅格,KML,GML,GPX地理编码等)

最重要的部分已经被引用,但我也建议Fiona
” Fiona为开源GIS社区最受信任的地理数据访问库提供了一个最小,简单的Python接口,并可以轻松地与pyproj,Rtree, “

,以及通过Networkx模块Geometric Network Geo Geoprocessing与shapefile或Esri要素类进行联网:
”据我所知,ESRI尚未为其几何发布任何地理处理工具网络”
或pgRouting或Python的替代品:如何在拓扑网络(图形)中转换shapefile(或要素类ESRI)(法语)

import networkx as nx
G = nx.read_shp('pointshapefile.shp')
print(G.nodes())
# result [(1.0, 2.0), (3.0, 2.0), (0.0, 0.0), (3.0, 1.0), (4.0, 4.0), (2.0, 1.0), (2.0, 4.0), (1.0, 3.0), (2.0, 3.0), (1.0, 4.0), (4.0, 3.0), (4.0, 2.0), (3.0, 4.0), (1.0, 1.0)]
print(G.edges())
# result [((1.0, 2.0), (1.0, 1.0)), ((3.0, 2.0), (2.0, 1.0)), ((3.0, 1.0), (2.0, 1.0)), ((4.0, 4.0), (3.0, 4.0)), ((2.0, 1.0), (1.0, 1.0)), ((2.0, 4.0), (2.0, 3.0)), ((1.0, 3.0), (1.0, 2.0)), ((2.0, 3.0), (1.0, 2.0)), ((1.0, 4.0), (1.0, 3.0)), ((4.0, 3.0), (4.0, 2.0)), ((4.0, 2.0), (3.0, 2.0)), ((3.0, 4.0), (2.0, 3.0)), ((1.0, 1.0), (0.0, 0.0))]

# shortest path
print(nx.astar_path(H,(1.0, 4.0),(4.0, 2.0),dist))
# result [(1.0, 4.0), (1.0, 3.0), (1.0, 2.0), (2.0, 3.0), (3.0, 2.0), (4.0, 2.0)]

# and so with all the algorithms of Networkx module
# you can also export the results in shapefile format


我在QGIS和GRASS GIS中使用Shapely,Fiona,GDAL / OGR,Pyshp,Networkx以及其他工具都没有问题(并且使用matplotlib或desc交互式绘图的技巧)。它们通常具有更易于使用的算法。

其中一些模块也可以在ArcPy中使用,因为ArcPy使用的Numpy版本为1.3,已过时(现在为1.6.1 ...)和您不能在不破坏ArcPy模块的情况下对其进行更新。

#4 楼

对于GIS数据的制图渲染:


Mapnik Python绑定
MapServer MapScript


#5 楼

添加到列表中:

PySAL-“空间分析功能的开源跨平台库”

可从以下网站获得:http://code.google.com/p/ pysal /

pyshp-纯python中的python shapefile读取器和写入器

可从以下网站获得:http://code.google.com/p/pyshp/

编辑:

今天有人向我展示了此模块,可能对人们有些帮助。适用于python的示例GIS矢量和栅格数据:

gisdata-http://pypi.python.org/pypi/gisdata/0.3.3

#6 楼

我使用并推荐ReportLab Toolkit,它是开放源代码PDF库,用于以编程方式创建PDF格式的文档。正如在其页面上所宣传的那样,它是一个强大,灵活,久经考验的行业实力解决方案。它是用Python编写的免费开放源代码软件,但是它的语法不是我曾经使用过的最简单的方法:-)

在ArcGIS 10.0中,它对于以要素类以PDF格式编写报告是非常宝贵的表格和表格,但是当ArcPy可以从ArcGIS报表编写器访问PDF报表时,在10.1时可能不需要某些功能。

评论


您使用pdfgen软件包还是鸭嘴兽?我需要用jpeg和文本生成报告,没有什么太花哨的了。

–乍得·库珀
2012年7月12日在22:03

我使用鸭嘴兽-只需要输出在其单元格中带有文本的表(没有图像)。

– PolyGeo♦
2012年7月23日在1:17

#7 楼

在Django世界中:



vectorformats(用于将我们的geojson散布为geodjango不支持它);

Geraldo(用于报告,使用ReportLab);


#8 楼

还有更多内容:

GRASS-您可以使用Python调用GRASS。他们的冷变压器。

评论


真?据我所知,FMEObjects没有用于调用转换器的Python绑定。我真的希望如此。如果您知道这样做并且知道如何访问该API,请告诉我们。目前,这将使我的生活变得更加轻松。

– Celticflute
13年11月6日,0:51

#9 楼

Enthought软件包发行版将上面列出的许多软件包捆绑到一个有凝聚力的平台中。他们甚至确保可以轻松配置它以在ArcGIS的python提示符下工作,并且可以从python提示符下使用arcpy。我们在办公室中使用它。在我们的内部Wiki中:

连接ArcGIS和EPD的最佳方法是安装两者并使用.pth文件进行链接,因此Python sys.path包括其他系统的模块。
文件“ zzEPD.pth”允许ArcGIS Python访问EPD模块,“ zzArcGIS.pth”允许EPD Python访问arcpy。 (使用“ zz”前缀可确保“外国”软件包位于sys.path中的最后,以避免两个Python安装中都存在的模块发生潜在冲突。)
如果遇到ArcGIS冲突,只需重命名文件到.txt(“ zzEPD.pth.txt”)并重新启动ArcGIS,ArcGIS将不再“查看” EPD模块(它们将不在sys.path中)。

* zzEPD。 pth-放在文件夹\ Python27 \ Desktop10.1 \ lib \ site-packages *

# zzEPD.pth 
# Path to Enthought modules
C:\Python27\epd32\lib\site-packages


* zzArcGIS.pth-放在文件夹\ Python27 \ epd32 \ lib \站点软件包*

# zzArcGIS.pth 
# copy of \Python27\Desktop10.1\lib\site-packages\ArcGIS.pth
C:\ArcGIS\Desktop10.1\bin
C:\ArcGIS\Desktop10.1\arcpy
C:\ArcGIS\Desktop10.1\ArcToolbox\Scripts


#10 楼

不特定于GIS,但对于调试python,IPDB令人惊叹。 https://pypi.python.org/pypi/ipdb

要使用它,只需在代码中放置以下几行:

import ipdb
ipdb.set_trace()


然后在Python Shell中,您可以放入任何代码段并与该当前状态下的所有变量进行交互。