Как я могу создать простую карту, состоящую из базовой карты (OSM), плюс растр, плюс заголовок и масштабная линейка на R (ggplot?) - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь получить простое изображение, которое можно экспортировать. Мне нужно, чтобы это была базовая карта из OpenStreetMaps (или тычинка). Затем у меня есть проекция растра на EPSG: 27700. В идеале мне нужно добавить заголовок и масштабную линейку. И я действительно изо всех сил пытаюсь это сделать.

Учитывая следующий растр в ascii:

ncols 3
nrows 3
xllcorner 548886.
yllcorner 96639.
cellsize 3000.
NODATA_value -999.0
 3 -999.000 -999.000 
 -999.000 1 2 
 -999.000 3 4 

я могу построить его:

library(ggplot2)
library(ggmap)
library(ggspatial)
library(ggrepel)
library(raster)
library(rasterVis)
library(rgdal)

crs_27700 = "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs"
example = "C:/Users/x0x0x0x/Desktop/example.asc"
ex_ras = raster(example, crs= crs_27700)
pts_file = rasterToPoints(ex_ras)
pts_df = data.frame(pts_file)
colnames(pts_df) <- c("Easting","Northing","MAP")
ggplot(data=pts_df, aes(y=Northing, x=Easting))+
  geom_raster(aes(fill=MAP)) +
  #geom_point(data=sites, aes(x=x, y=y), color="white", size=3, shape=4) +
  theme_bw() +
  coord_equal() +
  scale_fill_gradient("Level [mAOD]", limits=c(0,4)) +
  theme(axis.title.x = element_text(size=16),
        axis.title.y = element_text(size=16, angle=90),
        axis.text.x = element_text(size=14),
        axis.text.y = element_text(size=14),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        legend.key = element_blank()
  ) 

Но я невозможно построить базовую карту под растром. Но я могу получить базовую карту.

library(rosm)
library(prettymapr)
crs_4326 = "+proj=longlat +datum=WGS84 +no_defs"
wgs84_extent = projectExtent(ex_ras, crs_4326)@extent
ns <- makebbox(w=wgs84_extent@xmin ,e=wgs84_extent@xmax , s=wgs84_extent@ymin , n=wgs84_extent@ymax)
bsmp <- osm.raster(ns, projection=CRS(crs_27700), crop=TRUE)

Я могу экспортировать ее как tif, и я вижу ее, если открываю с помощью Q-gis. Но я понятия не имею, как построить базовую карту, а затем поверх моего растра.

Я также пробовал использовать ggmap, но столкнулся с множеством проблем, связанных с необходимостью конвертировать все в WGS84, хотя я хотел бы чтобы построить все, сохраняя исходную проекцию и координаты.

Как я могу построить базовую карту, а затем растр.

Спасибо

...