视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Mapinfo 处理海量地图数据解决方案
2025-09-29 17:05:29 责编:小OO
文档
Mapinfo 处理海量地图数据解决方案

一.前言

目前, MapInfo在各行各业的业务系统中得到了广泛应用。在很多情况下,用户需要利用Mapinfo来处理海量的地图数据。例如,一个中型城市的国土和城市规划部门,就可能有多达几千幅1:500的电子地图,总数据量可能达到几百兆甚至GB(千兆)级。那么如何利用Mapinfo来管理用户的海量地图数据呢?

二.Mapinfo 的地图数据存储能力

    我们先来看看Mapinfo 的地图数据存储特性和存储能力如何。

1.高效的空间索引技术。

MapInfo采用R-Tree技术实现空间索引。简单地说,R-Tree将各空间实体的MBR(最小外接矩形)存储在索引中,并按从大到小的范围进行索引搜索。这样,能根据给定的坐标,快速定位到某一空间对象。

比如,要查询在某多边形区域范围内的所有点,则可通过空间索引,定位出此多边形区域的MBR,利用此MBR对其内部的点进一步求精,剔除区域外的点剩下的就是结果。

MapInfo自动维护空间索引,能最高效率的使用矢量数据。

2.每一图层最多有2G (20亿)条矢量对象。

3. Mapinfo 同一地图窗口中的图层数没有(只受可用内存)。

4. 每个矢量对象最多有1M个节点(MapInfo Professional 4.5之后版本;4.5以前版本为30000个节点)。

从上述几点可以看出,MapInfo在处理图形数据方面不会受数据量的。

但是用户有时会发现,当打开的图层数很多时,或是当一幅单个图层其数据量较大时,其显示速度会受到一定的影响,下面就这一问题具体讲一讲如何提高Mapinfo对大容量地图数据的显示速度。

三、用MapInfo处理大数据量地图数据的几种解决方案

下面,我们就MapInfo Professional 的具体环境,介绍几种实用的方法。

1. 图层控制技术

矢量地图是可以无级缩放的,但对具体的图层,仅在一定视野范围内的显示才是有意义的。例如,下图为某城市电子地图的两种不同的显示。左图尽管显示出了所有图层的所有空间对象,但地图窗口却一片模糊,用户几乎无法得到任何有意义的信息,而且为完成每次显示,计算机用于空间对象的坐标转换和图形生成的时间也较长。右图为针对某些图层设置视野范围后,地图的显示情形。此时,不仅显示速度快,而且用户能从地图上获得有用的空间信息。所以,在地图系统的应用中,针对不同用途的图层应选择不同的视野显示范围,这样不仅能使地图窗口“干净明了”, 使有用信息得到突出显示,而且也能加快显示和处理的速度。

  

图1 没有设置视野范围时,地图显示的情形

图2  设置视野控制范围后地图显示的情形

在Mapinfo中可按如下的步骤对某一图层设定其视野范围:

地图 > 图层控制 > 选中某一图层 > 显示 >图层缩放,在缩放范围内显示

例如,将上述地图窗口中的公交车站图层设置成在0-5km的视野范围内显示时,其设置方法如下图。

图3 如何在Mapinfo 中设置某一图层的视野控制范围

2.使用索引图层

   在很多情况下,用户的地图资料(例如,一个城市的建筑物图层)是由AutoACD中转过来的,这时一个单幅的地图图层其文件大小可能达到50M左右。如果用户直接将该图层在Mapinfo中打开显示,其显示速度会受到很大影响。此时,应当将整个单幅的大图层划分成若干个小图幅,并利用建立索引图的方法,来提高对地图的显示速度。

下面详细介绍对大图层的分幅与建立索引的方法与步骤。

1)新建一个空白图层用作索引图层。并将它添加到当前地图窗口中。

2)在索引图层中创建若干矩形区域对象,用来对底图进行分割, 每一块的属性信息都存储着相应的图幅文件名,同时还需要自己编写一段MapBasic程序,读出每个图幅的边框坐标。

3)使底图可编辑,并选中底图,设为目标对象。

