在单张贴图中渲染没有投影的shapefile

时间:2017-12-04 19:04:30

标签: r leaflet shapefile map-projections

我想在传单地图中渲染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,其中发布了交通和空气质量数据

1 个答案:

答案 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

enter image description here