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 16 Python
Python FTP操作类代码分享
May 13 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
Python异常继承关系和自定义异常实现代码实例
Feb 20 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
python 实用工具状态机transitions
Nov 21 Python
Python之字符串的遍历的4种方式
Dec 08 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 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无敌近乎加密方式!
2010/07/17 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
php获得url参数中具有&amp;的值的方法
2014/03/05 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
JQuery index()方法使用代码
2010/06/02 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
js实现数字滚动特效
2019/12/16 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
Python 处理图片像素点的实例
2019/01/08 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
python 命名规范知识点汇总
2020/02/14 Python
python中如何进行连乘计算
2020/05/28 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
Sql面试题
2013/03/20 面试题
法人授权委托书
2014/09/16 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
高中同学会致辞
2015/08/01 职场文书