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
71 changes: 15 additions & 56 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,8 @@ Priorities can shift based on community feedback and KyFromAbove program updates
- Manifest schema: file paths, checksums (SHA-256), CRS, acquisition dates, tile count, AOI WKT
- CLI: `abovepy package --county Franklin -o ./delivery`

### CAD/Survey Export Formats
- **LandXML surface export** — TIN triangulation from DEM via rasterio + scipy, output as LandXML 1.2. This is the universal format Civil 3D, Carlson, and OpenRoads all import natively.
- **Contour DXF export** — contour lines as DXF polylines via ezdxf library. Consumable by every CAD platform.
- **LAS point cloud export** — non-COPC LAS 1.4 for older tools that can't read COPC (laspy)
### Export Formats
- **LAS point cloud export** — non-COPC LAS 1.4 for tools that can't read COPC (laspy)
- **GeoTIFF DEM packaging** — survey-grade metadata: EPSG:3089, NAVD88 vertical datum, US survey feet units

### Oblique Intelligence
Expand All @@ -60,12 +58,11 @@ Priorities can shift based on community feedback and KyFromAbove program updates
- Richer STAC asset handling — expose all assets, runtime conformance checks, graceful CQL2 fallback

**Surfaces:** Python, CLI, ArcGIS Pro, QGIS
**New dependencies:** `ezdxf` (DXF export), `scipy` (TIN triangulation)
**Tests:** ~60 new tests

## v2.3 (Mid Term)

**Theme: Analysis APIs and Civil 3D prototype**
**Theme: Analysis APIs**

### Analysis APIs
- `abovepy.sample(point, product)` — elevation at a point
Expand All @@ -75,64 +72,29 @@ Priorities can shift based on community feedback and KyFromAbove program updates
- `abovepy.change_detection(bbox, product_before, product_after)` — difference map
- Phase comparison workflows (Phase 2 vs Phase 3 elevation change)

### Civil 3D Plugin Prototype
- .NET 8.0 C# plugin for AutoCAD Civil 3D 2025+
- Ribbon button: "Get KyFromAbove Data"
- AOI from drawing extent or user-picked polygon/polyline
- Product selector dropdown matching abovepy products
- Calls abovepy CLI via subprocess → generates LandXML + LAS package
- Auto-imports TIN Surface and point cloud into active drawing
- Targets Autodesk App Store distribution

### Other
- Optional `SearchResult.to_xarray()` via `stackstac` or `odc-stac`
- Shareable MapLibre GL JS web viewer templates

**Surfaces:** Python, CLI, ArcGIS Pro, QGIS, Civil 3D (prototype)
**Surfaces:** Python, CLI, ArcGIS Pro, QGIS

## v3.0 (Long Term)

**Theme: Native design-tool integration**

All CAD plugins use a shared file-based architecture: abovepy generates LandXML, LAS, GeoTIFF, and DXF outputs → thin platform wrappers import them into each host application.

### Civil 3D Plugin v1 (.NET C#)
- "AboveC3D" ribbon tab: Get Data, Package Site, Import Surface
- AOI from drawing extent or user-picked polyline/polygon
- Product picker dropdown
- Auto-creates Civil 3D TIN Surface from LandXML, loads point cloud from LAS
- Corridor-aware data retrieval
- Distribution: Autodesk App Store

### Carlson Plugin v1 (AutoLISP + batch)
- "AboveKY" menu in Carlson Survey / Civil / Mining
- Commands: ABOVEKY_SEARCH, ABOVEKY_DOWNLOAD, ABOVEKY_SURFACE
- LISP calls abovepy CLI via shell → imports LandXML DTM
- Distribution: installer package, Carlson reseller channel
- Target: Kentucky's large surveyor user base

### OpenRoads Designer / MicroStation Addin (Python)
- Uses MicroStation 2024+ native Python API
- "KyFromAbove" script category: Get Terrain, Get Imagery, Get Point Cloud
- Calls abovepy directly (pip-installed in MicroStation Python) or via subprocess
- Imports LandXML as terrain model
- Distribution: Bentley Developer Network or manual install

### Cross-Platform Architecture
```
abovepy package CLI
└── Outputs: LandXML, LAS, GeoTIFF, DXF, manifest.json
├── Civil 3D plugin reads LandXML → creates TIN Surface
├── Carlson command reads LandXML → creates DTM
└── ORD script reads LandXML → creates terrain model
```
**Theme: TBD — scope set after v2.2 / v2.3 feedback.**

