ArcGIS的swm二进制文件处理成为矩阵形式的文本文件
来源:互联网 发布:阿里云主机多少钱 编辑:程序博客网 时间:2024/05/19 15:43
空间权重矩阵是空间分析的数据基础。我们常用ArcGIS的空间统计模块的工具生成空间权重矩阵,然而其所得结果储存在swm文件中。该文件是二进制文件,数据结构不明。我们通常需要将swm处理成为矩阵形式,以便于进行进一步的数据分析。本人在做实验的过程中需要用到邻接矩阵,邻接矩阵是一种特殊的空间权重矩阵,元素只含0或1。我将过程经验总结下来,方便遇到类似问题的人。
我使用的是python,用到的模块包括pysal,numpy,pandas。首先,我们利用ArcGIS提供的工具将swm文件转为dbf文件。
第二步,编写程序,读取dbf的内容并处理成为矩阵形式。参考代码如下:
import pandas as pdimport numpy as npimport pysalfield_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(set(arr[:,0])))#用于空间权重矩阵的排列n=len(index_list)#初始化一个元素全为0的矩阵df=pd.DataFrame(np.zeros(n*n).reshape(n,n),index=index_list,columns=index_list)#将相邻的两个对象对应的位置元素改为1for (k1, k2), group in df1.groupby(['FID','NID']): a=index_list.index(k1) b=index_list.index(int(k2)) df.iloc[a,b]+=1#将结果储存到csv文件中 df.to_csv(r'E:\atest\linjie2.csv')
最后,来看下结果
希望对观看此文的读者有所帮助!
阅读全文
0 0
- ArcGIS的swm二进制文件处理成为矩阵形式的文本文件
- 文本文件和二进制文件的区别
- 文本文件和二进制文件的解惑!
- 文本文件于二进制文件的区别
- 文本文件和二进制文件的区别
- 文本文件转二进制文件的实现
- 文本文件和二进制文件的区别
- 二进制文件与文本文件的区别
- 文本文件与二进制文件的区别
- 文本文件与二进制文件的区别
- 二进制文件和文本文件的区别
- 文本文件与二进制文件的区别
- 文本文件与二进制文件的区别
- 二进制文件和文本文件的例子
- 二进制文件与文本文件的区别
- 文本文件和二进制文件的区别
- 文本文件和二进制文件的区别
- 二进制文件和文本文件的区别
- oracle dbf文件更换目录
- Leetcode Num.169 -- Majority Element
- TensorFolw学习笔记-TFRecord
- Leetcode个人题解712
- 数据可视化的未来趋势分析
- ArcGIS的swm二进制文件处理成为矩阵形式的文本文件
- MySQL 悲观锁和乐观锁和共享锁
- 装饰模式
- 多线程并发系统-----讲解
- Android中评分条AppCompatRatingBar
- Ajax原理与封装
- 数据结构
- Android Architecture Components(1)
- SpringBoot非官方教程 | 第十七篇:上传文件