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 01 Python
python逐行读取文件内容的三种方法
Jan 20 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
解决Mac安装scrapy失败的问题
Jun 13 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
用pyqt5 给按钮设置图标和css样式的方法
Jun 24 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
Python中断多重循环的几种方式详解
Feb 10 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
Python爬取网站图片并保存的实现示例
Feb 26 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 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 随机生成10位字符代码
2009/03/26 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
javascript 动态添加表格行
2006/06/22 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
2015/05/09 Python
Python基于百度云文字识别API
2018/12/13 Python
解决Django连接db遇到的问题
2019/08/29 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
学校七一活动方案
2014/01/19 职场文书
自我评价的范文
2014/02/02 职场文书
信息技术教学反思
2014/02/12 职场文书
学校百日安全活动总结
2015/05/07 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript