用Python创建你第一个GIS程序[1]:地理空间处理库的选择

前言:Python平台涉及到地理空间处理库不少,有泰斗级的 GDAL,也有较为小巧精致的 Fiona 和 Shapely,也有和ArcGIS 捆绑在一起的 ArcPy。选择合适的库能事半功倍...2021/5/23 第二次修改地理空间处理库

地理空间处理(geospatial processing),你叫它什么都可以,地理空间分析、或者直接叫 GIS 都可以。地理空间处理在 Python 平台上已经有很长的发展历史,有各种各样的库、包,大部分都早于 ArcPy。根据 PyPi 的官网统计,GIS 领域涉及的 Python 库已经超过800个了。下面我们就挑几个较为知名和活跃的库来讲一讲。PyPi中的 GIS 库:https://pypi.org/search/?c=Topic%20::%20Scientific/Engineering%20::%20GISGDAL

GDAL is a C++ translator library for more than 200 raster and vector geospatial data formats.

Geospatial Data Abstraction Library (GDAL),即地理空间数据抽象库,我这里在说 GDAL 的时候也包括了 OGR 库(处理矢量数据),即 GDAL/OGR。这是一个跨平台计算机库,使用开源协议,提供多个语言的 API 接口,包括 Python。其发展历史源远流长、影响深远,最早诞生于90年代,提供了一整套统一的 API 读写接口,能读取、分析处理矢量和栅格数据。GDAL/OGR 在整个地理空间分析的影响力非常大。上百个知名的大型软件项目使用了 GDAL 库,比如 ESRI ArcGIS 9.2+后的版本、QGIS(最火的开源GIS软件)、ERDAS ER Viewe、GdeDa(探索性分析软件)、FME(数据处理、流程化的利器)、mapinfo 、Grass 等等,太多了,更别说难以估计的各种小型项目。GDAL是大型项目以及有较强编程能力者的选择。但是我没有选择,因为我不是专业的,也没有秃顶。同时该教程是针对小型程序的。但是如果感兴趣的话,可以自行了解学习。WIKI百科:https://en.wikipedia.org/wiki/GDAL官方文档:https://gdal.org/index.htmlGitHub:https://github.com/OSGeo/gdalPySAL

PySAL 是 Python 空间分析库,是一个面向地理空间数据科学的开源跨平台库。

它支持空间分析高级应用程序的开发,例如:空间簇、热点和异常点的检测;从空间数据构建图形;地理嵌入网络的空间回归与统计建模;空间计量经济学;探索性时空数据分析。

PySAL 官网:https://pysal.org/PyShp

完全使用 Python 实现的库,功能简单小巧;可以用于读写 shapefile 格式的数据,不支持几何操作。Fiona

Fiona is designed to be simple and dependable.OGR 库的再封装产品,提供了一套简单易于使用的 Python 接口。该模块支持操作几何、空间分析等操作。Fiona GitHub:https://github.com/Toblerity/FionaFiona 文档:https://fiona.readthedocs.io/en/stable/PostGIS

PostGIS adds support for geographic objects to the PostgreSQL object-relational database.

PostGIS 是在 PostgreSQL(一款免费开源的数据库) 基础上结合 GEOS(开源几何引擎)实现对地理空间数据支持的空间数据库。PostGIS 不仅提供数据的存储功能同时也提供几何处理、空间分析功能。PostGIS凭借着开源以及性能出众,庞大的社区支持,形成了一个正向的循环反馈,目前非常活跃,有兴趣的可以多关注。PosyGIS 官网:http://www.postgis.org/Shapely

Shapely 是具有 Python 风格(简洁清晰)的几何处理库。Shapely 是 GEOS 库的 Python 语言高级接口。提供大量的几何操作功能。Shapely 官方文档:https://shapely.readthedocs.io/en/latest/Shapely GitHub:https://github.com/Toblerity/Shapely选择ArcPy

ArcGIS 10 中引入了 ArcPy,这是一个 Python 站点包,它涵盖并进一步加强了 ArcGIS 9.2 中所采用的  arcgisscripting 模块的功能。ArcPy 提供了一种用于开发 Python  脚本的功能丰富的动态环境,同时提供每个函数、模块和类的代码实现和集成文档。使用以 ArcPy 编写的  ArcGIS 应用程序和脚本的优势在于,可以访问并使用由来自多种不同领域的 GIS 专业人员和程序员开发的大量 Python 模块。使用 Python 中的  ArcPy  的另一个主要原因是,Python  是一种通用的编程语言,易于学习和使用。通过解释和动态输入这种编程语言,用户可以在交互式环境中快速地创建脚本原型并进行测试,同时这种编程语言功能强大,可编写大型应用程序。——ESRI

选择 ArcPy 不表示其他的库不好,而是综合分析下来的结果,因为学 GIS 相关专业的同学第一个使用的软件就是 ArcGIS,而 ArcPy 是和 ArcGIS 绑定并且一同安装的,用户的上手门槛较低。优势( Pros):同时 ArcPy 相比于 GDAL 是一种更高级的 API,其调用更简单;功能非常强大。有非常多的高级功能,包含 ArcGIS 提供的上千个工具箱的 Python 接口;上手快,易于安装。大部分入行都是接触的 ArcGIS,同时 ArcPy 会随软件一同安装。劣势(Cons):被限制在 Python2.7版本(ArcGIS Pro版本支持Python3);高级意味着 API 粒度大,限制了拓展性。结束语

笔者抛砖引玉,在引出 ArcPy 时给大家简单介绍了地理空间处理所使用的一小部分计算机库。如有相关兴趣,大家可以自行研究学习。

(0)

相关推荐