翻譯:http://toblerity.org/shapely/manual.html
引入包
from shapely.geometry import Pointfrom 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.
gt;gt;gt; from shapely.geometry import Pointgt;gt;gt; print Point(0,0).distance(Point(0,1)).0gt;gt;gt; from shapely.geometry import LineStringgt;gt;gt; line = LineString([(0,0), (1,1), (1,2)])gt;gt;gt; line.area.0gt;gt;gt; line.bounds(0.0, 0.0, 1.0, 2.0)gt;gt;gt; line.length.414213562373095gt;gt;gt; line.geom_type'LineString'
Point
class Point ( coordinates )
三種賦值方式
gt;gt;gt; point = Point(0,0)gt;gt;gt; point_2 = Point((0,0))gt;gt;gt; point_3 = Point(point)
一個點對象有area和長度都為0
gt;gt;gt; point.area.0gt;gt;gt; point.length.0
坐標可以通過coords或x、y、z得到
gt;gt;gt; p = Point(2,3)gt;gt;gt; p.coordslt;shapely.coords.CoordinateSequence object at 0x7ffbc3d60dd0gt;gt;gt;gt; list(p.coords)[(2.0, 3.0)]gt;gt;gt; p.x.0gt;gt;gt; p.y.0
coords可以被切片
gt;gt;gt; p.coords[:][(2.0, 3.0)]
LineStrings
LineStrings構造函數傳入參數是2個或多個點序列
一個LineStrings對象area為0,長度非0
gt;gt;gt; line = LineString([(0,0), (0,1), (1,2)])gt;gt;gt; line.area.0gt;gt;gt; line.length.414213562373095
獲得坐標
gt;gt;gt; line.coords[:][(0.0, 0.0), (0.0, 1.0), (1.0, 2.0)]
gt;gt;gt; list(line.coords)
[(0.0, 0.0), (0.0, 1.0), (1.0, 2.0)]
LineString依然可以接受一個同類型對象
gt;gt;gt; line2 = LineString(line)gt;gt;gt; line2.coords[:][(0.0, 0.0), (0.0, 1.0), (1.0, 2.0)]
常見格式轉換
wkt: Well Know Text
wkb: Well Kown Binary
gt;gt;gt; Point(1,1).wkt'POINT (1 1)'gt;gt;gt; Point(1,1).wkb'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?'gt;gt;gt; Point(1,1).wkb.encode('hex')'0101000000000000000000f03f000000000000f03f'gt;gt;gt; gt;gt;gt; Point(1,1).wkb.encode('hex')'0101000000000000000000f03f000000000000f03f'
兩者都有loads和dumps方法
對于wkt
gt;gt;gt; from shapely.wkt import dumps, loadsgt;gt;gt; s = dumps(Point(1,2))gt;gt;gt; s'POINT (1.0000000000000000 2.0000000000000000)'gt;gt;gt; ss = loads(s)gt;gt;gt; sslt;shapely.geometry.point.Point object at 0x7ffbc3d783d0gt;gt;gt;gt; ss.coords[:][(1.0, 2.0)]
對于wkb
gt;gt;gt; from shapely.wkb import dumps, loadsgt;gt;gt; s = dumps(Point(1,2), hex=True)gt;gt;gt; s'0101000000000000000000F03F0000000000000040'gt;gt;gt; ss = loads(s, hex=True)gt;gt;gt; sslt;shapely.geometry.point.Point object at 0x7ffbc3d78790gt;gt;gt;gt; ss.coordslt;shapely.coords.CoordinateSequence object at 0x7ffbc3d783d0gt;gt;gt;gt; ss.coords[:][(1.0, 2.0)]
Tags: distance cheaply python import within
文章來源: