MapInfo Professioanl二次开发基本方法教程讲解

毕业后在这个公司工作2年了,期间一直使用MapInfo产品以及在这之上的二次开发。下面这篇文章结合自己的经验,简要谈谈MapInfo二次开发基本知识,象自定义Mapinfo区域填充样式、自定义Mapinfo线型、Mapinfo Professional线符号样式、利用SymbolPlotter制作矢量点符号、自定义Truetype字体符号等等。
 

一.利用Mapinfo Line Editor 2.0自定义Mapinfo线型

Mapinfo Professional为用户提供了丰富的区域填充图案、直(折)线类型及符号样式,为用户制作电子地图提供了极大的便利。用户不仅可以在创建空间对象时,设定对象的样式;还可以在创建对象完成之后,再改变其样式。

但由于行业的差别及其复杂性,任何制图系统都不可能提供满足所有用户需求的点、线、面样式,所以一般制图系统都为用户提供了扩展系统符号样式的机会。Mapinfo为用户提供了三种点、线、面符号编辑工具,用以扩展系统的点、线、面符号样式,以满足用户的行业需求。

Mapinfo Line Editor 2.0是一个功能强大的Mapinfo线型编辑工具。利用它用户可以直接对Mapinfo的线型文件Mapinfow.pen进行编辑:更改Mapinfow.pen文件中已定义好的线型样式,或是向其中增加新的线型样式。见图6。

用户在利用Mapinfo Line Editor 2.0自定义Mapinfo 线型样式时应当注意的是:由于现在Mapinfow.pen文件最多只能保存127种线型符号,因而用户在新建一个线型文件或是直接向Mapinfow.pen文件中增加线型符号时,如果文件中的线型数量超过了127种,便应当重新建立一个线型文件,以保存更多的线型符号样式。

用户在建立了自己的线型文件后,如果想在Mapinfo Professional 中使用它,只需将其命名为Mapinfow.pen以替代Mapinfo Professional自带的线型文件,并重新启动Mapinfo Professional即可。

Mapinfow.pen 是一个与Mapinfo Professional系统相对独立的线型文件,而且用户可以跨平台使用它:例如,用户可以利用文件拷贝的方法将其由Windows98平台传送给其他Windows NT用户使用。

 

二.利用Pattern Editor自定义Mapinfo区域填充样

Pattern Editor是一个非常好用的Mapinfo 区域填充样式编辑工具。用户可以利用Pattern Editor对Mapinfo Professional自带的区域填充样式进行编辑,并保存。编辑修改后的区域填充样式可以在Mapinfo Professional 中直接使用。但目前用户还无法利用Pattern Editor来新建区域填充样式。

用户要对Mapinfo Professional 自带的区域填充样式进行修改时,只需利用鼠标点中相应的填充样式,并单击“开始编辑”按钮即可。在编辑过程中,点击鼠标右键可以向当前填充样式中增加填充“色斑”; 点击鼠标左键则减少当前填充样式中的填充“色斑”。编辑完成后,只需单击保存按钮便可将所做修改保存到Mapinfo Professional资源文件中。

 

如何使用MAPBASIC 创建指定大小的TEXT

用户在使用如下语句创建字体时 :

Create Text into Window Frontwindow() "Hello!" (10,10)(20,20) Font MakeFont("Helvetica", 1, 12, BLACK, WHITE)
应当注意:在创建字体的语句中采取范围优先的方式,即“Hello”后面的(x,y)指定字符串的左下及右上角位置,优先于“12”指所要创建的字体的大小。将来显示出来的字符的实际大小只由(x,y)来控制。实际上在上述的语句中指定的字体大小是无效的,但是也不能将该值设为0,否则程序运行时会出错

如果希望在创建文字时即指定文字地大小,可以使用下面的函数

CreateText( window_id , x , y , text , angle , anchor , offset ) ,此函数创建一个文本对象,该文本对象的字体大小在创建前由系统的style决定。所以在使用此函数前,设置Set Style Font MakeFont("Helv", 1, 14, BLACK,WHITE)  然后再使用此函数,可以创建指定大小的文字。

 

如何设置、使用hotlink

通过 hotlink 可以从地图上的对象、标注直接启动文件和 Iternet URL.过程如下:

1。首先表中应有字段,其内容为hotlink调用的文件或Iternet URL;

2。通过图层控制对话框中的热链接按钮设置热链接字段及启动热链接的方式;

3。单击主工具栏上的hotlink,当鼠标移动到相应的启动对象上时,单击启动对象即可启动链接内容;

mapbasic 语言:

