GIS中的引擎:地图引擎
什么是地图引擎?它和地图软件有什么区别?
引擎一词是英文单词engine的音译,通常指发动机,就是动力输出设备。诸如汽车、轮船、飞机的动力提供的核心设备就是引擎。IT领域中,常听说的有搜索引擎、图形引擎等。软件中引擎就是提供一套特定底层功能的实现和接口,其往往基础而强大,充分满足上层的应用需要。而通常说的地图引擎和导航引擎都属于GIS引擎的一部分。GIS引擎就像汽车的发动机,数据就像油料,只是这个发动机与油料是唯一对应的。
地图引擎,从应用层层来看,就是一套提供了驱动和管理地理数据,实现渲染、查询等功能的一套函数库,所有的应用层软件只需要调用地图引擎提供的功能接口就能较容易的完成其功能。常见的地图引擎有Google Maps API、百度地图API、高德地图API、HereMap等。
地图软件是架构在地图引擎之上的应用。地图软件可以没有独立的地图引擎,而在软件中实现地图引擎的功能,但独立的地图引擎可以使软件的架构更清晰,扩展性和可维护性都有极大的提升。尤其对于多平台的地图软件,独立的地图引擎必不可少,否则维护成本倍增。地图引擎通常会封装和保护地理数据的组织管理机制,对上层提供地图移动、放缩、渲染、空间查询等功能。
通常,在移动GIS中,地图引擎还包括了导航引擎。导航引擎与地图引擎的概念一致,导航引擎驱动和管理是拓扑数据,提供的是路线和导引信息。导航引擎通常会封装和保护几何数据的拓扑关系和导引数据,对上层提供路线分析、拓扑分析、引导信息的功能。
在GIS的架构的设计中,除了地图引擎和导航引擎外,有的设计者会把图形渲染单独分出来,封装成独立的渲染引擎,如2D渲染引擎、3D渲染引擎等。这样做没有任何问题,只要能和地图引擎很好的衔接,这样的设计是更好的。
通常嵌入式上GIS引擎对其数据要求都是专有的,目的是提高引擎运行效率。各公司或各设计师的引擎设计会与引擎所需数据格式设计紧密衔接,其实通常都是同一团队在设计。这份数据格式设计是GIS引擎的核心技术之一,数据格式的优劣很大程度上决定到了引擎的效率,所以基本上没有公司或设计师会公开他们的设计方案,因为这是核心技术机密!所以,你要想在嵌入式设备上开发GIS引擎,就要设计自有的GIS数据格式。
那么我们能不能就拿MapInfo的MIF或ArcInfo的E00数据做引擎的数据源?答案是肯定的,能!但是你将很难保障引擎的运行效率。通常一些完善的GIS引擎都会提供一些外围软件,其中就包括各个大厂交换格式导成自有GIS引擎格式数据的工具,这也是判定一个GIS引擎完整度的一个重要标志。
GIS中的引擎:地图引擎的更多相关文章
- 从零打造一个Web地图引擎
说到地图,大家一定很熟悉,平时应该都使用过百度地图.高德地图.腾讯地图等,如果涉及到地图相关的开发需求,也有很多选择,比如前面的几个地图都会提供一套js API,此外也有一些开源地图框架可以使用,比如 ...
- [GitHub开源]基于HTML5实现的轻量级Google Earth三维地图引擎,带你畅游世界 【转】
http://blog.csdn.net/iispring/article/details/52679185 WebGlobe HTML5基于原生WebGL实现的轻量级Google Earth三维地图 ...
- Openlayer4 - 最好最强大的开源地图引擎
Openlayer4 - 最好最强大的开源地图引擎 # githubhttps://github.com/openlayers/openlayers # 官网http://openlayers.org ...
- 使用室内三维地图引擎ESMap来管理摄像头设备、消防设备和人员轨迹展示
目前室内三维地图如何轻量化,能够在手机微信.电脑浏览器等平台快速显示地图,显示的地图性能好,转动地图不卡是大家都要面对的问题, 使用室内三维地图引擎ESMap后目前可以不用操心这方面的问题,开发只需要 ...
- 地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了
地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了 四叉树对于区域查询,效率比较高. 原理图
- MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...
- 在express站点中使用ejs模板引擎
在express站点中使用ejs模板引擎 文/玄魂 目录 在express站点中使用ejs模板引擎 前言 1.1 安装 1.2修改app.js 1.3创建测试页面 前言 使用 vs创建 ...
- MySql中启用InnoDB数据引擎的方法
1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术, ...
- WPF&Winform版本地图引擎
最近几年一直从事地图方面的工作,自主研发了WPF和Winform两个版本瓦片地图引擎.轻量级.不依赖第三库.先上一张图片展示一下吧! 产品包括服务端和客户端两部份: 1.服务端主要地图图层配制和空间计 ...
随机推荐
- linux 防火墙 iptables 目录
linux iptables 防火墙简介 Linux 防火墙:Netfilter iptables 自动化部署iptables防火墙脚本
- [js]js原型链继承小结
这是之前总结的, 发现有很多的毛病,就是重点不突出,重新翻看的时候还是得耗费很长时间去理解这玩意. js中的继承 js中什么是类 1,类是函数数据类型 2.每个类有一个自带prototype属性 pr ...
- HttpWebRequest请求http1.1的chunked的解析问题记录
问题:我的请求获取不到URL对应的内容(换个浏览器可以). 第一步对比wirshark截包看HTTP请求头,发现我这缺失一部分请求头. 对着官方文档添加即可.https://msdn.microsof ...
- node (02 CommonJs 和 Nodejs 中自定义模块)顺便讲讲module.exports和exports的区别 dependencies 与 devDependencies 之间的区别
CommonJS 规范的提出,主要是为了弥补当前 JavaScript 没有标准的缺陷.它的终极目标就是:提供一个类似 Python,Ruby 和 Java 语言的标准库,而不只是停留在小脚本程序的阶 ...
- python学习之数组二
作用于数组的函数: 通用函数:函数基于元素的,以单元方式作用于数组的,返回的是与原数组具有相同形状的数组. 不通用函数(数组函数):函数能以行或者列的方式作用于整个矩阵:如果没有提供任何参数时,它们将 ...
- 构建高性能的MYSQL数据库系统-主从复制
实验环境: DB1:172.16.1.100 DB2:172.16.1.101 VRRIP:172.16.1.99 步骤: yum -y install mysql 1.修改DB1的mysql配置文件 ...
- Python多线程threading的使用
一. threading的参数传递,参数之后的’,‘不能少,此处的’,‘是用来区分此参数作为元组(包含多个参数)来传递的,而不是单个参数传递 #coding:utf- import threading ...
- QT创建TCP Socket通信
最近在学习QT,了解到QT可以进行SOCKET网络通信,进行学习,并建立一个简单的聊天DEMO.为了测试是否能与VS2012下的程序进行通信,在VS2012下建立一个客户端程序,进行通信测试,发现可以 ...
- nginx配置优化 第二章
一:常用功能优化: 1:网络连接的优化: 只能在events模块设置,用于防止在同一一个时刻只有一个请求的情况下,出现多个睡眠进程会被唤醒但只能有一个进程可获得请求的尴尬,如果不优化,在多进程的ngi ...
- JNI与底层调用
交叉编译 在一个平台下,编译出另一个平台能够执行的二进制的代码 平台:windows,mac os,linux 处理器:x86,arm,mips 交叉编译的原理 源代码->编译->链接-& ...