24
2020
03

python Shapely使用

这篇文章主要介绍了python Shapely使用指南详解,需要的朋友可以参考下

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.


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?\x00\x00\x00\x00\x00\x00\xf0?'

>>> Point(1,1).wkb.encode('hex')

'0101000000000000000000f03f000000000000f03f'

>>> 

>>> Point(1,1).wkb.encode('hex')

'0101000000000000000000f03f000000000000f03f'


两者都有loads和dumps方法


对于wkt


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


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/chengxun02/article/details/105029605


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。