首先我要说明的是,arcgis 9.2中已经实现基于基本一阶邻接关系的空间自相关计算,也
就是说arcgis系统本身已通过一定算法解决了本文以及之前blog中涉及的相关问题。
以下内容仅限于算法设计的兴趣及对arcgis相关功能实现的探讨。
arcgis 9.2中对于空间关联矩阵文件的构建做了拓展,你可以DBF属性中任意值为Unique的
字段来建立矩阵。原先矩阵的关联字段只能使用Object ID构建,而现在你可以使用其它唯
一值的字段了,甚至是中文的地名字段(当然需要注意的是,字段值中不能有空格!而且
似乎用户自定义的文件中若使用OID构建运行时会报错)
下面是之前的面向9.0版本开发的VBA代码,现增添了计算MoranI值的程序,一并打包(生
成的邻接文件可用于9.0/9.1版本的相关计算,也可以用于VBA自带的MoranI计算,但不能
直接用于9.2中):
http://lilybbs.net/file/T/toolbar/VBA.rar
为了满足9.2中的邻接矩阵构建,鄙人近日对算法进行了扩充,并基于GDAL/OGR运算包在P
ython平台下进行了算法实现。特别要指出的是,由于GDAL相关函数的限制,算法中相应的
相邻多边形计算未能完全实现,仅仅搜索出了外接矩形(Envelop)相邻的多边形。因此大
家会发现生成的邻接矩阵行数会比原来的多一些。(相信随着GDAL的完善,最终可以在Py
thon平台上脱离ArcGIS实现相应功能)
附python源文件
1 """ 2 多边形的邻接矩阵生成 3 pnm.py - by toolbar 4 5 update time: 2006.12.19 6 """ 7 #引入操作系统库 8 import os 9 #引入TK库 10 from Tkinter import * 11 #引入消息对话框 12 from tkMessageBox import * 13 #引入文件对话框 14 from tkFileDialog import * 15 #引入_GDAL.dll 16 import _gdal 17 #引入OGR库 18 from gdal import ogr 19 20 #主程序类 21 class Main: 22 #字体定义 23 _font=('宋体',9) 24 #初始化 25 def __init__(self,master): 26 self.master=mast