CNL-TN-2026-024 Technical Note

Ecological Site Characterization from Coordinates: Free API Sources for Distributed Observatory Networks

Michael P. Hamilton , Ph.D.
Published: February 15, 2026 Version: 1

Ecological Site Characterization from Coordinates: Free API Sources for Distributed Observatory Networks

Document ID: CNL-TN-2026-024 Version: 1.0 Date: February 15, 2026 Author: Michael P. Hamilton, Ph.D.


AI Assistance Disclosure: This technical note was developed with assistance from Claude (Anthropic, Claude Opus 4.6). The AI contributed to API endpoint research, comparative analysis, query syntax documentation, and manuscript drafting through extended dialogue. The author takes full responsibility for the content, accuracy, and conclusions.


Abstract

Distributed ecological observatory networks require that every observation location be characterized by its ecological identity — elevation, climate classification, ecoregion, biome, land cover type, and vegetation community — without requiring the observer to know anything about the place beyond its GPS coordinates. We evaluate six freely available coordinate-based data sources for automated ecological site characterization: Open-Meteo Elevation API (Copernicus DEM, 90 m resolution, global), a Köppen climate classification service (0.25° resolution, global), EPA Omernik Ecoregions via ArcGIS REST (Levels I–IV, US coverage), USGS National Land Cover Database via ArcGIS REST (30 m resolution, CONUS), WWF Terrestrial Ecoregions (847 ecoregions in 14 biomes, global via shapefile), and iNaturalist taxon endpoints for establishment means and conservation status. All sources are free, require no API keys (except iNaturalist place-specific queries), and support direct coordinate-based queries or point-in-polygon lookup. We document the query syntax, response structure, resolution, coverage, and limitations of each source. We then describe a Python enrichment pipeline that populates the MacroscopeVR station database (vf_stations) from coordinates alone, and discuss the extension of this approach to the SCOPE (Science Community Observatory for Participatory Ecology) framework, where thousands of citizen science observation points will require automated ecological classification at the time of capture. This capability transforms a GPS coordinate into an ecological address — the static identity layer upon which dynamic environmental data (CNL-TN-2026-023) and biodiversity observations are contextualized.


1. Introduction

1.1 The Problem

A SCOPE observer stands at an arbitrary coordinate with a 360° camera and a smartphone. The camera captures habitat structure. The smartphone captures species observations via iNaturalist. But neither instrument knows where it is ecologically. The observer may know she is standing in a California oak woodland, but the database does not. For the observation to carry ecological meaning beyond its taxonomic content, the location must be classified: What ecoregion? What biome? What climate zone? What elevation? What is the dominant land cover? Is the spotted towhee she just photographed native, introduced, or endemic to this place?

This classification problem has been solved for decades in institutional ecology — field stations know their ecoregion, universities maintain GIS layers, researchers consult published vegetation maps. But citizen science frameworks operate at arbitrary coordinates with no institutional infrastructure. The classification must be automated, derived from the coordinate itself, using freely available data sources that require no specialized software or expertise.

1.2 Context

MacroscopeVR (CNL-DR-2026-001) currently serves 33 ecological research stations with panoramic imagery, 3D terrariums, and iNaturalist species integration. The station database (vf_stations) includes fields for elevation_m, climate_zone, ecoregion, place_description, and ecology_description — all currently empty for the majority of stations. Populating these fields from coordinates is the immediate practical motivation for this work.

The broader motivation is architectural. The SCOPE framework (CNL-WP-2026-022) proposes transforming citizen science observers into mobile ecological sensing platforms. Every SCOPE observation point requires the same ecological characterization that institutional field stations receive through manual curation. The weather API evaluation (CNL-TN-2026-023) established a layered data architecture for dynamic environmental context — what conditions are happening at a location. This technical note addresses the complementary question: what is this location, ecologically? The static identity layer.

1.3 Scope

