15 KiB
Discovery Functions
If you are using the discovery methods from the Data Observatory, use the following functions to retrieve boundary and measures data.
OBS_Search(search_term)
Use arbitrary text to search all available measures
Arguments
Name | Description |
---|---|
search_term | a string to search for available measures |
boundary_id | a string identifier for a boundary geometry (optional) |
Returns
A TABLE containing the following properties
Key | Description |
---|---|
id | the unique id of the measure for use with the OBS_GetMeasure function |
name | the human readable name of the measure |
description | a brief description of the measure |
aggregate | sum are raw count values, median are statistical medians, average are statistical averages, undefined other (e.g. an index value) |
source | where the data came from (e.g. US Census Bureau) |
Example
SELECT * FROM OBS_Search('home value')
OBS_GetAvailableBoundaries(point_geometry)
Returns available boundary_id
s at a given point geometry.
Arguments
Name | Description |
---|---|
point_geometry | a WGS84 point geometry (e.g. the_geom) |
Returns
A TABLE containing the following properties
Key | Description |
---|---|
boundary_id | a boundary identifier from the Boundary ID Glossary |
description | a brief description of the boundary dataset |
time_span | the timespan attached the boundary. this does not mean that the boundary is invalid outside of the timespan, but is the explicit timespan published with the geometry. |
Example
SELECT * FROM OBS_GetAvailableBoundaries(CDB_LatLng(40.7, -73.9))
OBS_GetAvailableNumerators(bounds, filter_tags, denom_id, geom_id, timespan)
Return available numerators within a boundary and with the specified
filter_tags
.
Arguments
Name | Type | Description |
---|---|---|
bounds | Geometry(Geometry, 4326) | a geometry which some of the numerator's data must intersect with |
filter_tags | Text[] | a list of filters. Only numerators for which all of these apply are returned NULL to ignore (optional) |
denom_id | Text | the ID of a denominator to check whether the numerator is valid against. Will not reduce length of returned table, but will change values for valid_denom (optional) |
geom_id | Text | the ID of a geometry to check whether the numerator is valid against. Will not reduce length of returned table, but will change values for valid_geom (optional) |
timespan | Text | the ID of a timespan to check whether the numerator is valid against. Will not reduce length of returned table, but will change values for valid_timespan (optional) |
Returns
A TABLE containing the following properties
Key | Type | Description |
---|---|---|
numer_id | Text | The ID of the numerator |
numer_name | Text | A human readable name for the numerator |
numer_description | Text | Description of the numerator. Is sometimes NULL |
numer_weight | Numeric | Numeric "weight" of the numerator. Ignored. |
numer_license | Text | ID of the license for the numerator |
numer_source | Text | ID of the source for the numerator |
numer_type | Text | Postgres type of the numerator |
numer_aggregate | Text | Aggregate type of the numerator. If 'SUM' , this can be normalized by area |
numer_extra | JSONB | Extra information about the numerator column. Ignored. |
numer_tags | Text[] | Array of all tags applying to this numerator |
valid_denom | Boolean | True if the denom_id argument is a valid denominator for this numerator, False otherwise |
valid_geom | Boolean | True if the geom_id argument is a valid geometry for this numerator, False otherwise |
valid_timespan | Boolean | True if the timespan argument is a valid timespan for this numerator, False otherwise |
Examples
Obtain all numerators that are available within a small rectangle.
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326))
Obtain all numerators that are available within a small rectangle and are for the United States only.
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), '{section/tags.united_states}');
Obtain all numerators that are available within a small rectangle and are employment related for the United States only.
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), '{section/tags.united_states, subsection/tags.employment}');
Obtain all numerators that are available within a small rectangle and are related to both employment and age & gender for the United States only.
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), '{section/tags.united_states, subsection/tags.employment, subsection/tags.age_gender}');
Obtain all numerators that work with US population (us.census.acs.B01003001
)
as a denominator.
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, 'us.census.acs.B01003001')
WHERE valid_denom IS True;
Obtain all numerators that work with US states (us.census.tiger.state
)
as a geometry.
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, NULL, 'us.census.tiger.state')
WHERE valid_geom IS True;
Obtain all numerators available in the timespan 2011 - 2015
.
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, NULL, NULL, '2011 - 2015')
WHERE valid_timespan IS True;
OBS_GetAvailableDenominators(bounds, filter_tags, numer_id, geom_id, timespan)
Return available denominators within a boundary and with the specified
filter_tags
.
Arguments
Name | Type | Description |
---|---|---|
bounds | Geometry(Geometry, 4326) | a geometry which some of the denominator's data must intersect with |
filter_tags | Text[] | a list of filters. Only denominators for which all of these apply are returned NULL to ignore (optional) |
numer_id | Text | the ID of a numerator to check whether the denominator is valid against. Will not reduce length of returned table, but will change values for valid_numer (optional) |
geom_id | Text | the ID of a geometry to check whether the denominator is valid against. Will not reduce length of returned table, but will change values for valid_geom (optional) |
timespan | Text | the ID of a timespan to check whether the denominator is valid against. Will not reduce length of returned table, but will change values for valid_timespan (optional) |
Returns
A TABLE containing the following properties
Key | Type | Description |
---|---|---|
denom_id | Text | The ID of the denominator |
denom_name | Text | A human readable name for the denominator |
denom_description | Text | Description of the denominator. Is sometimes NULL |
denom_weight | Numeric | Numeric "weight" of the denominator. Ignored. |
denom_license | Text | ID of the license for the denominator |
denom_source | Text | ID of the source for the denominator |
denom_type | Text | Postgres type of the denominator |
denom_aggregate | Text | Aggregate type of the denominator. If 'SUM' , this can be normalized by area |
denom_extra | JSONB | Extra information about the denominator column. Ignored. |
denom_tags | Text[] | Array of all tags applying to this denominator |
valid_numer | Boolean | True if the numer_id argument is a valid numerator for this denominator, False otherwise |
valid_geom | Boolean | True if the geom_id argument is a valid geometry for this denominator, False otherwise |
valid_timespan | Boolean | True if the timespan argument is a valid timespan for this denominator, False otherwise |
Examples
Obtain all denominators that are available within a small rectangle.
SELECT * FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326));
Obtain all denominators that are available within a small rectangle and are for the United States only.
SELECT * FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), '{section/tags.united_states}');
Obtain all denominators for male population (us.census.acs.B01001002
).
SELECT * FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, 'us.census.acs.B01001002')
WHERE valid_numer IS True;
Obtain all denominators that work with US states (us.census.tiger.state
)
as a geometry.
SELECT * FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, NULL, 'us.census.tiger.state')
WHERE valid_geom IS True;
Obtain all denominators available in the timespan 2011 - 2015
.
SELECT * FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, NULL, NULL, '2011 - 2015')
WHERE valid_timespan IS True;
OBS_GetAvailableGeometries(bounds, filter_tags, numer_id, denom_id, timespan)
Return available geometries within a boundary and with the specified
filter_tags
.
Arguments
Name | Type | Description |
---|---|---|
bounds | Geometry(Geometry, 4326) | a geometry which must intersect the geometry |
filter_tags | Text[] | a list of filters. Only geometries for which all of these apply are returned NULL to ignore (optional) |
numer_id | Text | the ID of a numerator to check whether the geometry is valid against. Will not reduce length of returned table, but will change values for valid_numer (optional) |
denom_id | Text | the ID of a denominator to check whether the geometry is valid against. Will not reduce length of returned table, but will change values for valid_denom (optional) |
timespan | Text | the ID of a timespan to check whether the geometry is valid against. Will not reduce length of returned table, but will change values for valid_timespan (optional) |
Returns
A TABLE containing the following properties
Key | Type | Description |
---|---|---|
geom_id | Text | The ID of the geometry |
geom_name | Text | A human readable name for the geometry |
geom_description | Text | Description of the geometry. Is sometimes NULL |
geom_weight | Numeric | Numeric "weight" of the geometry. Ignored. |
geom_aggregate | Text | Aggregate type of the geometry. Ignored. |
geom_license | Text | ID of the license for the geometry |
geom_source | Text | ID of the source for the geometry |
geom_type | Text | Postgres type of the geometry |
geom_extra | JSONB | Extra information about the geometry column. Ignored. |
geom_tags | Text[] | Array of all tags applying to this geometry |
valid_numer | Boolean | True if the numer_id argument is a valid numerator for this geometry, False otherwise |
valid_denom | Boolean | True if the geom_id argument is a valid geometry for this geometry, False otherwise |
valid_timespan | Boolean | True if the timespan argument is a valid timespan for this geometry, False otherwise |
score | Numeric | Score between 0 and 100 for this geometry, higher numbers mean that this geometry is a better choice for the passed extent |
numtiles | Numeric | How many raster tiles were read for score, numgeoms, and percentfill estimates |
numgeoms | Numeric | About how many of these geometries fit inside the passed extent |
percentfill | Numeric | About what percentage of the passed extent is filled with these geometries |
estnumgeoms | Numeric | Ignored |
meanmediansize | Numeric | Ignored |
Examples
Obtain all geometries that are available within a small rectangle.
SELECT * FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_MakeEnvelope(-74, 41, -73, 40, 4326));
Obtain all geometries that are available within a small rectangle and are for the United States only.
SELECT * FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), '{section/tags.united_states}');
Obtain all geometries that work with total population (us.census.acs.B01003001
).
SELECT * FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, 'us.census.acs.B01003001')
WHERE valid_numer IS True;
Obtain all geometries with timespan 2015
.
SELECT * FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, NULL, NULL, '2015')
WHERE valid_timespan IS True;
OBS_GetAvailableTimespans(bounds, filter_tags, numer_id, denom_id, geom_id)
Return available timespans within a boundary and with the specified
filter_tags
.
Arguments
Name | Type | Description |
---|---|---|
bounds | Geometry(Geometry, 4326) | a geometry which some of the timespan's data must intersect with |
filter_tags | Text[] | a list of filters. Ignore |
numer_id | Text | the ID of a numerator to check whether the timespans is valid against. Will not reduce length of returned table, but will change values for valid_numer (optional) |
denom_id | Text | the ID of a denominator to check whether the timespans is valid against. Will not reduce length of returned table, but will change values for valid_denom (optional) |
geom_id | Text | the ID of a geometry to check whether the timespans is valid against. Will not reduce length of returned table, but will change values for valid_geom (optional) |
Returns
A TABLE containing the following properties
Key | Type | Description |
---|---|---|
timespan_id | Text | The ID of the timespan |
timespan_name | Text | A human readable name for the timespan |
timespan_description | Text | Ignored |
timespan_weight | Numeric | Ignored |
timespan_license | Text | Ignored |
timespan_source | Text | Ignored |
timespan_aggregate | Text | Ignored |
valid_numer | Boolean | True if the numer_id argument is a valid numerator for this timespan, False otherwise |
valid_denom | Boolean | True if the timespan argument is a valid timespan for this timespan, False otherwise |
valid_geom | Boolean | True if the geom_id argument is a valid geometry for this timespan, False otherwise |
Examples
Obtain all timespans that are available within a small rectangle.
SELECT * FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_MakeEnvelope(-74, 41, -73, 40, 4326));
Obtain all timespans for total population (us.census.acs.B01003001
).
SELECT * FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, 'us.census.acs.B01003001')
WHERE valid_numer IS True;
Obtain all timespans that work with US states (us.census.tiger.state
)
as a geometry.
SELECT * FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_MakeEnvelope(-74, 41, -73, 40, 4326), NULL, NULL, NULL, 'us.census.tiger.state')
WHERE valid_geom IS True;