Geologic AI measurement of a map area: a glowing box over forest, farmland, a river and a small town, split into squares coloured by land cover, with one panel showing the shares of trees, cropland and built-up land and another showing population density in people per square kilometre
What covers the ground, and who lives there

Key Takeaways

  • Stratigraphic Amenity is a free geologic AI tool from Eigenform that AI assistants can use to work with geologic maps. Two of its features, landcover_distribution and population_density, describe the surface of any map area: what covers the ground (forest, farmland, water, buildings and so on) and how many people live there. They use world maps made from satellite images in Google Earth Engine, Google’s online service for analysing such maps.
  • Use them to see early on what an exploration area looks like from above and who lives nearby, which a company needs to know before planning field work or talking to local communities. Without them, someone would download the world maps, cut out the area and add up the numbers by hand in mapping software.
  • Both stay off unless you ask for them, and you need your own Google Earth Engine account, because every calculation runs on Google’s computers.
  • The numbers are estimates from world maps, not a count made on the ground. By default the tool looks at the area in 100-metre squares, and the population figure does not say which year it describes.

TL;DR

Give this geologic AI tool an area and it answers two questions: how much of the ground is forest, farmland, water, buildings or something else, and how many people live there per square kilometre. Both answers come from world maps in Google Earth Engine, so you need your own Earth Engine account, and they are estimates rather than measurements made on the ground.

What Are the Earth Engine Providers?

landcover_distribution and population_density are two knowledge providers in Stratigraphic Amenity that compute statistics for a bounding box in Google Earth Engine. Both are explicit-only and accept no provider-specific options, so an agent gets them only by naming them when it looks up earthquakes, faults and minerals for an area.

Setting Up Geologic AI With Earth Engine

Three things are needed, and the capability check reports the first two as missing requirements until they are in place:

  1. the knowledge-earthengine extra, which installs the Earth Engine Python client;
  2. GEOMAP_EARTHENGINE_PROJECT, the Google Cloud project ID used for Earth Engine;
  3. Earth Engine authentication, done with the Earth Engine client outside the package.

The server never reads credentials from its own environment variables, and credential files and tokens must not be committed or passed to a model. A ready capability check is necessary but not sufficient: it confirms the package and project are set, not that authentication works or the datasets are reachable.

The other settings have defaults:

VariableDefaultMeaning
GEOMAP_EARTHENGINE_LANDCOVER_DATASETESA/WorldCover/v200Land cover collection
GEOMAP_EARTHENGINE_POPULATION_DATASETWorldPop/GP/100m/popPopulation collection
GEOMAP_EARTHENGINE_SCALE100Calculation grid, in metres
GEOMAP_EARTHENGINE_MAX_PIXELS100000000Maximum pixels per calculation

How Land Cover and Population Density Are Calculated

For a geologic AI agent, both work the same way. They take the requested box as a rectangle, merge the Earth Engine image collection into one image, clip it to the box and run a single reduceRegion calculation. bestEffort is on, so for a box too large for the pixel limit, Earth Engine computes on a coarser grid instead of failing.

Land cover distribution

landcover_distribution counts the pixels of each class in ESA WorldCover and returns the share of each class in the box, as percentages rounded to three decimals.

CodeClass
10Trees
20Shrubland
30Grassland
40Cropland
50Built-up
60Bare / Sparse Vegetation
70Snow and Ice
80Permanent Water Bodies
90Herbaceous Wetland
95Mangroves
100Moss and Lichen

Only classes present in the box are returned, and the summary states how many there were, for example “Computed landcover distribution for 6 classes.”

Population density

population_density adds up the population band of WorldPop’s 100-metre grid inside the box, divides by the box’s area and returns four values: population_total, area_km2, density_people_per_km2 and a readable label, such as “37.5 people/km^2”.

The area is the whole rectangle, lakes and empty land included, so the density is an average over the box, not the density where people actually live.

What to Watch For

  • Both providers are live. They run only when included, and every uncached query is a remote Earth Engine computation under your project.
  • The grid is coarser than the data. WorldCover is published at 10 metres, but the default calculation uses a 100-metre grid, so narrow roads, streams and small clearings blur into their surroundings. Lower GEOMAP_EARTHENGINE_SCALE for small areas.
  • The population year is not pinned. The provider merges the whole WorldPop collection without choosing a year, so the result does not state which year it describes.
  • Replacement datasets must match. The code reads a band named Map for land cover and population for population, so a different collection set through the environment variables needs the same band names.
  • Results are cached. The same box, rounded to four decimals, returns the cached answer without calling Earth Engine again.

FAQs

Do I need a Google account to measure land cover and population density?

Yes. Both providers run in Google Earth Engine, so you need an Earth Engine account with a Google Cloud project, set as GEOMAP_EARTHENGINE_PROJECT, and authentication done through the Earth Engine client. The server reads neither credentials nor tokens itself, and they should never be passed to a model.

Which year is the population data from?

The provider does not choose one. It merges the whole WorldPop 100-metre collection, which covers several years, into a single image without filtering by year, so the result does not say which year it reflects. Treat it as an approximate recent estimate, or point GEOMAP_EARTHENGINE_POPULATION_DATASET at a single-year collection with a population band.

Can I use a different land cover dataset?

Yes, through GEOMAP_EARTHENGINE_LANDCOVER_DATASET, as long as the collection uses a band named Map and WorldCover-style class codes. Other codes still appear in the result, but as “Class” followed by the code, because only the eleven WorldCover classes have names in the provider.

How large an area can I measure?

There is no fixed limit on the box. Each calculation is capped at 100,000,000 pixels by default, and with bestEffort on, Earth Engine switches to a coarser grid when a large box would exceed it. Very large boxes therefore return coarser estimates rather than an error.

Try It With Geocluster

Stratigraphic Amenity is one of the Geocluster tools, MCP servers that let AI agents work with geology data and maps.

What covers the ground matters most next to what lies beneath it, such as the known mineral occurrences for a map area.