posts - 41,  comments - 90,  trackbacks - 0
            2010年12月6日

          Android老大哥安迪魯賓近日在發(fā)布2.3姜餅系統(tǒng)和Nexus S的時(shí)候曾演示了最新版本的Google Maps 5.0手機(jī)地圖,最大的變化就是采用了全3D地圖。

          在新版手機(jī)地圖中,矢量圖將替換原本的2D畫(huà)面為用戶(hù)呈現(xiàn)出全新的3D界面,用戶(hù)可以自由的轉(zhuǎn)動(dòng)和縮放。此外用戶(hù)還將會(huì)獲得離線地圖瀏覽功能,不用在瀏覽地圖時(shí)保持在線狀態(tài)。

          Google現(xiàn)在在其官方手機(jī)頻道又放出了一段用Nexus S運(yùn)行新版Maps應(yīng)用的全功能演示,這款軟件將會(huì)隨Nexus S上市,之后提供其他設(shè)備更新,但是對(duì)手機(jī)硬件有一定的要求,新款800MHz至1GHz處理器且配有專(zhuān)用圖形核心的手機(jī)才能支持3D視圖。



          原文見(jiàn)驅(qū)動(dòng)之家
          http://news.mydrivers.com/1/181/181818.htm
          posted @ 2010-12-12 21:54 天狼 閱讀(610) | 評(píng)論 (1)編輯 收藏
          天地圖官方網(wǎng)站提供的二次開(kāi)發(fā)文檔和例子過(guò)于簡(jiǎn)單,很多關(guān)鍵信息沒(méi)有給予說(shuō)明,例如給出了WFS服務(wù)接口,卻沒(méi)有提供詳細(xì)的開(kāi)發(fā)文檔。
          不過(guò)這并不影響我們的使用,因?yàn)镺GC WFS規(guī)范包含元數(shù)據(jù)查詢(xún)命令,通過(guò)發(fā)送getCapabilities請(qǐng)求,我們可以得知服務(wù)器提供哪些WFS服務(wù)。

          獲取WFS服務(wù)器元數(shù)據(jù)
          http://search.tianditu.com/wfs?request=getCapabilities
          返回信息如下:
          <WFS_Capabilities version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengeospatial.net//wfs/1.0.0/WFS-capabilities.xsd">
          <Service>
          <Name>GeoGlobe WFS</Name>
          <Title>GeoGlobe網(wǎng)絡(luò)要素服務(wù)器</Title>
          <Abstract>武大吉奧信息技術(shù)有限公司GeoGlobe網(wǎng)絡(luò)要素服務(wù)器</Abstract>
          <KeywordList/>
          <OnlineResource>http://search.tianditu.com:80/wfs</OnlineResource>
          </Service>
          <Capability>
          <Request>
          <GetCapabilities>
          <DCPType>
          <HTTP>
          <Get onlineResource="http://search.tianditu.com:80/wfs"/>
          </HTTP>
          </DCPType>
          </GetCapabilities>
          <GetFeature>
          <ResultFormat>
          <GML2/>
          </ResultFormat>
          <DCPType>
          <HTTP>
          <Get onlineResource="http://search.tianditu.com:80/wfs"/>
          <Post onlineResource="http://search.tianditu.com:80/wfs"/>
          </HTTP>
          </DCPType>
          </GetFeature>
          <DescribeFeatureType>
          <SchemaDescriptionLanguage>
          <XMLSCHEMA/>
          </SchemaDescriptionLanguage>
          <DCPType>
          <HTTP>
          <Get onlineResource="http://search.tianditu.com:80/wfs"/>
          </HTTP>
          </DCPType>
          </DescribeFeatureType>
          </Request>
          <VendorSpecificCapabilities/>
          </Capability>
          <FeatureTypeList>
          <Operations>
          <Query/>
          </Operations>
          <FeatureType>
          <Name>DOMAIN_POI_NEW</Name>
          <Title>DOMAIN_POI_NEW</Title>
          <Abstract>DOMAIN_POI_NEW</Abstract>
          <Keywords>DOMAIN_POI_NEW</Keywords>
          <SRS>EPSG:4326</SRS>
          <LatLongBoundingBox minx="-180.0" miny="-90.0" maxx="180.0" maxy="90.0"/>
          </FeatureType>
          <FeatureType>
          <Name>iso19112:SI_Gazetteer</Name>
          <Title>iso19112:SI_Gazetteer</Title>
          <SRS>EPSG:4326</SRS>
          <LatLongBoundingBox minx="-180.0" miny="-90.0" maxx="180.0" maxy="90.0"/>
          </FeatureType>
          </FeatureTypeList>
          <ogc:Filter_Capabilities>
          <ogc:Spatial_Capabilities>
          <ogc:Spatial_Operators>
          <ogc:BBOX/>
          <ogc:Equals/>
          <ogc:Disjoint/>
          <ogc:Intersect/>
          <ogc:Touches/>
          <ogc:Crosses/>
          <ogc:Within/>
          <ogc:Contains/>
          <ogc:Overlaps/>
          <ogc:Beyond/>
          </ogc:Spatial_Operators>
          </ogc:Spatial_Capabilities>
          <ogc:Scalar_Capabilities>
          <ogc:Logical_Operators/>
          <ogc:Comparison_Operators>
          <ogc:Simple_Comparisons/>
          <ogc:Like/>
          <ogc:Between/>
          </ogc:Comparison_Operators>
          </ogc:Scalar_Capabilities>
          </ogc:Filter_Capabilities>
          </WFS_Capabilities>

          返回信息包含了WFS服務(wù)器的開(kāi)發(fā)單位(武大吉奧),WFS圖層的名稱(chēng)(DOMAIN_POI_NEW和iso19112:SI_Gazetteer),支持的邏輯操作符和空間操作符。

          繼續(xù)測(cè)試
          http://search.tianditu.com/wfs?request=GetFeature&version=1.0.0&typeName=DOMAIN_POI_NEW&BBOX=105.99,29.99,106,30
          返回
          <wfs:FeatureCollection xsi:schemaLocation="http://www.opengis.net/wfs WFS_Basic.xsd http://www.geostart.com.cn/geoglobe describe.xsd">
          <gml:boundedBy>
          <gml:Box>
          <gml:coordinates>-180.0,-90.0 180.0,90.0</gml:coordinates>
          </gml:Box>
          </gml:boundedBy>
          <gml:featureMember>
          <DOMAIN_POI_NEW>
          <OID>6764930</OID>
          <Geometry>
          <gml:Point srsName="-1">
          <gml:coordinates>105.999183,29.995258</gml:coordinates>
          </gml:Point>
          </Geometry>
          <DOMAINNAME>梅子村</DOMAINNAME>
          <DOMAINCODE>1CHN50022400000130172</DOMAINCODE>
          <NLEVEL>16</NLEVEL>
          <X>105.999183</X>
          <Y>29.995258</Y>
          <COLDATE/>
          <NAMETIME/>
          <ENDTIME/>
          <CLASSID/>
          <STANDARDNAME>亞洲中國(guó)重慶市銅梁縣梅子村</STANDARDNAME>
          <TELEPHONE/>
          <ADDRESS/>
          <KIND>BB80</KIND>
          <ZIPCODE/>
          <ADMINCODE>500224</ADMINCODE>
          <POI_ID>5000000130172</POI_ID>
          <PID/>
          <DATATYPE>chinapoi</DATATYPE>
          <FENAME/>
          <locationType>
          <SI_LocationType>
          <name>DOMAIN_POI_NEW</name>
          </SI_LocationType>
          </locationType>
          </DOMAIN_POI_NEW>
          </gml:featureMember>
          </wfs:FeatureCollection>

          分析返回的GML數(shù)據(jù),可知DOMAIN_POI_NEW是地名圖層,包含名稱(chēng)、代碼、類(lèi)別碼等屬性字段。

          將圖層改為iso19112:SI_Gazetteer,沒(méi)有返回任何信息,google ISO19112,得到如下解釋?zhuān)?br /> DIN EN ISO 19112-2005 地理信息.通過(guò)地理標(biāo)識(shí)符的空間定位 標(biāo)準(zhǔn)號(hào): DIN EN ISO 19112-2005 標(biāo)準(zhǔn)名稱(chēng): 地理信息.通過(guò)地理標(biāo)識(shí)符的空間定位

          得到以上信息后,我們嘗試使用Openlayers獲取,即全國(guó)地名數(shù)據(jù)庫(kù)。

          通過(guò)URL(GET方式)訪問(wèn)“天地圖”WFS服務(wù),可以使用OpenLayers.Request.GET類(lèi),示例代碼如下:
             //使用FEATUREID查詢(xún)

             new OpenLayers.Request.GET( {
                  url : "http://search.tianditu.com/wfs?request=GetFeature",
                  params: {
                      typeName: "DOMAIN_POI_NEW",
                      FEATUREID: "DOMAIN_POI_NEW.6649356"
                  },
                  callback : handler
              });


             //使用BBOX查詢(xún)

              new OpenLayers.Request.GET( {
                  url : "http://search.tianditu.com/wfs?request=GetFeature",
                  params: {
                      typeName: "DOMAIN_POI_NEW",
                      BBOX: "105.99,29.99,106,30"  //map.getExtent().toBBOX()
                  },
                  callback : handler
              });


          說(shuō)明:
          url WFS服務(wù)器地址,必須加上?request=GetFeature
          typeName 圖層名稱(chēng)
          FEATUREID WFS的圖元ID,采用標(biāo)準(zhǔn)格式: [圖層名].[OID編號(hào)]
          BBOX 指定區(qū)域查詢(xún),注意不要設(shè)置過(guò)大,否則瀏覽器可能失去響應(yīng)。

          通過(guò)POST方式訪問(wèn)“天地圖”WFS服務(wù),可以使用OpenLayers.Request.POST類(lèi),示例代碼如下:

              var xmlPara = "<?xml version='1.0' encoding='UTF-8'?>"
                      + "<wfs:GetFeature maxFeatures='100' service='WFS' version='1.0.0' "
                      + "xmlns:wfs='http://www.opengis.net/wfs' "
                      + "xmlns:gml='http://www.opengis.net/gml' "
                      + "xmlns:ogc='http://www.opengis.net/ogc' "
                      + "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
                      + "xsi:schemaLocation='http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd'>"
                      + "<wfs:Query typeName='iso19112:SI_Gazetteer' srsName='EPSG:4326'>"
                      + "<ogc:Filter xmlns:ogc='http://www.opengis.net/ogc'>"
                      + "<ogc:And><ogc:PropertyIsLike wildCard='*' singleChar='.' escape='!'>"
                      + "<ogc:PropertyName>STANDARDNAME</ogc:PropertyName>"
                      + "<ogc:Literal>*解放碑*</ogc:Literal>"
                      + "</ogc:PropertyIsLike></ogc:And></ogc:Filter>"
                      + "</wfs:Query></wfs:GetFeature>";
              
              var request = OpenLayers.Request.POST( {
                  url : "http://search.tianditu.com/wfs?",
                  data : xmlPara,
                  callback : handler
              });
          };

          說(shuō)明:

          url WFS服務(wù)器地址

          data WFS請(qǐng)求正文,返回的GML由回調(diào)函數(shù)handler處理

          handler負(fù)責(zé)處理服務(wù)端返回的GML數(shù)據(jù),也就是矢量化的地圖數(shù)據(jù),根據(jù)應(yīng)用需求編寫(xiě)代碼,獲取feature的通用代碼如下:
          var g = new OpenLayers.Format.GML();
          var features = g.read(req.responseText);
          for ( var i = 0; i < features.length; ++i) {
             var feature = features[i];
             var geometry = feature.geometry;
             var attributes = feature.attributes;
          }

          定義過(guò)濾條件時(shí)請(qǐng)使用STANDARDNAME字段,不要使用DOMAINNAME字段,前者應(yīng)該有索引支持,而后者沒(méi)有,查詢(xún)速度差別很大。

          經(jīng)過(guò)測(cè)試,typeName="DOMAIN_POI_NEW"和typeName="iso19112:SI_Gazetteer"都能返回結(jié)果。由于缺少官方文檔說(shuō)明,不知道這兩個(gè)圖層有何區(qū)別。

          嘗試使用OpenLayers.Protocol.WFS無(wú)法訪問(wèn)“天地圖”WFS服務(wù),服務(wù)器返回: 請(qǐng)求參數(shù)[REQUEST]的值為空或不正確。

          提醒: 使用POST查詢(xún)時(shí),頁(yè)面文件或代碼文件務(wù)必保存為utf-8編碼,如果使用gbk、gb2312編碼,漢字地名會(huì)變成亂碼,導(dǎo)致javascript代碼錯(cuò)誤。

          posted @ 2010-12-10 16:22 天狼 閱讀(5943) | 評(píng)論 (3)編輯 收藏
          國(guó)家測(cè)繪局2010年10月21日正式發(fā)布中國(guó)公眾版國(guó)家地理信息公共服務(wù)平臺(tái)“天地圖”,作為中國(guó)境內(nèi)數(shù)據(jù)資源最全的地理信息服務(wù)網(wǎng)站,“天地圖”將為公眾提供權(quán)威、可信、統(tǒng)一的地理信息資源。

          “天地圖”公開(kāi)開(kāi)放了地圖數(shù)據(jù)服務(wù)接口,第三方使用者可以直接通過(guò)互聯(lián)網(wǎng)獲取地圖數(shù)據(jù),無(wú)需授權(quán)認(rèn)證,在公眾服務(wù)信息公開(kāi)方面可以說(shuō)是一次非常大的進(jìn)步。
          “天地圖”的在線服務(wù)數(shù)據(jù)近10TB以下是“天地圖”提供的在線地理信息數(shù)據(jù)資源:

          數(shù)據(jù)類(lèi)型

          數(shù)據(jù)源

          級(jí)別

          服務(wù)地址

          線劃地圖

          全球1:100萬(wàn)地理底圖

          2-10級(jí)

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

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

          全國(guó)1:25萬(wàn)公開(kāi)版數(shù)字地形圖

          11-12級(jí)

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

          全國(guó)車(chē)載導(dǎo)航

          13-18級(jí)

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

          衛(wèi)星影像

          全球250米衛(wèi)星影像 (MODIS)

          2-7級(jí)

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

          全國(guó)15米衛(wèi)星影像 (ETM)

          8-10級(jí)

          全國(guó)2.5米衛(wèi)星影像 (P5)

          11-14級(jí)

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

          http://tile0.tianditu.com/services/e12
          http://tile0.tianditu.com/services/e13
          http://tile0.tianditu.com/services/eastdawnall

          地級(jí)城市0.6米衛(wèi)星影像

           (QuickBirdWorldView IWorldView II)

          15-18級(jí)

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

          數(shù)字高程模型

          全球90X90米數(shù)字高程模型

           

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

          地名地址

          全球1:100萬(wàn)地名地址

           

          http://search.tianditu.com/wfs

          全國(guó)1:25萬(wàn)地名地址


          全國(guó)車(chē)載導(dǎo)航地名地址


          除地名地址數(shù)據(jù)使用OGC WFS協(xié)議發(fā)布外,其他數(shù)據(jù)全部采用基于OGC WMS-C協(xié)議的分級(jí)瓦片形式發(fā)布,工作原理類(lèi)似于谷歌地圖和OSM(OpenStreetMap)。

          類(lèi)似谷歌地圖,“天地圖”為互聯(lián)網(wǎng)開(kāi)發(fā)人員提供了二次開(kāi)發(fā)API(武大吉奧開(kāi)發(fā)的GeoGlobe二維地圖API)。

          通過(guò)分析GeoGlobe API代碼,發(fā)現(xiàn)它源自O(shè)penlayers,大部分代碼除了把Openlayers換成GeoSurf外,沒(méi)有任何變化。不知道Openlayers項(xiàng)目組就此作何感想。
          正因?yàn)槿绱耍覀兛梢詤⒖糘penLayers.Layer.TileCache和OpenLayers.Layer.XYZ類(lèi),編寫(xiě)一個(gè)專(zhuān)用于讀取“天地圖”的TDTLayer類(lèi),使Openlayers能夠直接訪問(wèn)“天地圖”的在線地圖數(shù)據(jù)。

          “天地圖”采用256×256像素,png格式的地圖瓦片文件,讀取單個(gè)文件需要四個(gè)參數(shù):T、X、Y、L
          T=瓦片(Tile)名稱(chēng),X=瓦片橫向編碼,Y=瓦片縱向編碼,L=瓦片級(jí)別
          這個(gè)是一個(gè)完整的請(qǐng)求示例:http://tile0.tianditu.com/DataServer?T=AB0512_Anno&X=50&Y=12&L=6

          天地圖”地理信息數(shù)據(jù)資源列表將地圖瓦片分為16級(jí)(L=2-18),其中L=2級(jí)比例尺最小,對(duì)應(yīng)全球地圖。
          L=2級(jí)只有8個(gè)瓦片文件,分別是

           X= 0 1 2 3 0 1 2 3
           Y= 0 0 0 0 1 1 1 1
          L=3級(jí)有32個(gè)瓦片文件,分別是:
           X= 0-7
           Y= 0-3
          L=4級(jí)有128個(gè)瓦片文件,分別是:
           X= 0-15
           Y= 0-7
          其余各級(jí)以此類(lèi)推,每級(jí)的瓦片文件數(shù)比前一級(jí)增加4倍,其中線劃地圖10級(jí)以上,衛(wèi)星地圖8級(jí)以上只提供中國(guó)境內(nèi)的數(shù)據(jù),沒(méi)有覆蓋全球。

          查看
          GeoGlobe API主代碼GeoSurfJSAPI.js文件(相當(dāng)于Openlayers.js,可以了解X(x_num)、Y(y_num)、L(level)的生成方法,偽代碼如下:
          level=getLevelForResolution(map.getResolution()); //計(jì)算瓦片級(jí)別
          coef=TopTileSize.w/Math.pow(2,level); //中間系數(shù)
          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);
          根據(jù)當(dāng)前分辨率計(jì)算地圖瓦片級(jí)別
          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;
          }

          經(jīng)過(guò)簡(jiǎn)單測(cè)試,“天地圖”和谷歌地圖在數(shù)據(jù)上差別不大,二次開(kāi)發(fā)方面借助于強(qiáng)大的Openlayers地圖客戶(hù)端引擎不會(huì)弱于Google Map API,唯獨(dú)在速度上與谷歌地圖存在較大差距,特別是地圖放大到13級(jí)-18級(jí)時(shí),延遲變得非常明顯,有時(shí)甚至無(wú)法顯示。
          使用Firebug跟蹤運(yùn)行發(fā)現(xiàn),大約1/3的地圖瓦片請(qǐng)求超時(shí),導(dǎo)致客戶(hù)端讀取失敗。
          “天地圖”目前還處于測(cè)試階段,希望相關(guān)單位繼續(xù)改進(jìn)和提升服務(wù)器端性能,快速穩(wěn)定的響應(yīng)大量客戶(hù)端發(fā)出的并發(fā)請(qǐng)求。
          測(cè)試中發(fā)現(xiàn),“天地圖”開(kāi)放的地圖數(shù)據(jù)服務(wù)接口從tile0.tianditu.com一直到tile7.tianditu.com。依次ping 這8個(gè)服務(wù)接口,tile1到tile7的響應(yīng)速度相對(duì)較快。修改客戶(hù)端js代碼,將瓦片地圖請(qǐng)求平均發(fā)送給tile0到tile7 八個(gè)服務(wù)接口,可以有效加快地圖顯示速度。“天地圖”提供的GeoSurfJSAPI.js中已經(jīng)包含相關(guān)代碼,通過(guò)給Layer的mirrorUrl屬性賦值,可以均衡讀取指定的多個(gè)服務(wù)接口,代碼如下:
                                  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"
                                          ]
                                      });

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


          posted @ 2010-12-06 14:06 天狼 閱讀(8603) | 評(píng)論 (5)編輯 收藏
          主站蜘蛛池模板: 钟山县| 米泉市| 志丹县| 澎湖县| 高雄市| 子长县| 万盛区| 青田县| 吉木萨尔县| 天气| 汉川市| 共和县| 广德县| 孟州市| 怀化市| 彩票| 商都县| 万山特区| 衡水市| 大城县| 土默特左旗| 茶陵县| 南乐县| 利辛县| 江阴市| 闵行区| 南京市| 乐都县| 沙湾县| 凤庆县| 仁怀市| 永春县| 夏河县| 扬州市| 施甸县| 河北区| 建宁县| 桃江县| 长顺县| 元朗区| 营口市|