# remotes::install_github("bcgov/bcdata", ref = "promise")
library(bcdata)
library(ggplot2)
Use bcdc_get_data()
to get an entire dataset. I wouldn't recommend this
for really large datasets like the FWA:
bcdc_get_data("bc-airports")
#> Simple feature collection with 455 features and 41 fields
#> geometry type: POINT
#> dimension: XY
#> bbox: xmin: 406543.7 ymin: 367957.6 xmax: 1796645 ymax: 1689146
#> epsg (SRID): 3005
#> proj4string: +proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
#> # A tibble: 455 x 42
#> id CUSTODIAN_ORG_D… BUSINESS_CATEGO… BUSINESS_CATEGO…
#> <chr> <chr> <chr> <chr>
#> 1 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> 2 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> 3 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> 4 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> 5 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> 6 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> 7 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> 8 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> 9 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> 10 WHSE… "Ministry of Fo… airTransportati… Air Transportat…
#> # … with 445 more rows, and 38 more variables:
#> # OCCUPANT_TYPE_DESCRIPTION <chr>, SOURCE_DATA_ID <chr>,
#> # SUPPLIED_SOURCE_ID_IND <chr>, AIRPORT_NAME <chr>, DESCRIPTION <chr>,
#> # PHYSICAL_ADDRESS <chr>, ALIAS_ADDRESS <chr>, STREET_ADDRESS <chr>,
#> # POSTAL_CODE <chr>, LOCALITY <chr>, CONTACT_PHONE <chr>,
#> # CONTACT_EMAIL <chr>, CONTACT_FAX <chr>, WEBSITE_URL <chr>,
#> # IMAGE_URL <chr>, LATITUDE <dbl>, LONGITUDE <dbl>, KEYWORDS <chr>,
#> # DATE_UPDATED <date>, SITE_GEOCODED_IND <chr>, AERODROME_STATUS <chr>,
#> # AIRCRAFT_ACCESS_IND <chr>, DATA_SOURCE <chr>, DATA_SOURCE_YEAR <chr>,
#> # ELEVATION <dbl>, FUEL_AVAILABILITY_IND <chr>,
#> # HELICOPTER_ACCESS_IND <chr>, IATA_CODE <chr>, ICAO_CODE <chr>,
#> # MAX_RUNWAY_LENGTH <dbl>, NUMBER_OF_RUNWAYS <int>,
#> # OIL_AVAILABILITY_IND <chr>, RUNWAY_SURFACE <chr>,
#> # SEAPLANE_ACCESS_IND <chr>, TC_LID_CODE <chr>, SEQUENCE_ID <int>,
#> # SE_ANNO_CAD_DATA <chr>, geometry <POINT [m]>
Use bcdc_query_geodata()
combined with filter
and select
to send a query to
the server and only return a subset of the dataset.
We mimic the dbplyr workflow in that the request isn't actually sent
until collect()
is called:
bcdc_query_geodata("freshwater-atlas-stream-network")
#> # A BC Data Catalogue Record: 4907249 records and 28 columns
#> # Columns:
#> # A tibble: 28 x 4
#> col_name selectable remote_col_type local_col_type
#> <chr> <lgl> <chr> <chr>
#> 1 id FALSE xsd:string character
#> 2 LINEAR_FEATURE_ID FALSE xsd:decimal numeric
#> 3 WATERSHED_GROUP_ID FALSE xsd:decimal numeric
#> 4 EDGE_TYPE FALSE xsd:decimal numeric
#> 5 BLUE_LINE_KEY TRUE xsd:decimal numeric
#> 6 WATERSHED_KEY TRUE xsd:decimal numeric
#> 7 FWA_WATERSHED_CODE TRUE xsd:string character
#> 8 LOCAL_WATERSHED_CODE TRUE xsd:string character
#> 9 WATERSHED_GROUP_CODE FALSE xsd:string character
#> 10 DOWNSTREAM_ROUTE_MEASU… TRUE xsd:decimal numeric
#> 11 LENGTH_METRE FALSE xsd:decimal numeric
#> 12 FEATURE_SOURCE FALSE xsd:string character
#> 13 GNIS_ID TRUE xsd:decimal numeric
#> 14 GNIS_NAME TRUE xsd:string character
#> 15 LEFT_RIGHT_TRIBUTARY TRUE xsd:string character
#> 16 STREAM_ORDER FALSE xsd:decimal numeric
#> 17 STREAM_MAGNITUDE FALSE xsd:decimal numeric
#> 18 WATERBODY_KEY TRUE xsd:decimal numeric
#> 19 BLUE_LINE_KEY_50K TRUE xsd:decimal numeric
#> 20 WATERSHED_CODE_50K TRUE xsd:string character
#> 21 WATERSHED_KEY_50K TRUE xsd:decimal numeric
#> 22 WATERSHED_GROUP_CODE_5… TRUE xsd:string character
#> 23 GRADIENT TRUE xsd:decimal numeric
#> 24 FEATURE_CODE FALSE xsd:string character
#> 25 OBJECTID FALSE xsd:decimal numeric
#> 26 SE_ANNO_CAD_DATA TRUE xsd:hexBinary numeric
#> 27 FEATURE_LENGTH_M TRUE xsd:decimal numeric
#> 28 geometry TRUE gml:GeometryPropertyT… geom
filter:
bcdc_query_geodata("freshwater-atlas-stream-network") %>%
filter(GNIS_NAME %in% c("Hiellen River", "Sangan River"))
#> # A BC Data Catalogue Record: 55 records and 28 columns
#> # Columns:
#> # A tibble: 28 x 4
#> col_name selectable remote_col_type local_col_type
#> <chr> <lgl> <chr> <chr>
#> 1 id FALSE xsd:string character
#> 2 LINEAR_FEATURE_ID FALSE xsd:decimal numeric
#> 3 WATERSHED_GROUP_ID FALSE xsd:decimal numeric
#> 4 EDGE_TYPE FALSE xsd:decimal numeric
#> 5 BLUE_LINE_KEY TRUE xsd:decimal numeric
#> 6 WATERSHED_KEY TRUE xsd:decimal numeric
#> 7 FWA_WATERSHED_CODE TRUE xsd:string character
#> 8 LOCAL_WATERSHED_CODE TRUE xsd:string character
#> 9 WATERSHED_GROUP_CODE FALSE xsd:string character
#> 10 DOWNSTREAM_ROUTE_MEASU… TRUE xsd:decimal numeric
#> 11 LENGTH_METRE FALSE xsd:decimal numeric
#> 12 FEATURE_SOURCE FALSE xsd:string character
#> 13 GNIS_ID TRUE xsd:decimal numeric
#> 14 GNIS_NAME TRUE xsd:string character
#> 15 LEFT_RIGHT_TRIBUTARY TRUE xsd:string character
#> 16 STREAM_ORDER FALSE xsd:decimal numeric
#> 17 STREAM_MAGNITUDE FALSE xsd:decimal numeric
#> 18 WATERBODY_KEY TRUE xsd:decimal numeric
#> 19 BLUE_LINE_KEY_50K TRUE xsd:decimal numeric
#> 20 WATERSHED_CODE_50K TRUE xsd:string character
#> 21 WATERSHED_KEY_50K TRUE xsd:decimal numeric
#> 22 WATERSHED_GROUP_CODE_5… TRUE xsd:string character
#> 23 GRADIENT TRUE xsd:decimal numeric
#> 24 FEATURE_CODE FALSE xsd:string character
#> 25 OBJECTID FALSE xsd:decimal numeric
#> 26 SE_ANNO_CAD_DATA TRUE xsd:hexBinary numeric
#> 27 FEATURE_LENGTH_M TRUE xsd:decimal numeric
#> 28 geometry TRUE gml:GeometryPropertyT… geom
select:
bcdc_query_geodata("freshwater-atlas-stream-network") %>%
filter(GNIS_NAME %in% c("Hiellen River", "Sangan River")) %>%
select(FWA_WATERSHED_CODE, GNIS_NAME)
#> # A BC Data Catalogue Record: 55 records and 14 columns
#> # Columns:
#> # A tibble: 14 x 4
#> col_name selectable remote_col_type local_col_type
#> <chr> <lgl> <chr> <chr>
#> 1 id FALSE xsd:string character
#> 2 LINEAR_FEATURE_ID FALSE xsd:decimal numeric
#> 3 WATERSHED_GROUP_ID FALSE xsd:decimal numeric
#> 4 EDGE_TYPE FALSE xsd:decimal numeric
#> 5 FWA_WATERSHED_CODE TRUE xsd:string character
#> 6 WATERSHED_GROUP_CODE FALSE xsd:string character
#> 7 LENGTH_METRE FALSE xsd:decimal numeric
#> 8 FEATURE_SOURCE FALSE xsd:string character
#> 9 GNIS_NAME TRUE xsd:string character
#> 10 STREAM_ORDER FALSE xsd:decimal numeric
#> 11 STREAM_MAGNITUDE FALSE xsd:decimal numeric
#> 12 FEATURE_CODE FALSE xsd:string character
#> 13 OBJECTID FALSE xsd:decimal numeric
#> 14 geometry TRUE gml:GeometryPropertyType geom
collect to send the request and get an sf object:
just_my_streams <- bcdc_query_geodata("freshwater-atlas-stream-network") %>%
filter(GNIS_NAME %in% c("Hiellen River", "Sangan River")) %>%
select(FWA_WATERSHED_CODE, GNIS_NAME) %>%
collect()
ggplot() +
geom_sf(data = just_my_streams, color = "steelblue", size = 0.5)
Created on 2019-04-25 by the reprex package (v0.2.1)