用Balder开源3D引擎实现Silverlight客户端的3D 地图效果
来源:互联网 发布:淘宝女装数据包 编辑:程序博客网 时间:2024/06/06 03:11
写作本文的起因:
前两天偶然自己想了解一下Web端的三维GIS开发,但是发现实现的过程非常麻烦,ArcGIS API For Flex和ArcGIS API ForSilverlight中都没有提供3D的支持。
随后在网上查了查资料,发现了这个例子:
http://maps.esri.com/sldemos/terrainmap/default.html
该示例实现了地图的3D效果,且基于Silverlight。于是便开始分析该实例的源码。下面的内容也算是自己在学习以上这个例子时的一点心得。在此和大家分享。
开始前的几个问题:
1.高程数据怎样获得?
2.自己有了DEM高程数据,如何利用自己的DEM高程数据来渲染3D图片?
3.高程数据如何对应到2D地图上相应的位置?
4.利用高程数据实现地图3D渲染的具体实现过程是怎样的呢?
以上是本文涉及的是个小问题,也是笔者在学习3D Map之前一直困扰的问题,所以这也是本文将要解决的几个问题。
实现过程的基本总结:
通过对源码的分析,以及对Balder的学习,大致总结出了该示例实现的基本过程。
1.通过GIS服务提供高程数据,如果没有高程数据那么3D就无从谈起了。
2.获得当前显示的2D地图的图片,构建高程数据网格
3.调用高程数据的GIS服务,获得高程网格对应的高程数据。
5.将3D模型的材质设置为2D下地图的图片。
4.结合开源的3D引擎 Balder,根据高程数据,开始渲染,最终得到3D效果。
下面的一幅图给出上面的实现过程描述:
关于本文的说明:
1.本文的重点将放在3D视图的具体过程,因为设计到的内容较多,所以不会对每一个细节都作具体的介绍。
2.关于Balder 3D引擎的内容不会在本文中详解,如果您没有3D的开发基础(即从来没有入手过3D),在此建议先了解Balder的基本使用。
强烈建议看看该博主的Balder的教程:
http://www.cnblogs.com/nowpaper/tag/silverlight%E6%8A%80%E6%9C%AF/
3.本文基于之前的给出的3D Map示例,所以本文提取了其中一些关键的代码,希望原作者不要介意,本文没有用于任何的商业活动,纯粹用于技术交流。
4.作者也是3D Map的新手,欢迎一起交流,不喜勿喷。
首先我们来看一下如何获得DEM高程数据,以及如何在ArcGIS Server发布自己的高程数据。
1.提供高程数据的实现。
因为利用现有的ArcGIS Server服务并不能实现提供高程数据的功能,因此这里需要利用到ArcGI的SOE扩展ArcGIS Server 服务,因此这要求我们自己辨析代码来扩展现有的GIS功能。不过这里有一个好消息就是在ESRI的资源中心已经有人完成了这部分工作,并提供了相应的下载:
http://resources.arcgis.com/zh-cn/gallery/file/arcobjects-net-api/details?entryID=87BEC705-1422-2418-34B5-308930DE323A
在该文档中有详细的使用说明,并提供了Silverlight,Flex等Web应用程序获取高程数据的例子。
当完成扩展之后,我们会在GIS服务能力中多出了一项:Get Elevations,即表示提供高程数据的服务。
2.发布高程数据
完成ArcGIS Server的扩展功能之后,需要发布我们自己的高程数据。高程数据可以上这里下载:
http://datamirror.csdb.cn/index.jsp
这里提供了SRTM90米分辨率原始高程数据和30米分辨率数字高程数据。
获得高程数据之后,在ArcMap中新建一个MXD文档,然后将高程的栅格数据添加到MXD文档中。这里还可以添加其他数据,但是高程数据只能从栅格数据中获得。
保存MXD文档,然后发布到ArcGIS Server.然后在服务能力中勾选Get Elevations.这样我们便完成了提供高程数据服务的发布。
打开我们刚才发布的MXD文档服务(Map Service)的地址,在最下面就会发现多出了一项,即支持的扩展功能:
完成获取高程数据服务的发布之后,接下来就是在Web端如何获取高程数据了。具体过程将在下篇给出。欢迎大家继续关注。
本文来自 Mr|Right 的博客,原文地址:http://www.cnblogs.com/potential/archive/2012/11/18/2773013.html
- 用Balder开源3D引擎实现Silverlight客户端的3D 地图效果(一)
- 用Balder开源3D引擎实现Silverlight客户端的3D 地图效果
- Balder 3D Engine for Silverlight
- 我的3D引擎----云效果
- Silverlight实现的3D黑白棋
- Silverlight实现的3D黑白棋
- 开源3d引擎
- 使用Silverlight构建一个简单的3D引擎 【译改 Building a Simple 3D Engine with Silverlight】
- lufylegend引擎 实现2D RPG地图的切换
- js实现的3D效果
- VC实现按钮的3D效果
- 伪3D效果的实现
- 3D标签云效果的实现
- 仿3D效果的实现
- 用射线实现3D点击效果
- XP实现3D效果
- 3d tableView 效果实现
- 3d照片效果实现
- SSMA(Sql Server迁移助手)oracle to sqlserver2008 R2
- 展望未来,总结过去10年的程序员生涯
- Linux 能PING IP 但不能PING 主机域名的解决方法
- TimeStamp类
- 温故知新
- 用Balder开源3D引擎实现Silverlight客户端的3D 地图效果
- 结构体申请内存错误 传递了一个指针的拷贝
- FireFox同步书签
- SSMA Oracle to SQL Server data migration step fails with no explanation
- C++的指针的简单使用
- 如何正确删除ORACLE归档日志文件
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
- 比特币为什么需要建立在大量运算之上
- android模拟器无法启动的解决方法