目录
基础
距离权重
邻接权重
示例
Pysal是一个面向地理空间数据科学的开源跨平台库,重点是用python编写的地理空间矢量数据。它支持空间分析高级应用程序的开发,例如
空间簇、热点和异常点的检测
从空间数据构建图形
地理嵌入网络的空间回归与统计建模
空间计量经济学
探索性时空数据分析
最近写文章要用空间权重矩阵,可以用Arcgis和Geoda处理效率略低,于是想到用Pysal计算空间权重矩阵,并转换成Stata可以直接使用的n*n的矩阵格式。python大法批量生产比较带感!libpysal是Pysal专门生成距离权重矩阵的包,PySAL中提供了shapefile读取的接口,可直接读取实验数据生成距离权重矩阵,使用起来非常方便。
libpysal提供了四个模块,这些模块构成了PySAL系列许多上游软件包中的构建块:
空间权重:libpysal.weights
输入和输出:libpysal.io
计算几何:libpysal.cg
内置示例数据集libpysal.examples
常用的空间权重矩阵有邻接矩阵和距离矩阵:
libpysal.weights.DistanceBand(data, threshold)
基于距离带的空间权重。
libpysal.weights.Kernel(data[, bandwidth, …])
基于内核函数的空间权重。
libpysal.weights.KNN(data[, k, p, ids, …])
基于k个最近邻居创建最近邻居权重矩阵。
libpysal.weights.Queen(polygons, **kw)
从一组共享至少一个顶点的pysal多边形构造一个weights对象。
libpysal.weights.Rook(polygons, **kw)
从一组共享至少一条边的pysal多边形构造一个weights对象。
libpysal.weights.Voronoi(points[, …])
二维点集的Voronoi权重
libpysal.weights.W(neighbors[, weights, …])
空间权重类。
至于geopandas和Pysa安装,这里不做过多讲述,前面有分享过,后台回复可以获取依赖包的二进制文件。
这里示例构建黄河流域地级市的空间权重矩阵
导入包
import esda
import geopandas as gpd
import libpysal as lps
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline #jupyter lab 或 notebook在线显示
重载配置文件,解决中文乱码问题
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串
加载数据-矢量数据的位置
regions = gpd.GeoDataFrame.from_file(r'C:\Users\dell\Desktop\黄河流域地市end.shp')
regions.head(5)
绘图
regions.plot()
构造空间权重矩阵
#从至少共享一条边的Pysal多边形集合构造一个权重对象。
df = regions
wq = lps.weights.Queen.from_dataframe(df)
wq.transform = 'r'#行标准化
绘制权重矩阵图
ax = df.plot(edgecolor='grey', facecolor='w')
f,ax = wq.plot(df, ax=ax,
edge_kws=dict(color='r', linestyle=':', linewidth=1),
node_kws=dict(marker='o'))
ax.set_axis_off()
打印空间权重矩阵
print(wq.neighbors)
构建两列关系矩阵
df_w_1 = pd.DataFrame([k,e]for k,v in w.items() for e in v )
df_w_1
构建91*91邻接矩阵
df_w = pd.crosstab(df_w_1[0],df_w_1[1])
df_w
保存数据
df_w.to_csv('研究区域邻接矩阵.csv')
近期文章
Python入门:
Python安装与环境配置
Python基础用法 |《Python与开源GIS》
Python读取excel的两种方法
Python读取json数据
Python基本库——解析库XPath
Python基本库—正则表达式(regex)
第一个Python爬虫
Python空间分析||geopandas安装与基本使用
利用Python绘制酷炫OD流量图的新方法
Basemap安装及报错处理
GIS网络分析—服务区分析、OD矩形构建等时圈
空间分析:
开工了开工了!空间计量模型系列教程一
空间计量模型系列教程二
情人节特辑之带有惊喜的空间计量模型系列教程三
空间计量模型系列教程四
空间计量模型系列教程五(完结啦)
空间计量||空间权重矩阵
空间计量——用GeoDa和stata生成空间权重矩阵的方法
空间计量|| matlab实现空间计量模型SAR、SEM、SDM
分享||空间计量科研工具(一)
如果觉得有用就点一下“在看”吧