有点类似于here所描述的问题我遇到了对齐shapefile和ggmap对象的麻烦。
[+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs]
这对应于EPSG:4283。
这是我的shapefile对象sp
的摘要:
> summary(sp)
Object of class SpatialPolygonDataFrame
Coordinates:
min max
x 96.81677 159.109219
y -43.74051 -9.142176
Is projected: FALSE
proj4string:
[+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs]
sp <- spTransform(sp, CRS("+proj=longlat +init=epsg:3857"))
并将sp
变成强化数据框df.sp
。map <- get_map("Victoria", zoom = 7, maptype = "terrain", source = "google")
从结果图中可以清楚地看出shapefile坐标和googlemap坐标不重叠。我是否在坐标转换方面做错了什么?如何正确匹配shapefile和googlemap坐标?我很感激对此事的任何帮助/见解。
这是我的第一篇文章,请原谅我,如果造型不是很棒。我发现无论出于何种原因,ggmap(map) + geom_polygon(data = df.sp, aes(x = long, y = lat, group = group)) + coord_equal() + theme_map()
包中的默认都没有在ESPG:3857
函数中正确转换投影。
rgdal
,我被引导到spTransform
网站和gene's wonderful answer网站。我仔细检查了ABS的Prj2EPSG
字符串(我假设这是数据的来源),就像你说的那样(这是Spatial Reference)。proj4
。EPSG:4283
取代+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
来投射经度和纬度坐标。+proj=merc
替换的字符串似乎比仅使用+proj=longlat
给我更好的结果,这表明rgdal包处理它的方式有些不同。我很想知道如何进一步改进这一点,但我希望也许这可以帮助你在此期间获得更好的结果。
编辑:我还发现,当使用merc
绘图时添加+init=epsg:3857
似乎可以在近距离时修复形状文件的对齐方式,但在进一步缩小时会让它们略微偏离。在缩放比例7及以上,我似乎得到完美的对齐,但6和更低,我没有。似乎无论出于何种原因,不同的缩放级别会略微改变投影。
所以试试吧
ggplot2