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是编译运行的验证方法
Jan 30 Python
python修改字典内key对应值的方法
Jul 11 Python
基python实现多线程网页爬虫
Sep 06 Python
在Python中使用gRPC的方法示例
Aug 08 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
python re的findall和finditer的区别详解
Nov 15 Python
如何用Python提取10000份log中的产品信息
Jan 14 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 Python
教你用Python+selenium搭建自动化测试环境
Jun 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
PHP微信开发之模板消息回复
2016/06/24 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
使用python实现baidu hi自动登录的代码
2013/02/10 Python
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Python星号*与**用法分析
2018/02/02 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
python取均匀不重复的随机数方式
2019/11/27 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
python开发前景如何
2020/06/11 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
火锅店创业计划书范文
2014/02/02 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
老舍《猫》教学反思
2016/02/17 职场文书