找回密码
 会员注册
查看: 18|回复: 0

python笔记:shapely(形状篇)

[复制链接]

3

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2024-9-9 14:03:51 | 显示全部楼层 |阅读模式
主要是点(point)、线(linestring)、面(surface)1基本方法和属性object.area返回对象的面积(浮点数)object.bounds返回一个(minx,miny,maxx,maxy)元组(浮点值),该元组界定了对象的边界object.length返回对象的长度(浮点数)object.minimum_clearance返回通过移动一个节点所能产生的无效几何形状的最小距离这可以被视为几何形状的稳健性的度量,其中较大的最小清晰度值表示更稳健的几何形状。如果一个几何形状不存在最小清晰度,例如一个点,这将返回math.infinity。在上面的例子中,多边形是一个边长为1的正方形。这个1.0的值意味着,在使得多边形变为非法几何形状(例如,使得至少一边退化到点或使得多边形自相交)之前,你可以沿着其边界移动一个顶点的最大距离是1个单位1.0 是指在不产生无效几何形状的前提下,所有顶点中的某一个可以移动的最大距离。这意味着,对于给定的多边形,你可以选择任何一个顶点,并将其沿任意方向移动最多1个单位长度,而不会使多边形变成无效的几何形状object.geom_type返回一个字符串,指定对象的几何类object.distance返回到另一个几何对象的最小距离(浮点数)object.hausdorff_distance返回到另一个几何对象的豪斯多夫距离(浮点数)。两个几何形状之间的豪斯多夫距离是一个几何形状上的点到另一个几何形状上最近点的最远距离object.representative_point返回一个廉价计算出的点,保证在几何对象内注:这通常不同于质心2Points2.1创建点使用Shapely创建点时,可以直接提供x和y的坐标值,或者提供一个包含x和y值的元组fromshapelyimportPoint#使用位置坐标值创建点point=Point(0.0,0.0)#使用点元组参数创建点q=Point((0.0,0.0))2.2属性和方法 point.area始终是0point.length始终是0point.bounds对于点来说,这些值是点的坐标coords、x、y访问坐标值coords还可以这样使用:3 LineStrings接受一个有序的2个或更多个(x,y[,z])点元组序列构造出的LineString对象代表点之间的一个或多个连接的线性样条。有序序列中允许重复的点,但可能会导致性能损失,应该避免。LineString可以自我交叉3.1方法和属性line.area始终是0line.length线段的长度line.boundsx-y边界框是一个(minx,miny,maxx,maxy)元组line.coords定义的坐标值可以通过coords属性访问4 LinearRing受一个有序的(x,y[,z])点元组序列序列可以通过在第一个和最后一个索引处传递相同的值来显式关闭。否则,序列将通过将第一个元组复制到最后一个索引来隐式关闭LinearRing有零面积和非零长度与LineString一样,有序序列中允许重复的点,但可能会导致性能损失,应该避免。LinearRing不能自我交叉,也不能在单个点上接触自身coordsarea始终为0length长度bounds5polygonPolygon类的构造函数接受两个位置参数。第一个参数是一个有序的(x,y[,z])点元组序列,这与LinearRing的情况完全相同。第二个参数是一个可选的,无序的环状序列序列,指定了特征的内部边界或“洞”(同时在第一个LinearRing里面的部分挖掉,不在第一个fromshapelyimportPolygonpoly=Polygon([(0,2),(2,2),(2,0)],[[(0.5,1.5),(1.5,1.5),(1.5,0.5),(0.5,0.5)]])polyarea面积lengthboundsexteriorinteriors访问组成环(外环内环)6box方形多边形fromshapely.geometryimportboxbox(0,0,1,2)7形状的集合7.1GeometryCollection当两个几何对象的交集包含多种类型的几何元素时,例如LineString和Point,Shapely会使用GeometryCollection类型来表示这些结果fromshapely.geometryimportLineStringa=LineString([(0,0),(1,1),(1,2),(2,2)])b=LineString([(0,0),(1,1),(2,1),(2,2)])x=a.intersection(b)print(x)#GEOMETRYCOLLECTION(LINESTRING(00,11),POINT(22))7.1.1 geoms 通过geoms属性访问GeometryCollection中的成员list(x.geoms)#[, ]7.2 集合中的点:MultiPoint类MultiPoint类用于表示点的集合。构造函数接受一个点的序列,其中每个点可以是(x,y[,z])形式的元组。fromshapelyimportMultiPointpoints=MultiPoint([(0.0,0.0),(1.0,1.0)])print(points.area)#输出0.0print(points.length)#输出0.0area始终为0length始终为0boundsgeomsMultiPoint中的点 7.3  集合中的线:MultiLineString类MultiLineString类表示线的集合。构造函数接受一系列类似线的序列或对象。一个MultiLineString对象的面积为零,长度为非零fromshapelyimportMultiLineStringcoords=[((0,0),(1,1)),((-1,0),(1,0))]lines=MultiLineString(coords)linesarea始终为0lengthboundsgeomsMultiLineString中的点7.4多边形中的点MultiPolygonfromshapelyimportPolygonfromshapelyimportMultiPolygonpolygon1=Polygon([(0,0),(1,1),(1,0),(0,1)])polygon2=Polygon([(0,0),(0,2),(1,1)])multiPolygon=MultiPolygon([polygon1,polygon2])multiPolygonarealengthboundsgeoms
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 05:43 , Processed in 0.462261 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表