python Shapely使用指南详解

作者:jihite 时间:2022-11-01 23:38:04 

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

来源:https://www.cnblogs.com/kaituorensheng/p/5711752.html

标签:python,几何
0
投稿

猜你喜欢

  • Python cv2 图像自适应灰度直方图均衡化处理方法

    2022-09-21 17:01:57
  • 基于spring boot 日志(logback)报错的解决方式

    2022-05-12 08:13:46
  • Python numpy 模块介绍

    2022-06-04 02:03:00
  • python实现监控windows服务并自动启动服务示例

    2021-01-19 01:30:13
  • Python 文件重命名工具代码

    2022-09-25 05:15:32
  • SQL Server恢复模型之批量日志恢复模式

    2024-01-28 07:34:22
  • sql删除重复数据的详细方法

    2024-01-14 15:22:21
  • Go slice切片使用示例详解

    2023-07-09 12:07:02
  • Golang JSON的进阶用法实例讲解

    2024-02-20 00:24:00
  • git本地分支和stash内容报错消失的问题

    2023-10-19 01:48:47
  • keras 多任务多loss实例

    2022-09-21 12:49:33
  • Python中动态获取对象的属性和方法的教程

    2022-07-12 07:01:20
  • 用Python编写简单的gRPC服务的详细过程

    2023-07-22 13:41:39
  • 详解TreeView绑定数据库

    2024-01-17 17:09:13
  • numpy中实现ndarray数组返回符合特定条件的索引方法

    2023-04-21 06:21:53
  • Python中人脸图像特征提取方法(HOG、Dlib、CNN)简述

    2021-09-16 21:38:59
  • Python format字符串格式化函数的使用

    2023-12-20 12:45:59
  • javascript实现json页面分页实例代码

    2024-02-25 09:38:56
  • sqlserver中创建链接服务器图解教程

    2024-01-23 18:14:13
  • asp使用 sql_dmo 添加新数据库代码

    2010-03-17 20:57:00
  • asp之家 网络编程 m.aspxhome.com