Cannot open layer error when downloading shapefile

I know this is a very specific question about a specific package but I can't seem to be able to deal with it on my own so I'm seeking help. I'd like to use the {leaidr} package (GitHub - ivelasq/leaidr: An R Package for U.S. School District Shapefiles) to download shapefiles for US school districts and have followed the instructions written by Isabella here (%>% dreams - An even easier-to-use R package for school district shapefiles) but I can't seem to get it to work. Specifically, when I download the shapefile for a particular state using the lea_get function as she did, I got the following output

trying URL 'https://github.com/datalorax/us-district-shapefiles/raw/master/individ-districts/47.dbf'
Content type 'application/octet-stream' length 210592 bytes (205 KB)
downloaded 205 KB

trying URL 'https://github.com/datalorax/us-district-shapefiles/raw/master/individ-districts/47.prj'
Content type 'text/plain; charset=utf-8' length 147 bytes
downloaded 147 bytes

trying URL 'https://github.com/datalorax/us-district-shapefiles/raw/master/individ-districts/47.shp'
Content type 'application/octet-stream' length 7345380 bytes (7.0 MB)
downloaded 7.0 MB

trying URL 'https://github.com/datalorax/us-district-shapefiles/raw/master/individ-districts/47.shx'
Content type 'application/octet-stream' length 1364 bytes
downloaded 1364 bytes

Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv,  : 
  Cannot open layer
In addition: Warning messages:
1: OGR support is provided by the sf and terra packages among others 
2: OGR support is provided by the sf and terra packages among others

Essentially there is a "cannot open layer error" toward the end that I can't deal with. Any help would be greatly appreciated. Thank you!

Works for me:

library(leaidr)
tn <- lea_get("tn")
#  Warning: OGR support is provided by the sf and terra packages among others
#  Warning: OGR support is provided by the sf and terra packages among others
#  Warning: OGR support is provided by the sf and terra packages among others
#  Warning: OGR support is provided by the sf and terra packages among others
#  Warning: OGR support is provided by the sf and terra packages among others
#  Warning: OGR support is provided by the sf and terra packages among others
#  OGR data source with driver: ESRI Shapefile 
#  Source: "/tmp/RtmpAxM7Cb/47", layer: "47"
#  with 158 features
#  It has 18 fields

str(tn)
#  Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
#    ..@ data       :'data.frame':  158 obs. of  18 variables:
#    .. ..$ STATEFP   : chr [1:158] "47" "47" "47" "47" ...
#    .. ..$ ELSDLEA   : chr [1:158] NA NA NA NA ...
[...]
#    ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
#    .. .. ..@ projargs: chr "+proj=longlat +ellps=GRS80 +no_defs"
#    .. .. ..$ comment: chr "GEOGCRS[\"GRS 1980(IUGG, 1980)\",\n    DATUM[\"D_unknown\",\n        ELLIPSOID[\"GRS80\",6378137,298.257222101,"| __truncated__
#    ..$ comment: chr "TRUE"

Created on 2023-05-15 with reprex v2.0.2

Try to get the files again. If doesn't work, download them directly from github (GitHub - datalorax/us-district-shapefiles: Individual district shapefiles from leaidir package) -- either clone them or download zip archive, unpack and read using sf::read_sf() function like:

sf::read_sf("/tmp/RtmpPBW4E8/47/47.shp")
#  Simple feature collection with 158 features and 18 fields
#  Geometry type: MULTIPOLYGON
#  Dimension:     XY
#  Bounding box:  xmin: -90.3103 ymin: 34.98292 xmax: -81.6469 ymax: 36.67826
#  Geodetic CRS:  GRS 1980(IUGG, 1980)
#  # A tibble: 158 × 19
#     STATEFP ELSDLEA SCSDLEA UNSDLEA GEOID NAME  LSAD  LOGRADE HIGRADE MTFCC SDTYP
#     <chr>   <chr>   <chr>   <chr>   <chr> <chr> <chr> <chr>   <chr>   <chr> <chr>
#   1 47      <NA>    47073   <NA>    4747… Hawk… 00    09      12      G5410 A    
#   2 47      <NA>    47123   <NA>    4747… Monr… 00    09      12      G5410 A    
#   3 47      <NA>    47002   <NA>    4747… Arli… 00    09      12      G5410 A    
#   4 47      <NA>    47187   <NA>    4747… Will… 00    09      12      G5410 A    
#   5 47      <NA>    47189   <NA>    4747… Wils… 00    09      12      G5410 A    
#   6 47      <NA>    47031   <NA>    4747… Coff… 00    09      12      G5410 A    
#   7 47      <NA>    47029   <NA>    4747… Cock… 00    09      12      G5410 A    
#   8 47      <NA>    47077   <NA>    4747… Hend… 00    09      12      G5410 A    
#   9 47      <NA>    47143   <NA>    4747… Rhea… 00    09      12      G5410 A    
#  10 47      <NA>    47149   <NA>    4747… Ruth… 00    07      12      G5410 A    
#  # ℹ 148 more rows
#  # ℹ 8 more variables: FUNCSTAT <chr>, ALAND <dbl>, AWATER <dbl>,
#  #   INTPTLAT <chr>, INTPTLON <chr>, GEO_YEAR <chr>, SCHOOLYEAR <chr>,
#  #   geometry <MULTIPOLYGON [°]>

Please note /tmp/Rxxx/47.shp is just a temporary path in my environment, yours would be different.

Regards,
Grzegorz

Thanks so much

So this works great, and I was able to get the data and do things to them. I do still want to be able to learn how to do things automatically remotely without downloading the shapefiles first though. Do you know what might have happened when I tried the original approach? In the instructions written by the author of the package, she said one must have a GITHUB_PAT before you can run lea_get, which I do. Essentially what I did is the following:

  • I created a PAT
  • I used the {gitcreds} package to set my PAT in my environment
  • Then I ran lea_get but still got the same "cannot open layer" error message as before.

Any thoughts?

This topic was automatically closed 42 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.