离线谷歌卫星地图加载服务中间件调用示例For ArcGIS JS API

2016-7-21 15:13:48 0人评论 934次浏览 分类:技术文章

1. 说明
水经离线谷歌卫星地图加载服务中间件可利用离线地图的.dat文件在本地建立服务端,并生成影像、标签、高程等服务地址,可以在ArcGIS API for JavaScript中直接调用该服务地址,并将请求到的服务资源显示在前端,当请求的地图资源不存在可通过网络直接下载缺失的地图,并储存在.dat文件中。

获取更多免费软件、技术加群:329081749

2.实现
2.1准备ArcGIS API for JavaScript
下载ArcGIS API for JavaScript。
1、请先配置IIS,方法请见《水经离线谷歌卫星地图加载服务中间件调用示例 For ArcGIS JS API》文档
2、启动bin下的RiverMapServer服务(配置config.ini文件),或者直接运行"测试.bat"(已经设置好命令行参数)
3、运行RiverMapServerSample For ArcGIS JS api\RiverMapServerSample For ArcGIS JS Api.html测试文件.

bin文件(水经离线地图服务中间件)
dat文件(测试数据)


API的下载地址:http://support.esrichina.com.cn/2011/0223/960.html。最新版本为3.9。
水经离线谷歌卫星地图加载服务中间件调用示例 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文件夹。放入新的文件夹中。例如”..\ 水经离线谷歌卫星地图加载服务中间件调用示例 For ArcGIS API for JavaScript\RiverMapServerSample For ArcGIS JS api”如下图。


2.2 ArcGIS API for JavaScript离线部署
2.2.1 IIS部署
打开信息服务管理器(IIS),添加网站,设置物理路径为..\ 水经离线谷歌卫星地图加载服务中间件调用示例 For ArcGIS API for JavaScript\RiverMapServerSample For ArcGIS JS api。在绑定一栏中分配IP地址。 

这里的IP地址为192.168.1.51,端口为默认端口80。

在功能视图中目录浏览一项启用视图浏览功能。 

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可以是机器名、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”并进行编辑,具体内容如下。
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
    <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?”】表示请求的是影像、地图、地形、标签、影像+标签、影像+地图、影像+地形或Dem。具体根据RiverMapServer的启动配置参数来确定。
例如:RiverMapServer.exe “1002” “Image_Label” “c:\test\tile” “c:\test\label”表示此应用输出合并底图(可以为影像、地图、地形任意一种)和标签两个地图瓦片。RiverMapServer.exe “1002” “Image” “c:\test\tile”  表示此应用输出地图底图(可以为影像、地图、地形任意一种) 
2.2启动RiverMapServer
启动RiverMapServer有两种方式都可以正常运行。
2.2.1直接运行RiverMapServer
通过config.ini文件配置参数,如下图。

PORT=1002  表示端口为1002;GetFileType=Image_Label表示此应用输出合并底图(可以为影像、地图、地形任意一种)和标签两个地图瓦片,后面必须跟两个瓦片工程文件目录;TileDir=..\dat\tile表示影像数据路径;LabelDir=..\dat\label 表示标签数据路径;DemDir=..\dat\dem 表示高程数据路径。


2.2.2 通过cmd.exe输入启动参数运行
新建一个bat文件,设置配置参数,如下图。


双击.bat启动服 务。运行效果和直接运行RiverMapServer效果一致。



3.运行结果
浏览器打开RiverMapServerSample For ArcGIS JS Api.html效果,如下图。

附录:
启动参数说明
1.瓦片文件类型:Image_Lable 表示此应用输出合并底图(可以为影像、地图、地形任意一种)和标签两个地图瓦片,后面必须跟两个瓦片工程文件目录
例子:RiverMapServer.exe “1002” “Image_Label” “c:\test\tile” “c:\test\label”

2.瓦片文件类型:Image 表示此应用输出地图底图(可以为影像、地图、地形任意一种) 
后面必须只需一个瓦片工程文件目录
例子:RiverMapServer.exe “1002” “Image” “c:\test\tile” 

