Skip to content

Logika stylování

Nejjednodušší případ

<objtyp:ProvozniPlochaPozemniKomunikaceDefinicniBod>
    <pokdef:ObjektovyTypNazev code_base="0100000005" code_suffix="04">provozní plocha pozemní komunikace</pokdef:ObjektovyTypNazev>
    <pokdef:KategorieObjektu>Dopravní stavby</pokdef:KategorieObjektu>
    <pokdef:SkupinaObjektu>Silniční doprava</pokdef:SkupinaObjektu>
    <pokdef:ObsahovaCast>ZPS</pokdef:ObsahovaCast>
    <pokdef:ZaznamyObjektu>
        <ZaznamObjektu xmlns="pokdef">
            <ZapisObjektu xmlns="cmn">r</ZapisObjektu>
            <AtributyObjektu>
                <SpolecneAtributyVsechObjektu xmlns="atr">
                    <DatumVkladu>2024-02-22T06:50:47</DatumVkladu>
                    <DatumZmeny>0001-01-01T00:00:00</DatumZmeny>
                    <ID>80000120001292394</ID>
                    <IDEditora>SUBJ-00004246</IDEditora>
                    <IDZmeny>CZ080-880009</IDZmeny>
                    <PopisObjektu/>
                    <VkladOsoba>Eva Knopová</VkladOsoba>
                    <ZmenaOsoba/>
                </SpolecneAtributyVsechObjektu>
                <SpolecneAtributyObjektuDefinicnichBodu xmlns="atr">
                    <ICS/>
                    <UrovenUmisteniObjektuZPS>0</UrovenUmisteniObjektuZPS>
                </SpolecneAtributyObjektuDefinicnichBodu>
                <TypPozemniKomunikace xmlns="atr">1</TypPozemniKomunikace>
                <PrevazujiciPovrch xmlns="atr">99</PrevazujiciPovrch>
            </AtributyObjektu>
            <GeometrieObjektu>
                <gml:pointProperty xmlns:gml="http://www.opengis.net/gml/3.2">
                    <gml:Point gml:id="ID80000120001292394_04" srsDimension="3" srsName="EPSG:5514">
                        <gml:pos>-498189.97 -1087404.68 0.00</gml:pos>
                    </gml:Point>
                </gml:pointProperty>
            </GeometrieObjektu>
        </ZaznamObjektu>
        <ZaznamObjektu xmlns="pokdef">
            <ZapisObjektu xmlns="cmn">r</ZapisObjektu>
            <AtributyObjektu>
                <SpolecneAtributyVsechObjektu xmlns="atr">
                    <DatumVkladu>2024-02-22T06:50:47</DatumVkladu>
                    <DatumZmeny>0001-01-01T00:00:00</DatumZmeny>
                    <ID>80000120001295705</ID>
                    <IDEditora>SUBJ-00004246</IDEditora>
                    <IDZmeny>CZ080-880009</IDZmeny>
                    <PopisObjektu/>
                    <VkladOsoba>Eva Knopová</VkladOsoba>
                    <ZmenaOsoba/>
                </SpolecneAtributyVsechObjektu>
                <SpolecneAtributyObjektuDefinicnichBodu xmlns="atr">
                    <ICS/>
                    <UrovenUmisteniObjektuZPS>0</UrovenUmisteniObjektuZPS>
                </SpolecneAtributyObjektuDefinicnichBodu>
                <TypPozemniKomunikace xmlns="atr">1</TypPozemniKomunikace>
                <PrevazujiciPovrch xmlns="atr">99</PrevazujiciPovrch>
            </AtributyObjektu>
            <GeometrieObjektu>
                <gml:pointProperty xmlns:gml="http://www.opengis.net/gml/3.2">
                    <gml:Point gml:id="ID80000120001295705_04" srsDimension="3" srsName="EPSG:5514">
                        <gml:pos>-498352.50 -1087468.52 0.00</gml:pos>
                    </gml:Point>
                </gml:pointProperty>
            </GeometrieObjektu>
        </ZaznamObjektu>
    </pokdef:ZaznamyObjektu>
