用MapXtreme创建仿三维地图
现在WebGIS已经很火热了,仿三维的WebGIS也雨后春笋地冒出来,广州本土测绘企业http://www.o.cn/更是热得不得了,广州地铁里都是用了他们的地图,知名度飙升不少。
用MapXtheme进行开发,能否实现类似的功能呢?
答案是可以的,不过最基础的,还是要借助http://www.o.cn/的地图来实现。
在GIS领域里,有一个重要的概念“栅格”,意思就是把地图映射为矩阵,有点像常见的BMP图像,路径、多边形、图元等,都在矩阵中用像素来描述。MapInfo除了支持打开TAB表里的数据外,也支持栅格图层,那么如果把航拍图片或纸质地图扫描文件当作栅格图像作为图层插入MapInfo中是否可行呢?
首先我们从各方面渠道获取各种卫星、航拍、三维地图图片。
然后打开MapInfo Professinal(我这里用的8.0),使用Open功能,在“文件类型”中选择Raster Image,并选择硬盘中的一个图片文件。
打开后,提示我们是只浏览图片还是注册栅格图片,我们选择注册。
随后看见注册窗体,这个窗体的意思就是让你手动在地图图片中设定一些点,并设定经纬度。
设立一些映射点后(起码三个),点击OK,就得到了张栅格图片了。
回来看看这个图片的目录下,多了一个TAB文件!通过这个文件,我们就可以在MapXtreme里创建图层了!
在开发中,我们还是使用FeatureLayer来通过这个TAB文件创建图层。
由于我们刚才映射到图片文件是45度倾斜的,我很担心该图片图层与本来的图层角度不匹配。
但这个顾虑是多余的,强大的MapInfo地图引擎已经通过刚才的映射,计算出倾斜度,并与本来的图层搭配显示了!
接下来我们来看看TAB文件里写的是什么:
!table
!version 300
!charset WindowsSimpChinese
!version 300
!charset WindowsSimpChinese
Definition Table
File "立体地图.jpg"
Type "RASTER"
(113.319415,23.143873) (4905,824) Label "Pt 1",
(113.3100029,23.13663553) (3902,735) Label "Pt 2",
(113.3226422,23.12986439) (4245,1570) Label "Pt 3"
CoordSys Earth Projection 1, 0
Units "degree"
一般来说,TAB文件里是明文的表定义,在这里,表类型为“RASTER”,然后就是三个点的映射。
File "立体地图.jpg"
Type "RASTER"
(113.319415,23.143873) (4905,824) Label "Pt 1",
(113.3100029,23.13663553) (3902,735) Label "Pt 2",
(113.3226422,23.12986439) (4245,1570) Label "Pt 3"
CoordSys Earth Projection 1, 0
Units "degree"
一般来说,TAB文件里是明文的表定义,在这里,表类型为“RASTER”,然后就是三个点的映射。
其他地图图片也一样,使用这个方法,就能创建出卫星地图与MapInfo地图同时使用了!
PS:地图图片的获取请各位遵循合法途径。