R функция addPolygons

Я пытаюсь добавить на карту несколько полигонов, но не знаю, почему мой код не работает. Я использовал тот же код раньше для других файлов .shp, и он отлично работает. Я получил пространственный файл отсюда: http://library.queensu.ca/geo/health_regions . Он находится в Ontario-> Local Health Integrated Networks -> 2006 -> Boundary Files.

  lhin<- readOGR("lhin_divisions/HR035B08.shp",layer = "HR035B08")
  leaflet() %>% addTiles()%>%setView(lng=-81,lat=45,zoom=6)
  %>%addPolygons(data=lhin,stroke=TRUE, weight=1, col='red')

Я чувствую, что мне не хватает чего-то простого, но я не могу понять, что?

Полученная карта должна иметь указанные здесь границы:http://library.queensu.ca/madgic/free/health_regions/2005/images/lhin_ont.pdf


person DanRoDuq    schedule 16.01.2016    source источник
comment
откуда эти данные = провинции? ты загрузил провинции?   -  person MLavoie    schedule 16.01.2016
comment
Извините, что нужно читать Лин!   -  person DanRoDuq    schedule 16.01.2016
comment
твой цвет отсутствует   -  person MLavoie    schedule 16.01.2016
comment
добавление col='red' ничего не изменило?   -  person DanRoDuq    schedule 16.01.2016


Ответы (1)


эта работа. Вы можете изменить цвет плитки, я просто использовал черный и белый, так как не знал, что ищу. Шейп-файл был в формате utm без проекции. Поэтому я установил проекцию и конвертировал в лонглат.

proj4string(lhin) <- CRS("+proj=utm +ellps=WGS84 +datum=WGS84")
lhin <- spTransform(lhin, CRS("+proj=longlat +ellps=WGS84 +datum=WGS84"))
leaflet() %>% addProviderTiles("Stamen.Toner") %>% addPolygons(data=lhin,stroke=TRUE, weight=1, color = ~"red")

введите здесь описание изображения

person MLavoie    schedule 16.01.2016
comment
Это кажется отличным! Однако есть два вопроса: зачем нужно было применять эти две функции (CRS и spTransform) и почему карта неправильно накладывается поверх Онтарио? Извините, я новичок в мире карт! - person DanRoDuq; 16.01.2016
comment
Это как-то связано с новой проекцией? - person DanRoDuq; 16.01.2016
comment
это был utm, и он должен был быть лонглатом. В следующий раз просто проверьте проекцию вашего шейп-файла. Вероятно, это работало раньше, потому что они уже были на лонглате. - person MLavoie; 16.01.2016
comment
О, я понимаю, но почему карта появляется не в той части мира? - person DanRoDuq; 16.01.2016
comment
Я не знаю, где это должно быть, но в целом мы также должны установить для utm epsg как lhin ‹- spTransform(lhin, CRS(+init=epsg:2957)) 2957 для западной Канады, вам придется установить для вашего местоположения. - person MLavoie; 16.01.2016
comment
вам придется сделать это самостоятельно, карта работает, вам просто нужно установить правильную проекцию. - person MLavoie; 16.01.2016
comment
хм, я все еще немного смущен. Я изменил одно из утверждений в вашем коде на proj4string(lhin) ‹- CRS(+proj=lcc +ellps=GRS80 +datum=NAD83 +units=m), потому что это проекция, указанная в документации к файлу. Однако я не могу понять, какое отношение CRS() имеет к тому, где изображено изображение. Мой файл представляет собой карту подразделений Онтарио, поэтому я хочу, чтобы он отображался поверх Онтарио. - person DanRoDuq; 16.01.2016
comment
Я все еще использовал readOGR() для чтения файла, поскольку он поставляется с проекцией. Затем я применил spTransform(lhin, CRS(+proj=longlat +ellps=WGS84 +datum=WGS84)) как вы предложили. Теперь карта корректно размещается над Онтарио. - person DanRoDuq; 17.01.2016
comment
Я рад, что это сработало для вас! и спасибо за принятие ответа! - person MLavoie; 17.01.2016