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='osm'
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='${destination_password}'"
export PGPASSWORD=${destination_password}
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} <<EOF
DROP TABLE IF EXISTS ${destination_schema}.osm_buildings;

CREATE TABLE ${destination_schema}.osm_buildings AS
SELECT
  osm_id,
  name,
  building,
  way AS geom
FROM
  ${destination_schema}.osm_polygon
WHERE
  building IS NOT NULL;

-- Loome geomeetriaindeksi
CREATE INDEX idx_osm_buildings_geom ON ${destination_schema}.osm_buildings USING GIST (geom);

-- Optimeerime tabeli
VACUUM ANALYZE ${destination_schema}.osm_buildings;
EOF
```

---

### ✅ Kasutamine

1. Salvesta see fail nimega `create_osm_buildings.sh`.
2. Tee see käivitatavaks:

```bash
chmod +x create_osm_buildings.sh
```

3. Käivita:

```bash
./create_osm_buildings.sh
```

---

Väga hea küsimus! Vaatame su koodi üle ja täiustame seda nii, et:

1. **Laetakse alla hoonete andmed HOTOSM-ist**.
2. **Ekstraheeritakse need**.
3. **Imporditakse need õigesse skeemi PostGIS andmebaasis**.
4. Kontrollime, kas OSM andmetes juba on hooned olemas.

---

### 🧠 **Kas OSM andmetes on hooned juba olemas?**

Jah, **OSM andmetes on hooned olemas**, kui kasutad `osm2pgsql` importi. Need salvestatakse tavaliselt tabelisse nagu `planet_osm_polygon`, kus `building IS NOT NULL`.

**Kuid**: HOTOSM hoonete andmed võivad olla **täpsemad, ajakohasemad või spetsiaalselt puhastatud**. Seega nende lisamine võib olla kasulik, kui soovid:

- ainult hooneid eraldi tabelis
- paremat kvaliteeti või täpsust
- lihtsamat töötlemist

---

### ✅ Täiendatud skript hoonete lisamiseks skeemi

```bash
#!/usr/bin/env bash

# Muutujad
SCHEMA=${destination_schema}
TABLE_NAME="buildings_hotosm"
file_name="hotosm_est_buildings"

# Lae alla ja paki lahti
cd /tmp
wget https://export.hotosm.org/downloads/1df48435-4f56-4a7a-b8b2-c6ad8f474a65/hotosm_est_buildings_gpkg.zip
unzip -o ${file_name}_gpkg.zip

# Eemalda olemasolev tabel (kui on)
psql ${CONNECTION_NAME} -c "DROP TABLE IF EXISTS ${SCHEMA}.${TABLE_NAME};"

# Impordi GPKG PostGIS andmebaasi, teisendades koordinaadid EPSG:3301
ogr2ogr \
  --config PG_USE_COPY YES \
  -f PostgreSQL PG:"dbname='${destination_dbname}' host='${destination_host}' port='${destination_port}' user='${destination_user}' password='${destination_password}' sslmode=disable active_schema=${SCHEMA}" \
  -nln ${TABLE_NAME} \
  -s_srs EPSG:4326 \
  -t_srs EPSG:3301 \
  /tmp/${file_name}.gpkg

# Optimeeri tabel
psql ${CONNECTION_NAME} -c "VACUUM (FULL) ${SCHEMA}.${TABLE_NAME};"
```

---
Eesti katastriüksuste andmed on kättesaadavad Maa- ja Ruumiameti (MaRu) WFS teenuse kaudu. Teenus sisaldab **katastriüksuste polügone ja punkte**, koos kõigi oluliste atribuutidega (tunnus, sihtotstarve, pindala, aadress jne) ja uuendatakse **iga öö** [[1]](https://avaandmed.eesti.ee/datasets/eesti-katastriuksuste-andmed-%28wfs%29).

---
### ✅ **WFS teenuse URL**:

```text
https://geoportaal.maaamet.ee/wfs/katastriuksused
```

---

### 📝 **Bash-skript: katastriüksuste import PostGIS andmebaasi**

```bash
#!/usr/bin/env bash

# Ühenduse andmed
destination_host='localhost'
destination_port='5432'
destination_user='osm'
destination_password='osm'
destination_dbname='data'
destination_schema='aaa_osm'
table_name='katastriuksused'

export PGPASSWORD=${destination_password}
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=${destination_password} 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**?