基于Skyline与ArcGIS Server的二三维联动功能实现
基于Skyline与ArcGIS Server的二三维联动功能实现主要利用WEB技术、ArcGIS for JavaScript、Skyline 二次开发以及ArcGIS 10.1 桌面工具。 利用ArcGIS桌面工具制作地图文档、发布地图服务并进行地图切片,这样就得到了实验用的二维电子地图数据。地图文档和切片的质量直接影响着二三维联动功能实现的效果。功能实现过程中,主要有Skyline三维平台的鼠标滚轮、鼠标抬起事件以及二维电子地图的鼠标拖拽、鼠标按下和范围改变激发的事件。
在开启二三维联动时,调用功能入口函数,开启三维场景的2D模式,设定正北方向,完成二维电子地图初始化,并绑定相应的事件。通过设定一个变量来判断是二维联动三维还是三维联动二维,从而运行相应的核心方法。二维联动三维主要是通过鼠标按下、拖拽事件对控制变量赋值,从而在鼠标拖拽、滚轮缩放动作后激发的地图范围改变时运行核心方法。在核心方法中完成实时获取电子地图的当前中心点位置,并依此设定三维场景摄像头的位置。这个过程需要实现平面坐标到球面坐标的转换,也就是墨卡托投影下的坐标转换为经纬度坐标。经过多次试验,摄像头的高度设为当前二维地图层级比例的六分之一比较合适。三维联动二维是主要是通过在三维场景的滚轮事件、鼠标左键抬起事件中给控制变量赋值,并同时调用一个核心方法。核心方法完成将电子地图的中心点坐标设为当前浏览的三维场景的中心点坐标,并计算三维场景的显示比例来确定电子地图的显示层级。三维场景的显示比例是通过当前三维场景在3D窗口的宽度与其所展现的实际的三维地球上的距离的比值确定。这样就成功实现了二三维的互动。
最后,在关闭联动功能时,需要关闭电子地图,同事开启三维场景的3D模式并取消鼠标滚轮和鼠标左键抬起事件。
试验结果如下:
图(一)

图(二)

基于Skyline与ArcGIS Server的二三维联动功能实现的更多相关文章
- Arcgis API for JS——普通分屏联动及二三维联动
对于二三维联动,有多种方法进行实现,当时旧项目使用了当时能掌握的一种写法,在技能提升了这么多后当然要对这些写法做一个总结. 一.通过监听View上的鼠标事件变化来进行分屏联动(同一坐标系) (同理可以 ...
- ArcGlobe三维开发之十九——GlobeControl与MapControl的二三维联动
实现思路:2D->3D,将当前MapControl的可视范围设置为GlobeControl中Extent属性的值:3D--->2D.获取当前GlobeControl的target和obse ...
- 从日志文件解决ArcGIS Server性能低下问题的步骤(1)
日志级别和结构 http://www.cnblogs.com/fortoday/archive/2011/03/30/2000348.html ArcGIS Server日志文件分为几个记录级别: 无 ...
- skyline(TG,arcgis server)BS系统部署
skyline的BS系统部署,正常情况下应该是TG来统一管理,SFS对矢量数据服务进行管理.但我们一直是试用许可安装的TG,发现SFS要么安装不成功,要么就是不稳定.对于Fly工程可以通过Publis ...
- 智慧港口——基于二三维一体化GIS的港口可视化监管平台
“智慧港口”是以现代化基础设施设备为基础,以云计算.大数据.物联网.移动互联网.智能控制等新一代信息技术与港口运输业务深度融合为核心,以港口运输组织服务创新为动力,以完善的体制机制.法律法规.标准规范 ...
- ArcGIS Server 10.2 实战(二)动态修改要素数据的地理处理服务
上一篇<ArcGIS Server 10.2 实战(一)Asp.net MVC与JSON数据妙用实现动态生成要素图层>介绍了如何用JSON转要素的地理处理服务,实现了动态创建点要素并加载到 ...
- ArcGIS Server 基于Token安全验证
写在前面:只使用token并不能起到安全验证的作用,ArcGIS Server文件夹的权限是开放的,我们不需要登录Server平台即可访问服务,所以我们应该将Token验证和文件夹的安全性结合起来使用 ...
- ArcGIS API for JavaScript(2)-ArcGIS Server发布要素图层服务
1.前言 上一篇该系列的文章我们主要讲了一下基础Web地图搭建,这篇我们主要讲一下ArcGIS Server发布服务,并且如何调用服务.将自己的数据加载到Web地图当中来,实现Web端浏览数据. 2. ...
- Skyline 7 版本TerraExplorer Pro二次开发快速入门
年底了,给大家整理了一下Skyline 7版本的二次开发学习初级入门教程,献给那些喜欢学习的年轻朋友. 我这整理的是Web控件版本的开发示例,里面页面代码保存成html,都可以直接运行的. 测试使用的 ...
随机推荐
- spark启动后出现“JAVA_HOME not set” 异常和"org.apache.hadoop.security.AccessControlException"异常
/home/bigdata/hadoop/spark-2.1.1-bin-hadoop2.7/sbin/start-all.sh 启动后执行jps命令,主节点上有Master进程,其他子节点上有Wor ...
- (JS)应为","
在写cshtml的时候,vs提示:(JS)应为"," 功能无法实现,一般是因为 标点切成全角了,但是我是应为把‘’打成了“” 以下错误示范: $("ol").a ...
- Laravel5.4中自定义404等错误页面
1.在resources/views/下简历文件夹error,在error文件中建立"404.blade.php文件". <!DOCTYPE html PUBLIC &quo ...
- hive 总结四(优化)
本文参考:黑泽君相关博客 本文是我总结日常工作中遇到的坑,结合黑泽君相关博客,选取.补充了部分内容. 表的优化 小表join大表.大表join小表 将key相对分散,并且数据量小的表放在join的左边 ...
- 关于type return to continue,or q <return> to quit
由于GDB要打印的信息被分页了 所以需要设置不分页显示 set pagination off
- Python sort()函数和sorted()
1.原址排序 1)列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. truple无组报错: 2.副本排序 1)[:]分片方法 注意: ...
- HTML中使用js的三种方式及优缺点介绍
1.内部js: 在直接在页面的<script></script>标签内写js代码 优点:相对于使用行内js,内部js代码较为集中,与页面结构的实现代码耦合度较低,比较便于维护 ...
- Nodejs之路(三)—— Nodejs之Express框架
Express 原生的 http 在某些方面表现不足以应对我们的开发需求,所以我们需要使用框架来加快我们的开发效率.框架的目的就是提高效率,让我们的代码更高度统一 在Node 中,有很多 Web 开发 ...
- ASP.NET中的DEC加密解密过程
本文章分享自 青青果树园的博客,地址是:http://www.cnblogs.com/qqingmu/archive/2008/01/10/1034168.html 我们做网页时经常会遇到URL传输( ...
- opencv编译:opencv 3.4.1 编译 contrib模块,增加人脸识别
start cmake-gui select the opencv source code folder and the folder where binaries will be built (th ...