首页 百科知识 工作表的建立

工作表的建立

时间:2022-06-19 百科知识 版权反馈
【摘要】:一、MapBasic工作表的建立1.新建一个空表所谓空表,就是只含有表结构而无数据的表。Into子句允许用户指定MapInfo表的名称和存放路径,如缺省Into子句,则MapInfo表以与源文件相应的文件名及相同的存放路径被创建。Type子句规定了导入文件的格式,如果忽略Type子句,MapInfo依据文件的扩展名指定文件格式。下列例子将一个DXF文件的图层1和图层3分别导入两个MapInfo表中。

一、MapBasic工作表的建立

1.新建一个空表

所谓空表,就是只含有表结构而无数据的表。利用MapBasic语句可以十分方便地创建一个新表。创建一个新表的语法形式如下:

Create Table table

(column columntype[,…])

[File filespec]

[{Type NATIVE|

Type DBF[CharSet char_set]|

Type Access Database database_filespec Table tablename[Password pwd][CharSet char_set]

}]

[Version version]

其中:table为建立的表名;Column为建立的项名;Columntype为与项有关的数据类型,Width为字段的长度,decplaces为数值字段的小数位个数;Char_set为字符集,如MacSimpChinese、MacJapanese等,如果没有指定Char_set子句,则使用默认的字符集;可选项filespes定义表保存的位置,如果没有File子句定义,所建立的表保存在当前目录下;可选项Type子句指出保存了数据格式,缺省时为NATIVE,Version控制表的版本格式。

用Create Table命令建立一个新的空表,可定义多达250个字段。以下是创建表的一个实例。

Create Table Towns

(townname Char(30),

population SmallInt,

median_income Decimal(9,2))

File"c:\MapInfo\Data\Towns"

Type DBF

上例创建了名为Towns的表,该表包含三个字段:字符型字段townname、整型字段population和小数字段median_income。文件存放的路径为:c:\MapInfo\Data,表的类型为DBF表。

2.导入数据文件建立新的MapInfo表

利用Import语句可以基于一个已有的数据文件创建MapInfo表。Import语句语法形式为:

形式1(针对MIF/MID文件、PICT文件或MapInfo for DOS文件):

Import file_name

   [Type file_type]

   [Into table_name]

   [Overwrite]

形式2(针对DXF文件):

Import file_name

   [Type"DXF"]

   [Into table_name]

   [Overwrite]

   [Warnings{On|Off}]

   [Preserve

    [AttributeData][Preserve][Blocks As MultiPolygonRgns]]

   [CoordSys……]

   [Autoflip]

   [Transform

    (DXF_x1,DXF_y1)(DXF_x2,DXF_y2)(MI_x1,MI_y1)(MI_x2,MI_y2)]

[Read

 [Integer As Decimal][Read][Float As Decimal]]

[Store[Handles][Elevation][VisibleOnly]]

[Layer DXF_layer_name

 [Into table_name]

 [Preserve

[AttributeData][Preserve][Blocks As MultiPolygonRgns]]

[Layer…]

其中:file_name为导入的数据文件名,file_type为导入的数据文件格式(MIF、MBI、MMI、IMG或PICT),table_name为创建的MapInfo新表名称,DXF_x1、DXF_y1等为DXF格式的坐标,MI_x1、MI_y1等为MapInfo表中的坐标,DXF_layer_name为DXF文件中的图层名。

Import语句通过导入一个数据文件的内容创建新的MapInfo表。注意,基于电子表格或数据库文件创建MapInfo表,必须使用Register Table语句,而不是Import语句。

Into子句允许用户指定MapInfo表的名称和存放路径,如缺省Into子句,则MapInfo表以与源文件相应的文件名及相同的存放路径被创建。例如,如果导入文本文件“WORLD.MIF”,则新表默认的名称为“WORLD.TAB”。

Type子句规定了导入文件的格式,如果忽略Type子句,MapInfo依据文件的扩展名指定文件格式。例如,源文件为"ROADS.DXF",则认为文件格式为CAD的DXF文件。

如果Import语句中包含Overwrite关键字,则MapInfo创建新表时,不论相同表名的文件是否存在,新表替换已存在表。如果缺省Overwrite关键字,并且该表已存在,则MapInfo不会覆盖该表。

如果导入DXF文件,Import语句则包含一系列与DXF文件格式相关的子句。注意,子句的顺序相当重要,错误的子句顺序会引起编译错误。

下列例子将一个DXF文件的图层1和图层3分别导入两个MapInfo表中。

Import"LANDPLAN.DXF"

Layer"1"

Into"FLOOR_1.TAB"

Preserve AttributeData

Layer"3"

Into"FLOOR_3.TAB"

Preserve AttributeData

3.注册电子表格、数据库等格式外部文件创建MapInfo表

MapBasic可以把一些非MapInfo的表格或文件(DBF、WKS、XLS或ASCII等)通过Register Table语句作为表来访问。当使用Register Table语句注册一个文件时,MapInfo为该文件创建一个表,以后便可像MapInfo的表一样处理,打开、浏览、编辑这些数据。

Register Table语句的语法形式为:

Register Table source_file

{Type"NATIVE"|

Type"DBF"[Charset char_set]|

Type"ASCII"[Delimiter delim_char][Titles][CharSet char_set]|

Type"WKS"[Titles][Range range_name]|

Type"XLS"[Titles][Range range_name]|

Type"Access"Table table_name[Password pwd][CharSet char_set]}

Type"ODBC"[Cache{On|OFF}]

Connection{Handle ConnectionNumber|ConnectionString}

Table SQLQuery

[Into destination_file]

其中,source_file定义一个已有的数据库、电子表格或文本文件;Destination定义一个被注册的MapInfo表名;Type子句定义需注册文件的类型;CharSet子句用于指定字符集,如果缺省CharSet子句,则MapInfo使用默认的字符集;Delimiter子句定义ASCII源文件的分隔字符,默认的分隔符是TAB;Title子句定义工作簿指定数据范围前一行作为字段标题;Range子句允许定义所用数据区名;Into子句指定创建的表名及其路径。

Register Table命令不覆盖和改变原有的数据文件,而是扫描原数据,确定各个字段的数据类型,然后建立表文件。注意:该语句只是创建表,并不打开表。另外,每个数据文件只需要注册一次,一旦Register Table建立了相应的附属表文件,后续的MapInfo操作只需打开此表文件,不用重复Register Table操作。

Register Table语句不能将影像文件(如GIF文件)注册为MapInfo表,若要注册这类文件,必须使用文件的输入/输出语句(如Open File、Print#)。

以下的例句注册一个dBASE文件并打开。

Register Table"e:\land\sample.dbf"

Type"DBF"

Into"e:\land\MapInfo\newsample"

Open Table"e:\land\MapInfo\newsample"

4.建立表索引及表的地图化

用Create Index语句可给表增加索引,还可使用Create Map语句使一张表地图化。创建索引Create Index语句的语法形式为:

Create Index On table(column)其中:table为当前打开表名,Column为表的关键字。

Create Map语句使表地图化的语法形式为: Create Map For table[CoordSys…]其中CoordSys为指定坐标系,如缺省,则为默认的地球坐标系。

下面的例子是创建一个可地图化的表Cust,该表有以下字段:Name、Address、City、

Amount、OrderDate和CustID,并对Name和CustID字段建立索引。

Create Table Cust

(name Char(20),

Address Char(30),

City Char(30),

Amount Decimal(5,2),

OrderDate Date,

CustID Integer)

File"C:\MapBasic\cust.tab"

Create Map For Cust

Create Index On Cust(CustID)

Create Index On Cust(name)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