1.
說明
水經(jīng)注離線谷歌衛(wèi)星地圖加載服務(wù)中間件可利用離線地圖的.dat文件在本地建立服務(wù)端,并生成影像、標(biāo)簽、高程等服務(wù)地址,可以在ArcGIS API for JavaScript中直接調(diào)用該服務(wù)地址,并將請求到的服務(wù)資源顯示在前端,當(dāng)請求的地圖資源不存在可通過網(wǎng)絡(luò)直接下載缺失的地圖,并儲存在.dat文件中。
獲取更多免費(fèi)軟件、技術(shù)加群:329081749
2.實(shí)現(xiàn)
2.1準(zhǔn)備ArcGIS API for JavaScript
下載ArcGIS API for JavaScript。
1、請先配置IIS,方法請見《水經(jīng)注離線谷歌衛(wèi)星地圖加載服務(wù)中間件調(diào)用示例 For ArcGIS JS API》文檔
2、啟動bin下的RiverMapServer服務(wù)(配置config.ini文件),或者直接運(yùn)行"測試.bat"(已經(jīng)設(shè)置好命令行參數(shù))
3、運(yùn)行RiverMapServerSample For ArcGIS JS api\RiverMapServerSample For ArcGIS JS Api.html測試文件.
bin文件(水經(jīng)注離線地圖服務(wù)中間件)
dat文件(測試數(shù)據(jù))
API的下載地址:http://support.esrichina.com.cn/2011/0223/960.html。最新版本為3.9。
水經(jīng)注離線谷歌衛(wèi)星地圖加載服務(wù)中間件調(diào)用示例 For ArcGIS JS API:http://pan.baidu.com/s/1i3CUCNb
取arcgis_js_v39_api\arcgis_js_v39_api\arcgis_js_api文件夾下library文件夾及arcgis_js_v39_sdk\arcgis_js_v39_sdk\arcgis_js_api文件夾下sdk文件夾。放入新的文件夾中。例如”..\ 水經(jīng)注離線谷歌衛(wèi)星地圖加載服務(wù)中間件調(diào)用示例 For ArcGIS API for JavaScript\RiverMapServerSample For ArcGIS JS api”如下圖。
2.2 ArcGIS API for JavaScript離線部署
2.2.1 IIS部署
打開信息服務(wù)管理器(IIS),添加網(wǎng)站,設(shè)置物理路徑為..\ 水經(jīng)注離線谷歌衛(wèi)星地圖加載服務(wù)中間件調(diào)用示例 For ArcGIS API for JavaScript\RiverMapServerSample For ArcGIS JS api。在綁定一欄中分配IP地址。
這里的IP地址為192.168.1.51,端口為默認(rèn)端口80。
在功能視圖中目錄瀏覽一項(xiàng)啟用視圖瀏覽功能。
2.2.2 ArcGIS JS API離線部署
用記事本打開:\library\3.9\3.9\init.js文件,將文本中[HOSTNAME_AND_PATH_TO_JSAPI],用<myserver>/library/3.9/3.9/替換,其中myserver可以是機(jī)器名、IP等,這里部署的IP地址為192.168.1.51,即將[HOSTNAME_AND_PATH_TO_JSAPI]替換為192.168.1.51/library/3.9/3.9/。
用記事本打開:\library\3.9\3.9\js\dojo\dojo\dojo.js文件,將[HOSTNAME_AND_PATH_TO_JSAPI]替換為192.168.1.51/library/3.9/3.9/。
(示例中已將[HOSTNAME_AND_PATH_TO_JSAPI]改為192.168.1.51/library/3.9/3.9/)
在其目錄下新建一個html文件“RiverMapServerSample For ArcGIS JS Api.html”,如下圖.
利用記事本打開“RiverMapServerSample For ArcGIS JS Api.html”并進(jìn)行編輯,具體內(nèi)容如下。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" c>
<meta name="viewport" c>
<title>RiverMapServerSample_For_ArcGISApiForJavaScript</title>
<link rel="stylesheet" href="library/3.9/3.9/js/dojo/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="library/3.9/3.9/js/esri/css/esri.css">
<script>var dojoConfig = {parseOnLoad: true};</script>
<script src="library/3.9/3.9/init.js"></script>
<script>
dojo.require("esri.map");
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
var map;
var halfCircle = 20037508.342787;
function init() {
initLayer();
map = new esri.Map("map",{
logo:false
});
map.addLayer(new SJZLayer());
}
function initLayer() {
dojo.declare("SJZLayer", esri.layers.TiledMapServiceLayer, {
constructor: function() {
this.spatialReference = new esri.SpatialReference({
wkid: 102113
});
this.initialExtent = new esri.geometry.Extent(-20037508.342789, -20037508.342789, 20037508.342789, 20037508.342789, this.spatialReference);
this.fullExtent = new esri.geometry.Extent(-20037508.342789, -20037508.342789, 20037508.342789, 20037508.342789, this.spatialReference);
this.tileInfo = new esri.layers.TileInfo({
"dpi": "90.71428571427429",
"format": "image/png",
"compressionQuality": 0,
"spatialReference": {
"wkid": "102113"
},
"rows": 256,
"cols": 256,
"origin": {
"x": -halfCircle,
"y": halfCircle
},
"lods" : [
{"level" : 0, "resolution" : 156543.033928, "scale" : 591657527.591555},
{"level" : 1, "resolution" : 78271.5169639999, "scale" : 295828763.795777},
{"level" : 2, "resolution" : 39135.7584820001, "scale" : 147914381.897889},
{"level" : 3, "resolution" : 19567.8792409999, "scale" : 73957190.948944},
{"level" : 4, "resolution" : 9783.93962049996, "scale" : 36978595.474472},
{"level" : 5, "resolution" : 4891.96981024998, "scale" : 18489297.737236},
{"level" : 6, "resolution" : 2445.98490512499, "scale" : 9244648.868618},
{"level" : 7, "resolution" : 1222.99245256249, "scale" : 4622324.434309},
{"level" : 8, "resolution" : 611.49622628138, "scale" : 2311162.217155},
{"level" : 9, "resolution" : 305.748113140558, "scale" : 1155581.108577},
{"level" : 10, "resolution" : 152.874056570411, "scale" : 577790.554289},
{"level" : 11, "resolution" : 76.4370282850732, "scale" : 288895.277144},
{"level" : 12, "resolution" : 38.2185141425366, "scale" : 144447.638572},
{"level" : 13, "resolution" : 19.1092570712683, "scale" : 72223.819286},
{"level" : 14, "resolution" : 9.55462853563415, "scale" : 36111.909643},
{"level" : 15, "resolution" : 4.77731426794937, "scale" : 18055.954822},
{"level" : 16, "resolution" : 2.38865713397468, "scale" : 9027.977411},
{"level" : 17, "resolution" : 1.19432856685505, "scale" : 4513.988705},
{"level" : 18, "resolution" : 0.597164283559817, "scale" :2256.994353},
{"level" : 19, "resolution" : 0.298582141647617, "scale" : 1128.497176}
]
});
this.loaded = true;
this.onLoad(this);
},
getTileUrl: function(level, row, col) {
var baseUrl="http://127.0.0.1:1002/getDefinedImage?";
var x=col+1;
var y=row+1;
var z=level+1;
var url=baseUrl + "x=" + x + "&y=" + y + "&z=" + z;
return url;
}
});
}
dojo.ready(init);
</script>
</head>
<body onload='init();'>
<div id='map' style='width: full; height: 700px;'>
</div>
</body>
</html>
其中【strURL=”http://localhost:1002/getDefinedImage?”】表示請求的是影像、地圖、地形、標(biāo)簽、影像+標(biāo)簽、影像+地圖、影像+地形或Dem。具體根據(jù)RiverMapServer的啟動配置參數(shù)來確定。
例如:RiverMapServer.exe “1002” “Image_Label” “c:\test\tile” “c:\test\label”表示此應(yīng)用輸出合并底圖(可以為影像、地圖、地形任意一種)和標(biāo)簽兩個地圖瓦片。RiverMapServer.exe “1002” “Image” “c:\test\tile”表示此應(yīng)用輸出地圖底圖(可以為影像、地圖、地形任意一種)
2.2啟動RiverMapServer
啟動RiverMapServer有兩種方式都可以正常運(yùn)行。
2.2.1直接運(yùn)行RiverMapServer
通過config.ini文件配置參數(shù),如下圖。
PORT=1002表示端口為1002;GetFileType=Image_Label表示此應(yīng)用輸出合并底圖(可以為影像、地圖、地形任意一種)和標(biāo)簽兩個地圖瓦片,后面必須跟兩個瓦片工程文件目錄;TileDir=..\dat\tile表示影像數(shù)據(jù)路徑;LabelDir=..\dat\label 表示標(biāo)簽數(shù)據(jù)路徑;DemDir=..\dat\dem 表示高程數(shù)據(jù)路徑。
2.2.2 通過cmd.exe輸入啟動參數(shù)運(yùn)行
新建一個bat文件,設(shè)置配置參數(shù),如下圖。
雙擊.bat啟動服 務(wù)。運(yùn)行效果和直接運(yùn)行RiverMapServer效果一致。
3.運(yùn)行結(jié)果
瀏覽器打開RiverMapServerSample For ArcGIS JS Api.html效果,如下圖。
附錄:
啟動參數(shù)說明
1.瓦片文件類型:Image_Lable 表示此應(yīng)用輸出合并底圖(可以為影像、地圖、地形任意一種)和標(biāo)簽兩個地圖瓦片,后面必須跟兩個瓦片工程文件目錄
例子:RiverMapServer.exe “1002” “Image_Label” “c:\test\tile” “c:\test\label”
2.瓦片文件類型:Image 表示此應(yīng)用輸出地圖底圖(可以為影像、地圖、地形任意一種)
后面必須只需一個瓦片工程文件目錄
例子:RiverMapServer.exe “1002” “Image” “c:\test\tile”
3.瓦片文件類型:Label表示此應(yīng)用輸出地圖標(biāo)簽 后面必須只需一個瓦片工程文件目錄
例子:RiverMapServer.exe “1002” “Label” “c:\test\label”
4.(待)瓦片文件類型:dem表示此應(yīng)用輸出地圖位置高程 后面必須只需一個地圖位置高程工程文件目錄
例子:RiverMapServer.exe “1002” “dem” “c:\test\dem”
輸入?yún)?shù)大小寫不敏感,啟動時需檢查瓦片文件類型與工程文件是否匹配
請求接口說明
根據(jù)啟動參數(shù)輸出相應(yīng)類型圖片(影像、地圖、地形、標(biāo)簽、影像+標(biāo)簽、影像+地圖、影像+地形、Dem)
http://localhost:1002/getDefinedImage?x=1&y=1&z=1
輸出地圖底圖(影像、地圖、地形任意一種)
http://localhost:1002/getTileImage?x=1&y=1&z=1
輸出標(biāo)簽
http://localhost:1002/getLabelImage?x=1&y=1&z=1
輸出高程
http://localhost:1002/getDemImage?x=1&y=1&z=1
刪除地圖地圖(影像、地圖、地形任意一種)
http://localhost:1002/delTileImage?x=1&y=1&z=1
地圖服務(wù)啟動日志輸出
[attach]323152[/attach]
2 .服務(wù)正常啟動與運(yùn)行輸出:
@@RUN:WAITING 正常啟動后和服務(wù)空閑時每分鐘輸出
@@RUN:Exception:異常消息(不能有回車換上等控制字符)服務(wù)啟動異常后輸出
服務(wù)正常啟動后建立與瓦片工程文件數(shù)據(jù)源的連接
@@DSCOK:瓦片工程文件 連接正常
@@DSCFAIL:瓦片工程文件 連接失敗
@@PORT:端口
3 .瓦片輸出
@@TileOK:X=1&y=1&z=1 底圖瓦片下載成功(已下載正常輸出瓦片不輸出日志)
@@LabelOK:X=1&y=1&z=1 標(biāo)簽瓦片下載成功(已下載正常輸出瓦片不輸出日志)
@@TileNoExists:X=1&y=1&z=1 底圖瓦片不存在
@@LabelNoExists:X=1&y=1&z=1 標(biāo)簽瓦片不存在
@@TileOverRange:X=1&y=1&z=1 底圖瓦片超出工程文件覆蓋范圍
@@LabelOverRange:X=1&y=1&z=1 標(biāo)簽瓦片超出工程文件覆蓋范圍
[
本帖最后由 諾一小寶貝 于 2015-12-17 13:13 編輯 ]