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参数和作用域的使用
Nov 01 Python
python随机取list中的元素方法
Apr 08 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
妙用itchat! python实现久坐提醒功能
Nov 25 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
Python参数传递实现过程及原理详解
May 14 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
Python命令行参数定义及需要注意的地方
Nov 30 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 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
使用Apache的rewrite技术
2006/06/22 PHP
在PHP的图形函数中显示汉字
2006/10/09 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
解密效果
2006/06/23 Javascript
js每次Title显示不同的名言
2008/09/25 Javascript
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
大专自我鉴定范文
2013/10/01 职场文书
授权委托书
2015/01/28 职场文书
贪污检举信范文
2015/03/02 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers