Skip to content

Commit

Permalink
Update script for FOSS4G 2023 NA Image Creation
Browse files Browse the repository at this point in the history
  • Loading branch information
j9ac9k committed Sep 22, 2023
1 parent 0472a5e commit 7cce68d
Show file tree
Hide file tree
Showing 3 changed files with 161 additions and 60 deletions.
22 changes: 22 additions & 0 deletions workshop/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM condaforge/mambaforge:latest as build
MAINTAINER Howard Butler <[email protected]>

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

COPY environment.yml .
RUN mamba env create -f environment.yml

RUN mamba install -c conda-forge conda-pack

RUN conda-pack -n "pdal-workshop" -o /tmp/env.tar && \
mkdir /venv && cd /venv && tar xf /tmp/env.tar && \
rm /tmp/env.tar

RUN /venv/bin/conda-unpack

FROM debian:bookworm-slim AS runtime

COPY --from=build /venv /venv

SHELL ["/bin/bash", "-c"]
ENTRYPOINT source /venv/bin/activate
12 changes: 12 additions & 0 deletions workshop/docker/environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: pdal-workshop
channels:
- conda-forge
dependencies:
- python=3.11
- pdal=2.5.6
- python-pdal
- gdal
- untwine
- geopandas
- jq

187 changes: 127 additions & 60 deletions workshop/workshop_zip.sh
Original file line number Diff line number Diff line change
@@ -1,69 +1,136 @@
#!/bin/bash
eval "$(conda shell.bash hook)"

# curl https://pdal.io/PDAL.pdf -o PDAL-docs.pdf
export ROOT_DIR="$PWD/PDAL Workshop Materials"
# create root_directory for image
mkdir -p "$ROOT_DIR"

git clone -n --depth=1 --filter=tree:0 https://github.com/PDAL/PDAL
cd PDAL
git sparse-checkout set --no-cone doc
git checkout
cd ..
# grab PDAL repo
git clone -n --depth=1 https://github.com/PDAL/PDAL

# build pdal docs
conda create -n "pdal-docs" python=3.11 --yes --quiet
conda activate pdal-docs
mamba install -c conda-forge graphviz --yes --quiet
pip install -r PDAL/doc/requirements.txt
make -C PDAL/doc doxygen
make -C PDAL/doc html
make -C PDAL/doc latexpdf

git clone -n --depth=1 --filter=tree:0 https://github.com/PDAL/data
# copy workshop docs to image directory
cp -R PDAL/doc/build/html "$ROOT_DIR/docs"
cp PDAL/doc/build/latex/PDAL.pdf "$ROOT_DIR"/docs

# copy needed datasets
git clone --depth=1 https://github.com/PDAL/data
cd data
git sparse-checkout set --no-cone workshop
git checkout
cd ..
git lfs install
git lfs pull
cd ..

mkdir -p exercises exercises/info
mkdir -p software software/MacOS software/Windows software/Linux

# Moving docs
mv PDAL/doc/workshop/manipulation exercises
mv exercises/manipulation exercises/analysis
mv PDAL/doc/workshop/generation/meshing PDAL/doc/workshop/generation/rasterize \
PDAL/doc/workshop/generation/dtm exercises/analysis
mv PDAL/doc/workshop/generation/batch_processing PDAL/doc/workshop/generation/georeferencing \
PDAL/doc/workshop/generation/python PDAL/doc/workshop/introduction exercises
mv exercises/introduction exercises/translation
mv exercises/translation/metadata.rst exercises/translation/single-point.rst \
exercises/translation/near.rst exercises/info
# Moving data
mkdir -p exercises/batch_processing/source
mv data/workshop/TM_551_101.laz data/workshop/TM_551_102.laz data/workshop/TM_552_101.laz \
data/workshop/TM_552_102.laz exercises/batch_processing/source
mv data/workshop/autzen.laz exercises/analysis/clipping
mv data/workshop/casi-2015-04-29-weekly-mosaic.tif exercises/analysis/colorization
mv data/workshop/18TWK820985.laz exercises/analysis/denoising
cp data/workshop/uncompahgre.laz exercises/analysis/density
mv data/workshop/CSite1_orig-utm.laz exercises/analysis/ground
mv data/workshop/uncompahgre.laz data/workshop/uncompahgre.copc.laz exercises/analysis/thinning
mv data/workshop/S1C1_csd_004.csd exercises/georeferencing
mv data/workshop/athletic-fields.laz exercises/python
mv data/workshop/csite-dd.laz data/workshop/interesting.laz exercises/translation
cp data/workshop/interesting.las exercises/translation
mv data/workshop/interesting.las exercises/info