This evaluation covers coordinate-based sources for six categories of ecological site characterization:

  1. Elevation — meters above sea level from digital elevation models
  2. Climate classification — Köppen-Geiger zone from gridded climate data
  3. Ecoregion — Omernik hierarchical classification (US) and WWF biomes (global)
  4. Land cover — Anderson classification from satellite-derived products
  5. Taxonomic context — native/introduced/endemic status and conservation designations from iNaturalist
  6. Real-time environmental context — wildfire proximity, seismic activity, weather alerts, and air quality from operational monitoring APIs

Categories 1–5 represent the static ecological identity of a location — characteristics that change slowly or not at all on human timescales. Category 6 represents dynamic environmental context that changes hourly to daily but provides situational awareness for ecological observations. Together they constitute the complete ecological address of a GPS coordinate.


2. Methods

2.1 Evaluation Criteria

Each data source was evaluated against five criteria relevant to integration into a PHP/MySQL web application and a Python batch processing pipeline:

  • Query method: Can the source be queried by latitude/longitude via a REST API call, or does it require local file processing?
  • API key requirement: Does the source require registration, authentication, or subscription?
  • Resolution: What is the spatial resolution of the underlying data?
  • Coverage: Global, continental, or national?
  • Response format: JSON, CSV, or other structured format parseable in PHP or Python?

2.2 Test Sites

API endpoints were tested against three MacroscopeVR stations representing a gradient of geographic and ecological diversity:

  • Canemah Nature Lab, Oregon City, OR (45.3573°N, 122.6068°W) — Willamette Valley, low elevation
  • James San Jacinto Mountains Reserve, Idyllwild, CA (33.8094°N, 116.7752°W) — Southern California montane, high elevation, complex terrain
  • La Selva Research Station, Costa Rica (10.4302°N, 84.0074°W) — Tropical lowland, non-US coverage test

2.3 Procedure

All API calls were executed from the command line using curl on a MacBook Pro (Data). Response structure, field names, and data values were documented. For ArcGIS REST services, the Identify endpoint was tested with esriGeometryPoint geometry type and WGS84 (WKID 4326) spatial reference. Rate limiting was assessed through sequential multi-station queries.


3. Results: Static Ecological Identity

3.1 Elevation — Open-Meteo Elevation API

Source: Open-Meteo Elevation API [1] Data: Copernicus Digital Elevation Model GLO-90 Resolution: 90 meters Coverage: Global API Key: None required Rate Limit: Generous; supports multi-point queries

Endpoint:

https://api.open-meteo.com/v1/elevation?latitude={lat}&longitude={lon}

Multi-point query (batch all 33 stations in one call):

https://api.open-meteo.com/v1/elevation?latitude=45.3573,33.8094,10.4302&longitude=-122.6068,-116.7752,-84.0074

Response:

{
  "elevation": [45.0, 1649.0, 67.0]
}

The multi-point capability is significant for batch enrichment: all 33 MacroscopeVR stations can be queried in a single HTTP request. The response returns elevations in meters, directly compatible with the elevation_m integer column in vf_stations.

Assessment: Excellent. Global coverage, no key, batch-capable, 90 m resolution sufficient for station-level characterization. Direct database write with no transformation required.

3.2 Climate Classification — Köppen Climate API

Source: Scott Pinkelman Köppen Climate API [2] Data: Köppen-Geiger climate classification derived from gridded climate data Resolution: 0.25° (~28 km) Coverage: Global API Key: None required

Endpoint:

http://climateapi.scottpinkelman.com/api/v1/location/{lat}/{lon}

Response (Canemah, Oregon):

{
  "return_values": [{
    "zone": "Csb",
    "description": "Mediterranean, warm summer"
  }]
}

Response (La Selva, Costa Rica):

{
  "return_values": [{
    "zone": "Af",
    "description": "Tropical, rainforest"
  }]
}

The API returns both the standard Köppen-Geiger code and a human-readable description. The code populates climate_zone directly; the description enhances place_description narrative text.

Assessment: Good. Global coverage, no key, simple coordinate query. The 0.25° resolution is adequate for climate classification, which varies at regional rather than local scales. The HTTP (not HTTPS) protocol is a minor concern for production deployment but acceptable for batch enrichment.

3.3 Ecoregion Classification — EPA Omernik Ecoregions (US)

