基于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. mysql查询语句对于为null和为空字符串给出特定值处理

    SELECT if(IFNULL(filedName,"指定字符串")="","指定字符串",filedName) '重命名的字符名' FR ...

  2. iOS ARC下命名规则

    当我在ARC模式下写以下代码的时候,编译器报错 Semantic Issue: Property's synthesized getter follows Cocoa naming conventio ...

  3. (转)谈谈Android中的Rect类——奇葩的思维

    最近在工作中遇到了一些问题,总结下来就是Android中Rect这个类造成的.不得不说,不知道Android SDK的开发人员是怎么想的, 这个类设计的太奇葩了.首先介绍一下Rect类:Rect类主要 ...

  4. [VS2008] Debug版本程序发布后 由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题

    转自VC错误:http://www.vcerror.com/?p=59 问题描述: [VS2008] 版本程序发布后,运行程序弹出错误框: 由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序 ...

  5. 初探JVM总结

    什么是JVM Java Virtual Machine(Java虚拟机)的缩写 .本质上是一个程序. java语言运行的平台,是ava跨平台的根本. java默认的三种类加载器 BootStrap C ...

  6. <jquery>滚动例子

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. P1305 新二叉树 /// 二叉树的先序遍历

    题目大意: https://www.luogu.org/problemnew/show/P1305 由题目可知,输入首位为 子树的根 其后为其左右儿子 则除各行首位后的位置中 没有出现的那个字母肯定为 ...

  8. Activiti常用类介绍

    为什么要使用工作流? 传统的设计在流程发生变化时的弊端: 1. 流程相关的属性和业务对象的属性,都放到了业务对象中. 2. 流程相关的逻辑和业务逻辑,都放到的业务逻辑中 常用类 ProcessEngi ...

  9. angular 级联选择

    HTML: <link rel="stylesheet" href="views/tree/checkbox.css"/> <div clas ...

  10. CDH断电后 hbase出现spilt块不完整问题

    从错误看起来是regionspilt时候断电了,导致hbase master启动不起来,因为是测试环境只能删除这些region了,掉一部分数据 删除hbase下spilt块,删除zK里面的habse ...