【问题标题】:Python: how to compute the spatial autocorrelation of indicators from a shapefile?Python:如何从 shapefile 计算指标的空间自相关?
【发布时间】:2019-06-03 04:19:16
【问题描述】:

我正在使用geopandas 读取瑞士城市的shapefile,即municipalities.shp。对于 170,我有人口信息,即population.csv 文件可以在这个 repo here 中找到。

是否可以通过所谓的BFS number 合并信息。

import pandas as pd
import geopandas

mun = geopandas.read_file('municipalities.shp')
pop = pd.read_csv('population.csv')
## merge data
mergedData = pd.merge(mun,pop,left_on='BFS_NUMMER',right_on='BFS')

现在,对于 170 个城市中的每一个,我都有地理信息和人口信息。

我想知道是否可以使用pysal 来检查这 170 个城市的人口是否在空间上自相关。

【问题讨论】:

    标签: python pandas pysal


    【解决方案1】:

    是的,你可以。首先,您需要确保您正在传递地理数据框,您的代码正在返回熊猫数据框:

    import pandas as pd
    import geopandas as gpd
    
    mun = gpd.read_file('municipalities.shp')
    pop = pd.read_csv('population.csv')
    # merge data
    mergedData = mun.merge(pop,left_on='BFS_NUMMER',right_on='BFS')
    

    然后您可以使用pysal 的工具。我将按照pysal 的新结构使用libpysalesda 包。

    import libpysal
    import esda
    
    weights = libpysal.weights.Queen.from_dataframe(mergedData)  # generate spatial weights (Queen in this case)
    spatial_auto = esda.Moran(mun[['population']], weights)  # calculate Moran's I
    

    首先您必须生成空间权重矩阵。如果您想使用不同于 Queen 的方式,请关注 https://libpysal.readthedocs.io/en/latest/api.html。然后生成 Moran's I 空间自相关指数(全局)。它会生成您可能需要的所有属性 (https://esda.readthedocs.io/en/latest/generated/esda.Moran.html#esda.Moran)。类似的语法适用于 Gamma、Geary's C 或 Getis Ord 自相关指数。

    esda 的文档非常好,显示了 jupyter 笔记本中的示例,我建议查看其他信息(如本地自相关或绘图) - https://esda.readthedocs.io/en/latest/

    【讨论】:

    • 有没有办法计算点之间的空间相关性?看来这种方法需要多边形
    • 有,你只需要以某种方式定义空间权重矩阵。你当然可以使用libpysal.weights.DistanceBandlibpysal.weights.Kernellibpysal.weights.KNN 来做到这一点。上面的例子是使用 Queen,它是基于邻接的方法,取决于多边形。列出的那些是基于距离的,因此它们也适用于点。
    猜你喜欢
    • 2023-04-04
    • 2013-08-10
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2014-04-28
    • 2022-07-06
    相关资源
    最近更新 更多