c++矩阵类_基于python构建空间权重矩阵

c++矩阵类_基于python构建空间权重矩阵目录 目录 基础 距离权重 邻接权重 示例 Pysal 是一个面向地理空间数据科学的开源跨平台库 重点是用 python 编写的地理空间矢量数据 它支持空间分析高级应用程序的开发 例如 空间簇 热点和异常点的检测 从空间数据构建图形 地理嵌入网络的空间回归与统计建模 空间计量经济学 探索性时空数据分析

大家好,我是讯享网,很高兴认识大家。

目录

  • 目录
  • 基础
    • 距离权重
    • 邻接权重
  • 示例

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)

856e28625bf5216411a467997e849bc9.png
讯享网

  • 绘图
regions.plot()

509b8123a801d4ed8aa105434f044ea0.png

  • 构造空间权重矩阵

讯享网#从至少共享一条边的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()

42e89d12f02a93d38ae4727e7cb586a3.png

  • 打印空间权重矩阵
讯享网print(wq.neighbors)

282d47b09883c74bd33de0db8c27fcde.png

  • 构建两列关系矩阵
df_w_1 = pd.DataFrame([k,e]for k,v in w.items() for e in v )
df_w_1

6dc37003769415ff1ec7a7f0ae77550f.png

  • 构建91*91邻接矩阵
讯享网df_w = pd.crosstab(df_w_1[0],df_w_1[1])
df_w

82ae6e987f7ede7627d18ed0dd5bcf2b.png

  • 保存数据
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

分享||空间计量科研工具(一)

66c984092d9a1c218991fa7b39556984.png

如果觉得有用就点一下“在看”

小讯
上一篇 2025-03-17 07:11
下一篇 2025-04-06 13:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/59233.html