posts - 41,  comments - 90,  trackbacks - 0
          國家測繪局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米衛星影像

           (QuickBirdWorldView IWorldView 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"
                                          ]
                                      });

          客戶端使用上述讀取策略后,即便放大到17-18級,整幅地圖也能夠完全顯示,速度有明顯的提升。


          posted on 2010-12-06 14:06 天狼 閱讀(8603) 評論(5)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 白朗县| 新建县| 达尔| 平利县| 沂水县| 航空| 北川| 桐乡市| 马鞍山市| 龙门县| 武鸣县| 京山县| 资溪县| 武川县| 灌南县| 赤城县| 镇坪县| 崇阳县| 泰和县| 永济市| 财经| 台湾省| 都匀市| 岳池县| 根河市| 修文县| 岢岚县| 上林县| 昌江| 永泰县| 封开县| 尼勒克县| 池州市| 肇庆市| 乌鲁木齐市| 常德市| 潮安县| 福海县| 尼勒克县| 江陵县| 巩义市|