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+空格+数字开头,则输出>,并保留第二列的行数;
  • 如果某一行以两个空格+数字开头,则输出>,并保留第一列的行数。
以上数据的处理结果:
💡
点数据文件的转换,在此不做赘述,可以参考以上数据格式分析思路和处理代码。
 
Selenium控制浏览器project模块
  • Twikoo
  • Giscus
  • Cusdis