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 相关文章推荐
Djang中静态文件配置方法
Jul 30 Python
Python引用传值概念与用法实例小结
Oct 07 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
Jun 19 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
Django如何使用redis作为缓存
May 21 Python
Python 绘制可视化折线图
Jul 22 Python
python安装第三方库如xlrd的方法
Oct 31 Python
如何一键升级Python所有包
Nov 05 Python
python解析json数据
Apr 29 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获取当前url的具体方法全面解析
2013/11/26 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
python中的json总结
2018/10/11 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
numpy库reshape用法详解
2020/04/19 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
Python程序慢的重要原因
2020/09/04 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
接待员岗位责任制
2014/02/10 职场文书
廉洁校园实施方案
2014/05/25 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
2015暑假假期总结
2015/07/13 职场文书