MapInfo概论
?第一讲 MapInfo简介及基本概念
?第二讲 MapInfo基本操作 —表
?第三讲 MapInfo查询及分析
?第四讲 空间分析及属性信息图形化
?第五讲 MapBasic 简介与 OLE
?第六讲 集成地图开发
?第七讲 组件式 GIS与 MapX基础
?第八讲 MapX二次开发
一、地理编码
1.1 创建点
1.2 投影和坐标系
1.3 地理编码
二、选择与查询
2.1 屏幕选择
2.2 选择与查询
2.3 SQL查询
2.4 SQL查询实例
?第三讲 MAPINFO查询及分析
三、表达式及函数应用
3.1 表达式
3.2 函数
?第三讲 MAPINFO查询及分析
?一 地理编码
在使用 MapInfo的过程中,经常遇到有一些数据要在地
图中显示,这是 MapInfo的主要任务之一 ——弄清楚这些数
据在地理上是怎样分布的。为了能 在地图上显示数据,必
须把数据库与地图结合起来,也就是要给数据库或表中的
记录分配 X和 Y坐标,以使该记录可作为一个对象显示在地
图上,这个过程就是 地理编码 。
作用,将地理坐标赋给数据坐标 。 MapInfo通过比
较数据库中的地理信息和另一张已与 X和 Y坐标关联的表
(搜索表)中的地理信息,来实现这一过程。
1.1 创建点
1.2 投影和坐标系
1.3 地理编码
1.1 创建点
可以为数据库中每个含有 X- Y或 经 /纬度 坐标信息的
记录创建点。 ——数据库表可以显示在地图窗口中
( 1)打开一个具有 X和 Y坐标信息的表(不能是只读的);
( 2)选择“表” —“创建点”,创建点对话框出现。
?一 地理编码

符号样式
X坐标列
Y坐标列
乘子
投影
1.2 投影和坐标系
投影 是包含一组参数的一个或一组公式,参数的个数和性
质取决于投影。当每一个参数被赋给特定值时,结果便成了
坐标系。
坐标系 是描述坐标参数的集合,其参数之一就是投影。
一个坐标系是一组参数,投影是坐标系的一个参数,是坐标
系的一部分。
地球地图,包含在地球表面有特定位置的对象(经纬度)
非地球地图,包含在地球表面上没有特定位置的对象。
如:楼平面图,其坐标参照该图自身(左下角)。
?一 地理编码
1、设置投影系统
区域(国家)专题地图,等面积投影
完整的世界地图,世界投影,不适合绘制较小面积的地图
中国地图或各省地图,高斯 ——克吕格投影
2、非地球坐标
参照图本身,选定之后,出现,非地球坐标边界,对话框
3、注意事项
本地投影 ——存储地球地图所使用的特定投影;
选定投影后,新增图层以新投影显示;
用新投影保存地图图层,不要删除旧地图;
用非本地投影显示,MapInfo花更多的时间来显示地图;
正在改变投影时不要编辑地图;
打开包含不同投影的表,MapInfo用 最顶部图层 的投影来显示。
1.3 地理编码
?一 地理编码
通过 地理编码,可以将点对象分配到表中的行,记录中
的数据用来与地图匹配,从而确定该记录的点的位置。
( 1)至少有 两张表 被打开(用于地理编码的表和进行地
理编码的表);
( 2)用于地理编码的表是 可地图化 的(图形对象被附加
到记录上),并有一 索引 字段;
( 3)表 不是只读 的。
模式:自动模式
交互模式
先自动,再交互
1、地理编码
( 1)至少打开一个可地图化的表;
( 2)根据用来地理编码的字段索引该表 ;
对表索引、使表可地图化:,文件” —“新建表”
“表”-“维护”-“表结构”
( 3)打开将要创建点的表,必须与参考表不同;
( 4)选择“表”-“地理编码”,出现地理编码对话框
地理编码表:选择要被地理编码的表
使用列:选择包含 定位信息 的列,它是地理编码的基础
边界列:可使地理编码精确到某一相关区域,与精确搜索用表联合
搜索表:选择作为 地理信息的来源 的表
查找对象所在列:选择包含对象名称的列
选项:选择一个包含区域对象的表;选择精确列
选择缺省设置可得到最佳结果
精确地理编码搜索, 可指定包含区域的特定边界
2、地理编码模式
( 1) 自动模式,只有确切匹配被地理编码
( 2) 交互模式,可手动匹配不能在自动模式下匹配的地址
3、地理编码方法
( 1) 按地址 地理编码
( 2) 按边界 地理编码
边界 ——封闭的区域或面积
4、查找并检查未地理编码的记录
“查询”-“选择”:条件:无结果码- not obj
已指定结果码- result-code<0
5、使用结果代码,数字字段
6、在地图上显示数据:
地理编码操作会 永久 地改变表以包含新的图层对象
图层控制改变样式并不影响表
7、在地图上定位数据:,查询”-“查找”
只能对表中 有索引 的字段执行查找命令
8、撤消地理编码,去除已附加到数据记录的对象的过程
可删除与此表关联的所有图形对象
“表” -“维护”-”表结构”:清除,表可地图化,复选

