Получить карту с заданными граничными координатами
Я хочу получить карту с RgoogleMaps из R с определенной границей координат.
То, что я могу назвать, это GetMap и указать центр, я должен добавить уровень масштабирования. Все работает отлично, за исключением того, что я не получаю карту изображения, ограниченную координатами, которые я выбираю.
Вот пример:
lat <- c(44.49,44.5)
lon <- c(11.33,11.36)
center = c(mean(lat), mean(lon))
zoom <- 14
mmap <- GetMap(center = center, zoom=zoom, maptype= "satellite", destfile = "m.png")
Проблема заключается в том, что в качестве параметра передается только центр, и, следовательно, все изображение, которое я вижу, зависит от уровня масштабирования. Поэтому я не могу понять, каковы границы изображения, которое я получаю. Я хочу, чтобы изображение было ограничено точно с координатами, которые я определяю. Возможно ли это (также с другими картами)?
Ответы
Ответ 1
Вот один из способов. Во-первых, вы получаете карту с определенным увеличением. Затем вы добавляете лимит lon и lat при рисовании фигуры, которую вы можете сделать с помощью scale_x_continuous
и scale_y_continuous
.
library(ggmap)
library(ggplot2)
### Set a range
lat <- c(44.49, 44.5)
lon <- c(11.33, 11.36)
### Get a map
map <- get_map(location = c(lon = mean(lon), lat = mean(lat)), zoom = 14,
maptype = "satellite", source = "google")
### When you draw a figure, you limit lon and lat.
foo <- ggmap(map)+
scale_x_continuous(limits = c(11.33, 11.36), expand = c(0, 0)) +
scale_y_continuous(limits = c(44.49, 44.5), expand = c(0, 0))
foo
![enter image description here]()
Ответ 2
Другой вариант - использование OpenStreetMap в качестве источника для вашей карты. С помощью функции get_map
из пакета ggmap
вы можете указать границы своей карты, когда используете OpenStreetMap в качестве источника. С:
mmap <- get_map(location = c(11.33,44.49,11.36,44.50), source = "osm")
ggmap(mmap)
вы получаете:
![введите описание изображения здесь]()
Однако этот метод не работает с GoogleMaps. Указание границ с помощью GoogleMaps в качестве источника даст вам следующее предупреждение:
Предупреждение: ограничивающая рамка для google - только пространственная протяженность приблизительны. преобразование ограничивающей рамки в центр/масштабирование. (Экспериментальный)
Недостаток использования OpenStreetMap заключается в том, что у вас не будет доступа к спутниковым изображениям.
Ответ 3
Другим способом для фактической интерактивной Карты Google является мой пакет googleway
library(googleway)
lat <- c(44.49,44.5)
lon <- c(11.33,11.36)
zoom <- 14
mapKey <- 'your_api_key'
google_map(location = c(mean(lat), mean(lon)), zoom = zoom, key = mapKey)
![введите описание изображения здесь]()
Что, будучи Google Map, поставляется со спутниковыми изображениями как стандартное
![введите описание изображения здесь]()
Ответ 4
Хотелось бы, чтобы я раньше видел этот вопрос.
Пакет RgoogleMaps предлагает два способа получения карты: GetMap (центр, масштабирование) и GetMap.bbox(lonR, latR), который просто берет ограничительную рамку в качестве параметров. Уровень масштабирования автоматически вычисляется. Я думаю, что последняя функция может быть тем, что вы ищете.
Маркус