您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Mapinfo 处理海量地图数据解决方案
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个节点(MapInfoProfessional4.5之后版本;4.5以前版本为30000个节点)。从上述几点可以看出,MapInfo在处理图形数据方面不会受数据量的限制。但是用户有时会发现,当打开的图层数很多时,或是当一幅单个图层其数据量较大时,其显示速度会受到一定的影响,下面就这一问题具体讲一讲如何提高Mapinfo对大容量地图数据的显示速度。三、用MapInfo处理大数据量地图数据的几种解决方案下面,我们就MapInfoProfessional的具体环境,介绍几种实用的方法。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.使用OracleSpatial另外一种更理想的解决方案是使用空间数据库OracleSpatial-MapInfo和Oracle公司的最新合作产品。由于OracleSpatial系统建立在功能强大的服务器上,又实现了非常高效的空间索引技术(R-tree),所以能轻松地处理海量地图数据。因此利用OracleSpatial用户可以将地图数据直接存储到Oracle数据库服务器中,在客户端通过MapInfoProfessional或MapX,利用OracleSpatial提供的空间算子结合SQL语句,对Mapinfo地图进行编辑、查询和及其它复杂空间分析。在OracleSpatial中海量地图数据的使用变得更加简单:只需建立一单一图层,不必再进行分幅处理。如果用户原来的数据源是分幅的,可将其全部存储到一个OracleSpatial图层中,OracleSpatial将自动对其进行拼接和索引处理,可形成一个完整的图层。在应用时,在客户端通过MapX或MapInfoProfessional,只需极少量的编程(实际上只是指定数据源),就可实现对OracleSpatial数据的动态显示。OracleSpatial会根据当前地图客户端的显示视野,自动将此范围内的图形检索出来,送到客户端显示出来。因此,即使在服务器端的数据是GB级的,在服务器端的数据量却仅是几十到上百K的数量级,大大减轻了客户端系统的配置需求,并减轻了网络流量,可通过一般的网络(甚至远程),在客户端进行访问。利用OracleSpatial,可建立一种真正的Client/Server结构的空间信息系统,不仅解决了海量数据的存储,管理等问题,也解决了多用户编辑,数据完整性,数据安全机制等许多问题,将给MapInfo的应用带来更广阔的前景。三.总结综上所述,MapInfo产品不仅能很好的使用海量地图数据,而且给用户以很大的自由度,能通过多种有效的方式,选择最佳的解决方案。系统结合天津燃气管网的具体条件和以前管网系统集成经验,并参考了一些成功的MapInfo应用的真实案例,确定了一,二,三种处理方案并行实施,相互结合的方式,最大限度的解决客户的实际问题,最大限度的提高系统的整体性能和技术含量。但确是方便实用的。随着更多MapInfo的应用系统的成功,相信还会有更多优秀的方案涌现出来。同时,MapInfo公司也会进一步完善其产品,给用户提供更好的应用支持。
本文标题:Mapinfo 处理海量地图数据解决方案
链接地址:https://www.777doc.com/doc-5116323 .html