Source: EPA Shared Enterprise Geodata and Services (SEGS) [3] Data: Omernik Ecoregions, Levels I–IV Resolution: 1:250,000 scale (Level IV compilation) Coverage: Continental United States + Alaska API Key: None required

The EPA ArcGIS REST service provides the richest single source of ecological classification for US stations. The Omernik hierarchy spans four levels:

  • Level I: Continental-scale biomes (15 regions in North America)
  • Level II: Subcontinental ecological patterns (50 regions)
  • Level III: Regional ecological units (105 regions in the continental US)
  • Level IV: Vegetation community-scale subdivisions (968 regions)

Service URL:

https://geodata.epa.gov/arcgis/rest/services/ORD/USEPA_Ecoregions_Level_III_and_IV/MapServer

Identify query (Level III polygons, Layer 11):

https://geodata.epa.gov/arcgis/rest/services/ORD/USEPA_Ecoregions_Level_III_and_IV/MapServer/identify
  ?geometry=-122.6068,45.3573
  &geometryType=esriGeometryPoint
  &sr=4326
  &layers=all:11
  &tolerance=1
  &mapExtent=-180,-90,180,90
  &imageDisplay=800,600,96
  &returnGeometry=false
  &f=json

Key response fields (Level III):

Field Description Example (Canemah)
US_L3CODE US Level III code 3
US_L3NAME US Level III name Willamette Valley
NA_L3CODE North America Level III code 3.2
NA_L3NAME NA Level III name Willamette Valley
NA_L2CODE NA Level II code 7.1
NA_L2NAME NA Level II name Marine West Coast Forest
NA_L1CODE NA Level I code 7
NA_L1NAME NA Level I name Marine West Coast Forest

Level IV query (Layer 6) returns additional fields including US_L4CODE, US_L4NAME, and L4_KEY, providing vegetation community-level classification.

Assessment: Excellent for US stations. The four-level hierarchy provides exactly the ecological resolution needed — from biome context (Level I) through vegetation community (Level IV). The ArcGIS Identify endpoint accepts WGS84 coordinates directly. Covers 30 of 33 active MacroscopeVR stations. Does not cover La Selva (Costa Rica) or FRC Belgium.

3.4 Land Cover — USGS National Land Cover Database

Source: USGS National Map ArcGIS MapServer [4] Data: National Land Cover Database (NLCD), Anderson Level II classification Resolution: 30 meters Coverage: Continental United States

Service URL:

https://smallscale.nationalmap.gov/arcgis/rest/services/LandCover/MapServer

Identify query:

https://smallscale.nationalmap.gov/arcgis/rest/services/LandCover/MapServer/identify
  ?geometry=-122.6068,45.3573
  &geometryType=esriGeometryPoint
  &sr=4326
  &layers=visible
  &tolerance=1
  &mapExtent=-180,-90,180,90
  &imageDisplay=800,600,96
  &returnGeometry=false
  &f=json

Response values return Anderson Level II land cover classes directly applicable to ecological characterization:

NLCD Class Description Ecological Relevance
41 Deciduous Forest Broadleaf canopy communities
42 Evergreen Forest Conifer-dominated stands
43 Mixed Forest Transitional forest types
52 Shrub/Scrub Chaparral, sagebrush communities
71 Grassland/Herbaceous Prairie, meadow systems
90 Woody Wetlands Riparian, swamp forest
95 Emergent Herbaceous Wetland Marsh, bog communities

Assessment: Good for CONUS stations. The 30 m resolution provides genuinely site-specific land cover classification — the actual vegetation type at the station coordinates, not a regional average. Complements the ecoregion classification by providing observed (satellite-derived) cover rather than theoretical ecological units. Does not cover Alaska, Hawaii, or international stations.

3.5 Global Ecoregion Classification — WWF Terrestrial Ecoregions

Source: WWF Terrestrial Ecoregions of the World [5], updated by Dinerstein et al. [6] Data: 847 terrestrial ecoregions in 14 biomes and 8 biogeographic realms Resolution: Variable (ecoregion polygon boundaries) Coverage: Global API Key: None (downloadable dataset)

