sykefi / kaavatietomalli

Asemakaavan ja yleiskaavan tietomallit -projektin tuottaman kaavatietomallin kuvaus ja projektin tuotokset
https://tietomallit.ymparisto.fi/kaavatiedot/
Creative Commons Attribution 4.0 International
1 stars 5 forks source link

Yhteensovitus yhteisten komponenttien julkaisuversion kanssa (kaavamääräysten rakenne) #128

Open ilkkarinne opened 1 year ago

ilkkarinne commented 1 year ago

Rakennetun ympäristön tietokomponenttikirjaston uusimmassa dev-versio on uudempi kuin Kaavatietomallin dev-versiossa käytössä oleva Yhteiset tietokomponentit-paketti. Kaavatietomallin osalta olennaiset muutokset liittyvät Tietoyksikkö-luokkaan ja sen aliluokkaan AlueidenkäyttöJaRakentamismääräys, joka puolestaan on Kaavatietomallin Kaavamääräys- ja luokan yläluokka. Kaavatietomallin Kaavasuositus- ja Kaavamääräysryhmä puolestaan ovat suoraan Tietoyksikkö-luokan aliluokkia.

Tietoyksikkö-luokan varsinainen tietosisältö on kuvattu Kaavatietomallissa käytössä olevassa versiossa attribuutin arvo avulla, ja sen tietotyyppi on OminaisuudenArvo. Uusimmassa yhteiset-versiossa sama sisältö on kuvattu attribuutin ominaisuus avulla, joka on tyyppiä AbstraktiSuureenArvo. Olennaisesti tämä tarkoittaa, että nykyisellään Kaavamääräys- ja Kaavasuositus-luokassa arvo-attribuutti sisältää suoraan tietyn numeerisen tai tekstiarvon ilman että erikseen kuvataan, minkä suureen arvo tuo arvo on. Toisin sanoen Kaavamääräys-luokan arvo-attribuutin arvon voi tulkita semanttisesti vain yhteydessä sen laji-attribuutin arvoon.

Mikäli Kaavatietomallissa otetaan käyttöön uusin Rakennetun ympäristön tietokomponenttikirjaston uusin dev-versio, niin Kaavamääräys-luokan arvojen yhteydessä voidaan kuvata eksplisiittisesti minkä suureen arvosta on kyse. Tämä selkeyttää mallin rakennetta varsinkin kun samassa Kaavamääräys-objektissa on käytössä useampi kuin yksi arvo. Lisäksi nykyisestä Lisätieto-luokasta voidaan luopua, kun kaavamääräyksen lisätiedot voidaan antaa saman ominaisuus-attribuutin avulla kuin kaavamääräyksen muutkin suureet. AbstaktiSuureenArvo-luokan attribuutti suure on pakollinen, sillä ilman suureen nimeämistä "suureen arvo"-käsite ei ole mielekäs.

Esimerkki valaissee asiaa:

Nykyisen Kaavamääräys-luokan mukainen esimerkki:

Kaavakohde
   Kaavamääräys 1
      laji: 0101 - Alueen käyttötarkoitus: Asuminen
   Kaavamääräys 2
      laji: 0103 - Alueen käyttötarkoitus: Liike- ja toimistorakentaminen
   Kaavamääräys 3
      laji: 0301 - Rakentamisen määrä: Sallittu kerrosala
      arvo:
         NumerinenArvo
            arvo: 5000
            yksikkö: '"k-m2"
      lisätieto:
         Lisätieto
            laji: 01 - Käyttötarkoituksen osuus kerrosalasta
            arvo:
               NumeerinenArvoväli
                  minimiarvo: 400
                  yksikkö: "k-m2"
            arvo:
               Koodiarvo
                  koodisto: Kaavamääräyslaji - Asemakaava
                  koodi: 0103 - Alueen käyttötarkoitus: Liike ja toimistorakentaminen 

Sama esimerkki käyttäen uusimman Rakennetun ympäristön tietokomponenttikirjaston dev-version muutettuja Tietoyksikkö- ja AlueidenkäyttöJaRakentamismääräys-luokkia:

