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

2016-7-21 15:12:19 0人评论 494次浏览 分类:技术文章

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

2.实现
2.1创建Flex示例
新建Flex项目“RiverMapServerSample For Flex”,并添加“agslib”,如下图。

添加一个web墨卡托投影的瓦片服务图层“RiverMapLayer”,部分源码如下图。
package com.esri.ags.flex.sample
{
import com.esri.ags.SpatialReference;
import com.esri.ags.geometry.Extent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.layers.TiledMapServiceLayer;
import com.esri.ags.layers.supportClasses.LOD;
import com.esri.ags.layers.supportClasses.TileInfo;
import flash.net.URLRequest;  
//扩展水经地图
public class RiverMapLayer extends TiledMapServiceLayer
{
private var _tileInfo:TileInfo = new TileInfo();  
private var _baseURL:String="";  
public function RiverMapLayer()
{
super();
buildTileInfo();  
setLoaded(true);  
}
public function set baseURL(baseurl:String):void
{
_baseURL = baseurl;
}
override public function get fullExtent():Extent  
{  
return new Extent(-18935696.6943223, -20037508.342787,18935696.6943223, 20037508.342787, new SpatialReference(102113));  
}
override public function get initialExtent():Extent
{  
return new Extent(-18935696.6943223, -20037508.342787, 18935696.6943223, 20037508.342787, new SpatialReference(102113)); 
}  
override public function get spatialReference():SpatialReference  
{  
return new SpatialReference(102113);
}  
override public function get tileInfo():TileInfo  
{  
return _tileInfo;  
}  

//获取地图  
override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest  
{  
var a:String= (col+1).toString(10); 
var b:String=(row+1).toString(10); 
var c:String= (level+1).toString(10);
var url:String=_baseURL +  "x=" + a + "&" +  "y=" + b + "&" + "z=" + c;
return new URLRequest(url);   
}  
private function buildTileInfo():void  
{  
_tileInfo.height=256;  
_tileInfo.width=256;  

_tileInfo.origin=new MapPoint(-18935696.6943223, 20037508.342787);  
_tileInfo.spatialReference=new SpatialReference(102113);  
_tileInfo.lods = [  
new LOD(0, 156543.033928, 591657527.591555), 
new LOD(1, 78271.5169639999, 295828763.795777),
new LOD(2, 39135.7584820001, 147914381.897889),  
new LOD(3, 19567.8792409999, 73957190.948944),  
new LOD(4, 9783.93962049996, 36978595.474472),  
new LOD(5, 4891.96981024998, 18489297.737236),  
new LOD(6, 2445.98490512499, 9244648.868618),  
new LOD(7, 1222.99245256249, 4622324.434309),  
new LOD(8, 611.49622628138, 2311162.217155),  
new LOD(9, 305.748113140558, 1155581.108577),  
new LOD(10, 152.874056570411, 577790.554289),  
new LOD(11, 76.4370282850732, 288895.277144),  
new LOD(12, 38.2185141425366, 144447.638572),  
new LOD(13, 19.1092570712683, 72223.819286),  
new LOD(14, 9.55462853563415, 36111.909643),  
new LOD(15, 4.77731426794937, 18055.954822),  
new LOD(16, 2.38865713397468, 9027.977411),  
new LOD(17, 1.19432856685505, 4513.988705),  
new LOD(18, 0.597164283559817, 2256.994353),  
new LOD(19, 0.298582141647617, 1128.497176)
];
}  
}
}
在主界面“RiverMapServerSampleForFlex.mxml”中添加esri的map标签,并引用刚刚新建的“RiverMapLayer”,如下图所示。

其中【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”  表示此应用输出地图底图(可以为影像、地图、地形任意一种) 
2.2启动RiverMapServer
启动RiverMapServer有两种方式都可以正常运行。
2.1.2 直接运行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 Flex效果,如下图。


附录:
启动参数说明
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 标签瓦片超出工程文件覆盖范围

附件下载

相关资讯

  • 广东省谷歌地球高程DEM等高线下载(百度网盘下载)

    一、概述广东,名由岭南东道、广南东路演变而来,简称“粤”,省会广州,是中国大陆南端沿海的一个省份。位于南岭以南,南海之滨,与香港、澳门、广西、湖南、江西及广东接壤,与海南隔海相望。广东自秦朝开始就有中原移民不断迁入,逐渐形成广府、客家、闽南三大民系,并形成…

    2018-4-19 15:01:22
  • 河北省谷歌高清卫星地图下载(百度网盘离线包下载)

    一、概述河北省,简称“冀”,因位于黄河以北而得名。地处华北平原,东临渤海、内环京津,西为太行山,北为燕山,燕山以北为张北高原。河北地处中原地区,文化博大精深,自古有“燕赵多有慷慨悲歌之士”之称,是英雄辈出的地方。河北省下辖石家庄、唐山、秦皇岛、邯郸、邢台、…

    2018-4-18 15:04:57
  • 河南省谷歌高清卫星地图下载(百度网盘离线包下载)

    一、概述河南,古称中原、中州、豫州,简称“豫”,因历史上大部分位于黄河以南,故名河南。河南位于中国中东部、黄河中下游。河南是中华民族与华夏文明的发源地。中国四大发明中的指南针、造纸、火药三大技术均发明于河南。从夏朝至宋朝,河南一直是中国政治、经济、文化和交…

    2018-4-17 15:05:07
  • 如何下载矢量电子地图(OpenStreetMap)

    万能地图下载器除了有强大的谷歌卫星影像下载、历史影像下载、高程等高线下载、瓦片导出和各种坐标系的投影转换等专业功能之外,还可以下载矢量电子地图数据功能。矢量电子地图数据来源主要包括两种,一种是水经注自有数据,一种是OpenStreetMap数据,这里主要以下载OpenStree…

    2018-3-28 11:21:57

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

验证码: 看不清楚?