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

2016/7/21 15:11:33 0人评论 983 次 分类:技术文章
1.说明
水经离线谷歌卫星地图加载服务中间件可利用离线地图的.dat文件在本地建立服务端,并生成影像、标签、高程等服务地址,可以在Openlayers中直接调用该服务地址,并将请求到的服务资源显示在前端,当请求的地图资源不存在可通过网络直接下载缺失的地图,并储存在.dat文件中。
百度网盘下载:http://pan.baidu.com/s/1qWve49m

2.实现
2.1 OpenLayers配置

在examples文件夹中新建名为OpenlayersMapSevice的html文件,在html文件中写入如下代码:
<!DOCTYPE html>
<html>
  <head>
    <title>test</title>
    <script src="../lib/OpenLayers.js"></script>
    <script type="text/javascript">
        var lon = 0;
        var lat = 20;
        var zoom = 1;
        var map, layer;
        function init(){
                        map = new OpenLayers.Map("map", {
                                maxExtent: new OpenLayers.Bounds(-180,-90,180,90),
                                numZoomLevels:18,

                             maxResolution:0.3515625,

                                units:'degree',

                                 projection: "EPSG:4326",
                                displayProjection: new OpenLayers.Projection("EPSG:4326")
                        });
            layer = new OpenLayers.Layer.TMS("Name", "../data/",{'type':'jpg', 'getURL':get_my_url });
                        map.addLayer(layer);
            map.setCenter(new OpenLayers.LonLat(lon, lat).transform(map.displayProjection, map.getProjectionObject()), zoom);
        }
                function get_my_url (bounds) {
                        var res = this.map.getResolution();
                        var x = Math.round ((bounds.left + 180) / (res * this.tileSize.w)) + 1;
                        var y = Math.round ((90 - bounds.top) / (res * this.tileSize.h)) + 1;
                        var z = this.map.getZoom() + 2;
                        var path = 'http://127.0.0.1:1002/getDefinedImage?x=' + x + '&y=' + y + '&z=' + z;
                        return  path;
                }
function tlen(len, mystr){
                            mystr = String(mystr);
                                var num = len - mystr.length;

                for (var i = 0; i <= num; i++)
                {
                    mystr =  "0" + mystr;
                }
                                return mystr;
                }
    </script>
 <style type="text/css">
.smallmap {
    width: 100%;
    height: 800px;
    border: 1px solid #ccc;
}
</style>
  </head>
  <body onload="init()">
  <center>
      <h1 id="title">Tiled Map Service Example</h1>



    <div id="map" class="smallmap"></div>


  </center>

  </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 表示高程数据路径。
RiverMapServer启动窗口,如下图。


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

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


3.运行结果
在浏览器中打开OpenlayersMapSevice.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 标签瓦片超出工程文件覆盖范围

分享到:

相关资讯

  • 如何使用水经注万能地图下载器制作百度个性化地图-道路篇

    1. 概述水经注软件除了可以轻松下载无水印Google Earth卫星影像、有明确拍摄日期的历史影像、地方高清天地图、百度高德大字体打印地图,按1万/5千等国家标准图幅下载,对百度坐标与火星坐标进行纠偏;下载陆地及海洋高程、STRM高程、提取10米等高线等深线、CASS高程点之外,还…

    2019/12/23 16:31:58
  • 如何自定义分块导出大图

    当地图范围太大且级别太高时,导出拼接为单张大图后普通看图软件无法打开查看,即便是像ArcGIS或GlobalMapper等专业软件打开也非常困难。为了解决这一问题,本软提供了将大图自定义分块导出的功能。这里我们以成都市行政区划为例,说明如何自定分块导出大图。在视图中点击“下…

    2019/10/24 16:50:47
  • 如何在微图APP内查看三维地球

    说起三维地球,有了解的朋友都会第一时间想起 Google Earth,Google Earth 为用户提供了非常详细和绚丽的三维地球场景,但是Google Earth在国内能正常访问的是PC版,手机版无法查看。为了解决这一问题,水经注微图APP在上线不久之后便推出了三维地球的功能,方便用户查看三维地…

    2019/4/8 10:00:18
  • 青海省谷歌高清卫星地图下载(百度网盘离线包下载)

    一、概述  青海,简称青,省会西宁,位于中国西部,雄踞世界屋脊青藏高原的东北部,是中国青藏高原上的重要省份之一。青海省东西长约1200公里,南北宽800公里,面积为72.10万平方公里。境内山脉高耸,地形多样,河流纵横,湖泊棋布。昆仑山横贯中部,唐古拉山峙立于南,祁连…

    2018/8/23 16:18:41

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