1.为什么使用地图作为背景:
地域空间数据可视化
当指标数据和要表达的主题跟地域有关联时,一般会选择用地图为大背景。
这样用户可以直观的了解整体的数据情况,
同时也可以根据地理位置快速的定位到某一地区来查看详细数据。
例如:在地图上标出特定位置的数据表现或者一些数值
2.地图数据
第一种思路:有一些R包中存储着常见地图的数据
第二种思路:下载所画图的地理数据,然后读入R进行绘制
第三种思路:直接去调取专业的地图企业或者网站的数据
3.第三方地图数据说明
各家地图服务商使用的坐标并不相同。目前主要有如下三种坐标系:
大地坐标(WGS84坐标系):国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,
谷歌地图采用的是WGS84地理坐标系(中国范围除外)。
火星坐标(GCJ02坐标系):是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
高德地图、谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系。
百度坐标(BD09坐标系):GCJ02坐标系经加密后的坐标系。
一般从GPS得到的数据是经纬度,百度地图定位偏差-百度地图开发时,输入经纬度 (用google earth或GPS设备得到) ,会发现坐标显示位置偏移
坐标偏移--国家要求 + 百度的二次加密
主流互联网地图服务商都对外发布了接口,供第三方使用。
导航电子地图资质和互联网地图服务资质
百度、腾讯、搜狗、图吧等属于互联网地图服务提供商,所使用地图数据均购买于数据提供商
互联网地图服务甲级测绘资质单位
地图数据公司一方面要有政府背景,同时需要大量成本定期采集、更新全国地图数据
4.R语言调用第三方地图数据
调用第三方的地图数据--然后再地图上表现数据--
%>% 管道函数--上一步产生的对象管道输出为下一步调用的函数的第一个参数--链式命令--magrittr包
嵌套版本的代码
链式版本的代码-- dplyr 包已极大地发挥了管道操作的优势
01.ggmap包底层地图中可以调取Google Map的数据,
还可以调取OpenStreetMap (‘osm’)、
Stamen Maps (‘stamen’)和
CloudMade maps (‘cloudmade’)--需要Api Key
地图类型有
有’terrain’(地势图)、
’satellite’(卫星图)、
’roadmap’(道路图)
和 ‘hybrid’(混合)
说明---这个需要科学上网--即你懂得,然后每天的调用Google Map是有次数限制的,同时地图涉及政治问题请谨慎使用
geocode 获取地点的经纬度,基于Google Maps
get_map:获取地图数据函数,输入可以是位置名称或者经纬度--获取的地图是非矢量图
ggmap:主要换图函数
##安装包-如果没有安装,则需要将注释去掉,然后再运行
#install.packages('ggmap')
#install.packages('mapproj')
##加载包
library(ggmap)
library(mapproj)
map <- get_map(location = 'China', zoom = 4)
ggmap(map)
##南京道路图
map2 <- get_map(location = 'Nanjing', zoom = 10, maptype = 'roadmap')
ggmap(map2)
02.调用百度的API
需要注册API密钥
03.搜狗地图API
http://map.sogou.com/api/
搜狗地图API是一套由JavaScript语言编写的应用程序接口
一定的JavaScript编程经验,
了解面向对象的设计和开发概念。
具备电子地图相关的一些基本知识
04.雅虎的PlaceFinder是一个提供地理编码的Web服务,它可以帮助应用程序实现地理位置感知功能,
并且转换成街道地址,或者把地理位置信息转换成地理坐标(反之亦然)
https://developer.yahoo.com/geo/placefinder/
参考:
R时代,你要怎样画地图?https://cos.name/2013/01/drawing-map-in-r-era/