GispoCoding / hame-ryhti

HAME regional land use planning database compatible with national Ryhti data model
MIT License
0 stars 0 forks source link

Luodaan näkymiä kaavatietoihin QGIS-projektissa tai tietokannassa #235

Open SannaJokela opened 4 months ago

SannaJokela commented 4 months ago

Kaavoittajat voivat haluta tuottaa erilaisia näkymiä kaavatietoihin. Yksi näistä on taulu, jonka avulla kaavakartta ja legenda voidaan tuottaa. Alustava suunnitelma tehty käsitemalliin, mutta mahdollisesti myös muita näkymätietoja tarvitaan. Ne selvitetään myöhemmin.

Näkymätietoja tarvitaan kaavakartan selitteen muodostamiseen aluevaraukset, maankäyttökohteet, osa-alueet, viivat, pisteet tasoilta. Näihin tasoihin yhdistetään seuraavat tiedot - ELI tarvitaan jokaiselle tasolle oma näkymä:

Kaavan ulkorajan osalta ei tarvita ainakaan vielä näkymää, sillä yleismääräykset saadaan kaavamääräysryhmä-taulusta erikseen selitteeseen tuotua.

Käytännössä QGIS-projektiin tuodaan ko. näkymätaulut PostGISistä. Tätä taulua käytetään kaavakartan visualisoinnissa ja legendan toteuttamisessa.

Esimerkkinä halutunkaltainen lopputulos QGISin tulosteenmuodostajan legendassa:

Image

Image

### Tasks
- [x] Suunnittele tehdäänkö toteutus tietokannan vai QGISin puolella: PostGIS materialisoitu näkymä
- [ ] https://github.com/GispoCoding/hame-ryhti/issues/243
- [ ] https://github.com/GispoCoding/hame-ryhti/issues/244
- [ ] https://github.com/GispoCoding/hame-ryhti/issues/267
SannaJokela commented 3 months ago

@msorvoja näkymätaulun tuotanto PostGISiin olisi myös tarpeen. Drawiossa malli

msorvoja commented 3 months ago

@Rikuoja Tuleeko jokaiselle kaavakohteelle oma näkymätaulu PostGISiin, eli land_use_area_view, other_area_view jne?

Rikuoja commented 3 months ago

@SannaJokela osaa varmaan vastata, millaisia näkymiä käyttäjä haluaa?

Rikuoja commented 3 months ago

Sitten kun on päätetty, millaisia näkymiä käyttäjä haluaa, postgresin Materialized View on varmaan paras tapa tehdä tämä parhaalla suorituskyvyllä.

Se vain vaatii sitten myös postgresiin triggerien lisäämistä, että materialized view päivitetään aina kun lähtötietotaulu muuttuu.

Rikuoja commented 3 months ago

@SannaJokela Tehdäänkö tämä siis ennen kuin on tehty tehtävää "Suunnittele sisältö tarkemmin kaavoittajien kanssa" ja "Suunnittele tehdäänkö toteutus tietokannan vai QGISin puolella"? Miksi? Miten?

SannaJokela commented 3 months ago

@Rikuoja siellä on suunniteltu yksi esimerkki. Käytännössä kaikille paikkatietotasoille ainakin sen mukainen näkymä. Jos tulee muita niin tehdään uusi issue. Ymmärsin keskusteluista että parempi tehdä PostGISin puolella materialisoituna näkymänä.

SannaJokela commented 3 months ago

@Rikuoja muokkasin todo-kohtia. Jos tulee testauksessa myöhemmin muita näkymätarpeita, tehdään niitä sitten.

Rikuoja commented 3 months ago

Näkymiin tarvitaan ainakin alembicin lisäosa, joka osaa lisätä tietokantaan funktioita, näkymiä jne: https://github.com/olirice/alembic_utils

Rikuoja commented 3 months ago

Esimerkki alembic_utilsin käyttöön näkymien, funktioiden, triggereiden jne. luomisessa on ainakin tässä keskustelussa https://stackoverflow.com/a/72829474

Jos näkymä on materialized view (ei päätetty vielä), tuolla työkalulla voinee tehdä lisäksi triggerit materialized viewin päivitykseen. Eli aina, kun geometriatauluun tulee INSERT, DELETE tai UPDATE, triggerin pitää päivittää vastaava materialisoitu näkymä.

Rikuoja commented 3 months ago

Tehdään erillinen views.py näkymiä varten.

SannaJokela commented 3 months ago

@lehtojaa selvitä voiko QGISin tulosteen muodostajan selitteessä tehdä tällaista

lehtojaa commented 3 months ago

@SannaJokela

@lehtojaa selvitä voiko QGISin tulosteen muodostajan selitteessä tehdä tällaista

Tarkennus (eli mihin sana "tällaista" viittaa): eli mun piti selvittää ylipäätään pystyykö aloituskommentin mukaista (ulkoasu, tarvittavat tiedot) selitettä tekemään QGISiin tuodusta näkymästä?

SannaJokela commented 3 months ago

@lehtojaa joo siis viittaan tuohon esimerkkikuvaan. Tästä viime viikolla juteltiin, että voi olla että parempi olisi jos kaavamääräyksissä aina olisi sanallinen kuvaus aukikirjoitettuna, jolloin ehkä legendassa haetaankin vaan tekstiarvo/sanallisen määräyksen tekstiarvo. Mutta siis lähinnä millaisia placeholdereita pitää QGISin legendassa käyttää jotta nuo tiedot saa näkymistä ulos. Ks. myös #255