-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
I want to write some code allowing users to download the admin area COD for any country and admin level.
I'm coming up against a few inconsistencies in hdx tags and format that make this tricky.
I've put all this in one issue for now, in case there is a better way that you can point me to. I can break these up into individual issues if that helps.
What I'm trying to do.
- write a query that returns a single dataset for the admin area COD
- identify the shapefile resource (assuming that is commonest)
- get list of layers
- identify and download layer for a specified admin level
Current issues (for examples see in the code below) :
- I'm struggling to get a query that reliably returns just the one dataset
- shapefiles are sometimes tagged as 'zipped shapefile' sometimes 'zipped shapefiles'
- sometimes the zipfile contains a subfolder that stops it being opened by sf
Thanks.
iso3clow <- 'nga'
#iso3clow <- 'mli'
level <- 2
#nigeria does return single result
#mali returns two datasets first one is population
querytext <- paste0('vocab_Topics:("common operational dataset - cod" AND "gazetteer" NOT "baseline population") AND groups:', iso3clow)
rhdx::set_rhdx_config()
datasets_list <- rhdx::search_datasets(fq = querytext)
#query needs to return a single dataset (with multiple resources)
ds <- datasets_list[[1]]
#get list of resources
list_of_rs <- rhdx::get_resources(ds)
list_of_rs
#selecting resource
#nigeria "zipped shapefiles"
#mali "zipped shapefile"
ds_id <- which( rhdx::get_formats(ds) %in% c("zipped shapefiles","zipped shapefile"))
rs <- rhdx::get_resource(ds, ds_id)
# find which layers in file
mlayers <- rhdx::get_resource_layers(rs, download_folder=getwd())
#error for nigeria
#<HDX Resource> aa69f07b-ed8e-456a-9233-b20674730be6
#Name: nga_adm_osgof_20190417_SHP.zip
#Format: ZIPPED SHAPEFILES
#Error: This (spatial) data format is not yet supported
#in hdx resources.r
# supported_geo_format <- c("geojson", "zipped shapefile", "zipped geodatabase",
# "zipped geopackage", "kmz", "zipped kml")
#added "zipped shapefiles" option to supported_geo_format in my local branch of rhdx
#now I get
#Cannot open data source /vsizip/C:/rsprojects/afriadmin/nga_adm_osgof_20190417_shp.zip
#Error in CPL_get_layers(dsn, options, do_count) : Open failed.
#can I open a layer from the downloaded file directly ?
#using default should open the first layer
sflayer <- rhdx::read_resource(rs, download_folder=getwd())
plot(sf::st_geometry(sflayer))
#no this also fails
#seemingly because there is a subfolder within the zip
#aha, nigeria is in a folder within the zip and mali isn't so nigeria fails and mali works
#is there a way of detecting and dealing with this ?
# later read layer using layername
# this relies on all country layers having adm* in their names
layername <- mlayers$name[ grep(paste0("adm",level),mlayers$name) ]
sflayer <- read_resource(re, layer=layername, download_folder=getwd())
#test plotting
plot(sf::st_geometry(sflayer))
Metadata
Metadata
Assignees
Labels
No labels