# software download
cd software/Windows
curl https://qgis.org/downloads/QGIS-OSGeo4W-3.32.0-1.msi -o QGIS-OSGeo4W-3.32.0-1.msi
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -o Miniconda3-latest-Windows-x86_64.exe
curl https://www.danielgm.net/cc/release/CloudCompare_v2.13.alpha_setup_x64.exe -o CloudCompare_v2.13.alpha_setup_x64.exe
cd ..
cd MacOS
curl https://qgis.org/downloads/macos/qgis-macos-pr.dmg -o qgis-macos-pr.dmg
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -o Miniconda3-latest-MacOSX-x86_64.sh
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o Miniconda3-latest-MacOSX-arm64.sh
curl https://www.danielgm.net/cc/release/CloudCompare-2.13.0-x86_64.dmg -o CloudCompare-2.13.0-x86_64.dmg
curl https://www.danielgm.net/cc/release/CloudCompare-2.13.0-arm64.dmg -o CloudCompare-2.13.0-arm64.dmg
mkdir -p "$ROOT_DIR/exercises/batch_processing"
cp PDAL/doc/workshop/generation/batch_processing/batch_srs_gdal.json \
"$ROOT_DIR/exercises/batch_processing"


mkdir -p "$ROOT_DIR/exercises/batch_processing/source"
cp data/workshop/TM_551_101.laz \
data/workshop/TM_551_102.laz \
data/workshop/TM_552_101.laz \
data/workshop/TM_552_102.laz \
"$ROOT_DIR/exercises/batch_processing/source/"

mkdir -p "$ROOT_DIR/exercises/analysis/clipping"
cp data/workshop/autzen.laz \
PDAL/doc/workshop/manipulation/clipping/clipping.json \
"$ROOT_DIR/exercises/analysis/clipping/"


mkdir -p "$ROOT_DIR/exercises/analysis/colorization"
cp data/workshop/casi-2015-04-29-weekly-mosaic.tif \
PDAL/doc/workshop/manipulation/colorization/colorize.json \
"$ROOT_DIR/exercises/analysis/colorization/"

mkdir -p "$ROOT_DIR/exercises/analysis/denoising"
cp PDAL/doc/workshop/manipulation/denoising/denoise.json \
data/workshop/18TWK820985.laz \
"$ROOT_DIR/exercises/analysis/denoising/"

mkdir -p "$ROOT_DIR/exercises/analysis/density"
cp data/workshop/uncompahgre.laz "$ROOT_DIR/exercises/analysis/density/"

mkdir -p "$ROOT_DIR/exercises/analysis/dtm"
cp PDAL/doc/workshop/generation/dtm/gdal.json "$ROOT_DIR/exercises/analysis/dtm"

mkdir -p "$ROOT_DIR/exercises/analysis/ground"
cp data/workshop/CSite1_orig-utm.laz "$ROOT_DIR/exercises/analysis/ground/"

mkdir -p "$ROOT_DIR/exercises/analysis/rasterize"
cp PDAL/doc/workshop/generation/rasterize/classification.json "$ROOT_DIR/exercises/analysis/rasterize"

mkdir -p "$ROOT_DIR/exercises/analysis/thinning"
cp data/workshop/uncompahgre.laz \
data/workshop/uncompahgre.copc.laz \
"$ROOT_DIR/exercises/analysis/thinning/"

mkdir -p "$ROOT_DIR/exercises/georeferencing"
cp data/workshop/S1C1_csd_004.csd "$ROOT_DIR/exercises/georeferencing"