Unlike the previous sources, the WWF ecoregion dataset has no REST API for coordinate queries. Data are available as shapefiles or GeoJSON for download. Point-in-polygon lookup requires either local processing with a geospatial library (e.g., Python shapely + geopandas) or a hosted service.

The 14 WWF biomes:

Code Biome
1 Tropical & Subtropical Moist Broadleaf Forests
2 Tropical & Subtropical Dry Broadleaf Forests
3 Tropical & Subtropical Coniferous Forests
4 Temperate Broadleaf & Mixed Forests
5 Temperate Conifer Forests
6 Boreal Forests/Taiga
7 Tropical & Subtropical Grasslands, Savannas & Shrublands
8 Temperate Grasslands, Savannas & Shrublands
9 Flooded Grasslands & Savannas
10 Montane Grasslands & Shrublands
11 Tundra
12 Mediterranean Forests, Woodlands & Scrub
13 Deserts & Xeric Shrublands
14 Mangroves

Known classifications for non-US MacroscopeVR stations:

  • La Selva, Costa Rica: Isthmian-Atlantic Moist Forests ecoregion, Biome 1 (Tropical & Subtropical Moist Broadleaf Forests), Neotropical realm
  • FRC Belgium: Western European Broadleaf Forests ecoregion, Biome 4 (Temperate Broadleaf & Mixed Forests), Palearctic realm

Assessment: Essential for global coverage but requires local processing rather than a REST API call. For the current 33-station MacroscopeVR dataset (2 non-US stations), manual lookup from published maps is practical. For SCOPE’s anticipated thousands of global observation points, a hosted point-in-polygon service or a lightweight local lookup using the GeoJSON dataset would be necessary. The dataset is freely available under Creative Commons Attribution-NonCommercial 3.0 license.

3.6 Taxonomic Context — iNaturalist API

Source: iNaturalist API v1 [7] Data: Species establishment means, conservation status, phenological annotations Coverage: Global (where iNaturalist community data exist) API Key: None required for read operations

The iNaturalist API provides ecological context that no geospatial classification layer captures: the relationship between specific taxa and specific places.

3.6.1 Establishment Means

The /v1/taxa/{id} endpoint, when queried with a preferred_place_id, returns establishment_means indicating whether a species is native, introduced, or endemic at that location.

https://api.inaturalist.org/v1/taxa/{taxon_id}?preferred_place_id={place_id}

This transforms a species list from raw taxonomy into ecological interpretation: the 847 species observed near Blue Oak Ranch Reserve are not just names — they carry native/introduced status specific to that ecoregion.

3.6.2 Conservation Status

The taxon.conservation_statuses array returns place-specific conservation designations. A species may be listed as Endangered in California but Least Concern globally. These place-specific statuses are available when querying with geographic context.

3.6.3 Phenological Annotations

iNaturalist observations carry annotation fields for phenology (flowering, fruiting, budding), life stage, and sex. These are not location-derived but when aggregated by station and date provide phenological calendars tied to place — when species enter specific life stages at specific coordinates across years.

Assessment: Complementary rather than primary. The establishment means and conservation status enrich the existing species cache (vf_species_cache) with ecological significance. The phenological annotations create temporal context. These endpoints require place IDs (not raw coordinates), adding a lookup step: coordinates must first be resolved to an iNaturalist place via the /v1/places/nearby endpoint before taxon-specific queries can include establishment means.


4. Results: Dynamic Environmental Context

The static classification layers described in Section 3 characterize what a location is. A complementary set of operational monitoring APIs characterize what is happening at a location right now — conditions that may directly affect ecological observations.

4.1 Active Wildfire Proximity — NASA FIRMS

Source: NASA Fire Information for Resource Management System [8] Data: MODIS and VIIRS active fire detections Resolution: 375 m (VIIRS) to 1 km (MODIS) Coverage: Global Latency: Near-real-time (hours) API Key: Required (free NASA Earthdata registration)

https://firms.modaps.eosdis.nasa.gov/api/area/csv/{key}/VIIRS_SNPP_NRT/{lat-range},{lon-range}/1