</objtyp:ProvozniPlochaPozemniKomunikaceDefinicniBod>

Touto položkou skriptu

self.type_mapping_df = self.load_type_mapping()

se načte soubor načte se soubor typy_druhy.csv – ukázka:

162 plot|DruhPlotu
166 schodiště|DruhSchodiste
168 zeď|TypZdi

Znamená to, že objekt 162 plot je z hlediska stylů charakterizován atributem DruhPlotu (drátěný atd.).

Vzhledem k tomu, že ve výše uvedeném nodu je

005 provozní plocha pozemní komunikace

Dojde k hledání v tomto souboru a vyhodnotí se to tak, že z hlediska stylů nemá charakteristický atribut (atributy) a základ klíče pro vyhledání stylu je tudíž jen

005 provozní plocha pozemní komunikace

bez další charakteristiky

Klíč se doplní ještě o geometrii vrstvy, tady Point a v cyklu bude postupně hledáno ve stylech pro všechna měřítka s těmito klíči:

005 provozní plocha pozemní komunikace_Point_500
005 provozní plocha pozemní komunikace_Point_5000
005 provozní plocha pozemní komunikace_Point_10000
005 provozní plocha pozemní komunikace_Point_25000

Matchne se jenom 500.

Tady ukážu na složitějším nodu, jak je to, když má objekt charakteristický atribut z hlediska stylů:

<objtyp:Plot>
    <plotli:ObjektovyTypNazev code_base="0100000162" code_suffix="02">plot</plotli:ObjektovyTypNazev>
    <plotli:KategorieObjektu>Součásti a příslušenství staveb</plotli:KategorieObjektu>
    <plotli:SkupinaObjektu>Stavba společná pro více skupin</plotli:SkupinaObjektu>
    <plotli:ObsahovaCast>ZPS</plotli:ObsahovaCast>
    <plotli:ZaznamyObjektu>
        <ZaznamObjektu xmlns="plotli">
            <ZapisObjektu xmlns="cmn">r</ZapisObjektu>
            <AtributyObjektu>
                <SpolecneAtributyVsechObjektu xmlns="atr">
                    <DatumVkladu>2024-10-10T13:31:55</DatumVkladu>
                    <DatumZmeny>2024-10-10T13:31:55</DatumZmeny>
                    <ID>80000050005336157</ID>
                    <IDEditora>SUBJ-00004246</IDEditora>
                    <IDZmeny>PGAD-F5E6C776-D82A-4265-906C-B10D5E46F561</IDZmeny>
                    <PopisObjektu/>
                    <VkladOsoba>dummy</VkladOsoba>
                    <ZmenaOsoba/>
                </SpolecneAtributyVsechObjektu>
                <SpolecneAtributyObjektuZPS xmlns="atr">
                    <ICS/>
                    <TridaPresnostiPoloha>4</TridaPresnostiPoloha>
                    <TridaPresnostiVyska>4</TridaPresnostiVyska>
                    <UrovenUmisteniObjektuZPS>0</UrovenUmisteniObjektuZPS>
                    <ZpusobPorizeniZPS>99</ZpusobPorizeniZPS>
                </SpolecneAtributyObjektuZPS>
                <DruhPlotu xmlns="atr">2</DruhPlotu>
                <HraniceJinehoObjektu xmlns="atr">0</HraniceJinehoObjektu>
            </AtributyObjektu>
            <GeometrieObjektu>
                <gml:curveProperty xmlns:gml="http://www.opengis.net/gml/3.2">
                    <gml:LineString gml:id="ID80000050005336157_02" srsDimension="3" srsName="EPSG:5514">
                        <gml:posList>-498192.54 -1087425.46 278.72 -498179.66 -1087491.41 276.93 -498178.66 -1087500.00 276.52 -498173.33 -1087546.06 274.79 -498170.78 -1087585.64 273.23 -498168.76 -1087618.90 271.65 -498166.84 -1087641.67 270.10 -498166.71 -1087641.75 270.10</gml:posList>
                    </gml:LineString>
                </gml:curveProperty>
            </GeometrieObjektu>
        </ZaznamObjektu>
