auto-sync: 2026-05-13 12:30:01

This commit is contained in:
Stream
2026-05-13 12:30:09 +03:00
parent 1bc458fc2a
commit 9adb0a5d13
4 changed files with 216 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
#!/bin/bash
set -e
cd /home/slin/enduro-trails/data/srtm
BASE="https://srtm.kurviger.de/SRTM3/Eurasia"
echo 'Downloading from kurviger mirror...'
for lat in 54 55 56; do
for lon in 041 042 043 044 045 046; do
f="N${lat}E${lon}"
if [ -f "${f}.hgt" ]; then
echo " EXISTS: ${f}"
continue
fi
wget -q --timeout=60 "${BASE}/${f}.hgt.zip" -O "/tmp/${f}.hgt.zip" 2>/dev/null
if [ -s "/tmp/${f}.hgt.zip" ]; then
unzip -o -q "/tmp/${f}.hgt.zip" -d . && echo " OK: ${f} ($(du -h ${f}.hgt | cut -f1))" || echo " UNZIP FAIL: ${f}"
rm -f "/tmp/${f}.hgt.zip"
else
echo " NOT FOUND: ${f}"
rm -f "/tmp/${f}.hgt.zip"
fi
done
done
echo ''
echo "Total HGT: $(ls *.hgt | wc -l)"
echo "New E041-E046 (N54-56):"
ls N5[456]E04[1-6].hgt 2>/dev/null | sort

View File

@@ -0,0 +1,46 @@
import urllib.request
import zipfile
import os
import sys
SRTM_DIR = '/home/slin/enduro-trails/data/srtm'
BASE_URL = 'https://srtm.kurviger.de/SRTM3/Eurasia'
tiles = []
for lat in [54, 55, 56]:
for lon in range(41, 47):
tiles.append(f'N{lat}E{lon:03d}')
os.chdir(SRTM_DIR)
count = 0
for tile in tiles:
hgt = f'{tile}.hgt'
if os.path.exists(hgt):
print(f' EXISTS: {hgt}')
continue
url = f'{BASE_URL}/{tile}.hgt.zip'
tmp = f'/tmp/{tile}.hgt.zip'
try:
print(f' Downloading {tile}...', end=' ', flush=True)
urllib.request.urlretrieve(url, tmp)
if os.path.getsize(tmp) > 0:
with zipfile.ZipFile(tmp, 'r') as z:
z.extractall('.')
os.remove(tmp)
size = os.path.getsize(hgt) if os.path.exists(hgt) else 0
print(f'OK ({size // 1024}KB)')
count += 1
else:
print('EMPTY')
os.remove(tmp)
except Exception as e:
print(f'FAIL: {e}')
if os.path.exists(tmp):
os.remove(tmp)
print(f'\nDownloaded: {count} new files')
print(f'Total HGT: {len([f for f in os.listdir(".") if f.endswith(".hgt")])}')

View File

@@ -0,0 +1,49 @@
import urllib.request
import zipfile
import os
SRTM_DIR = '/home/slin/enduro-trails/data/srtm'
BASE_URL = 'https://srtm.kurviger.de/SRTM3/Eurasia'
tiles = []
for lat in [54, 55, 56]:
for lon in range(41, 47):
tiles.append(f'N{lat}E{lon:03d}')
os.chdir(SRTM_DIR)
count = 0
opener = urllib.request.build_opener()
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36')]
urllib.request.install_opener(opener)
for tile in tiles:
hgt = f'{tile}.hgt'
if os.path.exists(hgt):
print(f' EXISTS: {hgt}')
continue
url = f'{BASE_URL}/{tile}.hgt.zip'
tmp = f'/tmp/{tile}.hgt.zip'
try:
print(f' Downloading {tile}...', end=' ', flush=True)
urllib.request.urlretrieve(url, tmp)
if os.path.getsize(tmp) > 0:
with zipfile.ZipFile(tmp, 'r') as z:
z.extractall('.')
os.remove(tmp)
size = os.path.getsize(hgt) if os.path.exists(hgt) else 0
print(f'OK ({size // 1024}KB)')
count += 1
else:
print('EMPTY')
os.remove(tmp)
except Exception as e:
print(f'FAIL: {e}')
if os.path.exists(tmp):
os.remove(tmp)
print(f'\nDownloaded: {count} new files')
print(f'Total HGT: {len([f for f in os.listdir(".") if f.endswith(".hgt")])}')

