- FITXER: Adreça del fitxer gràfic de la capa-full (arc,
pol, etc), relativa a la del fitxer REL i DBF de la
Multisèrie.
- ID_TEMA: Identificador del tema de la capa-full.
- ID_DATA: Any o versió de la capa-full. Per exemple, en
el cas de la Multisèrie 'Topogràfic' podria ser
v2.0, etc. i en el cas del Mapa de Cobertes del Sòl de
Catalunya podria ser 1993 o 2000.
- ID_FULL: A quin full correspon aquesta capa-full
- ID_TALL: A quin tall es correspon el full definit al
camp anterior
Així per exemple alguns registres d'aquesta taula
podrien ser:
bt5mv20.dbf
FITXER
|
ID_TEMA
|
ID_DATA
|
ID_FULL
|
ID_TALL
|
f241x156\bt5mv20mm0f241156ac0r020.pnt
|
AltimetriaCotes
|
v2.0
|
241-156
|
MTN/IGN-5m
|
f241x156\bt5mv20mm0f241156rv0r020.pnt
|
PuntsReferenciaVertexsGeodesics
|
v2.0
|
241-156
|
MTN/IGN-5m
|
f241x156\bt5mv20mm0f241156an0r020.pnt
|
AltimetriaTextosCorbesNivell
|
v2.0
|
241-156
|
MTN/IGN-5m
|
…
|
…
|
…
|
…
|
…
|
f242x138\bt5mv20mm0f242138ac0r020.pnt
|
AltimetriaCotes
|
v2.0
|
242-138
|
MTN/IGN-5m
|
f242x138\bt5mv20mm0f242138an0r020.pnt
|
AltimetriaTextosCorbesNivell
|
v2.0
|
242-138
|
MTN/IGN-5m
|
f242x138\bt5mv20mm0f242138hn0r020.pnt
|
HidrografiaToponimia
|
v2.0
|
242-138
|
MTN/IGN-5m
|
f242x138\bt5mv20mm0f242138mn0r020.pnt
|
MediNaturalToponimia
|
v2.0
|
242-138
|
MTN/IGN-5m
|
Aquesta taula està relacionada
amb altres taules (amb sufix prefixat) que contenen els
vincles als RELs que defineixen les diferents sèries
(AltimetriaCotes, PuntsReferenciaVertexsGeodesics, etc.
seguint l'exemple) i els diferents fulls de la sèrie
(241-156 i 242-138 del tall MTN/IGN-5m, seguint
l'exemple).
Les relacions amb aquestes
altres taules són a partir de camps combinats, com s'anirà
comentant en les següents seccions. Al fitxer REL de la
Multisèrie es defineixen les relacions amb aquestes taules a
través de camps 'simples', com habitualment. Això és
suficient per a definir les relacions però no ho serà per a
realitzar les comprovacions des del GeM+. El Gestor Universal de Metadades Geoespacials, en entrar a la pestanya "Metadades
| Sèries" per a una Capa-Full que forma part de la
Multisèrie realitza les comprovacions "estrictes"
(usant la informació d'ambdós camps alhora).
Metadades de la
Multisèrie
Per a qualsevol fitxer de
metadades ara es defineixen unes entrades noves de metadades
que permeten definir el nivell jeràrquic d'aquell conjunt
de metadades. L'entrada de metadades que conté aquesta
informació prové de l'estàndard ISO19115, s'anomena
hierarchyLevel i es troba a la secció 'METADADES'. Pot
prendre 2 valors: 005, per capa (valor per defecte), i 006,
per sèrie (codis corresponents al code-list MD_ScopeCode de
l'estàndard citat).
Les metadades de la multisèrie
es corresponen al nivell jeràrquic de sèrie, per tant al REL
de la multisèrie hi trobarem:
[METADADES]
; és un rel de SERIE
hierarchyLevel=006
En el model emprat
s'utilitzaran tres tipus de series diferents: multisèrie,
sèrie i full de sèrie. Tots ells tenen el mateix nivell
jeràrquic 'Serie'. Utilitzem el membre
hierarchyLevelName per a identificar amb noms prefixats el
tipus de sèrie (segons ISO aquesta és una entrada de text
lliure, però nosaltres hi reconeixerem alguns 'valors
especials'). Per a les Multisèries al REL es
desarà:
[METADADES]
; és un rel de SERIE
hierarchyLevel=006
; de tipus 'Multisèrie'
hierarchyLevelName=##Multiserie##
A les metadades també cal
definir les relacions d'aquest conjunt de metadades amb
altres conjunts de metadades. L'estàndard ISO defineix
dues vies per a definir aquestes relacions:
- parentIdentifier: És
el FileIdentifier de la metadada de la qual aquesta
és una part. Es refereix al 'pare de les metadades'.
Només pot haver un parentIdentifier per conjunt de metadades
segons ISO. Això no resulta gaire adequat perquè voldrem,
des de la capa-full, explicar els tres 'pares' que
té: sèrie, full i multisèrie (la capa-full agafa metadades
de tots tres conjunts de metadades).
- aggregateInfo: aporta
informació sobre l'agregació de capes. És de
cardinalitat N i, per tant, ens permet definir tants nivells
d'agregació com sigui necessari. Es refereix a les dades
i no a les metadades.
Usarem el
parentIdentifier per referir-nos directament a la
multisèrie des de les metadades de les capes-full, les sèries
i els fulls de sèrie. En teoria cal desar el
FileIdentifier de la metadada corresponent, però en el
model MiraMon ens és més útil desar l'adreça relativa del
REL de la multisèrie, que es desarà a la clau
parentIdentifierFile1 del REL (clau "no ISO"). Les
metadades de la multisèrie no defineixen cap valor en aquesta
clau.
[METADADES]
; és un rel de SERIE
hierarchyLevel=006
; de tipus 'Multisèrie'
hierarchyLevelName=##Multiserie##
; i per tant no té cap parentIdentifierFile1
; parentIdentifierFile1=
Les metadades comunes a aquest
nivell jeràrquic són, per exemple, part del títol
(topogràfic), l'escala equivalent, etc.
Esquema dels fitxers que
defineixen la Multisèrie
2.2 Definició de la sèrie
Cadascuna de les sèries que
formen la Multisèrie es defineix a partir d'un REL que
conté les seves metadades. Hi ha un fitxer DBF que conté la
llista de les sèries que formen la multisèrie. La taula pot
tenir qualsevol nom però es recomana que sigui el mateix que
el de la taula principal de la Multisèrie amb el sufix
"_TemaData". Aquesta taula conté el nom de totes les
sèries i indica quin és el REL que descriu les metadades de
cada una d'elles. L'estructura de la DBF cal que
tingui com a mínim uns camps de nom predefinits.
Taula
*_TemaData.dbf
Aquesta taula conté els valors
possibles de combinacions del camp 'Tema' i el camp
'Data' de la taula anterior. Cada combinació correspon
a una 'Serie'. Aquesta taula es relaciona amb la de la
multisèrie a partir del camp combinat ID_TEMA-ID_DATA, que
apareix a les dues taules. Els camps de la taula
són:
- ID_TEMA: Identificador del
tema de la capa-full.
- ID_DATA: Any o versió de la
capa-full.
- FITXER: Adreça del fitxer
REL que defineix les metadades de la sèrie, relativa a la
del fitxer REL i DBF de la multisèrie.
- ORDRESERIE: Camp opcional
que permet indicar l'ordre dels registres si hi ha
perill de recuperar la taula en un ordre
incorrecte.
- MS_PARCIAL: Camp opcional
que indica el nom de la Multisèrie parcial a la qual pertany
aquesta sèrie. Aquest nom és lliure però evidentment ha de
ser diferent per a cada multisèrie parcial definida dintre
una multisèrie. Vegeu més informació a l'apartat
"Aspectes de visualització de la
Multisèrie".
- NIV_MS_PAR: Camp opcional
que indica el nombre de nivells (és a dir el nombre
d'iteracions de dibuixat) que conté la Multisèrie
parcial a la qual pertany aquesta sèrie. Aquest nombre és
lliure però evidentment ha de ser igual per a totes les
sèries de la mateixa Multisèrie parcial. Vegeu més
informació a l'apartat "Aspectes de visualització
de la Multisèrie".
Així, per exemple, alguns
registres d'aquesta taula podrien ser:
ID_TEMA
|
ID_DATA
|
FITXER
|
PoblamentToponimiaPrincipals
|
v2.0
|
PalSimb\bt5mv20mm0PoblamentToponimiaPrincipals_01ca.rel
|
PoblamentToponimiaAltres
|
v2.0
|
PalSimb\bt5mv20mm0PoblamentToponimiaAltres_01ca.rel
|
MediNaturalToponimia
|
v2.0
|
PalSimb\bt5mv20mm0MediNaturalToponimia_01ca.rel
|
HidrografiaToponimia
|
v2.0
|
PalSimb\bt5mv20mm0HidrografiaToponimia_01ca.rel
|
PuntsReferenciaVertexsGeodesics
|
v2.0
|
PalSimb\bt5mv20mm0PuntsReferenciaVertexsGeodesics_01ca.rel
|
PoblamentPunt
|
v2.0
|
PalSimb\bt5mv20mm0PoblamentPunt_01ca.rel
|
AltimetriaCotes
|
v2.0
|
PalSimb\bt5mv20mm0AltimetriaCotes_01ca.rel
|
AltimetriaTextosCorbesNivell
|
v2.0
|
PalSimb\bt5mv20mm0AltimetriaTextosCorbesNivell_01ca.rel
|
…
|
…
|
…
|
AltimetriaRelleuAltresPol
|
v2.0
|
PalSimb\bt5mv20mm0AltimetriaRelleuAltresPol_01ca.rel
|
TallCartograficArc
|
v2.0
|
PalSimb\bt5mv20mm0TallCartograficArc_01ca.rel
|
TallCartograficPol
|
v2.0
|
PalSimb\bt5mv20mm0TallCartograficPol_01ca.rel
|
Metadades de la
sèrie
Les metadades de la sèrie es
corresponen també al nivell jeràrquic de sèrie; per tant, a
cada un dels RELs de sèrie (tants com registres a la taula
bt5mv20_TemaData.dbf) hi trobarem:
[METADADES]
és un rel de SERIE
hierarchyLevel=006
Per a les Sèries, al REL es
desarà hierarchyLevelName igual a sèrie:
[METADADES]
; és un rel de SERIE
hierarchyLevel=006
;de tipus 'Serie'
hierarchyLevelName=##Serie##
A les metadades també cal
definir les relacions d'aquest conjunt de metadades amb
altres conjunts de metadades. Com s'ha comentat abans,
usarem el parentIdentifier per referir-nos a la
multisèrie des de les metadades de les capes-full, les sèries
i els fulls de sèrie. En aquest cas:
[METADADES]
; és un rel de SERIE
hierarchyLevel=006
; de tipus 'Serie'
hierarchyLevelName=##Serie##
; i, per tant, el seu parentIdentifierFile1 és la
Multisèrie
parentIdentifierFile1=..\bt5mv20.rel
També és necessari que el
FileIdentifier de la Sèrie sigui un fixat: aquell que
surt de la combinació del contingut dels camps ID_TEMA i
ID_DATA corresponents (de la taula de definició de sèries)
separats per un "_". Així, per exemple, el seu
FileIdentifier de la primera sèrie de l'exemple
(taula bt5mv20_TemaData.dbf), serà
PoblamentToponimiaPrincipals_v2.0, i, per tant, la secció de
metadades completa és:
[METADADES]
FileIdentifier=PoblamentToponimiaPrincipals_v2.0
; és un rel de SERIE
hierarchyLevel=006
; de tipus 'Serie'
hierarchyLevelName=##Serie##
; i, per tant, el seu parentIdentifierFile1 és la
Multisèrie
parentIdentifierFile1=..\bt5mv20.rel
Algunes de les metadades
comunes a tota una Sèrie són una part del títol, la descripció
del llinatge i de les fonts del llinatge (a partir de quina
informació i com es capturen les dades), una data general
temàtica, l'estructura de la base de dades i la qualitat
general de cada un dels camps de la base de dades,
etc.
Nota: la mida màxima del
FileIdentifier és 253, i com que el de la sèrie es
construeix a partir del contingut dels camps ID_TEMA i ID_DATA
més el caràcter "_", CAL que la mida màxima
d'aquests dos camps sumats sigui com a màxim
252.
Esquema dels fitxers que
defineixen la Sèrie
Ordre de visualització de
les capes de la Multisèrie
L'ordre de les sèries a la
taula *_TemaData indica l'ordre de les capes en la
visualització. Aquest ordre "mana" sobre l'ordre
dels mapes i permet controlar correctament l'ordre de
totes les capes, fins i tot aquelles que formen part de la
Multisèrie i que no estaven presents en el primer dels fulls
oberts al MiraMon. Com més amunt es trobi un registre a la
taula *_TemaData, més amunt serà en l'ordre de capes.
Aquest esquema de visualització és el tradicional en el qual
l'ordre de capes és "estricte" en tant que es
dibuixen tots el objectes d'una capa alhora i, després,
els de la segon capa, i així fins al final. Si es desitja es
pot indicar un camp ORDRESERIES que permeti reordenar la taula
si hi ha perill de recuperar-la en un ordre de registres
incorrecte en una selecció SQL (useu "order
by").
En alguns casos és necessari
usar un esquema més complex de visualització ja que cal
dibuixar els objectes d'algunes capes de manera combinada,
en diverses "iteracions de dibuixat". Per exemple
pot ser necessari dibuixar primer alguns objectes de la capa
1, després alguns de la capa 2, després alguns de la capa 3,
després la resta d'objectes de la capa 2, i finalment la
resta de la capa 1 i la resta de la capa 3. Aquesta necessitat
ha sorgit per a poder implementar correctament la
visualització de la Multisèrie BT25M de l'ICGC, on cal
combinar el dibuixat d'algunes de les capes de Vies de
comunicació a fi de poder fer passar una carretera secundària
per sobre o per sota d'una autopista, segons convingui,
malgrat que els dos tipus d'entitats siguin en capes
diferents.
Per a implementar aquesta
estratègia de visualització han estat necessàries diverses
ampliacions a la primera versió del model. És necessari
definir un camp nou (MS_PARCIAL) a la taula que descriu les
sèries. Aquest camp està en blanc per a totes les sèries que
no tenen cap visualització agrupada amb altres capes, i té un
valor igual per a totes les sèries (i capes) del mateix grup
que cal combinar. Totes les sèries que formen part de la
mateixa Multisèrie Parcial han d'estar juntes a
l'ordre de visualització.
En el REL de cada capa-full que
formi part d'una d'aquestes Multisèries Parcials és
necessari que existeixi, a la secció [METADADES], una nova
clau OrdreDintreMultiSerieParcial1. Aquesta clau indica,
separats per comes, els identificadors gràfics dels objectes
de la capa que cal dibuixar en cada una de les iteracions en
què es pintaran les capes. S'anomenen Nivells de la
Multisèrie parcial el nombre d'iteracions de dibuixat per
a les capes que formen part de la Multisèrie parcial. Aquesta
informació es desa al camp NIV_MS_PAR de la taula que descriu
les sèries i ha de coincidir amb el nombre de separadors més
un de la clau OrdreDintreMultiSerieParcial1 de les capes-full.
En llegir la taula el MiraMon controla que tots els valors de
les MSP d'igual nom siguin iguals i més grans que zero i
avisarà si detecta inconsistències.
Imaginem un exemple senzill amb
només 3 sèries: "Vies urbanes"
(ViesComunicacioViesUrbanes), "Vies convencionals"
(ViesComunicacioViesConvencionals) i "Autopistes i vies
preferents" (ViesComunicacioAutopistesViesPreferents) que
formin part de la mateixa multisèrie parcial, anomenada
"Vies de Comunicació" (ViesComunicacio). A la taula
DBF sobre les sèries indicarà:
bt25mv10_TemaData.dbf
ID_TEMA
|
ID_DATA
|
FITXER
|
MS_PARCIAL
|
NIV_MS_PAR
|
ViesComunicacioViesUrbanes
|
v1.0
|
...
|
ViesComunicacio
|
6
|
ViesComunicacioViesConvencionals
|
v1.0
|
…
|
ViesComunicacio
|
6
|
ViesComunicacioAutopistesViesPreferents
|
v1.0
|
…
|
ViesComunicacio
|
6
|
Com s'ha
indicat, cada REL de Capa-full que formi part d'aquesta
multisèrie parcial indicarà l'entrada
l'OrdreDintreMultiSerieParcial1 (a part de les
informacions habituals d'aquesta secció, obviades aquí per
claredat):
REL de la
capa full de la sèrie "Vies urbanes":
[METADADES]
OrdreDintreMultiSerieParcial1=0-0,1-7,8-5301,,5302-5303,
REL de la
capa full de la sèrie "Vies urbanes":
[METADADES]
OrdreDintreMultiSerieParcial1=,0-3,4-518,,,519-572
REL de la
capa full de la sèrie "Vies urbanes":
[METADADES]
OrdreDintreMultiSerieParcial1=0-0,1-12,13-245,,246-326,
Així, segons
l'exemple, a l'hora de dibuixar els elements, es
dibuixaran en primer lloc l'objecte amb Identificador
gràfic 0 de la capa-full de "Vies urbanes". En segon
lloc no es dibuixaria cap objecte de la capa-full de
"Vies convencionals" (noteu que no hi ha cap
identificador gràfic abans de la primera coma). En tercer lloc
es dibuixaria l'objecte amb Identificador gràfic 0 de la
capa-full d'"Autopistes i vies preferents".
Aquests objectes formarien el primer nivell (o iteració de
dibuixat) de la multisèrie parcial "Vies de
comunicació".
Després de
dibuixar els objectes de totes les capes pel primer nivell, es
passaria al segon nivell de dibuixat on es dibuixarien els
objectes de l'1 al 7 de la capa-full de "Vies
urbanes", del 0 al 3 de la capa-full de "Vies
convencionals" i de l'1 al 12 de la capa-full de
sèrie "Autopistes i vies preferents". La seqüència
",," indica que no hi ha objectes en aquell nivell
(iteració de dibuixat) en aquella capa. Al sisè nivell de
dibuixat de la multisèrie parcial tan sols es dibuixarien els
objectes 519-572 de la capa-full de "Vies
convencionals".
2.3 Definició
del full de sèrie
Cadascun del
Fulls de Sèrie que formen la Multisèrie es defineix a partir
d'un REL que conté les seves metadades. Hi ha un fitxer
DBF que conté la llista dels Fulls de Sèrie que formen la
multisèrie. La taula pot tenir qualsevol nom però es recomana
que sigui el mateix que el de la taula principal de la
Multisèrie amb el sufix "_FullTall". Aquesta
taula conté el nom de tots els fulls de sèries i indica quin
és el REL que descriu les metadades de cada un d'ells.
L'estructura de la DBF cal que tingui com a mínim uns
camps de nom predefinits.
Taula
*_FullTall.dbf
Aquesta
taula conté els valors possibles de combinacions del camp
'Full' i el camp 'Tall' de la taula de la
multisèrie. Cada combinació correspon a un 'Full de
Sèrie'. Aquesta taula es relaciona amb la de la multisèrie
a partir del camp combinat Full-Tall, que apareix a les dues
taules. Els camps de la taula són:
- ID_FULL:
A quin full correspon aquell Full de
sèries
- ID_TALL:
A quin tall es correspon el full definit al camp
anterior
- FITXER:
Adreça del fitxer REL que defineix les metadades del full de
la sèrie, relativa a la del fitxer REL i DBF de la
multisèrie.
Així, per
exemple, alguns registres d'aquesta taula podrien
ser:
bt5mv20_FullTall.dbf
ID_FULL
|
ID_TALL
|
FITXER
|
241-156
|
MTN/IGN-5m
|
f241x156\bt5mv20mm0f241x156r02_01ca.rel
|
241-157
|
MTN/IGN-5m
|
f241x157\bt5mv20mm0f241x157r02_01ca.rel
|
241-158
|
MTN/IGN-5m
|
f241x158\bt5mv20mm0f241x158r02_01ca.rel
|
242-138
|
MTN/IGN-5m
|
f242x138\bt5mv20mm0f242x138r02_01ca.rel
|
242-139
|
MTN/IGN-5m
|
f242x139\bt5mv20mm0f242x139r02_01ca.rel
|
…
|
…
|
…
|
316-082
|
MTN/IGN-5m
|
f316x082\bt5mv20mm0f316x082r02_01ca.rel
|
316-083
|
MTN/IGN-5m
|
f316x083\bt5mv20mm0f316x083r02_01ca.rel
|
316-084
|
MTN/IGN-5m
|
f316x084\bt5mv20mm0f316x084r02_01ca.rel
|
317-081
|
MTN/IGN-5m
|
f317x081\bt5mv20mm0f317x081r02_01ca.rel
|
Es poden
diferenciar dos grups de metadades associades a un
Full-Tall.
a)
Metadades genèriques del tall
a.1)
Taula dels Talls cartogràfics
Existeix
una taula DBF que indica els diversos Talls Cartogràfics
disponibles i, per a cada un d'ells, quin és el fitxer
gràfic de polígons que conté el tall topogràfic. Típicament
aquest fitxer de polígons genera una divisió espacial en
trapezoides, com per exemple els talls de l'IGN. Però es
podria, sense cap problema pel model, utilitzar qualsevol
altra divisió, per exemple la divisió
comarcal.
Tall.dbf
ID_TALL
|
FITXER
|
MTN/IGN-5m
|
Tall_5m_IGN.pol
|
MTN/IGN-25m
|
Tall_25m_IGN.pol
|
MTN/IGN-50m
|
Tall_50m_IGN.pol
|
Típicament, totes les sèries de la multisèrie
estaran recolzades pel mateix tall i, per aquest motiu, la
taula Tall.dbf tindrà un sol registre. De fet, té sentit
tenir una taula general que defineixi tots els talls
existents i vinculi als diferents fitxers de polígons. Això
faria que les diferents multisèries poguessin usar aquest
mateix 'tesaurus' per a conèixer quin fitxer de
polígons han d'anar a buscar (segons el Tall que cada
multisèrie utilitzi). Per aquest motiu, aquesta taula ha
d'estar (típicament) situada en un carpeta més
'externa' a la de la multisèrie (a SI\Tesaurus, per
exemple) i que tingui tants registres com talls emprats per
les diferents multisèries (ex: MTN/IGN-5m, MTN/IGN-25m,
MTN/IGN-50m, etc.).
Per tant,
com que s'ha optat per a usar una taula que defineixi
els talls externs a la multisèrie, el REL de la multisèrie
ha de definir una relació amb aquesta taula. Aquesta relació
no és directa. El REL de la multisèrie conté les relacions a
les taules TemaData i FullTall, i des d'aquesta segona
es vincula a la taula Tall.dbf. Els vincles entre la taula
de la multisèrie i les dues primeres taules haurien de ser a
partir d'un camp combinat. De moment es deixen indicades
al REL a partir d'un enllaç simple. El vincle cap a la
taula Tall.dbf sí que és amb un sol camp
d'enllaç.
El
contingut del camp ID_FULL de la taula *_FullTall.dbf indica
quin és l'identificador d'ENTITAT del full dins el
fitxer de polígons indicat al camp 'FITXER' de la
taula Tall.dbf (el fitxer de polígons Tall_50m_IGN.pol a la
taula d'exemple).
L'aproximació utilitzada típicament en les
sèries realitzades amb anterioritat, era que existia per a
cada sèrie temàtica un tall cartogràfic diferent (i
repetit), que vinculava amb els mapes de cada Full per a una
Multisèrie concreta. Així existia un tall que obria tots els
fulls del topogràfic i un altre tall que obria tots els
fulls del MCSC. La implementació actual permet evitar
duplicar aquesta informació gràfica i descriure les
metadades de cada full de forma única.
a.2)
Taula principal del fitxer de polígons que defineix el
Tall
La capa
Tall_50m_IGN.pol defineix la geometria del tall. Generalment
els polígons són trapezoïdals però també poden ser polígons
de distribucions administratives, per exemple. En aquest
cas, el fitxer ha de ser de grups perquè cada entitat tingui
un sol registre. En ambdós casos també ha de tenir un camp
definit com a ID_ENTITAT.
Les
metadades referides a cada full del tall es troben
directament a la taula DBF del fitxer de polígons. És
necessari que aquests camps tinguin un nom de camp
particular per a conèixer quin es correspon a cada concepte
de metadades.
Les
metadades que es poden extreure de la taula del fitxer de
polígons que descriu el Tall Cartogràfic
són:
Envolupant: S'extreu de la capçalera
del fitxer de polígons per a cada polígon. Si hi ha més
d'un registre pel mateix identificador d'entitat
(perquè no estan ciclats com a grups o perquè hi ha
multiregistre) aleshores l'envolupant es calcula com
l'envolupant "externa" als diferents
polígons.
Codis
de full: ha d'existir un camp definit com a
identificador d'entitat que s'usa a les altres
taules com a contingut del camp
'ID_FULL'.
Denominació del full: El nom del camp és
NOM_FULL. En versions antigues d'aquest document
havíem pensat a fixar el nom d'aquest camp a TOPONIM,
però al final s'ha posat aquest perquè a les bases de
referència disponibles a \\eclipta\SI (servidor intern
d'informació geogràfica) es diu així per la majoria de
fitxers de talls cartogràfics.
Si aquesta
DBF té altres camps amb noms diferents, aquesta informació
serà consultable des del tall cartogràfic però no es podrà
'estirar' mai des de les metadades del full perquè
es desconeix quin 'sentit' té (almenys de
moment).
Les
metadades del Tall cartogràfic, que es troben a la taula
principal de la base de dades de polígons que defineix el
Tall, es correspon al nivell jeràrquic de capa. Per tant al
REL del fitxer de polígons que defineix el Tall cartogràfic
(Tall_50m_IGNP.rel) hi trobarem:
[METADADES]
; és un rel de CAPA (valor per defecte)
; hierarchyLevel=005
Per tant,
en el model emprat s'utilitzaran dos tipus de capes
diferents: capes que representen el tall cartogràfic i les
capes-full en si. Utilitzem el membre hierarchyLevelName per
a identificar amb un nom prefixat aquest primer tipus
especial de capa. Per tant, al REL del fitxer de polígons
que defineix el Tall cartogràfic (Tall_50k_IGNP.rel) hi
trobarem:
[METADADES]
; és un rel de CAPA (valor per defecte)
; hierarchyLevel=005
; de tipus 'Tall'
hierarchyLevelName=##Tall##
A les
metadades també cal definir les relacions d'aquest
conjunt de metadades amb altres conjunts de metadades. Però
com s'ha comentat abans, el tall no hereta mai
metadades, és genèric i usat per diferents multisèries i per
tant no es vincula directament amb cap multisèrie (no té cap
membre parentIdentifier1 al seu
REL).
a.3)
Esquema dels fitxers que defineixen el Tall
cartogràfic
b)
Metadades per un Full-Tall
Les
metadades referides a totes les capes-full del mateix
Full-Tall dins una multisèrie. Així, dues versions del MCSC
tenen el mateix tall (i les metadades de topònim
s'extreuen del mateix 'fitxer') i, en canvi, poden
tenir diferents metadades en referir-nos-hi com a unitat
Full-Tall dins una multisèrie (aquest no és el cas de
l'exemple mostrat a la taula).
Això ens fa
arribar a algunes metadades de cada full, que són les
definides als fitxers REL de cada full i tall concret per a
cada multisèrie. Es podrien suportar diferents talls i per
aquest motiu es descriuen aquí.
El Full-Tall
sí que hereta algunes metadades de la
multisèrie.
Les
metadades del Full de Sèries (Full-Tall) es corresponen també
al nivell jeràrquic de sèrie, per tant al REL de la sèrie hi
trobarem:
[METADADES]
; és un rel de SERIE
hierarchyLevel=006
Per als
Fulls de Sèries al REL es desarà hierarchyLevelName igual a
"Full":
[METADADES]
; és un rel de SERIE
hierarchyLevel=006
; de tipus 'Full'
hierarchyLevelName=##Full##
A les
metadades també cal definir les relacions d'aquest conjunt
de metadades amb altres conjunts de metadades. Com s'ha
comentat abans, usarem el parentIdentifier1 per
referir-nos a la multisèrie des de les metadades de les
capes-full, les sèries i els fulls de sèrie. En aquest
cas:
[METADADES]
; és un rel de SERIE
hierarchyLevel=006
; de tipus 'Full'
hierarchyLevelName=##Full##
; i per tant, el seu parentIdentifierFile1...
parentIdentifierFile1=..\ bt5mv20.rel
; ...és la Multisèrie
També fixem
que el FileIdentifier del Full de Sèries sigui un
fixat, a aquell que surt de la combinació del contingut dels
camps ID_FULL i ID_TALL corresponents (de la taula de
definició de sèrie: *_FullTall.dbf) separats per un
"_". Així per exemple, el REL del Full de
Sèries:
bt5mv20_FullTall.dbf
ID_FULL
|
ID_TALL
|
FITXER
|
241-156
|
MTN/IGN-5m
|
f241x156\bt5mv20mm0f241x156r02_01ca.rel
|
241-157
|
MTN/IGN-5m
|
f241x157\bt5mv20mm0f241x157r02_01ca.rel
|
241-158
|
MTN/IGN-5m
|
f241x158\bt5mv20mm0f241x158r02_01ca.rel
|
Tindrà el
FileIdentifier igual a 241-156_MTN/IGN-5m, és a dir,
que la secció de metadades completa és:
[METADADES]
FileIdentifier=241-156_MTN/IGN-5m
; és un rel de SERIE
hierarchyLevel=006
; de tipus 'Full'
hierarchyLevelName=##Full##
; i per tant, el seu parentIdentifierFile1...
parentIdentifierFile1=..\ bt5mv20.rel
; ...és la Multisèrie
Nota: la
mida màxima del FileIdentifier és 253, i com que el de
la sèrie es construeix a partir del contingut dels camps
ID_TEMA i ID_DATA més el caràcter "_", CAL que la
mida màxima d'aquests dos camps sumats sigui com a màxim
252.
Relació del Full de Sèries amb el Tall
cartogràfic corresponent
Els Fulls de
Sèrie fan referència directa al fitxer de polígons del Tall, i
no només a la multisèrie per tal que les aplicacions no hagin
de llegir les DBF relacionades amb la multisèrie cada
vegada.
D'altra
banda, és necessari indicar a quin fitxer de polígons i
polígon concret dins aquest fitxer (a partir de
l'identificador d'entitat) es corresponen les
metadades d'aquest Full-Tall. Aquesta informació es pot
extreure de la taula de talls, però des del REL de sèrie
hauria d'anar a buscar el REL de la multisèrie i després
explorar les relacions d'aquest fins a arribar a la taula
de Talls. És més útil que el Rel del Full de Sèries vinculi
directament contra el fitxer de polígons que defineix el tall,
i que indiqui també l'identificador d'entitat que
indica a quin polígon concret d'aquell fitxer de polígons
es refereix aquell Full de Sèries.
Aquesta
relació es fa a partir de la secció sobre informació
d'agregació. Així, per tant, les metadades del Full de
Sèries usen la secció aggregationInfo per a referir-se al
fitxer de polígons del Tall corresponent. Els elements que té
aquesta secció són:
-
aggregateDataSetName (opcional, tipus
CI_Citation): De moment no es fa servir. El dia que es
faci servir es posarà a una caixa independent
(CI_Citation) que ho tingui tot, i es refarà la pestanya
&lsquo"Identificació" del GeM+ perquè
tingui també aquesta estètica (totes les coses
juntes).
-
aggregateDataSetIdentifier (opcional,
tipus MD_Identifier): Igual que amb el
parentFileIdentifier, s'usa la clau pròpia
aggre...File, i a partir del fitxer REL ja es buscarà
l'identifier.
-
associationType (DS_AssociationTypeCode):
És l'únic element obligatori. En teoria aquest
element ha de formar part d'una llista de codis
predefinits, i pot prendre qualsevol d'aquests
valors.
-
initiative (opcional,
DS_InitiativeTypeCode): No és obligatori i també és una
llista de valors que s'oferiran als
usuaris.
Així,
l'usuari podrà definir que la capa forma part de tant
agregats com vulgui (com diu l'estàndard). En cas que es
vulgui relacionar el Full de Sèries amb el fitxer REL de la
capa de polígons que defineix el Tall cartogràfic serà
possible un d'aquests agregats per a descriure el Tall
Cartogràfic.
Això ho fem
a partir de dos filtres. En primer lloc l'agregat que
descriu el Tall Cartogràfic ha de tenir un valor determinat a
l'element associationType: ha de ser LargerWorkCitation.
En segon lloc, si el valor és el predefinit aleshores
s'activarà un check: "És REL de Tall".
Així, per una mateixa capa es pot definir més d'una capa
agregada amb associació de tipus LargerWorkCitation però només
una d'aquestes podrà tenir activat el check en
qüestió.
A part de
les claus de la secció [METADADES] comentades abans, que
descriuen el nivell jeràrquic i el tipus de sèrie del Full de
Sèries, aquest fitxer REL usarà, per a indicar el Tall
Cartogràfic relacionat:
[IDENTIFICATION:AGGREGATION_INFO1]
aggregateDatasetIdentifierFile=..\TallCarto\bt5mv20mm0Tall5m_01.pol
; de tipus partOfSeamlessDatabase
associationType=003
; dels diferents agregats amb tipus
'partOfSeamlessDatabase'
; aquest és el que defineix el fitxer de polígons amb el
Tall
EsRelDeTall=1
[IDENTIFICATION:AGGREGATION_INFO2]
aggregateDatasetIdentifierFile=...
; de tipus partOfSeamlessDatabase
associationType=003
; dels diferents agregats amb tipus
'partOfSeamlessDatabase'
; aquest NO defineix el fitxer de polígons amb el Tall
; EsRelDeTall=0 -> valor per defecte
En cap dels exemples anteriors
s'ha definit la initiative perquè pot prendre qualsevol
valor i, per tant, l'usuari ja decidirà el que consideri
convenient.
Aquesta informació, però, és
suficient per conèixer quin és el fitxer de polígons que
defineix el tall cartogràfic, però no es coneix quin dels
polígons del fitxer es correspon amb el Full que s'està
descrivint (en l'exemple el Full de Sèries
241-156_MTN/IGN-5m). Conèixer quin dels polígons del fitxer es
correspon amb el Full de Sèries és necessari per a poder
obtenir informació de la taula d'atributs del fitxer de
polígons (p.ex. el topònim del full) sense haver de llegir les
taules de la multisèrie (tal i com s'ha fet amb totes les
informacions del model).
Per a conèixer aquesta
informació s'ha definit una nova clau en aquesta secció
que es diu aggregateDataSetIdEntitat i que indica
l'Identificador d'entitat que identifica quin els
polígons del fitxer es correspon a aquest Full de Sèries.
Aquesta clau només es llegirà i escriurà si la
"informació d'agregació" és la que defineix el
Tall cartogràfic (és a dir si EsRelDeTall=1). Des del GeM+ es
veurà aquest identificador d'entitat però no es podrà
modificar des de la pestanya que mostri la "informació
d'agregació. Per tant, és necessari completar la secció
[IDENTIFICATION:AGGREGATION_INFO1] de l'exemple
anterior:
[IDENTIFICATION:AGGREGATION_INFO1]
aggregateDatasetIdentifierFile=..\TallCarto\bt5mv20mm0Tall5m_01.pol
; de tipus partOfSeamlessDatabase
associationType=003
; dels diferents agregats amb tipus
'partOfSeamlessDatabase'
; aquest és el que defineix el fitxer de polígons amb el
Tall
EsRelDeTall=1
aggregateDataSetIdEntitat=241-156
Esquema dels fitxers que
defineixen el Full de Sèries
2.4 Definició de la
capa-full
Cada capa pot formar part
d'una multisèrie o no. La vinculació amb el model és des
de la taula general de definició de la multisèrie, a partir
del camp FITXER (on indica el nom i path de cada una de
les capes gràfiques) i des de les metadades de cada capa, on
s'indica de quina multisèrie forma part (element
parentIdentifierFile1).
Les metadades de la capa es
corresponen també al nivell jeràrquic de capa, per tant al REL
de la capa hi trobarem:
[METADADES]
; és un rel de CAPA (valor per defecte)
; hierarchyLevel=005
Per a una capa-full (o per una
capa no relacionada amb cap sèrie) cartogràfic al REL es
desarà hierarchyLevelName igual a "CapaFull", que és
el valor per defecte:
[METADADES]
; és un rel de CAPA (valor per defecte)
; hierarchyLevel=005
; de tipus 'CapaFull' (valor per defecte)
; hierarchyLevelName=##CapaFull##
A les metadades també cal
definir les relacions d'aquest conjunt de metadades amb
altres conjunts de metadades. Com s'ha comentat abans,
usarem el parentIdentifier per referir-nos a la
multisèrie des de les metadades de les capes-full, les sèries
i els fulls de sèrie. En aquest cas: [METADADES]
; és un rel de CAPA (valor per defecte)
; hierarchyLevel=005
; de tipus 'CapaFull' (valor per defecte)
; hierarchyLevelName=##CapaFull##
; i el seu parentIdentifierFile1...
parentIdentifierFile1=..\bt5mv20.rel
; ...és la Multisèrie
De la mateixa manera que el
Full de sèries té una manera d'indicar directament el
fitxer del tall cartogràfic, s'acorda que les capes-full
fan referència a tots els seus pares, i no només a la
multisèrie (idèntics motius que en el cas
anterior).
Això es fa a través de
l'element aggregationInfo de les metadades. Els elements
que té són:
- aggregateDataSetName
(opcional, tipus CI_Citation): De moment no es fa servir. El
dia que es faci servir es posarà a una caixa independent
(CI_Citation) que ho tingui tot, i es refarà la pestanya
"Identificació" del GeM+ perquè tingui també
aquesta estètica (totes les coses juntes).
- aggregateDataSetIdentifier (opcional, tipus
MD_Identifier): igual que amb el parentFileIdentifier,
s'usa una clau pròpia aggre...File, i a partir del
fitxer REL ja es buscarà l'identifier.
- associationType
(DS_AssociationTypeCode): és l'únic element obligatori.
En teoria aquest element ha de formar part d'una llista
de codis predefinits, i pot prendre qualsevol d'aquests
valors.
- initiative (opcional,
DS_InitiativeTypeCode): no és obligatori i també és una
llista de valors que s'oferiran als usuaris.
Així, l'usuari podrà
definir que la capa forma part de tants agregats com vulgui
(com diu l'estàndard). En cas que la capa en qüestió formi
part d'una multisèrie serà possible escollir dos
d'aquests agregats per a descriure la Sèrie i el Full de
Sèries.
Això es fa a partir de dos
filtres. En primer lloc l'agregat que descriu la Sèrie i
el Full de Sèrie ha de tenir un valor determinat a
l'element associationType.
Sèrie: associationType ha de
ser partOfSeamlessDatabase
Full de sèries: associationType
ha de ser LargerWorkCitation
En segon lloc, si el valor és
un dels dos predefinits (i la capa forma part d'una
multisèrie) aleshores s'activaran uns checks de
l'estil: "És el Full de Sèries del qual la capa forma
part" o bé "És la Sèrie de la qual la capa forma
part". Així, per una mateixa capa es pot definir més
d'una capa agregada amb associació de tipus
partOfSeamlessDatabase però només una d'aquestes podrà
tenir activat el check en qüestió.
Així, per una capa que forma
part d'una multisèrie s'usarà, a més de la secció
[METADADES] tal i com es mostra a la pàgina
anterior:
[IDENTIFICATION:AGGREGATION_INFO1]
aggregateDatasetIdentifierFile=bt5mv20mm0f241x156r02_01ca.rel
; de tipus LargerWorkCitation
associacionType=002
; dels diferents agregats amb tipus
'LargerWorkCitation'
; aquest és el que defineix el Full de Sèries
EsRelDeSerie=1
[IDENTIFICATION:AGGREGATION_INFO2]
aggregateDatasetIdentifierFile=..\PalSimb\bt5mv20mm0AltimetriaCotes_01ca.rel
; de tipus partOfSeamlessDatabase
associacionType=003
; dels diferents agregats amb tipus
'partOfSeamlessDatabase'
; aquest és el que defineix la Sèrie
EsRelDeSerie=1
[IDENTIFICATION:AGGREGATION_INFO3]
aggregateDatasetIdentifierFile=...
; de tipus LargerWorkCitation
associacionType=002
; dels diferents agregats amb tipus
'LargerWorkCitation'
; aquest NO defineix el Full de Sèries
; EsRelDeSerie=0 (valor per defecte)
[IDENTIFICATION:AGGREGATION_INFO4]
aggregateDatasetIdentifierFile=...
; de tipus partOfSeamlessDatabase
associacionType=003
; dels diferents agregats amb tipus
'partOfSeamlessDatabase'
; aquest NO defineix la Sèrie
; EsRelDeSerie=0 (valor per defecte)
; i altres
agregats diferents
[IDE14:51 28/10/2013NTIFICATION:AGGREGATION_INFO5]
aggregateDatasetIdentifierFile=...
; qualsevol dels tipus no 'predefinits'
; de tipus crossReference
associacionType=001
En cap dels exemples anteriors
s'ha definit la initiative perquè pot prendre
qualsevol valor i, per tant, l'usuari ja decidirà el que
consideri convenient.
El Gestor Universal de Metadades Geoespacials, en entrar a la pestanya "Metadades |
Sèries" per a una Capa-Full que forma part de la
Multisèrie comprovarà que aquestes informacions definides al
REL de la Capa-Full siguin coherents amb el que informen les
taules DBF que descriuen la Multisèrie.
Esquema dels fitxers que
defineixen les Capes-Full