…

Zde je v souboru typy_druhy.csv dohledán

162 plot|DruhPlotu

V konkrétním případě je to 2, k tomu se dohledá v /xsd/common/atributy.xsd název, což je „drátěný“ a základ klíče pro vyhledání stylu je tudíž

162 plot - drátěný

Klíč se doplní ještě o geometrii vrstvy, tady LineString a v cyklu bude postupně hledáno ve stylech pro všechna měřítka s těmito klíči:

162 plot - drátěný_LineString_500
162 plot - drátěný_LineString_5000
162 plot - drátěný_LineString_10000
162 plot - drátěný_LineString_25000

V prvních dvou případech se to matchne.

Další případ:

<objtyp:TechnologickyObjektPlynovodniSiteBod>
    <topbod:ObjektovyTypNazev code_base="0100000112" code_suffix="01">technologický objekt plynovodní sítě</topbod:ObjektovyTypNazev>
    <topbod:KategorieObjektu>Stavby technické infrastruktury</topbod:KategorieObjektu>
    <topbod:SkupinaObjektu>Plynovod</topbod:SkupinaObjektu>
    <topbod:ObsahovaCast>TI</topbod:ObsahovaCast>
    <topbod:ZaznamyObjektu>
        <topbod:ZaznamObjektu>
            <cmn:ZapisObjektu>r</cmn:ZapisObjektu>
            <topbod:AtributyObjektu>
                <atr:SpolecneAtributyVsechObjektu>
                    <atr:ID>00000100050601033</atr:ID>
                    <atr:IDZmeny/>
                    <atr:PopisObjektu>regulační stanice plynu</atr:PopisObjektu>
                    <atr:IDEditora>SUBJ-00000100</atr:IDEditora>
                    <atr:DatumVkladu>2024-10-01T00:00:00</atr:DatumVkladu>
                    <atr:VkladOsoba>SYSTEM</atr:VkladOsoba>
                    <atr:DatumZmeny>2024-08-08T14:25:35</atr:DatumZmeny>
                    <atr:ZmenaOsoba>SYSTEM</atr:ZmenaOsoba>
                </atr:SpolecneAtributyVsechObjektu>
                <atr:SpolecneAtributyObjektuTI>
                    <atr:IDVlastnika>SUBJ-00008241</atr:IDVlastnika>
                    <atr:IDSpravce>SUBJ-00008241</atr:IDSpravce>
                    <atr:IDExterni>5000298541</atr:IDExterni>
                    <atr:NeuplnaData>true</atr:NeuplnaData>
                    <atr:UrovenUmisteniObjektuTI>0</atr:UrovenUmisteniObjektuTI>
                    <atr:TridaPresnostiPoloha>9</atr:TridaPresnostiPoloha>
                    <atr:TridaPresnostiVyska>9</atr:TridaPresnostiVyska>
                    <atr:ZpusobPorizeniTI>6</atr:ZpusobPorizeniTI>
                </atr:SpolecneAtributyObjektuTI>
                <atr:StavObjektu>0</atr:StavObjektu>
                <atr:TlakovaHladinaPlynovodniSite>99</atr:TlakovaHladinaPlynovodniSite>
                <atr:TypTechnologickehoObjektuPlynovodniSite>2</atr:TypTechnologickehoObjektuPlynovodniSite>
            </topbod:AtributyObjektu>
            <topbod:GeometrieObjektu>
                <gml:pointProperty xlink:type="simple">
                    <gml:Point srsName="EPSG:5514" srsDimension="3" gml:id="ID100050601033_01">
                        <gml:pos>-738172.22 -1042152.65 0.0</gml:pos>
                    </gml:Point>
                </gml:pointProperty>
            </topbod:GeometrieObjektu>
        </topbod:ZaznamObjektu>
    </topbod:ZaznamyObjektu>
</objtyp:TechnologickyObjektPlynovodniSiteBod>

