NOTAT Emne Til Eksempel på bruk av SOSI Ledning SOSI Ag7b Fra Erling Onstein Dato 3.september 2012, oppdatert 9.september 2012 Kopi til SOSI-sekretariatet/kartverket Hensikt med notatet Denne notatet er laget for å forklare hvordan SOSI Ledning-modellen som nå snart er klar fra SOSI Ag7b, kan brukes. SOSI Del 2 Generell objektkatalog SOSI Ledningsmodellen er en del av SOSI Del 2 Generell objektkatalog. Den generelle objektkatalogen i SOSI lages for at data fra ulike brukere og brukerbehov, skal passe sammen. SOSI Ledning-modellen inneholder generelle mekanismer som er felles for alle lednings-nettverk. Den inneholder også mest mulig fullstendige modeller for de ledningsnettverks-typene som er dekka. SOSI Del 3 produktspesifikasjoner En produktspesifikasjon brukes i SOSI-sammenheng som betegnelse på en spesifikasjon som forklarer/spesifiserer innholdet i datasett som er laget for et bestemt formål, en bestemt produkt-type. Ingen av produktene/datasettene som lages basert på SOSI Ledning, vil benytte alle mulighetene som er beskrevet i SOSI Lednings-modellen i den generelle objektkatalogen. Derfor må det lages produktspesifikasjoner for de enkelte bruksområdene (dvs produktene). I teksten under, er det tatt utgangspunkt i et svært forenklet produkt innen ledning; dokumentasjon av et vann-ledningsnett. Det er i eksempelet lagt hovedvekt på UMLdiagrammet. Applikasjons-skjemaet (som skal være dokumentert i UML), er en av 13 kapitler i en produktspesifikasjon. Oversiktsfigur som viser kapitlene i fullstendige produktspesifikasjoner, se Figur 1.
Figur 1 De ulike delene i en produktspesifikasjon, og hvordan de henger sammen med andre deler GML-data basert på produktspesifikasjon I eksempelet vil det også bli vist eksempel på deler av GML-skjemaet (XSD-fil) for produktspesifikasjonen, og et GML-datasett (GML-fil) for det vannledningsnettet som er vist på Figur 2, Eksempel-produkt: Vannledning-demo Eksempelet (se Figur 2) er basert på presentasjon Atle Vaaland, Powel, hadde for SOSI Ag7b i februar 2012. Den er satt sammen av to foiler. Undertegna har lagt inn et tilfeldig koordinat-rutenett for å kunne gi viktige punkt i eksempelt en koordinatstedfesting.
Figur 2 Vannledningsnett skisse Den delen av SOSI Ledning (generell objektkatalog) som er relevant for eksempelet over, er vist på Figur 3. Den viser de 6 objekttypene (FeatureTypes) som brukes: Vannledning Kulvert Kum Ledningsdeler VA_Abonnent VA_Ventil Kun disse 6 er relevante, og er dermed de eneste som vises i applikasjons-skjemaet i produktspesifikasjonen. Når en lager en produktspesifikasjon, skal en også gå gjennom egenskapene til de objekttypene som er relevante. De som i den generelle objektkatalogen er frivillige, kan enten utelates helt (dvs slettes fra modellen), gjøres påkrevde, eller forbli frivillige. I eksempel-modellen i Figur 3, er stedfestingen av ledninger (egenskapen beliggenhet::kurve) og koplinger (egenskapen posisjon: Punkt) gjort påkrevd. UML-diagrammet kan brukes for alle produkter som er tilsvarende, det inneholder kun informasjons-strukturen: kun objekttyper og kodelister.
Figur 3 UML-klassediagram for produkt "Vannledning-demo" UML-modellen kan (mer eller mindre) automatisk gjøres om til et GML-skjema (ei XSD-fil). Ei slik XSD-fil definerer strukturen for hvordan GML-datasett skal se ut. XSDfila er altså felles for alle produkt som baseres på produktspesifikasjonen. På figurene under, er det vist utsnitt av hvordan XSD-definisjonen av Vannledning ser ut. De ulike nivåene i UML-diagrammet er vist i hvert sitt utsnitt. Det er verdt å merke seg at XSD-filer først og fremst er laga for at datamaskiner skal kunne forstå strukturen. Det brukes svært mange pekere fram og tilbake. Dette er ikke lett for mennesker å følge alle disse pekerne. Figur 4 XSD utsnitt 1
Figur 5 XSD Utsnitt 2 Figur 6 XSD Utsnitt 3 Hele XSD-fila er for stor til å tas med i dette dokumentet, men vil bli tilgjengelig på base-camp-området til SOSI Ledning. GML-datasett for eksempelet Figuren under viser hva som er tatt med i GML-eksempelet. Hele GML-fila er tatt inn i vedlegg 1. Om Id-er i GML Hvert enkelt objekt bruker 3 ulike ID-er: Identifikasjon: Dette er den ID-en som er brukerstyrt, og som finnes i UML_modellen. Alle objekt skal ha sin egen ID. Denne Iden er derfor i modellen lagt som påkrevd attributt på objekttypen Nettverkskomponent. Attributten arves av alle objekttypene i datasettet, og fører til at alle objektene må ha hver sin unike ID. Identifikasjon er delt i to deler: en lokalid og en navnerom. Navnerommet sier hvilken myndighet som har tildelt ID-en, og som dermed eier objektet. LokalID er løpenummeret vedkommende myndighet har tildelt. Dette tilsvarer det kravet som INSPIRE setter til ID-er-. I eksempelet er det brukt navnerom = EO_VA, og lokalid er brukt fra 1 til 11. ID-ene i grønne sirkler i Figur 7 viser denne lokalid_en GML:ID: GML-spesifikasjonene krever at alle objekter skal ha egen ID. Dette kan være en systemgenerert id, utenfor brukerkontroll. Det er denne ID-en som brukes til referanser på kryss og tvers i GML-datasettet. I eksempelet er det rbutk ID-er i 2000-serien. Geometri-id-er: GML krever også at alle geometrier skal ha egne ID-er. Geometriene i eksempelet er gitt id-er i 5000-serien. Der samme objektet har flere geometrier (kummer med lokk), er det brukt a og b-nummer.
Om koordinat-system I GML kan hver enkelt geometri være i ulike koordinatsystem. Dette angis med koder i EPSG-systemet ( se http://www.epsg-registry.org/). I eksempelet er brukt EPSG::25832 på all geometri. Dette tilsvarer ETRS89/UTM32N 7 10 8 11 6 1 4 2 9 5 3 Figur 7 Eksempel-datasettet med påført ID-er EPSG-koder kan finnes ved å søke på web-siden gitt over. Søk på 25832 gir resultat som under. Figur 8 EPSG::25832 fra www.epsg-registry.org
Vedlegg 1 GML-fil Vannledning-demo Merknad: For å kunne vises i de to programpakkene som er brukt (se vedlegg 2 og 3), må øst-koordinaten komme før nord-koordinaten. Dette er i henhold til definisjonen av epsg:25832. Programpakkene krever også oppgitt høyde. Kan ikke se at dette er i samsvar med epsg:25832. Kunne kanskje vært styrt med å oppgi srsdimension i GMLfila, for eksempel slik: <gml:point gml:id="id5001" srsname="epsg::25832" srsdimension="2"> <gml:coordinates>250710,6735220</gml:coordinates> </gml:point> ------------------------------ <?xml version="1.0" encoding="utf-8"?> <gml:featurecollection gml:id="dummy1" xsi:schemalocation="http://www.statkart.no/sosi XSD/VA_Nett_EO_d.xsd" xmlns="http://skjema.statkart.no/sosi/" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:ns2="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <gml:boundedby><gml:envelope><gml:coordinates>250000,6735000 250800,6735500</gml:coordinates></gml:Envelope></gml:boundedBy> <gml:featuremembers> <Kum xmlns="http://www.statkart.no/sosi" gml:id="id2001"> <lokalid>1</lokalid> <posisjon><gml:point gml:id="id5001" srsname="epsg:25832"><gml:coordinates>250710,6735220,0</gml:coordinates></gml:point></posisjon> <senterlokk><gml:point gml:id="id5001a" srsname="epsg:25832"><gml:coordinates>250710,6735230,0</gml:coordinates></gml:point></senterlokk> <kumtype>inspeksjonskum</kumtype> <kumlokktype>kumlokk (sirkelforma)</kumlokktype> </Kum> <Kum xmlns="http://www.statkart.no/sosi" gml:id="id2002"> <lokalid>2</lokalid> <posisjon><gml:point gml:id="id5002" srsname="epsg:25832"><gml:coordinates>250200,6735080,0</gml:coordinates></gml:point></posisjon> <senterlokk><gml:point gml:id="id5002a" srsname="epsg:25832"><gml:coordinates>250200,6735070,0</gml:coordinates></gml:point></senterlokk> <kumtype>inspeksjonskum</kumtype>
<kumlokktype>kumlokk (sirkelforma)</kumlokktype> </Kum> <VA_Ventil xmlns="http://www.statkart.no/sosi" gml:id="id2003"> <lokalid>3</lokalid> <posisjon><gml:point gml:id="id5003" srsname="epsg:25832"><gml:coordinates>250710,6735220,0</gml:coordinates></gml:point></posisjon> <inngåri ns2:href="id2001"></inngåri> <ventiltype>stengeventil</ventiltype> </VA_Ventil> <VA_Ventil xmlns="http://www.statkart.no/sosi" gml:id="id2004"> <lokalid>4</lokalid> <posisjon><gml:point gml:id="id5004" srsname="epsg:25832"><gml:coordinates>250200,6735080,0</gml:coordinates></gml:point></posisjon> <inngåri ns2:href="id2002"></inngåri> <ventiltype>stengeventil</ventiltype> </VA_Ventil> <Kulvert xmlns="http://www.statkart.no/sosi" gml:id="id2005"> <lokalid>5</lokalid> <beliggenhet><gml:curve gml:id="id5005" srsname="epsg:25832"> <gml:segments><gml:linestringsegment ><gml:coordinates> 250310,6735210,0 250710,6735220,0</gml:coordinates></gml:LineStringSegment></gml:segments> </gml:curve> </beliggenhet> <leggeår> <Leggeår> <aldersreferanse>årstall er sikkert</aldersreferanse> <årstall>2001</årstall> </Leggeår> </leggeår> </Kulvert> <Vannledning xmlns="http://www.statkart.no/sosi" gml:id="id2006"> <lokalid>6</lokalid> <beliggenhet> <gml:linestring gml:id="id5006" srsname="epsg:25832"><gml:coordinates>250200,6735080,0 250310,6735210,0 250710,6735220,0 </gml:coordinates></gml:linestring> </beliggenhet>
<leggeår> <Leggeår> <aldersreferanse>årstall er sikkert</aldersreferanse> <årstall>2002</årstall> </Leggeår> </leggeår> <omsluttetav ns2:href="id2005"></omsluttetav> <frakoblng ns2:href="id2003"></frakoblng> <tilkobling ns2:href="id2004"></tilkobling> </Vannledning> <VA_Abonnent xmlns="http://www.statkart.no/sosi" gml:id="id2007"> <lokalid>7</lokalid> <posisjon><gml:point gml:id="id5007" srsname="epsg:25832"><gml:coordinates>250350,6735380,0</gml:coordinates></gml:point></posisjon> </VA_Abonnent> <Ledningsdeler xmlns="http://www.statkart.no/sosi" gml:id="id2009"> <lokalid>9</lokalid> <posisjon><gml:point gml:id="id5009" srsname="epsg:25832"><gml:coordinates>250495,6735215,0</gml:coordinates></gml:point></posisjon> <påledning ns2:href="id2006"></påledning> <delertype>anboring</delertype> </Ledningsdeler> <Vannledning xmlns="http://www.statkart.no/sosi" gml:id="id2008"> <lokalid>8</lokalid> <beliggenhet><gml:linestring gml:id="id5008" srsname="epsg:25832"><gml:coordinates>250495,6735215,0 250350,6735380,0</gml:coordinates></gml:LineString></beliggenhet> <leggeår> <Leggeår> <aldersreferanse>årstall er sikkert</aldersreferanse> <årstall>1995</årstall> </Leggeår> </leggeår> <frakoblng ns2:href="#id2009"></frakoblng> <tilkobling ns2:href="id2007"></tilkobling> </Vannledning> <VA_Abonnent xmlns="http://www.statkart.no/sosi" gml:id="id2010"> <lokalid>10</lokalid>
<posisjon><gml:point gml:id="id5010" srsname="epsg:25832"><gml:coordinates>250440,6735420,0</gml:coordinates></gml:point></posisjon> </VA_Abonnent> <Vannledning xmlns="http://www.statkart.no/sosi" gml:id="id2011"> <lokalid>11</lokalid> <beliggenhet><gml:linestring gml:id="id5011" srsname="epsg:25832"><gml:coordinates>250495,6735215,0 250440,6735420,0</gml:coordinates></gml:LineString></beliggenhet> <leggeår> <Leggeår> <aldersreferanse>årstall er sikkert</aldersreferanse> <årstall>1995</årstall> </Leggeår> </leggeår> <frakoblng ns2:href="id2009"></frakoblng> <tilkobling ns2:href="id2010"></tilkobling> </Vannledning> </gml:featuremembers> </gml:featurecollection>
Vedlegg 2 Skjermbilde som viser eksempelet vist i Gaia 3.4.2 Gaia er OpenSource-program. Mer info, inkl nedlastingsmulighet finnes på http://www.thecarbonproject.com/gaia.php Spesielt imponerende er at Gaia klarer å tegne begge geometriene som er lagt til på de to kummene, både posisjon og senterlokk.
Vedlegg 3. Skjermbilde som viser eksempelet vist i QuantumGIS 1.8.0 QuantumGIS er et OpenSource-program. Mer info, inkl nedlasting av softvare på http://www.qgis.org/