相关疑难解决方法(0)

在地图上绘制坐标

我试图用R绘制我的坐标.我已经尝试过跟随不同的帖子(R:在世界地图上绘制分组坐标 ; 在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")
Run Code Online (Sandbox Code Playgroud)

问题,现在我不知道如何添加我的点,我想为每个区域一种颜色.

谁能帮助我继续前进呢?

我尝试过的另一个选择是:

library(maps)
library(mapdata)
library(maptools)
map(database= "world", ylim=c(-38.31, -35.5), xlim=c(40.96, 37.5), …
Run Code Online (Sandbox Code Playgroud)

maps google-maps r coordinates ggmap

34
推荐指数
2
解决办法
7万
查看次数

在绘制世界地图时,使用与本初子午线不同的中心

我将maps包中的世界地图叠加到ggplot2栅格几何体上.但是,此栅格不是以本初子午线(0度)为中心,而是以180度(大致为白令海和太平洋)为中心.以下代码获取地图并在180度上重新定位地图:

require(maps)
world_map = data.frame(map(plot=FALSE)[c("x","y")])
names(world_map) = c("lon","lat")
world_map = within(world_map, {
  lon = ifelse(lon < 0, lon + 360, lon)
})
ggplot(aes(x = lon, y = lat), data = world_map) + geom_path()
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

在此输入图像描述

很明显,在主子午线的一端或另一端的多边形之间存在线条.我目前的解决方案是用NA替换接近本初子午线的点,将within上面的调用替换为:

world_map = within(world_map, {
  lon = ifelse(lon < 0, lon + 360, lon)
  lon = ifelse((lon < 1) | (lon > 359), NA, lon)
})
ggplot(aes(x = lon, y = lat), data = world_map) + geom_path()
Run Code Online (Sandbox Code Playgroud)

这导致了正确的图像.我现在有一些问题:

  1. 必须有一种更好的方法将地图定位在另一个子午线上.我尝试使用orientation …

r ggplot2

30
推荐指数
2
解决办法
5773
查看次数

修复太平洋中心(0°-360°经度)显示的地图库数据

我正在使用R maps包在世界地图上绘制一些点,例如:

世界地图,-180°至180°经度

绘制基本地图的命令是:

map("world", fill=TRUE, col="white", bg="gray", ylim=c(-60, 90), mar=c(0,0,0,0))
Run Code Online (Sandbox Code Playgroud)

但我需要显示太平洋中心地图.我使用map("world2",etc来使用maps包中的太平洋中心底图,并将我的dataframe(df)中数据点的坐标转换为:

df$longitude[df$longitude < 0] = df$longitude[df$longitude < 0] + 360
Run Code Online (Sandbox Code Playgroud)

如果我不使用该fill选项,但是使用fill交叉0°的多边形会导致问题.

世界地图,0°至360°经度

我想我需要以maps某种方式从库中转换多边形数据来对其进行排序,但我不知道如何解决这个问题.

我理想的解决方案是绘制一个左边界为-20°,右边界为-30°(即330°)的地图.以下内容将正确的点和海岸线放到地图上,但是交叉零问题是相同的

df$longitude[df$longitude < -20] = df$longitude[d$longitude < -20] + 360
map("world", fill=TRUE, col="white", bg="gray", mar=c(0,0,0,0),
  ylim=c(-60, 90), xlim=c(-20, 330))
map("world2", add=TRUE, col="white", bg="gray", fill=TRUE, xlim=c(180, 330))
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

maps r

18
推荐指数
2
解决办法
1万
查看次数

标签 统计

r ×3

maps ×2

coordinates ×1

ggmap ×1

ggplot2 ×1

google-maps ×1