GIS开发离线地图应用-初识gis

最新公司需要做一个基于gis地图的应用系统,由于之前公司项目中的电子地图模块都是我开发的,所以这个新系统也自然让我先去了解如何开发,可以说做个简单的调研。

和之前的项目中开发的电子地图模块不同,这次是开发gis地图,是要显示真实的地理位置,能有gps定位功能的。而之前开发过的电子地图功能,都只是基于svg的矢量可配置地图(之前采用batik开发过C/S版,用raphael开发过B/S版,都在项目中正常使用)。

下面描述下我开始开发前做的准备和了解工作,希望对首次接触并想要开发gis离线地图应用的coder有帮助。

总体要求

(这里只提取和地图相关的,其他业务需求就不描述了)

1. 支持离线使用

2. 优先支持百度地图,不行选择google也可

3. 支持地图基本操作,放大、缩小、平移

4. 支持车载设备的GPS定位显示在地图上

5. 支持在地图上标注自定义的内容(图标、文字)

6. 支持自定义内容的操作,拖拽、右键显示信息和菜单

7. 设计上支持以后替换不同地图引擎,如从google换成高德,替换后尽量少做开发工作就能正常使用。

地图显示方案选择

1.调用地图API进行开发

各个地图开发商都提供了自己的api供大家调用,以方便进行二次开发,如google、百度、高德等,这些api往往比较完善和成熟,可以充分满足我们系统中的业务功能,但有几个要求无法满足:

1)无法支持离线使用,很多api通过http请求去各个地图开发商服务器获取数据,离线情况下有很多功能限制,其中最主要的GPS定位纠偏api就必须联网。

2)不易支持多个gis引擎,如果api进行开发,则肯定不兼容其他厂商gis的api,如果通过设计上在每个api上封装一层,则工作量太大。

所以使用某个厂商的api进行开发的方案基本不可行。

2.使用第三方库openlayers显示地图

OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问。

使用openlayer进行网页上地图的显示和操作控制,而不去调用各个厂商的api,通过工具获取google的离线地图瓦片数据,存在自己的服务器上,并可进行离线的开发和使用。

这样理论上只要更换后台服务器上的图片数据,做一些必要的配置,而不用改前台网页显示地图的代码,就可以支持不同厂商的地图展示。

显然在显示地图方案上,是要选择方案2才能满足离线和支持多地图引擎的要求。

地图的选择

原本希望使用百度地图,但是上网查了一圈,发现使用百度地图进行离线开发,似乎不大可行。

1) 百度官方的api中就不支持web开发离线地图。这个正常,一般的都不支持web离线开发,手机的倒是都支持。

2) 离线地图的一个需要解决的问题,GPS纠偏,百度地图的似乎不好处理,百度有自己的偏移加密。

这里顺便引用下对坐标系的介绍:

1.火星坐标系统 GCJ-02

国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照几行代码的算法,将真实的坐标加密成虚假的坐标,而这个加偏并不是线性的加偏,所               以各地的偏移情况都会有所不同。而加密后的坐标也常被人称为火星坐标系统。

目前使用火星坐标系的地图商:

腾讯搜搜地图

搜狐搜狗地图

阿里云地图

高德MapABC地图

灵图51ditu地图

(重要)所有的电子地图所有的导航设备,都需要加入国家保密插件。第一步,地图公司测绘地图,测绘完成后,送到国家测绘局,将真实坐标的电子地图,加密成“火星坐标”,这样的地图才是可以出版和发布的,然后才可以让GPS公司处理。第二步,所有的GPS公司,只要需要汽车导航的,需要用到导航电子地图的,统统需要在软件中加入国家保密算法,将COM口读出来的真实的坐标信号,加密转换成国家要求的保密的坐标,这样,GPS导航仪和导航电子地图就可以完全匹配,GPS也就可以正常工作。

2.大地坐标系统 WGS-84 

用来表述地球上点的位置的一种地区坐标系统。它采用一个十分近似于地球自然形状的参考椭球作为描述和推算地面点位置和相互关系的基准面。一个大地坐标系统必须明确定义其三个坐标轴的方向和其中心的位置。通常人们用旋转椭球的短轴与某一规定的起始子午面分别平行干地球某时刻的平均自转轴和相应的真起始子午面来确定坐标轴的方向。若使参考椭球中心与地球平均质心重合,则定义和建立了地心大地坐标系。它是航天与远程武器和空间科学中各种定位测控测轨的依据。若椭球表面与一个或几个国家的局部大地水准面吻合最好,则建立了一个国家或区域的局部大地坐标系。大地坐标系中点的位置是以其大地坐标表示的,大地坐标均以椭球面的法线来定义。其中,过某点的椭球面法线与椭球赤道面的交角为大地纬度;包含该法线和大地子午面与起始大地子午面的二面角为该点的大地经度;沿法线至椭球面的距离为该点的大地高。大地纬度、大地经度和大地高分别用大写英文字母B、L、H表示。

3.百度坐标系统 BD-09

百度坐标对火星坐标系进行了一次加密,形成了百度坐标系.

目前使用百度坐标系的地图商:

百度Baidu地图

图吧MapBar地图

可见百度地图比较特殊,有着自己的二次加密。

假设以后车载设备将GPS信息实时推送给我们,如果直接将位置坐标输入地图中显示,则会有偏移,这样肯定无法满足要求,所以纠偏一直是开发离线gis应用的难点。

对google离线地图的纠偏,google由于离线开发者多,所以相应的方法也较多,纠偏问题应该能较好的解决,而且查到了别人所谓的纠偏算法,只是没有验证。

百度地图的纠偏相对复杂,一般人使用在线api可以直接调用纠偏接口,而离线则没有很好的方式,其纠偏算法网络上也没有找到,一般百度地图的纠偏数据库也是收费的。

