跳到内容

dkahle/ggmap公司

存储库文件导航

CRAN状态 AppVeyor生成状态


ggmap(ggmap)

ggmap(ggmap)是一个R包,可以轻松检索光栅地图热门在线地图服务(如谷歌地图,Stadia地图、和开放街道地图,并使用ggplot2框架。

Stadia地图

Stadia Maps提供多种样式的地图分幅,包括更新的瓷砖来自雄蕊设计。API密钥是需要,但不需要信用卡签名向上的还有一个免费层非商业用途。获得API密钥后,调用注册功能:register_stadiamaps(“YOUR-API-KEY”,写入=FALSE).注意那个设置写入=真将更新您的~/.Renviron公司文件提交人替换/添加相关行。如果你使用前者,要知道每次重置R时,都需要重新执行。

您的API密钥是私有的对你来说是独一无二的,所以小心不要分享它在线,例如在GitHub问题中或保存在共享R中脚本文件。如果你无意中分享了它,只需转到client.stadiamaps.com,删除您的API密钥,然后创建一个新的。

图书馆("ggmap(ggmap)")#加载所需包:ggplot2
#谷歌的服务条款:<https://mapsplatform.google.com>
#Stadia Maps的服务条款:<https://stadiamaps.com/terms-of-service网站/>
#OpenStreetMap的磁贴使用策略:<https://operations.osmfoundation.org/policies/tiles网站/>
#如果你使用ggmap,请引用它!有关详细信息,请使用“引文(“ggmap”)”。

我们 <-c(c)(左边 = -125,底部 = 25.75,正确的 = -67,顶部 = 49)获取stadiamap(我们,缩放 = 5,地图类型 = "alidade_sooth(alidade_平滑)")|>ggmap()#ℹ © Stadia Maps©Stamen Design©OpenMapTiles©OpenStreetMap贡献者。

使用qmplot()就像你用的一样qplot(),但有一张地图在后台自动添加:

图书馆("数字播放器",警告.冲突 = 错误的)图书馆("对于猫")#定义辅助对象
`%通知%` <- 功能(左侧(lhs),相对湿度)!(左侧(lhs) %单位:% 相对湿度)#将休斯顿市中心的犯罪减少为暴力犯罪
暴力犯罪 <- 罪行 |>过滤器(冒犯%诺丁%c(c)("汽车失窃","盗窃","盗窃"),协议双方:(离子,-95.39681,-95.34188),协议双方:(纬度,29.73631,29.78400))|>突变(冒犯 =功能下降(冒犯),冒犯 =函数相关级别(冒犯,c("抢劫","严重攻击","强奸","谋杀")))#使用qmplot在地图上绘制散点图qmplot码(离子,纬度,数据 = 暴力犯罪,地图类型 = "stamen_toner_网站",颜色 =我("红色"))#使用`zoom=14`
#ℹ © Stadia Maps©Stamen Design©OpenMapTiles©OpenStreetMap贡献者。

经常qmplot()最简单,因为它会自动计算nice无需预先计算即可为您定义边界框,获取地图,然后使用ggmap(地图)取代了你平时的位置(在一个ggplot2配方)使用ggplot()尽管如此你自己更有效率。在该工作流中,您首先获得地图(并且你可以用ggmap()):

口技 <-make_box(标记_框)(离子,纬度,数据 = 暴力犯罪)地图 <-获取stadiamap(口技 = 口技,地图类型 = "stamen_toner_网站",缩放 = 14)#ℹ © Stadia地图©Stamen设计©OpenMapTiles©OpenStreetMap贡献者。ggmap(ggmap)(地图)

然后您可以像使用一样对geoms/stats进行分层ggplot2. The唯一的区别是(1)您需要指定数据中的参数层次与(2)空间美学x个设置为离子纬度分别是。(如果他们在您的数据集,只需放置映射=aes(x=经度,y=纬度),用于例如。)

ggmap(ggmap)(地图)+地理点(数据 = 暴力犯罪,颜色 = "红色")

使用ggmap(ggmap)你正在和ggplot2,因此您可以添加其他层的类型,使用拼凑等。所有ggplot2有geom的。例如,您可以创建轮廓用绘图geom=“密度2d”:

图书馆("拼凑")图书馆("gg密度")抢劫 <- 暴力犯罪 |>过滤器(冒犯 == "抢劫")点_映射 <-ggmap(ggmap)(地图)+地理点(数据 = 抢劫,颜色 = "红色")#警告已禁用
hdr映射 <-ggmap(ggmap)(地图)+地理高分辨率(原子发射光谱(离子,纬度,填满 =后统计(问题)),数据 = 抢劫,阿尔法 = .5)+
  地理文本路径::地理标签密度2d(原子发射光谱(离子,纬度,水平 =后统计(问题)),数据 = 抢劫,斯达 = "hdr线",大小 = 3,箱色 = 不适用)+缩放_缩放_缩放(调色板 = "YlOrRd公司")+主题(图例.位置 = "没有人")(点_映射 + hdr映射)&主题(轴.标题 =元素_blank(),轴.text =元素_blank(),轴.ticks =元素_blank())

贴面也很有效:

ggmap(ggmap)(地图,使变暗 = .3)+地理点(原子发射光谱(离子,纬度),数据 = 暴力犯罪,形状 = 21,颜色 = "灰色25",填满 = "黄色的")+facet_wrap(面覆盖)(~ 冒犯,nrow公司 = 1)+主题(轴.标题 =元素_blank(),轴.text =element_blank()元素,轴.ticks =元素_blank())

谷歌地图

谷歌地图可以使用同样容易。然而,由于谷歌地图使用中心/缩放规范,它们的输入略有不同:

(地图 <-获取谷歌地图("waco德克萨斯州",缩放 = 12))#ℹ <https://maps.googleapis.com/maps/api/staticmap?center=waco%20texas&zoom=12&size=640x640&scale=2&maptype=terrain&key=xxx>
#ℹ <https://maps.googleapis.com/maps/api/geocode/json?address=waco+德克萨斯州&key=xxx>
#谷歌地图的1280x1280地形图图像;使用“ggmap::ggmap()”绘制它。ggmap(ggmap)(地图)

此外,您可以使用ggmap(ggmap)(就像Stadia地图一样):

获取谷歌地图("waco德克萨斯州",缩放 = 12,地图类型 = "卫星")|>ggmap()获取谷歌地图("waco德克萨斯州",缩放 = 12,地图类型 = "混合的")|>ggmap()获取谷歌地图("waco德克萨斯州",缩放 = 12,地图类型 = "路线图")|>ggmap()

谷歌的地理编码和反向地理编码API可通过地理编码()revgeocode(),分别为:

地理代码("德克萨斯州韦科大学公园1301号,邮编:76798")#ℹ <https://maps.googleapis.com/maps/api/geocode/json?地址=1301+S+大学+公园+博士,+Waco,+TX+76798&key=xxx>
##A字型:1×2
#长纬度
#<dbl><dbl>
#1 -97.1  31.6修订代码(c(离子 = -97.1161,纬度 = 31.55098))#ℹ <https://maps.googleapis.com/maps/api/geocode/json?latlng=31.55098,-97.1161&键=xxx>
#警告:找到多个地址,将返回第一个地址:
#!   1301 S University Parks Dr,Waco,TX 76706,美国德克萨斯州
#!   美国德克萨斯州韦科市贝勒大道55号,邮编76706
#!   HV2M+9H美国德克萨斯州韦科
#!   Bear Trail,Waco,TX 76706,美国
#!   美国德克萨斯州罗宾逊76706
#!   美国德克萨斯州韦科
#!   美国德克萨斯州麦克伦南县
#!   美国德克萨斯州
#!   美国
#[1] “1301 S University Parks Dr,Waco,TX 76706,USA”

注:地理编码()使用谷歌的地理编码API对地址进行地理编码。请注意不要泄露敏感信息。Rundle、Bader、,和穆迪(2022)已经考虑了这个问题,并为此类数据。

还有一个mutate_geocode()其工作原理与数字播放器突变()功能:

易怒的(地址 =c(c)("白宫","","waco德克萨斯州"))|>可变地理代码(地址)#ℹ <https://maps.googleapis.com/maps/api/geocode/json?address=white+房子和钥匙=xxx>
#ℹ <https://maps.googleapis.com/maps/api/geocode/json?address=waco+德克萨斯州&key=xxx>
##A藏品:3×3
#地址lon-lat
#<chr><dbl><dbl
#1“白宫”-77.0 38.9
#2“”不适用不适用
#3“waco德克萨斯”-97.1 31.5

Treks使用谷歌的路由API为您提供路由(路由()徒步旅行()给出略有不同的结果;后者拥抱道路):

trek_df(跋涉_df) <-徒步旅行("德克萨斯州休斯","德克萨斯州瓦科",结构 = "路线")#ℹ <https://maps.googleapis.com/maps/api/directions/json?origin=houson,+texas&destination=waco,+teexas&key=xxx&mode=driving&alternatives=false&units=metric>qmap(qmap)("德克萨斯州大学站",缩放 = 8)+地理路径(原子发射光谱(x个 = 离子, = 纬度),颜色 = "蓝色",大小 = 1.5,阿尔法 = .5,数据 = trek_df(跋涉_df),线条端点 = "")#ℹ <https://maps.googleapis.com/maps/api/staticmap?center=学院%20station,%20texas&zoom=8&size=640x640&scale=2&maptype=地形和语言=en-en&key=xxx>
#ℹ <https://maps.googleapis.com/maps/api/geocode/json?address=学院+站点,+德克萨斯州&key=xxx>
#警告:ggplot2 3.4.0中不赞成对线条使用“大小”美学。
#请改用“线宽”。
#此警告每8小时显示一次。
#调用“lifecycle::last_lifecycle_warnings()”查看此警告的位置
#生成。

(他们还提供了从A点出发需要多长时间的信息至B点)

地图距离,无论是长度还是预期时间,都可以用地图发布者()). 此外,该函数被矢量化:

