轉載聲明:本文轉載自:https://www.cnblogs.com/zhenbianshu/p/7795247.html
引入包
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)]
常見格式轉換
wkt: Well Know Text
wkb: Well Kown Binary
>>> 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)]