python Shapely 使用指南 - jihite

分類:技術 時間:2016-09-30

翻譯: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

文章來源:


ads
ads

相關文章
ads

相關文章

ad