Skip to content

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.

12 fields 4 core

URI: envar:class/SpatialReference

Core Conditionally core Recommended Optional
Core Required for a valid record 4 fields
Native Spatial Resolution (m)corerequired

native_spatial_resolution_m · range Float · cardinality 1

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

1000Daymet V4 1 km grid

Covered by — 5 standards
omop_gaiaassertedabsent coverage
gaiaCatalog has no first-class native-resolution slot; it appears only via the EnVar extension PropertyValue envar:native_spatial_resolution_m, not natively.
degaussassertedabsent coverage
DeGAUSS emits no resolution field; "Daymet = 1 km" is out-of-band knowledge, not written to any output.
amadeusassertedpartial coverage
where thredds_dataset.xml axis lat/lon increment (0.041666 deg)
Only derivable from the grid-axis increment in thredds_dataset.xml; never written as a resolution number in metres.
cherassertedfull coverage
where table_name spatial-res code (e.g. m30, k05, h08)
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.
codataassertedout_of_layer coverage
CODATA EVs / DDI-CDI operate at the conceptual/represented layer; native grid resolution of one run is instance-layer detail deliberately outside their scope.
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.

Coordinate Reference System (CRS)corerequired

crs · range String · cardinality 1

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:4326WGS 84, used by the Daymet and ACAG PM2.5 scenarios

Covered by — 5 standards
omop_gaiaverifiedfull coverage
where gaia_db data_source.srid (4326); gaia_catalog meta_etl_*.json epsg/local_epsg; location.geom EPSG:4326
GAIA carries the source-raster CRS first-class via data_source.srid, meta_etl epsg/local_epsg, and the enforced PostGIS geom SRID.
degaussassertedabsent coverage
DeGAUSS leaves CRS implicit WGS84 with no column.
amadeusverifiedfull coverage
where thredds_dataset.xml coordinate_system = "WGS84,EPSG:4326"
Amadeus's THREDDS grid declares the raster CRS explicitly as an EPSG code.
cherassertedabsent coverage
C-HER's metadata model (table_dictionary / column dictionary) documents spatial extent/resolution codes but no per-resource CRS/EPSG field.
codataassertedout_of_layer coverage
CRS of a specific extract is an instance-layer representation detail; the conceptual EV/DDI-CDI layer does not carry it.
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.

Extraction Methodcorerequired

extraction_method · range ExtractionMethodEnum · cardinality 1

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_cellsDeGAUSS default for point extraction (Daymet Tmax scenario)

area_weighted_polygon_meanpolygon 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
omop_gaiaassertedabsent coverage
No extraction-method slot in gaiaCatalog or gaia-db; only the implicit st_within join semantics of working.spatial_join_exposure exist, undocumented.
degaussassertedabsent coverage
DeGAUSS applies IDW-4-nearest by default but records no extraction-method field.
amadeusassertedabsent coverage
Amadeus emits no extraction-method field.
cherassertedabsent coverage
C-HER's data-level codes track processing stage, not the point-to-cell extraction rule; no extraction-method field.
codataassertedout_of_layer coverage
How a value was extracted from a grid is instance-layer provenance the conceptual EV/DDI-CDI layer deliberately omits.
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.

Target Geography Typecorerequired

target_geography_type · range TargetGeographyTypeEnum · cardinality 1

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_residencepatient's exact residence coordinates (Daymet Tmax scenario)

census_tracttract-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
omop_gaiaassertedpartial coverage
where gaia_db data_source.geom_type (point); location.geom
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.
degaussassertedabsent coverage
DeGAUSS attaches values to the geocoded point residence but has no explicit target-geography-type field.
amadeusassertedabsent coverage
Amadeus collapses to lat/lon at the THREDDS request with no geography-type field.
cherassertedfull coverage
where spatial-res code (c/t/b/z/h) + column_tag Spatial – Primary
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).
codataassertedout_of_layer coverage
The target geographic unit of a specific value is instance-layer detail outside the conceptual EV/DDI-CDI layer.
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.

Conditionally core Required in specific contexts 2 fields
Extraction Buffer Radius (m)conditionally core

extraction_buffer_m · range Float · cardinality 0..1

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

500500 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.

Population Weighting Sourceconditionally core

population_weighting_source · range String · cardinality 0..1

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.

Recommended Strongly encouraged 4 fields
Optional Include when available 2 fields
Reason Buffer Radius Is Missingoptional

extraction_buffer_m_missing_reason · range MissingReasonEnum · cardinality 0..1

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_applicableno 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.

Reason Population Weighting Is Missingoptional

population_weighting_source_missing_reason · range MissingReasonEnum · cardinality 0..1

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_applicableno 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

Mappings

Mapping Type Mapped Value
self envar:SpatialReference
native envar:SpatialReference