如何详细掌握Python Shapely库的使用技巧?

2026-05-28 23:331阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计852个文字,预计阅读时间需要4分钟。

如何详细掌握Python Shapely库的使用技巧?

Shapely 是一个 Python 库,用于操作和分析笛卡尔坐标系中的几何对象。主要功能包括:

- 点(Point):表示二维空间中的一个点。- 线串(LineString):表示一条由点组成的线。- 面积计算:使用 `object.area` 方法返回对象的面积(浮点数)。

例如:pythonfrom shapely.geometry import Point

创建一个点point=Point(1, 2)

创建一个线串line_string=LineString([(1, 2), (3, 4)])

计算面积area=point.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)

如何详细掌握Python Shapely库的使用技巧?

  返回本对象和另一个对象的距离

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?\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)]

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

本文共计852个文字,预计阅读时间需要4分钟。

如何详细掌握Python Shapely库的使用技巧?

Shapely 是一个 Python 库,用于操作和分析笛卡尔坐标系中的几何对象。主要功能包括:

- 点(Point):表示二维空间中的一个点。- 线串(LineString):表示一条由点组成的线。- 面积计算:使用 `object.area` 方法返回对象的面积(浮点数)。

例如:pythonfrom shapely.geometry import Point

创建一个点point=Point(1, 2)

创建一个线串line_string=LineString([(1, 2), (3, 4)])

计算面积area=point.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)

如何详细掌握Python Shapely库的使用技巧?

  返回本对象和另一个对象的距离

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?\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)]

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