我想在传单地图中渲染shapefile。
This shapefile没有预测,所以我试图给它一个。
directions <- readOGR("./directions/", "directions")
proj4string(directions) <- CRS("+proj=longlat +datum=WGS84 +no_defs")
然后我尝试将它添加到我的地图中:
map <- leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data=directions,weight=1,col = 'black') %>%
setView(lng = -3.8196207,
lat = 40.4678698,
zoom = 10)
问题是我收到错误说:
对不符合数据的地理CRS:450781.167295 4485221.863980
我尝试使用其他投影作为CRS,如
proj4string(directions) <- CRS("+proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs")
它不会给我一个错误但是shapefile也没有渲染。
我真的不明白为什么会发生这种情况以及如何解决这个问题。
BTW:我从西班牙语website获得了这个shapefile,其中发布了交通和空气质量数据
答案 0 :(得分:3)
你非常接近。您需要做的是将UTM Zone 17N的投影转换为经度和纬度投影。
library(sp)
library(rgdal)
library(leaflet)
# Read the shapefile
directions <- readOGR("directions", "directions")
# Set the projection to be UTM zone 30N
proj4string(directions) <- CRS("+proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs")
# Conduct project transformation from UTM zone 30N to long-lat
directions_longlat <- spTransform(directions, CRS("+proj=longlat +datum=WGS84 +no_defs"))
map <- leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = directions_longlat, weight=1, col = 'black') %>%
setView(lng = -3.8196207,
lat = 40.4678698,
zoom = 10)
map