Update README.md
This commit is contained in:
parent
d121acca2e
commit
82743a63c7
1 changed files with 174 additions and 97 deletions
277
README.md
277
README.md
|
|
@ -1,34 +1,94 @@
|
|||
# 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
|
||||
```
|
||||
|
||||
👉 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
|
||||
|
||||
## Allgemeine Informationen
|
||||
|
|
@ -38,7 +98,7 @@ Ergebnis 1/3 Dateigröße kleinere Datei als Original, da dort zuvor auch tiles
|
|||
| Driver | GTiff / GeoTIFF |
|
||||
| Datei | `/scans/thinsect/cog_out/1/1.tif` |
|
||||
| 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 |
|
||||
| ----------- | -------------------- |
|
||||
| Upper Left | `(0.0, 0.0)` |
|
||||
| Lower Left | `(0.0, 21744.0)` |
|
||||
| Upper Right | `(37264.0, 0.0)` |
|
||||
| Lower Right | `(37264.0, 21744.0)` |
|
||||
| Center | `(18632.0, 10872.0)` |
|
||||
Alle drei RGB-Bänder besitzen identische Pyramidenstufen:
|
||||
|
||||
```text
|
||||
18632 × 10872
|
||||
9316 × 5436
|
||||
4658 × 2718
|
||||
2329 × 1359
|
||||
1164 × 679
|
||||
582 × 339
|
||||
291 × 169
|
||||
```
|
||||
|
||||
Blockgröße:
|
||||
|
||||
```text
|
||||
512 × 512
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Bänder & Overviews
|
||||
# Batch-Konvertierung aller Dünnschliffe
|
||||
|
||||
### Band 1
|
||||
|
||||
| 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
|
||||
Konvertierung aller TIFF-Dateien in mehreren Verzeichnissen mit GNU Parallel:
|
||||
|
||||
```bash
|
||||
nohup bash -c '
|
||||
for dir in 49 50 51 52; do
|
||||
find /scans/thinsect/$dir -name "*.tif" | parallel \
|
||||
|
|
@ -163,20 +172,88 @@ for dir in 49 50 51 52; do
|
|||
-co RESAMPLING=AVERAGE
|
||||
"
|
||||
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:
|
||||
``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``
|
||||
Nach der Konvertierung:
|
||||
|
||||
```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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue