地理数据分析常用工具
一、shapely
shapely是python中可以处理笛卡尔坐标系中几何对象(点、线、面)的一个库。其功能非常复杂,可以简化我们平时许多操作,下面来说一下我的一些学习理解。
在开始之前,先导入一些相关的模块:
from shapely import geometry as geo
from shapely import wkt
from shapely import ops
import numpy as np
- 点的相关操作(Point):
一.点的三种赋值方法:
pt1=geo.Point(1,1)
pt2=geo.Point((2.2))
pt3=geo.Point(pt1)
print(pt1,pt2,pt3)
除了赋值之外,shapely支持对象与numpy.array相互转换,例如:
arr=np.array([2,2])
pt4.geo.Point(arr)
print(pt4)#显示pt4的坐标
pt4#可以在图中展示该点
二,获取点的坐标:
print(pt1.x)#获取横坐标
print(pt1.y)#获取纵坐标
print(list(pt1.coords))#获取所有坐标
三,点的批量可视化和点与点之间距离:
geo.GeometryCollection([pt1,pt2]#批量可视化
d=pt1.distance(pt2)#获取距离
print(d)
- 线的相关操作(LineString):
一,线的赋值:
arr=np.array([(1,1),(1,2),(2,3)])
line2=geo.LineString(arr)
line2
#line1=geo.LineString([(0,0),(1,1),(3,1),(5.0)])
#line1 效果相同
二 ,线的一些操作:
print ('两个几何对象之间的距离:'+str(geo.Point(2,2).distance(line2)))#该方法即可求线线距离也可以求线点距离
print ('两个几何对象之间的hausdorff_distance距离:'+str(geo.Point(2,2).hausdorff_distance(line2)))#该方法求得是点与线的最长距离
print('该几何对象的面积:'+str(line2.area))
print('该几何对象的坐标范围:'+str(line2.bounds))
print('该几何对象的长度:'+str(line2.length))
print('该几何对象的几何类型:'+str(line2.geom_type))
print('该几何对象的坐标系:'+str(list(line2.coords)))
center = line2.centroid #几何中心
geo.GeometryCollection([line2,center])
线的最小外接矩形:
bbox = line2.envelope #求最小外接矩形
geo.GeometryCollection([line,bbox])
- 面的相关操作(polygon):
一,面的赋值:
poly1 = geo.Polygon([(0,0),(1,0),(1,1),(0,1),(0,0)]) #起点和终点相同
poly1
coords = np.array([(0,0),(1,0.1),(2,0),(1,2),(0,0)])
poly2 = geo.Polygon(coords)
poly2
二,面的一些操作,
#常用属性
print(poly1.area) #面积
print(poly1