空间权重矩阵是空间分析的数据基础。我们常用ArcGIS的空间统计模块的工具生成空间权重矩阵,然而其所得结果储存在swm文件中。该文件是二进制文件,数据结构不明。我们通常需要将swm处理成为矩阵形式,以便于进行进一步的数据分析。本人在做实验的过程中需要用到邻接矩阵,邻接矩阵是一种特殊的空间权重矩阵,元素只含0或1。我将过程经验总结下来,方便遇到类似问题的人。
我使用的是python,用到的模块包括pysal,numpy,pandas。首先,我们利用ArcGIS提供的工具将swm文件转为dbf文件。
第二步,编写程序,读取dbf的内容并处理成为矩阵形式。参考代码如下:
import pandas as pd
import numpy as np
import pysal
field_dbf=pysal.open(r'E:\atest\linjie.dbf')
#只需将FIDNUM和NID两列储存到arr中,前者是对象唯一标识,后者是与前者邻近的对象标识
arr=field_dbf.by_col_array('FIDNUM','NID')
df1=pd.DataFrame(arr,columns=(('FID','NID')))
index_list=sorted(list(