Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't read shp file in R

Tags:

r

sf

I tried to open an shp file on my Mac, using this code:

library(tidyverse)
library(sf)
library(rgeos)
sf_trees_raw <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-01-28/sf_trees.csv')
temp_shapefile <- tempfile()
download.file("https://www2.census.gov/geo/tiger/TIGER2017//ROADS/tl_2017_06075_roads.zip", temp_shapefile)
sf_roads <- unzip(temp_shapefile, "tl_2017_06075_roads.shp") %>%
  read_sf()

But I receive this error message:

Error: Cannot open "/Users/name/Documents/Playground/Trees_SF/tl_2017_06075_roads.shp"; The source could be corrupt or not supported. See `st_drivers()` for a list of supported formats.

I tried other shp files, and I receive the same error message:

map <- read_sf("per_admbnda_adm1_2018.shp")
Error: Cannot open "/Users/name/Documents/Playground/Trees_SF/per_admbnda_adm1_2018.shp"; The source could be corrupt or not supported. See `st_drivers()` for a list of supported formats.

I tried copying the shx and dbf files but it doesn't fix the problem.

Any help will be greatly appreciated.

like image 533
Alexis Avatar asked Mar 02 '23 13:03

Alexis


1 Answers

Try unzipping the whole download first, then reading the shapefile file. Although for sf you only need to point at the .shp file, all the other ones (.cpg, .prj, .shx, etc) need to be unzipped and in the same directory.

temp_shapefile <- tempfile()
download.file("https://www2.census.gov/geo/tiger/TIGER2017//ROADS/tl_2017_06075_roads.zip", temp_shapefile)
unzip(temp_shapefile)

sf_roads <- read_sf('tl_2017_06075_roads.shp')
like image 160
nniloc Avatar answered Mar 16 '23 20:03

nniloc