Siin on sinu OSM andmete importimise skript PostGIS andmebaasi **korralikult vormindatud ja loetavamaks tehtud** versioon. Olen parandanud süntaksit, lisanud kommentaare ja ühtlustanud stiili: --- ### 📁 **1. Üldised muutujad** ```bash #!/usr/bin/env bash # Ühenduse andmed destination_host='localhost' destination_port='5432' destination_user='osm' destination_password=${PGPASSWORD:-} destination_dbname='data' destination_schema='aaa_osm' destination_SRS='EPSG:3301' # PostgreSQL ühenduse string destination="host='${destination_host}' port='${destination_port}' dbname='${destination_dbname}' user='${destination_user}' password='${PGPASSWORD:-}'" export PGPASSWORD=${PGPASSWORD:-} CONNECTION_NAME="-h ${destination_host} -p ${destination_port} -d ${destination_dbname} -U ${destination_user}" ``` --- ### 🏗️ **2. Skeemi loomine** ```bash # Skeemi loomine, kui see veel ei eksisteeri psql ${CONNECTION_NAME} -c "CREATE SCHEMA IF NOT EXISTS ${destination_schema};" ``` --- ### 🗺️ **3. OSM andmete allalaadimine ja import** ```bash # Liigume ajutisse kausta cd /tmp # Laadime alla Eesti OSM andmed wget https://download.geofabrik.de/europe/estonia-latest.osm.pbf # Impordime andmed PostGIS andmebaasi osm2pgsql \ --create \ --slim \ --cache 2000 \ --number-processes 4 \ --database ${destination_dbname} \ --username ${destination_user} \ --host ${destination_host} \ --port ${destination_port} \ --output=flex \ --style=lua/roads.lua \ -E 3301 \ -p osm \ /tmp/estonia-latest.osm.pbf ``` --- ### ℹ️ **Märkused** - Kasutatud projektsioon on **EPSG:3857** (Web Mercator). Kui soovid kasutada Eesti ametlikku koordinaatsüsteemi, võid selle asendada **EPSG:3301**. - `-p` parameeter määrab tabelite eesliite. Kui soovid, et tabelid oleksid näiteks `osm_roads`, `osm_buildings`, siis kasuta `-p osm`. --- Siin on bash-skript, mis loob sinu OSM andmebaasis uue tabeli `osm_buildings`, kasutades olemasolevat `osm_polygon` tabelit. Skript sisaldab ka geomeetriaindeksi loomist ja andmebaasi optimeerimist. --- ### 📝 **Skript: `create_osm_buildings.sh`** ```bash #!/usr/bin/env bash # Loome uue tabeli ainult hoonete jaoks psql ${CONNECTION_NAME} <} destination_dbname='data' destination_schema='aaa_osm' table_name='katastriuksused' export PGPASSWORD=${PGPASSWORD:-} CONNECTION_NAME="-h ${destination_host} -p ${destination_port} -d ${destination_dbname} -U ${destination_user}" # WFS teenuse URL wfs_url="WFS:https://gsavalik.envir.ee/geoserver/kataster/wfs?service=WFS&version=2.0.0&request=GetCapabilities" # Eemaldame olemasoleva tabeli (kui on) psql ${CONNECTION_NAME} -c "DROP TABLE IF EXISTS ${destination_schema}.${table_name};" # Impordime katastriüksused PostGIS andmebaasi ogr2ogr \ --config PG_USE_COPY YES \ -f "PostgreSQL" PG:"host=${destination_host} dbname=${destination_dbname} user=${destination_user} password=${PGPASSWORD:-} active_schema=${destination_schema}" \ "${wfs_url}" \ -nln ${table_name} \ -t_srs EPSG:3301 # Optimeerime tabeli psql ${CONNECTION_NAME} -c "VACUUM ANALYZE ${destination_schema}.${table_name};" ``` --- ### 📦 Kasutamine 1. Salvesta see failina, nt `import_katastriuksused.sh` 2. Tee see käivitatavaks: ```bash chmod +x import_katastriuksused.sh ``` 3. Käivita: ```bash ./import_katastriuksused.sh ``` --- Kas soovid, et lisaksin ka **logimise**, **ajastamise cron'iga** või **kontrolli, kas andmed on muutunud enne importi**? References [1] [Eesti katastriüksuste andmed (WFS)](https://avaandmed.eesti.ee/datasets/eesti-katastriuksuste-andmed-%28wfs%29) Kas soovid, et lisaksin ka **logimise** või **kontrolli, kas tabel juba eksisteerib ja kas see on tühi**? Kas soovid, et ma aitaksin ka skripti muuta nii, et see oleks **automaatselt ajastatav (cron)** või **logiks tegevusi faili**?