站长资源脚本专栏

python Shapely使用指南详解

整理:jimmy2025/3/3浏览2
简介Shapely是一个Python库,用于操作和分析笛卡尔坐标系中的几何对象。引入包from shapely.geometry import Pointfrom shapely.geometry import LineString共有的变量和方法object.areaReturns the area

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.

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

更多关于python Shapely使用方法请查看下面的相关链接