Zde je v souboru typy_druhy.csv dohledán

112 technologický objekt plynovodní sítě|TlakovaHladinaPlynovodniSite

V konkrétním případě je to 99, k tomu se dohledá v /xsd/common/atributy.xsd název, což je „nezjištěno/neurčeno“ a základ klíče pro vyhledání stylu je tudíž

112 technologický objekt plynovodní sítě - nezjištěno/neurčeno

Klíč se doplní ještě o geometrii vrstvy, tady Point a v cyklu bude postupně hledáno ve stylech pro všechna měřítka s těmito klíči:

112 technologický objekt plynovodní sítě - nezjištěno/neurčeno_Point_500
112 technologický objekt plynovodní sítě - nezjištěno/neurčeno_Point _5000
112 technologický objekt plynovodní sítě - nezjištěno/neurčeno_Point _10000
112 technologický objekt plynovodní sítě - nezjištěno/neurčeno_Point _25000

Nematchne se ale nic, protože klíč je ve styles2.csv z nějakého důvodu

112 technologický objekt plynovodní sítě - nezjištěno_Point_500

S tím ale počítám a ještě zkouším

112 technologický objekt plynovodní sítě - nezjištěno _Point_500
112 technologický objekt plynovodní sítě - nezjištěno _Point _5000
112 technologický objekt plynovodní sítě - nezjištěno _Point _10000
112 technologický objekt plynovodní sítě - nezjištěno _Point _25000

To se už matchne na prvním.

Kdyby to ani tak nevyšlo, zkouším ještě s „neurčeno“.

Poslední ukázka:

