Загрузка графического шейп-файла из ONS - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь загрузить Ультра Обобщенные Обрезанные Границы из ONS, как определено здесь . Я планирую использовать его для отображения карты Choropleth с помощью ggplot.

Тем не менее, я получаю сообщение ниже, когда использую readOGR.

Ошибка в ogrInfo (dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv,: не удается открыть слой

Кажется, что загрузка и распаковка работают и это выглядит как документ ESRI Shape.

Что я делаю не так?

library(tidyverse)
library(rgeos)
library(rgdal)
library(maptools)

dest_zip_file <- "Counties_December_2017_Ultra_Generalised_Clipped_Boundaries_in_England.zip"
shape_file_name <- "Counties_December_2017_Ultra_Generalised_Clipped_Boundaries_in_England"

download.file("http://geoportal1-ons.opendata.arcgis.com/datasets/c6404b30a373457e9d87f724dd57585c_4.zip?outSR={%22latestWkid%22:27700,%22wkid%22:27700}",
              dest_zip_file)
unzip(dest_zip_file, paste0(shape_file_name,".shp"))

county_shapes <- readOGR(dsn = ".",
                         layer = shape_file_name,
                         verbose = TRUE)

1 Ответ

3 голосов
/ 17 марта 2020

Вы распаковываете свою папку в один файл - .shp - у вас должно быть несколько файлов в составе вашего «файла формы», включая файлы .shx и .dbf.

Вы можете исправить код, разархивировав все файлы и прочитав:

unzip(dest_zip_file)

county_shapes <- readOGR(dsn = ".",
                         layer = shape_file_name,
                         verbose = TRUE)

На заметку, если вы ищете географические границы Великобритании c, я всегда рекомендую геопортал , где Часто вы можете найти ссылки для загрузки Geo json через API. Например, я нашел ссылку на границы округа 2017 года и прочитал, используя sf:

library(sf)
library(ggplot2)
county <- read_sf('https://opendata.arcgis.com/datasets/c6404b30a373457e9d87f724dd57585c_2.geojson')
ggplot() +
  geom_sf(data = county)

2017 county boundaries

...