ATLAS-3D

Add the ground to your digital twin

You already model the building. ATLAS-3D models the site it stands on — terrain, flood exposure, solar yield, air quality, street network, climate trend — from public open data, in about a minute, with no BIM file, no sensors and no API key.

Free to integrate · no account · no key · schema atlas3d.site-context/1

Where the line sits

This is deliberately not a facility management platform. It stops at the property boundary, which is precisely where most facility platforms begin.

Your platform owns

Assets and their condition. Maintenance and work orders. BIM geometry, floors and rooms. Occupancy, utility metering, OEE, building carbon. Everything inside the envelope, and everything you have onboarded.

ATLAS-3D owns

Everything outside it, for anywhere on Earth, without onboarding: terrain and low-lying ground, rooftop solar potential, ambient air quality, the surrounding street and building fabric, live weather and the 1980-present climate record for that exact spot.

Typical uses: a site-context tab beside an asset record; screening a candidate site before anyone is sent to survey it; a solar or flood pre-assessment across a portfolio; giving an operator with a wide geographic footprint — a port, a rail network, a ministry estate — a view of the land between their buildings.

Nothing to procure. There is no key to issue, no contract to sign and no per-seat cost for any of the three integration routes below. If a route you need is missing, ask.

The lowest-effort integration: link from an asset record straight to its surroundings. Every parameter is optional.

https://www.ai4nation.com/?lat=45.5489&lon=13.7302&r=400&t=14&build=1
ParamMeaningDefault
lat, lonCentre of the capture zone, decimal degrees
rCapture radius in metres, 150–650350
tTime of day, 0–24, for the lighting model17.5
build1 builds the 3D zone immediately on loadoff
embed1 strips the console for an iframeoff

A deep link with lat/lon skips the marketing intro automatically. The app also accepts its own permalink form, #loc=lat,lon,radius,hour, which is what the in-app Share link button produces.

2. Embed

embed=1 drops the marketing intro and slims the console so the view sits comfortably beside your own UI. Attribution stays visible — that is an ODbL licence condition, not a branding choice.

<iframe
  src="https://www.ai4nation.com/?lat=45.5489&lon=13.7302&r=400&build=1&embed=1"
  width="100%" height="520" style="border:0;border-radius:10px"
  loading="lazy" title="Site context — Port of Koper"></iframe>

Live, right here

This is the real application, embedded on this page, building the district around the Port of Koper. Give it a moment — it is reconstructing from open data as you watch.

3. postMessage channel

Drive the embed from your page, and listen for what it finds. Commands carry source:'atlas3d-host'; events come back with source:'atlas3d'.

Commands you send

const frame = document.querySelector('iframe').contentWindow;

frame.postMessage({source:'atlas3d-host', type:'build',
                   lat:45.5489, lon:13.7302, radius:400}, '*');
frame.postMessage({source:'atlas3d-host', type:'time', hour:21.5}, '*');
frame.postMessage({source:'atlas3d-host', type:'view', mode:'viewOrbit'}, '*');
frame.postMessage({source:'atlas3d-host', type:'context'}, '*');
frame.postMessage({source:'atlas3d-host', type:'reset'}, '*');

Events you receive

addEventListener('message', e => {
  if (!e.data || e.data.source !== 'atlas3d') return;
  switch (e.data.type) {
    case 'ready':   /* the app booted */                       break;
    case 'built':    handleSiteContext(e.data.context);        break;
    case 'enriched': handleSiteContext(e.data.context);        break;
    case 'context':  handleSiteContext(e.data.context);        break;
    case 'error':   console.warn('atlas3d:', e.data.message);  break;
  }
});

built fires on its own as soon as a zone finishes, carrying the same payload the context command returns — so a host page usually needs no polling at all.

Terrain comes from a slower elevation service, so flood is still null at built time. A second enriched event follows with the completed payload once that lands. Treat enriched as the authoritative one; built exists so you can render something immediately.

4. Site Context JSON

The machine-readable handoff, downloadable in-app from Context JSON and identical to the postMessage payload. Every value carries its unit, every score its formula, and anything not measured is null rather than a guess.

{
  "schema": "atlas3d.site-context/1",
  "generated": "2026-08-12T09:14:02.118Z",
  "location": {
    "lat": 45.5489, "lon": 13.7302, "radius_m": 400,
    "place": "Port of Koper",
    "bbox": { "south": 45.545, "west": 13.725, "north": 45.553, "east": 13.735 }
  },
  "permalink": "https://www.ai4nation.com/#loc=45.54890,13.73020,400,17.5",
  "built": {
    "buildings_real": 312, "buildings_synthetic": 0,
    "tallest_m": 44, "road_network_km": 18.4,
    "osm_height_coverage_pct": 61
  },
  "environment": {
    "pm25_ug_m3": 12.4, "pm25_source": "OpenWeather live",
    "terrain_min_m": 1, "terrain_max_m": 27,
    "solar_roof_kwp": 8140,
    "green_cover_m2": 128400, "greenable_ground_m2": 61200
  },
  "scores": {
    "flood": { "value": 38, "label": "Flood exposure", "band": "fair",
               "higher_is_better": false,
               "formula": "% of terrain within 1.5 m of the zone's lowest point" }
  },
  "sources": ["OpenStreetMap contributors (ODbL)", "Esri World Imagery", "…"],
  "disclaimer": "Indicative estimates derived from public open data. …"
}

Scores are 0–100 with a stated direction, so you can drop them straight into an existing dashboard without re-deriving anything. The schema field is versioned: additive changes keep /1, and anything breaking becomes /2.

What you must pass on to your users

These outputs are indicative estimates from public open data — not a survey, valuation, engineering assessment or flood-risk assessment. Building heights are inferred (from OSM tags, LiDAR where available, satellite shadow length, or typology) and each one is labelled with its provenance. Layers marked simulated are generated where no open data exists and must never be used for excavation or utility location.

If you surface this data in your product, carry the disclaimer and the source attribution with it. Full detail: Accuracy and Attribution.

Something missing?

If your platform needs a format this does not speak yet — IFC, WFS, a server-side endpoint, a bulk portfolio run across many sites, or an on-premise deployment for data that cannot leave your network — say so. Those are all tractable, and a real integration need is the best possible reason to build one.

Contact: [CONTACT EMAIL]