Geometry——Python Shapely使用指南


轉載聲明:本文轉載自: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)]

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM