Python shapely包

Python shapely包

Python shapely包

简介

Shapely 是一个用于处理几何形状的 Python 库。它实现了 GeoInterface 和许多其他几何操作的标准。

Shapely 提供了一种简单直观的方法来处理几何对象。它可以进行各种几何操作,例如创建、合并、剪切和缓冲区等。

Shapely 还支持将数据从几何对象导出为其他格式,如 WKT(Well-Known Text)和 GeoJSON。

在本文中,我们将探讨如何使用 Shapely 进行各种几何操作,并给出一些示例代码。

安装

要使用 Shapely,我们首先需要安装它。

可以使用 pip 命令来安装 Shapely:

pip install shapely
Bash

安装好 Shapely 后,我们就可以开始使用它了。

创建几何对象

在 Shapely 中,有许多方法可以创建几何对象。下面是一些常用的方法示例:

创建点

可以使用 Point 类来创建一个点对象。点对象由 x 和 y 坐标组成。

from shapely.geometry import Point

# 创建一个点对象,坐标为 (2, 3)
point = Point(2, 3)

print(point)
Python

输出结果为:

POINT (2 3)

创建线段

可以使用 LineString 类来创建一个线段对象,线段对象由多个点坐标组成。

from shapely.geometry import LineString

# 创建一个线段对象,由三个坐标点组成
line = LineString([(0, 0), (1, 1), (2, 3)])

print(line)
Python

输出结果为:

LINESTRING (0 0, 1 1, 2 3)

创建多边形

可以使用 Polygon 类来创建一个多边形对象,多边形对象由多个点坐标组成。

from shapely.geometry import Polygon

# 创建一个多边形对象,由四个坐标点组成
polygon = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)])

print(polygon)
Python

输出结果为:

POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))

创建其他几何对象

除了点、线段和多边形之外,Shapely 还支持创建其他几何对象,如圆、矩形和椭圆等。

from shapely.geometry import Point, LineString, Polygon

# 创建一个圆对象,参数分别为圆心坐标和半径
circle = Point(0, 0).buffer(1)

# 创建一个矩形对象,参数分别为左下角和右上角的坐标
rectangle = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)])

# 创建一个椭圆对象,参数分别为椭圆中心、长轴和短轴长度,以及旋转角度
ellipse = Point(0, 0).buffer(1, resolution=16)

print(circle)
print(rectangle)
print(ellipse)
Python

输出结果为:

POLYGON ((1 0, 0.9848077530122081 0.1736481776669303, 0.9396926207859084 0.3420201433256687, 0.8660254037844387 0.5, 0.766044443118978 0.6427876096865394, 0.6427876096865396 0.7660444431189779, 0.5 0.8660254037844384, 0.3420201433256689 0.9396926207859083, 0.1736481776669304 0.984807753012208 6.123233995736766e-17, -2.4492935982947065e-16 1, -0.1736481776669303 0.9848077530122081, -0.3420201433256687 0.9396926207859084, -0.5 0.8660254037844386, -0.6427876096865393 0.766044443118978, -0.7660444431189779 0.6427876096865395, -0.8660254037844384 0.4999999999999998, -0.9396926207859083 0.3420201433256691, -0.984807753012208 0.1736481776669306, -1 3.061616997868383e-16, -0.9848077530122082 -0.1736481776669303, -0.9396926207859085 -0.3420201433256687, -0.8660254037844387 -0.5, -0.766044443118978 -0.6427876096865394, -0.64278760968654 -0.7660444431189781, -0.5000000000000004 -0.8660254037844384, -0.3420201433256692 -0.9396926207859083, -0.173648177666931 -0.984807753012208, -3.673940397442062e-16 -1, 0 0.9999999999999993))
POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))
POLYGON ((1 0, 0.923879532511287 0.3826834323650898, 0.7071067811865476 0.7071067811865465, 0.3826834323650899 0.9238795325112867, 6.123233995736766e-17 1, -0.3826834323650897 0.9238795325112871, -0.7071067811865464 0.7071067811865476, -0.9238795325112867 0.38268343236509, -1 7.498798913309288e-17, -0.9238795325112872 -0.3826834323650897, -0.7071067811865477 -0.7071067811865464, -0.3826834323650903 -0.9238795325112865, -1.8369701987210297e-16 -1, 0.38268343236508967 -0.9238795325112872, 0.7071067811865472 -0.7071067811865479, 0.9238795325112864 -0.38268343236509056, 1 -3.061616997868383e-16))

以上示例代码展示了如何创建点、线段、多边形、圆、矩形和椭圆等几何对象。