Fire proximity is directly relevant to ecological observations — smoke affects visibility, species behavior changes near active fire, and post-fire landscapes represent distinct ecological states.

4.2 Seismic Activity — USGS Earthquake Hazards

Source: USGS Earthquake Hazards Program API [9] Data: Earthquake events by magnitude, location, and time Coverage: Global API Key: None required

https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&latitude={lat}&longitude={lon}&maxradiuskm=100&minmagnitude=2.0&starttime={date}

Seismic events can trigger ecological responses — landslides, changes in water flow, wildlife displacement — and provide context for anomalous observations.

4.3 Weather Alerts — NOAA National Weather Service

Source: NWS API [10] Data: Active weather alerts by point or zone Coverage: United States and territories API Key: None required

https://api.weather.gov/alerts/active?point={lat},{lon}

Returns active watches, warnings, and advisories for the coordinate. Relevant for contextualizing SCOPE observations made during extreme weather events.

4.4 Air Quality — EPA AirNow

Source: EPA AirNow API [11] Data: Air Quality Index (AQI) by pollutant Coverage: United States, Canada, Mexico API Key: Required (free registration)

https://www.airnowapi.org/aq/observation/latLong/current/?format=application/json&latitude={lat}&longitude={lon}&distance=50&API_KEY={key}

Air quality directly affects biological activity — pollinator behavior, bird vocalization timing, photosynthetic rates — and contextualizes observations made under degraded air quality conditions, particularly during wildfire smoke events.

4.5 Assessment of Dynamic Sources

Table 1. Dynamic environmental context APIs

Source Variable Coverage Key Required Latency Relevance
NASA FIRMS Active fire Global Yes (free) Hours Direct
USGS Earthquakes Seismic events Global No Minutes Contextual
NWS Alerts Weather alerts US No Minutes Direct
EPA AirNow Air quality US/CA/MX Yes (free) Hourly Direct

These dynamic sources are not candidates for batch enrichment but for live query at the time of observation. A SCOPE observer’s capture is timestamped and geolocated; at ingest time, the pipeline can query these APIs to attach environmental context: “Observation made during Air Quality Alert (AQI 157, PM2.5 from wildfire smoke, 3 active fire detections within 100 km).” This transforms a bare observation into an environmentally situated record.


5. Consolidated Source Inventory

Table 2. Complete API source inventory for ecological site characterization

Data Layer Source Method Resolution Coverage Key Rate Limit
Elevation Open-Meteo [1] REST, multi-point 90 m Global No Generous
Climate zone Köppen API [2] REST, per-point ~28 km Global No Unknown
Ecoregion (L I–IV) EPA ArcGIS [3] REST Identify 1:250K US + AK No Standard
Land cover USGS NLCD [4] REST Identify 30 m CONUS No Standard
Biome (global) WWF TEOW [5,6] Local shapefile Polygon Global No N/A
Taxon context iNaturalist [7] REST, per-taxon Point Global No 100/min
Fire proximity NASA FIRMS [8] REST, area 375 m Global Yes (free) Per key
Seismic events USGS [9] REST, radius Point Global No Standard
Weather alerts NWS [10] REST, point Zone US No Standard
Air quality AirNow [11] REST, radius Station US/CA/MX Yes (free) Per key

6. Enrichment Pipeline Design

6.1 Architecture

The enrichment pipeline operates in two modes:

Batch mode (immediate need): A Python script queries vf_stations for all active stations with coordinates, hits each API sequentially with polite rate limiting (1-second delay between calls), and populates the empty database fields. Run once; results reviewed before commit.

Ingest mode (SCOPE future): A PHP function called at observation ingest time queries the static APIs for the observation coordinate and attaches ecological classification to the observation record. Dynamic APIs are queried simultaneously for real-time context.

6.2 Batch Enrichment Script — enrich_stations.py

Input: MySQL query against vf_stations for active stations with coordinates.

