构建GIS地图常用知识
坐标系
地球是一个不规则的球体,为方便用平面的地图表示地球表面的现实世界,需采用椭球参数、投影方法等 把空间的球体 映射到平面图上,而平面图 对应的就是 二维的坐标系统。
坐标系统非常多,只要设立了坐标圆点、选择椭球参数、投影方式后,你也可以设立一套自已的一套坐标系统。在我国,为保密需要,各个地方政府保存的数据,采用的坐标系都是独立的地方坐标系统。
-
WGS84 坐标系
国际上常用的坐标系统是"WGS84" 坐标系,其原因在于美国部署的GPS (全球定位系统)是使用得最广泛的一套定位系统,而这套系统使用的就是 "WGS84" 坐标系,包括我们的手机gps 芯片未经处理直接返回的定位数据(但如果是手机厂商作了处理转换、或者采用百度 高德的SDK捕获的GPS坐标 则不一定是WGS84 坐标系下的,原因在于做了转换处理)、google 地图的数据采用的都是 "WGS84" 的坐标系统。也即WGS84 坐标系是
-
国际标准,从专业GPS 设备中取出的数据的坐标系
-
国际地图提供商使用的坐标系
-
-
火星坐标 (GCJ-02)也叫国测局坐标系
-
GCJ_02 坐标系是 国测局坐标系 的首字母简称,又被戏称为火星坐标系
-
中国标准,高德地图采用的是这个坐标系统
-
国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。
-
-
百度坐标 (BD-09)
-
百度标准,百度 SDK,百度地图,Geocoding 使用
-
(本来就乱了,百度又在火星坐标上来个二次加密)
-
百度地图专属的 坐标系统
-
坐标转换接口
从GPS设备上直接获取到的经纬度 为gps 坐标,可通过以下接口转换为高德坐标
该接口可支持 baidu/mapbar/gps 坐标至高德坐标系下经纬度转换,详细参数说明及示例 可参见官网
-
地址 与经纬度互查接口
当无经纬度时,可用标准化地址(XX 省XX市XX区(县)XX街道(镇)XX路XX 号)采用以下接口 标准地址转换 为高德坐标反查得到经纬度
详细参数参见官网
-
各坐标转换脚本 支持js 和python 语言转换
高德常用API
-
marker类 创建点图标
-
makercluster 类 点聚合插件
-
map 类 地图类
-
提示: 高德API 文档还是比较清晰易读的,一般上的地图应用开发,根据开发文档都可以解决;在采用 makercluster 类时需要注意的是,聚合点的图标有个偏移量设置,需要进行适当的调整,不然会出现 图标的中心位置偏移的问题。
开放的地图资源
-
数据类:
-
OpenStreetMap 开放的矢量地图资源(地图界的维基百科,精度要求及实时性可能满足不了商用要求)
-
地理空间数据云(国内免费的卫星图像下载)
-
-
软件工具类
-
专业软件类:
-
ArcGIS(商业软件,正式版需要购买,国内有些破解版)
美国Eris 公司发布的一个商业软件,也是当前功能最齐全 、最受欢迎的一个软件,可支持复杂的空间分析、图层叠加、路径选择、建模、生成地图图片(JPEG/png/em图等)。
提供二次开发包,ArcEngine, 集成了ArcGIS几乎所有的功能, 也有服务器发布的开发服务提供,ArcServer。
-
SuperMap(国内的商业软件,超图公司发布)
国内的一框功能与ArcGIS 类似的软件,也提供相应的二次开发包。
-
Envi (商业软件,正式版需要购买,国内有些破解版)
国外的一款处理遥感图像的软件,常用功能:图像拼接、图像分类、图像增强等。
-
电子地图缩放原理简单介绍:
我们所看到的 百度、高德等电子地图到底是怎样实现缩放显示不同的内容的呢?
相信 大家都觉得很好奇,在平时使用 百度或者 高德 地图时,当你查看某个地方时,地图商返回给你的感觉就像是一张图片,实际上大家的感觉是对的,其实就是一张图片。
在进行缩放时,相当于你请求不同层级的图片,层级越大,图像细节越多,当网络顺畅或者本地缓存后,你会觉得缩放得很自如,好像这是一张不会失真的矢量图一样,其实不是,你看到的还是栅格图 也就是图片,只是多张图片间的切换没被你发觉而已。当网络较慢时,进行缩放时,有时你会看到屏幕是空白的,那就是因为图片没有加载过来。
那么,地图服务器那边又是怎么知道,我请求的是哪张图片呢?通过经纬度。经纬度有无限多个组合,难道一个经纬度组合对应着一张图片?那么就对应着无数张图片,这显然是不可能的。
实际上,图商采用的是一种 地图瓦片技术。所谓的地图瓦片,采用划定范围的经纬度 对应一张图片的方式,比如 我们刚才说的 一个经纬度组合 不可能对应着一张图片,因为图片量太大了,而且一个经纬度 也只是一个点,构不成线面。那么就让一张图片对应一个指定范围,比如图片1 对应着 (110,22)-- (115,23) 一个经纬度范围,那么当用户传递的经纬度为(111,21.5)时 服务器那边就知道回传 哪种图片给你了。
但是在同一个地方(同一个经纬度)返回的图片细节不一样,有的细节很丰富,可以看到楼块的轮廓,有的很粗略,只看到几个关键的建筑和主要道路,细节部分没有显示,这又是怎么一回事呢?
那么这里需要增加一个层级的参数,表示你要层级丰富的数据还是 粗略一点的数据,一般可以分成20个层级,从0 到20 ,细节丰富程度增加,同样大小的一张图片显示的范围大小递减; 反之也成立。
所以电子地图的显示原理的关键技术“地图瓦片”,就是经纬度 范围和 图片的映射关系,同时加上层级 这一参数,来控制一张图片对应的经纬度范围。这样子就实现了,电子地图的缩放功能。
上面是对地图瓦片技术的一点简单介绍,其中 经纬度 范围 和 瓦片的对应关系,要运用到 投影知识,当前互联网电子地图采用的基本是 墨卡托投影,关于投影知识,可以参照这篇博文。
另外感兴趣的话,也可以看看 根据经纬度、层级 是怎样 和瓦片进行映射的
高德地图请求实例:lv=13 表示13层级,后面跟着的数字是 瓦片的编号(横向和 纵向)