GIS中3D渲染技术 gis地形渲染
3dgis的3DGIS应用领域
贝尔信的3DGIS是一个解决空间数据的存储、表现、查看、管理、量算和分析等一系列问题、具有良好的可扩展性及可伸缩性的三维地理信息系统,被广泛应用于智慧城市建设、环境评估、灾害预测、国土管理、城市规划、邮电通讯、交通运输、军事公安、水利电力、公共设施管理等领域。 3DGIS在城市规划中主要实现七大功能,分别是:快速真实再现城市三维景观、三维场景实时操作、属性信息快速查询、键盘操作控制漫游、任意给定线路的三维飞行、图形及动画输出、数据的更新与维护。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于做网站、成都网站建设、阿瓦提网络推广、小程序制作、阿瓦提网络营销、阿瓦提企业策划、阿瓦提品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供阿瓦提建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
1)快速真实再现城市三维景观
根据现有的规划图、遥感影像及相关属性数据,并对现状进行实际考察,使用软件大量生成及用3DMAX个别建模的方式,现状与规划相结合,快速真实再现城市三维场景。
2)三维场景实时操作
可利用3DGIS平台方便的对三维场景进行各种操作:包括场景放大、缩小、移动、旋转,可直接使用工具实时操作,也可通过设置参数来实现。
3)属性信息快速查询
利用3DGS自身所带的数据库系统—InterBase可方便快捷地管理各种地物的相关信息,并能按各种给定条件进行查询检索,从而方便快捷地获取用户感兴趣的各种信息。
4)键盘操作控制漫游
可根据自己的需要,通过设定键沿任意路线、任意方向前进、后退,并可实时改变视角、视野、视距、飞行角度和高度等。
5)任意给定线路的三维飞行
可以根据需要,预先设计好线路,并设定好相关参数(包括视角、视野、视距、飞行高度、速度等),飞行时观察者的视线就会沿着设定好的线路走,在飞行过程中,还可实时改变各种参数。
6)图形及动画输出
图形输出:可将实时渲染场景直接保存为位图(可通过参数设定大小范围)。
动画输出:可将路径飞行的全过程录制成动画,从而可脱离3DGS平台放映。
7)数据的更新与维护
在3DGS平台上,可方便的实现数据的更新与维护:增加、删除地物,改变地物的形状、大小等。 3DGIS移动物流物资管理平台是为物流企业开发的定制化物流物资管理软件,旨在帮助物流企业进行物资的有序管理。
(1)系统简介
该系统有三个特色功能。
1. 可以方便配送车辆的行驶记录(支持2D和3D的地图展示)
2. 支持智能手机终端接入
3. 仓库管理界面完全使用3D建模。
(2)系统功能
1)资源管理:包括运输公司管理、仓库管理、保险管理、协议管理、协议费率管理、服务价格管理、其他资源管理及相关的统计查询功能。
2)客户管理:客户基本信息管理、客户关怀信息管理、客户信用度管理等。
3)合同管理:合同基本信息、货物信息、费用、参与方、费率、服务、保险等管理。是合同物流业务的基础,为指令管理、计划管理及其它相关子系统提供统一的共享信息。
4)运输管理:各种交接单的录入、查询以及车辆动态跟踪。及时的收集每次交接的实时数字,使信息更加流畅。更好的管理整个运输过程。支持手机终 端显示,和GIS完美结合,可以使用2D和3D地图。
5)仓储管理:入库信息管理、出库信息管理、盘点管理、库存查询等。可以记录所有的出、入库信息以及实时的了解货物的库存。以3D建模,支持互动操作。
6)结算管理:应收管理、应付管理、保险费用管理、其他费用管理、杂费管理等。
7)统计分析系统:可根据用户的需求定制各种不同的统计分析效果图,主要有饼图、柱图、折线图,直方图等。
8)综合查询系统:提供各类综合信息查询服务,通过数据分析为决策者提供相关的分析数据。基础数据与权限管理:基础代码的录入、修改、查询等。机构设置、权限管理、操作日志管理、数据库备份等。 森林防火应急指挥系统解决方案是基于计算机技术、遥感技术、全球定位技术、地理信息技术等多门前沿学科,以森林资源专题信息数据库、森林防火信息数据库等为森林防火的信息资源为依托,把最先进的遥感技术(RS)、地理信息系统(GIS)和全球定位系统(GPS)有机地结合在一起,以GIS 数据采集、数据分析、救火辅助决策、指挥调度等主要功能为一体的森林防火管理和指挥决策的应急指挥信息系统。
森林防火指挥系统的主要任务是在实时、可靠的数据的基础上集调度指挥、信息管理职能为一体,实现高效的火灾救援。一般具有如下扑救指挥功能:
火灾信息获取。在3DGIS可视化平台上,通过信息传输来实时提供火灾的基本情况,监测火灾的进程和态势,以帮助指挥者了解火灾位置和发生背景等具体信息;
圈定成灾范围。根据火灾周围的植被、地势及风向等要素模拟林火蔓延,预测火灾发展趋势,从而确定火险程度,及时制定相应的应急措施;
制定救火方案。根据成灾范围,查看离火灾最近的救援队伍和资源,并为各救援队伍提供到达灾区的最佳路径,以最优救火方案减轻火灾造成的损失。
三维GIS技术是什么?
随着三维GIS技术的应用愈加普及,在智慧城市经济发展,市场监管,社会治理,公共服务,环境保护等行业领域利用三维可视化技术GIS+BIM模型优越的可视化3D空间展现能力,以三维模型为载体,将各种零碎、分散、割裂的信息数据,以及建筑运维阶段所需的各种机电设备、物业管理、安全管理参数进行一体化整合的同时,进一步引入建筑的日常设备运维管理功能,形成基于BIM的建筑空间与设备运维、安全监控、品质管理的能力。
广州千越飞鸿科技有限公司 结合实际运维管理的需求,基于GIS+BIM大数据的智能化建筑运维管理系统应运而生。智能化建筑管理平台借助于3DGIS、BIM、物联网等信息技术,将智能化、机电、安全、品质、资产、物业管理、节能管理、对外展示等多角度的系统与建筑三维模型及管理需求进行一体化整合。最终建设目标通过对各系统的集成统一,建立建筑主题数据库,为智慧园区提供可靠的设备运维分析、安全管理监控、品质运管理、资产信息化管理、物业管理服务、节能管理、信息化决策等一系列专业性服务。
什么是GIS 的三维结构
此类GIS应用软件通常多建立在OpenGL平台之上,本系统也不例外。在实现其他特殊功能之前,必须首先正确配置、安装好OpenGL环境,然后才能进行各种实用功能的开发。下面将对OpenGL做一个简短的介绍,并开始OpenGL应用程序框架的搭建工作。
OpenGL概述
OpenGL是一种到图形硬件的软件接口。从本质上说,它是一个完全可移植并且速度很快的3D图形和建模库。通过使用OpenGL,可以创建视觉质量接近射线跟踪程序的精致漂亮的3D图形。但是它在执行速度上要比射线跟踪程序快好几个数量级。OpenGL使用的是由Silicon Graphcs(SGI)公司精心开发的优化算法,这家公司在计算机图形和动画领域是公认的业界领袖。开发者可以利用OpenGL提供的150多个图形函数轻松建立三维模型并进行三维实时交互。这些函数并不要求开发者将三维物体模型的数据写成固定的数据格式,这样一 来开发者就不仅可以直接使用自己的数据,而且还可以利用其他格式的数据源,能在很大程度上缩短软件的开发周期。
OpenGL不仅可对整个三维模型进行渲染并绘制出逼真的三维景象,而且还可以进行三维交互、动作模拟等处理。其提供的基本功能具体包含以下几方面的内容:
(1)模型绘制。在OpenGL中通过对点、线和多边形等基本形体的绘制可以构造出非常复杂的三维模型。OpenGL经常通过使用模型的多边形及其顶点来描述三维模型。
(2)模型观察。在建立了三维模型后,可以通过OpenGL的描述来观察此模型。此观察过程是通过一系列的坐标变换来实现的。这种变换使得观察者能够在视点位置得到与之相适应的三维模型场景。投影变换的类型对模型的观察有很大的影响,在不同投影变换下得到的三维模型场景也是不同的。在模型观察过程的最后还要对场景进行裁剪和缩放,以决定整个三维模型场景在屏幕上的显示。
(3)颜色模式的指定。在OpenGL中可以指定模型的颜色模式(RGBA模式和颜色表模式)。除此之外,还可以通过选择模型的着色方式(平面着色和光滑着色)来对整个三维场景进行着色处理。
(4)光照效果。为使OpenGL绘制的三维模型更加逼真还必须增加光照效果。目前OpenGL仅提供了对辐射光、环境光、镜面光和漫反射光的管理方法,另外还可以指定模型表面的反射特性。
(5)图象效果增强。在增强三维场景图象效果方面,OpenGL也提供了一系列相关函数。这些函数通过反走样、混合和雾化等处理来增强图象效果。其中,反走样用于改善图象中线形图形的锯齿使其更平滑;混合用于处理模型的半透明效果;雾化使场景图象从视点到远处逐渐褪色,使其更接近现实情况。
(6)位图和图象处理。OpenGL提供有专门进行位图和图象处理的函数。
(7)纹理映射。真实物体的表面普遍存在纹理,如果建立的三维模型场景缺少此细节将显得不够真实,为更逼真地表现三维场景,OpenGL提供了纹理映射的功能。OpenGL提供的纹理映射函数可以很方便地把纹理图象贴到场景多边形上。
(8)双缓存技术。OpenGL提供的双缓存技术主要用于实时动画,为获得平滑的动画效果,需要先在内存中生成下一帧图象,然后再将其从内存拷贝到屏幕。
(9)人机交互。OpenGL提供了方便的三维图形人机交互接口,通过此接口用户可以选择修改三维景观中的物体。
OpenGL应用程序框架的建立
首先建立一个单文档应用程序,并将需要用到的头文件和导入库添加到工程,以便能够顺利通过编译。在VC++中,OpenGL的头文件一般是存放在系统头文件目录的子目录GL中,所以在指定包含的时候要指定一下相对路径:
#include gl\gl.h // OpenGL32库的头文件
#include gl\glu.h // GLu32库的头文件
#include gl\glaux.h // GLaux库的头文件
这里的gl.h是基本头文件,glu.h是应用头文件,大多数应用程序都需要同时包含这两个头文件,glaux.h是辅助头文件,只在需要使用的情况下包含。接下来调出"Project Settings"对话框并在"Link"选项页中添加glu32.lib、glaux.lib和OpenGL win32实现的标准导入库opengl32.lib到工程。
接下来初始化OpenGL,这也是本文最重要的部分。先大致讲一下基本步骤:首先获取需要在上面绘图的设备环境(DC)并为该设备环境设置像素格式,然后创建基于该设备环境的OpenGL设备。最后,初始化OpenGL绘制场景及状态设置。前三步的实现过程在SetOpenGLInterface()函数中实现:
PIXELFORMATDESCRIPTOR pfd = {
// 初始化象素存储格式
sizeof(PIXELFORMATDESCRIPTOR), // pfd的大小
1, // 版本号
PFD_DRAW_TO_WINDOW | // 支持窗口
PFD_SUPPORT_OPENGL | // 支持OpenGL
PFD_DOUBLEBUFFER, // 支持双缓存
PFD_TYPE_RGBA, // RGBA类型
24, // 24位色深度
0, 0, 0, 0, 0, 0, // 各颜色位(忽略)
0, // 无alpha缓存
0, // 忽略转换位
0, // 无累计位
0, 0, 0, 0,
32, // 32位深度缓存
0, // 无模版缓存
0, // 无辅助缓存
PFD_MAIN_PLANE, // 主绘制层
0, // 保留
0, 0, 0 // 忽略的层掩模
};
m_pDC = GetDC(); // 得到设备环境句柄
int iFormat = ChoosePixelFormat(m_pDC-m_hDC, pfd); // 设置象素格式
SetPixelFormat(m_pDC-m_hDC, iFormat, pfd);
m_hGlrc = wglCreateContext(m_pDC-m_hDC); // 创建渲染上下文
wglMakeCurrent(m_pDC-m_hDC, m_hGlrc); // 设置一个线程的当前绘图描述表
这里首先对描述像素存储格式的PIXELFORMATDESCRIPTOR结构变量进行了填充,在得到设备环境句柄后调用ChoosePixelFormat()和SetPixelFormat()函数以返回并设置最佳匹配的像素格式。最后调用wglCreateContext()创建一个渲染上下文RC并将其作为参数通过wglMakeCurrent()来建立一个当前的绘图描述表,并在绘制完毕后(通常在WM_DESTORY消息发出后执行)将其释放:
ReleaseDC(m_pDC); // 释放DC
if (m_hGlrc != NULL) // 释放RC
wglDeleteContext(m_hGlrc);
经过上面的处理OpenGL就已经初始化完毕了,但为了达到逼真的视觉效果还有必要进一步设置一下场景,这在InitOpenGL()函数中完成。具体的工作包括对光源的各种定义:
GLfloat light_position[] = {0.0, 0.0, 1.0, 0.0}; // 定义光源的位置坐标
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
GLfloat light_ambient[] = {0.0, 0.0, 0.0, 1.0}; // 定义环境反射光
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0}; // 定义漫反射光
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
GLfloat light_specular[] = {1.0, 1.0, 1.0, 1.0}; // 定义镜面反射光
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
GLfloat light_model_ambient[] = {0.4f, 0.4f, 0.4f, 1.0f}; // 定义光模型参数
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, light_model_ambient);
GLfloat local_view[] = {0.0};
glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view);
以及各项相关功能的使能设置:
glEnable(GL_LIGHTING); // GL_LIGHTING有效
glEnable(GL_LIGHT0); // GL_LIGHT0有效
glEnable(GL_DEPTH_TEST); // 允许深度比较
glDepthFunc(GL_LESS); // 激活深度比较
glClearColor(0.1f, 0.1f, 0.5f, 0.0f); // 设置蓝色背景
glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE); // 权衡图像质量与绘制速度
通常,SetOpenGLInterface()和InitOpenGL()在WM_CREATE消息发出后即被执行,以确保在程序启动之初完成对OpenGL的环境设置。在视图初始化更新完毕后,还要进行最后的处理--进行视口的定义,下面给出的这段InitViewPort()函数实现代码将完成此功能:
CRect rect; // 得到绘图客户区的大小
GetClientRect(rect);
glMatrixMode(GL_PROJECTION); // 设置投影模式
glLoadIdentity(); // 装载单位矩阵
if (m_nViewMode == 0) // 建立一个透视投影矩阵
gluPerspective(90.0, rect.Width() / rect.Height(), 1.0, 10000.0);
if (m_nViewMode == 1) // 建立一个正射投影矩阵
glOrtho(-0.5 * 10000.0, 0.5 * 10000.0, -0.5 * 10000.0, 0.5 * 10000.0, 1.0, 10000.0); glViewport(0, 0, rect.Width(), rect.Height()); // 重定视口
glMatrixMode(GL_MODELVIEW); // 确定当前矩阵模式
glLoadIdentity(); // 装载单位矩阵
这里完成的主要工作有对投影模式的设置与对投影矩阵的建立以及对视口的重定等。其中,控制变量m_nViewMode的取值决定了投影模式(透视投影还是正射投影),并根据不同的投影模式调用函数gluPerspective()或glOrtho()建立相应的投影矩阵。函数gluPerspective()用于创建一个对称透视视景体,第一个参数定义了视野在X-Z平面的角度,取值范围为[0.0, 180.0];第二个参数是投影平面宽度与高度的比率;后两个参数分别为远近裁剪面沿Z负轴到视点的距离,总为正值。glOrtho()用于创建一个平行视景体(实际是创建一个正射投影矩阵,并以此矩阵乘以当前矩阵)。其近裁剪、远裁剪平面均为矩形,近裁剪矩形左下角点和右上角点的三维空间坐标分别为(left,bottom,-near)和(right,top,-near);远裁剪平面的相应空间坐标分别为(left,bottom,-far)和(right,top,-far)。这里所有的near、far值同时为正或同时为负。若未进行其他变换,正射投影的方向将平行于Z轴、视点朝向Z负轴。
视口确定之后就可以着手对场景的绘制了。这主要在ReDraw()中完成,并在OnSize()、OnDraw()等需要重绘的地方被调用。由于这部分不属于OpenGL框架搭建的内容,因此该函数的实现将在后续的文章中进行详细介绍,这里不再赘述
五分钟学GIS _ 快速认识 MapBox GL
MapBox是移动和Web应用程序的地理信息数据平台。提供了丰富精美的在线地图及地图风格设计器;提供了位置搜索服务、导航服务及其API;提供了各种端的SDK。SDK开源免费。
什么是
MapBox GL是MapBox提供的JavaScript SDK,可用于各种前端地理信息数据可视化的开发。MapBox GL渲染性能拔群,特别是能渲染大量的数据,这使它能够在众多同类开发框架中脱颖而出;可在支持WebGL的移动端浏览器上运行;地图浏览平滑流畅,可视化效果丰富;使用方便,良好的可扩展性、拥有众多的插件使之可以满足开发者的各种需求。
MapBox GL
MapBox GL的GL指的是WebGL,这是它最大的特点。WebGL是一种3D绘图协议,允许把JavaScript和OpenGL ES 2.0结合在一起,为HTML5的Canvas元素提供硬件3D加速渲染。大多数PC和移动端浏览器支持WebGL。
MapBox GL使用WebGL渲染地图和图层,所以可以知道这对前端GIS开发者来说意味着什么:超越以往浏览器局限的硬件级渲染图形能力。
令无数前端GIS开发者头疼的大数据量GIS数据渲染、交互问题,若使用MapBox GL,只要不超过当前硬件的渲染能力就都能实现。同时,MapBox GL也顺理成章地支持一些3D效果:可以倾斜、旋转地图;可在地图上添加3D要素、呈现立体地图等。
MapBox GL还拥有良好的可扩展性和众多的插件。
比如,百度ECharts提供了MapBox GL插件,并且在ECharts官网上有众多相关示例(如上图),开发者可以直接使用ECharts提供的各种显示效果,做出各种美观的地图和流畅的动画效果。
除此之外,还支持与非常流行的React、Angular等框架的集成;可与用于空间分析的JavaScript库Turf.js结合使用等。
MapBox GL支持的服务规范及数据格式有:zxy地图瓦片服务(OpenStreetMap规范)、MapBox (mvt)矢量瓦片地图服务、GeoJSON等。MapBox提供的在线地图服务均为矢量瓦片地图服务。与传统地图瓦片服务相比,矢量瓦片是在客户端行渲染呈现的,地图风格的设置更加方便。
SuperMap iClient 9D for MapboxGL
SuperMap iClient 9D for MapboxGL整合了MapBox GL、ECharts和MapV,并且对接了SuperMap iServer / iExpress / iPortal / iManager / Online的地图、服务和资源,为用户提供了完整专业的GIS能力的同时也提供了优秀的可视化功能。
使用iClient for MapboxGL可以加载各种超图云GIS提供的瓦片地图和矢量地图,下图为对接iServer发布的矢量瓦片地图服务:
名称栏目:GIS中3D渲染技术 gis地形渲染
文章来源:http://pwwzsj.com/article/dohcopi.html