diff --git a/ROADMAP.md b/ROADMAP.md index 42fe21d..d786bfb 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -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 @@ -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 @@ -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 | @@ -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. diff --git a/docs/community/roadmap.md b/docs/community/roadmap.md index 3f419b3..2be63a6 100644 --- a/docs/community/roadmap.md +++ b/docs/community/roadmap.md @@ -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 | @@ -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. diff --git a/docs/index.md b/docs/index.md index 86ca3ea..1b8111e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -13,7 +13,7 @@ hide:

Download & Export

-

Concurrent downloads with resume. Estimate size before committing. Export to GeoTIFF, GeoPackage, Shapefile, GeoParquet, or LandXML.

+

Concurrent downloads with resume. Estimate size before committing. Export to GeoTIFF, GeoPackage, Shapefile, or GeoParquet.

🌎
diff --git a/qgis/aboveqgis/README b/qgis/aboveqgis/README index 7fdafa2..a9afa89 100644 --- a/qgis/aboveqgis/README +++ b/qgis/aboveqgis/README @@ -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 -----------