统计
  • 文章总数:855 篇
  • 评论总数:0 条
  • 分类总数:14 个
  • 最后更新:8月3日

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

本文阅读 6 分钟
首页 ArcGIS 正文

 

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


地理空间处理库

地理空间处理(geospatial processing),你叫它什么都可以,地理空间分析、或者直接叫 GIS 都可以。

地理空间处理在 Python 平台上已经有很长的发展历史,有各种各样的库、包,大部分都早于 ArcPy。

根据 PyPi 的官网统计,GIS 领域涉及的 Python 库已经超过800个了。下面我们就挑几个较为知名和活跃的库来讲一讲。


PyPi中的 GIS 库:https://pypi.org/search/?c=Topic%20::%20Scientific/Engineering%20::%20GIS



GDAL

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.html

  • GitHub:https://github.com/OSGeo/gdal




PySAL

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/Fiona

  • Fiona 文档: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 时给大家简单介绍了地理空间处理所使用的一小部分计算机库。如有相关兴趣,大家可以自行研究学习。


 

本文来自投稿,不代表本站立场,如若转载,请注明出处:
ArcGIS二次开(四): 工作空间 设置好,解决超过一半的烦恼
« 上一篇 03-12
Python制作Web可视化页面的方法!
下一篇 » 03-12