地图管理员(c("德克萨斯州休斯顿","达拉斯"),"德克萨斯州瓦科")#ℹ <https://maps.googleapis.com/maps/api/distancematrix/json?origins=dallas&destinations=waco,+texas&key=xxx&mode=驾驶>
#ℹ <https://maps.googleapis.com/maps/api/distancematrix/json?origines=houston,+texas&destinations=waco,+texas&key=xxx&mode=驾驶>
##A字型:2×9
#从至米公里秒分小时模式
#<chr><chr><int><dbl><int><dbl><dbl
#德克萨斯州达拉斯瓦科1号,邮编:155265 155。96.5 5303 88.4 1.47驾驶
#2休斯顿,德克萨斯州瓦科,德克萨斯州298224 298。185.    10217   170.   2.84驾驶

谷歌地图API密钥

几年前,谷歌已经更改了其API要求,ggmap(ggmap)用户现在需要在谷歌注册。来自从用户的角度来看,这基本上有三种后果:

  1. 用户必须在谷歌注册。你可以在https://mapsplatform.google.com。虽然它需要有效的信用卡(对不起!),似乎有相当多的免费使用在你产生费用之前,即使在那时,费用也很适中轻量使用。

  2. 用户必须启用他们打算使用的API。可能出现的情况ggmap(ggmap)用户作为一个总体“谷歌地图”产品,谷歌事实上,它提供了几种与地理相关的解决方案。例如贴图静态美国石油学会提供地图图像,而地理编码美国石油学会提供地理编码和反向地理编码服务。除了相关服务条款,一般ggmap(ggmap)用户不需要想想不同的服务。例如,您只需要记住获取谷歌地图()获取地图,地理编码()地理编码(使用谷歌,DSK完成)等,以及ggmap(ggmap)处理查询为你。然而,您确实需要在使用之前启用API他们。你只需要做一次,然后他们就准备好了供您使用。启用API只需单击几个单选按钮上面列出的Google Maps Platform web界面上的按钮,因此这很容易。

  3. 在R内部,加载新版本的ggmap(ggmap),您需要提供ggmap(ggmap)使用API密钥搞砸价值(想想字符串jibberish),它向谷歌服务器验证您的身份。这可能是临时完成register_google(key=“[您的密钥]”)或永久使用register_google(key=“[your key]”,write=TRUE)(注意:这将覆盖您的~/.Renviron公司通过替换/添加相关线路)。如果你使用前者,要知道你需要重新做每次你重置R。

您的API密钥是私有的对你来说是独一无二的,所以小心不要分享它在线,例如在GitHub问题中或保存在共享R中脚本文件。如果你无意中分享了它,只需登录谷歌的网站即可并重新生成密钥-这将使旧密钥失效。保管好你的钥匙通过以下方式,隐私变得更容易ggmap(ggmap)擦掉钥匙默认情况下,当URL显示在控制台中时,它们将显示有点像键=xxx(请阅读注册表_谷歌()有关这一点的更多信息,请参阅文档。)

的新版本ggmap(ggmap)很快就可以使用CRAN了,但您可以安装最新版本,包括中的一个重要错误修复地图发布者(),在这里具有:

如果(!requireNamespace(必需命名空间)("开发工具"))安装.包("开发工具")开发工具::安装github("dkahle/ggmap公司")

安装

  • 来自CRAN:install.packages(“ggmap”)

  • 来自Github:

如果(!requireNamespace(必需命名空间)("遥控器"))安装.包("遥控器")遥控器::安装github("dkahle/ggmap公司")