天地图

国家测绘局2010年10月21日正式发布中国公众版国家地理信息公共服务平台“天地图”,作为中国境内数据资源最全的地理信息服务网站,“天地图”将为公众提供权威、可信、统一的地理信息资源。


“天地图”公开开放了地图数据服务接口,第三方使用者 可以直接通过互联网获取地图数据 ,无需授权认证,在公众服务信息公开方面可以说是一次非常大的进步。
“天地图”的 在线服务数据近 10TB , 以下是“天地图” 提供 的在线地理信息数据资源:


数据类型
数据源
级别
服务地址
线划地图
全球 1:100 万地理底图
2-10 级
http://tile0.tianditu.com/services/A0512_EMap
http://tile0.tianditu.com/services/AB0512_Anno
全国 1:25 万公开版数字 地形图
11-12 级
http://tile0.tianditu.com/services/B0627_EMap1112
全国车载导航
13-18 级
http://tile0.tianditu.com/services/siwei0608
卫星影像
全球 250 米卫星影像 (MODIS)
2-7 级
http://tile0.tianditu.com/services/sbsm0210
全国 15 米卫星影像 (ETM)
8-10 级
全国 2.5 米卫星影像 (P5)
11-14 级
http://tile0.tianditu.com/services/e11
http://tile0.tianditu.com/services/e12
http://tile0.tianditu.com/services/e13
http://tile0.tianditu.com/services/eastdawnall
地级城市 0.6 米卫星影像
  (QuickBird 、 WorldView I 、 WorldView II)
15-18 级
http://tile0.tianditu.com/services/sbsm1518
数字高程模型
全球 90X90 米数字高程模型
 
http://tile0.tianditu.com/services/J07098
地名地址
全球 1:100 万地名地址
 
http://search.tianditu.com/wfs
全国 1:25 万地名地址


全国车载导航地名地址


除地名地址数据使用OGC WFS协议发布外,其他数据全部采用基于OGC WMS-C协议的分级瓦片形式发布,工作原理类似于谷歌地图和OSM(OpenStreetMap)。


类似 谷歌地图,“天地图”为互联网开发人员提供了二次开发API( 武大吉奥开发的GeoGlobe二维地图API)。


通过分析GeoGlobe API代码,发现它源自Openlayers,大部分代码除了把Openlayers换成GeoSurf 外,没有任何变化。不知道Openlayers项目组就此作何感想。
正因为如此,我们可以参考OpenLayers.Layer.TileCache和OpenLayers.Layer.XYZ类,编写一个专用于读取“天地图”的TDTLayer类,使Openlayers能够直接访问“天地图”的在线地图数据。


“天地图”采用256×256像素,png格式的地图瓦片文件,读取单个文件需要四个参数:T、X、Y、L
T=瓦片(Tile)名称,X=瓦片横向编码,Y=瓦片纵向编码,L=瓦片级别
这个是一个完整的请求示例:http://tile0.tianditu.com/DataServer?T=AB0512_Anno&X=50&Y=12&L=6


“ 天地图” 地理信息数据资源列表将地图瓦片分为16级(L=2-18),其中L=2级比例尺最小,对应全球地图。
L=2级只有8个瓦片文件,分别是 :
 X= 0 1 2 3 0 1 2 3
 Y= 0 0 0 0 1 1 1 1
L=3级有32个瓦片文件,分别是:
 X= 0-7
 Y= 0-3
L=4级有128个瓦片文件,分别是:
 X= 0-15
 Y= 0-7
其余各级以此类推,每级的瓦片文件数比前一级增加4倍,其中线划地图10级以上,卫星地图8级以上只提供中国境内的数据,没有覆盖全球。


查看 GeoGlobe API主代码GeoSurfJSAPI.js文件(相当于 Openlayers.js) ,可以了解X(x_num)、Y(y_num)、L(level)的生成方法,伪代码如下:
level=getLevelForResolution(map.getResolution()); //计算瓦片级别
coef=TopTileSize.w/Math.pow(2,level); //中间系数
x_num=this.pyramid.topTileFromX<this.pyramid.topTileToX?Math.round((bounds.left-this.pyramid.topTileFromX)/coef):Math.round((this.pyramid.topTileFromX-bounds.right)/coef);
y_num=this.pyramid.topTileFromY<this.pyramid.topTileToY?Math.round((bounds.bottom-this.pyramid.topTileFromY)/coef):Math.round((this.pyramid.topTileFromY-bounds.top)/coef);


