type
status
date
slug
summary
tags
category
icon
password
MIF文件格式
MIF文件是MAPSIS中矢量数据的导出格式之一,实为具有一定格式的文本文件。点、线、面等不同要素导出的MIF文件格式有所不同,主要表现为段头和数据组标识的差异。
- 段头内容:主要涵盖数据要素本身的一些信息,如原表的字符类型、分隔符、坐标系、字段数、字段名等。
- 数据组标识:是数据要素类型的体现,包含Region、Pline、Ppoint等关键字,以及其他信息,这里我们只关注这些关键字。
转换方法
从MIF数据来看,文件中只有数据体是以数字开头的,其他行均具有指定的格式和字符标识。
下面以面和线文件为例,说明转换格式的方法。
面文件
面文件每个分段数据之前以
Region
开头,并独占一行; 下一行为该段数据的行数,行数前有两个空格。以下示例中包含了一个完整的数据段,从第二个Region
开始,表示下一个数据段。因此我们需要截取的数据除了数据段的数据体外,还应在数据段前添加
>
作为数据段之间的分隔符。这里可以保留数据段行数,方便后续使用。具体代码如下:代码释义:
- 如果某一行以数字开头,则输出整行(输出整个数据段的数据体);
- 如果某一行以两个连续的空格开头,并且第三个字符是数字,则输出
>
并保留行数。
输出结果:
线文件
情况1
线文件的分段标识相对简单一些,每个数据段之前以
Pline+空格+行数
开头并独占一行; 其下为该数据段的完整数据体;数据体后为 Pen (x,y,132132)
,其中Pen
前为四个空格字符(这一行无关紧要),从第二个Pline
开始,表示下一个数据段。对于这样格式的数据,转换方法比面文件简单一点,只需将
Pline
变为数据段分隔符>
,保留数据体,并忽略Pen
行。具体代码如下:代码释义:
- 如果某一行以
Pline
开头,则输出>
,并保留第二列的行数;
- 如果某一行以数字开头,则输出整行(输出整个数据段的数据体)。
输出结果:
情况2
实际使用中,线文件并非都是以上的统一格式,其中可能含有以类似
Pline Multiple 2
开头的数据段,如以上数据是一个由2个子数据段组成的复杂数据段。可以看出子数据段格式和面文件的格式相似,其中每一个子数据段的数据可以当做一个简单的线文件数据段。因此出现复杂数据段时,可以忽略
Pline Mulitple
行,并增加对类似 16
这种以两个空格开头并且第三个字符为数字的行判断、筛选和输出。代码释义:
- 如果某一行以数字开头,则输出整行(输出整个数据段的数据体);
- 如果某一行以
Pline+空格+数字
开头,则输出>
,并保留第二列的行数;
- 如果某一行以
两个空格+数字
开头,则输出>
,并保留第一列的行数。
以上数据的处理结果:
点数据文件的转换,在此不做赘述,可以参考以上数据格式分析思路和处理代码。