Shapely是一个Python库,用于操作和分析笛卡尔坐标系中的几何对象。

引入包

from shapely.geometry import Point

from shapely.geometry import LineString

共有的变量和方法

object.area

  Returns the area (float) of the object.

object.bounds

  返回对象的(minx,miny,maxx,maxy)元组(float类型)

object.length

  返回对象的长度

object.geom_type

  返回对象类型

object.distance(other)

  返回本对象和另一个对象的距离

object.representative_point()

  Returns a cheaply computed point that is guaranteed to be within the geometric object.

> from shapely.geometry import Point
> print Point(0,0).distance(Point(0,1))
1.0
> from shapely.geometry import LineString
> 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

class Point(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
<shapely.coords.CoordinateSequence object at 0x7ffbc3d60dd0>

> 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 (1 1)'
> Point(1,1).wkb
'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0"htmlcode">
> from shapely.wkt import dumps, loads
> s = dumps(Point(1,2))
> s
'POINT (1.0000000000000000 2.0000000000000000)'
> ss = loads(s)
> ss
<shapely.geometry.point.Point object at 0x7ffbc3d783d0>
> ss.coords[:]
[(1.0, 2.0)]

对于wkb

> from shapely.wkb import dumps, loads
> s = dumps(Point(1,2), hex=True)
> s
'0101000000000000000000F03F0000000000000040'
> ss = loads(s, hex=True)
> ss
<shapely.geometry.point.Point object at 0x7ffbc3d78790>
> ss.coords
<shapely.coords.CoordinateSequence object at 0x7ffbc3d783d0>
> ss.coords[:]
[(1.0, 2.0)]

更多关于python Shapely使用方法请查看下面的相关链接

广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。