4)选中索引图层中的某一个矩形对象,利用 对象 > 分割 将底图进行分割。

5)选中底图中被分割出来的部分,并将其剪切或拷贝。

6)新建一个图层,用来存放从底图中剪切下来或拷贝过来的图形。

7)重复步骤 4-6 直到将整个底图全部分割完毕,并将各个分割出来的小图幅分别保存成单独的表文件。

8)为了便于将来利用程序来管理所有的分幅图层,在保存各个分幅图层时,最好按编号的顺序对其命名。    如:S1b1,S1b2,S1b3...S6b1,S6b2,S6b3…

9)为了能实现分幅显示,提高显示和刷新速度,需要自己编写程序来控制分幅图层的显示。程序设计的主要思想是:首先,只打开索引图层,并用自定义的工具选择要访问的图块。通过程序,确定选中的索引块对象,并访问其属性信息,找到相应的详细图幅文件,并将其打开,从而实现在不同的状态下动态地显示不同的分幅图层。由于每个分幅图层的文件大小仅为原来整幅图层的若干分之一,因而能有效地提高地图数据的显示和刷新速度。

    虽然索引图层,是一种有效地提高地图数据显示和刷新速度的方法,但如果用户将来需要基于地图进行深入的地理分析,如:线段长度分析、区域对象的面积分析、连通分析及其它复杂的针对整个底图的SQL查询分析...,则不建议采用此方案。因为利用索引图层的方法,需将整个图层分割成若干幅小的分幅图块,这样必然会改变原来整幅图层中某些空间对象的空间特性如,连通性、整体性等。从而必然会影响所有基于对象的连通性和整体性的空间地理分析。

3.使用Oracle Spatial

另外一种更理想的解决方案是使用空间数据库Oracle Spatial-MapInfo和Oracle公司的最新合作产品。由于Oracle Spatial系统建立在功能强大的服务器上,又实现了非常高效的空间索引技术(R-tree),所以能轻松地处理海量地图数据。因此利用Oracle Spatial用户可以将地图数据直接存储到Oracle数据库服务器中,在客户端通过MapInfo Professional或MapX,利用Oracle Spatial 提供的空间算子结合SQL语句,对Mapinfo地图进行编辑、查询和及其它复杂空间分析。

在Oracle Spatial 中海量地图数据的使用变得更加简单:只需建立一单一图层,不必再进行分幅处理。如果用户原来的数据源是分幅的,可将其全部存储到一个Oracle Spatial图层中,Oracle Spatial将自动对其进行拼接和索引处理,可形成一个完整的图层。在应用时,在客户端通过MapX或MapInfo Professional,只需极少量的编程(实际上只是指定数据源),就可实现对Oracle Spatial数据的动态显示。Oracle Spatial会根据当前地图客户端的显示视野,自动将此范围内的图形检索出来,送到客户端显示出来。因此,即使在服务器端的数据是GB级的,在服务器端的数据量却仅是几十到上百K的数量级,大大减轻了客户端系统的配置需求,并减轻了网络流量,可通过一般的网络(甚至远程),在客户端进行访问。

    利用Oracle Spatial,可建立一种真正的Client/Server结构的空间信息系统,不仅解决了海量数据的存储,管理等问题,也解决了多用户编辑,数据完整性,数据安全机制等许多问题,将给MapInfo的应用带来更广阔的前景。

三.总结

综上所述,MapInfo产品不仅能很好的使用海量地图数据,而且给用户以很大的自由度,能通过多种有效的方式,选择最佳的解决方案。系统结合天津燃气管网的具体条件和以前管网系统集成经验,并参考了一些成功的MapInfo应用的真实案例,确定了一,二,三种处理方案并行实施,相互结合的方式,最大限度的解决客户的实际问题,最大限度的提高系统的整体性能和技术含量。

但确是方便实用的。随着更多MapInfo的应用系统的成功,相信还会有更多优秀的方案涌现出来。同时,MapInfo公司也会进一步完善其产品,给用户提供更好的应用支持。下载本文

显示全文
专题