`
mapinfo
  • 浏览: 18385 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

基于MapInfo公司软件的mif/mid 文件成图技巧

阅读更多
1 引言
在河口海岸工程的测量中常需据已知的经纬度坐标生成岸界或航迹图,用于导航或成图一种普遍的方法是用VC++VB VBA PowerBuilder 和Delphi 等自行编程还有一种方法是借助于GIS 软件平台如在ArcView中用Avenue 在Mapinfo中用Mapbasic 等还有的混合使用这些方法能实现动态数据的接收与交换用户界面的二次开发特别是利用第三方厂家的专业控件如Mapobject MapX GeoMap等还能开发出更灵活的面向对象的独立平台但是在工作中通常只需要绘出点线面及文字标注即可Mapinfo 可以接受标准数据交换文件mif/mid 前者贮存图形数据后者存放属性数据两者都能用文本编辑工具进行编辑可用其它程序生成结合测量的信息可以方便地生成点线面状图形必要时可转成Shape 或dxf 等格式
2 mif/mid 的文件结构
2.1 mif 文件结构
mif 文件可以分为两大块第一块在文件头通常定义字符集投影与表结构
Version 300
定义字符集
Charset "WindowsSimpChinese"
定义字符分格符
Delimiter ","
有两个索引值
Index 2
投影选择
CoordSys Earth Projection 1, 0
表中含有两个字段
Columns 2
第一字段整型
ID Integer
第二字段字符型长度为7
No Char(7)
测绘信息网网友--测绘人提供第二块为数据区由数据点坐标和极简单的语法构成语法简要说明如下
2.1.1 点的创建
Point coor_x coor_y
定位
Symbol
(style_code,color,size,style_name,
effects, rotation_angle)
点的形状
其中coor_x 指点的经度coor_y 指点的纬度style 指符号样式color 指点的颜色 size 指点的大小三者均为整型style_code 是点符号MapInfo 的内部编码color 是RGB表示的颜色如为黑色为0 红色为16711680 size 为点数表示大小style_name 为字符串型表示调用的点符号库effects 为点的效果整型它是background drop shadow bold 三者之和background 中None 为0 Halo 为256 Border为16 drop shadow 为32 bold 为1 如一个点符号需表示成Border+dropshadow+bold 其effects 值为49 16+32+1rotation_angle 为旋转角以度为单位值为0-360 水平方向为0 度以左下角为原点按逆时针方向旋转如果省去style_name ,effects, rotation_angle 三项则采用MapInfo 的当前设置在MapInfo 中点对象的建立还有一个非常方便的方法用Table>create points 方法,它支持txt xls dbf 等格式
2.1.2 线的创建
直线
line coor_x1
coor_y1
coor_x2
coor_y2
pen(width,style,color)
折线
Pline n
coor_x1
coor_y1
coor_x2
coor_y2
coor_xn
coor_yn
pen(width,style,color)
其中coor_x1 coor_y1 coor_x2coor_y2 coor_xn coor_yn 表示坐标点pen()表示线的样式width 为线宽style 为线型整型color 为RGB 表示的颜色n为折线的点数Width有两种表示方法pixels和points Pixels 从细到粗分1-7 个档次在pen()中直接用1-7 的数即可points 中的值可自行输入如用points 表示的线粗为2.5的线在pen()中的width 为35 换算公式width=(points+1) 10 Style 为MapInfo 中的线型从左到右从上到下按0 1 2取值
当表示合并时格式稍有变动情况
如下
Pline Multiple n
由n 根折线合成一个对象
n1
第一根折线由n1 个点依次连成
coor_x1 coor_y1
coor_x2 coor_y2
coor_xn1 coor_yn1
n2
第二根折线由n2 个点依次连成
coor_x1 coor_y1
coor_x2 coor_y2
coor_xn2 coor_yn2
进入数据区
Data
该折线由9 条折线合并而成
Pline Multiple 9
第一条折线由31 个点依次相连而成
31
各点的坐标
121.500657 31.407574
121.498987 31.405751
121.499969 31.405521
121.501619 31.404571
… …
nn
第n 根折线由nn 个点依次连成
coor_x1 coor_y1
coor_x2 coor_y2
coor_xnn coor_ynn
pen(width,style,color)
2.1.3 面的创建
MapInfo 中有几种面状事物最常用的
是polygon 它的句法为
Region 1
表示一个面域
n
这个面域由n 个点依次相连而成
coor_x1 coor_y1
coor_x2 coor_y2
coor_xn-1 coor_yn-1
coor_x1 coor_y1
‘同第一个点表示封闭
pen(width, style, color)
边界线的样式
Brush (style, color, background)
填充的样式
Center coor_x coor_y
面域的中心点
其中Brush (style, color, background)中的style 表填充样式内部编码整型是MapInfo 中填充样式从左到右从上到下的排序color 为RGB 表示的颜色background表示有无背景其值为16777215 无背景时省去此项如表示由若干个区域组成一个大区域格式类似于线对象的合并把region 1 改成region m m 指合并区域的个数其它地方做少许改动即可
2.1.4 文本的创建
Text
String_text
标注的字符串
coor_x1 coor_y1
coor_x2 coor_y2
字符串的左下角右上角坐标
Font ("Font_style",
effects,
color,
background_color)
字符串样式
Angle degree
转角
Justify Right
对齐方式
Spacing width
行距
Label Line_style
coor_x coor_y
标注线与标注点
文本的创建比较繁琐对于少量的文本输入最好在转成Tab 文件后在地图窗口中操作如果是大量的标注如采样点等可以与点建立拓朴关系也可通过地理编码的方式实现
2.2 mid 文件结构
mid 文件存贮的是地图中每个obj 的属性数据这个文件是可选的如没有这个文件或是个空文件则属性表中所有字段的记录都是空白的mid 的文件结构按字段从左到右排列每一行即为一个记录分隔方式以mif 文件中delimiter 语句定义的符分隔如在一个mif 文件中声明了创建两个字段
Columns 2
ID Char(4)
ID 为4 位字符型
No Integer
No 为整型
对应的mid 文件可创建如下格式
"a",1
"b",2
"e",23
"f",8
如有必要最好在创建一个图形对象时同时创建它的属性
3 应用实例
本例的岸界坐标数据是文本文件即下面程序中用到的data.txt 文件的输入格式为三列点编号纬度度分格式经度度分格式每线段之间以-1 分开用VB编程生成mif/mid 文件如果是ASCII 格式也可用其它语言实现由于一个mif 文件对应一个图层为了便于修改最好不同属性的对象生成不同的mif 文件创建折线的主要语句如下
Option Explicit
Sub main()
Dim x(1 To 30000), y(1 To 30000) As
Double
Dim no(0 To 1000) As Integer
' every line's points
'Dim mysheet As Worksheet
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim m As Integer
Dim npoints As Integer
Dim nline As Integer
Dim nrow As Integer
Dim tempx As Double
Dim tempy As Double
Dim Ncode As Long
Dim Lname As String
Open "c:\data.txt" For Input As #3
i = 1
k = 1
m = 0
npoints = 0
Do While Not EOF(3)
Input #3, Ncode
If Ncode <> -1 Then
If m = 0 Then m = 1
Input #3, tempy, tempx
x(npoints + k) = Left(tempx, 3) +
(tempx - Left(tempx, 3)
* 100) / 60
y(npoints + k) = Left(tempy,2) + (tempy
- Left(tempy, 2) * 100) / 60
no(m) = k
k = k + 1
Else
Line Input #3, Lname
npoints = npoints + no(m)
k = 1
m = m + 1
End If
i = i + 1
Loop
Close #3
i = 1
Do While no(i) <> 0
nline = nline + 1
i = i + 1
Loop
Open "c:\demo.mif" For Output As #1
Open "c:\demo.mid" For Output As #2
Print #1, "Version 300"
Print #1,"Charset"
"WindowsSimpChinese"""
Print #1, "Delimiter "","""
Print #1, "Index 1"
Print #1, "CoordSys Earth
Projection 1, 0"
Print #1, "Columns 1"
Print #1, "Line Char(10)"
Print #1, "Data"
Dim ntemp As Integer
ntemp = 0
For i = 1 To nline
'nline 为折线的条数
Print #1, "pline", no(i)
For j = 1 To no(i)
'no(i)为第i 条直线的坐标点数
Print #1, x(j + ntemp),
y(j + ntemp)
Next j
ntemp = ntemp + no(i)
Print #1, "Pen(1,2,0)"
'细黑实线
Next i
Close #1
Close #2
'创建一个空的mid 文件
End Sub
图1 由.mif 文件在MapInfo 中生成的图创建点面文本的语句类似生成各种mif 文件以后即可调入MapInfo 中以上程序在Pwindows Professional 2002,Visual basic6.0 MapInfo5.0 下已经运行通过生成的图如左图图1
4 小结
用生成mif/mid 文件的方法借助MapInfo 平台可以很方便地生成矢量图它避开了繁琐的专用语言语法结构对于没有MapBasic 软件的用户而言更是一大方便

分享到:
评论

相关推荐

    基于MapInfo 平台的mif/mid 文件成图方法

    ### 基于MapInfo平台的mif/mid文件成图方法 #### 1. 引言 在河口海岸工程领域中,根据已知的经纬度坐标绘制岸界或航迹图对于导航和制图至关重要。传统的做法是通过编程语言(如VC++, VB, VBA, PowerBuilder, ...

    MapInfo MIF/MID file format description

    MapInfo MIF/MID file format description

    MIF/MID文件格式转换工具

    1. **MIF (MapInfo Interchange Format)** 文件:MIF是MapInfo公司用于存储地理信息的一种文件格式。它通常包含地图对象的数据,如点、线、面等,以及相关的属性信息。MIF文件常用于GIS(地理信息系统)应用,便于...

    分割MIF/Mid工具

    在GIS(地理信息系统)领域,MapInfo是一种广泛使用的桌面地理信息系统软件,它支持多种数据格式,其中MIF/MID(MapInfo Interchange Format)是一种专有的数据存储格式。MIF文件用于存储几何数据,而MID文件则包含...

    kml 文件转为mif/mid

    标题 "kml 文件转为mif/mid" 描述的是一个转换工具,它能够将地理信息数据格式的KML(Keyhole Markup Language)文件转换成MapInfo所支持的MIF(MapInfo Interchange Format)和MID(MapInfo Data Format)文件。...

    mapinfo的mif文件

    MIF(MapInfo Interchange Format)文件是MapInfo所使用的数据格式之一,它与MID(MapInfo Directory)文件一起,构成了MapInfo的地图数据结构。 MIF文件是一种文本格式的数据文件,用于存储地图对象的信息,如点、...

    CartoMap:浏览Mif/Mid /Shape格式文档的软件

    MapInfo的Mif/Mid格式,全称为“MapInfo Interchange Format”,是一种基于文本的数据交换格式,由MapInfo公司开发。Mif文件存储地理特征的几何信息,如坐标和形状类型,而Mid文件则存储属性信息,如图层名称、字段...

    mapinfo文件转ArcGIS shp文件

    MapInfo MIF/MID格式是一种基于文本的格式,包含了地图对象的几何、属性和元数据信息。它由两个文件组成:MIF文件存储几何信息,MID文件存储属性信息。这种格式便于阅读和编辑,但不是所有GIS软件都能支持。 ArcGIS...

    数据库ado.net操作mif和mid文件

    MIF/MID文件是MapInfo公司开发的地理信息系统(GIS)数据格式,MIF文件存储几何数据,如点、线和多边形,而MID文件则存储与这些几何对象相关的属性数据。在ADO.NET中操作这类非标准的数据源,通常需要自定义数据提供...

    MIF_MID.zip_MIF_mid m_mif m_mif mid_mif-mid

    标题“MIF_MID.zip_MIF_mid m_mif m_mif mid_mif-mid”提及的核心是MapInfo Data Interchange Format (MIF/MID) 文件格式,这是一种广泛用于地理信息系统(GIS)的数据交换格式,特别是与MapInfo软件相关的。MIF/MID...

    vc中通过解析mid/mif文件访问mapinfo数据

    在VC++(Visual C++)开发环境中,MapInfo是一款广泛使用的桌面GIS(地理信息系统)软件,它使用特定的文件格式来存储地图数据,包括mid(MapInfo Data)和mif(MapInfo Format)文件。mid文件存储的是表格数据,而...

    用C++实现MapInfo 的mif文件读取(源码)

    MapInfo是一款广泛应用的GIS软件,它支持多种格式的数据文件,其中MIF(MapInfo Format)是一种常见的矢量数据格式。本篇文章将深入探讨如何用C++语言实现MapInfo的MIF文件的读取,并基于提供的源码进行解析。 MIF...

    Kml文件转换成EXCEL、MIF、MID文件

    Kml文件转换成EXCEL、MIF、MID文件是一个涉及到地理信息数据处理的过程。Kml(Keyhole Markup Language)是Google开发的一种用于存储和展示地理数据的XML格式,广泛应用于地图服务,如Google Earth和Google Maps。而...

    读取mif,mid格式的程序

    标题中的“读取mif,mid格式的程序”指的是一个使用VC++编写的软件,能够处理两种特定的数据格式——MIF(MapInfo Interchange Format)和MID(MapInfo Directory)。MIF/MID是MapInfo公司用于存储地理信息数据的...

    MIF文件转换成SHP格式的文件

    MIF(MapInfo Interchange Format)和MID(MapInfo Directory)是MapInfo软件使用的矢量数据格式,而SHP(Shapefile)则是Esri公司的ArcGIS系统广泛接受的标准矢量数据格式。本文将详细介绍如何在ArcGIS中将MIF/MID...

    Tab、MIF文件转换为SHP文件的小软件

    1. 如果源数据是Tab文件,软件首先会将其转换为MIF/MID格式,因为Tab文件的结构比MIF更复杂,可能包含更多元数据和图层信息,所以通常需要先转换成MIF。 2. 接着,软件将MIF/MID文件转换为SHP/DBF格式。在这个过程中...

    Mif转Tab(批量)

    MapInfo是一个知名的桌面GIS软件,它使用了两种主要的数据格式:MIF/MID(MapInfo Interchange Format)和TAB(Table)。这两种格式分别用于存储地理信息和相关的属性数据。在某些情况下,用户可能需要将MIF/MID格式...

    mapinfo表转mif 小工具

    标题提到的“MapInfo表转MIF小工具”就是专门用来将MapInfo的TAB文件转换成MIF文件的实用程序。 1. **MapInfo TAB文件**:TAB文件是MapInfo的核心数据格式,包含了地图的几何信息(如点、线、面)、属性信息以及元...

    MapInfo® Data Interchange Format

    MapInfo® Data Interchange Format(简称MIF/MID格式)是MapInfo Professional®软件中用于数据交换的一种通用格式。它允许用户在不同平台上轻松地共享图形数据与文本数据。MIF/MID格式因其基于ASCII的特性而具有...

Global site tag (gtag.js) - Google Analytics