Shapely 是基于地理信息系统(GIS)的,对平面特征进行集合理论分析和操作.

文档:https://shapely.readthedocs.io/en/stable/

Github:https://github.com/Toblerity/Shapely

Shapely 库安装:

pip install shapely

1. Shapely 基本操作

[1] - 创建点

from shapely.geometry import Point point = Point(0, 0) # Point((0, 0)) point.area #点的面积 point.length #点的长度 point.bounds #点的边界

输出如:

0.0 0.0 (0.0, 0.0, 0.0, 0.0)

[2] - 创建圆

from shapely.geometry import Point #创建以(0, 0)为圆心,10为半径的圆 circle = Point(0, 0).buffer(10) circle.area #圆的面积 313.6548490545939 #圆的面积值小于 pi*r^2, 其原因是: # buffer方法默认参数resolution为16, # resolution 的值越大圆越完整. circle= Point(0, 0).buffer(10, resolution=1000) circle.area #314.15913616617644 circle= Point(0, 0).buffer(10, resolution=1000000) circle.area #314.1592653588436

[3] - 创建多边形

from shapely.geometry import Polygon polygon = Polygon([(0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3), (0, 3)]) #Polygon仅能基于有序的点创建多边形,且点的集合必须是闭合的. #用MultiPoint函数和convex_hull方法创建多边形 from shapely.geometry import MultiPoint coords = [(0, 1), (1, 2), (1, 4), (2, 0), (3, 2)] # coords不一定要是闭合点集合 poly = MultiPoint(coords).convex_hull

2. Shapely 集合操作

[1] - 判断点是否在多边形内

from shapely.geometry import Point from shapely.geometry import Polygon p1 = Point(0.5, 0.5) p2 = Point(1.5, 2.5) poly = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)]) #多边形是否包含点 poly.contains(p1) #True #点是否在多边形内 p1.within(poly) #True #多边形是否包含点 poly.contains(p2) #False

[2] - 判断多边形的集合操作

from shapely.geometry import Polygon poly1 = Polygon((0, 0), (0, 1), (1, 1), (1, 0)) poly2 = Polygon([(0.5, 0.5), (1.5,1.5), (2.0, 2.1), (0, 0.2)]) #判断poly1和poly2是否重叠 poly2.intersects(poly1) #True #判断poly2是否包含poly1 poly2.contains(poly1) #False #判断poly1是否包含poly2 poly1.contains(poly2) #False

3. Shapely 示例 - 电子围栏

shapely解析地理围栏

Last modification:January 5th, 2021 at 12:06 pm