在地图窗口中显示出表,选择希望撤消地理编码的点,选
择“编辑”-,只清除地理对象,
选择地理编码方法的注意事项:
1、地理编码表中信息的类型:
例如:现有一个顾客街道地址数据库,若有这样的记录:街道
地址相同但位于不同的城镇,若只按街道地址地理编码,就难
以区分这些记录并给它们唯一的坐标。可在按街道地址地理编
码的基础上再按边界进行地理编码。
2、搜索表地图的详细程度:
源表必须具备与目标表相匹配的 X和 Y坐标。
例如:若按街道地址进行地理编码,源表必须是一副街道级的
地图。
3、数据放置的位置应达到怎样的地理准确度:
需要定位的对象越小,源表所需的准确度就越高。
?二 选择与查询
选择( Selection):基于一个或多个变量分组而形成的
数据子集 ——对数据进行分组和组织数据
特点,临时表,“文件”-“保存表”,转化成永久表
完全依赖于创建它的基础表
2.1 屏幕选择 -图层可选择
( 1)选择、半径选择,边界选择,矩形选择、全部选中。
( 2)有多个可选择对象时,从最顶层的图层中选择;按
,Ctrl” 选择非最顶层。
( 3)撤消:按,Shift”,再单击对象;或单击无对象处。
( 4)查看记录:“窗口”-“新建浏览窗口”-,Selection”
1、屏幕选择
2、选择查询
( 5) 边界选择工具,用于选择位于某个 给定区域 或边界 内的对象
必须 有两个图层可选择,包含搜索对象的图层
包含搜索区域的图层 可在同一图层
在包含其它对象的可选择图层中单击一个区域,该区域中的对象
被选中。
( 6) 多边形选择工具,用于绘制多边形并搜索该多边形内的所有
对象。必须 有两个图层可选择 可在同一图层
单击地图某位置开始绘制多边形,完成之后,多边形内的对象被
选中。
( 7) 缓冲区 ( Buffer):创建搜索用多边形
可创建围绕着点、线或其它边界的边界。
2.2 选择查询
屏幕选择无法实现根据记录和对象的属性对表进行选择。
选择查询,通过构造围绕数据的问题或查询来创建 Selection
查询表 。
1,Select
2,SQL Select
MapInfo自动创建含有查询结果名为 Selection的工作表,可
对其进行浏览、在地图上显示、作统计图或执行附加的查询。
,Save As …” 另存为一张独立的表。
?二 选择与查询
1、创建表达式
表达式,用于提出问题的逻辑语句
( 1)直接键入表达式;
( 2)按“辅助”按钮,使用表达式对话框
列,所选择表的每一列
操作数,数学和逻辑运算符号
函数,带一个或多个参数并返回一个值
的数学函数
2、选择操作步骤
“查询”-“选择”,选择列,创建表达式,“检验”
?二 选择与查询
2.3 SQL选择
可以创建含有只是 隐含 在基础表中的信息的查询表,为创建该
表,来自一张或多张表的数据被 合并、聚合,并对记录进行 排序 。
( 1)派生信息,可以从表中信息计算得到的信息,但并不在表中
直接表现出来。 如,用 Pop_1994,Total_Area可得 1994年的人口密度
建立在源表中直接信息的基础上,在查询表中生成派生列。
( 2)连接表,把来自不同数据库的信息放在一张单独的表中。
属性连接,含有 匹配信息 的列(即各表有一个 相同内容 的字段)
地理连接,利用 图形对象 之间的 关系 (包含、被包含、相交)
( 3)集合,通过集中一张或多张现有表中的直接或派生信息创建新表。
( 4)聚合,对表的 所有记录 中 某一列 的 所有值 执行数字运算。允
许跨记录聚合数据,必须指定 记录如何被分组 以及数据如何被聚合。
聚合函数,Count( *):计算一组中的记录数; 按列分组
Sum(); Avg(); WtAvg():加权平均; Max(); Min()
寻找最近距离 ——min( distance()) ;
( 5)排序:按列分组、按列排序
按列分组,按 某个特定列分组,使含有相同值的所有行被分在同一组。
当与 聚合函数 联用时,所有分组列中值相同的行被作为一个组处理
按列排序,缺省按列的升序对记录进行排序,当列出多个列时,先按
第一列排序,再按第二列排序。
可使用列名或列号 (对派生列必须使用列号)
( 6)地理运算符,允许用户根据对象的空间关系选择对象。
关键字,obj或 object 基于地理对象
Contains:包含; Contains Entire:完全包含;
Within:包含于; Entirely Within:完全包含于;
Intersects:相交
Contains和 Within,比较是基于中心的,执行速度快; Contains
Entire和 Entirely Within,比较则基于整个对象,执行速度慢。
如,state.obj contains city.obj
地理运算符与子选择一起使用时特别有用
( 7)注意,使用多张表时,列名在表名后面,中间用,.”分开;
对派生列指定别名:在表达式后键入 空格,然后在,” 中输入别名。
2.4 SQL选择实例
?二 选择与查询
1、派生列
保存模板
载入模板
2、用多张表派生列
如,Sum(value) "Total_value"
根据聚合函数创建派生列;
重新命名
创建新的结果表
对新表执行 SQL查询
?三 表达式及函数应用
表达式,可用于选择、更新列、专题地图和图层控制
( 1)值必须为真或假的表达式
( 2)简单求值的表达式
3.1 表达式
访问表达式的路径:
选择、更新列、图层控制(标注)、创建专题地图、缓冲
区、浏览窗口
字符串放在,” 中;
输入数值时不能用,,”“$”,可用, E”指数;
日期放在,” 中,如,3-05-05”、,03/05/05”、,3/05”
1、数学运算符:
+、-,*,/,^
数字可与日期运算,星期:+- 7,月:+- 30或 31
2、字符串运算符:
使用连接符“+”,字符串放在“”中
3、比较运算符:
=,<>,>,<,>=,<=,-、%
,-”,like-,单个字符的通配符;
“%”,like%,单个字符的通配符。
4、逻辑运算符,or,not,and
用在 SQL选择中,where”条件子句中
5、地理运算符:基于图形对象之间的空间关系
,obj”、” object”,作用在指定的对象之间
Contains; Contains Entire; Within; Entirely Within; Intersects
6、关键字,any,all,in,between
in等价于“= any”;” not in”等价于,<>all”
any,all前要有“=”或,<>”才行
如,ABBR= any(“TX”,”MN”,”AL”)
7、运算符的优先级:
最高 优先级, 括号、幂号、负号、乘号、除号、加号、
减号、地理运算符、比较运算符,Not,And
最低 优先级,or
?三 表达式及函数应用
3.2 函数
函数通常取得数据值并对其做一些运算以产生新值,一
般带有一个或两个参数。
说明,num-任何数值表达式; str-任何字符串表达式;
obj-任何对象表达式。
1、数学函数:
Abs( num),Sin( num),Cos( num),Int( num)
Maximum( num,num),Minimum( num,num)
Round( num1,num2),返回 num1被舍入为 num2的倍数的结果
2、日期函数:
Curdate(),Day( date),Month( date)
Weekday( date),Year( date)
3、字符串函数:
Chr$( num),DeformatNumber$( str)
Format$( num,str),FormatNumber$( num)
InStr( num,str1,str2), LCase$( str)
Left$( str,num),Len( str),LTrim$( str)
Proper$( str),Mid$( str,num1,num2)
Right$( str,num),RTrim$( str),Str$( expr)
UCase$( str),Val( str)
4、返回地理计算的函数:
Area( obj,str),CentroidX( obj),CentroidY( obj)
Distance( num_x,num_y,num_x2,num_y2)
Objectlen( obj,str),Perimeter( obj,str)
?如,Area(obj,"sq km"),返回图形对象的面积
?CentroidX,CentroidY,返回图形对象中心的 X,Y坐标(经
度、纬度坐标)
?Distance(X1,Y1,X2,Y2,str),返回两点间的距离
?Objectlen(obj,str),返回 直线、折线、圆弧 对象的长度
?Perimeter(obj,str),返回 区域、椭圆、矩形 对象的周长
5、返回对象的函数:
每个函数都返回一个图形对象。
Buffer (obj,res,width,str):返回代表缓冲区的区域对象。
obj:点、线或其它边界
res:按每个圆周的节点数指定分辨率;
width:指定缓冲区的半径;
str:距离单位名称(如,mi”或,km”)
Centroid(obj):返回位于 obj中心的点对象。
Createcircle(x,y,radius):返回圆对象。
radius:以英里为单位指定距离。
CreateLine(x1,y1,x2,y2):返回直线对象。
CreatePoint(x,y ),返回点对象。
欢迎多提宝贵意见!
谢谢!