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

2016-7-21 15:09:30 0人评论 451次浏览 分类:技术文章

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

百度网盘下载:http://pan.baidu.com/s/1jGfHGv8
2.实现

2.1 WPF项目建立
新建WPF项目“RiverMapServerSample For WPF”,如下图。


在引用中添加arcgis的com组件“ESRI.ArcGIS.Client”,如下图。

新建一个离线图层类“OfflineGoogleMapLayer”,部分源码如下。
class OfflineGoogleMapLayer : TiledMapServiceLayer
    {
        private const double halfCircle = 20037508.342787;
        public override void Initialize()
        {
            TileInfo = new TileInfo();
            TileInfo.Width = 256;
            TileInfo.Height = 256;
            TileInfo.Origin = new MapPoint(-halfCircle, halfCircle);
            TileInfo.SpatialReference = new SpatialReference(102113);//102100
            TileInfo.Lods = new Lod[19];
            double resolution = halfCircle * 2 / 256;
            base.MaximumResolution = resolution;
            for (int i = 0; i < TileInfo.Lods.Count(); i++)
            {
                TileInfo.Lods[i] = new Lod();
                TileInfo.Lods[i].Resolution = resolution;
                resolution /= 2.0;
            }
            base.MinimumResolution = resolution * 2.0;
            base.SpatialReference = new SpatialReference(102113);
            base.FullExtent = new Envelope(-halfCircle, -halfCircle, halfCircle, halfCircle);
            base.Initialize();
        }
        public override string GetTileUrl(int level, int row, int col)
        {
            string baseUrl = "http://127.0.0.1:1002/getDefinedImage?";
            int x = col + 1;
            int y = row + 1;
            int l = level + 1;
            string url = baseUrl + "x=" + x + "&y=" + y + "&z=" + l;
            return url;
        }
其中【baseURL=”http://localhost:1002/getDefinedImage?”】表示请求的是影像、地图、地形、标签、影像+标签、影像+地图、影像+地形或Dem。具体根据RiverMapServer的启动配置参数来确定。
例如:RiverMapServer.exe “1002” “Image_Label” “c:\test\tile” “c:\test\label”表示此应用输出合并底图(可以为影像、地图、地形任意一种)和标签两个地图瓦片。RiverMapServer.exe “1002” “Image” “c:\test\tile”  表示此应用输出地图底图(可以为影像、地图、地形任意一种) 

在主界面“MainWindow.xaml.cs”中添加刚刚新建的离线图层“OfflineGoogleMapLayer”,如下图所示。

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.运行结果
运行RiverMapServerSample For WPF效果,如下图。

附录:
启动参数说明
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

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

验证码: 看不清楚?