Mapgis二次开发在地球物理中的应用

近期关注

Shunfly
标签:
分类: Geophysics
我抢沙发

512两周年记

希望崛起在废墟之上

Shunfly
标签:
分类: Life
我抢沙发

Mapinfo Mif文件格式说明

具体有什么用呢?可以提取Mapgis的区,线的坐标信息。

http://blog.csdn.net/gisfarmer/archive/2008/12/30/3647114.aspx

MIF是Mapinfo用来向外交换数据的一种中间交换文件。当用户在Mapinfo中将一张Mapinfo地图表以MIF格式转出来MIF文件中后,Mapinfo会同时在用户指定的保存目录下生成两个文件(*.mif,*.mid)。其中*.mif文件保存了该Mapinfo表的表结构及表中所有空间对象的空间信息(如:每个点对象的符号样式、点位坐标;每个线对象的线样式、节点数据、节点坐标;区域对象的填充模式、每个区域包含的子区域个数及每个区域的节点数、节点数等)。而*.mid文件则按记录顺序保存了每个空间对象的所有属性信息。这两个文件都为文本性质的文件,用户可以通过相应的文件读写方法实现对文件内容的读写。

MapInfo 数据在两个文件中——图形保存在.MIF 文件中而文本数据包含在.MID
文件中。文本数据是分界数据,每行一个记录以及行间的回车,或者回车加换行,或者换行。MIF
文件有两个区域—文件头区域和数据节。有关如何创建MapInfo表的信息保存在文件头中;图形对象定义保存在数据节中。
这是一个MIF 文件头的说明,方括号内是可选信息。MIF File header 格式:
Version n
Charset “characterSetName”
[ DELIMITER "" ]
[ UNIQUE n,n.. ]
[ INDEX n,n.. ]
[ COORDSYS... ]
[ TRANSFORM... ]
COLUMNS n




DATA
Version
子句说明您所使用的是VERSION 1、VERSION 2、VERSION 300还是VERSION 450
格式。
Charset
子句指定在表中创建文本时使用的字符集。
Delimiter
在引号中指定分隔符,缺省情况下,分隔符是TAB键;如果使用缺省值,则无需DELIMITER行。
Unique(唯一)
指定一个号码。这个号码指示数据库的一列;
Index(索引)
要指出表中的列有索引,可以在Index子句中引入一个号码(或一系列用逗号分隔的号码)。每个号码代表数据库的一列;INDEX
列表中的列将有附录为它们制作的索引。
CoordSys(坐标系统)子句

指定COORDSYS子句以注明数据不是以经度/纬度形式保存的。未指定COORDSYS子句时,假定数据是以经度/纬度形式保存的。所有坐标都是以相对于东北象限的值保存的。(
其中一些参数设置比较复杂)
Columns(列)
指定列数。然后为每列创建一行,它包含列名、列类型,对于字符列和小数列,还包含一个指示字段宽度的数。
有效的列类型是:
l char(宽度)
l integer(4 个字节)
l smallint(2 个字节,因此只能存储从-32767 到+32767 的数)
l decimal(宽度,小数位数)
l float
l date
l logical
MIF文件的数据节在文件头之后,且必须由DATA 以单独的一行引入:
DATA
MIF文件的数据节可以有任意多个图形初值,每个初值代表一个图形对象。MapInfo使MIF和MID
文件中的条目相互匹配,MIF文件中的第一个对象与MID文件中的第一行关联,MIF文件中的第二个对象与MID 文件中的第二行关联,依此类推。如果MID
文件中特定的一行没有对应的图形对象,那么必须在MIF 文件中的相应位置上写一个“空白”对象(NONE)以保留该位置。
NONE
可以指定的图形对象为:
l 点(point)
l 直线(line)
l 折线(polyline)
l 区域(region)
l 圆弧(arc)
l 文本(text)
l 矩形(rectangle)
l 圆角矩形(rounded rectangle)
l 椭圆(ellipse)
一个点(point)对象需要两个参数:一个X 坐标和一个Y坐标。作为一个选项,可以设定代表该点的symbol(符号)。symbol
是用数字标明的。如果忽略了SYMBOL 子句,则使用当前symbol。
POINT x y
〔 SYMBOL (shape, color, size)〕

一个直线(line)对象需要四个参数;每个端点各一个X 坐标和一个Y 坐标。作为一个选项,可以指定pen
类型。如果没有指定pen类型,则使用当前pen 类型。
LINE x1 y1 x2 y2
〔 PEN (width, pattern, color)〕