所以在纠偏问题上,百度地图比较难解决,而google地图相对较容易。

总的来看,我应该会选择开发google的离线地图,风险相对小一点,web采用openlayers进行加载显示,正式开发前的准备工作就差不多啦,接下来应该要弄个demo试一下,或者直接开干!

来自为知笔记(Wiz)

时间: 2024-08-02 02:51:17

GIS开发离线地图应用-初识gis的相关文章

离线地图解决方案(七):地图地物搜索

离线地图发布的"底图"都是各大地图厂商的"瓦片"或者利用geoserver生成的瓦片数据,这些瓦片数据都是一些jpg或者png格式的图片,很多GIS应用中,用户除地图显示,地图添加地物外,也需要用关键字搜索地物. 普遍的做法是,部署geoserver发布矢量数据,采用wfs服务查询到数据,并且在前端展示.或者调用在线地图的搜索接口返回数据在前端显示.这两种方式,就跟原本的离线地图和轻量级GIS应用背道而驰. 可以采取一种简便的做法,将地图矢量数据存入轻量级数据库Sq

离线地图开发

最近在搞离线地图开发,这个资源不错 http://api.jjszd.com:8081/apituiguang/gistg.html

GIS开发的应用领域有哪些?

GIS的应用领域有哪些? 地理信息系统在最近的30多年内取得了惊人的发展,广泛应用于资源调查.环境评估.灾害预测.国土管理.城市规划.邮电通讯.交通运输.军事公安.水利电力.公共设施管理.农林牧业.统计.商业金融等几乎所有领域. 以下地理信息系统的应用领域分别回答了在各自领域内的作用 资源管理(Resource Management) 主要应用于农业和林业领域,解决农业和林业领域各种资源(如土地.森林.草场) 分布.分级.统计.制图等问题.主要回答"定位"和"模式"

百度离线地图开发

离线地图资源,完全可脱离互联网访问,正在发愁局域网或内网使用地图定位的小伙伴们福音来了......哈哈哈哈哈!!! 支持各大主流浏览器 IE7.8.9.10.11,火狐.360浏览器.谷歌浏览器 如果这正是你需要的功能,或者项目上需要内网使用并且用到地图的,欢迎咨询,这是我工作项目客户要求内网使用,然后自己通过研究重改的东西,本人是程序猿,如果你也是那就根据下方方式联系吧!!! 电话:13144039336 杨工 QQ:349686124 如果不想拷贝QQ的,兄弟请点击这里  点击下载视频介绍

离线地图解决方案

目前GIS系统的开发,大多采用Arcgis,superMap等专业的gis开发平台.部分项目采用当前主流的在线地图提供的api进行开发.Arcgis.supermap等专业厂商提供的开发平台,开发周期长,并且购买这些开发平台,成本相对很高.采用在线地图api进行项目开发,在部分不能上外网的单位项目没办法进行部署和使用.并且采用在线地图api进行开发,需要申请地图调用的所谓key.部分接口和api每天有调用次数限制. 大部分的GIS项目,其实只需要比较简单的GIS功能,如地图基本显示,在显示的地图

ArcGIS移动客户端离线地图的几种解决方案[转]

原文地址:http://blog.chinaunix.net/uid-10914615-id-3023158.html 移动GIS中,通常将数据分为两大类:basemap layer和operational layer.前者是指漫游或导航时起参考作用的图层,这些图层内容通常不会变化,只起到视觉辅助作用,称为底图图层:后者是指存储GIS数据的图层,比如可通过这些图层来提供属性/空间查询操作,或者对其内容进行编辑,然后与服务器端进行同步,称为业务图层. 目前ArcGIS移动产品有5种,基于Windo

中科燕园GIS兼职案例之四----电网移动GIS平台

该平台极大提升了电网营配集成数据普查工作中的工作效率.平台是基于ArcGIS Runtime SDK for Android开发的平板应用,底图采用tpk切片包,业务数据使用ArcSDE和SpatiaLite数据库存储,通过在线和离线方式进行访问. 功能包括:图形基本操作.查询与定位.数据下载.数据采集.巡视管理.抢修指挥和辅助设计等. 线路模型标记任务 低压模式下的线路编辑 资产信息录入 线路模型的精细编辑(管线搭建.合并.撤销编辑等实用功能) 平台特色: •        实现电力数据离线普

百度谷歌离线地图解决方案(离线地图下载)

离线地图解决方案,除了买地图数据,使用专业的ArcGIS来做外,也可以使用GMap.Net来做. 关于GMap的开发教程,可以看我以前的文章:基于GMap.Net的地图解决方案 使用了GMap一年了,也有了一些积累,开发了一个可以下载百度.谷歌.高德.腾讯SOSO的地图下载器,各个地图加载显示如下: 百度普通地图: 百度混合地图: 谷歌普通地图: 谷歌混合地图: 从目前的情况来看,百度的普通的地图数据是更新最快的,但是有些小地方没有卫星地图,而谷歌几乎所有的地方都有卫星地图,但是谷歌中国的地图更

如何发布谷歌离线地图

一键离线地图发布(工具软件下载) 使用教程 百度离线地图发布  教程 手机离线地图发布--Oruxmaps制作发布高清卫星离线地图 谷歌离线地图发布API解析 说明: 1. 当前版本支持 谷歌电子/卫星地图瓦片.高德地图.阿里云地图.超图.腾讯地图等(只需下载该地图源的瓦片拷贝到指定目录即可): 2. 效果预览演示地址:http://www.bigemap.com/google 后台编辑体验地址:http://www.bigemap.com/google/login.html 可随意在后台添加/