EnVar microschema · class
Spatial Reference
SpatialReference
Spatial provenance of an environmental exposure value: the native grid / footprint of the source product, the CRS, the geographic extent, the extraction rule used to attach a value to a patient location, and the target geography type. One per record.
Where it sits
Composed intoEnvironmentalExposureRecord
Fields
Gridded environmental data divides the world into square tiles, like pixels in a photo, and reports one value per tile. This field says how wide each tile is in metres — small tiles give a sharp picture of local conditions, big tiles give a blurry average over a large area.
Native spatial resolution of the source product in metres. Daymet = 1000, GridMET ≈ 4000, NARR ≈ 32000.
Example
1000 — Daymet V4 1 km grid
Covered by — 5 standards
Why it matters & mappings
Exposure misclassification scales directly with cell size: a value from a 32 km NARR cell averages over an entire metro area while a 1 km Daymet cell resolves a neighbourhood. Without the resolution, downstream users cannot judge how precise a per-patient exposure really is or whether two studies' values are comparable.
A coordinate reference system is the agreed way of turning numbers into places on the Earth — the same pair of coordinates means different spots under different systems. Naming the system (usually as a short EPSG code) tells software exactly which convention the numbers follow.
Coordinate reference system as an EPSG identifier or PROJ string. Mandatory. E.g. EPSG:4326 for Daymet, EPSG:5072 for NARR Lambert Conformal Conic.
Example
EPSG:4326 — WGS 84, used by the Daymet and ACAG PM2.5 scenarios
Covered by — 5 standards
Why it matters & mappings
Without the CRS the grid cannot be placed on the Earth correctly: the same coordinate pair points to different physical locations under different reference systems, so a mismatched or missing CRS silently shifts every location and attaches exposure values to the wrong places.
See also: https://epsg.io/, https://proj.org/
A patient's home almost never sits exactly at the centre of a data tile, so a rule is needed to pick or blend nearby tile values into one number for that spot — take the closest tile, average the four nearest ones, and so on. This field records which rule was used.
How a gridded value was extracted at the patient's coordinates. Default for DeGAUSS daymet / narr is inverse_distance_weighted_4_nearest_cells.
Examples
inverse_distance_weighted_4_nearest_cells — DeGAUSS default for point extraction (Daymet Tmax scenario)
area_weighted_polygon_mean — polygon aggregation (ACAG PM2.5 tract scenario)
Allowed values
nearest_cell Take the value from the single nearest grid cell
bilinear Bilinear interpolation of the four nearest cells
inverse_distance_weighted_4_nearest_cells Inverse-distance-weighted average of the 4 nearest cells
area_weighted_polygon_mean Area-weighted mean of cells overlapping a polygon
population_weighted_mean Population-weighted mean over a target geography (e
point_station_lookup Direct lookup at a point station observation
intersection_area_proportion Value = fraction of the target cell covered by the source feature (source∩tar...
raster_zonal_sum Sum of source raster cell values falling within each target zone
feature_density Count (or line-length) of source features per unit target area
Covered by — 5 standards
Why it matters & mappings
This is the single biggest lever in turning a grid into a per-person value: different extraction methods yield different exposure values at the very same point. If the method is unknown, exposure values are not reproducible and cannot be compared across studies or tool runs.
See also: https://degauss.org/
This says what kind of place the value belongs to: one specific home address, a neighbourhood-sized census area, a ZIP-code area, a whole county, and so on. The bigger the unit, the more the number is a shared average rather than a personal measurement.
Geographic unit the exposure value is attached to.
Examples
point_residence — patient's exact residence coordinates (Daymet Tmax scenario)
census_tract — tract-level aggregate (ACAG PM2.5 scenario)
Allowed values
point_residence Attached to the patient's exact lat / lon
census_block_group US Census Block Group
census_tract US Census Tract
zcta ZIP Code Tabulation Area
county US County (FIPS)
h3_hex H3 hexagon at some resolution
public_water_system Public water system service area polygon
Covered by — 5 standards
Why it matters & mappings
An exposure pinned to an exact residence and one averaged over a whole county are fundamentally different quantities with different privacy and misclassification profiles. Without the target geography, users cannot tell how localised the value is or link it correctly to health records held at a given geographic level.
Some exposures are summarised over a circle drawn around the patient's home rather than at the exact address — for example, how much green space lies within walking distance. This field gives the radius of that circle in metres; a bigger circle averages over more surroundings.
Radius of any spatial buffer applied (e.g. greenspace at 500 / 1500 / 2500 m). Null when no buffer is applied.
Example
500 — 500 m greenspace buffer; null in the Daymet Tmax scenario (no buffer)
Why it matters & mappings
For buffer-based strategies the radius is a hyperparameter that changes the assigned exposure — greenspace within 500 m and within 2500 m of a home are different quantities. Omitting it makes buffer-derived values unreproducible and incomparable across analyses.
Some datasets average their tiles by giving more weight to places where more people live, so the number reflects what a typical resident experiences rather than a plain average over land. This field names the population map (and its year) that was used for that weighting.
Census vintage used for population weighting (e.g. the Spangler et al. WBGT product is population-weighted from gridMET). Null when no weighting is applied.
Example
GPW v4 (2020) — Gridded Population of the World v4, used in the ACAG PM2.5 scenario
Why it matters & mappings
Population-weighted values depend on which population dataset and census vintage supplied the weights; the same grid weighted by 2010 versus 2020 populations gives different exposures. Without the source, a weighted value cannot be reproduced or compared with other weighted products.
A short plain-English phrase saying what the map data actually looks like — evenly spaced square tiles, honeycomb-shaped cells, irregular neighbourhood outlines, or individual measuring stations dotted around.
Human-readable label for the native resolution, e.g. "1 km regular grid", "H3 hex zoom 8", "census tract polygon", "point station".
Example
1 km regular grid — Daymet V4 native grid
Covered by — 5 standards
Why it matters & mappings
The numeric resolution alone cannot distinguish a regular grid from hex cells, polygons, or point stations, and these layouts imply different extraction and error behaviour. Omitting the label leaves the geometry of the source data ambiguous even when the cell size is known.
A bounding box is a rectangle drawn on the map that just barely contains all the data — four numbers giving its western, southern, eastern, and northern edges. Anything outside that rectangle was never covered by the dataset in the first place.
Bounding box of the source product (not the extracted subset), as [min_lon, min_lat, max_lon, max_lat].
Example
[-131.104, 14.075, -52.95, 53.038] — Daymet V4 product bounding box (CONUS + Hawaii + Puerto Rico); one float per list element, ordered min_lon, min_lat, max_lon, max_lat
Covered by — 5 standards
Why it matters & mappings
The product footprint distinguishes "no value here" (the location lies outside the product's coverage) from "missing value" (the product covers it but the value is absent). Without it, out-of-extent patients look like data gaps and can be silently misinterpreted.
A plain-English description of where in the world the dataset has data — for example "the continental United States plus Hawaii and Puerto Rico" — so you can tell at a glance whether your study area is covered.
Human-readable description of the product extent, e.g. "CONUS + Hawaii + Puerto Rico", "global land surface 60°S-80°N".
Example
CONUS + Hawaii + Puerto Rico — Daymet V4 product extent
Covered by — 5 standards
Why it matters & mappings
The numeric bounding box is precise but opaque; a human-readable extent lets reviewers and data users sanity-check coverage at a glance (e.g. spotting that Alaska is not included) without decoding coordinates.
Turning map data measured on one set of shapes into values on another set of shapes can aim to keep different things unchanged — the average level of something, the total amount of it, how densely it occurs, or how much of an area it covers. This records which of those the conversion was designed to keep true, because the same input handled two different ways produces two different numbers.
What quantity the spatial-aggregation operator is meant to preserve when a value on a source spatial support is re-expressed on the target support — not the mechanics of the operator (that is extraction_method), but the invariant it holds fixed (mean intensity, total mass, occurrence density, or areal coverage).
Examples
mean_intensity — area-weighted interpolation of a modeled concentration preserves the area-mean intensity (tract-to-hex concentration case)
total_mass_conservation — population-weighted / area-proportional allocation of a count preserves the total (population-count case)
Allowed values
mean_intensity Preserves the area-mean intensity of the quantity (area-weighted interpolatio...
total_mass_conservation Preserves the total amount (area-proportional or population-weighted allocati...
occurrence_intensity Preserves occurrence density — count or line-length per unit area
areal_coverage Preserves fractional areal coverage — the proportion of the target cell inter...
Covered by — 5 standards
Why it matters & mappings
Recording what quantity the operator preserves — not just the operator name — is what makes two datasets' spatial values comparable and poolable: an area-weighted mean and a mass-conserving allocation applied to the same input give different numbers, and only the preserved-quantity tag tells a downstream analyst which one a value is, so two supports can be reconciled rather than silently mixed.
When the circle-radius field above is left empty, this field says why — most often because no circle was drawn at all and the value was taken straight at the address. It turns a silent blank into an explicit, trustworthy statement.
Reason extraction_buffer_m is null.
Example
not_applicable — no buffer is used for point extraction (Daymet Tmax scenario)
Allowed values
not_provided_by_source Source product does not produce this information
available_but_not_extracted Source produces this information but the current pipeline does not surface it
upstream_data_not_propagated An upstream tool emitted this information but the current pipeline dropped it...
under_investigation We are working on populating this slot
not_applicable This slot does not apply to this variable / record
Why it matters & mappings
An empty buffer field is ambiguous: it could mean no buffer was used or that the radius was simply not recorded. Stating the reason makes the absence deliberate and checkable, so validators and reviewers do not flag a legitimate point extraction as incomplete metadata.
When the population-weighting field above is empty, this field explains why — usually because the dataset is a plain average with no population weighting at all. It makes the emptiness intentional rather than an oversight.
Reason population_weighting_source is null.
Example
not_applicable — no population weighting applied (Daymet Tmax scenario)
Allowed values
not_provided_by_source Source product does not produce this information
available_but_not_extracted Source produces this information but the current pipeline does not surface it
upstream_data_not_propagated An upstream tool emitted this information but the current pipeline dropped it...
under_investigation We are working on populating this slot
not_applicable This slot does not apply to this variable / record
Why it matters & mappings
A blank weighting source is ambiguous between "no weighting was applied" and "the source was not recorded". Recording the reason keeps unweighted products from looking like incompletely documented weighted ones and lets automated checks pass legitimately null records.
Full field reference — every slot, cardinality & inheritance
| Field | Name | Tier | Cardinality / Range | Description |
|---|---|---|---|---|
| Native Spatial Resolution (m) | native_spatial_resolution_m |
core | 1 Float |
Native spatial resolution of the source product in metres |
| Native Resolution Descriptor | native_spatial_resolution_descriptor |
recommended | 0..1 String |
Human-readable label for the native resolution, e |
| Coordinate Reference System (CRS) | crs |
core | 1 String |
Coordinate reference system as an EPSG identifier or PROJ string |
| Product Bounding Box | spatial_extent_bbox |
recommended | * Float |
Bounding box of the source product (not the extracted subset), as `[min_lon... |
| Product Extent Description | spatial_extent_descriptor |
recommended | 0..1 String |
Human-readable description of the product extent, e |
| Extraction Method | extraction_method |
core | 1 ExtractionMethodEnum |
How a gridded value was extracted at the patient's coordinates |
| Extraction Buffer Radius (m) | extraction_buffer_m |
conditionally core | 0..1 Float |
Radius of any spatial buffer applied (e |
| Reason Buffer Radius Is Missing | extraction_buffer_m_missing_reason |
optional | 0..1 MissingReasonEnum |
Reason extraction_buffer_m is null |
| Population Weighting Source | population_weighting_source |
conditionally core | 0..1 String |
Census vintage used for population weighting (e |
| Reason Population Weighting Is Missing | population_weighting_source_missing_reason |
optional | 0..1 MissingReasonEnum |
Reason population_weighting_source is null |
| Target Geography Type | target_geography_type |
core | 1 TargetGeographyTypeEnum |
Geographic unit the exposure value is attached to |
| Spatial Aggregation Preserved Quantity | spatial_aggregation_preserves |
recommended | 0..1 SpatialAggregationPreservationEnum |
What quantity the spatial-aggregation operator is meant to preserve when a ... |
Diagram & LinkML source
classDiagram
class SpatialReference
click SpatialReference href "../../classes/SpatialReference/"
SpatialReference : crs
SpatialReference : extraction_buffer_m
SpatialReference : extraction_buffer_m_missing_reason
SpatialReference --> "0..1" MissingReasonEnum : extraction_buffer_m_missing_reason
click MissingReasonEnum href "../../enums/MissingReasonEnum/"
SpatialReference : extraction_method
SpatialReference --> "1" ExtractionMethodEnum : extraction_method
click ExtractionMethodEnum href "../../enums/ExtractionMethodEnum/"
SpatialReference : native_spatial_resolution_descriptor
SpatialReference : native_spatial_resolution_m
SpatialReference : population_weighting_source
SpatialReference : population_weighting_source_missing_reason
SpatialReference --> "0..1" MissingReasonEnum : population_weighting_source_missing_reason
click MissingReasonEnum href "../../enums/MissingReasonEnum/"
SpatialReference : spatial_aggregation_preserves
SpatialReference --> "0..1" SpatialAggregationPreservationEnum : spatial_aggregation_preserves
click SpatialAggregationPreservationEnum href "../../enums/SpatialAggregationPreservationEnum/"
SpatialReference : spatial_extent_bbox
SpatialReference : spatial_extent_descriptor
SpatialReference : target_geography_type
SpatialReference --> "1" TargetGeographyTypeEnum : target_geography_type
click TargetGeographyTypeEnum href "../../enums/TargetGeographyTypeEnum/"
name: SpatialReference
annotations:
domain_of_use:
tag: domain_of_use
value: environmental_exposure
description: 'Spatial provenance of an environmental exposure value: the native grid
/ footprint of the source product, the CRS, the geographic extent, the extraction
rule used to attach a value to a patient location, and the target geography type.
One per record.'
title: Spatial Reference
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://epsg.io/
- https://en.wikipedia.org/wiki/Coordinate_reference_system
rank: 1000
slot_usage:
crs:
name: crs
required: true
extraction_method:
name: extraction_method
required: true
native_spatial_resolution_m:
name: native_spatial_resolution_m
required: true
target_geography_type:
name: target_geography_type
required: true
attributes:
native_spatial_resolution_m:
name: native_spatial_resolution_m
annotations:
tier:
tag: tier
value: core
justification:
tag: justification
value: 'Exposure misclassification scales directly with cell size: a value
from a 32 km NARR cell averages over an entire metro area while a 1 km Daymet
cell resolves a neighbourhood. Without the resolution, downstream users
cannot judge how precise a per-patient exposure really is or whether two
studies'' values are comparable.'
explanation:
tag: explanation
value: Gridded environmental data divides the world into square tiles, like
pixels in a photo, and reports one value per tile. This field says how wide
each tile is in metres — small tiles give a sharp picture of local conditions,
big tiles give a blurry average over a large area.
covered_by:
tag: covered_by
annotations:
omop_gaia:
tag: omop_gaia
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: gaiaCatalog has no first-class native-resolution slot; it appears
only via the EnVar extension PropertyValue envar:native_spatial_resolution_m,
not natively.
degauss:
tag: degauss
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: DeGAUSS emits no resolution field; "Daymet = 1 km" is out-of-band
knowledge, not written to any output.
amadeus:
tag: amadeus
annotations:
extent:
tag: extent
value: partial
status:
tag: status
value: asserted
where:
tag: where
value: thredds_dataset.xml axis lat/lon increment (0.041666 deg)
note:
tag: note
value: Only derivable from the grid-axis increment in thredds_dataset.xml;
never written as a resolution number in metres.
cher:
tag: cher
annotations:
extent:
tag: extent
value: full
status:
tag: status
value: asserted
where:
tag: where
value: table_name spatial-res code (e.g. m30, k05, h08)
note:
tag: note
value: C-HER encodes native spatial resolution first-class in the
table_name pattern (§2.3 metric/H3 codes) and as the inheritable
spatial_resolution field.
codata:
tag: codata
annotations:
extent:
tag: extent
value: out_of_layer
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: CODATA EVs / DDI-CDI operate at the conceptual/represented
layer; native grid resolution of one run is instance-layer detail
deliberately outside their scope.
description: Native spatial resolution of the source product in metres. Daymet
= 1000, GridMET ≈ 4000, NARR ≈ 32000.
title: Native Spatial Resolution (m)
examples:
- value: '1000'
description: Daymet V4 1 km grid
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://daymet.ornl.gov/
- https://www.climatologylab.org/gridmet.html
- https://psl.noaa.gov/data/gridded/data.narr.html
owner: SpatialReference
domain_of:
- SpatialReference
range: float
required: true
native_spatial_resolution_descriptor:
name: native_spatial_resolution_descriptor
annotations:
tier:
tag: tier
value: recommended
justification:
tag: justification
value: The numeric resolution alone cannot distinguish a regular grid from
hex cells, polygons, or point stations, and these layouts imply different
extraction and error behaviour. Omitting the label leaves the geometry of
the source data ambiguous even when the cell size is known.
explanation:
tag: explanation
value: A short plain-English phrase saying what the map data actually looks
like — evenly spaced square tiles, honeycomb-shaped cells, irregular neighbourhood
outlines, or individual measuring stations dotted around.
covered_by:
tag: covered_by
annotations:
omop_gaia:
tag: omop_gaia
annotations:
extent:
tag: extent
value: partial
status:
tag: status
value: asserted
where:
tag: where
value: gaia_db data_source.geom_type; meta_etl_*.json structure/geometry
(raster)
note:
tag: note
value: GAIA records geometry type (point/raster) but no human-readable
resolution-layout descriptor; the resolution label itself is absent.
degauss:
tag: degauss
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: DeGAUSS writes no resolution descriptor of any kind.
amadeus:
tag: amadeus
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: No resolution-layout label is emitted; only a derivable axis
increment exists.
cher:
tag: cher
annotations:
extent:
tag: extent
value: partial
status:
tag: status
value: asserted
where:
tag: where
value: table_name spatial-res code prefix (m/k/h/c/t/b/s/z)
note:
tag: note
value: The spatial-resolution code prefix distinguishes grid (m/k),
H3 (h), and polygon (tract/block/ZIP) layouts (§2.3), a coded rather
than free-text descriptor.
codata:
tag: codata
annotations:
extent:
tag: extent
value: out_of_layer
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: Resolution-layout description of a specific product is instance-layer
detail outside the conceptual EV/DDI-CDI layer.
description: Human-readable label for the native resolution, e.g. "1 km regular
grid", "H3 hex zoom 8", "census tract polygon", "point station".
title: Native Resolution Descriptor
examples:
- value: 1 km regular grid
description: Daymet V4 native grid
from_schema: https://w3id.org/linkml/microschemas/envar
owner: SpatialReference
domain_of:
- SpatialReference
range: string
crs:
name: crs
annotations:
tier:
tag: tier
value: core
justification:
tag: justification
value: 'Without the CRS the grid cannot be placed on the Earth correctly:
the same coordinate pair points to different physical locations under different
reference systems, so a mismatched or missing CRS silently shifts every
location and attaches exposure values to the wrong places.'
explanation:
tag: explanation
value: A coordinate reference system is the agreed way of turning numbers
into places on the Earth — the same pair of coordinates means different
spots under different systems. Naming the system (usually as a short EPSG
code) tells software exactly which convention the numbers follow.
covered_by:
tag: covered_by
annotations:
omop_gaia:
tag: omop_gaia
annotations:
extent:
tag: extent
value: full
status:
tag: status
value: verified
where:
tag: where
value: gaia_db data_source.srid (4326); gaia_catalog meta_etl_*.json
epsg/local_epsg; location.geom EPSG:4326
evidence:
tag: evidence
value: EnVar/examples/heat/COMPARISON.md §C (CRS of source raster
✅)
note:
tag: note
value: GAIA carries the source-raster CRS first-class via data_source.srid,
meta_etl epsg/local_epsg, and the enforced PostGIS geom SRID.
degauss:
tag: degauss
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: DeGAUSS leaves CRS implicit WGS84 with no column.
amadeus:
tag: amadeus
annotations:
extent:
tag: extent
value: full
status:
tag: status
value: verified
where:
tag: where
value: thredds_dataset.xml coordinate_system = "WGS84,EPSG:4326"
evidence:
tag: evidence
value: EnVar/examples/heat/COMPARISON.md §C (CRS of source raster
✅)
note:
tag: note
value: Amadeus's THREDDS grid declares the raster CRS explicitly as
an EPSG code.
cher:
tag: cher
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: C-HER's metadata model (table_dictionary / column dictionary)
documents spatial extent/resolution codes but no per-resource CRS/EPSG
field.
codata:
tag: codata
annotations:
extent:
tag: extent
value: out_of_layer
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: CRS of a specific extract is an instance-layer representation
detail; the conceptual EV/DDI-CDI layer does not carry it.
description: Coordinate reference system as an EPSG identifier or PROJ string.
Mandatory. E.g. `EPSG:4326` for Daymet, `EPSG:5072` for NARR Lambert Conformal
Conic.
title: Coordinate Reference System (CRS)
examples:
- value: EPSG:4326
description: WGS 84, used by the Daymet and ACAG PM2.5 scenarios
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://epsg.io/
- https://proj.org/
owner: SpatialReference
domain_of:
- SpatialReference
range: string
required: true
spatial_extent_bbox:
name: spatial_extent_bbox
annotations:
tier:
tag: tier
value: recommended
justification:
tag: justification
value: The product footprint distinguishes "no value here" (the location lies
outside the product's coverage) from "missing value" (the product covers
it but the value is absent). Without it, out-of-extent patients look like
data gaps and can be silently misinterpreted.
explanation:
tag: explanation
value: A bounding box is a rectangle drawn on the map that just barely contains
all the data — four numbers giving its western, southern, eastern, and northern
edges. Anything outside that rectangle was never covered by the dataset
in the first place.
covered_by:
tag: covered_by
annotations:
omop_gaia:
tag: omop_gaia
annotations:
extent:
tag: extent
value: full
status:
tag: status
value: verified
where:
tag: where
value: gaia_db data_source.spatial_coverage; meta_dcat_*.json spatialCoverage;
meta_etl_*.json extent (POLYGON WKT)
evidence:
tag: evidence
value: EnVar/examples/heat/COMPARISON.md §G (source-dataset spatial
coverage ✅)
note:
tag: note
value: GAIA records the product footprint as a WKT polygon extent
and a DCAT spatialCoverage string.
degauss:
tag: degauss
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: DeGAUSS emits no product bounding box.
amadeus:
tag: amadeus
annotations:
extent:
tag: extent
value: full
status:
tag: status
value: verified
where:
tag: where
value: thredds_dataset.xml projectionBox + LatLonBox (CONUS bbox)
evidence:
tag: evidence
value: EnVar/examples/heat/COMPARISON.md §G (source-dataset spatial
coverage ✅)
note:
tag: note
value: The THREDDS dataset.xml gives the product footprint as projectionBox
and LatLonBox.
cher:
tag: cher
annotations:
extent:
tag: extent
value: partial
status:
tag: status
value: asserted
where:
tag: where
value: table_name spatial-extent code (Gxx/Txx/Cxx/sxx/bxx/cdX)
note:
tag: note
value: C-HER encodes spatial extent as a coded region (§2.2), not
a numeric min/max bounding box.
codata:
tag: codata
annotations:
extent:
tag: extent
value: out_of_layer
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: A product's spatial bounding box is instance/discovery-layer
detail outside the conceptual EV/DDI-CDI layer.
description: Bounding box of the source *product* (not the extracted subset),
as `[min_lon, min_lat, max_lon, max_lat]`.
title: Product Bounding Box
examples:
- value: '[-131.104, 14.075, -52.95, 53.038]'
description: Daymet V4 product bounding box (CONUS + Hawaii + Puerto Rico);
one float per list element, ordered min_lon, min_lat, max_lon, max_lat
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://datatracker.ietf.org/doc/html/rfc7946#section-5
owner: SpatialReference
domain_of:
- SpatialReference
range: float
multivalued: true
spatial_extent_descriptor:
name: spatial_extent_descriptor
annotations:
tier:
tag: tier
value: recommended
justification:
tag: justification
value: The numeric bounding box is precise but opaque; a human-readable extent
lets reviewers and data users sanity-check coverage at a glance (e.g. spotting
that Alaska is not included) without decoding coordinates.
explanation:
tag: explanation
value: A plain-English description of where in the world the dataset has data
— for example "the continental United States plus Hawaii and Puerto Rico"
— so you can tell at a glance whether your study area is covered.
covered_by:
tag: covered_by
annotations:
omop_gaia:
tag: omop_gaia
annotations:
extent:
tag: extent
value: partial
status:
tag: status
value: asserted
where:
tag: where
value: gaia_db data_source.spatial_coverage; meta_dcat_*.json spatialCoverage
note:
tag: note
value: GAIA's spatialCoverage string can act as a human-readable extent
label, though it is not guaranteed to be a curated prose descriptor.
degauss:
tag: degauss
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: DeGAUSS emits no extent descriptor.
amadeus:
tag: amadeus
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: Amadeus carries a numeric bbox (projectionBox/LatLonBox) but
no human-readable extent description.
cher:
tag: cher
annotations:
extent:
tag: extent
value: partial
status:
tag: status
value: asserted
where:
tag: where
value: spatial-extent code prefix (Gxx=global, Txx=US+Terr, Cxx=CONUS,
sxx=state)
note:
tag: note
value: The coded spatial-extent prefix conveys a controlled-vocabulary
extent label (§2.2) rather than free-text prose.
codata:
tag: codata
annotations:
extent:
tag: extent
value: out_of_layer
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: Human-readable extent of a specific product is instance/discovery-layer
detail outside the conceptual layer.
description: Human-readable description of the product extent, e.g. "CONUS + Hawaii
+ Puerto Rico", "global land surface 60°S-80°N".
title: Product Extent Description
examples:
- value: CONUS + Hawaii + Puerto Rico
description: Daymet V4 product extent
from_schema: https://w3id.org/linkml/microschemas/envar
owner: SpatialReference
domain_of:
- SpatialReference
range: string
extraction_method:
name: extraction_method
annotations:
tier:
tag: tier
value: core
justification:
tag: justification
value: 'This is the single biggest lever in turning a grid into a per-person
value: different extraction methods yield different exposure values at the
very same point. If the method is unknown, exposure values are not reproducible
and cannot be compared across studies or tool runs.'
explanation:
tag: explanation
value: A patient's home almost never sits exactly at the centre of a data
tile, so a rule is needed to pick or blend nearby tile values into one number
for that spot — take the closest tile, average the four nearest ones, and
so on. This field records which rule was used.
covered_by:
tag: covered_by
annotations:
omop_gaia:
tag: omop_gaia
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: No extraction-method slot in gaiaCatalog or gaia-db; only the
implicit st_within join semantics of working.spatial_join_exposure
exist, undocumented.
degauss:
tag: degauss
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: DeGAUSS applies IDW-4-nearest by default but records no extraction-method
field.
amadeus:
tag: amadeus
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: Amadeus emits no extraction-method field.
cher:
tag: cher
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: C-HER's data-level codes track processing stage, not the point-to-cell
extraction rule; no extraction-method field.
codata:
tag: codata
annotations:
extent:
tag: extent
value: out_of_layer
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: How a value was extracted from a grid is instance-layer provenance
the conceptual EV/DDI-CDI layer deliberately omits.
description: How a gridded value was extracted at the patient's coordinates. Default
for DeGAUSS daymet / narr is `inverse_distance_weighted_4_nearest_cells`.
title: Extraction Method
examples:
- value: inverse_distance_weighted_4_nearest_cells
description: DeGAUSS default for point extraction (Daymet Tmax scenario)
- value: area_weighted_polygon_mean
description: polygon aggregation (ACAG PM2.5 tract scenario)
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://degauss.org/
owner: SpatialReference
domain_of:
- SpatialReference
range: ExtractionMethodEnum
required: true
extraction_buffer_m:
name: extraction_buffer_m
annotations:
tier:
tag: tier
value: conditionally_core
tier_context:
tag: tier_context
value: cross-module — Core iff linkage_method.linkage_strategy is buffer_aggregation_around_residence.
Not expressible as a class rule (rules cannot reach across classes), so
the checker evaluates it in RESIDUAL_CONTEXT_PREDICATES.
justification:
tag: justification
value: For buffer-based strategies the radius is a hyperparameter that changes
the assigned exposure — greenspace within 500 m and within 2500 m of a home
are different quantities. Omitting it makes buffer-derived values unreproducible
and incomparable across analyses.
explanation:
tag: explanation
value: Some exposures are summarised over a circle drawn around the patient's
home rather than at the exact address — for example, how much green space
lies within walking distance. This field gives the radius of that circle
in metres; a bigger circle averages over more surroundings.
description: Radius of any spatial buffer applied (e.g. greenspace at 500 / 1500
/ 2500 m). Null when no buffer is applied.
title: Extraction Buffer Radius (m)
examples:
- value: '500'
description: 500 m greenspace buffer; null in the Daymet Tmax scenario (no buffer)
from_schema: https://w3id.org/linkml/microschemas/envar
owner: SpatialReference
domain_of:
- SpatialReference
range: float
extraction_buffer_m_missing_reason:
name: extraction_buffer_m_missing_reason
annotations:
tier:
tag: tier
value: optional
justification:
tag: justification
value: 'An empty buffer field is ambiguous: it could mean no buffer was used
or that the radius was simply not recorded. Stating the reason makes the
absence deliberate and checkable, so validators and reviewers do not flag
a legitimate point extraction as incomplete metadata.'
explanation:
tag: explanation
value: When the circle-radius field above is left empty, this field says why
— most often because no circle was drawn at all and the value was taken
straight at the address. It turns a silent blank into an explicit, trustworthy
statement.
description: Reason `extraction_buffer_m` is null.
title: Reason Buffer Radius Is Missing
examples:
- value: not_applicable
description: no buffer is used for point extraction (Daymet Tmax scenario)
from_schema: https://w3id.org/linkml/microschemas/envar
owner: SpatialReference
domain_of:
- SpatialReference
range: MissingReasonEnum
population_weighting_source:
name: population_weighting_source
annotations:
tier:
tag: tier
value: conditionally_core
tier_context:
tag: tier_context
value: cross-module — Core iff spatial_reference.extraction_method is population_weighted_mean
OR linkage_method.linkage_strategy is population_weighted_area_to_residence.
The disjunction spans two classes, so it is not expressible as a class rule;
the checker evaluates it in RESIDUAL_CONTEXT_PREDICATES.
justification:
tag: justification
value: Population-weighted values depend on which population dataset and census
vintage supplied the weights; the same grid weighted by 2010 versus 2020
populations gives different exposures. Without the source, a weighted value
cannot be reproduced or compared with other weighted products.
explanation:
tag: explanation
value: Some datasets average their tiles by giving more weight to places where
more people live, so the number reflects what a typical resident experiences
rather than a plain average over land. This field names the population map
(and its year) that was used for that weighting.
description: Census vintage used for population weighting (e.g. the Spangler et
al. WBGT product is population-weighted from gridMET). Null when no weighting
is applied.
title: Population Weighting Source
examples:
- value: GPW v4 (2020)
description: Gridded Population of the World v4, used in the ACAG PM2.5 scenario
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://www.census.gov/programs-surveys/geography/guidance/geo-areas.html
- https://www.climatologylab.org/gridmet.html
owner: SpatialReference
domain_of:
- SpatialReference
range: string
population_weighting_source_missing_reason:
name: population_weighting_source_missing_reason
annotations:
tier:
tag: tier
value: optional
justification:
tag: justification
value: A blank weighting source is ambiguous between "no weighting was applied"
and "the source was not recorded". Recording the reason keeps unweighted
products from looking like incompletely documented weighted ones and lets
automated checks pass legitimately null records.
explanation:
tag: explanation
value: When the population-weighting field above is empty, this field explains
why — usually because the dataset is a plain average with no population
weighting at all. It makes the emptiness intentional rather than an oversight.
description: Reason `population_weighting_source` is null.
title: Reason Population Weighting Is Missing
examples:
- value: not_applicable
description: no population weighting applied (Daymet Tmax scenario)
from_schema: https://w3id.org/linkml/microschemas/envar
owner: SpatialReference
domain_of:
- SpatialReference
range: MissingReasonEnum
target_geography_type:
name: target_geography_type
annotations:
tier:
tag: tier
value: core
justification:
tag: justification
value: An exposure pinned to an exact residence and one averaged over a whole
county are fundamentally different quantities with different privacy and
misclassification profiles. Without the target geography, users cannot tell
how localised the value is or link it correctly to health records held at
a given geographic level.
explanation:
tag: explanation
value: 'This says what kind of place the value belongs to: one specific home
address, a neighbourhood-sized census area, a ZIP-code area, a whole county,
and so on. The bigger the unit, the more the number is a shared average
rather than a personal measurement.'
covered_by:
tag: covered_by
annotations:
omop_gaia:
tag: omop_gaia
annotations:
extent:
tag: extent
value: partial
status:
tag: status
value: asserted
where:
tag: where
value: gaia_db data_source.geom_type (point); location.geom
note:
tag: note
value: GAIA records the geometry type (point) but not the full EnVar
target-geography vocabulary (tract/ZCTA/county); values land on
the person's point location.
degauss:
tag: degauss
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: DeGAUSS attaches values to the geocoded point residence but
has no explicit target-geography-type field.
amadeus:
tag: amadeus
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: Amadeus collapses to lat/lon at the THREDDS request with no
geography-type field.
cher:
tag: cher
annotations:
extent:
tag: extent
value: full
status:
tag: status
value: asserted
where:
tag: where
value: spatial-res code (c/t/b/z/h) + column_tag Spatial – Primary
note:
tag: note
value: C-HER's spatial-resolution code names the geographic unit (county/tract/block
group/ZCTA/H3) and column_tag flags the spatial-primary column (§2.3,
§6.1).
codata:
tag: codata
annotations:
extent:
tag: extent
value: out_of_layer
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: The target geographic unit of a specific value is instance-layer
detail outside the conceptual EV/DDI-CDI layer.
description: Geographic unit the exposure value is attached to.
title: Target Geography Type
examples:
- value: point_residence
description: patient's exact residence coordinates (Daymet Tmax scenario)
- value: census_tract
description: tract-level aggregate (ACAG PM2.5 scenario)
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://www.census.gov/programs-surveys/geography/guidance/geo-areas.html
owner: SpatialReference
domain_of:
- SpatialReference
range: TargetGeographyTypeEnum
required: true
spatial_aggregation_preserves:
name: spatial_aggregation_preserves
annotations:
tier:
tag: tier
value: recommended
justification:
tag: justification
value: 'Recording *what quantity the operator preserves* — not just the operator
name — is what makes two datasets'' spatial values comparable and poolable:
an area-weighted mean and a mass-conserving allocation applied to the same
input give different numbers, and only the preserved-quantity tag tells
a downstream analyst which one a value is, so two supports can be reconciled
rather than silently mixed.'
explanation:
tag: explanation
value: Turning map data measured on one set of shapes into values on another
set of shapes can aim to keep different things unchanged — the average level
of something, the total amount of it, how densely it occurs, or how much
of an area it covers. This records which of those the conversion was designed
to keep true, because the same input handled two different ways produces
two different numbers.
covered_by:
tag: covered_by
annotations:
omop_gaia:
tag: omop_gaia
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: No preserved-quantity slot in gaiaCatalog or gaia-db; the invariant
an aggregation holds fixed is not recorded.
degauss:
tag: degauss
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: DeGAUSS does point extraction only and records no aggregation-preservation
semantics.
amadeus:
tag: amadeus
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: Amadeus records no preserved-quantity of any spatial aggregation.
cher:
tag: cher
annotations:
extent:
tag: extent
value: absent
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: C-HER captures resolution and data-level but not which quantity
a re-gridding operator preserves.
codata:
tag: codata
annotations:
extent:
tag: extent
value: out_of_layer
status:
tag: status
value: asserted
where:
tag: where
value: no column
note:
tag: note
value: The preserved quantity of an aggregation is instance-layer
methodological detail outside the conceptual EV/DDI-CDI layer.
description: What quantity the spatial-aggregation operator is meant to *preserve*
when a value on a source spatial support is re-expressed on the target support
— not the mechanics of the operator (that is `extraction_method`), but the invariant
it holds fixed (mean intensity, total mass, occurrence density, or areal coverage).
title: Spatial Aggregation Preserved Quantity
examples:
- value: mean_intensity
description: area-weighted interpolation of a modeled concentration preserves
the area-mean intensity (tract-to-hex concentration case)
- value: total_mass_conservation
description: population-weighted / area-proportional allocation of a count preserves
the total (population-count case)
from_schema: https://w3id.org/linkml/microschemas/envar
owner: SpatialReference
domain_of:
- SpatialReference
range: SpatialAggregationPreservationEnum
See Also
Identifier and Mapping Information
Annotations
| property | value |
|---|---|
| domain_of_use | environmental_exposure |
Schema Source
- from schema: https://w3id.org/linkml/microschemas/envar
Mappings
| Mapping Type | Mapped Value |
|---|---|
| self | envar:SpatialReference |
| native | envar:SpatialReference |