Processing per station:

  1. Elevation — Query Open-Meteo with station coordinates. Write integer meters to elevation_m.
  2. Köppen zone — Query climate API. Write zone code and description to climate_zone (e.g., “Csb — Mediterranean, warm summer”).
  3. EPA Ecoregion (US stations) — Query ArcGIS Identify for Level III and Level IV polygons. Write Level III name to ecoregion. Store full hierarchy (Level I biome through Level IV community) in a structured JSON field or compose into ecology_description narrative.
  4. NLCD Land Cover (CONUS stations) — Query USGS MapServer Identify. Append dominant cover class to ecology_description.
  5. WWF Biome (non-US stations) — Manual lookup or local shapefile query. Write biome name to ecoregion.
  6. Draft narratives — Compose place_description and ecology_description from the combined results for human review.

Output: Summary report listing each station with its enrichment results, printed to terminal for review before any database writes. A --dry-run flag (default) prevents database modification until explicitly overridden with --commit.

6.3 Database Schema Implications

The current vf_stations schema accommodates the primary enrichment targets:

Column Type Source Example
elevation_m int Open-Meteo 575
climate_zone varchar(100) Köppen API Csb — Mediterranean, warm summer
ecoregion varchar(255) EPA / WWF Willamette Valley
place_description text Composed Regional geography, biome, landscape context
ecology_description text Composed Vegetation communities, habitat structure

For future SCOPE integration, the enrichment data may warrant additional structured columns or a related vf_site_classification table storing the full ecoregion hierarchy, NLCD class codes, and WWF biome identifiers as normalized data rather than composed narrative text. This decision can be deferred until the data model redesign (CNL-DR-2026-001, Task D) shifts from station-centric to place-based architecture.


7. Discussion

7.1 The Ecological Address

The combination of these data sources produces what might be called an ecological address — a structured description of what a GPS coordinate means ecologically:

Blue Oak Ranch Reserve (37.3817°N, 121.7364°W) Elevation: 575 m | Climate: Csb (Mediterranean, warm summer) Ecoregion: Southern and Baja California Pine-Oak Mountains (Level III) / Interior Santa Cruz Range (Level IV) Biome: Mediterranean California (Level I) Land Cover: Evergreen Forest (NLCD 42) 847 species observed within 20 km, 89% native establishment

This ecological address transforms a bare coordinate into a place with ecological meaning — the context within which species observations, habitat structure measurements, and environmental conditions become interpretable.

7.2 Relationship to Weather API Architecture

CNL-TN-2026-023 established a six-layer architecture for dynamic environmental data at observation locations. The ecological site characterization described here constitutes a seventh layer — or more precisely, a foundation layer beneath the six weather layers. Weather data answers “what conditions are happening here?” Ecological classification answers “what is here?” The classification is prerequisite: knowing that a location is at 1,649 m in a Mediterranean montane conifer zone determines how weather data should be interpreted. The 7°F temperature error documented at the James Reserve in CNL-TN-2026-023 is only recognizable as an error because we know the station’s elevation and ecoregion context.

7.3 Relationship to the Large Sensor Model

The Large Sensor Model proposal (CNL-WP-2026-022) describes a geographic graph neural network where monitoring stations become nodes connected by edges weighted by ecological similarity. The ecological characterization documented here provides the metadata that defines those edge weights. Two stations in the same Level III ecoregion and Köppen zone share species pools, seasonal phenology, and weather-biodiversity coupling dynamics; stations in different biomes do not. Without automated ecological classification of each node, the graph structure would be limited to geographic proximity — a far weaker basis for ecological inference.

7.4 Coverage Gaps and Fallback Strategy

The primary coverage gap is at the intersection of “non-US location” and “REST API query.” The EPA ecoregion service covers 30 of 33 current stations but will not scale to SCOPE’s anticipated global reach. The fallback strategy is hierarchical:

  1. US stations: EPA Ecoregions (Level I–IV) + NLCD land cover. Full automation.
  2. North American stations outside US: EPA North American Level I–III ecoregions extend to Canada and Mexico via the Commission for Environmental Cooperation framework. Partial automation.
  3. Global stations: WWF Terrestrial Ecoregions via local shapefile lookup. Requires a geopandas dependency but is fully automatable.
  4. Manual fallback: For the 2 current non-US stations (Belgium, Costa Rica), manual assignment from published sources is practical and immediate.

