首页Python【Shapely矢量数据空...

【Shapely矢量数据空间分析】1.Shapely简介


本系列文章是根据Shapely官方文档翻译整理,学习任何一个Python第三方库,其官方文档都是最好的学习资料。相比网络搜索得到的一些资料,官方文档是权威的一手资料,其内容全面、准确可靠。通过官方文档入手,能够保证学习认知不会有大偏差。在学习完官方文档后,可以在寻找其他资料进一步学习。

点击“阅读原文”或者直接访问下方链接,查看翻译整理的“Shapely 2.0.0 中文文档”。

https://www.mizhushare.com/docs/shapely-2-0-0-%e4%b8%ad%e6%96%87%e6%96%87%e6%a1%a3/
本系列文章配套代码获取有以下两种途径:
  • 可以通过百度网盘获取,需要在本地配置代码运行环境:
链接:https://pan.baidu.com/s/1iWGGhB4kra9V7bUj-CWR0w?pwd=mnsj 提取码:mnsj
  • 前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Shapely




—– 以下内容均由ChatGPT生成 —–




Shapely是一个Python库,用于处理空间几何对象。它提供了一系列对象,用于表示点、线、多边形和多线段,并提供一系列函数,用于检查和修改几何对象,如缓冲区、缩放、旋转、聚合、分割和拓扑操作等。此外,Shapely还支持基于WKT(Well-Known Text)和WKB(Well-Known Binary)的几何对象的读写操作。

ShapelyJTSGEOS关系密切,三者均为开源的几何处理库,都是用于处理地理空间数据的。其中:
  • JTS (Java Topology Suite)是Java语言开发的几何处理库,主要提供几何算法、空间查询、编辑功能等。
  • GEOS (Geometry Engine – Open Source) 是C++语言开发的几何处理库,是JTSC++版本。
  • Shapely是Python语言开发的几何处理库,它是GEOS的Python封装,主要提供了面向对象的API,方便地理信息科学家和工程师使用。

总的来说,JTSGEOS是两个低层的几何处理库,Shapely是在它们的基础上的高层封装,提供了更加友好和方便的API。

另外,Shapely 具有加速功能,以提高其性能,包括使用 GEOS 进行计算复杂的操作、实现可选的缓存以存储常用的值以及使用并行处理来提高多核系统的性能。

01
Shapely库的安装

  • 使用pip安装:

1pip install shapely
  • 使用conda安装(推荐使用conda安装)

1conda install shapely --channel conda-forge

如果本地之前安装过Shapely低版本,通过以下命令可以将低版本升级到2.0.0正式版本:

1conda update shapely -c conda-forge -y

建议更新至Shapely 2.0.0版本,该版本较之前的1.85版本做了较大变化,性能提升的同时也更加稳定。

02
Shapely的基本使用

安装完成后,ShapelyGEOS库和GEOS C API版本可以通过以下命令查看。

 1>>>import shapely
2
3>>> shapely.__version__ 
4'2.0.1'
5
6>>> shapely.geos_version
7(3111)
8
9>>> shapely.geos_capi_version_string
10'3.11.1-CAPI-1.17.1'
03
Shapely中的空间数据模型

Shapely提供了一组用于描述空间数据的模型,包括:
  • Point:表示一个空间上的点,由x、y坐标组成。
  • LineString:表示一个有序的点集合,形成了一条线。
  • Polygon:表示一个封闭的区域,由一组点和边形成的。
  • MultiPoint:表示多个点的集合。
  • MultiLineString:表示多条线的集合。
  • MultiPolygon:表示多个多边形的集合。

这些数据模型都是在Shapely中定义的,并提供了一组用于处理空间数据的工具和函数。

04
Shapely中的空间关系

Shapely中提供了一组用于描述空间关系的函数。主要的空间关系包括:
  • equals:判断两个几何对象是否相等。
  • contains:判断一个几何对象是否包含另一个几何对象。
  • intersects:判断两个几何对象是否有交集,即至少有一个共有点。
  • disjoint:判断两个几何对象是否不相交,即没有共有点。
  • within:判断一个几何对象是否在另一个几何对象内部。
  • overlaps:判断两个几何对象是否重叠,即两个几何对象共享一部分点但不是所有的公共点,而且相交处形成曲面。
  • touches:判断两个几何对象是否接触,即两个几何对象至少有一个公共的边界点,但没有内部点。
  • crosses:判断两个几何对象是否交叉,即两个几何对象共享一些但不是所有的内部点。

这些函数可以用来处理不同的空间关系,从而使得空间数据处理变得更加方便。以上的运算均返回TrueFalse

05
Shapely中的空间分析方法

除了判断空间关系,Shapely还提供了构建新几何对象的空间分析方法,例如:
  • buffer:缓冲区分析。
  • union:联合分析。
  • convex_hull:计算包含对象中所有点的最小凸包。
  • envelope:计算对象的点或最小的外包矩形(边与坐标轴平行)。
  • simplify:对几何对象进行简化。
  • …………

06
简单示例

使用Shapely创建了一个矩形并计算它的面积:

1from shapely import Polygon
2
3# 通过 x,y 坐标点生成一个多边形
4rectangle = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)])
5
6# 计算多边形的面积
7area = rectangle.area
8
9print("The area of the rectangle is:", area)
该代码将输出:
1The area of the rectangle is1.0

END

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments