SWM格式稀疏权重矩阵转换为方阵形式全过程分享

在进行空间统计实验过程中,经常涉及到空间权重矩阵的处理,有时候需要将ArcGIS生成的swm格式的权重矩阵转换为形如“0 1”的方阵格式。这里将我的办法整理出来。

1.用如下工具箱生成swm格式的权重矩阵

SWM格式稀疏权重矩阵转换为方阵形式全过程分享

2.将swm格式的权重矩阵转换为dbf属性表

SWM格式稀疏权重矩阵转换为方阵形式全过程分享    SWM格式稀疏权重矩阵转换为方阵形式全过程分享

3.用excel打开dbf将其转换为txt文本文件

SWM格式稀疏权重矩阵转换为方阵形式全过程分享

4.写程序转换格式并保存

代码如下:

 static void Main(string[] args)
{
//读取文件并转换格式
StreamReader sr = File.OpenText("E:\\AcaDissertation\\Data\\weight_arc.txt");
double[,] weights = new double[, ];
while (sr.ReadLine() != null)
{
string[] line = sr.ReadLine().Split('\t'); weights[int.Parse(line[])-, int.Parse(line[])-] = double.Parse(line[]);
}
SaveMatrix(weights, "E:\\AcaDissertation\\Data\\weight_mat.txt");
Console.WriteLine("好了!");
} // 保存矩阵到文件
public static void SaveMatrix(double[,] InMatrix, string OutFileName)
{
int row = InMatrix.GetLength(), col = InMatrix.GetLength();
FileStream aFile = new FileStream(OutFileName, FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(aFile);
for (int i = ; i < row; i++)
{
for (int j = ; j < col; j++)
{
sw.Write("{0}{1}", InMatrix[i, j], " ");
}
sw.WriteLine();
}
sw.Close();
}

最后的最后,转换后的权重矩阵为:

SWM格式稀疏权重矩阵转换为方阵形式全过程分享

上一篇:2021-11-15


下一篇:兼容ie\firefox\chrome的cursor