python:shapely模块

python:shapely模块目录一 几何对象 1 点 Point 2 线 LineString 3 闭合线 LinearRing 4 多边形 Polygon 5 集合 Collections 6 多个点 MultiPoint 7 多条线 MultiLineStr 8 多个多边形 MultiPolygon 二 属性和方法三 仿射变换四 地图投影和转换一 几何对象 1 点 Point fromshapely geometryimpo Point 0 0 0 0 属性说明

一、几何对象

1、点(Point)

from shapely.geometry import Point point = Point(0.0, 0.0) 
属性 说明
area 点的面积(面积为0)
length 点的周长(周长为0)
coords 点的坐标值(通过list方法转为[(0.0, 0.0)])
x 点的x坐标值
y 点的y坐标值
z 点的z坐标值

2、线(LineString)

from shapely.geometry import LineString line = LineString([(0, 0), (1, 1)]) 
属性 说明
area 线的面积(面积为0)
length 线的周长)
interpolate(distance, normalized=False) 返回指定距离处的点,normalized=True, 则距离是几何对象长度的一部分
project(other, normalized=False) 返回该几何对象到最接近另一个对象的点的距离,normalized=True, 归一化为对象长度的距离

3、闭合线(LinearRing)

通过在第一个索引和最后一个索引中传递相同的值,可以显式关闭该序列。 否则,通过将第一个元组复制到最后一个索引来隐式关闭序列

4、多边形(Polygon)

from shapely.geometry import Polygon polygon = Polygon([(0, 0), (1, 1), (1, 0)]) 
属性 说明
exterior.coords 外部轮廓的点
interiors.coords 内部轮廓的点

构建矩形多边形

from shapely.geometry import box # box(minx, miny, maxx, maxy, ccw=True), 默认情况下右下角作为第一个点,为逆时针顺序 b = box(0.0, 0.0, 1.0, 1.0) list(b.exterior.coords) # [(1.0, 0.0), (1.0, 1.0), (0.0, 1.0), (0.0, 0.0), (1.0, 0.0)] 

获取已知方向的多边形

from shapely.geometry import Polygon from shapely.geometry import polygon p1 = Polygon([(0, 0), (1, 1), (1, 0)]) p = polygon.orient(p1, sign=1.0) # sign=1:外环逆时针,内环顺时针,sign=-1:外环顺时针,内环逆时针 list(p.exterior.coords) # [(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 0.0)] 

5、集合(Collections)

多个几何对象可以通过 geoms 或者 in / list(), 进行迭代获取GeometryCollection的成员

6、多个点(MultiPoint)

构造函数还接受另一个MultiPoint实例或Point实例的无序序列,从而进行复制

7、多条线(MultiLineString)

构造函数还接受MultiLineString的另一个实例或LineString实例的无序序列,从而进行复制

8、多个多边形(MultiPolygon)

MultiPolygon构造函数采用一系列外部环和孔列表元组:[((a1, …, aM), [(b1, …, bN), …]), …]

构造函数还接受无序的Polygon实例序列,从而进行复制

二、属性和方法