Kaavakohde
   Kaavamääräys 1
      laji: 01 - Alueen käyttötarkoitus
      ominaisuus:
          SuureenArvo
             suure:
                 Suure
                    suureenNimi: "Alueen käyttötarkoitusluokka"
                    tunnus:
                       KoodiArvo
                          koodisto: "Kaavamääräyssuureet"
                          koodi: 01 - Alueen käyttötarkoitusluokka
             arvo:
                KoodiArvo
                   koodisto: "Alueen käyttötarkoitusluokat - Asemakaava"
                   koodi: 01 - Asuminen
             arvo:
                KoodiArvo
                   koodisto: "Alueen käyttötarkoitusluokat - Asemakaava"
                   koodi: 03 - Liike- ja toimistorakentaminen
   Kaavamääräys 2
      laji: 03 - Rakennusoikeus
      ominaisuus:
         SuureenArvo
             suure:
                Suure                 
                   suureenNimi: "Sallittu kerrosala"
                   tunnus:
                      KoodiArvo
                         koodisto: "Kaavamääräyssuureet"
                         koodi: 02 - Sallittu kerrosala
             arvo:
                NumerinenArvo
                   arvo: 5000
                   yksikkö: '"k-m2"
      ominaisuus:
           SuureenArvo
             suure:
                Suure
                   suureenNimi: "Käyttötarkoituksen osuus kerrosalasta"
                    tunnus:
                       KoodiArvo
                          koodisto: "Kaavamääräyssuureet"
                          koodi: 03 - Käyttötarkoituksen osuus kerrosalasta
             arvo:
                NumeerinenArvoväli
                   minimiarvo: 400
                   yksikkö: "k-m2"
             arvo:
                Koodiarvo
                   koodisto: Alueen käyttötarkoitusluokat - Asemakaava
                   koodi: 03 - Liike- ja toimistorakentaminen 

Tämä olisi nähdäkseni pidemmällä tähtäimellä järkevä tapa mallintaa Kaavatietomallin kaavamääräysten tietoja, mutta muuto on aika suuri nykyiseen rakenteeseen verrattuna, ja vaatisi myös koodistojen uudelleenorganisointia.

Siirtymävaiheen mahdollisimman pieniä muutoksia aiheuttava ratkaisu voisi olla se, että pidetään nykyinen koodistorakenne ennallaan ja korvataan lisätieto omalla ominaisuus-attribuutillaan, jonka suureena käytetään nykyistä lisätiedon laji -koodistoa:

Kaavakohde
   Kaavamääräys 1
      laji: 0101 - Alueen käyttötarkoitus: Asuminen
   Kaavamääräys 2
      laji: 0103 - Alueen käyttötarkoitus: Liike- ja toimistorakentaminen
   Kaavamääräys 3
      laji: 0301 - Rakentamisen määrä: Sallittu kerrosala
      ominaisuus:
         SuureenArvo
             suure:
                 Suure
                    tunnus:
                       KoodiArvo
                          koodisto: "Kaavamääräyslaji (asemakaava)"
                          koodi: 0301 - Rakentamisen määrä: Sallittu kerrosala
             arvo:
                NumerinenArvo
                   arvo: 5000
                   yksikkö: '"k-m2"
      ominaisuus:
           SuureenArvo
             suure:
                 Suure
                    tunnus:
                       KoodiArvo
                          koodisto: "Kaavamääräyksen lisätiedon laji (Asemakaava)"
                          koodi: 01 - Käyttötarkoituksen osuus kerrosalasta
             arvo:
                NumeerinenArvoväli
                   minimiarvo: 400
                   yksikkö: "k-m2"
             arvo:
                Koodiarvo
                   koodisto: "Kaavamääräyslaji (asemakaava)"
                   koodi: 0103 - Alueen käyttötarkoitus: Liike- ja toimistorakentaminen
teempek commented 1 year ago

Vertasitko muutosta Githubissa olevaan kaavatietomalliin vai tietomallit.ymparisto.fi sivulla olevaan kaavatietomalliin? Githubissa on pull requestina se uusin versio https://github.com/sykefi/kaavatietomalli/pull/127

ilkkarinne commented 1 year ago

Vertasin tietomallit.ymparisto.fi sivulla olevaan kaavatietomallin dev-versioon (commitissa https://github.com/sykefi/kaavatietomalli/commit/24f876300cd25a3b4382a30b0b45d5c7e30c348e).

En ole tutkinut tuota pull requestia #127, mutta kuvauksen perusteella se ei vaikuta tähän asiaan.

ilkkarinne commented 1 year ago

Kaikista karuin karvalakkiversio olisi lisätä Kaavatietomallin Kaavamääräys- ja Kaavasuositus-luokkiin aiemman version attribuutti arvo:OminaisuudenArvo ja Kaavamääräys-luokkaan attribuutti lisätieto:Lisätieto. Sitten vaan kielletään Kaavatietomallin laatusäännöissä Kaavamääräys- ja Kaavasuositus-luokkien perittyjen ominaisuus-attribuuttien käyttö. Tämä olisi sitten jo todella huono vaihtoehto yhtään pidemmänpäälle, mutta taaksepäin yhteensopiva.