How this works: this page is entirely static — it never uploads your data anywhere. Everything below runs in your browser. When you click Generate, it produces a small Python script configured with your area of interest and choices. You download that script, run it locally with the conda environment from this repo (which has GDAL/PDAL/RichDEM installed), and it does the actual lidar processing on your machine. See Run it locally below.
1

Define your area of interest

Draw a polygon/rectangle on the map, or upload a shapefile (as a .zip), GeoJSON, or KML.

2

Lidar coverage

Datasets from the USGS 3DEP EPT index that intersect your AOI. By default the most recent flight(s) that fully cover the AOI are auto-selected.

Draw or upload an AOI above to check coverage.
3

Choose products & options

Pick what to generate. DTM/DSM must be selected for hillshade, slope, aspect, or contours to be produced.

Default 3857 (Web Mercator). Use a State Plane/UTM EPSG code for mapbook-ready output.
Advanced: hillshade parameters

Not yet implemented: slope-exclusion masks, viewshed analysis, and landform classification — see the README roadmap. The pipeline/raster_products.py module is the place to add them.

4

Generate your script

Downloads a single Python file with your AOI and options baked in.

5

Run it locally

  1. Clone the repo (if you haven't already):
    git clone https://github.com/DBishal13/3DEP-Lidar-Terrain-Builder.git
    cd 3DEP-Lidar-Terrain-Builder
  2. Create the conda environment (installs GDAL, PDAL, RichDEM, etc.):
    conda env create -f environment.yml
    conda activate lidar-3dep
  3. Move the downloaded script into the repo root (next to the pipeline/ folder) and run it:
    python lidar_job.py
  4. Outputs land in output/<job name>/, split into pointcloud/, raster/, and vector/.

Prefer notebooks? The original step-by-step workflow still lives in notebooks/.