性质 说明
area 面积
bounds 边界元组(Xmin, Ymin, Xmax, Ymax)
length 周长
minimum_clearance 最小间隙,返回可以移动节点以产生无效几何的最小距离,不存在最小间隙,则将返回math.infinity
geom_type 返回几何对象的类型
distance(obj) 到另一个几何对象的最小距离
hausdorff_distance(obj) 到另一个几何对象的Hausdorff距离(到另一个几何对象最近点的最大距离)
representative_point() 返回保证在几何对象内的廉价计算点
has_z 是否有z坐标
is_ccw LinearRing对象是否逆时针
is_empty 是否为空
is_ring 是否为封闭且简单的LineString
is_simple 是否交叉
is_valid 是否有效,有效的LinearRing不能在一个点上交叉或接触到自己,有效的Polygon不能拥有任何重叠的外环或内环,有效的MultiPolygon不能包含任何重叠的多边形
_eq_(obj) 两个对象几何类型相同且坐标精确匹配,返回True
equals(obj) 两个对象集合理论上的边界,内部和外部一致,返回True
almost_equals(obj, decimal=6) 两个对象在指定点的小数点精度上的所有点都近似相等,则返回True
contains(obj) 另一个对象没有点在对象外部,并且至少有一个点在对象(a包含b),返回True
within(obj) 对象的边界和内部仅与另一个的内部(而不是其边界或外部)相交(a被包含于b)返回True
crosses(obj) 对象的内部与另一个的内部相交但不包含该对象,并且交集的尺寸小于一个或另一个的尺寸(a,b相交),则返回True
disjoint(obj) 对象的边界和内部与其他对象都不相交(a,b不相交),则返回True
intersects(obj) 如果对象的边界或内部以任何方式相交与另一个对象(a,b相交),则返回True(intersects 是 disjoint 的逆函数)
overlaps(obj) 如果两个对象相交intersects 但互相都不包含(a,b重叠),则返回True
touches(obj) 如果两个对象至少有一个公共点,并且它们的内部不与另一个的任何部分相交(a,b相切),则返回True
relate(obj) 返回对象内部,边界,外部与另一个几何对象的DE-9IM关系矩阵的字符串表示
relate_pattern(obj, pattern) 如果几何之间的关系的DE-9IM字符串满足该模式,则返回True
boundary 返回表示对象的集合论边界的低维对象
centroid 返回对象的几何质心
difference(obj) 返回组成该几何对象的点的表示,这些点不组成另一个对象,a – (a,b相交的部分) 即 a – (a∩b)
intersection(obj) 返回此对象与另一个几何对象的交集的表示形式,a,b相交的部分 即 a∩b
symmetric_difference(obj) 返回此对象中不在另一个几何对象中的点以及另一个不在此几何对象中的点的表示,a,b的并集-a,b的交集 即 (a∪b) – (a∩b)
union(obj) 返回此对象和另一个几何对象的点并集的表示形式,a,b的并集 即 a∪b,更高效的方法: shapely.ops.unary_union()
shapely.ops.unary_union(geoms) 返回给定几何对象的并集表示,重叠的多边形将被合并.线会溶解并结点, 重复的点将被合并,比union()更有效,可用于尝试修复无效的MultiPolygons, 面积可能会不一样
convex_hull 返回包含对象中所有点的最小凸多边形的表示形式,除非对象中的点数少于三个。对于两点,返回LineString;对于一点,返回本身
envelope 返回包含对象的点或最小矩形多边形(边与坐标轴平行)的表示形式
minimum_rotated_rectangle 返回包含对象的最小矩形多边形(不一定平行于坐标轴),线或点, 返回本身
  • object.buffer(distance, resolution=16, cap_style=1, join_style=1,
    mitre_limit=5.0)

返回此几何对象给定距离内所有点的近似表示

distance: 为正 扩张,为负侵蚀

  • object.parallel_offset(distance, side, resolution=16, join_style=1,
    mitre_limit=5.0)

仅适用于 LineString或LineRing,返回距对象左侧或右侧一定距离的LineString或MultiLineString

  • object.simplify(tolerance, preserve_topology=True)

返回几何对象的简化表示,简化后的对象中的所有点将在原始几何体的公差距离内

preserve_topology:默认为True, 使用较慢的算法保留拓扑结构,False, 使用更快的Douglas-Peucker 算法保留拓扑结构

三、仿射变换

  • shapely.affinity.affine_transform(geom, matrix)
  • shapely.affinity.rotate(geom, angle, origin=‘center’, use_radians=False)

返回二维平面上的旋转几何

>> from shapely import affinity >>> line = LineString([(1, 3), (1, 1), (4, 1)]) >>> rotated_a = affinity.rotate(line, 90) >>> rotated_b = affinity.rotate(line, 90, origin='centroid') 
  • shapely.affinity.scale(geom, xfact=1.0, yfact=1.0, zfact=1.0,
    origin=‘center’)

返回沿每个维度按比例缩放的几何图形

origin: 缩放的原点,默认是center 即 2D几何对象的边界框中心centerid, 也可以是单个点对象 或者 坐标元组

xfact / yfact / zfact: 缩放比例. 设缩放原点为(X0,Y0, Z0 ) ,正值, 直接缩放,负值, 缩放后再沿着x=X0 / y=Y0 / z=Z0 对称

>>> triangle = Polygon([(1, 1), (2, 3), (3, 1)]) >>> triangle_a = affinity.scale(triangle, xfact=1.5, yfact=-1) >>> triangle_a.exterior.coords[:] [(0.5, 3.0), (2.0, 1.0), (3.5, 3.0), (0.5, 3.0)] >>> triangle_b = affinity.scale(triangle, xfact=2, origin=(1,1)) >>> triangle_b.exterior.coords[:] [(1.0, 1.0), (3.0, 3.0), (5.0, 1.0), (1.0, 1.0)] 
  • shapely.affinity.skew(geom,xs=0.0, ys=0.0, origin=‘center’,
    use_radians=False)

返回倾斜的几何体,沿x和y维度剪切角度。

use_radians=True, 以度或者弧度指定裁切角

origin: 默认是边界框中心(几何质心centerid),也可以是Point对象 或者坐标元组

  • shapely.affinity.translate(geom,xs=0.0, ys=0.0, origin=‘center’,
    use_radians=False)

返回沿每个方向偏移量的平移几何体

四、地图投影和转换

  • shapely.ops.transform(func, geom)

将func应用于geom的所有坐标,并从转换后的坐标中返回相同类型的新几何

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215200.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午2:27
下一篇 2026年3月18日 下午2:28


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号