python Shapely使用指南详解
Shapely是一个Python库,用于操作和分析笛卡尔坐标系中的几何对象。
引入包
fromshapely.geometryimportPoint fromshapely.geometryimportLineString
共有的变量和方法
object.area
Returnsthearea(float)oftheobject.
object.bounds
返回对象的(minx,miny,maxx,maxy)元组(float类型)
object.length
返回对象的长度
object.geom_type
返回对象类型
object.distance(other)
返回本对象和另一个对象的距离
object.representative_point()
Returnsacheaplycomputedpointthatisguaranteedtobewithinthegeometricobject.
>>>fromshapely.geometryimportPoint >>>printPoint(0,0).distance(Point(0,1)) 1.0 >>>fromshapely.geometryimportLineString >>>line=LineString([(0,0),(1,1),(1,2)]) >>>line.area 0.0 >>>line.bounds (0.0,0.0,1.0,2.0) >>>line.length 2.414213562373095 >>>line.geom_type 'LineString'
Point
classPoint(coordinates)
三种赋值方式
>>>point=Point(0,0) >>>point_2=Point((0,0)) >>>point_3=Point(point)
一个点对象有area和长度都为0
>>>point.area 0.0 >>>point.length 0.0
坐标可以通过coords或x、y、z得到
>>>p=Point(2,3) >>>p.coords>>>list(p.coords) [(2.0,3.0)] >>>p.x 2.0 >>>p.y 3.0
coords可以被切片
>>>p.coords[:] [(2.0,3.0)]
LineStrings
LineStrings构造函数传入参数是2个或多个点序列
一个LineStrings对象area为0,长度非0
>>>line=LineString([(0,0),(0,1),(1,2)]) >>>line.area 0.0 >>>line.length 2.414213562373095
获得坐标
>>>line.coords[:] [(0.0,0.0),(0.0,1.0),(1.0,2.0)] >>>list(line.coords) [(0.0,0.0),(0.0,1.0),(1.0,2.0)]
LineString依然可以接受一个同类型对象
>>>line2=LineString(line) >>>line2.coords[:] [(0.0,0.0),(0.0,1.0),(1.0,2.0)]
常见格式转换
>>>Point(1,1).wkt 'POINT(11)' >>>Point(1,1).wkb '\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?' >>>Point(1,1).wkb.encode('hex') '0101000000000000000000f03f000000000000f03f' >>> >>>Point(1,1).wkb.encode('hex') '0101000000000000000000f03f000000000000f03f'
两者都有loads和dumps方法
对于wkt
>>>fromshapely.wktimportdumps,loads >>>s=dumps(Point(1,2)) >>>s 'POINT(1.00000000000000002.0000000000000000)' >>>ss=loads(s) >>>ss>>>ss.coords[:] [(1.0,2.0)]
对于wkb
>>>fromshapely.wkbimportdumps,loads >>>s=dumps(Point(1,2),hex=True) >>>s '0101000000000000000000F03F0000000000000040' >>>ss=loads(s,hex=True) >>>ss>>>ss.coords >>>ss.coords[:] [(1.0,2.0)]
更多关于pythonShapely使用方法请查看下面的相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。