8. Limitations

Single-point characterization. Querying a single coordinate returns the classification at that exact point. Ecological research stations may span significant topographic and vegetative gradients — Blue Oak Ranch Reserve covers 1,254 hectares across elevations from 400 to 850 m, encompassing grassland, oak savanna, mixed oak woodland, and riparian forest. The single-point result characterizes the panorama capture location, not the reserve.

Classification currency. The EPA ecoregion polygons are current through December 2011. NLCD is updated on multi-year cycles. Land cover change from fire, development, or succession since the classification date is not reflected. For most research station locations, land cover stability is expected; for SCOPE observations in dynamic landscapes, this lag may matter.

Köppen resolution. The 0.25° (~28 km) grid resolution of the climate classification API cannot resolve orographic climate gradients. The James Reserve and surrounding desert communities at different elevations may share the same grid cell despite having fundamentally different climate regimes. This limitation was documented for weather APIs in CNL-TN-2026-023 and applies equally here.

iNaturalist place dependency. Establishment means and conservation status require resolving coordinates to iNaturalist place IDs, which represent administrative or ecological boundaries defined by the iNaturalist community. Coverage and specificity of these place definitions vary geographically.

API stability. Free APIs can change without notice. The Köppen climate API is a personal project; the EPA ArcGIS service has been stable for over a decade but operates under federal IT governance that periodically restructures web services. The enrichment pipeline should cache results in the database and not depend on real-time API availability for serving previously classified locations.


9. Conclusion

Six freely available data sources, requiring no API keys and no specialized software, can automatically classify any GPS coordinate in the United States by its elevation (90 m resolution), climate zone (Köppen classification), ecoregion (four hierarchical levels from biome to vegetation community), and land cover type (30 m resolution). Global coverage requires adding WWF Terrestrial Ecoregions via local shapefile processing. iNaturalist provides taxonomic context — native/introduced status and conservation designations — specific to both taxon and place.

For the immediate MacroscopeVR application, a Python batch enrichment script can populate the 33 station records in a single run, filling the empty elevation_m, climate_zone, ecoregion, place_description, and ecology_description fields from coordinates alone. For the broader SCOPE framework, the same queries execute at observation ingest time, automatically classifying every citizen science observation point without requiring the observer to know anything about the ecology of the place where they stand.

The resulting ecological address — elevation, climate zone, ecoregion hierarchy, land cover, and species context — transforms a GPS coordinate into an ecologically interpretable location. It is the static foundation upon which dynamic weather data, biodiversity observations, and habitat structure measurements gain meaning.


10. Data Availability

All endpoints documented in this evaluation:

  • Open-Meteo Elevation: https://api.open-meteo.com/v1/elevation?latitude={lat}&longitude={lon} (no key)
  • Köppen Climate: http://climateapi.scottpinkelman.com/api/v1/location/{lat}/{lon} (no key)
  • EPA Ecoregions: https://geodata.epa.gov/arcgis/rest/services/ORD/USEPA_Ecoregions_Level_III_and_IV/MapServer/identify (no key)
  • USGS NLCD: https://smallscale.nationalmap.gov/arcgis/rest/services/LandCover/MapServer/identify (no key)
  • WWF TEOW: Download from DataBasin.org or RESOLVE (Creative Commons BY-NC 3.0)
  • iNaturalist: https://api.inaturalist.org/v1/ (no key for read)
  • NASA FIRMS: https://firms.modaps.eosdis.nasa.gov/api/ (free Earthdata key)
  • USGS Earthquakes: https://earthquake.usgs.gov/fdsnws/event/1/query (no key)
  • NWS Alerts: https://api.weather.gov/alerts/active (no key)
  • AirNow: https://www.airnowapi.org/aq/ (free key)

References

[1] Open-Meteo (2026). “Elevation API.” Open-Meteo.com. https://open-meteo.com/en/docs/elevation-api

[2] Pinkelman, S. (2026). “Köppen Climate Classification API.” https://climateapi.scottpinkelman.com