View File

@@ -0,0 +1,92 @@
#!/bin/bash
set -e
echo '=== FULL REGENERATION (81 HGT files) ==='
echo "Start: $(date)"
SRTM_DIR='/home/slin/enduro-trails/data/srtm'
TERRAIN_DIR='/home/slin/enduro-trails/data/terrain'
TMP='/tmp/regen_full'
rm -rf $TMP
mkdir -p $TMP
echo ''
echo '=== Step 1: Build VRT ==='
find $SRTM_DIR -name '*.hgt' > $TMP/file_list.txt
gdalbuildvrt -vrtnodata -32768 -overwrite -input_file_list $TMP/file_list.txt $TMP/srtm_all.vrt 2>&1
echo "VRT: $(wc -l < $TMP/file_list.txt) files"
gdalinfo -stats $TMP/srtm_all.vrt 2>&1 | grep STATISTICS
echo ''
echo '=== Step 2: Generate HYPSO ==='
cat > $TMP/color_ramp.txt << 'EOF'
nv 0 0 0 0
-100 0 0 0 0
0 0 0 0 0
1 57 151 105 255
50 80 165 110 255
100 120 180 100 255
150 160 190 95 255
200 139 176 96 255
300 170 185 105 255
500 189 188 115 255
700 210 200 130 255
1000 220 206 148 255
1500 235 220 175 255
2000 210 185 140 255
2500 185 152 110 255
3000 160 120 80 255
4000 120 80 40 255
5000 200 200 200 255
EOF
gdaldem color-relief $TMP/srtm_all.vrt $TMP/color_ramp.txt $TMP/hypso.tif -alpha -of GTiff -co COMPRESS=LZW -co BIGTIFF=YES 2>&1
echo "Hypso TIF: $(du -sh $TMP/hypso.tif | cut -f1)"
rm -rf ${TERRAIN_DIR}/hypso
mkdir -p ${TERRAIN_DIR}/hypso
gdal2tiles.py --zoom=5-12 --processes=4 --tilesize=256 --webviewer=none $TMP/hypso.tif ${TERRAIN_DIR}/hypso/ 2>&1
echo "Hypso tiles: $(find ${TERRAIN_DIR}/hypso -name '*.png' | wc -l)"
echo ''
echo '=== Step 3: Generate TRI ==='
gdaldem TRI $TMP/srtm_all.vrt $TMP/tri_raw.tif -of GTiff -co COMPRESS=LZW -co BIGTIFF=YES -compute_edges 2>&1
cat > $TMP/tri_color.txt << 'EOF'
nv 0 0 0 0
0 0 0 0 0
2 0 0 0 0
3 255 255 100 60
4 255 230 50 100
5 255 200 0 140
7 255 150 0 180
10 255 100 0 200
15 230 50 0 220
20 200 0 0 235
30 180 0 50 245
50 150 0 100 255
EOF
gdaldem color-relief $TMP/tri_raw.tif $TMP/tri_color.txt $TMP/tri_colored.tif -alpha -of GTiff -co COMPRESS=LZW -co BIGTIFF=YES 2>&1
echo "TRI TIF: $(du -sh $TMP/tri_colored.tif | cut -f1)"
rm -rf ${TERRAIN_DIR}/tri
mkdir -p ${TERRAIN_DIR}/tri
gdal2tiles.py --zoom=5-12 --processes=4 --tilesize=256 --webviewer=none $TMP/tri_colored.tif ${TERRAIN_DIR}/tri/ 2>&1
echo "TRI tiles: $(find ${TERRAIN_DIR}/tri -name '*.png' | wc -l)"
echo ''
echo '=== Stats ==='
echo "Hypso:"
for z in 8 9 10 11 12; do
echo " zoom $z: $(find ${TERRAIN_DIR}/hypso/$z -name '*.png' -size +400c 2>/dev/null | wc -l) non-empty"
done
echo "TRI:"
for z in 8 9 10 11 12; do
echo " zoom $z: $(find ${TERRAIN_DIR}/tri/$z -name '*.png' -size +400c 2>/dev/null | wc -l) non-empty"
done
echo ''
echo "=== DONE ==="
echo "End: $(date)"