<objtyp:ZarizeniPlynovodniSite>
    <zaplsi:ObjektovyTypNazev code_base="0100000111" code_suffix="01">zařízení plynovodní sítě</zaplsi:ObjektovyTypNazev>
    <zaplsi:KategorieObjektu>Stavby technické infrastruktury</zaplsi:KategorieObjektu>
    <zaplsi:SkupinaObjektu>Plynovod</zaplsi:SkupinaObjektu>
    <zaplsi:ObsahovaCast>TI</zaplsi:ObsahovaCast>
    <zaplsi:ZaznamyObjektu>
        <zaplsi:ZaznamObjektu>
            <cmn:ZapisObjektu>r</cmn:ZapisObjektu>
            <zaplsi:AtributyObjektu>
                <atr:SpolecneAtributyVsechObjektu>
                    <atr:ID>00000100050601073</atr:ID>
                    <atr:IDZmeny/>
                    <atr:PopisObjektu>Hlavní uzávěr plynu</atr:PopisObjektu>
                    <atr:IDEditora>SUBJ-00000100</atr:IDEditora>
                    <atr:DatumVkladu>2024-10-01T00:00:00</atr:DatumVkladu>
                    <atr:VkladOsoba>SYSTEM</atr:VkladOsoba>
                    <atr:DatumZmeny>2024-08-08T14:26:14</atr:DatumZmeny>
                    <atr:ZmenaOsoba>SYSTEM</atr:ZmenaOsoba>
                </atr:SpolecneAtributyVsechObjektu>
                <atr:SpolecneAtributyObjektuTI>
                    <atr:IDVlastnika>SUBJ-00008241</atr:IDVlastnika>
                    <atr:IDSpravce>SUBJ-00008241</atr:IDSpravce>
                    <atr:IDExterni>DIC_730891_HUP_3</atr:IDExterni>
                    <atr:NeuplnaData>true</atr:NeuplnaData>
                    <atr:UrovenUmisteniObjektuTI>0</atr:UrovenUmisteniObjektuTI>
                    <atr:TridaPresnostiPoloha>9</atr:TridaPresnostiPoloha>
                    <atr:TridaPresnostiVyska>9</atr:TridaPresnostiVyska>
                    <atr:ZpusobPorizeniTI>6</atr:ZpusobPorizeniTI>
                </atr:SpolecneAtributyObjektuTI>
                <atr:StavObjektu>0</atr:StavObjektu>
                <atr:TypZarizeniPlynovodniSite>0</atr:TypZarizeniPlynovodniSite>
                <atr:UmisteniObjektu>99</atr:UmisteniObjektu>
            </zaplsi:AtributyObjektu>
            <zaplsi:GeometrieObjektu>
                <gml:pointProperty xlink:type="simple">
                    <gml:Point srsName="EPSG:5514" srsDimension="3" gml:id="ID100050601073_01">
                        <gml:pos>-737564.56 -1042004.58 0.0</gml:pos>
                    </gml:Point>
                </gml:pointProperty>
            </zaplsi:GeometrieObjektu>
        </zaplsi:ZaznamObjektu>
        <zaplsi:ZaznamObjektu>
            <cmn:ZapisObjektu>r</cmn:ZapisObjektu>
            <zaplsi:AtributyObjektu>
                <atr:SpolecneAtributyVsechObjektu>
                    <atr:ID>XXXXXXXXX</atr:ID>
                    <atr:IDZmeny/>
                    <atr:PopisObjektu>Hlavní uzávěr plynu</atr:PopisObjektu>
                    <atr:IDEditora>SUBJ-00000100</atr:IDEditora>
                    <atr:DatumVkladu>2024-10-01T00:00:00</atr:DatumVkladu>
                    <atr:VkladOsoba>SYSTEM</atr:VkladOsoba>
                    <atr:DatumZmeny>2024-08-08T14:26:14</atr:DatumZmeny>
                    <atr:ZmenaOsoba>SYSTEM</atr:ZmenaOsoba>
                </atr:SpolecneAtributyVsechObjektu>
                <atr:SpolecneAtributyObjektuTI>
                    <atr:IDVlastnika>SUBJ-00008241</atr:IDVlastnika>
                    <atr:IDSpravce>SUBJ-00008241</atr:IDSpravce>
                    <atr:IDExterni>DIC_730891_HUP_4</atr:IDExterni>
                    <atr:NeuplnaData>true</atr:NeuplnaData>
                    <atr:UrovenUmisteniObjektuTI>0</atr:UrovenUmisteniObjektuTI>
                    <atr:TridaPresnostiPoloha>9</atr:TridaPresnostiPoloha>
                    <atr:TridaPresnostiVyska>9</atr:TridaPresnostiVyska>
                    <atr:ZpusobPorizeniTI>6</atr:ZpusobPorizeniTI>
                </atr:SpolecneAtributyObjektuTI>
                <atr:StavObjektu>0</atr:StavObjektu>
                <atr:TypZarizeniPlynovodniSite>0</atr:TypZarizeniPlynovodniSite>
                <atr:UmisteniObjektu>99</atr:UmisteniObjektu>
            </zaplsi:AtributyObjektu>
            <zaplsi:GeometrieObjektu>
                <gml:pointProperty xlink:type="simple">
                    <gml:Point srsName="EPSG:5514" srsDimension="3" gml:id="XXXXXXXXXX">
                        <gml:pos>-XXXXXXX.XX -XXXXXXXX.XX 0.0</gml:pos>
                    </gml:Point>
                </gml:pointProperty>
            </zaplsi:GeometrieObjektu>
        </zaplsi:ZaznamObjektu>
    </zaplsi:ZaznamyObjektu>
</objtyp:ZarizeniPlynovodniSite>

Zde je v souboru typy_druhy.csv dohledán

111 zařízení plynovodní sítě|TypZarizeniPlynovodniSite

V konkrétním případě je to 0, k tomu se dohledá v /xsd/common/atributy.xsd název, což je „neveřejný údaj“.

Takový styl obecně není, tak rovnou zkouším různé defaultní hodnoty podle xsd je postupně takto:

0 vynechávám, pokud je to neveřejný údaj, 
pak zkouším 99 (jiná, jiný, jiné) , pokud v xsd k tomu typu 99 je, 
pak zkouším 98 (nezjištěno/neručeno) na všechny tři kominace, pokud v xsd k tomu typu 98 je.

Matchne se

111 zařízení plynovodní sítě - jiné_Point_500