本系列文章是根据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
Shapely
是一个Python库,用于处理空间几何对象。它提供了一系列对象,用于表示点、线、多边形和多线段,并提供一系列函数,用于检查和修改几何对象,如缓冲区、缩放、旋转、聚合、分割和拓扑操作等。此外,Shapely
还支持基于WKT(Well-Known Text)和WKB(Well-Known Binary)的几何对象的读写操作。
Shapely
与JTS
、GEOS
关系密切,三者均为开源的几何处理库,都是用于处理地理空间数据的。其中:-
JTS
(Java Topology Suite)是Java
语言开发的几何处理库,主要提供几何算法、空间查询、编辑功能等。 -
GEOS
(Geometry Engine – Open Source) 是C++
语言开发的几何处理库,是JTS
的C++
版本。 -
Shapely
是Python语言开发的几何处理库,它是GEOS
的Python封装,主要提供了面向对象的API,方便地理信息科学家和工程师使用。
总的来说,JTS
和GEOS
是两个低层的几何处理库,Shapely
是在它们的基础上的高层封装,提供了更加友好和方便的API。
另外,Shapely
具有加速功能,以提高其性能,包括使用 GEOS
进行计算复杂的操作、实现可选的缓存以存储常用的值以及使用并行处理来提高多核系统的性能。
-
使用
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版本做了较大变化,性能提升的同时也更加稳定。
安装完成后,Shapely
、GEOS
库和GEOS C API
版本可以通过以下命令查看。
1>>>import shapely
2
3>>> shapely.__version__
4'2.0.1'
5
6>>> shapely.geos_version
7(3, 11, 1)
8
9>>> shapely.geos_capi_version_string
10'3.11.1-CAPI-1.17.1'
Shapely
提供了一组用于描述空间数据的模型,包括:-
Point
:表示一个空间上的点,由x、y坐标组成。 -
LineString
:表示一个有序的点集合,形成了一条线。 -
Polygon
:表示一个封闭的区域,由一组点和边形成的。 -
MultiPoint
:表示多个点的集合。 -
MultiLineString
:表示多条线的集合。 -
MultiPolygon
:表示多个多边形的集合。
这些数据模型都是在Shapely
中定义的,并提供了一组用于处理空间数据的工具和函数。
Shapely
中提供了一组用于描述空间关系的函数。主要的空间关系包括:-
equals
:判断两个几何对象是否相等。 -
contains
:判断一个几何对象是否包含另一个几何对象。 -
intersects
:判断两个几何对象是否有交集,即至少有一个共有点。 -
disjoint
:判断两个几何对象是否不相交,即没有共有点。 -
within
:判断一个几何对象是否在另一个几何对象内部。 -
overlaps
:判断两个几何对象是否重叠,即两个几何对象共享一部分点但不是所有的公共点,而且相交处形成曲面。 -
touches
:判断两个几何对象是否接触,即两个几何对象至少有一个公共的边界点,但没有内部点。 -
crosses
:判断两个几何对象是否交叉,即两个几何对象共享一些但不是所有的内部点。
这些函数可以用来处理不同的空间关系,从而使得空间数据处理变得更加方便。以上的运算均返回True
或False
。
Shapely
还提供了构建新几何对象的空间分析方法,例如:-
buffer
:缓冲区分析。 -
union
:联合分析。 -
convex_hull
:计算包含对象中所有点的最小凸包。 -
envelope
:计算对象的点或最小的外包矩形(边与坐标轴平行)。 -
simplify
:对几何对象进行简化。 -
…………
使用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 is: 1.0
END
本篇文章来源于微信公众号: 码农设计师