前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python Shapely使用指南详解

python Shapely使用指南详解

作者头像
狼啸风云
修改2022-09-02 19:52:26
1.8K0
修改2022-09-02 19:52:26
举报
文章被收录于专栏:计算机视觉理论及其实现

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

引入包

代码语言:javascript
复制
from shapely.geometry import Point


from shapely.geometry import LineString

共有的变量和方法

代码语言:javascript
复制
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.
代码语言:javascript
复制
>>> 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)

三种赋值方式

代码语言:javascript
复制
>>> point = Point(0,0)

>>> point_2 = Point((0,0))

>>> point_3 = Point(point)

一个点对象有area和长度都为0

代码语言:javascript
复制
>>> point.area

0.0

>>> point.length

0.0

坐标可以通过coords或x、y、z得到

代码语言:javascript
复制
>>> 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可以被切片

代码语言:javascript
复制
>>> p.coords[:]

[(2.0, 3.0)]

LineStrings

LineStrings构造函数传入参数是2个或多个点序列

一个LineStrings对象area为0,长度非0

代码语言:javascript
复制
>>> line = LineString([(0,0), (0,1), (1,2)])

>>> line.area

0.0

>>> line.length

2.414213562373095

获得坐标

代码语言:javascript
复制
>>> 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依然可以接受一个同类型对象

代码语言:javascript
复制
>>> line2 = LineString(line)

>>> line2.coords[:]

[(0.0, 0.0), (0.0, 1.0), (1.0, 2.0)]

常见格式转换

代码语言:javascript
复制
>>> Point(1,1).wkt

'POINT (1 1)'

>>> 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

代码语言:javascript
复制
>>> 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)]

各位看官老爷,如果觉得对您有用麻烦赏个子,创作不易,0.1元就行了。下面是微信乞讨码:

对于wkb

代码语言:javascript
复制
>>> 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)]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档