построение объекта sf с помощью geom_sf () с любой проекцией кроме широты и долготы

Я пытаюсь построить многоугольник с помощью geom_sf () в любой проекции, кроме широты и долготы.

Я использую пример из страниц руководства для geom_sf () Импорт набора данных:

nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)

преобразование латлонга в epsg: 3857

nc_3857 <- sf::st_transform(nc, "+init=epsg:3857")

Наконец, постройте с ggplot2, определяя crs сюжета:

ggplot() +
 geom_sf(data = nc_3857, colour = "red", fill = NA) +
 coord_sf(crs=st_crs(3857))

Я продолжаю получать карту в wgs84 (например, epsg: 4326) с осями широты и долготы. Я хочу иметь оси в метрах, поэтому мне нужно ggplot, чтобы построить спроектированный многоугольник. Что я делаю неправильно?


person ze miguel    schedule 03.07.2017    source источник


Ответы (2)


См. Также https://github.com/tidyverse/ggplot2/issues/2200 и попробуйте

ggplot() +  geom_sf(data = nc_3857, colour = "red", fill = NA) +
   coord_sf(datum=st_crs(3857))

который дает

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

person Edzer Pebesma    schedule 26.07.2017

Он строит его в запрошенной проекции, просто накладывая широтно-долгую сетку.

Если вы попробуете сделать то же самое с Норвегией, например, находясь близко к северному полюсу, вы увидите, что отображаемые координаты X-Y соответствуют координатам преобразования, но наложенная сетка является широтой и долготой. Это карта Норвегии в координатах epsg 3035 (конические):

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

Итак, он рисует спроектированный многоугольник. Если бы линии широты и долготы здесь были сеткой, тогда координаты отображались бы в проекции долгота и долгота.

Единственное упоминание о сетках в документации - это аргумент coord_sf:

datum: CRS that provides datum to use when generating graticules

что на самом деле мало что говорит.

Вам просто нужна декартова система координат? О, давай попробуем:

> ggplot() +  geom_sf(data = rp, colour = "red", fill = NA) + coord_cartesian()
Error: geom_sf() must be used with coord_sf()

Проверьте проблемы ggplot2 на наличие альтернативных координатных сеток с geom_sf и добавьте проблему, если там ничего нет.

person Spacedman    schedule 03.07.2017