gwt2mat:将gwt权重文件转成n-by-n矩阵

GeoDa可生成两种格式的权重文件,一为基于邻接关系的gal文件,一为基于距离远近的gwt文件。

gal文件为0-1矩阵,相邻单元赋值为1,否则为。

gwt文件计算出一定距离范围内的单元间距离。如将阈值距离设定为充分大,则可计算出所有单元两两之间的距离。

GeoDa的一个优势是,可根据单元点的经纬度坐标,计算出点与点之间的弧度距离,较之欧几里得距离更为合理。

gwt权重文件为文本格式,可用“记事本”打开。如下图所示,文件province31.gwt给出了中国31个大陆省份两两之间的距离,其第一行为文件头说明,表示有31个单元,基于shape文件Province31生成,识别单元的变量为POLY_ID。接下来共三列,第一列和第二列均为单元编号,第三列为单元间距离。如第二行表示POLY_ID值为1的单元与POLY_ID值为15的单元间距离为1.066。对于省份来说,距离计算的坐标为其质心经纬度。

利用R语言spdep包中的read.gwt2nb,可以读入将gwt数据读为nb对象。然后再利用nb2mat,可以将其转成n*n矩阵,然而这是0-1矩阵,且默认为行标准化,偏离我们的预期。

现自编R语言程序gwt2mat()将gwt文件转成n*n矩阵,其参数设定如下:

gwt2mat(gwt)

其中,gwt为文件路径。生成后,自己可以进行取距离平方倒数后的行标准化。

后面会专门开发函数swm.rownorm来进行各种情况下的行标准化。

数据和代码下载:https://pan.baidu.com/s/1ssu-7Iwhy83FKrq-R-Lp2g 密码:d8gb

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180526G1LZUM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券