mkdir -p "$ROOT_DIR/exercises/python"
cp PDAL/doc/workshop/generation/python/histogram.json \
PDAL/doc/workshop/generation/python/histogram.py \
data/workshop/athletic-fields.laz \
"$ROOT_DIR/exercises/python/"

mkdir -p "$ROOT_DIR/exercises/translation"
cp data/workshop/csite-dd.laz \
data/workshop/interesting.laz \
PDAL/doc/workshop/introduction/entwine.json \
"$ROOT_DIR/exercises/translation"

cp data/workshop/interesting.las "$ROOT_DIR/exercises/translation"

mkdir -p "$ROOT_DIR/exercises/info"
cp data/workshop/interesting.las "$ROOT_DIR/exercises/info/"

curl --output-dir "$ROOT_DIR/software/windows" -C - -OL --create-dirs https://download.qgis.org/downloads/QGIS-OSGeo4W-3.32.2-1.msi
curl --output-dir "$ROOT_DIR/software/windows" -C - -OL --create-dirs https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Windows-x86_64.exe
curl --output-dir "$ROOT_DIR/software/windows" -C - -OL --create-dirs https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-amd64.exe
curl --output-dir "$ROOT_DIR/software/windows" -C - -OL --create-dirs https://www.danielgm.net/cc/release/CloudCompare_v2.13.beta_setup_x64.exe

# grab macOS Installers
curl --output-dir "$ROOT_DIR/software/macOS" -C - -OL --create-dirs https://download.qgis.org/downloads/macos/qgis-macos-pr.dmg
curl --output-dir "$ROOT_DIR/software/macOS" -C - -OL --create-dirs https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-MacOSX-arm64.sh
curl --output-dir "$ROOT_DIR/software/macOS" -C - -OL --create-dirs https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-MacOSX-x86_64.sh
curl --output-dir "$ROOT_DIR/software/macOS" -C - -OL --create-dirs https://github.com/jqlang/jq/releases/download/jq-1.7/jq-macos-amd64
curl --output-dir "$ROOT_DIR/software/macOS" -C - -OL --create-dirs https://github.com/jqlang/jq/releases/download/jq-1.7/jq-macos-arm64
curl --output-dir "$ROOT_DIR/software/macOS" -C - -OL --create-dirs https://www.danielgm.net/cc/release/CloudCompare-2.13.0-x86_64.dmg
curl --output-dir "$ROOT_DIR/software/macOS" -C - -OL --create-dirs https://www.danielgm.net/cc/release/CloudCompare-2.13.0-arm64.dmg

# mamba env create -f environment-pdal_workshop_image.yml --yes --quiet
conda create -n "pdal-gen-workshop-image" python=3.11 --yes --quiet
conda activate pdal-gen-workshop-image
mamba install -c conda-forge conda-pack awscli --yes --quiet

# grab cool-lidar content
aws s3 sync s3://cool-lidar "$ROOT_DIR/cool-lidar"

# grab conda environments
mkdir -p "$ROOT_DIR/software/conda_environments"

# make docker environment
# NOTE: need to do this for x86_64
mkdir docker
cd docker
docker image build -t pdal-workshop data/workshop/docker
docker save -o pdal-workshop_docker-arm64.tar.gz pdal-workshop
cd ..
cd Linux
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o Miniconda3-latest-Linux-x86_64.sh
cd ../..
cp "docker/pdal-workshop_docker*.tar.gz" "$ROOT_DIR/software/conda_environments/"


mkdir -p staging/conda_environments
# NOTE: this needs to happen for every platform, not just osx-arm64
mamba env create --file "$PWD/PDAL/doc/workshop/environment.yml" -p "$PWD/staging/conda_environments" --yes --quiet
conda-pack -p staging/conda_environments -o "$ROOT_DIR/software/conda_environments/pdal-workshop_osx-arm64.tar.gz" -f

chmod -R +w data PDAL exercises software
rm -rf data PDAL

zip_filename="PDAL_Workshop_complete.zip"
zip -r "$zip_filename" exercises software #PDAL-docs.pdf

rm -rf exercises software #PDAL-docs.pdf

0 comments on commit 7cce68d

Please sign in to comment.