基于Skyline与ArcGIS Server的二三维联动功能实现主要利用WEB技术、ArcGIS for JavaScript、Skyline 二次开发以及ArcGIS 10.1 桌面工具。 利用ArcGIS桌面工具制作地图文档、发布地图服务并进行地图切片,这样就得到了实验用的二维电子地图数据。地图文档和切片的质量直接影响着二三维联动功能实现的效果。功能实现过程中,主要有Skyline三维平台的鼠标滚轮、鼠标抬起事件以及二维电子地图的鼠标拖拽、鼠标按下和范围改变激发的事件。

在开启二三维联动时,调用功能入口函数,开启三维场景的2D模式,设定正北方向,完成二维电子地图初始化,并绑定相应的事件。通过设定一个变量来判断是二维联动三维还是三维联动二维,从而运行相应的核心方法。二维联动三维主要是通过鼠标按下、拖拽事件对控制变量赋值,从而在鼠标拖拽、滚轮缩放动作后激发的地图范围改变时运行核心方法。在核心方法中完成实时获取电子地图的当前中心点位置,并依此设定三维场景摄像头的位置。这个过程需要实现平面坐标到球面坐标的转换,也就是墨卡托投影下的坐标转换为经纬度坐标。经过多次试验,摄像头的高度设为当前二维地图层级比例的六分之一比较合适。三维联动二维是主要是通过在三维场景的滚轮事件、鼠标左键抬起事件中给控制变量赋值,并同时调用一个核心方法。核心方法完成将电子地图的中心点坐标设为当前浏览的三维场景的中心点坐标,并计算三维场景的显示比例来确定电子地图的显示层级。三维场景的显示比例是通过当前三维场景在3D窗口的宽度与其所展现的实际的三维地球上的距离的比值确定。这样就成功实现了二三维的互动。

最后,在关闭联动功能时,需要关闭电子地图,同事开启三维场景的3D模式并取消鼠标滚轮和鼠标左键抬起事件。

试验结果如下:

图(一)

图(二)

基于Skyline与ArcGIS Server的二三维联动功能实现的更多相关文章

  1. Arcgis API for JS——普通分屏联动及二三维联动

    对于二三维联动,有多种方法进行实现,当时旧项目使用了当时能掌握的一种写法,在技能提升了这么多后当然要对这些写法做一个总结. 一.通过监听View上的鼠标事件变化来进行分屏联动(同一坐标系) (同理可以 ...

  2. ArcGlobe三维开发之十九——GlobeControl与MapControl的二三维联动

    实现思路:2D->3D,将当前MapControl的可视范围设置为GlobeControl中Extent属性的值:3D--->2D.获取当前GlobeControl的target和obse ...

  3. 从日志文件解决ArcGIS Server性能低下问题的步骤(1)

    日志级别和结构 http://www.cnblogs.com/fortoday/archive/2011/03/30/2000348.html ArcGIS Server日志文件分为几个记录级别: 无 ...

  4. skyline(TG,arcgis server)BS系统部署

    skyline的BS系统部署,正常情况下应该是TG来统一管理,SFS对矢量数据服务进行管理.但我们一直是试用许可安装的TG,发现SFS要么安装不成功,要么就是不稳定.对于Fly工程可以通过Publis ...

  5. 智慧港口——基于二三维一体化GIS的港口可视化监管平台

    “智慧港口”是以现代化基础设施设备为基础,以云计算.大数据.物联网.移动互联网.智能控制等新一代信息技术与港口运输业务深度融合为核心,以港口运输组织服务创新为动力,以完善的体制机制.法律法规.标准规范 ...

  6. ArcGIS Server 10.2 实战(二)动态修改要素数据的地理处理服务

    上一篇<ArcGIS Server 10.2 实战(一)Asp.net MVC与JSON数据妙用实现动态生成要素图层>介绍了如何用JSON转要素的地理处理服务,实现了动态创建点要素并加载到 ...

  7. ArcGIS Server 基于Token安全验证

    写在前面:只使用token并不能起到安全验证的作用,ArcGIS Server文件夹的权限是开放的,我们不需要登录Server平台即可访问服务,所以我们应该将Token验证和文件夹的安全性结合起来使用 ...

  8. ArcGIS API for JavaScript(2)-ArcGIS Server发布要素图层服务

    1.前言 上一篇该系列的文章我们主要讲了一下基础Web地图搭建,这篇我们主要讲一下ArcGIS Server发布服务,并且如何调用服务.将自己的数据加载到Web地图当中来,实现Web端浏览数据. 2. ...

  9. Skyline 7 版本TerraExplorer Pro二次开发快速入门

    年底了,给大家整理了一下Skyline 7版本的二次开发学习初级入门教程,献给那些喜欢学习的年轻朋友. 我这整理的是Web控件版本的开发示例,里面页面代码保存成html,都可以直接运行的. 测试使用的 ...

随机推荐

  1. CF377D Developing Game

    题目链接: luogu 题目分析: 把每个人当成一个三元组\([l_i, r_i, v_i]\) 考虑每个人对哪个能力区间\([L, R]\)有贡献 应该是左端点在\([l_i, v_i]\),右端点 ...

  2. Delphi编写后台监控软件

    Delphi编写后台监控软件         文章来源:Delphi程序员之家     后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任 ...

  3. day 51 阿里iconfont的使用

    阿里iconfont的使用   1. 找到阿里巴巴图标库 2.找到图标 3.搜索你想要的图标 4.将图标添加到购物车 5.点击右上角的购物车按钮,我这里添加了两个. 6.提示你登陆,不需要花钱,找其中 ...

  4. Java程序员必备的10个大数据框架!

    作者:java妞妞 blog.csdn.net/javaniuniu/article/details/71250316 当今IT开发人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语 ...

  5. java-day07

    API 应用程序编程接口 Scanner类 将键盘输入的数据到程序中 1.导包 2.创建 Scanner 对象名 = new Scanner(); 3.使用 int num = 对象名.nextInt ...

  6. 处理提交html危险代码的异常方法

    当向asp.net mvc提交有html标签的值时,服务器会报检测到潜在危险的Request.Form值,处理方法如下: 1:在接收处理的Action方法上面加上 [VaildateInput(fal ...

  7. selenium基础(获取验证信息-断言)

    获取验证信息 实际结果与预期结果进行比较称之为断言 通过获取title.URL.text等信息进行断言 text方法用于获取标签对之间的文本信息 from selenium import webdri ...

  8. wpf 获取image控件的图片并保存

    XMAL代码如下: <Image Name="ImageToSave" Source="Images/pic_bg.png" Grid.RowSpan=& ...

  9. centos6 php5.4 升級到php 5.6

    因Centos6中的PHP版本有点底,需要升级PHP版本 [vagrant@localhost ~]$ php -v PHP 5.4.45 (cli) (built: Sep 30 2015 15:0 ...

  10. eclipse变量名自动补全

    对于编程人员来说,要记住大量的类名或类方法的名字,着实不是一件容易的事情.如果要IDE能够自动补全代码,那将为我们编程人员带来很大帮助. eclipse代码里面的代码提示功能默认是关闭的,只有输入“. ...