2014-09-03 17 views
14

Tôi muốn lấy bản đồ với RgoogleMaps từ R, với một ranh giới tọa độ cụ thể.Lấy Bản đồ với các tọa độ ranh giới được chỉ định

Những gì tôi có thể gọi là GetMap và chỉ định một trung tâm, tôi phải thêm mức thu phóng. Tất cả mọi thứ hoạt động tốt, ngoại trừ việc tôi không nhận được một bản đồ hình ảnh bị ràng buộc với các tọa độ mà tôi chọn.

Dưới đây là một ví dụ:

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") 

Vấn đề là chỉ trung tâm được truyền như một tham số, và do đó toàn bộ hình ảnh tôi thấy là phụ thuộc vào mức độ zoom. Vì vậy, tôi thực sự không thể hiểu được ranh giới của hình ảnh tôi nhận được là gì. Những gì tôi muốn làm là để có được một hình ảnh bị ràng buộc chính xác với các tọa độ mà tôi đang xác định. Điều này có khả thi (với các gói bản đồ khác) không?

Trả lời

19

Đây là một cách. Đầu tiên, bạn sẽ có được một bản đồ với một zoom nhất định. Sau đó, bạn thêm giới hạn lon và lat khi vẽ hình, bạn có thể thực hiện với scale_x_continuousscale_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

+0

Điều này làm việc, cảm ơn bạn :) – lbedogni

+0

Niềm vui, bạn đời. – jazzurro

+1

Quy trình này tìm nạp hình ảnh ở mức thu phóng thấp (14) và sau đó cắt hình ảnh dẫn đến hình ảnh có độ phân giải thấp. Cách tiếp cận tốt hơn là thay đổi đối tượng mức độ thành google centroid và mức thu phóng trực tiếp. – Faridcher

6

Một lựa chọn khác là sử dụng OpenStreetMap như một nguồn cho bản đồ của bạn. Với chức năng get_map từ gói ggmap, bạn có thể chỉ định ranh giới của bản đồ khi bạn sử dụng OpenStreetMap làm nguồn. Với:

mmap <- get_map(location = c(11.33,44.49,11.36,44.50), source = "osm") 
ggmap(mmap) 

bạn nhận được:

enter image description here

Tuy nhiên, phương pháp này không làm việc với GoogleMaps. Việc chỉ định ranh giới bằng GoogleMaps dưới dạng nguồn sẽ cung cấp cho bạn các cảnh báo sau:

Cảnh báo: hộp giới hạn được chỉ định cho google - không gian chỉ gần đúng. chuyển đổi giới hạn hộp để trung tâm/zoom đặc điểm kỹ thuật. (thử nghiệm)

Hạn chế sử dụng OpenStreetMap là bạn sẽ không có quyền truy cập vào hình ảnh vệ tinh.

1

Một cách khác cho một tương tác Google Map thực tế là với gói googleway tôi

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) 

enter image description here

nào, là một bản đồ của Google, đi kèm với imagary vệ tinh như là tiêu chuẩn

enter image description here

0

Tôi ước gì tôi đã nhìn thấy câu hỏi này trước đó. Gói RgoogleMaps cung cấp hai cách để lấy bản đồ: Bản đồ (trung tâm, thu phóng)GetMap.bbox (lonR, latR) chỉ đơn giản là lấy hộp giới hạn làm tham số. Mức thu phóng được tính tự động. Tôi nghĩ rằng chức năng thứ hai có thể là những gì bạn đang tìm kiếm. Markus

Các vấn đề liên quan