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数据结构之翻转链表
Feb 25 Python
Python中pygal绘制雷达图代码分享
Dec 07 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
python实现傅里叶级数展开的实现
Jul 21 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
python同时替换多个字符串方法示例
Sep 17 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
基于Python脚本实现邮件报警功能
May 20 Python
利用Python+OpenCV三步去除水印
May 28 Python
Python机器学习之基于Pytorch实现猫狗分类
Jun 08 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汉字转拼音的示例
2014/02/27 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
php实现倒计时效果
2015/12/19 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
什么是JavaScript
2009/08/13 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
django 2.0更新的10条注意事项总结
2018/01/05 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python selenium自动化测试模型图解
2020/04/15 Python
vscode调试django项目的方法
2020/08/06 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
小学生秋游活动方案
2014/02/23 职场文书
法律系毕业生自荐信范文
2014/03/27 职场文书
新员工辞职信范文
2015/05/12 职场文书
服装店员工管理制度
2015/08/07 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL