Координаты участка на карте

Я пытаюсь построить свои координаты с помощью R. Я уже пытался следить за другим сообщением (R: нанести сгруппированные координаты на карту мира; Нанесение координат нескольких точек на карту Google в R), но мои данные не очень успешны.

Я пытаюсь создать плоскую карту мира с моей координатой GPS в виде цветных точек (каждая область имеет определенный цвет):

area         lat    long
Agullhas    -38,31  40,96
Polar       -57,59  76,51
Tasmanian   -39,47  108,93

library(RgoogleMaps)
lat <- c(-38.31, -35.50) #define our map's ylim
lon <- c(40.96,37.50) #define our map's xlim
center = c(mean(lat), mean(lon))  #tell what point to center on
zoom <- 2 #zoom: 1 = furthest out (entire globe), larger numbers = closer in
terrmap <- GetMap(center=center, zoom=zoom, maptype= "satallite", destfile = "satallite.png")

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

Может ли кто-нибудь помочь мне в этом?

другой вариант, который я пробовал:

library(maps)
library(mapdata)
library(maptools)
map(database= "world", ylim=c(-38.31, -35.5), xlim=c(40.96, 37.5), col="grey80", fill=TRUE, projection="gilbert", orientation= c(90,0,225))
lon <- c(-38.31, -35.5)  #fake longitude vector
lat <- c(40.96, 37.5)  #fake latitude vector
coord <- mapproject(lon, lat, proj="gilbert", orientation=c(90, 0, 225))  #convert points to projected lat/long
points(coord, pch=20, cex=1.2, col="red")  #plot converted points

но координаты оканчиваются в неправильном положении, и я не уверен, почему

Надеюсь, кто-то может помочь


person flacchy    schedule 17.04.2014    source источник
comment
получение этой ошибки, поэтому точки не отображаются на карте Map с URL: maps.googleapis.com/maps/api/ Условия использования API Карт Google: developers.google.com/maps/terms Я что-то упускаю?   -  person flacchy    schedule 17.04.2014
comment
сегодня работает :) единственная проблема сейчас в том, что если я изменяю масштабирование, чтобы соответствовать всем точкам на одном графике, используя масштаб 2, спутниковая карта исчезает, и я вижу только серый график с широтой и долготой. mapgilbert ‹- get_map (location = c (lon = mean (df $ lon), lat = mean (df $ lat)), zoom = 2, maptype = satellite, scale = 2)   -  person flacchy    schedule 22.04.2014
comment
Я не знаю почему, но по какой-то причине вы не можете использовать уровни масштабирования 1 и 2. Возможно, этот вопрос & ответы дадут вам возможное решение.   -  person Jaap    schedule 24.04.2014


Ответы (4)


В качестве альтернативы RgoogleMaps вы также можете использовать комбинацию ggplot2 с ggmap.

С помощью этого кода:

# loading the required packages
library(ggplot2)
library(ggmap)

# creating a sample data.frame with your lat/lon points
lon <- c(-38.31,-35.5)
lat <- c(40.96, 37.5)
df <- as.data.frame(cbind(lon,lat))

# getting the map
mapgilbert <- get_map(location = c(lon = mean(df$lon), lat = mean(df$lat)), zoom = 4,
                      maptype = "satellite", scale = 2)

# plotting the map with some points on it
ggmap(mapgilbert) +
  geom_point(data = df, aes(x = lon, y = lat, fill = "red", alpha = 0.8), size = 5, shape = 21) +
  guides(fill=FALSE, alpha=FALSE, size=FALSE)

вы получите следующий результат: введите описание изображения здесь

