|||
【导读】 |
前已述及权重文件转换函数三部曲中的两部:gal2mat和gwt2mat,现为第三部swm2mat,将ArcGIS生成的swm格式文件转成n*n矩阵,从而可以适用于matlab空间计量经济分析程序。 后面将推出一劳永逸的函数shp2mat,直接基于shape文件生成需要的各种空间权重矩阵,以及进行权重矩阵标准化的函数spmat.rownorm。有此两个函数,足以应付空间数据分析需要的各种空间权重矩阵。 |
一、swm格式文件 |
目前,比较便利的生成空间权重文件方法主要有二:
(1)用GeoDa生成gal和gwt格式文件;
(2)用ArcGIS生成swm格式文件。
此外,用R语言和stata的相关程序包也能基于shape文件生成,这里不予赘述。
GeoDa生成权重文件比较傻瓜,但对于gal文件,其缺陷在于如果shape文件中有“孤岛”(如省份中的海南岛),其对应的邻居数将为0,在进一步分析中容易出错。不知为何,其一直没有修补这一缺陷。
ArcGIS生成权重文件步骤为:①生成swm文件,“Spatial Statistics Tools”(空间统计工具) → “Modeling Spatial Relationships”(构建空间关系) → “Generate Spatial Weights Matrix”(生成空间权重矩阵);②将swm文件转成dbf表,“Spatial Statistics Tools”(空间统计工具) → “Utilities”(实用功能) → “Convert Spatial Weights Matrix to Table”(将空间权重矩阵转成表格)。其生成的dbf表在形式上类似于gwt文件。
相比GeoDa,ArcGIS生成的权重文件可以通过将“Number of Neighbors”(邻居数)设为1来保证每个空间单元至少有一个邻居。但其无法基于经纬度来计算弧度距离,计算的是欧几里得距离,因此需要事先将经纬度坐标投影成以米或千米为单位表示的平面坐标。
用Excel2010打开用ArcGIS得到的权重文件province31_swm.dbf,可以发现,其采取了类似gwt文件方式来表达各单元间的空间关系。其一共四列,第一列可无视,第二、三、四列表达了各单元间的空间关系。如2-4行的二、三、四列表示MYID编号为14的单元有三个邻居,其编号(NID)分别为23、25和30,权重赋值为1(表示是否邻接,亦可为单元间的距离)。其内容实际上与gal文件差不多,但是采取了gwt文件的表达形式。