MapInfo SQL查询

来源:互联网 发布:淘宝店铺卖什么升级快 编辑:程序博客网 时间:2024/06/05 17:22

  • 背景

      由于上周连续被俩朋友问起了MapInfo的SQL查询问题,多年没用一时间对她提出的问题挤破了脑子也没想起来,所以趁着周未的时间查询了MapBasic二次开发的资料和SQL语法,所谓好记性不如烂笔头,就顺便把MapInfo的SQL查询的使用方法做了一个简单的记录

      MapInfo软件不做太多的评价,比起ArcGis轻巧了很多,如果只是纯制图编辑的话,MapInfo软件绝对支持。那么对大数据量的显示、查询、分析等性能都非常的赞,SQL查询的功能也非常的强大及好用。

  • 使用对象

     有过使用MapInfo SQL查询的人,本文基础的查询知识未写入进来,比如对like, and, or、Within、Contains、分组,统计(sum\Count)等未做详细的介绍,等有时间再做整理。

  • 软件版本
     MapInfo Professional 8.5 

  • 基础篇

函数

用法备注

Mid$(string_expr, position, length)

String_expr:表示要查询字段;

Position:从第几位开始查询;

Length:获取长度

函数返回:字符串型

Mid$("New York City", 10, 4)

 函数返回City

Instr(position, string, substring)

Position:从字符串的哪个位置开始搜索;

String:查询的字段;

Substring:查询哪个字符

函数返回:查询字符所在字符串的位置

 instr(1,  "New York City", "York") 

函数返回5

 

Not obj

查询非对象

 

rowid

记录集所在的ID号,唯一的序号

 

CentroidX(obj)\ CentroidY(obj)

几何对象中心点X\Y坐标

 

Str$(obj)="point"

Str$(obj)=”text”

Str$(obj)=”Region”

Str$(obj)=”polyline”

从复合几何(mapinfo点线面可以并存在一个图层)对象查询点、文本、面对象

 


  • 高级篇
ObjectInfo(object, attribute) 
Object参数:代表的几何对象
Attribute参数:是一个枚举类型,可参考MapBasic的帮助手册。
此函数并没有集成在MapInfo的SQL窗口里,所以一般人并不知道它的存在,但这个函数的实用度还是比较高。它会返回几何对象的属性信息,如对象的画笔、刷子、字体等属性还可以是对象的形状点个数、多对象、坐标等属性,以下我只列出了些常用的,有想了解更多的可参考MapBasic的帮助手册。

函数用途

用法

备注

ObjectInfo(object, 21)

返回几何对象有多少个分离对象组成即多对象

此问题一般存在于对象没有被分解,或者说面中有空洞。

ObjectInfo(object, 20)

返回对象的节点个数

查询小于500米的线段并且节点数超过1000个的对象      

   ObjectLen(obj, "m") <500 and ObjectInfo(object,20) > 1000  

ObjectInfo(object,1)

返回对象的几何类型,但返回值是一个短整形值,

所以Polyline值为4,

Point值为5,REGION值为7,Text值为10

查询所有的点数据可以使用

 ObjectInfo(obj,1)=5

ObjectInfo(object,2)

返回对象的 pen属性

这个可以用来对地图中某一些样式的对象进行选择,比如同一种线型颜色的线段


比如说查询一个对象由多少个分离对象组成,可以使用如下的SQL查询。

      

  • 嵌套查询
所谓嵌套查询也就是子查询,一个Select还可以再包含一个Select,在某些地方用此方法还是非常的方便,但可惜的是MapInfo的SQL查询只能嵌套一次(我试了好像是这样),也就是只能有一个子查询存在。
以下例子说明了:
当道路名称属性表和几何对象属性表分开存放时,那么想要根据道路名查询地图中所在几何对象时就可用此方法。




空间关系嵌套查询
MapInfo SQL查询的强大之处不仅能对属性进行子查询还可以对空间关系进行子查询。
想对数据进行统计时可用此方法。如统计全国数据中浙江省内有多少条高速公路,当然也可以在此基础上进行统计浙江省内高速公路的总公里数。




以上问题覆盖场景有限,日后会陆续补充与修订,如有问题欢迎留言。
都已亲自测试过,可以正常使用。
参考资料:MapBasic二次开发帮助手册 和 SQL语法。

0 0
原创粉丝点击