Как успешно поместить карту в ограничивающую рамку долготы / широты с правильным географическим масштабом и нанести точки GPS - PullRequest
0 голосов
/ 08 мая 2020

Краткое описание проблемы

Прошу прощения за простой вопрос, но я новичок в R и испытываю трудности при выполнении задач с картами.

У меня есть коллекция точек GPS долготы и широты в десятичной форме, которые были собраны в поле. Моя цель - нанести эти точки GPS на карту Шри-Ланки, которую я извлек из ресурсов GADM.

После запуска кода южная оконечность Шри-Ланки выступает из верхней середины прямоугольника сетки долготы / широты, а не все изображение Шри-Ланки, видимое в поле сетки долготы / широты (см. Изображение 2).

Задача:

Я могу создать карту Шри-Ланки независимо (см. Изображение 2), а поле сетки долготы / широты отдельно (см. Изображение 1) ). Однако у меня возникают проблемы с нанесением карты Шри-Ланки внутри поля сетки широты / долготы в сочетании с нанесением точек GPS внутри поля сетки в правильных положениях, в которых данные были собраны в поле.

Желаемый результат показан на изображении 3 (см. Ниже). Я пытаюсь разместить изображение 1 внутри поля сетки с правильной шкалой долготы / широты для Шри-Ланки на краю поля сетки. Наконец, я хотел бы нанести точки GPS на карту, как показано в примере на изображении 3.

Если кто-нибудь сможет мне помочь, я был бы невероятно благодарен!

Я действительно не могу понять, что здесь происходит не так, из-за моего незнания и после многих часов попыток различных комбинаций кода R, чтобы решить проблему, пытаясь воспроизвести этот вопрос о переполнении стека и следуя этому упражнение по моделированию распространения видов .

С уважением.

R-код

##Libraries that are going to be used:

   library("sp")
   library("raster")
   library("maptools")
   library("rgdal")
   library("dismo")
   library("spatialEco")
   library("ggplot2")
   library("dplyr")

###Open the directory pathway

 Blue.whale<-readr::read_csv("Blue_Whale_GPS_Best.csv")
 summary(Blue.whale)

##Plotting the map of Sri Lanka
   bioclim1.data <- getData('GADM', country='LKA', level=1)
   Sri_Lanka<-plot(bioclim1.data, main="Adm. Boundaries Sri Lanka Level 0")


 ###My attempt at creating a longitude/latitude grid box

    Sri.Lanka.bbox<-bbox(Blue.whale)
    xlim <- c(min(Sri.Lanka.bbox[1,1]), max(Sri.Lanka.bbox[1,2]))
    ylim <- c(min(Sri.Lanka.bbox[2,1]), max(Sri.Lanka.bbox[2,2]))

  ###Plot the longitude/latitude grid box
     dev.new()
     plot(Sri_Lanka, xlim=xlim, ylim=ylim, add=T)


 ##Plot map
   par(mfrow=c(1,1))
   dev.new()

####Convert the format of the data from factors to numeric

    Latitude<-as.numeric(Blue.whale$Latitude)
    Longitude<-as.numeric(Blue.whale$Longitude)

##To make species distribution modeling more streamlined, it is useful to have an 
##idea of how widely our species is geographically distributed. We are going to find 
 ##general latitudinal and longitudinal boundaries and store this information:

  # Determine geographic extent of our data
    max.lat <- ceiling(max(Blue.whale$Latitude))
    min.lat <- floor(min(Blue.whale$Latitude))
    max.lon <- ceiling(max(Blue.whale$Longitude))
    min.lon <- floor(min(Blue.whale$Longitude))
    geographic.extent <- extent(x = c(min.lon, max.lon, min.lat, max.lat))

     # Plot the base map

       dev.new()

       plot(bioclim1.data, 
            xlim = c(min.lon, max.lon),
            ylim = c(min.lat, max.lat),
            axes = TRUE, 
            col = "grey95")

       # Add the points for individual observation
         points(x = Blue.whale$Longitude, 
                y = Blue.whale$Latitude, 
                col = "olivedrab", 
                pch = 15, 
                cex = 0.50)

Изображение 1:

enter image description here

Изображение 2:

enter image description here

Изображение 3:

enter image description here

1 Ответ

2 голосов
/ 13 мая 2020

Для Примера 3 они обрезали карту США, чтобы сосредоточить внимание на том, где был обнаружен этот вид, в то время как вы хотите показать, где наблюдались киты, по отношению ко всей стране Шри-Ланка. Чтобы отобразить как всю страну, так и все наблюдения, вам нужно изменить границы графика, чтобы они соответствовали крайним точкам двух источников данных. Этот код должен создать желаемый сюжет, при необходимости вы можете добавить ceiling / floor аргументы для улучшения эстетики:

##get bounding box of Sri Lanka shapefile
bb=bioclim1.data@bbox

plot(bioclim1.data, 
     xlim = c(min(c(min.lon,bb[1,1])), max(c(max.lon,bb[1,2]))),
     ylim = c(min(c(min.lat,bb[2,1])), max(c(max.lat,bb[2,2]))),
     axes = TRUE, 
     col = "grey95")

# Add the points for individual observation
points(x = Blue.whale$Longitude, 
       y = Blue.whale$Latitude, 
       col = "olivedrab", 
       pch = 15, 
       cex = 0.50)
...