python Shapely使用指南详解


Posted in Python onFebruary 18, 2020

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

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

Python 相关文章推荐
利用python获得时间的实例说明
Mar 25 Python
Python获取apk文件URL地址实例
Nov 01 Python
python高并发异步服务器核心库forkcore使用方法
Nov 26 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
Python实现文本文件拆分写入到多个文本文件的方法
Apr 18 Python
Python模拟FTP文件服务器的操作方法
Feb 18 #Python
git查看、创建、删除、本地、远程分支方法详解
Feb 18 #Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 #Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 #Python
python有序查找算法 二分法实例解析
Feb 18 #Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 #Python
Python 解析pymysql模块操作数据库的方法
Feb 18 #Python
You might like
第七节--类的静态成员
2006/11/16 PHP
实用函数3
2007/11/08 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
简单谈谈json跨域
2016/03/13 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
搭建vue开发环境
2018/07/19 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
python实现端口转发器的方法
2015/03/13 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
python实现连连看游戏
2020/02/14 Python
Pycharm修改python路径过程图解
2020/05/22 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
python 写一个文件分发小程序
2020/12/05 Python
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
销售员自我评价怎么写
2013/09/19 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
Python语言中的数据类型-序列
2022/02/24 Python
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL