Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
199 changes: 4 additions & 195 deletions docs/generated-operations.md

Large diffs are not rendered by default.

23 changes: 3 additions & 20 deletions docs/python.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
The Python SDK exposes the Cairn/Roteiro API through the same three layers used by the TypeScript SDK:

1. `RoteiroClient` for the handwritten, high-traffic workflows.
2. Domain modules such as `analysis`, `attachments`, `collections`, `indoor`, `layers`, `raster`, and `vcs`.
2. Domain modules such as `analysis`, `attachments`, `collections`, `layers`, `raster`, and `vcs`.
3. `RoteiroGeneratedApi` for full parity with the server OpenAPI spec and the generated operation map in [`generated-operations.md`](./generated-operations.md).

## SDK Shape

| Layer | Export | Use it for |
|------|--------|------------|
| Handwritten client | `RoteiroClient` | Health, datasets, collections, processing jobs, uploads, raster workflow helpers, and tile URL helpers |
| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `indoor`, `Pipeline` | Focused helpers grouped by domain; these are standalone modules, not instance methods on `RoteiroClient` |
| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `Pipeline` | Focused helpers grouped by domain; these are standalone modules, not instance methods on `RoteiroClient` |
| Full API coverage | `RoteiroGeneratedApi` | Endpoints that are only available in the generated OpenAPI client |

## Installation
Expand Down Expand Up @@ -152,7 +152,7 @@ print([op["name"] for op in catalog["operations"]])
Domain helpers are standalone modules, not `RoteiroClient` instance methods.

```python
from roteiro import analysis, attachments, collections, indoor, layers, raster, vcs
from roteiro import analysis, attachments, collections, layers, raster, vcs
```

| Module | Key helpers |
Expand All @@ -163,7 +163,6 @@ from roteiro import analysis, attachments, collections, indoor, layers, raster,
| `layers` | `upload_layer`, `list_layers`, `get_layer`, `update_layer`, `publish_layer`, `archive_layer`, `upload_layer_data`, `delete_layer`, `preview_layer` |
| `vcs` | `init_repo`, `commit`, `log`, `diff`, `checkout` |
| `raster` | `get_raster_info`, `get_raster_stats`, `get_raster_histogram`, `get_raster_dimensions`, `get_raster_band_values`, `band_math`, `ndvi`, `hillshade`, `zonal_stats`, `export_raster`, `contour`, `viewshed`, `elevation_profile`, `kde`, `process`, `mosaic`, `get_mosaic_info` |
| `indoor` | `list_buildings`, `get_building`, `create_building`, `update_building`, `delete_building`, `list_floors`, `create_floor`, `list_spaces`, `create_space`, `get_space`, `list_assets`, `create_asset`, `find_path`, `parse_indoor_gml`, `import_ifc`, `import_indoor_file`, `import_imdf`, `get_occupancy`, `get_evacuation_routes` |

### Example: analysis helpers

Expand Down Expand Up @@ -211,22 +210,6 @@ ndvi = raster.ndvi(client, "landsat_scene", nir_band=4, red_band=3)
contours = raster.contour(client, "dem", interval=5)
```

### Example: indoor helpers

```python
from roteiro import indoor

buildings = indoor.list_buildings(client)

route = indoor.find_path(
client,
"hq",
"lobby",
"room-201",
accessible_only=True,
)
```

## Pipeline Builder

Use `Pipeline` when you want a compact, fluent wrapper around repeated `/api/process` calls:
Expand Down
22 changes: 2 additions & 20 deletions docs/typescript.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
The TypeScript SDK exposes the Cairn/Roteiro API through the same three layers used by the Python SDK:

1. `RoteiroClient` for the handwritten, high-traffic workflows.
2. Domain namespaces such as `analysis`, `attachments`, `collections`, `indoor`, `layers`, `raster`, and `vcs`.
2. Domain namespaces such as `analysis`, `attachments`, `collections`, `layers`, `raster`, and `vcs`.
3. `RoteiroGeneratedApi` for full parity with the server OpenAPI spec and the generated operation map in [`generated-operations.md`](./generated-operations.md).

## SDK Shape

| Layer | Export | Use it for |
|------|--------|------------|
| Handwritten client | `RoteiroClient` | Health, datasets, collections, processing jobs, uploads, raster workflow helpers, and tile URL helpers |
| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `indoor`, `Pipeline` | Focused helpers grouped by domain; these are namespace exports, not instance methods on `RoteiroClient` |
| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `Pipeline` | Focused helpers grouped by domain; these are namespace exports, not instance methods on `RoteiroClient` |
| Full API coverage | `RoteiroGeneratedApi` | Endpoints that are only available in the generated OpenAPI client |

## Installation
Expand Down Expand Up @@ -161,7 +161,6 @@ import {
analysis,
attachments,
collections,
indoor,
layers,
raster,
vcs,
Expand All @@ -176,7 +175,6 @@ import {
| `layers` | `uploadLayer`, `listLayers`, `getLayer`, `updateLayer`, `publishLayer`, `archiveLayer`, `uploadLayerData`, `deleteLayer`, `previewLayer` |
| `vcs` | `initRepo`, `commit`, `log`, `diff`, `checkout` |
| `raster` | `getRasterInfo`, `getRasterStats`, `getRasterHistogram`, `getRasterDimensions`, `getRasterBandValues`, `bandMath`, `ndvi`, `hillshade`, `zonalStats`, `exportRaster`, `contour`, `viewshed`, `elevationProfile`, `kde`, `process`, `mosaic`, `getMosaicInfo` |
| `indoor` | `listBuildings`, `getBuilding`, `createBuilding`, `updateBuilding`, `deleteBuilding`, `listFloors`, `createFloor`, `listSpaces`, `createSpace`, `getSpace`, `listAssets`, `createAsset`, `findPath`, `parseIndoorGml`, `importIfc`, `importIndoorFile`, `importImdf`, `getOccupancy`, `getEvacuationRoutes` |

### Example: analysis helpers

Expand Down Expand Up @@ -220,22 +218,6 @@ const ndvi = await raster.ndvi(client, 'landsat_scene', 4, 3);
const contours = await raster.contour(client, 'dem', { interval: 5 });
```

### Example: indoor helpers

```typescript
import { indoor } from '@roteiro/sdk';

const buildings = await indoor.listBuildings(client);

const route = await indoor.findPath(
client,
'hq',
'lobby',
'room-201',
true,
);
```

## Pipeline Builder

Use `Pipeline` when you want a compact, fluent wrapper around repeated `/api/process` calls:
Expand Down
3 changes: 1 addition & 2 deletions python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ print(health.status, len(collections), len(features.features), len(areas), len(h
| Layer | Export | Notes |
|------|--------|-------|
| Handwritten client | `RoteiroClient` | Health, datasets, collections, processing jobs, uploads, raster workflow helpers, and tile URL helpers |
| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `indoor`, `Pipeline` | Standalone modules, not instance methods on `RoteiroClient` |
| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `Pipeline` | Standalone modules, not instance methods on `RoteiroClient` |
| Full API coverage | `RoteiroGeneratedApi` | Generated from the server OpenAPI spec |

## Core Client Surface
Expand All @@ -74,7 +74,6 @@ print(health.status, len(collections), len(features.features), len(areas), len(h
| `layers` | `upload_layer`, `list_layers`, `get_layer`, `update_layer`, `publish_layer`, `archive_layer`, `upload_layer_data`, `delete_layer`, `preview_layer` |
| `vcs` | `init_repo`, `commit`, `log`, `diff`, `checkout` |
| `raster` | `get_raster_info`, `get_raster_stats`, `get_raster_histogram`, `get_raster_dimensions`, `get_raster_band_values`, `band_math`, `ndvi`, `hillshade`, `zonal_stats`, `export_raster`, `contour`, `viewshed`, `elevation_profile`, `kde`, `process`, `mosaic`, `get_mosaic_info` |
| `indoor` | `list_buildings`, `get_building`, `create_building`, `update_building`, `delete_building`, `list_floors`, `create_floor`, `list_spaces`, `create_space`, `get_space`, `list_assets`, `create_asset`, `find_path`, `parse_indoor_gml`, `import_ifc`, `import_indoor_file`, `import_imdf`, `get_occupancy`, `get_evacuation_routes` |

## Full API Coverage

Expand Down
38 changes: 2 additions & 36 deletions python/examples/quickstart.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
- Querying features with filters
- Running spatial processing pipelines
- Using the VCS (version control) API
- Working with indoor GIS buildings
- Performing raster analysis

Prerequisites:
Expand Down Expand Up @@ -104,40 +103,7 @@
# print(f" [{c.id[:8]}] {c.message}")

# ---------------------------------------------------------------------------
# 6. Indoor GIS
# ---------------------------------------------------------------------------

from roteiro import indoor

# List buildings
buildings = indoor.list_buildings(client)
print(f"\n{len(buildings)} indoor buildings")

# Create a building with floors and spaces
# building = indoor.create_building(client, {
# "id": "office-hq",
# "name": "Headquarters",
# "address": "123 Main St",
# "floors": [
# {
# "id": "floor-1",
# "name": "Ground Floor",
# "level": 0,
# "spaces": [
# {"id": "lobby", "name": "Lobby", "space_type": "corridor", "navigable": True},
# {"id": "room-101", "name": "Conference Room", "space_type": "room"},
# ],
# },
# ],
# })
# print(f"Created building: {building.name}")

# Find a path between spaces
# route = indoor.find_path(client, "office-hq", "lobby", "room-101")
# print(f"Route: {len(route.path)} steps, {route.total_distance:.1f}m")

# ---------------------------------------------------------------------------
# 7. Raster Analysis
# 6. Raster Analysis
# ---------------------------------------------------------------------------

from roteiro import raster
Expand All @@ -154,7 +120,7 @@
# result = raster.band_math(client, "sentinel2", "(b4 - b3) / (b4 + b3)")

# ---------------------------------------------------------------------------
# 8. Tile URL helpers (for MapLibre / Leaflet integration)
# 7. Tile URL helpers (for MapLibre / Leaflet integration)
# ---------------------------------------------------------------------------

print("\nTile URL templates:")
Expand Down
2 changes: 1 addition & 1 deletion python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ requires-python = ">=3.9"
authors = [
{name = "roteiro contributors"}
]
keywords = ["gis", "geospatial", "ogc", "maps", "indoor"]
keywords = ["gis", "geospatial", "ogc", "maps"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
Expand Down
19 changes: 1 addition & 18 deletions python/roteiro/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,7 @@
FeatureCollection,
HealthStatus,
HostedLayer,
IndoorAsset,
IndoorBuilding,
IndoorFloor,
IndoorModel,
IndoorSpace,
IndoorTransition,
Link,
NavigationResult,
NavigationStep,
ProcessBatchSubmitResponse,
ProcessJobRecord,
ProcessPreflightResult,
Expand Down Expand Up @@ -99,15 +91,7 @@
"FeatureCollection",
"HealthStatus",
"HostedLayer",
"IndoorAsset",
"IndoorBuilding",
"IndoorFloor",
"IndoorModel",
"IndoorSpace",
"IndoorTransition",
"Link",
"NavigationResult",
"NavigationStep",
"ProcessBatchSubmitResponse",
"ProcessJobRecord",
"ProcessPreflightResult",
Expand All @@ -133,8 +117,7 @@
"pipeline",
"attachments",
"raster",
"indoor",
]

# Make sub-modules importable as roteiro.collections, roteiro.vcs, etc.
from . import analysis, attachments, collections, indoor, layers, raster, vcs
from . import analysis, attachments, collections, layers, raster, vcs
7 changes: 1 addition & 6 deletions python/roteiro/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
custom error handling, and typed helper methods for the core handwritten SDK
surface. Domain-specific helpers also live in separate modules
(``collections``, ``layers``, ``vcs``, ``pipeline``, ``attachments``,
``raster``, ``indoor``) which accept a ``RoteiroClient`` instance.
``raster``) which accept a ``RoteiroClient`` instance.
"""

from __future__ import annotations
Expand All @@ -28,15 +28,10 @@
FeatureCollection,
HealthStatus,
HostedLayer,
IndoorBuilding,
IndoorFloor,
IndoorModel,
IndoorSpace,
RasterMosaicInfo,
ProcessBatchSubmitResponse,
ProcessJobRecord,
ProcessPreflightResult,
NavigationResult,
ProcessResult,
RasterExportResult,
RasterBandValues,
Expand Down
Loading
Loading