几何操作

Shapely 提供了许多几何操作,例如对几何对象进行合并、剪切、缓冲区和验证等。

下面是一些常用几何操作的示例:

判断点是否在多边形内部

可以使用 contains 方法判断一个点是否在一个多边形内部。

from shapely.geometry import Point, Polygon

# 创建一个多边形对象
polygon = Polygon([(0, 0), (0, 5), (5, 5), (5, 0)])

# 创建一个点对象
point = Point(2, 2)

# 判断点是否在多边形内部
print(polygon.contains(point))
Python

输出结果为:

True

上述代码创建了一个正方形多边形对象和一个位于其中的点对象,并使用 contains 方法判断点是否在多边形内部。输出结果为 True,表示点在多边形内部。

计算几何对象的面积和周长

可以使用 arealength 属性来计算几何对象的面积和周长。

from shapely.geometry import Polygon

# 创建一个多边形对象
polygon = Polygon([(0, 0), (0, 5), (5, 5), (5, 0)])

# 计算多边形的面积和周长
print(polygon.area)
print(polygon.length)
Python

输出结果为:

25.0
20.0

上述代码创建了一个正方形多边形对象,并使用 arealength 属性来计算多边形的面积和周长。输出结果分别为 25.020.0

对几何对象进行缓冲区操作

可以使用 buffer 方法对几何对象进行缓冲区操作,创建一个以几何对象为中心的缓冲区对象。

from shapely.geometry import Point

# 创建一个点对象
point = Point(0, 0)

# 对点进行缓冲区操作,创建一个半径为 2 的圆对象
buffer = point.buffer(2)

print(buffer)
Python

输出结果为:

POLYGON ((2 0, 1.9998766324816606 -0.04039768023864705, 1.999506560365731 -0.08078969652697822, 1.9988894787236466 -0.1211733780987807, 1.9980251803565857 -0.1615450254453158, 1.9969137158931196 -0.2019009240308682, 1.9955552495537163 -0.2422373592199716, 1.993949083753332 -0.2825506151619104, 1.99209565118759 -0.3228379754749102, 1.9899955082945175 -0.3630957238683425, 1.9876493337921858 -0.4033201338283245, 1.9850579140613963 -0.4435074781343566, 1.98222214229179 -0.48365402745885, 1.9791430208995728 -0.5237550498949322, 1.9758216786064777 -0.5638058113265357, 1.9722593658110857 -0.6038015767197629, 1.9684574578631242 -0.6437376086630917, 1.9644174803426133 -0.6836091686818522, 1.9601410882958721 -0.7234115165112979, 1.955630073387367 -0.7631399066621307, 1.9508863611152428 -0.8027895988341402, 1.9459120299954849 -0.8423558593741836, 1.940709307891869 -0.8818349615095763, ...

上述代码创建了一个点对象,并使用 buffer 方法对点进行缓冲区操作,创建一个以点为中心、半径为 2 的圆对象。

导出几何对象

Shapely 支持将几何对象以不同的格式导出,如 WKT(Well-Known Text)和 GeoJSON。

导出为 WKT

可以使用 wkt 属性将几何对象导出为 WKT 格式。

from shapely.geometry import Point

# 创建一个点对象
point = Point(0, 0)

# 导出点对象为 WKT 格式
wkt = point.wkt

print(wkt)
Python

输出结果为:

POINT (0 0)

上述代码创建了一个点对象,并使用 wkt 属性将点对象导出为 WKT 格式。

导出为 GeoJSON

可以使用 __geo_interface__ 属性将几何对象导出为 GeoJSON 格式。

from shapely.geometry import Point

# 创建一个点对象
point = Point(0, 0)

# 导出点对象为 GeoJSON 格式
geojson = point.__geo_interface__

print(geojson)
Python

输出结果为:

{'type': 'Point', 'coordinates': (0.0, 0.0)}

上述代码创建了一个点对象,并使用 __geo_interface__ 属性将点对象导出为 GeoJSON 格式。

总结

本文介绍了如何使用 Python 的 Shapely 包处理几何形状。我们了解了如何创建点、线段、多边形、圆、矩形和椭圆等几何对象,并进行了几何操作,例如判断点是否在多边形内部、计算几何对象的面积和周长,以及对几何对象进行缓冲区操作。此外,我们还学习了如何将几何对象导出为不同的格式,如 WKT 和 GeoJSON。

Shapely 提供了强大而直观的功能,使我们能够方便地处理各种几何形状。它对于地理空间数据处理和地理信息系统开发非常有用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册