如何成功地将地图放入具有正确地理比例的 longitude/latitude 边界框并绘制 GPS 点
How to successfully fit a map into a longitude/latitude bounding box with the correct geographical scale and plot GPS points
问题概要
很抱歉问了一个简单的问题,但我是 R 的新手,我在使用地图执行任务时遇到困难。
我有一个十进制形式的经纬度 GPS 点集合,这些点是在野外收集的。我的目标是将这些 GPS 点绘制到我从 GADM 资源中提取的斯里兰卡地图上。
在 运行 代码之后,斯里兰卡的南端从 longitude/latitude 网格框的顶部中间突出,而不是斯里兰卡的整个图像在 longitude/latitude 中可见=] 网格框(见图 2)。
问题:
我可以独立制作斯里兰卡地图(见图2)和longitude/latitude 网格框(见图1)。但是,我无法在 latitude/longitude 网格框内绘制斯里兰卡地图,同时在网格框内将 GPS 点绘制在现场收集数据的正确位置。
所需的输出如图 3 所示(见下文)。我正在尝试将图像 1 放置在网格框内,并在网格框边缘使用斯里兰卡的正确 longitude/latitude 比例。最后,我想在地图上绘制 GPS 点,就像图 3 中提供的示例一样。
如果有人能帮助我,我将不胜感激!
我真的不知道这里出了什么问题,因为我缺乏知识,并且在尝试了多个小时尝试不同的 R 代码组合以通过尝试重现此 stack overflow question and by following this exercise on species distribution modeling 来解决问题。
谨致问候。
R-code
##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:
图2:
图3:
对于示例 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)
问题概要
很抱歉问了一个简单的问题,但我是 R 的新手,我在使用地图执行任务时遇到困难。
我有一个十进制形式的经纬度 GPS 点集合,这些点是在野外收集的。我的目标是将这些 GPS 点绘制到我从 GADM 资源中提取的斯里兰卡地图上。
在 运行 代码之后,斯里兰卡的南端从 longitude/latitude 网格框的顶部中间突出,而不是斯里兰卡的整个图像在 longitude/latitude 中可见=] 网格框(见图 2)。
问题:
我可以独立制作斯里兰卡地图(见图2)和longitude/latitude 网格框(见图1)。但是,我无法在 latitude/longitude 网格框内绘制斯里兰卡地图,同时在网格框内将 GPS 点绘制在现场收集数据的正确位置。
所需的输出如图 3 所示(见下文)。我正在尝试将图像 1 放置在网格框内,并在网格框边缘使用斯里兰卡的正确 longitude/latitude 比例。最后,我想在地图上绘制 GPS 点,就像图 3 中提供的示例一样。
如果有人能帮助我,我将不胜感激!
我真的不知道这里出了什么问题,因为我缺乏知识,并且在尝试了多个小时尝试不同的 R 代码组合以通过尝试重现此 stack overflow question and by following this exercise on species distribution modeling 来解决问题。
谨致问候。
R-code
##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:
图2:
图3:
对于示例 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)