3.瓦片文件类型:Label表示此应用输出地图标签 后面必须只需一个瓦片工程文件目录
例子:RiverMapServer.exe “1002” “Label” “c:\test\label” 

4.(待)瓦片文件类型:dem表示此应用输出地图位置高程 后面必须只需一个地图位置高程工程文件目录
例子:RiverMapServer.exe “1002” “dem” “c:\test\dem”
输入参数大小写不敏感,启动时需检查瓦片文件类型与工程文件是否匹配

请求接口说明
根据启动参数输出相应类型图片(影像、地图、地形、标签、影像+标签、影像+地图、影像+地形、Dem)
http://localhost:1002/getDefinedImage?x=1&y=1&z=1
输出地图底图(影像、地图、地形任意一种)
http://localhost:1002/getTileImage?x=1&y=1&z=1
输出标签
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

地图服务启动日志输出
1.服务启动时需要检测输入参数的数据是否正确:
@@INPUT:OK 输入参数正确
@@INPUT:PortError 端口错误
@@INPUT:TypeError 瓦片类型错误
@@INPUT:DataFileError:瓦片工程文件 瓦片工程文件错误

2 .服务正常启动与运行输出:
 @@RUN:WAITING 正常启动后和服务空闲时每分钟输出
@@RUN:Exception:异常消息(不能有回车换上等控制字符)服务启动异常后输出

服务正常启动后建立与瓦片工程文件数据源的连接
@@DSCOK:瓦片工程文件 连接正常
@@DSCFAIL:瓦片工程文件 连接失败
@@PORT:端口

3 .瓦片输出
@@TileOK:X=1&y=1&z=1 底图瓦片下载成功(已下载正常输出瓦片不输出日志)
@@LabelOK:X=1&y=1&z=1 标签瓦片下载成功(已下载正常输出瓦片不输出日志)
@@TileNoExists:X=1&y=1&z=1 底图瓦片不存在
@@LabelNoExists:X=1&y=1&z=1 标签瓦片不存在
@@TileOverRange:X=1&y=1&z=1 底图瓦片超出工程文件覆盖范围
@@LabelOverRange:X=1&y=1&z=1 标签瓦片超出工程文件覆盖范围

附件下载

相关资讯

  • 广西省谷歌卫星地图下载(百度网盘离线包下载)

    广西壮族自治区(壮文:Gvangjsih Bouxcuegh Swcigih),通称广西,简称“桂”,首府南宁,南临北部湾,是中国唯一沿海的自治区。广西地处中国华南地区,介于北纬2054′-2624′,东经10426′-11204,与广东、湖南、贵州、云南相邻,并与海南隔海相望,南濒北部湾、面向东南亚,…

    2018-2-12 11:45:11
  • 甘肃省谷歌地球高程DEM等高线下载(百度网盘下载)

    甘肃地处北纬3231′~4257′,东经9213′~10846′,地控黄河上游,沟通黄土高原、青藏高原、内蒙古高原,东通陕西,南瞰巴蜀、青海,西达新疆,北扼内蒙古、宁夏;西北出蒙古国,辐射中亚。

    2018-1-26 15:17:25
  • 甘肃省谷歌卫星地图下载(百度网盘离线包下载)

    一、概述甘肃,简称甘或陇,古称雍凉大地,位于黄河上游,省会为兰州。甘肃是取甘州(今张掖)与肃州(今酒泉)二地的首字而成,由于西夏曾置甘肃军司,元代设甘肃省,简称甘;又因省境大部分在陇山(六盘山)以西,而唐代曾在此设置过陇右道,故又简称为陇。甘肃历史跨越八千…

    2018-1-18 14:01:32
  • 免费领取地图下载流量与流量使用方法

    除了谷歌地球影像、高程、历史地图、无偏移谷歌地图、矢量地图(POI\路网\建筑轮廓)和天地图之外的其它地图都可以通过流量下载,如谷歌卫星地图(有偏移)、谷歌电子地图、谷歌地表地形图、百度卫星地图、百度电子地图、高德卫星地图、高德电子地图、搜狗卫星地图、搜狗电子地…

    2017-12-21 9:45:37

共有访客发表了评论 网友评论

验证码: 看不清楚?