Candidate directions:
- Deeper analysis: corridor-aware workflows, multi-temporal change detection, volumetric pipelines
- Offline / cached data support for field use
- Server-side processing surfaces (TiTiler extensions, STAC-aware services)

Breaking API cleanup lands here. `to_landxml()` (deprecated in v2.2) is scheduled for removal in v3.0.

## Target Users

| Persona | Primary tools | Primary needs |
|---------|---------------|---------------|
| **Surveyor** | Civil 3D, Carlson | EPSG:3089, feet buffers, LandXML surfaces, provenance, clean deliverables |
| **Civil engineer** | Civil 3D, ORD, Carlson | Corridor search, cut/fill, phase comparison, DEM surfaces, LAS import |
| **Surveyor** | Python, QGIS, ArcGIS Pro | EPSG:3089, feet buffers, provenance, clean deliverables |
| **Civil engineer** | Python, ArcGIS Pro, QGIS | Corridor search, cut/fill, phase comparison, DEM surfaces, LAS import |
| **GIS analyst** | ArcGIS Pro, QGIS, Python | Broad search, QGIS interop, phase comparison, lazy loading |
| **Planner** | ArcGIS Pro, QGIS, web | County/area search, ortho access, flood screening |
| **Emergency management** | ArcGIS Pro, web, mobile | Rapid site assessment, oblique inspection, flood analysis |
Expand All @@ -145,13 +107,10 @@ abovepy package CLI
| **CLI** | Full | +package | +analysis | Full |
| **ArcGIS Pro** | Toolbox (5 tools) | +packaging | +analysis | maintained |
| **QGIS** | Plugin v1 (4 tools) | +packaging | +analysis | maintained |
| **Civil 3D** | — | File import (LandXML) | Plugin prototype | Plugin v1 |
| **Carlson** | — | File import (LandXML) | — | Plugin v1 |
| **ORD / MicroStation** | — | File import (LandXML, LAS) | — | Python scripts |

## Non-Goals

- Generic STAC client functionality (use pystac-client directly)
- Non-Kentucky data sources
- Reimplementing PDAL, stackstac, or TiTiler
- Building CAD/BIM editing features (abovepy delivers data, not design tools)
- Native plugins or add-ins for CAD platforms (Civil 3D, Carlson, OpenRoads Designer, MicroStation). Generic file-format interop (GeoTIFF, LAS, GeoPackage) is in scope; design-tool-specific integration is not.
31 changes: 15 additions & 16 deletions docs/community/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,44 +31,46 @@ Priorities can shift based on community feedback and KyFromAbove program updates

## v2.2 (Mid Term)

**Theme: Deliverables, oblique intelligence, design-tool formats**
**Theme: Deliverables, oblique intelligence**