[3] US EPA Office of Research and Development (2011). “Level III and IV Ecoregions of the Continental United States.” ArcGIS REST Service. https://geodata.epa.gov/arcgis/rest/services/ORD/USEPA_Ecoregions_Level_III_and_IV/MapServer

[4] USGS (2026). “National Map — Land Cover MapServer.” https://smallscale.nationalmap.gov/arcgis/rest/services/LandCover/MapServer

[5] Olson, D. M., et al. (2001). “Terrestrial Ecoregions of the World: A New Map of Life on Earth.” BioScience, 51(11), 933–938. https://doi.org/10.1641/0006-3568(2001)051[0933:TEOTWA]2.0.CO;2

[6] Dinerstein, E., et al. (2017). “An Ecoregion-Based Approach to Protecting Half the Terrestrial Realm.” BioScience, 67(6), 534–545. https://doi.org/10.1093/biosci/bix014

[7] iNaturalist (2026). “iNaturalist API v1 Documentation.” https://api.inaturalist.org/v1/docs/

[8] NASA (2026). “Fire Information for Resource Management System (FIRMS).” https://firms.modaps.eosdis.nasa.gov

[9] USGS (2026). “Earthquake Hazards Program — API Documentation.” https://earthquake.usgs.gov/fdsnws/event/1/

[10] NOAA (2026). “National Weather Service API.” https://www.weather.gov/documentation/services-web-api

[11] EPA (2026). “AirNow API.” https://docs.airnowapi.org

[12] Omernik, J. M. (1995). “Ecoregions: A Spatial Framework for Environmental Management.” In Biological Assessment and Criteria: Tools for Water Resource Planning and Decision Making. Lewis Publishers.


Document History

Version Date Changes
1.0 2026-02-15 Initial release: evaluation of six static and four dynamic coordinate-based ecological classification sources; enrichment pipeline design; relationship to CNL-TN-2026-023 weather API architecture and CNL-WP-2026-022 Large Sensor Model

Cite This Document

Michael P. Hamilton, Ph.D. (2026). "Ecological Site Characterization from Coordinates: Free API Sources for Distributed Observatory Networks." Canemah Nature Laboratory Technical Note CNL-TN-2026-024. https://canemah.org/archive/CNL-TN-2026-024

BibTeX

@techreport{hamilton2026ecological, author = {Hamilton, Michael P., Ph.D.}, title = {Ecological Site Characterization from Coordinates: Free API Sources for Distributed Observatory Networks}, institution = {Canemah Nature Laboratory}, year = {2026}, number = {CNL-TN-2026-024}, month = {february}, url = {https://canemah.org/archive/document.php?id=CNL-TN-2026-024}, abstract = {Distributed ecological observatory networks require that every observation location be characterized by its ecological identity — elevation, climate classification, ecoregion, biome, land cover type, and vegetation community — without requiring the observer to know anything about the place beyond its GPS coordinates. We evaluate six freely available coordinate-based data sources for automated ecological site characterization: Open-Meteo Elevation API (Copernicus DEM, 90 m resolution, global), a Köppen climate classification service (0.25° resolution, global), EPA Omernik Ecoregions via ArcGIS REST (Levels I–IV, US coverage), USGS National Land Cover Database via ArcGIS REST (30 m resolution, CONUS), WWF Terrestrial Ecoregions (847 ecoregions in 14 biomes, global via shapefile), and iNaturalist taxon endpoints for establishment means and conservation status. All sources are free, require no API keys (except iNaturalist place-specific queries), and support direct coordinate-based queries or point-in-polygon lookup. We document the query syntax, response structure, resolution, coverage, and limitations of each source. We then describe a Python enrichment pipeline that populates the MacroscopeVR station database (`vf\_stations`) from coordinates alone, and discuss the extension of this approach to the SCOPE (Science Community Observatory for Participatory Ecology) framework, where thousands of citizen science observation points will require automated ecological classification at the time of capture. This capability transforms a GPS coordinate into an ecological address — the static identity layer upon which dynamic environmental data (CNL-TN-2026-023) and biodiversity observations are contextualized.} }

Permanent URL: https://canemah.org/archive/document.php?id=CNL-TN-2026-024