[ Layer  layer_id  [Activate {[Using launch_expr]|[On{[Labels]|[Objects]}|[Relative Path {On|Off}]}]

             

其中的Activate 分句既是hotlink的设置语句。其中的[Using launch_expr] 指明热链接的字段或表达式,[On{[Labels]|[Objects] 指明热链接的对象,Relative Path  设置热链接的文件是相对路径或绝对路径。

语句:

Set Map Layer 1 Activate Using GEONAME On Labels Objects Relative Path On

对当前图层的热链接设置为:GEONAME 热链接字段,并且热链接对象为标注和对象本身。

如何使用MAPINFO PROFESSINAL 中节点抓取、抽稀功能?

MAPINFO PROFESSIONAL 6.5 新增加了节点抓取和抽稀的功能。节点抓取和抽稀的主要功能是,从不同对象中抓取节点集合在一起,并在保持对象的图形形状时,减少一个对象中节点的数量。[NextPage]

对于非常靠近的不同对象的节点,可以通过创建或编辑对象来获得,也可以通过对象之间较小的重叠和缝隙来获得。通过指定距离将节点抓取在一起,同时消除以上的重叠和缝隙。

三.Mapinfo Professional线符号样式

Mapinfo Professional 自带有118种线型符号,其样式都保存在Mapinfow.pen文件中。用户每次启动Mapinfo Professional 时,程序会自动调用该线符号库文件,加载其自带的线符号样式。

用户在利用Mapinfo Professional建立电子地图时,可以利用线样式工具按钮调用Mapinfo Professional 的线符号样式资源,并定义所绘线型的颜色及线宽。

 

四.Mapinfo Professional点符号样式

Mapinfo Professional 具有两种格式的点符号样式:位图符号及TrueType字体符号。Mapinfo Professional针对这两种符号样式,都提供了大量的可供用户直接使用的符号库。例如用户分别可以在Mapinfo Professional的Custom Symbols及有关房地产和运输业等的符号集中查看到大量的位图符号及TrueType字体符号。

1.如何自定义Mapinfo Professional位图符号

Mapinfo可以把用户自定义的BMP位图作为其点符号。具体步骤如下:

首先,启动一个位图处理程序,如Windows画图、Photoshop等,并在其中创建一个适当大小的位图(64×64、32×32、16×16)。应当注意的是:对于Win32位图大小不能超过128K;对Win16其大小不能超过64K。

将位图以256色或16色保存在Mapinfo安装目录的CustSymb目录下。

单击Mapinfo Professional 中的符号工具按钮,调用符号样式对话框,并单击对话框上的重置按钮,以将新建的位图符号添加到Custom Symbols符号集中。此后,用户便可以直接调用Custom Symbols 符号集中的自定义位图符号。

2.如何自定义Truetype字体符号

Mapinfo 支持许多TrueType字体,它们都带有自己的符号集。用户可以利用TrueType字体编辑程序,例如,Windows的TrueType字体造字程序或是CoreDraw 等应用程序来对Mapinfo 的TrueType字库中的TrueType 字体符号进行编辑:修改Mapinfo 自带的TrueType字体符号,或是向其中增加新的TrueType字体符号,而且用户还可以自定义TrueType字体文件,并将它们在Mapinfo中引用。

 

五.利用SymbolPlotter制作矢量点符号

SymbolPlotter是一种矢量符号编辑工具,由于它是以Mapinfo 的区域对象(Region)来表示点符号,因而利用SymbolPlotter生成的点符号能随着地图的缩放而改变其大小。 同时,利用SymbolPlotter生成Mapinfo 矢量点符号时,还可以由Mapinfo 点对象的属性值来规定矢量点符号的大小及旋转方向。

SymbolPlotter自带有矢量符号库,用户可以直接利用其中的矢量符号来生成Mapinfo的矢量点符号图;同时还可以对原来矢量符号库中的矢量符号重新编辑、向其中增加矢量符号,或是新建自己的矢量符号库。见图3。

但利用SymbolPlotter制作Mapinfo矢量符号与直接利用Mapinfo 符号工具在当前可编辑图层中增加点对象的区别在于:利用Mapinfo符号工具可以在当前图层的“任意”位置增加点对象,而SymbolPlotter工具只能在当前图层固定点位置增加矢量点符号。所以如果用户想生成在Mapinfo Professional环境下可缩放大小的矢量点符号图层时,则应当首先在Mapinfo Professional 环境中,利用符号工具生成一幅非矢量点符号图层,然后再利用SymbolPlotter的“Plot Symbols on Points…”命令将当前图层中的非矢量点符号对象替换成SymbolPlotter的矢量符号,以生成可随地图缩放而改变大小的矢量点符号图层。

下面留给大家一些问题思考:
1 . 如何在MAPINFO PROFESSINAL 中使用自定义符号?

2 . 如何使用MAPINFO PROFESSINAL 中节点抓取、抽稀功能?

3 .如何设置、使用hotlink?

4 .如何使用MAPBASIC 创建指定大小的TEXT?

5 .MapBasic动态图层技术示例程序

6 .如何在MapBasic程序中提高获取点的坐标精度?

7 .MapBasic的程序在Professional下调试完成,如何移植到Runtimes上?

8 .MAPINFO PROFESSIONAL 在 VB 中 OLE Automation 二次开发介绍

9 .MAPINFO PROFESSIONAL 在 DELPHI 中 OLE Automation 二次开发介绍

10.MAPINFO PROFESSIONAL 二次开发非模态窗口的调用

如何在MAPINFO PROFESSINAL 中使用自定义符号?