> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/aerial/aodt/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/aerial/aodt/_mcp/server.

# GIS Pipeline

The GIS pipeline turns geospatial source data into 3D scene assets stored in S3, ready for AODT simulations and the viewer.

This quickstart shows how to access a pregenerated scene, as well as create two different maps: one from OpenStreetMap (OSM) and one from CityGML files. For deeper background, concepts, tuning, and troubleshooting, see [Scene Generation](/scene-generation).

## Prerequisites

Before running these examples, confirm:

1. The [worker stack](/worker-installation) is running, including the GIS worker container and Temporal services.
2. The [client](/client-installation) is installed and `dt_client` and `_config` are importable.
3. An S3-compatible bucket is reachable. The default worker stack ships with MinIO at `http://<worker-host>:9002` and credentials `minioadmin` / `minioadmin`.

A loaded simulation scenario (initiated with `start(yaml_content)`) is **not** required for `prepare_map`.

## Use the generated scene

Reference the output key in your simulation YAML under `gis.scene.scene_url`:

```yaml
gis:
  scene:
    scene_url: demo_gis/tokyo
  vegetation:
    active: false
    geojson: []
```

The same key works as the first argument to `SimConfig()` when you build the YAML in code:

```python
from _config import SimConfig, SimMode

config = SimConfig("demo_gis/tokyo", SimMode.EM, "examples/example_client_assets.yml")
```

See [Configuring Sim YAML](/configuring-sim-yaml) for the full sim YAML reference.

The viewer reads Cesium 3D Tiles from `<scene_url>/viz/tiles/` and quantized-mesh terrain from `<scene_url>/viz/terrain/`. See [Viewer Installation](/viewer-installation) for connection settings.

## Generate a map from OSM

The simplest way to create a map is via [OSM](https://www.openstreetmap.org/). With this method, there is no need to source GIS data yourself. Instead, source data is automatically retrieved from OSM and other publicly available sources. Only a bounding box of your area of interest is needed.

From the `client/` directory, with the worker reachable:

```bash
python examples/example_prepare_map.py \
  --s3_endpoint http://<worker-host>:9002
```

That run writes a Seattle bounding-box scene to `s3://aerial-data/demo_gis/test_osm.usd/` using MinIO defaults.

Pick your own region with bounding-box flags and an output key:

```bash
python examples/example_prepare_map.py \
  --s3_endpoint http://<worker-host>:9002 \
  --min_lon 139.74 --min_lat 35.66 \
  --max_lon 139.75 --max_lat 35.67 \
  --output_folder_key demo_gis/tokyo
```

Expected output:

```
Connecting to Digital Twin server at localhost:50051

Preparing OSM map -> s3://aerial-data/demo_gis/tokyo
(streaming heartbeats will appear below while the workflow runs)

...

Map ready: s3://aerial-data/demo_gis/tokyo
```

Once successfully run, map files will be generated in the target endpoint. These files can be browsed under `<output_folder_key>/sim/` and `<output_folder_key>/viz/`. For more details on what these files are, visit the [Scene Generation output layout](/scene-generation#output-layout).

## Generate a map from CityGML

[CityGML](https://www.ogc.org/standard/citygml/) files are a supported data source. As an example data source for Japan, consider [PLATEAU](https://www.mlit.go.jp/plateau/about/).

Point the example at server-accessible CityGML files and pass the input [EPSG](https://epsg.org/) code:

```bash
python examples/example_prepare_map.py \
  --task gml \
  --s3_endpoint http://<worker-host>:9002 \
  --input_files /data/buildings.gml /data/terrain.gml \
  --epsg_in 6697 \
  --output_folder_key demo_gis/my_gml_scene
```

GML jobs require non-empty `--input_files` and a valid `--epsg_in` for the source coordinate system. The paths must be reachable from the GIS worker container, not just the client machine.

## Next steps

* Run an [EM simulation](/em-simulations) or [RAN simulation](/ran-simulations) against your new scene.
* Read [Scene Generation](/scene-generation) for output layout, tuning, the task field reference, and common errors.
* Check [Limitations](/limitations#gis).
* See the [DigitalTwinClient API](/api/client#prepare_map) for the underlying call signature.