一个折线(polyline)对象由一节或多节构成。如果该折线不止一节,则应包含MULTIPLE
关键字,并在其后写明节数。为每节设定一个numpts 参数(该参数指出该节中节点的数量),
其后为每个节点的x/y坐标对。用可选的PEN 子句(本附录稍后说明)来指定线样式。如果包含了可选的SMOOTH 关键字,则折线被平滑。

PLINE 〔 MULTIPLE numsections 〕
numpts1
x1 y1
x2 y2
:
〔 numpts2
x1 y1
x2 y2 〕
:
〔 PEN (width, pattern, color)〕
〔 SMOOTH 〕

一个区域(region)对象由一个或多个多边形构成。用numpolygons 参数设定多边形数量(紧
跟在REGION 关键字后面)。为每个多边形设定一个numpts参数(该参数指出该多边形中节点的数量),其后为每个节点的x/y坐标对。用可选的PEN
和BRUSH 子句(本附录稍后说明)指定该对象的样式。用可选的CENTER子句来精确定义该对象的中心位置。中心必须位于对象内。
REGION numpolygons
numpts1
x1 y1
x2 y2
:
〔numpts2
x1 y1
x2 y2 〕
:
〔 PEN (width, pattern, color)〕
〔 BRUSH (pattern, forecolor, backcolor)〕
〔 CENTER x y 〕

一个圆弧(arc)需要其外接矩形的对角位置以及该圆弧的起点(a)和终点(b)的角度,其中角度以度的形式表示,以时钟上三点钟处为零点反时针移动。作为一个选项,可以指定pen类型。(一段圆弧指定了一个椭圆的一段,圆弧的两角由外接矩形确定。)

ARC x1 y1 x2 y2
a b
〔 PEN (width, pattern, color)〕

一个文本(text)对象由一个文本字符串构成,不超过255个字符。要使文本字符串换行成多行,可在textstring参数内插入字符\n(例如“第一行\n
第二行\n第三行”)。x1、y1、
x2和y2 指定了文本在地图上的位置。间隔可以是1.0(单间距)、1.5 或2.0(双间距)。
用Font 子句来控制字体等等。
TEXT “textstring”
x1 y1 x2 y2
〔 FONT…〕
〔 Spacing {1.0 | 1.5 | 2.0}〕
〔 Justify {Left | Center | Right}〕
〔 Angle text_angle〕
〔 Label Line {simple | arrow} x y 〕

一个矩形(rectangle)需要一对对角的坐标。作为选项,可以指定pen和brush类型。
RECT x1 y1 x2 y2
〔 PEN (width, pattern, color)〕
〔 BRUSH (pattern, forecolor, backcolor)〕

一个圆角矩形(rounded rectangle)需要一对对角的坐标和圆的角度(a)。作为选项,可以指定pen 和brush
类型。圆角的角度用坐标单位表示。
ROUNDRECT x1 y1 x2 y2
a
〔 PEN (width, pattern, color)〕
〔 BRUSH (pattern, forecolor, backcolor)〕

一个椭圆(ellipse)对象需要其外接矩形的一对对角的坐标。作为选项,可以指定pen 和brush类型。
ELLIPSE x1 y1 x2 y2
〔 PEN (width, pattern, color)〕
〔 BRUSH (pattern, forecolor, backcolor)〕

Pen样式
Pen 子句设定诸如直线、折线或圆弧此类的线性对象的宽度、图案和颜色。Pen 子句有如下语法:
PEN (width, pattern, color)
Width 是从1 到7 的一个数。1-7 是屏幕象素的宽度。11-2047是要转换为点的数值:
penwidth = (点数 * 10) + 10
0 只有在针对不可见的线,笔模式为1时才有效。
color 是一个整数,表示一个24 位的RGB
颜色值。
Pattern是一个从1到118的整数,模式号为1时可见。模式号和画笔文件中画笔号相对应。可以用画笔编辑器来编辑画笔文件。
有效的画笔号是从1 到画笔文件中最大的画笔号,应该不超过127。如果一个画笔样式是交叠的,就增加128
作为其画笔号。交叠样式在 129-255范围之内。由于画笔文件可以修改,而且交叠也可以指定,所以画笔模式可以是1-255之间的数。

Brush 样式
Brush 设定诸如圆或区域这样的填充对象的图案、前景颜色和背景颜色。Brush 子句有如下语法:
Brush (pattern, forecolor 〔, backcolor 〕)
forecolor(前景颜色)和backcolor(背景颜色)参数都是整数,代表24 位RGB 颜色值。
pattern(图案)是一个1 到71 之间的数。注意:1 号图案是“不填充”而2号图案是纯色填充。