person Jaap    schedule 17.04.2014
comment
Я не уверен, что это проблема с моей версией R. Я продолжаю получать эту ошибку: Ошибка в файле download.file (url, destfile = destfile, quiet =! Messaging, mode = wb): невозможно открыть URL 'maps.googleapis.com/maps / api / 'Также: Предупреждающее сообщение: В download.file (url, destfile = destfile, quiet =! messaging, mode = wb): невозможно открыть: статус HTTP «403 Запрещено», вы можете сказать мне, что такое неправильный??? Я использую те же команды ... - person flacchy; 21.04.2014
comment
Может быть, вы могли бы включить результат sessionInfo() в свой пост? Я использую R 3.0.2 (и RStudio) с ggplot2 0.9.3.1 и ggmap 2.3 - person Jaap; 21.04.2014
comment
R версия 2.15.3 (01.03.2013) Платформа: x86_64-apple-darwin9.8.0 / x86_64 (64-разрядная) - person flacchy; 22.04.2014
comment
Он дает мне URL-адрес очень хорошо, к сожалению, мне нужно вырезать / вставить его в браузер вручную, чтобы увидеть карту. В этом URL-адресе отсутствуют точки и метки снаружи - person demongolem; 06.11.2015
comment
@demongolem, код у меня работает нормально, что ты пробовал? - person Jaap; 06.11.2015
comment
@Jaap Извини за ошибку. При поиске я забыл использовать оператор печати. - person demongolem; 06.11.2015
comment
@Jaap отлично выглядит! К сожалению, больше не работает с ggmap 2.6 (ошибка: GeomRasterAnn был собран с несовместимой версией ggproto. Пожалуйста, переустановите пакет, который предоставляет это расширение.) - person mitchus; 17.10.2017
comment
@mitchus Когда я запускаю код в своем ответе с помощью ggplot2 2.2.1 и ggmap 2.6.1, он работает нормально и дает мне тот же сюжет. Может еще что-то происходит? - person Jaap; 17.10.2017
comment
Для карты Google требуется ключ API - person Suat Atan PhD; 23.08.2019

Другой вариант - использовать пакет листовок (как предлагается здесь). В отличие от Google Maps, он не требует ключа API.

install.packages(c("leaflet", "sp"))
library(sp)
library(leaflet)
df <- data.frame(longitude = runif(10, -97.365268, -97.356546), 
                 latitude = runif(10, 32.706071, 32.712210))

coordinates(df) <- ~longitude+latitude
leaflet(df) %>% addMarkers() %>% addTiles()

Нанесите 10 случайных точек поблизости от TCU

person bonna    schedule 23.02.2019
comment
Как бы вы добавили переменную к маркеру? то есть размер маркера, относящегося к населению. - person adm; 28.03.2020
comment
Вместо addMarkers() используйте addCircleMarkers(radius = population) как как описано в руководстве - person bonna; 03.04.2020

Другой альтернативой является пакет plotGoogleMaps, который позволяет строить график в навигаторе, увеличивать и уменьшать масштаб и т. Д. Затем вы можете сделать снимок экрана своего изображения, чтобы сохранить его (хотя помните, что карты Google по закону должны использоваться для Интернета. ).

 library("plotGoogleMaps")
 lat <- c(-38.31, -35.50) #define our map's ylim
 lon <- c(40.96,37.50) #define our map's xlim

 # make your coordinates a data frame 
 coords <- as.data.frame(cbind(lon=lon,lat=lat))

 # make it a spatial object by defining its coordinates in a reference system
 coordinates(coords) <- ~lat+lon 

 # you also need a reference system, the following should be a fine default
 proj4string(coords) <- CRS("+init=epsg:4326")
 # Note: it is a short for: 
 CRS("+init=epsg:4326")
 > CRS arguments:
 >  +init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 

 # then just plot
 a <- plotGoogleMaps(coords)
 # here `a <-` avoids that you get flooded by the html version of what you plot 

И вы получите:  введите описание изображения здесь

person cmbarbu    schedule 03.11.2015
comment
координаты (coords) ‹- ~ lat + lon должны быть координатами (coords)‹ - ~ lon + lat - person John Waller; 06.04.2017

Вот решение, использующее только Rgooglemaps, по запросу пользователя.

# get map (from askers OP, except changed map type = "Satallite" to type = "Satellite")
library(RgoogleMaps)
lat <- c(-38.31, -35.50) #define our map's ylim
lon <- c(40.96,37.50) #define our map's xlim
center = c(mean(lat), mean(lon))  #tell what point to center on
zoom <- 2 #zoom: 1 = furthest out (entire globe), larger numbers = closer in
terrmap <- GetMap(center=center, zoom=zoom, type= "satellite", destfile = "satellite.png")

# plot points and save image
lat <- c(-38.31, -57.59, -39.47)
lon <- c(40.96, 76.51, 108.93)
png('map.png')
PlotOnStaticMap(terrmap, lat = lat, lon = lon, pch = 20, col = c('red', 'blue', 'green'))
dev.off()

введите здесь описание изображения

person sebdalgarno    schedule 01.03.2018