Python空间分析| 02 利用Python计算空间局部自相关(LISA)

局部空间自相关

import esda  
import numpy as np
import pandas as pd
import libpysal as lps
import geopandas as gpd
import contextily as ctx
import matplotlib.pyplot as plt
from geopandas import GeoDataFrame
from shapely.geometry import Point
from pylab import figure, scatter, show
from splot.esda import moran_scatterplot
from esda.moran import Moran_Local
from splot.esda import plot_moran
from splot.esda import lisa_cluster
from splot.esda import plot_local_autocorrelation

%matplotlib inline

root_dir="/home/lighthouse/Learning/pysal/"

gdf = gpd.read_file(root_dir+'data/.shp') # 读取数据

数据概况

gdf.columns.values  #字段名
array(['CODE', 'COUNT', 'SUM_AREA', 'FIRST_ANAM', 'OID_', 'CODE_1',
       'DATAFLAG', 'TOTPOP', 'TOTPOP_10K', 'RURPOP_10K', 'TOWNPOP_10',
       'AGRPRODUCT', 'AGRLBR_10K', 'AGRSTOTGDP', 'FSTGDPRATE',
       'SCNDGDPRAT', 'THRDGDPRAT', 'Province', 'geometry'], dtype=object)
gdf.head(1)

计算局部空间自相关LISA

  • 第一产业占GDP比重FSTGDPRATE为变量
ax=gdf.plot(figsize=(8,8),column="FSTGDPRATE",scheme='Quantiles', k=5, cmap='GnBu', legend=True,)
ax.set_axis_off()

计算空间权重矩阵

  • pysal中的局部自相关计算中,要求权重矩阵的每一个元素都有邻接元素
y = gdf['FSTGDPRATE'].values
w = lps.weights.distance.Kernel.from_dataframe(gdf, fixed=False, k=15)
w.transform = 'r'
  • Local Moral 计算
moran_loc = Moran_Local(y, w)
  • Local Moral 散点图
fig, ax = moran_scatterplot(moran_loc, p=0.05)
ax.set_xlabel('FSTGDPRATE')
ax.set_ylabel('Spatial Lag of FSTGDPRATE')
plt.show()

  • 聚集区的空间分布
lisa_cluster(moran_loc, gdf, p=0.05, figsize = (9,9))
plt.show()

  • 根据上图结果可以看出,图中西部为高值聚集区,东部为低值聚集区。高值聚集区的第一产业产值占比比较高,而低值聚集区的第一产业产值占比比较低,这可以反映出区域的经济发展水平的空间异质性,区域发展不均衡。

  • 绘制结果组合图

plot_local_autocorrelation(moran_loc, gdf, 'FSTGDPRATE')
plt.show()

参考链接

### 在 ArcMap 中执行局空间自相关分析(LISA) 局空间自相关分析(Local Indicators of Spatial Association, LISA)是用于检测空间数据中局聚集模式的一种方法。在 ArcMap 中,可以通过使用空间统计工具来实现 LISA 分析。以下是具体的操作方法和注意事项。 #### 工具选择 在 ArcMap 的空间统计工具箱中,提供了 **Cluster and Outlier Analysis (Anselin Local Moran's I)** 工具,可以用于计算空间自相关[^1]。该工具基于 Anselin 提出的 Local Moran's I 指数,能够识别空间中的高值簇、低值簇以及异常点。 #### 数据准备 为了正确执行 LISA 分析,需要确保以下几点: - 输入要素必须包含数值字段,该字段将用于计算自相关。 - 需要定义一个空间权重矩阵,以描述要素之间的空间关系。这可以通过生成空间权重文件(Spatial Weights Matrix File)完成[^2]。 #### 操作步骤 1. 打开 ArcToolbox,并导航至 `Spatial Statistics Tools > Mapping Clusters > Cluster and Outlier Analysis (Anselin Local Moran's I)`。 2. 设置输入要素类和用于分析的数值字段。 3. 定义空间关系的概念化方式,例如反距离(Inverse Distance)、固定距离范围(Fixed Distance Band)或邻接关系(Contiguity Edges Only)。 4. 如果选择反距离或固定距离范围,则需要指定距离阈值或幂参数。 5. 生成的空间权重矩阵文件将用于后续分析。 6. 运行工具后,输出要素类将包含每个要素的 LISA 指标值和显著性水平。 #### 结果解释 - 输出要素类中会包含一个名为 `LCI` 的字段,表示 Local Moran's I 指数。 - 另外还会生成一个分类字段,指示每个要素属于哪种空间聚类类型(如高-高簇、低-低簇、高-低异常点等)[^3]。 ```python # 示例代码:通过 Python 脚本调用 Cluster and Outlier Analysis 工具 import arcpy # 设置输入参数 input_features = "path_to_your_input_features.shp" analysis_field = "your_analysis_field" output_features = "path_to_output_features.shp" conceptualization = "INVERSE_DISTANCE" distance_method = "EUCLIDEAN" # 执行 Cluster and Outlier Analysis 工具 arcpy.ClusterOutlierAnalysis_stats(input_features, analysis_field, output_features, conceptualization, distance_method) ``` #### 注意事项 - 确保输入数据的质量,避免缺失值或异常值对结果的影响。 - 空间权重矩阵的选择直接影响分析结果,应根据研究区域的特点选择合适的概念化方式[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值