Update README.md

This commit is contained in:
Brus 2026-05-29 10:09:44 +02:00
commit 82743a63c7

277
README.md
View file

@ -1,34 +1,94 @@
# ardigeos # ardigeos
dünnschliff applikation Cloud-Optimized GeoTIFF (COG) Workflow für Dünnschliff-Scans mit GDAL, OpenLayers und QGIS.
🚀 Workflow: Subdatasets → echte Overviews ---
🔹 Schritt 1: Nur höchste Auflösung extrahieren
gdal_translate GTIFF_DIR:1:/scans/thinsect/1/101.tif base.tif -co TILED=YES -co COMPRESS=JPEG -co QUALITY=75
👉 Das ist dein „Masterbild“ # Überblick
🔹 Schritt 2: Overviews aus vorhandenen Levels bauen Dieses Projekt konvertiert hochauflösende Dünnschliff-Scans in performante **Cloud Optimized GeoTIFFs (COGs)** inklusive Overviews/Pyramidenstufen für Web-Visualisierung und GIS-Anwendungen.
Gleiche Faktoren wie Subdatasets: Die erzeugten Dateien:
* sind deutlich kleiner als die Originale
* besitzen echte TIFF-Overviews
* sind webbasiert performant streambar
* funktionieren direkt mit OpenLayers/QGIS
---
# Workflow
## 1. Höchste Auflösung aus Subdataset extrahieren
Die Originaldaten enthalten mehrere interne Auflösungsstufen als `Subdatasets`.
Zuerst wird nur die höchste Auflösung extrahiert:
```bash
gdal_translate \
GTIFF_DIR:1:/scans/thinsect/1/101.tif \
base.tif \
-co TILED=YES \
-co COMPRESS=JPEG \
-co QUALITY=75
```
👉 Ergebnis: das neue Masterbild (`base.tif`)
---
## 2. Overviews erzeugen
Anschließend werden echte TIFF-Overviews erstellt.
```bash
gdaladdo -r average base.tif 2 4 8 16 32 gdaladdo -r average base.tif 2 4 8 16 32
```
👉 entspricht: Dies entspricht den ursprünglichen Pyramidenschritten:
34576 → 17288 → 8644 → … ✔ ```text
34576 → 17288 → 8644 → …
```
💡 Vorteil: ### Vorteile
gleiche Struktur wie Original aber jetzt COG-kompatibel * gleiche Struktur wie die Originaldaten
* echte TIFF-Pyramiden
* vollständig COG-kompatibel
* deutlich bessere Web-Performance
🔹 Schritt 3: echtes COG erzeugen ---
gdal_translate base.tif cog_final.tif -of COG -co COMPRESS=JPEG -co QUALITY=75 -co COPY_SRC_OVERVIEWS=YES ## 3. Cloud Optimized GeoTIFF erzeugen
Ergebnis 1/3 Dateigröße kleinere Datei als Original, da dort zuvor auch tiles enthalten sind (leider keine COG TIFF Pyramiden) ```bash
gdal_translate \
base.tif \
cog_final.tif \
-of COG \
-co COMPRESS=JPEG \
-co QUALITY=75 \
-co COPY_SRC_OVERVIEWS=YES
```
### Ergebnis
* ca. **1/3 kleinere Dateien**
* interne Tile-Struktur optimiert
* echte COG-Overviews statt proprietärer Pyramiden
---
# Beispiel: `gdalinfo`
```bash
gdalinfo /scans/thinsect/cog_out/1/1.tif
```
---
`` gdalinfo /scans/thinsect/cog_out/1/1.tif``
# GeoTIFF / COG Metadaten # GeoTIFF / COG Metadaten
## Allgemeine Informationen ## Allgemeine Informationen
@ -38,7 +98,7 @@ Ergebnis 1/3 Dateigröße kleinere Datei als Original, da dort zuvor auch tiles
| Driver | GTiff / GeoTIFF | | Driver | GTiff / GeoTIFF |
| Datei | `/scans/thinsect/cog_out/1/1.tif` | | Datei | `/scans/thinsect/cog_out/1/1.tif` |
| Größe | `37264 × 21744 px` | | Größe | `37264 × 21744 px` |
| Layout | COG (Cloud Optimized GeoTIFF) | | Layout | `COG (Cloud Optimized GeoTIFF)` |
--- ---
@ -67,84 +127,33 @@ Ergebnis 1/3 Dateigröße kleinere Datei als Original, da dort zuvor auch tiles
--- ---
## Eckkoordinaten # Overviews
| Position | Koordinaten | Alle drei RGB-Bänder besitzen identische Pyramidenstufen:
| ----------- | -------------------- |
| Upper Left | `(0.0, 0.0)` | ```text
| Lower Left | `(0.0, 21744.0)` | 18632 × 10872
| Upper Right | `(37264.0, 0.0)` | 9316 × 5436
| Lower Right | `(37264.0, 21744.0)` | 4658 × 2718
| Center | `(18632.0, 10872.0)` | 2329 × 1359
1164 × 679
582 × 339
291 × 169
```
Blockgröße:
```text
512 × 512
```
--- ---
## Bänder & Overviews # Batch-Konvertierung aller Dünnschliffe
### Band 1 Konvertierung aller TIFF-Dateien in mehreren Verzeichnissen mit GNU Parallel:
| Eigenschaft | Wert |
| -------------------- | ----------- |
| Blockgröße | `512 × 512` |
| Typ | `Byte` |
| Color Interpretation | `Red` |
#### Overviews
* `18632 × 10872`
* `9316 × 5436`
* `4658 × 2718`
* `2329 × 1359`
* `1164 × 679`
* `582 × 339`
* `291 × 169`
---
### Band 2
| Eigenschaft | Wert |
| -------------------- | ----------- |
| Blockgröße | `512 × 512` |
| Typ | `Byte` |
| Color Interpretation | `Green` |
#### Overviews
* `18632 × 10872`
* `9316 × 5436`
* `4658 × 2718`
* `2329 × 1359`
* `1164 × 679`
* `582 × 339`
* `291 × 169`
---
### Band 3
| Eigenschaft | Wert |
| -------------------- | ----------- |
| Blockgröße | `512 × 512` |
| Typ | `Byte` |
| Color Interpretation | `Blue` |
#### Overviews
* `18632 × 10872`
* `9316 × 5436`
* `4658 × 2718`
* `2329 × 1359`
* `1164 × 679`
* `582 × 339`
* `291 × 169`
---
für alle Ordner in /scans/thinsect/(1-52)*tif
```bash
nohup bash -c ' nohup bash -c '
for dir in 49 50 51 52; do for dir in 49 50 51 52; do
find /scans/thinsect/$dir -name "*.tif" | parallel \ find /scans/thinsect/$dir -name "*.tif" | parallel \
@ -163,20 +172,88 @@ for dir in 49 50 51 52; do
-co RESAMPLING=AVERAGE -co RESAMPLING=AVERAGE
" "
done done
' > conversion.out 2>&1 & ' > conversion.out 2>&1 &
```
danach ---
``gdalinfo /scans/tninsection/cog_out/1/1.tif``
/var/www/html/tif-index.json mit
`` sudo /usr/local/bin/build-cog-map.sh`` anlegen
NGINX Anpassung und index.html anlegen mit Openlayerplugin # Index-Datei erzeugen
Generierte Anwendung aus QGIS: Nach der Konvertierung:
``https://ardigeos.geosphere.at/anwendung/index.html``
Dünnschliffe:
``https://ardigeos.geosphere.at/tsv/1`` (1-13.xxx)
Maps Gesophere:
``https://maps.geosphere.at/de?scale=18055.9548215&x=1781235.399195954&y=6107435.260784891&heading=0&basemap=default&layers=https%3A%2F%2Fgis.geosphere.at%2Fmaps%2Frest%2Fservices%2Fgrenzen%2Fadmin_grenzen_oesterreich%2FMapServer%2Chttps%3A%2F%2Fgis.geosphere.at%2Fmaps%2Frest%2Fservices%2Fsammlungen%2Fduennschliffe%2FMapServer%2F1&visibilities=true%2Ctrue&opacities=1%2C1&relief=true``
```bash
gdalinfo /scans/thinsect/cog_out/1/1.tif
```
Danach die JSON-Indexdatei generieren:
```bash
sudo /usr/local/bin/build-cog-map.sh
```
Erzeugt:
```text
/var/www/html/tif-index.json
```
---
# Webviewer
## NGINX konfigurieren
* statische TIFF-Dateien bereitstellen
* CORS aktivieren
* Byte-Range Requests erlauben
---
## OpenLayers Frontend
Anschließend `index.html` mit OpenLayers + GeoTIFF-Plugin erstellen.
---
# Anwendungen
## QGIS-generierte Anwendung
[ardigeos Anwendung](https://ardigeos.geosphere.at/anwendung/index.html?utm_source=chatgpt.com)
---
## Dünnschliffe
Verfügbare Datensätze:
```text
1 13.xxx
```
Beispiel:
[Dünnschliff Viewer](https://ardigeos.geosphere.at/tsv/1?utm_source=chatgpt.com)
---
## Geosphere Maps
[Geosphere Maps Dünnschliffe](https://maps.geosphere.at/de?scale=18055.9548215&x=1781235.399195954&y=6107435.260784891&heading=0&basemap=default&layers=https%3A%2F%2Fgis.geosphere.at%2Fmaps%2Frest%2Fservices%2Fgrenzen%2Fadmin_grenzen_oesterreich%2FMapServer%2Chttps%3A%2F%2Fgis.geosphere.at%2Fmaps%2Frest%2Fservices%2Fsammlungen%2Fduennschliffe%2FMapServer%2F1&visibilities=true%2Ctrue&opacities=1%2C1&relief=true&utm_source=chatgpt.com)
---
# Technologien
* GDAL
* Cloud Optimized GeoTIFF (COG)
* GNU Parallel
* OpenLayers
* QGIS
* NGINX
---
# Ziel
Performante Bereitstellung hochauflösender Dünnschliff-Scans direkt im Browser — ohne klassische Tile-Server-Infrastruktur.