Symbol 样式
Symbol 子句设定点对象的外观。Symbol 子句有三种格式,如下所述。
Symbol子句——MapInfo 3.0语法
Symbol 子句设定一个点对象的外观。Symbol 子句有三种格式。要设定一种使用“Old MapInfo
Symbols”(MapInfo早期版本使用的符号)的Symbol 样式,使用如下语法:
SYMBOL (shape, color, size)
shape(形状)参数是一个整数值、31 或更大;31代表空白symbol(即该对象是不可见的)。标准symbol
集合包括32 到67号symbol,但用户可以用Symbol 应用程序来自定义symbol集合。color(颜色)参数是一个整数,代表一个24 位RGB
颜色值。size(大小)参数是一个1 到48 之间的整数,代表点的尺寸。

Symbol子句——TrueType字体语法
要设定一个基于TrueType 字体的字符的Symbol 样式,使用如下语法:
SYMBOL (shape, color, size, fontname, fontstyle, rotation)
fontname(字体名称)参数是一个文本字符串,指明一个字体的名称(例如“Wingdings”)。
fontstyle(字体样式)参数是一个控制样式设置(例如粗体)的整数。

Symbol子句——自定义位图文件语法
要设定一个基于自定义位图文件的symbol 样式,使用如下语法:
SYMBOL (filename, color, size, customstyle)
filename(文件名)参数是一个文本字符串,它标明了CustSymb
目录中的一个位图文件(例如“Arrow.BMP”)。 customstyle(自定义样式)参数是一个整数,控制是否使用颜色和背景属性。

Font样式
Font 子句设定文本对象的外观(字体、颜色等)。Font 子句有如下语法:
FONT (“fontname”, style, size, forecolor 〔, backcolor〕 )

双引号内的 fontname(字体名称)是被显示的字体。style(样式)是字体的文本属性。MIF文件中的size(大小)必须是0,因为一幅地图上的文本对象是附加到该地图上的(这样在放大或缩小时文本尺寸改变)。forecolor(前景颜色)是一个整数,代表一种24位RGB
颜色。backcolor(背景颜色)是可选的;如果包含了它,则MapInfo在文本背后的区域中填充指定的颜色。

颜色
颜色通常是以红、绿和蓝色的相对浓度来定义的。其中每种颜色是一个0到255包括0和255之间的数;各种颜色的RGB 值由以下公式计算:
(红色 * 65536)+(绿色 * 256)+蓝色
这里是一些常用颜色及其数值:
红色:16711680
绿色:65280

Shunfly
标签:
分类: MapGis
我抢沙发

2010温家宝答记者问精彩言论

[温家宝]:我知道商签协议是一个复杂的过程,但是正因为我们是兄弟,兄弟虽有小忿,不废懿亲,问题总会可以解决的。我去台湾的愿望依旧是那么强烈,因为我认为中华民族5000年的文化,具有强大的震撼力和凝聚力,不要因为50年的政治而丢掉5000年的文化。

Shunfly
标签:
分类: Life, Web
我抢沙发

由Surfer的等值线Srf文件直接得到网格Grd文件

有的时候,仅仅只有Srf工程文件,没有网格文件。

比如网格文件丢失,比如对方仅仅给了Srf工程文件,在需要对数据进行琢磨时可以利用如下办法得到网格文件

打开Surfer等值线,选中,运行如下Surfer脚本语言

Sub Main
Dim Surf As Object
Dim plotdoc1 As Object
Dim shapes1 As Object
Dim mapframe1 As Object
Dim ovrly As Object
Dim grd As String

Debug.Print “—– “;Time;” —–”
Set Surf = GetObject(,”surfer.application”)
Set plotdoc1 = Surf.ActiveDocument
Set shapes1 = plotdoc1.Shapes
Set mapframe1 = plotdoc1.Selection(1)
For Each ovrly In mapframe1.Overlays
‘Vector map Not included. srfShapeVectorMap = 23.
Debug.Print ovrly.Type;InStr(” 15 16 19 20 22″, ovrly.Type)
If InStr(” 15 16 19 20 22″,ovrly.Type) <> 0 Then _
ovrly.Grid.SaveFile(GetFilePath(ovrly.Grid.FileName,”grd”, _
“c:\incoming\”,”Save GRD File”,3),Surfer.srfGridFmtS7)
Next ovrly
End

End Sub

即可

Shunfly
标签: ,
分类: Geophysics
2 条评论
5 pages

Shunfly Copyright © 2009-2010|All Rights Reserved

Powered by WordPress |Theme Simple-Lines |Designed by 木木木木木