根据当前分辨率计算地图瓦片级别


function getLevelForResolution(res){


  var ratio=map.getMaxResolution()/res;


  if(ratio<1)return 0;


  for(var level=0;ratio/2>=1;)


  {level++;ratio/=2;}


  return level;


}
经过简单测试,“天地图”和谷歌地图在数据上差别不大,二次开发方面借助于强大的Openlayers地图客户端引擎不会弱于Google Map API,唯独在速度上与谷歌地图存在较大差距,特别是地图放大到13级-18级时,延迟变得非常明显,有时甚至无法显示。


使用Firebug跟踪运行发现,大约1/3的地图瓦片请求超时,导致客户端读取失败。
“天地图”目前还处于测试阶段,希望相关单位继续改进和提升服务器端性能,快速稳定的响应大量客户端发出的并发请求。


测试中发现, “天地图”开放的地图数据服务接口从tile0.tianditu.com一直到 tile7.tianditu.com 。依次ping 这8个服务接口,tile1到 tile7 的响应速度相对较快。修改客户端js代码,将瓦片地图请求平均发送给tile0到 tile7 八个服务接口,可以有效加快地图显示速度。 “天地图”提供的GeoSurfJSAPI.js中 已经包含相关代码,通过给Layer的mirrorUrl属性赋值,可以均衡读取指定的多个服务接口,代码如下:
                        var layer3 = new GeoSurf.Layer.GlobeTile("siwei0608", "http://tile6.tianditu.com/services/siwei0608", {
                                transitionEffect: "resize",
                                topLevel: 13,
                                bottomLevel: 18,
                                maxExtent: new GeoSurf.Bounds(100, 27, 110, 34),
                                mirrorUrls: [
                                    "http://tile1.tianditu.com/services/siwei0608",
                                    "http://tile2.tianditu.com/services/siwei0608",
                                    "http://tile3.tianditu.com/services/siwei0608",
                                    "http://tile4.tianditu.com/services/siwei0608",
                                    "http://tile5.tianditu.com/services/siwei0608",
                                    "http://tile6.tianditu.com/services/siwei0608"
                                ]
                            });








http://tile0.tianditu.com/services/siwei0608


http://search.tianditu.com/wfs


从来源来看,基本和google map来源是一致的,15米对应google的普通图,2.5米对应google的中清,0.6对应google的高清图
{X1=13897758.6178429,Y1=6020561.42370583,X2=14330755.0261823,Y2=6242682.95785396}




{X=13775786.9858392,Y=6105178.32326965}


比例尺=0.0254/(a*dpi)。


官方地图坐标 N22.540938666666665,E113.95289433333335


偏移地图坐标 N22.5383656877113157,E113.9581618420152
22.537938666666665  113.95769433333335


MapObjects和MapX的主要功能对比 
功能     MapObjects     MapX     
显示的地图数据格式       Arcview的SHP、ARC/INFO的coverage、SDE图层   MapInfo的数据格式     
叠加栅格图像     有     有     
对地图的常用操作     放大、缩小、漫游等     放大、缩小、漫游等     
图层控制     增加、移走、设置当前层     增加、移走、设置当前层     
属性数据绑定     有     有     
地图信息查询方式     1.   通过鼠标选取特征   
2.   通过SQL查找特征   
3.   通过空间操作选取特征     1.   通过鼠标选取特征   
2.   通过SQL查找特征   
3.   通过空间操作选取特征     
专题地图     较弱     有     
GPS集成     有     有     
用户绘图图层     无     有     
生成/编辑地图对象     较弱     较弱     
地图标注     有     有     
地图符号化     较弱     较强     
分析功能     无     无     
地理编码     有     有     
可使用的开发语言     VC、VB、PowerBuilder、Delphi、Access等     VC、VB、PowerBuilder、Delphi、Lotus   Notes等    
北京54基准面参数为:(3,24,-123,-94,-0.02,0.25,0.13,1.1,0) 
西安80基准面参数为:(31,24,-123,-94,-0.02,0.25,0.13,1.1,0) 
WGS84基准面参数为:(28,24,-123,-94,-0.02,0.25,0.13,1.1,0) 

你可能感兴趣的:(天地图)