2015-08-10 5 views
1

У меня есть 20 мест UTM, приведенные ниже. EDIT Я включил данные, включенные в Lat Long, и добавил дополнительный код ниже. Я получаю тот же результат с UTM или Lat, Long. Я дважды проверял точки в Google Earth, и они, безусловно, находятся в пределах базового уровня, который я определяю ниже. Любые другие предложения ...точки построения с geom_point() и gmap()

Data <- structure(list(Latitude = c(43.383819, 43.383787, 43.383838, 
43.384088, 43.392086, 43.393099, 43.388453, 43.384829, 43.399706, 
43.40308, 43.408739, 43.40765, 43.407522, 43.413508, 43.418288, 
43.416157, 43.417822, 43.417221, 43.417209, 43.417603), Longitude = c(-111.130989, 
-111.130988, -111.130996, -111.129578, -111.122884, -111.12143, 
-111.126514, -111.12809, -111.125333, -111.126616, -111.139745, 
-111.140401, -111.140614, -111.161305, -111.158135, -111.153607, 
-111.141158, -111.13867, -111.138528, -111.138884), UTM_E = c(489389.998429055, 
489390.073847615, 489389.434748439, 489504.334690555, 490047.849470232, 
490165.770080405, 489753.250369502, 489624.98731782, 489850.781221576, 
489747.455360571, 488685.407063201, 488632.089708587, 488614.819667178, 
486940.804672798, 487198.453753294, 487564.574155778, 488572.710048877, 
488774., 488785.505688775, 488756.758707237), UTM_N = c(4803447.00888757, 
4803443.45497495, 4803449.11983808, 4803476.70438902, 4804364.10875695, 
4804476.43597084, 4803961.08216192, 4803558.81058659, 4805210.65084223, 
4805585.51119635, 4806215.67635871, 4806094.82531047, 4806080.6391722, 
4806748.45554565, 4807278.81358453, 4807041.46688704, 4807224.59410279, 
4807157.51112311, 4807156.15933319, 4807199.96352795)), .Names = c("Latitude", 
"Longitude", "UTM_E", "UTM_N"), row.names = c(NA, 20L), class = "data.frame") 

И можно построить их в использовании ggplot

library(ggplot2) 

ggplot(aes(x = UTM_E, y = UTM_N), data = Data)+ geom_point() 
ggplot(aes(x = Latitude, y = Longitude), data = Data)+ geom_point() 

Однако я хочу, чтобы построить их на карте базового слоя с использованием qmap и определили объект ниже.

library(ggmap) 
Area <- "palisades wyoming" 
BaseMap <- qmap(Area , zoom = 10) 
BaseMap 

После полезного сайта ggmap linked here, я пытаюсь построить точки над базовой картой со следующим кодом

BaseMap + geom_point(aes(x = UTM_E, y = UTM_N), data = Data) 
BaseMap + geom_point(aes(x = Latitude, y = Longitude), data = Data) 

но получить следующее предупреждение

Removed 20 rows containing missing values (geom_point). 

Почему значения отсутствуют, если они не сопоставлены с ggplot(), но включены только с geom_point()

Отображение точек в пределах ggplot() возвращает следующую ошибку несовместимым между ggplot() и qmap()

BaseMap + ggplot(aes(x = UTM_E, y = UTM_N), data = Data)+ geom_point() 

Error in p + o : non-numeric argument to binary operator 
In addition: Warning message: 
Incompatible methods ("+.gg", "Ops.data.frame") for "+" 

Спасибо заранее.

+0

Возможно, значения находятся за пределами границ вашей карты. Когда вы используете 'ggplot', именно ваши точечные данные определяют пределы вашего сюжета. Когда вы сначала получаете карту, карта устанавливает ограничения, а ваши данные превышают эти пределы, поэтому предупреждение говорит вам, что они не построены. – Gregor

+1

'ggplot' и' qmap' оба создали сюжет с нуля, вы не можете их комбинировать. Я думаю, что 'qmap' рассчитывает использовать единицы широты и долготы. Ваши данные в UTM, поэтому я бы попытался преобразовать сначала в lat/long. – Gregor

+1

Действительно, 'ggmap' ищет lat/lon. https://cran.r-project.org/web/packages/ggmap/ggmap.pdf. https://sites.google.com/a/lakeheadu.ca/yong-luo/blog/convert-utm-to-longlat-in-r может помочь с преобразованием. –

ответ

0

Вы можете комбинировать их. Не добавляйте карту в объект, просто вызовите его с кодом geom_point:

qmap(Area , zoom = 10) + geom_point(aes(x = UTM_E, y = UTM_N), data = Data) 

И вы получите вашу карту на печать.

Удачи!