我在 R 中运行传单包的简单示例,例如:
library(leaflet)
library(ggmap)
>somePlace <-ggmap::geocode("Vienna")
Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Vienna&sensor=false
>somePlace
lon lat
1 16.37382 48.20817
>leaflet(somePlace) %>% addTiles() %>% addMarkers()
Run Code Online (Sandbox Code Playgroud)
地图用蓝色标记显示灰色空间:
没有 OSM 空间可视化的痕迹。你能指出问题出在哪里吗?
提前感谢建设性讨论!
我的配置:R 版本 3.2.4(2016-03-10),平台:x86_64-w64-mingw32/x64(64 位),Windows Server 2012 x64(build 9200),ggmap_2.6.1,leaflet_1.0.1。
类似的问题(但没有合适的解决方案): R 传单包生成空白(灰色)地图 [Ubuntu 14.04] R 传单 RStudio 查看器空白(灰色)地图 [Windows 7]
我想使用R中的世界地图来显示我的数据,其中标签将被添加到某些点(给定坐标).标签应该是一些3D矩形,其高度与数据表中的值成比例.我会使用R包"传单"(或任何替代,如果更好).世界上大约有10-15个点,每个位置有两个值(具体地,点是主要油田的位置,并且值例如是大小和储量).我想为每个点设置两个这样的3D矩形,比方说,红色和蓝色站在彼此附近,具有适当的高度和数字,并且每个点都标有油田的名称.我找到了带有传单包的解决方案,在地图上添加了适当半径的圆圈.
数据和库由代码加载:
library(leaflet)
basins<-read.csv("somedata.csv")
Run Code Online (Sandbox Code Playgroud)
somedata.csv具有以下结构(仅作为最小工作示例的四个数据):
basin,lat,lon,res.density,rel.area
Central Sumatra,1,96,16.7,75
North Sea,58.4,2,20,24
Maracaibo basin,9,-71,74.4,14.3
Los Angeles,33,-118,31.2,32
Run Code Online (Sandbox Code Playgroud)
圆圈标记的映射由命令调用
m=leaflet(data = basins) %>% addTiles() %>% addCircleMarkers(~lon, ~lat , popup = ~as.character(basin),radius=~res.density*0.4,label=~htmlEscape(basin),labelOptions=labelOptions(noHide=T,textOnly=TRUE,direction="bottom"))
Run Code Online (Sandbox Code Playgroud)
然而,这个解决方案并不是那么好,因为它不允许可视化第二个值(通过参数radius = ~res.density,其中res.density是我的.csv表中盆的第一个值的名称).
我想重现一些看起来像这张图片的东西,它是由GMT制作的.具有普通(2D)地图就足够了,但是每个点需要两个这样的矩形,其中字段的名称和每个矩形的值.
来自GMT包的图片
根据许多国家/地区代码列表,我正在尝试向传单世界地图添加多个多边形。我试图使用 R 循环来添加多边形。这是我从列表 1 中手动添加多边形的代码:
library(sp)
library(raster)
library(leaflet)
library(maps)
library(tidyverse)
countries_1 <- c('PAK','TUR','BGR')
adm1 <- getData('GADM', country='PAK', level=0)
adm2 <- getData('GADM', country= 'TUR', level=0)
adm3 <- getData('GADM', country= 'BGR', level=0)
leaflet() %>%
addTiles() %>%
addPolygons(data=adm1, weight = 3, fillColor = 'purple', color = 'purple') %>%
addPolygons(data=adm2, weight = 3, fillColor = 'purple', color = 'purple') %>%
addPolygons(data=adm3, weight = 3, fillColor = 'purple', color = 'purple')
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用循环添加多个多边形图层,以便为 list_n:
countries_n <- ('ctry1','ctry2','ctry3',...'ctryn')
for (i in country_n) {
countries <- basemap %>% …Run Code Online (Sandbox Code Playgroud) 您好,我正在创建一个环境闪亮的应用程序,我想在其中使用传单地图创建一些基于 openair 包的简单绘图(https://rpubs.com/NateByers/Openair)。
\n\nAq_measurements() 一般形式
\n\nAQ<- (aq_measurements(country = \xe2\x80\x9ccountry\xe2\x80\x9d, city = \xe2\x80\x9ccity\xe2\x80\x9d, location = \xe2\x80\x9clocation\xe2\x80\x9d, parameter = \xe2\x80\x9cpollutant choice\xe2\x80\x9d, date_from = \xe2\x80\x9cYYYdateY-MM-DD\xe2\x80\x9d, date_to = \xe2\x80\x9cYYYY-MM-DD\xe2\x80\x9d)。
位置数据框中可用的所有参数。
\n\nworldmet() 一般形式
\n\nmet <- importNOAA(code = "12345-12345", year = YYYYY:YYYY)\nRun Code Online (Sandbox Code Playgroud)\n\nNOAA 代码可在位置数据框中找到
\n\n下面我创建了一个初始数据框的示例:
\n\nlocation = c("100 ail","16th and Whitmore","40AB01 - ANTWERPEN") \nlastUpdated = c("2018-02-01 09:30:00", "2018-02-01 03:00:00", "2017-03-07 10:00:00") \nfirstUpdated = c("2015-09-01 00:00:00","2016-03-06 19:00:00","2016-11-22 15:00:00")\npm25=c("FALSE","FALSE","FALSE")\npm10=c("TRUE","FALSE","FALSE")\nno2=c("TRUE","FALSE","FALSE")\nlatitude=c(47.932907,41.322470,36.809700)\nlongitude=c(106.92139000,-95.93799000\n,-107.65170000)\n\ndf = data.frame(location, lastUpdated, firstUpdated,latitude,longitude,pm25,pm10,no2)\nRun Code Online (Sandbox Code Playgroud)\n\n作为一般想法,我希望能够根据此数据框单击地图中的某个位置。然后我有 1selectInput()和 2 …
我想问一下如何sf在传单中绘制对象,leaflet package我知道mapview package可以绘制它,但是我更喜欢使用 leafet 包。
我在下面提供了示例:
library(leaflet)
library(eurostat)
library(dplyr)
library(ggplot2)
options(readr.default_locale=readr::locale(tz="Europe/Berlin"))
df60 <- get_eurostat_geospatial(resolution = 60)
CE.sf <- df60 %>%
dplyr::filter(LEVL_CODE == 2 & CNTR_CODE %in% c("AT","CZ","DE","HU","PL","SK")) %>%
dplyr::select(NUTS_ID)
plot(CE.sf)
CE.sf %>%
ggplot() +
geom_sf(color = "black", size = 0.4)
CE = sf::as_Spatial(CE.sf)
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data= CE, color = "green")
Run Code Online (Sandbox Code Playgroud)
我需要从传单中的第 15 行重现情节,我在这里找到了一些想法:https : //gis.stackexchange.com/questions/239118/r-convert-sf-object-back-to-spatialpolygonsdataframe
但是,使用这种方法不起作用。
我有一个棘手的问题。
我正在尝试将一些数据可视化为一种“漂亮”的元数据浏览器。它是以下格式的基本点数据:
> print(tempdata[1:5, ])
Station Lat_dec Long_dec Surface_T
1 247 50.33445 -2.240283 15.19
2 245 50.58483 -2.535217 14.11
3 239 50.16883 -2.509250 15.41
4 225 50.32848 -2.765967 15.34
5 229 50.63900 -2.964800 14.09
Run Code Online (Sandbox Code Playgroud)
我可以使用 Lat、Long 和 Temp 创建以下 voronoi 多边形,并使用一个简单的框来裁剪它们,以免它们永远延伸。
# Creating Stations
stations <- st_as_sf(df,
coords = c("Long_dec","Lat_dec")
)
# Create voronoi/thiessen polygons
v <- stations %>%
st_union() %>%
st_voronoi() %>%
st_collection_extract()
# Creating boundary box
box <- st_bbox(stations) %>%
st_as_sfc()
# Clipping voronoi to boundary box
hmm …Run Code Online (Sandbox Code Playgroud) 例如,我leaflet使用 package.json 制作了一个简单的地图tmap。结果是一个带有交互式地图的 html,显示了建筑物的一些多边形(在此处查找数据、代码和地图本身)。
我希望当 html 用户通过鼠标单击选择多边形时,以某种方式突出显示多边形,就像在 QGIS 中一样(屏幕截图调整)。R中有没有办法做这样的事情?