- `SearchResult.package()` — clipped DEMs, orthos, point clouds bundled with footprints, previews, manifest, provenance, and disclaimer
- **CAD/survey export formats** — LandXML surfaces (Civil 3D / Carlson), contour DXF, LAS point clouds (non-COPC for older tools), GeoTIFF DEMs with survey-grade metadata
- Package outputs consumable by Python, ArcGIS Pro, QGIS, Civil 3D, Carlson, and ORD
- **Export formats** — LAS point clouds (non-COPC for tools that can't read COPC), GeoTIFF DEMs with survey-grade metadata (EPSG:3089, NAVD88, US survey feet)
- Package outputs consumable by Python, ArcGIS Pro, and QGIS
- Oblique spatial search by point/AOI with nearest-frame selection
- 4-direction oblique bundles for site inspection
- JSON sidecar parsing for camera metadata, footprints, and timestamps
- QGIS interoperability — GeoPackage outputs, GeoParquet indexes, QGIS-friendly layer packaging
- Richer STAC asset handling — expose all assets, runtime conformance checks, graceful CQL2 fallback
- ArcGIS Pro toolbox — packaging tool, oblique inspection tool
- `to_landxml()` deprecation notice (removal scheduled for v3.0)

## v2.3 (Long Term)

**Theme: Analysis APIs, Civil 3D plugin, advanced workflows**
**Theme: Analysis APIs, advanced workflows**

- Stable analysis APIs: `sample`, `profile`, `zonal_stats`, `cut_fill`, `change_detection`, `flood_fill`
- Phase comparison workflows (Phase 2 vs Phase 3 elevation change)
- **Civil 3D plugin prototype** — ribbon button / tool palette for "Get KyFromAbove data for this drawing extent." Delivers DEM surface and point cloud directly into the active drawing. Targets AutoCAD App Store distribution.
- Optional xarray/dask bridge for lazy array loading (`pip install abovepy[xarray]`)
- Shareable web viewer templates (MapLibre GL JS)
- Parcel-based and route/corridor-based search (if validated)

## v3.0 (Future)

**Theme: Native design-tool integration**
**Theme: TBD — scope set after v2.2 / v2.3 feedback.**

- **Carlson Software plugin** — menu command for KyFromAbove surface/point cloud import. Targets Carlson's large Kentucky surveyor user base.
- **OpenRoads Designer / MicroStation addin** — .NET addin for terrain import, corridor-aware data retrieval. Targets KYTC and Bentley-shop engineers.
- Unified plugin architecture — shared AOI extraction, product selection dialog, and format negotiation across all platforms
- Offline/cached data support for field use
Candidate directions:
- Deeper analysis: corridor-aware workflows, multi-temporal change detection, volumetric pipelines
- Offline / cached data support for field use
- Server-side processing surfaces (TiTiler extensions, STAC-aware services)

Breaking API cleanup lands here. `to_landxml()` is scheduled for removal in v3.0.

## Target Users

| Persona | Primary tools | Primary needs |
|---------|---------------|---------------|
| **Surveyor** | Civil 3D, Carlson | EPSG:3089, feet buffers, LandXML surfaces, provenance, clean deliverables |
| **Civil engineer** | Civil 3D, ORD, Carlson | Corridor search, cut/fill, phase comparison, DEM surfaces, LAS import |
| **Surveyor** | Python, QGIS, ArcGIS Pro | EPSG:3089, feet buffers, provenance, clean deliverables |
| **Civil engineer** | Python, ArcGIS Pro, QGIS | Corridor search, cut/fill, phase comparison, DEM surfaces, LAS import |
| **GIS analyst** | ArcGIS Pro, QGIS, Python | Broad search, QGIS interop, phase comparison, lazy loading |
| **Planner** | ArcGIS Pro, QGIS, web | County/area search, ortho access, flood screening |
| **Emergency management** | ArcGIS Pro, web, mobile | Rapid site assessment, oblique inspection, flood analysis |
Expand All @@ -81,13 +83,10 @@ Priorities can shift based on community feedback and KyFromAbove program updates
| **CLI** | Full | Full | Full | Full | Full |
| **ArcGIS Pro** | Toolbox (5 tools) | +provenance | +packaging, +oblique | +analysis | maintained |
| **QGIS** | File interop | Plugin v1 (Processing tools) | +packaging, +oblique | +analysis | maintained |
| **Civil 3D** | — | — | File import (LandXML, DXF) | Plugin prototype | Plugin v1 |
| **Carlson** | — | — | File import (LandXML, DXF) | — | Plugin v1 |
| **ORD / MicroStation** | — | — | File import (GeoTIFF, LAS) | — | Addin v1 |

## Non-Goals

- Generic STAC client functionality (use pystac-client directly)
- Non-Kentucky data sources
- Reimplementing PDAL, stackstac, or TiTiler
- Building CAD/BIM editing features (abovepy delivers data, not design tools)
- Native plugins or add-ins for CAD platforms (Civil 3D, Carlson, OpenRoads Designer, MicroStation). Generic file-format interop (GeoTIFF, LAS, GeoPackage) is in scope; design-tool-specific integration is not.
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ hide:
<div class="feature-card">
<div class="card-icon">&#x2B07;</div>
<h3>Download &amp; Export</h3>
<p>Concurrent downloads with resume. Estimate size before committing. Export to GeoTIFF, GeoPackage, Shapefile, GeoParquet, or LandXML.</p>
<p>Concurrent downloads with resume. Estimate size before committing. Export to GeoTIFF, GeoPackage, Shapefile, or GeoParquet.</p>
</div>
<div class="feature-card">
<div class="card-icon">&#x1F30E;</div>
Expand Down
2 changes: 1 addition & 1 deletion qgis/aboveqgis/README
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ Tools:

Export Formats (Python)
-----------------------
- to_landxml() — DEM to TIN surface for Civil 3D, Carlson, OpenRoads
- to_stl() — DEM to 3D-printable mesh for Bambu Studio, Cura, Blender
- to_geotiff(), to_geopackage(), to_shapefile()
- to_landxml() — DEM to TIN surface (deprecated, scheduled for removal in v3.0)

Data Source
-----------
Expand Down
Loading