gml kao podloga geo-prostornoj interoperabilnosti · geografska informacija nije ograničena kao...

106
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 2063 GML kao podloga geo-prostornoj interoperabilnosti Martin Žagar Zagreb, lipanj 2004.

Upload: others

Post on 07-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

DIPLOMSKI RAD br. 2063

GML kao podloga geo-prostornoj interoperabilnosti

Martin Žagar

Zagreb, lipanj 2004.

Page 2: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

2

Sadržaj

0. Uvod 6

1. Upotreba GML-a za opisivanje geo-prostornih podataka 7

1.1. Pozadina i razvoj GML-a 7

1.2. Svojstva GML-a 9

1.2.1. Jednostavna svojstva 9

1.2.2. Geometrijska svojstva 10

1.3. Osnovne GML Sheme 10

1.3.1. Svojstvena shema 11

1.3.2. Geometrijska shema 11

1.3.3. XLink Shema 11

1.4. Kodiranje geografskih Informacija pomoću GML-a 11

1.5. GML aplikacijske sheme 12

1.5.1. Zaglavlje 12

1.5.2. Korijenski element 13

1.5.3. Dijeljene definicije 14

1.5.4. Definicije svojstava 15

1.5.5. Ograničenja na vrijednostima svojstava 16

1.6. Struktura GML dokumenata 16

1.7. Provjera ispravnosti GML dokumenata 18

1.8. Zaključak 18

2. Metode vizualizacije GML-a 19

2.1. ArcExplorer 20

3. Vizualizacija GML podataka pomoću SVG-a 23

3.1. Vizualizacija geografskih podataka 23

3.2. Nastanak i razvoj SVG-a 23

3.3. Alati za vizualizaciju SVG-a 25

3.4. Prikazivanje svojstava u SVG-u 25

3.5. Vidljivo područje - Viewport i Viewbox 26

3.6. Koordinatni sustavi i transformacije 26

3.7. Osnovni geometrijski elementi SVG-a 27

3.8. Tekst u SVG-u 32

3.9. Stiliziranje grafike 34

Page 3: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

3

3.10. Grupiranje elemenata u SVG-u 38

3.11. Transformacije koordinata 38

3.12. Ispunjavanje površina 39

3.13. Naglašavanje linija 41

3.14. Interakcija u SVG-u 42

4.Upotreba XSLT-a u vizualizaciji GML podataka 48

4.1. XSL-FO i XPath 49

4.2. Stabla i čvorovi 49

4.3. XSLT struktura i elementi 50

4.4. Predložak 51

4.5. Selektiranje čvorova 52

4.6. Imenovani predlošci 52

4.7. Sadržaj izlaza 53

4.8. Izlazne metode 54

4.9. Umetanje lista pravila 54

4.10. Stvaranje XSLT liste pravila 55

4.11. XSLT Procesori 58

4.12. Zaključak 59

5.0. Primjer vizualizacije GML-a 60

5.1. XMLNotepad 60

5.2. Msxsl 62

5.3. Rezultat transformacije prikazan u SVG obliku i vizualiziran

pomoću MS IE 63

6. Zaključak 68

7. Literatura 69

8. Sažetak 70

9. Abstract 71

10. Zahvala 72

11. Životopis 73

Dodatak A: gmlFeature.dtd 74

Dodatak B: gmlGeometry.dtd 76

Dodatak C: mreza.gml 80

Dodatak D: transf.xsl 95

Dodatak E: SVG source dobiven transformacijom dokumenta mreza.gml 103

Page 4: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

4

Popis oznaka i kratica OpenGIS Consortium (OGC)

Geography Markup Language (GML)

Extensible Markup Language (XML)

Document Type Definition (DTD)

Resource Description Framework (RDF)

Geografski Informacijski Sustav (GIS)

Computer Aided Design (CAD)

Scalable Vector Graphics (SVG)

Graphics Interchange Format (GIF)

Joint Photographic Experts Group (JPEG)

Portable Network Graphics (PNG)

World Wide Web Consortium (W3C)

XML Stylesheet Language Transformation (XSLT)

Document Object Model (DOM)

Cascading Style Sheet (CSS)

XSL Formatting Objects (XSL-FO)

XML Path Language (Xpath)

Page 5: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

5

Popis slika i tablica Slika 1. Vizualizacija GML-a pomoću SVG-a 6

Slika 2. Izbornik interoperability 20

Slika 3. Učitavanje GML dokumenta 20

Slika 4. Primjer identificiranja za grad Beijing (Peking) 21

Slika 5. Mjerenje udaljenosti pomoću izbornika Measure 22

Slika 6. Definiranje transparentnosti u SVG-u 25

Slika 7. Uz definiciju atributa C elementa <path> 28

Slika 8. Primjer korištenja atributa C u elementu <path> 28

Slika 9. Primjer upotrebe ravnih i zakrivljenih linija 29

Slika 10. Primjer osnovnih geometrijskih elemenata 31

Slika 11. Različiti tekstualni elementi 33

Slika 12. Selekcija klasa 37

Slika 13. Pravila ispunjavanja 41

Slika 14. Značajke naglašavanja obrisa 42

Slika 15. Interaktivnost SVG dokumenta (1) 43

Slika 16. Interaktivnost SVG dokumenta (2) 43

Slika 17. XML Notepad 61

Slika 18. Greška koju javlja XMLNotepad ukoliko izvorni kod nije valjan 61

Slika 19. Msxsl komandni prozor 62

Slika 20. Izlazna datoteka proba31.svg 63

Slika 21. Prikazivanje koordinata 64

Slika 22. Ispisivanje atributa i značajki elementa trafo-stanica 65

Slika 23. Ispisivanje atributa i značajki elementa vod 67

Slika 24. Selektiranje teksta 68

Tablica 1. Osnovne geometrijske značajke u GML 2.0. 10

Tablica 2. Transformacije u SVG-u 39

Tablica 3. Funkcije, metode i varijable JavaScript-a 45

Page 6: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

6

0. Uvod GML (eng. Geography Markup Language) je oblikovan da podrži interoperabilnost i

to omogućava kroz uporabu osnovnih geometrijskih oznaka - tagova (svi sustavi koji

podržavaju GML koriste iste geometrijske tagove), zajedničkim podatkovnim

modelom (svojstvima) i mehanizmom za kreiranje i dijeljenje aplikacijskih shema.

Kratki uvod u GML se nalazi u prvom poglavlju. Međutim, GML datoteke ne

sadržavaju informacije o stilu i načinu prikazivanja. To se može riješiti na više načina,

od kojih je za ovaj diplomski rad izabrano rješenje vizualizacije pomoću SVG-a (eng.

Scalable Vector Graphics) (slika 1). Opis SVG standarda se nalazi u trećem

poglavlju. Za prikaz je potrebno format GML transformirati u format SVG.

Transformacija se obavlja definiranjem pripadne liste pravila, odnosno pripadnog

XSLT dokumenta. Postupci stvaranja XSLT dokumenta su opisani u četvrtom

poglavlju. U petom poglavlju je dan primjer prikaza razdjelne mreže u GML formatu.

Slika 1. Vizualizacija GML-a pomoću SVG-a

Page 7: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

7

1. Upotreba GML-a za opisivanje geo-prostornih podataka

1.1. Pozadina i razvoj GML-a

Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena

mreža. Ona je dijeljena u heterogenim okolinama koje služe za prikaz geografske

stvarnosti u računalu. U većini slučajeva su geografski podaci skupljani od više

određenih organizacija u različite svrhe i zbog toga su podaci mogli biti u drugačijim

modelima. Aplikacije koje koriste različite zbirke podataka (npr. za zaštitu okoliša,

konstrukciju cesta) moraju međudjelovati sa drugim sustavima, ne samo na razini

podataka, nego također i na aplikacijskoj razini. To uključuje podatke podijeljene

između sustava, kao i podatke koji su strukturirani na način da imaju značenje u

odgovarajućoj paradigmi.

Uvođenje XML-a je omogućilo lagano stvaranje specijaliziranih jezika i kao rezultat

su nastali neki geografski orijentirani jezici koji su trebali ispunjavati gore navedene

zahtjeve, ali niti jedan se nije nametnuo kao prihvatljiv standard za geo-informacijsko

područje. Napokon, OpenGIS Consortium (OGC) je predložio standard nazvan

Geography Markup Language (GML), za prezentaciju geografskih podataka,

temeljen na XML-u. Standard specificira strukturu za kodiranje podatka, način

povezivanja podataka, te definira prijenos i spremanje podatka u okolini Interneta,

uključujući i prostorne i neprostorne značajke pojedinih svojstava.

GML 1.0 je definiran od OGC u svibnju 2000. g. i zasniva se na specifikaciji XML 1.0.

Sastoji od tri GML profila, koji nude različite razine fleksibilnosti u strukturiranju

podataka. Za to se koriste Document Type Definition (DTD) i Resource Description

Framework (RDF).

Page 8: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

8

Profil 1 je za one koji žele upotrijebiti rješenja koja se temelje na čistom DTD-u i ne

žele razvijati poseban DTD specifičan za dotičnu aplikaciju. Ovaj profil zahtijeva

upotrebu GML Feature i GML Geometry DTD-ova.

Profil 2 je za one koji žele upotrijebiti rješenja koja se temelje na čistom DTD-u, ali su

spremni razviti vlastiti, aplikacijski specifičan, DTD. Ovaj profil zahtijeva od korisnika

da stvori aplikacijski specifični GML Feature DTD koji koristi ranije definiran GML

Geometry DTD.

Profil 3 je za one koji su spremni na korištenje RDF Sheme. Korisnici ovog profila

tipično će zahtijevati veću kontrolu nad geoprostornim podacima (tj. oni moraju moći

dati ime određenom tipu prema stvarnoj shemi definicije). Ovaj profil zahtijeva od

korisnika da stvori specifičnu RDF Shemu definicija koja koristi GML RDF Shemu

definicija.

GML 2.0 je definiran i izdan u ožujku 2001., također od strane OGC-a, kao

nasljednik standarda GML 1.0. GML 2.0 pruža jedinstveno kodiranje metoda (XML

Shema) i jedinstven pristup stvaranju GML shema. GML 2.0 izbjegava nespretnu

kombinaciju DTD-a i RDF-a u GML 1.0 i podržava nasljeđivanje tipova, distribuciju

shema integracija i imena. Osim toga, pruža širok skup unaprijed definiranih

primitivnih tipova podataka (string, boolean, real, month) i dopušta stvaranje

ugrađenih i korisnički definiranih vrsta podataka. Upotreba XML Shema u GML pruža

mehanizam za vrednovanje i verifikaciju definiran u specifikaciji XML 1.0 .

Specifikacija GML 2.0 definira tri osnovne sheme; geometrijsku shemu

(geometry.xsd), svojstvenu shemu (feature.xsd), i XLink shemu (xlinks.xsd) za

kodiranje geoprostornih informacija. Ove tri osnovne meta-sheme pružaju skup

temeljnih klasa iz kojih se dalje konstruiraju aplikacijske sheme. Početkom 2003. je

definiran standard GML 3.0 čija su dodatna svojstva, u odnosu na GML 2.0,

vremenske značajke, jedinice mjere i proširenje pojedinih geometrijskih značajki

unaprijed definiranih GML shemama. Trenutno je aktualna verzija GML 3.1.

objavljena u travnju 2004. koja donosi neka pojednostavljenja u korištenju shema.

Page 9: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

9

1.2. Svojstva GML-a

GML modelira svijet zasnivajući se na običnom geografskom modelu pa se

geografsko svojstvo definira kao apstrakcija nekog prirodnog obilježja i mora biti

povezano s nekim mjestom na Zemlji.

Zato se geografska stvarnost može digitalno predstaviti pomoću svojstva feature.

Stanje obilježja je određeno pomoću skupa značajki, gdje svaka značajka ima ime,

tip i vrijednost. Geografska svojstva su svojstva čije značajke imaju geometrijske

vrijednosti. Zbirka svojstava je skup svojstava koja se može opisati kao jedno

svojstvo. Definicija tipova svojstava ovisi o domeni primjene i broju značajki svojstva

koja se mogu odrediti tipom svojstva.

1.2.1. Jednostavna svojstva

Simple features (jednostavna svojstva) se koriste u GML specifikacijama 1.0 i 2.0. To

su svojstva koja su prikazana dvodimenzionalnom geometrijom. Iako GML 2.0

dopušta 3-D koordinatne sustave, ne pruža izravnu potporu za trodimenzionalnu

geometriju. Tek je GML 3.0 pružio potpunu potporu 3-D koordinatnim sustavima.

Model jednostavnog svojstva je pojednostavljenje općeg modela opisanog OGC

specifikacijom. Jedno pojednostavljenje je pretpostavka da svojstva imaju ili

jednostavne značajke ili geometrijske značajke, a drugo je da se pretpostavlja 2-

dimenzionalan SRS (Spatial Reference Sistem – referentni koordinatni sustav) i

upotreba linearne interpolacije između koordinata.

Nadalje, Simple Feature model pruža geometrijske elemente koji odgovaraju

geometrijskim klasama Point, LineString, LinearRing, Polygon, MultiPoint,

MultiLineString, MultiPolygon, MultiGeometry i Box. Jednostavna svojstva su ona

koja se mogu opisati osnovnim tipovima podataka kao na primjer string, integer, real,

Boolean itd.

Page 10: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

10

1.2.2. Geometrijska svojstva

OGC model jednostavnih svojstava definira skup osnovnih geometrijskih elemenata

(gore spomenutih), koja imaju neka svoja svojstva. Tip svojstva može imati više

geometrijskih značajki koje opisuju različite geoprostorne osobine. GML imenuje

geometrijske značajke u trima razinama:

• formalno ime obilježava geometrijske značajke kao vrijednosti temeljene na

tipu geometrije

• opisno ime je skup standardiziranih sinonima za formalna imena koja

olakšavaju upotrebu skupa uvjeta i

• aplikacijski specifična imena koja odabire korisnik i definirana su u pripadnim

aplikacijskim shemama temeljenima na GML-u.

Formalna i opisna imena za osnovne geometrijske značajke su navedena u tablici 1.

Formalno ime Opisno ime Geometrijski tip

boundedBy - Box

pointProperty location Position, CenterOf Point

lineStringProperty lineStringProperty, edgeOf LineString

polygonProperty extentOf, coverage Polygon

geometryProperty - geometryProperty

multiPointProperty multiLocation, multiPosition,

multiCenterOf

MultiPoint

multiLineStringProperty multiCenterLineOf, multiEdgeOf MultiLineString

multiPolygonProperty multiExtentOf, multiCoverage MultiPolygon

multiGeometryProperty - MultiGeometry

Tablica 1. Osnovne geometrijske značajke u GML 2.0. (Izvor: GML 2.0 specifikacija)

1.3. Osnovne GML Sheme

GML 2.0 definira tri osnovne shema za kodiranje prostornih informacija. Ove sheme

pružaju komponente za izgrađivanje GML aplikacijskih shema. Drugim riječima,

Page 11: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

11

osnovne GML sheme pružaju meta-shemu, odnosno skup temeljnih klasa, od kojih

se može konstruirati aplikacijska shema.

1.3.1. Svojstvena shema

Svojstvena shema definira osnovni model svojstava i njihovih značajki koja opisuju i

apstraktne i konkretne elemente i tipove. Definirane su i zbirke svojstava (kao tip

svojstva), a uključuje i često korištene značajke svojstava, kao na primjer fid (feature

identifier), ime i opis. Element <include> u svojstvenoj shemi uključuje definicije i

deklaracije koje su sadržane u geometrijskoj shemi za upotrebu u definiranju tipova

svojstava.

1.3.2. Geometrijska shema

Geometrijska shema uključuje detaljnu geometriju komponente, odnosno definicije

tipova za apstraktne geometrijske elemente, konkretne točke, linije i poligone, kao i

složene definicije tipova. Element <import> u geometrijskoj shemi uvodi definicije i

deklaracije koje su sadržane u XLink shemi.

1.3.3. XLink Shema

XLink shema dopušta umetanje elemenata u XML dokument pomoću kojih se

stvaraju i opisuju veze između resursa. Koristi XML sintaksu u stvaranju strukture

povezivanja sličnog jednostavnim hiperlinkovima u HTML-u.

1.4. Kodiranje geografskih informacija pomoću GML-a

Korištenjem triju osnovnih shema XML-a , može se kodirati raznovrsne geoprostorne

informacije kao što su svojstva s ili bez geometrijskih značajki, geometrija, zbirka

svojstava i načini na koji su svojstva povezana. Geografsko obilježje u GML-u je, kao

Page 12: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

12

što je već spomenuto, lista jednostavnih i geometrijskih značajki. Svojstva su

određena imenima elementa, a definicija klase svojstava imenuje značajke koje

određeni tip svojstva mora imati. Definicije tipova nasljeđuju odgovarajuće ime klase

na koji dodaju sufiks ”Type”, npr. svojstvo Road se kodira kao

<element name= "Road" type= "RoadType "/>.

1.5. GML aplikacijske sheme Tri osnovne GML sheme (svojstvena shema, geometrijska shema i XLink shema)

same po sebi ne pružaju odgovarajuću shemu za složene podatkovne instance jer

ograničavaju podatke, već definiraju osnovne tipove i strukture koje mogu biti

korištene u aplikacijskoj shemi. GML aplikacijska shema opisuje stvarne tipove

obilježja i tipove značajki koje su od interesa za određenu domenu, koristeći

komponente definirane u standardnim shemama. Bilo koja GML aplikacijska shema

mora biti pisana u skladu sa GML 2.0 specifikacijom i ne smije mijenjati ime,

definiciju, ili tip podataka obaveznih GML elemenata. Međutim, definicije apstraktnih

tipova mogu se slobodno proširivati ili ograničavati. Kao i bilo koji drugi XML

dokument, GML aplikacijska shema također se sastoji od zaglavlja i tijela.

1.5.1. Zaglavlje Zaglavlje počinje s XML-om deklaracijom koja se sastoji od version i encoding

atributa. Element <schema> mora sadržavati imenovane prostore koji su korišteni u

definiranju sheme. Atribut targetNamespace definira korisnički imenovan prostor i

njegova vrijednost je jedinstven identifikator za GML prostor. Za primjer:

<?xml version="1.0" encoding="iso-8859-1"?>

<schema targetNamespace="http://www.itc.nl/gfm"

xmlns:gfm="http://www.itc.nl/gfm"

xmlns:gml="http://www.opengis.net/gml"

xmlns:xlink=http://www.w3.org/1999/xlink

Page 13: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

13

xmlns=http://www.w3.org/2000/10/XMLSchema

elementFormDefault="qualified" version="1.0">

<annotation>

<appinfo>gfm.xsd v1.0 </appinfo>

<documentation xsl:lang="en">

GML aplication schema

</documentation>

</annotation>

<import namespace=http://www.opengis.net/gml schemaLocation="feature.xsd"/>

U elementu <annotation> se nalaze informacije o aplikacijskoj shemi, dok se

elementom <import> uključuje druge definirane GML sheme koje su korištene u

ovoj shemi. U ovom slučaju je uključena GML svojstvena shema (feature.xsd) koja

uključuje i geometrijske i Xlink sheme.

1.5.2. Korijenski element Prvi element u aplikacijskoj shemi definira korijenski element. U definiciji sheme

korijenski element ima svoju zamjensku grupu i temelji se na

gml:AbstractFeatureCollectionType. Na primjer, ako se topografska

informacija sela modelira u GML-u, može se sastojati od ceste, rijeke, terena, zgrade

i klasa koja opisuju svojstva granica. Zbirka ovih klasa svojstava je korijenski element

i ako se on nazove kao VillageTopoModel, može biti određen u shemi kako

slijedi.

<element name="VillageTopoModel" type="gfm:VillageTopoModelType"

substitutionGroup="gml:_FeatureCollection/>

<complexType name="VillageTopoModelType">

<complexContent>

<extension base="gml:AbstractFeatureCollectionType">

<sequence>

<element name="dateCreated" type="date"/>

</sequence>

</extension>

</complexContent>

</complexType>

Page 14: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

14

1.5.3. Dijeljene definicije

Postoje neke značajke koje su dijeljene od više objekata u definiciji sheme. Na

primjer, vremenske i metadata informacije su vezane za svako svojstvo u modelu. Da

bi se naslijedile te značajke u svim svojstvima definira se complexType koji se

odnosi na definicije grupa i svi tipovi svojstava moraju naslijediti taj tip.

<group name="TemporalData">

<sequence>

<element name="begindate" type="string" />

<element name="enddate" type="string" />

</sequence>

</group>

<group name="MetaData">

<sequence>

<element name="source_type" type="string"/>

<element name="source_description" type="string"/>

<element name="accuracy" type="string"/>

<element name="actuality" type="string"/>

<element name="code_num" type="integer"/>

</sequence>

</group>

<complexType name="TopoDataType" abstract="true">

<complexContent>

<extension base="gml:AbstractFeatureType">

<sequence>

<element name="code_id" type="integer"/>

<group ref="gfm:TemporalData"/>

<group ref="gfm:MetaData"/>

</sequence>

</extension>

</complexContent>

</complexType>

Page 15: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

15

1.5.4. Definicije svojstava

Svojstva su objekti koji su vidljivi na karti. U primjeru ispod, zgrada je jedan tip

svojstva i zbirka takvih građevinskih svojstava je predstavljena tipom

BuildingLayer. Svi takvi slojevi mogu biti određeni u TopoDataLayerType koji

nasljeđuje gml:AbstractFeatureCollectionType.

<complexType name="TopoDataLayerType">

<complexContent>

<extension base="gml:AbstractFeatureCollectionType"/>

</complexContent>

</complexType>

<element name="BuildingLayer" type="TopoDataLayerType"

substitutionGroup="gml:_FeatureCollection"/>

<element name="Building" type="gfm:BuildingType"

substitutionGroup="gml:_Feature"/>

<complexType name="BuildingType" >

<complexContent>

<extention base="gfm:TopoDataType>

<sequence>

<element name="type" type="string"/>

<element name="function" type="string"/>

<element name="height_category" type="string"/>

<element name="height" type="string"/>

<element name="status" type="string"/>

<element ref="gml:geometryProperty"/>

<element name="heightlevel" type="integer" minOccurs="0" />

<element name="name" type="string" minOccurs="0" />

</sequence>

</extension>

</complexContent>

</complexType>

Svi drugi slojevi svojstava mogu biti definirani na sličan način.

Page 16: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

16

1.5.5. Ograničenja na vrijednostima svojstava

Značajka svojstva može imati unaprijed definiran broj dopuštenih vrijednosti. Kada je

takva značajka tipa string, moguće je nabrajanje tih svojstava.

<element name="function" type="functionType"/>

<simpleType name="functionType">

<restriction base="string">

<enumeration value="Municipality"/>

<enumeration value="Police office"/>

<enumeration value="Post office"/>

<enumeration value="Church"/>

<enumeration value="Hospital"/>

<enumeration value="Station"/>

<enumeration value="Storage tank"/>

<enumeration value="Other"/>

</restriction>

</simpleType>

1.6. Struktura GML dokumenata

Bilo koji GML dokument počinje sa standardnim XML zaglavljem u kojem se

definiraju encoding i version atributi, te nakon toga dolazi korijenski element (kao i

kod aplikacijske sheme). Element <gml:boundedBy> sadržava vanjsku granicu svih

svojstava u GML dokumentu. Atribut SrsName unutar <Box> elementa govori o

koordinatnom sustavu u kojem su koordinate opisane. Nakon određivanja granica

cijele zbirke svojstava, svaka zbirka je opisana zasebno sa svojim granicama. Primjer

tako fragmentiranog GML dokumenta se nalazi ispod.

<gml:boundedBy>

<gml:Box srsName="EPSG:7408">

<gml:coordinates>

190000,446000 193000,449000

</gml:coordinates>

Page 17: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

17

</gml:Box>

</gml:boundedBy>

<gfm:featureMember>

<gfm:BuildingLayer>

<gml:boundedBy>

<gml:Box srsName="EPSG:7408">

<gml:coordinates>

190000,446000 193000,449000

</gml:coordinates>

</gml:Box>

</gml:boundedBy>

<gfm:featureMember>

<gfm:Building fid="GFM.Bld260">

<gfm:code_id>Bld260</gfm:code_id>

<gfm:begindate>10 Janu 2003</gfm:begindate>

<gfm:enddate/>

<gfm:code_num>8885</gfm:code_num>

<gfm:type>Tower</gfm:type>

<gfm:function>Municipality</gfm:function>

<gfm:height_category>3</gfm:height_category>

<gfm:height>40</gfm:height>

<gfm:status>Occupied</gfm:status>

<gml:geometryProperty>

<gml:Polygon srsName="ESPG:7408">

<gml:outerBoundaryIs>

<gml:LinearRing>

<gml:coordinates>

191100,447200 191150,447200 191150,

447225 191000,447225 191100,447200

</gml:coordinates>

</gml:LinearRing>

</gml:outerBoundaryIs>

</gml:Polygon>

</gml:geometryProperty>

</gfm:Building>

</gfm:featureMember>

</gfm:featureMember>

Page 18: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

18

1.7. Provjera ispravnosti GML dokumenata Ispravnost GML dokumenta mora biti provjerena kroz validaciju (vrednovanje). Prvo

dokument mora biti dobro formiran (well-formed) što znači da je pisan u skladu sa

XML sintaksom. Slijedeći korak je validacija u skladu sa definicijom sheme. To je

moguće ostvariti pomoću programa XMLSpy, XMLNotepad, TurboXML i sl.

1.8. Zaključak

GML je standard temeljen na XML-u i služi za opisivanje geografskih podataka. GML

modelira geografske podatke kao svojstva i zbirke svojstava koje su definirane u

aplikacijskim shemama. Aplikacijske sheme nasljeđuju temeljne GML sheme. GML

dokument temeljen na takvoj shemi može biti obrađen bilo kojim XML parserom.

GML ne pruža nikakve informacije o prikazu i zato se sadržaj podataka mora

pretvoriti u drugi grafički format.

Page 19: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

19

2. Metode vizualizacije GML-a

Prema principima XML tehnologije i razvojnim ciljevima, GML ne bi trebao sadržavati

prezentacijske podatke. Kao posljedica toga, GML datoteke ne sadržavaju

informacije o stilu i načinu prikazivanja. S druge strane, postoje načini kako dodati

stilove prema kojima se GML prikazuje. Jedna od metoda je, kada se GML podaci

importiraju u GIS ili drugu CAD aplikaciju, stilovi mogu biti dodani kroz tu programsku

podršku. Druga metoda je razvoj specifičnog GML-viewera (pokazivača) koji zna

čitati GML podatke i generirati kartografski pogled. Takav program treba imati

interaktivni modul da bi mogao mijenjati grafičke značajke i svojstva. Također je

moguće napraviti odvojen dokument koji sadržava informacije potrebne za prikaz,

koji će zajedno sa GML podacima takav viewer znati čitati i generirati grafički prikaz.

Takvi specijalizirani pokazivači još nisu jako razvijeni i raspoloživi. Za sada postoji

samo jedan GML-viewer zadovoljavajućih mogućnosti, a da je besplatan. Ime mu je

ArcExplorer i proizvod je tvrtke «ESRI». Vjerojatno je i proizvod tvrtke «InterGraph»

također visoko razvijen (jer je to poznata tvrtka na polju geografskih informacijskih

sustava), ali njihov proizvod ima cijenu od oko 800 $ pa je dosta nepristupačan.

ArcExploreru je posvećeno sljedeće poglavlje.

Postoji još jedna mogućnost prikaza geografskih podataka, a to je transformacija

GML-a u drugi XML grafički format - SVG. Glavna prednost ovakvog pristupa je u

tome što je SVGViewer (proizvod tvrtke «Adobe») standardno ugrađen u MS IE 6.0

na više, pa nema potrebe za instalacijom dodatnih programa (ArcExplorer nakon što

ga se instalira zahtjeva točno određen JRE 1.4.0. i zahtjeva brisanje određenih

programa što može stvarati probleme, tako da nije baš najpodesniji u smislu

računalne otvorenosti). Način vizualizacije podataka pomoću SVGViewera bit će

prikazan u poglavlju 3.

Page 20: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

20

2.1. ArcExplorer

Slika 2. Izbornik interoperability

ArcExplorer-Java Edition je program za vizualizaciju geografskih podatka. Osim

vizualizacije prostornih podataka i njihovih svojstava, moguće je nad njima obavljati i

upite, razne analize i prilagođavati kartografski prikaz pojedinom korisniku.

Slika 3. Učitavanje GML dokumenta

Pomoću izbornika interoperability prikazanog na slici 2. moguće je učitati GML

dokument zajedno sa pripadajućom aplikacijskom shemom (slika 3). Također je

moguće spremiti izmjene ili kartografski prikaz nekog drugog formata u GML.

Moguće je podesiti koje slojeve će program spremiti, koje labele će ostati vezane i

spremiti selektirane podatke koje smo dobili upitima. Upitima postižemo selekciju

Page 21: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

21

točno određenih podataka i to je vrlo važno svojstvo jer je moguće u samom izrazu

za selekciju uključiti različite atribute, operatore i izračune.

Slika 4. Primjer identificiranja za grad Beijing (Peking)

U izborniku Tools je moguće povećati ili udaljiti mapu, selektirati samo jedan njezin

dio, identificirati pojedina svojstva pomoću naredbe identify (kao što je prikazano na

slici 4., klikom miša iznad kružića koji predstavlja Peking dobili smo njegove

značajke). Još jedno zgodno svojstvo je mjerenje udaljenosti između pojedinih

svojstava (objekata) na karti. To je prikazano na slici 5. na primjeru udaljenosti

ukupnog puta od New Yorka preko Kansas Citya i San Antonia do Houstona. Oznaka

Segment koja se nalazi u gornjem lijevo uglu karte daje duljinu zadnjeg segmenta, a

Total ukupnu označenu duljinu.

Page 22: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

22

Slika 5. Mjerenje udaljenosti pomoću izbornika Measure

U izborniku Layer možemo podesiti izgled prikaza (boje, veličina slova i oznaka) kao i

informacije koje će se pojaviti na mapi (imena gradova, rijeka). Moguće je

pridjeljivanje oznaka u odnosu na neka svojstva (na primjer različite boje za

označavanje gradova s obzirom na broj stanovnika i sl.). Aktiviranje pojedinih slojeva

moguće je korištenjem izbornika koji se nalazi na lijevoj strani (na slici 5. je uokviren

crveno).

Još jedna pogodnost ArcExplorera je opcija Geography Network kojom je moguće

pristupiti globalnoj mreži geografskih podataka putem Interneta i korištenje podataka

od korisnika diljem svijeta. U tu svrhu postoje i opcije WMS (Web Map Server) i WFS

(Web Feature Server).

Više o ArcExploreru na www.esri.com/arcexplorer.

Page 23: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

23

3. Vizualizacija GML podataka pomoću SVG-a

SVG (eng. Scalable Vector Graphics) je XML aplikacija za dvodimenzionalnu grafiku.

Ima mnoge prednosti pred drugim grafičkim formatima. Ovdje će biti opisane

prednosti i mogućnosti SVG-a, kao i prikladnost za gledanje geografskih podataka.

3.1. Vizualizacija geografskih podataka

Geografski podaci daju informaciju o prirodnim elementima na Zemljinoj površina kao

što su ceste, rijeke, zgrade, tlo, teren, granice i sl. Kada govorimo o vizualizaciji tih

podataka, to znači da se svi ti elementi moraju grafički predstaviti. Pri tome se koriste

osnovni grafički elementi, točke, linije i površine. Točke služe za definiranje položaja i

najosnovniji su od ova tri tipa. Linije su linearna polja točaka i definiraju smjer kao i

poziciju. Površine definiraju opseg, smjer i poziciju i predstavljene su

dvodimenzionalnim razmještajem točaka.

Da bi vizualizacija dobila što više na značenju, treba se identificirati i analizirati

podatke koji će biti predstavljeni prije nego ih se simbolizira. Tekst se koristi u

vizualizaciji za prikaz informacija koje nije moguće simbolizirati.

3.2. Nastanak i razvoj SVG-a

Većina grafika na Webu se sastoji od slika predstavljenih kao niz obojenih piksela.

GIF (Graphics Interchange Format), JPEG (Joint Photographic Experts Group) i PNG

(Portable Network Graphics) su primjeri grafičkih formata koji se zasnivaju na ovom

principu. Alternativan pristup za slanje vrijednosti piksela putem Weba je slanje uputa

Page 24: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

24

kako nacrtati crtež koji prikazuje svojstva kao što su linije ili vektori, i popuniti te

oblike (vektorska grafika), što nudi značajne prednosti pred formatima temeljenim na

pikselima (bitmap i rasterska grafika).

Međutim, niti jedan takav vektorski format nije bio široko prihvaćen od alata za

kreiranje Web stranica i najčešće je bio vrlo kompliciran. Zbog toga je W3C (World

Wide Web Consortium) 2001. godine razvio novi standardni format za vektorsku

grafiku, Scalable Vector Graphics (SVG), koji se podudarao sa potrebama Web

preglednika i relativno je jednostavan.

SVG dopušta tri osnovna tipa grafičkih objekata; vektorski grafički oblici (tj. putovi koji

se sastoje od ravnih i zakrivljenih linija), slike i tekst. Također podržava gradijentno

ispunjavanje površina, korištenje filtara i komponente kao što su simboli i oznake

(markeri). U SVG-u grafički objekti mogu biti grupirani, stilizirani, transformirani i

spojeni u veće objekte. SVG crteži mogu biti dinamični i interaktivni.

SVG nudi mnoge važne prednosti pred rasterskim formatima:

• Ima svojstvo zumiranja: slike mogu biti povećavane bez žrtvovanja oštrine,

detalja ili jasnoće.

• Tekst ostaje tekst: tekst se u SVG slikama može editirati i može se

pretraživati. Ne postoje ograničenja vezana uz font i korisnici će uvijek vidjeti

sliku na isti način na koji je napravljena.

• Malena veličina dokumenta: donosi brzinu u izvođenju.

• Neovisnost prikaza, bez obzira na radnu stanicu.

• Interaktivnost: SVG slike mogu reagirati na korisničke akcije s promjenom

izgleda, audio efektima i animacijom.

• Otvoren standard: SVG je otvoren standard razvijen od strane W3C i za

razliku od nekih drugih grafičkih formata, SVG nema vlasnika.

• Baziran na XML-u: nudi sve prednosti XML-a, interoperabilnost, široku

podršku i laganu transformaciju pomoću XML Stylesheet Language

Transformation (XSLT).

Page 25: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

25

3.3. Alati za vizualizaciju SVG-a

Postoje dvoje glavne vrste SVG viewera, samostalni SVG vieweri i SVGenabled Web

preglednici.

Najrazvijeniji i najnapredniji samostalni SVG viewer je Adobe SVG viewer.

Raspoloživ je za različite platforme i radi u svim značajnijim Web preglednicima. Ovaj

viewer podržava većinu SVG specifikacije, uključujući i SVG DOMsupport, i ima

velike mogućnosti uključivanja skriptnih jezika (ECMAScript, JavaScript). SVG viewer

se standardno nalazi u Web pregledniku MS IE 6.0. na više.

3.4. Prikazivanje svojstava u SVG-u

SVG je grafički format razvijen da udovolji zahtjevima Web okoline. SVG vieweri

simuliraju «painters» algoritam, što znači da se preklapajuća područja prebojana ili

ovisno o vrijednosti transparentnosti, prosijava donji sloj takvih područja. To se može

vidjeti na slici 6. Transparentnost se definira atributom fill-opacity i vrijednost se

kreće od 0 za prozirno do 1 za neprozirno.

Slika 6. Definiranje transparentnosti u SVG-u

Page 26: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

26

Ako su svi objekti definirani kao neprozirni na vrhu će biti onaj koji je zadnji definiran

u dokumentu. Dakle elementi se prebojavaju u skladu sa slijedom pojavljivanja u

kodu. Time možemo dobiti 2.5D prostor kojim se može relativno dobro prikazati reljef

podloge.

3.5. Vidljivo područje - Viewport i Viewbox

Viewport je područje u kojem će SVG biti vidljiv. Atributi width i height (širina i

visina) elementa <svg> se koriste za definiranje dimenzija, a atributima x i y se

određuju koordinate gornjeg lijevog ugla u dotičnom koordinatnom sustavu. Kada je

<svg> element ugniježđen unutar SVG dokumenta, stvara se novi Viewport, kojem

je pridružen novi koordinatni sustav s novim početnim koordinatama i vlastitom

veličinom. ViewBox atribut definira područje prikazivanja u Viewport ekranu u kojem

možemo definirati vlastite početne koordinate (atributi originX i originY), pa nam

tako koordinatni sustav ne mora počinjati sa koordinatama 0,0 nego npr. -200,-200.

3.6. Koordinatni sustavi i transformacije

SVG koristi Kartezijev koordinatni sustav, čije ishodište je locirano u gornji lijevi kut

polja za prikaz. X-os raste prema desno, a Y-os raste nadolje. Zbog toga kada

koristimo SVG za prikaz mapa, Y-os mora biti invertirana množenjem svih y-

vrijednosti sa -1 ili nekim drugim načinom.

Page 27: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

27

3.7. Osnovni geometrijski elementi SVG-a

Slični kao i ostali vektorski grafički paketi, SVG također ima neke unaprijed definirane

osnovne geometrijske oblike: <rectangle>, <circle>, <ellipse>, <line>,

<polyline>, <polygon> i objekte puta (<path>). Element <path> je najvažniji i

najsloženiji geometrijski oblik u SVG. Njime možemo nacrtati otvorene i zatvorene

linije objekata i poligone, a sastoji se od liste koordinata. Primjer jednog od načina

izgleda elementa <path>:

<path d= "M x1 y1 L x2 y2 L x3 y3 L x4 y4 ... L xn yn "/>.

Atribut d dopušta opis nekoliko tipova crteža. M x1 y1 znači pomakni se (move) na

koordinate x1, y1. L x2 y2 povlači liniju od trenutnih koordinata na koordinate

x2, y2. Element <path> koristi različitu sintaksu kojom se mogu ostvariti

kompleksni oblici korištenjem samo jednog elementa. Moguće vrijednosti za d atribut

su: M = moveto, L = lineto, H = horizontal lineto (ima samo jedan parametar, i to x,

jer vrijednost y-osi ostaje ista), V = vertical lineto (ima samo jedan parametar, y,

vrijednost x ostaje ista), C = curveto, S = smooth curveto, Q = quadratic bezier

curveto, T = smooth quadratic bezier curveto, A = eliptcal arc i Z = closepath (navodi

se na kraju bez koordinata i njime zatvaramo granice objekta povlačenjem ravne

linije od trenutnih koordinata do početnih koordinata). Korištenjem velika slova (npr.

M) definiramo apsolutne koordinate, a malim slovima (npr. m) relativno pozicioniranje.

Slike 7. i 8. prikazuju mogućnosti povezane s parametrom c atributa d.

Page 28: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

28

Slika 7. Uz definiciju atributa C elementa <path>

Slika 8. Primjer korištenja atributa C u elementu <path>

Primjer korištenja atributa elementa <path> je stvaranje patke kako je prikazano na

slici 9. Gornja patka je definirana skupom točaka i sastoji se zapravo od niza pravaca

koji povezuju te točke:

<path d="M 0 112 L 20 124 L 40 129 L 60 126 L 80 120 L 100 111

L 120 104 L 140 101 L 164 106 L 170 103 L 173 80 L 178 60 L

185 39 L 200 30 L 220 30 L 240 40 L 260 61 L 280 69 L 290 68 L

Page 29: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

29

288 77 L 272 85 L 250 85 L 230 85 L 215 88 L 211 95 L 215 110

L 228 120 L 241 130 L 251 149 L 252 164 L 242 181 L 221 189 L

200 191 L 180 193 L 160 192 L 140 190 L 120 190 L 100 188 L 80

182 L 61 179 L 42 171 L 30 159 L 13 140 Z"/>

Slika 9. Primjer upotrebe ravnih i zakrivljenih linija

Donja patka je prikazana pomoću skupa zakrivljenih linija:

<path d="M 0 312

C 40 360 120 280 160 306 C 160 306 165 310 170 303

C 180 200 220 220 260 261 C 260 261 280 273 290 268

C 288 280 272 285 250 285 C 195 283 210 310 230 320

C 260 340 265 385 200 391 C 150 395 30 395 0 312 Z"/>

Page 30: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

30

Iz primjera je vidljiva prednost upotrebe zakrivljenih linija, jer smo dobili patku koja

ima glađe linije i definirana je sa samo 23 točke, naspram 45 točaka koliko je bilo

potrebno za gornju patku.

SVG sadržava nekoliko semantičkih i sintaktičkih mjera za smanjivanje veličine

izraza kojima se opisuje put:

• korištenje relativnih koordinata

• glatke zakrivljene linije - često se susjedne zakrivljene linije trebaju zagladiti.

To se postiže definiranjem prve kontrolne točke druge linije kao refleksije od

druge kontrolne točke prve linije.

• sintaktičke simplifikacije - može se ispustiti prazno mjesto kada je rezultat

nedvosmislen. Na primjer, prazno mjesto nije potrebno između naredbenog

slova (M, L) i vrijednosti koordinate; negativne koordinate ne trebaju

razdvojenost od prethodne; ako je slijedeća naredba ista kao prethodna,

naredbeno slovo može biti ispušteno.

Primjenjujući gore navedena pravila, patku možemo nacrtati i sa samo 160 znakova

(u usporedbi sa početnih 443):

<path d="M 0 312c40 48 120-32 160-6c0 0 5 4 10-3c10-103 50-83

90-42c0 0 20 12 30 7c-2

12-18 17-40 17c-55-2-40 25-20 35c30 20 35 65-30 71c-50 4-170

4-200-79 z"/>

Izrazi puta su jako svestrani, ali mogu biti nepotrebno moćni kada definiramo

jednostavne oblike. Kao posljedica, SVG definira nekoliko drugih osnovnih

elemenata u svojoj specifikaciji, kao što su <rectangle>, <circle>,

<ellipse>, <line>, <polyline> i <polygon>. Osnovni atributi su opisani u

slijedećem primjeru (i na slici 10):

<svg tyle="stroke:orange;fill:green" width="820" height="820">

Page 31: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

31

<circle cx="70" cy="100" r="50" />

<rect x="150" y="50" rx="20" ry="20" width="135"

height="100"/>

<line x1="325" y1="150" x2="375" y2="50" />

<polyline points="50, 250 75, 350 100, 250 125, 350 150, 250

175, 350" />

<polygon points=" 250, 250 297, 284 279, 340 220, 340 202,

284" />

<ellipse cx="400" cy="300" rx="72" ry="50" />

</svg>

Slika 10. Primjer osnovnih geometrijskih elemenata

Page 32: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

32

3.8. Tekst u SVG-u

Tekst se u SVG-u može ostvariti pomoću više različitih elemenata koji ga opisuju.

Ovdje će biti definirana tri glavna (slika 11):

• tekst definiran pomoću elementa text

• tekst definiran pomoću elementa tspan kojim je moguće varirati značajke i

atribute korištene u prezentaciji teksta

• tekst čiji je put određen pomoću elementa textPath

<text x="220" y="20">

<tspan x="220" dy="30">Ovo je kompleksna linija</tspan>

<tspan x="220" dy="30">teksta ili tekst</tspan>

<tspan x="220" dy="30" style="fill:white;stroke:green">sa

različitim značajkama </tspan>

<tspan x="20" dy="30" rotate="10 20 30 40 0 50 60 70 0 80 90 0

100 110 120 140 150 160 170

180">koje sa mogu napraviti</tspan>

<tspan x="220" dy="30">korištenjem elementa tspan</tspan>

</text>

<path id="duck" d="M 0 312 C 40 360 120 280 160 306 C 160 306

165 310 170 303

C 180 200 220 220 260 261 C 260 261 280 273 290 268 C 288 280

272 285 250 285

C 195 283 210 310 230 320 C 260 340 265 385 200 391 C 150 395

30 395 0 312 Z"/>

<text style="font-size:10">

<textPath xlink:href="#duck">

Idemo gore, pa idemo dolje, onda opet gore oko glave. Sada smo

naopačke jer idemo uz vrati uzduž leđa do repa.

</textPath>

</text>

<text>

<tspan x="30" dy="30" font-size="16">Ovo </tspan>

Page 33: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

33

<tspan x="330" dy="30" fill="red">je </tspan>

<tspan x="530" dy="30" font-weight="normal">jedna </tspan>

<tspan x="130" dy="30" font-family="Courier" font-

size="28">jedini </tspan>

<tspan x="330" dy="30" fill="blue">tekstualna </tspan>

<tspan x="30" dy="60" font-style="italic">rečenica </tspan>

<tspan x="430" dy="30" font-size="18">koja </tspan>

<tspan x="330" dy="30" font-size="20">je </tspan>

<tspan x="230" dy="30" font-size="24">razbacana </tspan>

<tspan x="130" dy="30" font-size="28">skroz </tspan>

<tspan dx="30" dy="30">po </tspan>

<tspan dx="130" dy="30">grafičkoj </tspan>

<tspan dx="-230" dy="30">podlozi</tspan>

</text>

Slika 11. Različiti tekstualni elementi

Page 34: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

34

Upotrebom elementa text definiramo pomoću atributa x i y mjesto prikaza teksta.

Koordinate predstavljaju donji lijevi kut prvog znaka i znakovi su prikazani od lijevo

nadesno. Atributima povezanima s tekstom može se promijeniti početna pozicija,

karakteristike teksta i smjer. Tekst unutar tspan može imati koordinate definirane

apsolutno x i y ili relativno dx i dy. Trenutni položaj teksta je pomaknut za vrijednost

koja je specificirana u slučaju postojanja relativnih atributa. Za oba atributa, dx i dy,

može biti definirana lista u kojem slučaju prvi broj definira pomak za prvi znak, drugi

definira pomak od prvog znaka za drugi znak i tako dalje. Svaki od znakova u tekstu

unutar tspan elementa može biti zakrenut korištenjem atributa rotate.

3.9. Stiliziranje grafike

Stilske značajke definiraju kako će biti prikazani grafički elementi u SVG dokumentu.

SVG upotrjebljava te značajke za parametre kao na primjer fill, stroke

colors, line widths i dash styles, koji su vizualne prirode, parametre

povezane sa stilizacijom teksta kao na primjer font-family i font-size. Povrh

statičnog stiliziranja SVG elemenata, dopušteno je i stiliziranje pomoću deklaracijske

animacije ili skripte. Međutim, stiliziranje grafike je potencijalno složenije nego

stiliziranje teksta. Da li je boja u grafici, na primjer, stil ili sadržaj elementa? Ako se

boja koristi na karti za razlikovanje pojedinih zemalja, onda vjerojatno govorimo o

stilu. Važno je da je boja jedne zemlje različita od boje druge zemlje. Stiliziranje

može biti u ovoj situaciji od velikog značaja: najbolji izbor boje bi mogao ovisiti o

kontekstu u kojem se karta koristi, definiranje boje kroz mehanizme stiliziranja

omogućava promjenu boje od jednog konteksta do drugog. Boja ipak nije uvijek stil.

Boja u logu, u umjetničkoj slici ili u preciznoj prezentaciji objekata realnog svijeta je

svojstvo vezano uz sadržaj elementa. U ovom slučaju je boja atribut koji će biti

prikazan točno tako (ukoliko može) u svakom kontekstu. Promijeniti boju kroz

mehanizme stiliziranja bilo bi u ovom slučaju potpuno krivo.

Page 35: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

35

Ovi slučajevi, boja kao stil i boja kao sadržaj elementa, se ostvaruje u SVG-u

pomoću dva različita mehanizama. Jedna metoda je postaviti vizualne atribute

direktno. Na primjer:

<rect fill="yellow" stroke="black" x="20" y="30" width="300"

height="200"/>

<rect fill="none" stroke="red" x="20" y="330" width="300"

height="200"/>

U primjeru smo definirali dva pravokutnika, prvi je žuti s crnom granicom, drugi je

proziran s crvenom granicom. Druga metoda stiliziranja je ilustrirana primjerom:

<svg viewbox= "0 0 500 300" >

<style type="text/css"> <![CDATA[

rect {stroke:black; fill:yellow}

rect.different {stroke:red; fill:none}

]]>

</style>

...

<rect x="20" y="30" width="300" height="200"/>

<rect class="different" x="20" y="330" width="300"

height="200"/>

</svg>

Ovime se postiže isti vizualni efekt kao i u prvom primjeru. Element <style> definira

listu pravila izraženu u CSS (Cascading Style Sheet) sintaksi. Oznaka CDATA se

koristi da se izbjegne parsiranje i provjeravanje XML-a sintakse. U primjeru su

opisana dva stila, prvi za pravokutnike općenito (ispunjavanje žutom bojom s crnom

granicom) i drugi za pravokutnike koji pripadaju u klasu «different». Koji su

prozirni i omeđeni crvenom bojom. Isti efekt se mogao postići definiranjem vanjskog

CSS-a mystyle.css :

rect (stroke:black; fill:yellow}

rect.different (stroke:red; fill:none}

Page 36: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

36

i uključivanjem u SVG dokument:

<?xml-stylesheet type="text/css" href="mystyle.css" ?>

<svg viewbox= "0 0 500 300" >

<rect x="20" y="30" width="300" height="200"/>

<rect class="different" x="20" y="330" width="300"

height="200"/>

</svg>

Stil može također biti povezan izravno s elementom kojeg opisuje. Gornji primjer bi

se tako mogao napisati:

<rect style="stroke:black;fill:yellow" x="20" y="30"

width="300" height="200"/>

<rect style="stroke:red;fill:none" x="20" y="30" width="300"

height="200"/>

SVG dopušta da slike imaju proizvoljnu hijerarhijsku strukturu. CSS pruža

mehanizme kontrole izgleda, bazirane na vrijednostima atributa (obično atributi

pojedine klase) i strukturi SVG elemenata. Moguće je također napisati:

rect [class~="different"] {stroke:red; fill:none}

što bi selektiralo pravokutnike čija klasa sadržava vrijednost different. Pri tome

"." notacija predstavlja isto što i "~=". Slijedi složeniji primjer.

<svg width="400" height="250" >

<style type="text/css"> <![CDATA[

rect {stroke:black; fill:white}

rect.different {stroke:red; stroke-width:4; fill:none}

rect.different.again {stroke:none; fill:white}

rect.different.again.encore {stroke:blue; stroke-width:8;

fill:none}

Page 37: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

37

]]>

</style>

<rect x="20" y="20" width="100" height="100"/>

<rect class="different" x="20" y="140" width="100"

height="100"/>

<rect class="different again" x="140" y="20" width="100"

height="100"/>

<rect class="different again encore" x="140" y="140"

width="100" height="100" />

</svg>

Na slici 12. je prikazan rezultat.

Slika 12. Selekcija klasa

Page 38: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

38

3.10. Grupiranje elemenata u SVG-u

Često postoji potreba za grupiranjem grafičkih elemenata. Jedan razlog je ako skup

elemenata dijeli isti atribut. Međutim, najčešća potreba je kod definiranja novog

koordinatnog sustava za skup elemenata primjenom transformacija na svaku

koordinatu specificiranu u skupu elemenata. Grupiranje se u SVG postiže

korištenjem elementa g. Skup elemenata može biti određen kao grupa, njihovim

uključivanjem unutar g. Na primjer:

<g style="fill:red;stroke:black">

<circle cx="70" cy="100" r="50" />

<rect x="150" y="50" rx="20" ry="20" width="135" height="100"

/>

<line x1="325" y1="150" x2="375" y2="50" />

<polyline points="50, 250 75, 350 100, 250 125, 350 150, 250

175, 350" />

<polygon points=" 250, 250 297, 284 279, 340 220, 340 202,

284" />

<ellipse cx="400" cy="300" rx="72" ry="50" />

</g>

Element g može imati bilo koji od atributa ili značajki stila, definirane samo za njega,

koje su primjenjive na druge grafičke elemente. U primjeru iznad, svi osnovni oblici

će biti nacrtani s crvenom unutrašnjosti i crnom granicom.

3.11. Transformacije koordinata

Atribut transform primijenjen u g elementu, definira transformaciju nad svim

koordinatama u grupi. Na primjer:

Page 39: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

39

<g transform="translate(100,0)">

<circle cx="70" cy="100" r="50" />

<rect x="150" y="50" rx="20" ry="20" width="135" height="100"

/>

</g>

Umjesto kruga nacrtanog sa centrom na točci (70,100), sada će centar biti pomaknut

na koordinate (170,100). Pravokutnik će imati gornji lijevi kut na (250,50) umjesto

(150,50). Dakle, korisna metoda definiranja kompozicije nad nekoliko grafičkih

objekata određuje svaki objekt kao grupu korištenjem odgovarajućeg koordiniranog

sustava i potom upotrebljava transformacije primijenjene nad grupom da bi dobili

grafički prikaz kao cjelinu. Grupe mogu biti ugniježđene do bilo koje dubine i

preobrazbe se primjenjuju na svaku od njih. Moguće preobrazbe su:

Transformacija Značenje Parametri

translate translacija koordinata x i y određuju vrijednost translacije

scale množenje koordinata sx i sy, množi x i y sa s

rotate rotacija oko točke kut, x i y

skewx pogreška po x-osi kut u stupnjevima, x=y*tan(angle)

skewy pogeška po y-osi kut u stupnjevima, y=x*tan(angle)

Tablica 2. Transformacije u SVG-u

Atribut transform može se sastojati od niza individualnih transformacija u kojem

slučaju se one izvode s lijeva na desno. Isti efekt se može postići na čitljiviji način

ugnježđivanjem nekoliko g elemenata, svakog s jednom transformacijom.

3.12. Ispunjavanje površina

Glavne značajke popunjavanja, koje mogu biti određene ili kao atributi ili kao

značajke osnovnih SVG elemenata, putova, teksta ili grupe su:

• fill - metoda ispunjavanja područja sa nekom bojom. Vrijednost none

definira da područje nije ispunjeno.

Page 40: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

40

• opacitiy - govori o prozirnosti boje područja.

• fill-rule - koristi se za složene putove, definicija kako će biti ispunjeno

područje.

Primjer koji koristi sve tri mogućnosti: <path style="fill:red;opacity:0.5;fill-rule:evenodd"

d="M10,20h100v50h-80v-70h-20v20z" />

Boje se koriste za različite operacije u SVG-u, uključujući ispunjavanje i

naglašavanje. Boja može biti definirana na dva načina:

• ime boje (red, green)

• numerički, RGB specifikacijom

<rect width="10" height="10" style="fill:coral" />

<rect width="10" height="10" style="fill:rgb(255,127,80)" />

<rect width="10" height="10" style="fill:#f75" />

<rect width="10" height="10" style="fill:#ff7f50" />

Ispunjavanje područja definiranog nekim putem, osnovnim grafičkim elementima ili

tekstom, zahtijeva jasnu definiciju što je unutar granica, a što je vani. Za jednostavne

putove koji se ne sijeku, unutrašnjost je očita. Međutim, za put koji križa sebe ili se

sastoji od nekoliko segmenata, definicija unutrašnjosti i vanjštine je manje jasna.

SVG definira dvije metode kojima se može definirati unutrašnjost:

• evenodd: broji se broj sječenja linije između točke i beskonačnosti, ako broj je

neparan, točka je unutar područja i trebati biti ispunjena.

• nonzero: koliko puta element puta prolazi oko točke. Ako je broj različit od

nule, točka je unutra.

Slika 13. pokazuje različite rezultate koji se dobiju uporabom gornjih metoda.

Page 41: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

41

Slika 13. Pravila ispunjavanja

3.13. Naglašavanje linija

Dio značajki kojima se postiže naglašavanje linija:

• stroke: metoda prikazivanja obrisa sa bojom. Moguće vrijednosti su iste kao

i za fill značajku.

• stroke-width: definira širinu obrisa.

• stroke-dashaarray: definira stil linije (dotted, solid, dashed).

• stroke-dashoffset: za isprekidanu liniju; pokazuje gdje bi uzorak trebao

početi.

• stroke-linecap: definira način prikazivanja kraja linije.

• stroke-linejoin: definira kako će biti prikazan spoj između dvije linije.

Načini naglašavanja obrisa su prikazani na slici 14.

Page 42: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

42

Slika 14. Značajke naglašavanja obrisa

3.14. Interakcija u SVG-u

Kada se Web dokument (neki od jezika baziranih na XML-u) učitava u preglednik,

dokument se parsira i stvara se unutarnja struktura koja se koristi za prikazivanje

načina na koji je dokument kreiran. Za manipulaciju tim strukturama se koristi DOM

(eng. Document Object Model) sučelje. DOM dozvoljava upotrebu skriptnih jezika

čime se postiže dinamička modifikacija Web dokumenata unutar preglednika.

Modifikacije dokumenta pomoću DOM-a se obično okidaju na događaj u pregledniku,

npr. pomicanjem miša iznad određenog dijela dokumenta, klikom iznad nekog

poligona i sl. U slijedećem primjeru su ilustrirane osnovne ideje.

<svg width="500" height = "500">

<script language="JavaScript"

type="text/javascript">

<![CDATA[

function onmouseover(evt) {

var elem = evt.target;

var style = elem.getStyle();

Page 43: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

43

style.setProperty("fill-opacity", 0.5);

}

function onmouseout(evt) {

var elem = evt.target;

var style = elem.getStyle();

style.setProperty("fill-opacity", 1.0);

}

]]></script>

<rect x="20" y="20" width="250" height="250" style="fill:red;

stroke:none"

onmouseover="onmouseover(evt)" onmouseout="onmouseout(evt)" />

<rect x="210" y="210" width="250" height="250"

style="fill:green; stroke:none"

onmouseover="onmouseover(evt)" onmouseout="onmouseout(evt)" />

</svg>

Interaktivnost dokumenta je prikazana na slikama 15. i 16.

Slika 15. Interaktivnost SVG dokumenta (1) Slika 16. Interaktivnost SVG dokumenta (2)

Atributi onmouseover i onmouseout specificiraju imena skriptnih funkcija koje se

pozivaju kad se pripadni događaj i dogodi. Određivanje elementa u stablu DOM-a se

Page 44: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

44

određuje pomoću parametara koji se šalju funkciji. Funkcija onmouseover mijenja

značajku fill-opacity (prozirnost) elementa na vrijednost 0.5. Ova funkcija se

poziva kada se mišem dođe iznad područja prekrivenog pravokutnikom. Funkcija

onmouseout vraća prozirnost na inicijalnu vrijednost (1.0). Ova funkcija se poziva

kada se miš pomakne izvan područja pravokutnika.

Neki od događaja na koje se obavlja okidanje su:

• onclick

• onactivate

• onmousedown

• onmouseover

• onmousemove

• onmouseout

• onload

Događaj onactivate je širi pojam od događaja onclick i djeluje i za ostale

uređaje, a ne samo za miš. Element onload je osnovna metoda za aktiviranje

skripte kada se učitava SVG dokument.

U SVG-u se mogu koristiti razni skriptni jezici (EcmaScript, JavaScript). Za ovaj

primjer je odabran JavaScript. Definiranje skripte unutar SVG dokumenta se

ostvaruje sljedećom shemom.

<script language="JavaScript" type="text/javascript">

<![CDATA[

... funkcije definirane u skripti ...

]]></script>

Uključivanje vanjskog JavaScript dokumenta u SVG dokument se ostvaruje

naredbom <script xlink:href="file_name" />.

Page 45: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

45

U tablici 3. se nalaze funkcije, varijable i metode koje su definirane i mogu se koristiti

u oblikovanju skripte.

Ime Tip Parametri Opis Primjer

evt varijabla nema varijabla na koju se SVG fokusira

<svg width="400" height="200" onload="funkcija(evt)">

ownerDocument getOwnerDocument()

funkcija nema vraća SVG dokument svgdoc = evt.target.ownerDocument()

target getTarget() funkcija nema

vraća objekt na koji se fokusira

objekt = evt.target

getElementById("rectangle") funkcija ID objekta

vraća objekt sa ID kao parametrom

objekt=svgdoc.getElementById("rectangle")

getAttribute("id") funkcija ime atributa vraća vrijednost atributa

širina=objekt.getAttribute("width")

setAttribute("id",vrijednost) metoda ime atributa i

vrijednost pridjeljuje vrijednost atributu

objekt.setAttribute("width",300)

setAttributeNS("...","xlink:href",vrijednost) metoda

NS referenca, atribut i vrijednost

pridjeljuje vrijednost atributu (za NS–prostor oznaka)

objekt.setAttributeNS("...","xlink:href", truc.htm)

Style getStyle() funkcija nema vraća stil aspect=objekt.style

setProperty("fill",vrijednost) metoda ime značajke

i vrijednost pridjeljuje vrijednost značajki

objekt.getStyle().setProperty("fill","red")

getPropertyValue("fill") funkcija ime značajke

vraća vrijednost značajke

boja=objet.getStyle().getPropertyValue ("fill")

attributes funkcija nema vraća atribute objekta kao imenovanu listu čvorova

att=objekt.attributes att.length – daje broj atributa att.item(i) – odnosi se na i-ti atribut att.item(i).name – daje njegovo ime att.item(i).value – daje njegovu vrijednost

createElement("rect") funkcija tip objekta kreira objekt Novi=svgdoc.createElement("rect")

appendChild(novi) metoda ime objekta umeće objekt kao dijete čvora

cvor.appendChild(novi)

replaceChild(novi,stari) metoda objekti

zamjenjuje stari čvor s novim

cvor.replaceChild(novi,stari)

insertBefore(novi,pozicija) metoda objekti umeće novi

objekt ispred cvor.insertBefore(novi,stari)

Page 46: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

46

pozicije

createTextNode("tra la la") funkcija tekst kreira čvor s

tekstom tekst=svgdoc.createTextNode("tra la la");

setData("tra la la") metoda tekst pridjeljuje tekst djetetu tekstualnog čvora

objekt.setData("tra la la")

firstChild getFirstChild() funkcija nema vraća prvo

dijete čvora tekst=objekt.firstChild

addEventListener ("mousemove",funkcija,false)

metoda događaj, funkcija false

kreira događaj za objekt

objekt.addEventListener ("mousemove",alert,false)

removeChild(dijete) metoda ime objekta briše imenovano dijete čvora

cvor.removeChild(dijete)

cloneNode(true) funkcija false ili true kopira objekt i svu njegovu djecu ako je true

novi=objekt.cloneNode(true)

getCharCode() funkcija nema vraća kod pritisnute tipke tipka=evt.getCharCode()

String.fromCharCode (key) funkcija kod

vraća znakovnu vrijednost ključa

vrijednost = String.fromCharCode(key)

clientX getClientX() funkcija nema

vraća x vrijednost pokazivača u SVG-u

x_mouse=evt.clientX

clientY getClientY() funkcija nema

vraća y vrijednost SVG-u

y_mouse=evt.clientY

screenX getScreenX() funkcija nema

vraća x pokazivača u HTML-u

x_mouse=evt.screenX

screenY getScreenY() funkcija nema

vraća y pokazivača HTML

y_mouse=evt.screenY

childNodes getChilNodes() funkcija nema vraća djecu

čvora u listi grupa=node.childNodes

getElementsByTagName(tag) funkcija tip objekta

"*" džoker vraća djecu po tipu u listi

grupa=node.getElementsByTagName('rect')

length getLenght() funkcija nema

vraća broj objekata liste čvorova

broj=grupa.lenght

item(n) funkcija integer >=0 vraća ime objekta lista objekt=grupa.item(1)

nodeType funkcija nema vraća tip čvora i=objekt.nodeType

nodeName funkcija nema vraća ime čvora ima=objekt.nodeName

Page 47: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

47

getCharNumAtPosition(d) funkcija SVGPoint

vraća kod znaka na poziciji

kod=objekt.getCharNumAtPosition(d)

getExtentOfChar(i) funkcija integer >=0

vraća pravokutnik oko slova kao SVGRect objekt

trace=objekt.getExtentOfChar(5); trace.x, trace.y, trace.width i trace.height

getStartPositionOfChar(i) getEndPositionOfChar(i)

funkcija integer>=0

vraća donju lijevu koordinatu slova kao SVGPoint

p=objekt.getStartPositionOfChar(1); p.x i p.y su koordinate

getNumberOfChars() funkcija nema vraća broj slova dužina=objekt.getNumberOfChars()

getComputedTextLength() funkcija nema

vraća broj točaka koje trebaju da bi se prikazao string

zauzmi=objekt.getComputedTextLength()

selectSubString(i,j) metoda indeks starta i duljina stringa

selektira podniz objekt.selectSubString(0,2)

getBBox() funkcija nema vraća granice oko objekta kao SVGRect object

trace=objekt.getBBox; trace.x, trace.y, trace.width i trace.height

getCTM() funkcija nema vraća matricu transformacija matrica=objekt.getCTM()

Inverse funkcija nema vraća inverz matrice inverzna_matrica=matrice.inverse

multiply(matrica2) funkcija matrica množi sa matricom2 rezultat=matrica1.multiply(matrica2)

currentScale broj Nema vraća faktor uvećanja currentScale=2

Tablica 3. Funkcije, metode i varijable JavaScript-a

Dublji prikaz i ostale mogućnosti SVG-a (animacije, uporabe filtara i dr.) se mogu

naći na Adobeovim stranicama.

Page 48: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

48

4.Upotreba XSLT-a u vizualizaciji GML podataka

Glavna tema ovog poglavlja je opis načina na koje se GML podaci mogu vizualizirati

transformacijom u SVG format, odnosno, uloga XSLT-a (eng. Extensible Stylesheet

Language Transfomation) u tom procesu. Budući da XML ne upotrebljava unaprijed

definirane oznake, generički XML procesor koji čita XML dokument nema pojma što

je autor mislio pri dokumentiranju i kako je to želio predstaviti. Zato mora postojati

dodatni dokument koji pruža informaciju kako to predstaviti, a to je XSL.

XSL je specifikacija razvijena od strane World Wide Web konzorcija (W3C) za

formatiranje XML-a koja se dokumentira na uobičajeni način. Specifikacija definira da

je XSL jezik kojim se izražava lista pravila (stylesheet). Liste pravila se koriste za

opisivanje načina kako bi sadržaj danog strukturiranog dokumenta trebati biti

predstavljen. XSL se sastoji od triju sastavnih jezika koji su opisana W3C

standardom. To su XSLT, XSL Formatting Objects (XSL-FO) i XML Path Language

(Xpath). XSLT i XSL-FO mogu međusobno neovisno funkcionirati.

XSLT je najvažniji dio XSL standarda. On sadrži elemente koji definiraju pravila kako

se jedan XML dokument pretvara u drugi XML, HTML ili tekstualni dokument. Ako je

transformirani dokument u XML-u, može upotrijebiti tagove i DTD od izvornog

dokumenta ili može upotrijebiti sasvim drugačiji skup elemenata. XSLT može dodati

nove elemente u izlazni dokument, ukloniti postojeće elemente, preurediti sortiranje

elemenata i odlučivati kroz odgovarajuće liste pravila.

Transformacija se može izvršiti na tri glavna načina. Prvo, XML dokument i

pripadajuća lista pravila može biti dan Web pregledniku, koji zatim transformira

dokument kako je specificirano listom pravila. Druga mogućnost je da Web server

primijeni XSLT listu pravila na XML dokument i pošalje transformirani dokument

korisniku. Treća mogućnost je da XSLT procesor transformira izvorni XML dokument

u navedeni format po listi pravila, prije nego što je dokument stavljen na server. Svaki

Page 49: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

49

od ovih triju pristupa upotrebljava drugačiju programsku podršku, iako svi

upotrebljavaju isti XML dokument i XSLT listu pravila. Pri tome se preferira treći

pristup kao najprikladniji za ostvarivanje željenih ciljeva.

4.1. XSL-FO i XPath

XSL-FO je XML aplikacija koja opisuje kako će dokument izgledati kada ga bude

čitao korisnik. To je omogućeno formatiranjem pomoću formatirajućih objekata i

formatirajućih svojstava pridijeljenih svakom objektu.

Xpath je jezik za referenciranje specifičnih dijelova XML-a dokumentira, bitan za

slučajeve gdje je potrebno odrediti točan dio dokumenta koji će biti transformiran

XSLT-om. Xpath ima proširivu sintaksu, temeljenu na znakovnim nizovima, koja

opisuje put između pojedinih dijelova jednog ili više dokumenata pomoću

path/file sintakse.

4.2. Stabla i čvorovi

Stablo je podatkovna struktura sastavljena od povezanih čvorova čiji početni čvor se

naziva korijen. Zato je svaki pravilno formiran (well-formed) XML dokument stablo.

Korijen je spojen sa svojim čvorovima djecom, od kojih je svaki spojen sa nula ili više

vlastitih čvorova djece. Najkorisnija značajka stabla je da svaki čvor i njegova djeca

također formira novo stablo. Tako je stablo zapravo hijerarhijska struktura stabala u

kojoj je svako stablo izgrađeno od manjih stabala. XSLT modelira XML dokument

kao stablo koje sadržava sedam vrsta čvorova: korijen, elemente, tekst, svojstva,

oznake imena, procesne instrukcije i komentare.

XSLT lista pravila je u osnovi skup pravila za transformaciju XML dokumenata. U

slučaju vizualizacije podataka, uloga XSLT-a je da transformira XML sadržaj

Page 50: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

50

podataka u format pogodan za grafičko prikazivanje, kao na primjer HTML/XHTML,

SVG, XSL-FO, tekst ili bilo koji drugi strukturirani format. Međutim, tradicionalni

XSLT-ovi kodiraju informaciju o izgledu teksta i rasporedu sadržaja. Ali, u kontekstu

GIS-a, GML podaci temeljeni na XML-u moraju biti predstavljeni u grafičkom formatu

SVG-u koji je XML temeljen jezik za opisivanje 2D grafike.

4.3. XSLT struktura i elementi

XSLT lista pravila se sastoji od skupa pravila koja se nazivaju predložak (template).

Predložak sadržava skup pravila koja se dijele na dva dijela; uzorak koji se

uspoređuje sa čvorovima u izvornom stablu i sačinjava dio rezultata izlaznog stabla.

To dopušta listi pravila da bude primjenljiva na široku klasu dokumenata koji imaju

slične izvorne strukture stabla.

Kao i bilo koji drugi XML dokument, XSLT lista pravila počinje s XML deklaracijom.

Sljedeća linija je ili element <xsl:stylesheet> ili element <xsl:transform>

koji su sinonimi i definiraju početak liste pravila i korijenski element. U njima mora biti

deklarirana verzija XSLT-a na kojoj se lista pravila bazira. XSLT atribut xmlns

definira prostor oznaka imenom:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform

(dogovorno se ”xsl” prefiks koristi za označavanje XSLT prostora oznaka). Osnovna

struktura liste pravile je definirana: <?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!- predlošci idu ovdje-- >

</xsl:stylesheet>

Page 51: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

51

4.4. Predložak

Predložak pravila je definiran elementom <xsl:template> i najvažniji je dio XSLT

liste pravila. Svaki <xsl:template> element sadržava pravila koja se primjenjuju

kada se navedeni čvor pronađe u izvornom dokumentu. Ova pravila opisuju

doprinose pojedinih pronađenih čvorova koji se dodaju izlaznom dokumentu. Pravila

mogu sadržavati i tekst koji će se pojaviti doslovno u izlaznom dokumentu i XSLT

naredbe koje kopiraju dijelove ulaznog XML dokumenta u rezultat.

Sljedeći primjer predloška transformira čvorove FeautreMember u ulaznom

dokumentu, dodaje sadržaj od čvorova djece koji se zovu identification i type i

stvara <g> element u izlaznom dokumentu s atributima id i class. Također,

upotrebljava drugi predložak za procesiranje čvora Polygon.

<xsl:template match="//FeatureMember">

<xsl:variable name="ID" select="identification"/>

<xsl:variable name="Tip_cvora" select="type"/>

<xsl:element name="g">

<xsl:attribute name="id">

<xsl:value-of select="$ID"/>

</xsl:attribute>

<xsl:attribute name="class">

<xsl:value-of select="$Tip_cvora"/>

</xsl:attribute>

<xsl:apply-templates select="..//gml:Polygon"/>

</xsl:element>

</xsl:template>

Podudarnost je opisana atributom match koji specificira na koji se čvor ulaznog

dokumenta odnosi predložak. Također se njime može definirati predložak za cijeli

XML dokument (s match="/" se definira cijeli dokument, ".." označava roditeljski

Page 52: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

52

čvor, a "." trenutni). Kada XSLT procesor čita ulazni dokument, korijen je prvi čvor

koji nađe i tada se izvršavaju pravila koja su definirana za korijenski element.

Da bi se doseglo dalje od korijena, koristi se element <xsl:apply-template>.

Kod uključivanja ovog elementa, parser će uspoređivati svaki čvor dijete od trenutnog

čvora s predlošcima u listi pravila, i ako je pronađena podudarnost, izvršiti predložak

za svaki takav pronađeni čvor. Atribut select se označavaju djeca koja će biti

izabrana.

Atributom match se može odrediti podudarnost čvorova po imenu elementa,

čvorovima djece, roditeljima, atributima, ID-u elemenata, komentarima, tekstu, kao i

primjenom jednostavnih testova na nekima od ovih elemenata.

4.5. Selektiranje čvorova

Atribut select se koristi u xsl:apply-template, xsl:value-of, xsl:for-

each, xsl:copy-of, xsl:variable, xsl:param i xsl:sort za

specificiranje točno određenih čvorova nad kojima se vrši transformacija. Vrijednost

ovog atributa je izraz napisan u XPath-u. XPath jezik pruža sredstva identificiranja

određenog elementa, grupe elemenata, dijela teksta ili nekog drugog dijela XML

dokumenta. XPath pruža nekoliko poveznica koje mogu biti korištene pri odabiru

dijelova stabla, odnosno prema kontekstnom čvoru. Inicijalno je kontekstni čvor onaj

čvor na koji se odnosi predložak.

4.6. Imenovani predlošci

Element <xsl:template> može imati atribut name kojim može biti direktno pozvan,

čak i onda kada nije direktno primjenjiv. Takvi predlošci se zovu imenovani predlošci.

Page 53: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

53

Imenovani predlošci se koriste za ponavljanje liste pravila unutar nekog drugog

predloška i omogućuju uključivanje podatka s mjesta od kuda je predložak pozvan.

Element <xsl:call-template> se koristi za pozivanje takvog predloška

4.7. Sadržaj izlaza

U transformaciji XML dokumenta često je nužno uključiti nove elemente, atribute,

procesne naredbe, komentare i sl. u izlazni dokument da bi se dobila željena izlazna

struktura. Na primjer, izlaz XSLT liste pravila dizajniran za transformaciju GML

sadržaja u SVG, treba udovoljiti SVG specifikaciji. To se postiže odgovarajućim XSL

elementima kao na primjer xsl:element, xsl:attribute, xsl:processing-

instruction, xsl:comment i xsl:text i atributnim vrijednostima predloška.

Atributne vrijednosti kopiraju podatke iz ulaznog dokumenta u atributne vrijednosti na

izlazu. Element <xsl:element> umeće novi element u izlazni dokument. Ime

ubačenog elementa je dano vrijednošću atributa name, a sadržaj je definiran

vrijednošću elementa <xsl:element>. Element <xsl:attribute> definira ime

atributa i njegovu vrijednost, i umeće ih u elemente izlaznog dokumenta. Zato se

mora pojaviti kao dijete od <xsl:element>. Kada se ista grupa atributa primjenjuje

u mnogim različitim elementima, takav skup atributa može biti određen kao element

na najvišoj razini stabla pomoću oznake <xsl:attribute-set> i umetnuti gdje

god je potrebno sa <xsl:use-attribute-sets>.

<xsl:processing-instruction> element stavlja procesnu naredbu u izlazni

dokument. Cilj procesne naredbe je specificiran atributom name, a sadržaj

<xsl:processing-instruction> elementa postaje sadržaj same procesne

naredbe. Elementi <xsl:comment> i <xsl:text> umeću komentare, odnosno

tekst u izlazni dokument.

Page 54: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

54

4.8. Izlazne metode

Većina XSLT procesor podržava tri tipa izlaznih metoda: XML, HTML i Text. XSLT

procesor se ponaša drukčije, ovisno o tome koja od izlaznih metoda je specificirana.

Izlazna metoda je određena elementom najviše razine <xsl:output>.

XSLT ne pruža elemente za opisivanje unutarnjeg DTD podskupa za izlazni

dokument. Međutim, može se pomoću atributa doctype-system i doctype-

public elementa <xsl:output> uključiti DOCTYPE deklaracija koja ukazuje na

vanjski DTD.

Atributom indent elementa <xsl:output>, koji ima dvije vrijednosti “yes” i

“no”, se ostvaruje umetanje praznih mjesta u izlazni dokument, radi bolje čitljivosti.

4.9. Umetanje lista pravila

XSLT lista pravila se može direktno umetnuti u XML dokument. U tom slučaju

<xsl:stylesheet> element se mora pojaviti kao dijete elementa kojim se definira

XSLT dokumenta i ima ID atribut koji mu daje jedinstveno ime. Taj atribut se

pojavljuje kao vrijednost atributa href u elementu XML-stylesheet označen

pomoću znaka #:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xml" href="#mystyle"?>

<Root_Element>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

id="mystyle">

Page 55: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

55

<xsl:template match="/">

<!—Sadržaj predloška ide ovdje-->

</xsl:template>

<!—Drugi predlošci idu ovdje-->

<xsl:template match="xsl:stylesheet"/>

</xsl:stylesheet>

<!—ostatak podataka ide ovdje-->

.....

.....

</Root_Element>

4.10. Stvaranje XSLT liste pravila

XSLT lista pravila mora biti pravilno oblikovan XML dokument i bi treba udovoljiti

XSLT specifikaciji koja opisuje je dopuštenu sintaksu. Sadržaj lista pravila u

potpunosti ovisi o ulaznoj strukturi dokumenta i zahtijevanoj izlaznoj strukturi.

Sljedeće smjernice se koriste u kreiranju XSLT liste pravila čiji je cilj transformacija

GML dokumenta u SVG.

1. XML deklaracija. <?xml version="1.0" encoding="UTF-8"?>

2. Korijenski element liste pravila uključuje verziju i prostor oznaka (uključujući

sve prostore nađene ulaznom dokumentu). <xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:gml="http://www.opengis.net/gml"

xmlns:xlink="http://www.w3.org/1999/xlink">

3. Deklariranje elemenata najviše razine.

Page 56: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

56

<xsl:output method="xml" encoding="UTF-8" standalone="no"

indent="yes" omit-xml-declaration="no" media-

type="text/xml"

doctype-public="-//W3C//DTD SVG 20010904//EN"

doctype-system="http://www.w3.org/TR/2001/REC-SVG-

20010904 /DTD/svg-10.dtd"/>

Ova lista pravila proizvodi sljedeće deklaracije u izlaznom dokumentu. <?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"

"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg-

10.dtd">

4. Predložak koji kreće od korijenski element ulaznog dokumenta. Ovo može

uključivati mnoge izračune da bi se odredile vrijednosti atributa za korijenski

element izlaznog dokumenta i drugih predložaka u listi pravila. <xsl:template match= "/">

5. Procesne instrukcije trebaju biti uključene ovdje. To se odnosi na vanjske liste

pravila. <xsl:processing-instruction name="xml-stylesheet">

href="Style.css" type="text/css"

</xsl:processing-instruction>

To će dati u izlaznom dokumentu: <?xml-stylesheet href="Style.css" type="text/css" ?>

6. Stvoriti korijen element i povezati atribute u izlaznom dokumentu. <xsl:element name="svg">

<xsl:attribute name="xml:space">preserve</xsl:attribute>

<xsl:attribute name="width">100%</xsl:attribute>

...

...

Primjer za izlaz ovog dijela liste pravila je:

Page 57: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

57

<svg xml:space="preserve" width="100%" height="100%"

viewBox="158000 -434000 2000 2000"

id="svgAll" onmousemove=" showCoords(evt)"

onzoom="resetCoords()" onscroll="resetCoords()"

onload="startMap(evt)">

7. Stvoriti elemente najviše razine u izlaznom dokumentu. <xsl:element name="script">

<xsl:attribute

name="xlink:href">External.js</xsl:attribute>

<xsl:attribute

name="type">text/javascript</xsl:attribute>

</xsl:element>

Time smo kreirali element <script> u izlaznom dokumentu koji se

referencira na vanjskom Display.js JavaScript dokument. <script xlink:href="Display_Data.js"

type="text/javascript"/>

8. Kreiranje čvorova djece u izlaznom dokumentu, u skladu sa hijerarhijom u

ulaznom dokumentu. <xsl:apply-templates select="//Feature"/>

<xsl:apply-templates select="//FeatureMember"/>

....

....

9. Primijeniti ostale predloške i imenovane predloške. Na primjer, u vizualizaciji

geografskih podataka, mreže linija granica, teksta i drugih efekata koji će

napraviti prezentaciju sadržajnijom. Sljedeći fragment poziva predložak kojim

se crtaju granice. <xsl:call-template name="Grids">

<xsl:with-parem name="Max_X" select="$Max_X"/>

....

....

</xsl:call-template>

Page 58: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

58

10. Zatvoriti korijenski element u izlaznom dokumentu. </xsl:element>

11. Zatvoriti listu pravila koja se odnose na korijenski element ulaznog

dokumenta. </xsl:template>

12. Deklarirati predloške koje selektiraju čvorove djecu. Ovo su stvarni predlošci

koji utječu na selektirani čvor spominjan u osmoj točci. <xsl:template match="Feature">

<!—lista pravila ide ovdje-->

</xsl:template>

<xsl:template match="FeatureMember ">

<!—lista pravila ide ovdje-->

</xsl:template>

13. Deklarirati imenovane predloške. <xsl:template name="Grids">

<!—lista pravil ide ovdje-->

</xsl:template>

14. Zatvoriti korijenski element liste pravila. </xsl:stylesheet>

4.11. XSLT Procesori

Da bi se izvele transformacije definirane u XSLT listi pravila, mora postojati drugi

program nazvan XSLT procesor, zato što su i izvorni XML dokument i lista pravila

obični tekstualni dokumenti koje treba povezati. XSLT procesor uzima kao ulaz XML

dokument i listu transformacija XML dokumenta. Procesor u transformaciji prolazi

Page 59: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

59

kroz stablo strukture XML dokumenta, promatrajući svaki čvor redom, i uspoređuje

ga s uvjetom svakog predloška definiranog u listi pravila. Kada procesor nađe čvor

koji se poklapa s uvjetom predloška, izvršava pravila zapisana u predlošku.

Postoje mnogi XSLT procesori koji su prilagođeni XSLT 1.0 specifikaciji, kao što su i

Instant SAXON, iXSLT, XML Spy, a u ovom radu je korišten Msxsl (opisan nešto

kasnije).

4.12. Zaključak

XML sadržaj može biti predstavljen na više načina. XSLT je W3C specifikacija za

formatiranje XML dokumenta. XSLT lista pravila sastoji se od pravila transformacija,

definiranih u predlošcima, a transformacija se postiže uporabom XSLT procesora.

GML podaci mogu se pretvarati u SVG format korištenjem ove metode. Struktura

XSLT liste pravila potpuno ovisi o strukturi ulaznog i izlaznog dokumenta.

Page 60: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

60

5.0. Primjer vizualizacije GML-a

Za primjer vizualizacije GML podataka uzeta je razdjelna električna mreža čije

značajke su opisane u [19]. GML dokument (mreza.gml) je napisan u jednom od

alata pogodnih za pisanje podataka temeljenih na XML standardu. Potom je napisan

pripadajući XSLT (transf.xsl) kojim će se taj GML dokument transformirati u SVG

koji će se moći grafički predočiti u MS InternetExplorer pregledniku. Za povezivanje

GML dokumenta i pripadajućeg XSLT-a služi alat msxsl koji će biti opisan u poglavlju

5.2. Listing koda za dokument mreža.gml se nalazi u dodatku C, dok se listing koda

za datoteku transf.xsl nalazi u dodatku D.

5.1. XMLNotepad

Za pisanje GML dokumenta mreža.gml korišten je program XMLNotepad (slika 17).

To je program koji olakšava pisanje XML temeljenih aplikacija i provodi validaciju. U

lijevom polju je prikazana struktura dokumenta, dok se u desnom nalaze vrijednosti

pojedinih svojstava i njihovih značajki. Unošenje se obavlja jednostavnim klikom

iznad polja, dok se imena značajki i svojstava (i njihovo dodavanje ili brisanje) mogu

promijeniti klikom iznad samog imena.

Page 61: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

61

Slika 17. XML Notepad

Ukoliko GML dokument nije valjan (well-formed), što znači da nije napisan u skladu s

pripadajućim DTD-ovima (gmlFeature.dtd i gmlGeometry.dtd) koji se nalaze u istoj

datoteci, XMLNotepad će pri ponovnom učitavanju tog GML dokumenta javiti grešku

(prikazano na slici 18). Listing gmlFeature.dtd se nalazi u dodatku A, dok se listing

gmlGeometry.dtd nalazi u dodatku B.

Slika 18. Greška koju javlja XMLNotepad ukoliko izvorni kod nije valjan

Page 62: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

62

5.2. Msxsl

Msxsl.exe je alat koji se pokreće iz komandne linije datoteke u kojoj su smješteni

GML dokument i njegov pripadni XSLT i primjenjuje transformaciju zapisanu u XSLT-

u na GML dokument koristeći Microsoft XSL processor. Unutar njega se nalazi

Microsoft XML Parser 4.0 (msxml4.dll) koji izvodi transformaciju. Ukoliko navedemo

opciju –o (prikazano na slici 19) dobiveni izlaz će se zapisivati u izlaznu datoteku.

Slika 19. Msxsl komandni prozor

Komandna linija izgleda ovako:

E:\Martin\DIPLOMSKI>msxsl source stylesheet [options]

[param=value...] [xmlns:prefix=uri...]

Najbitnije opcije su:

- o filename ispisuje izlaz u imenovanu datoteku

- v provjerava da li je izvorni dokument valjano pisan

- t daje informaciju o vemenu učitavanja i vremenu transformacije

- koristi se kad se bilo izvorni dokumnet, bilo stylesheet unose sa

stdin ulaza.

Page 63: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

63

Dakle, izvršenjem naredbe msxsl mreza.gml transf.xsl –o proba31.svg

dobili smo izlaznu datoteku u formatu SVG (nebitno je da li napišemo ekstenziju svg

ili svgz jer se transformacija iz GML formata u SVG format obavlja pomoću

transf.xsl, a ekstenzija izlazne datoteke je bitna samo za InternetExplorer jer on

za formate .svg i .svgz po definiciji pokreće SvgViewer koji je ugrađen u njega .

5.3. Rezultat transformacije prikazan u SVG obliku i vizualiziran pomoću MS IE

Izlazna datoteka proba31.svg će izgledati kao na slici 20.

Slika 20. Izlazna datoteka proba31.svg

Page 64: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

64

Karta koju smo dobili predstavlja grafički prikaz dijela razdjelne sheme. Tamno plavi

kružići predstavjaju trafo-stanice čija imena su naznačena desno od svake točke.

Narančastom bojom su prikazani niskonaponski vodovi, a crvenom visokonaponski.

SVG dokument ima neka svojstva interaktivnosti koja su ugrađena u njega pomoću

XSLT-a, a ostvarena jezikom JavaScript. Konkretno, pomicanjem miša preko mreže

(i to samo nacrtanog dijela; pozadina je neosjetljiva jer je prazna) u dnu slike će se

pojaviti trenutne koordinate (ili zadnje koordinate mreže na kojima je miš bio, ako se

trenutno nalazi na praznom području). To je prikazano na slici 21.

Slika 21. Prikazivanje koordinata

Page 65: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

65

Isto tako, ugrađen je i atribut onmouseover koji farba dotični element u zeleno kad

se mišem dođe iznad njega (dakle da znamo što ćemo selektirati). Originalna boja se

vraća kad se mišem maknemo izvan dotičnog elementa (pomoću atributa

onmouseout). Kada se klikne iznad selektiranog objekta dobit će se informacije o

njemu (pomoću atributa onclick).

Atributi koji su vezani uz trafo-stanicu mogu se dobiti klikom iznad kružića koji

predstavlja trafo-stanicu. To je prikazano na slici 22.

Slika 22. Ispisivanje atributa i značajki elementa trafo-stanica

Page 66: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

66

Zanimljivo je pogledati prva tri atributa koji se nalaze u listi značajki svojstava trafo-

stanica. Prvi je atribut ID (identifikacijska oznaka) koji ima vrijednost 123. Ako se

pogleda karta, vidjet će se da je zelen kružić koji označava trafo-stanicu 123. atributi

cx i cy predstavljaju središte kružića kojim je predstavljena trafo-stanica i imaju

vrijednosti cx=326 i cy=383. Te vrijednosti se poklapaju s vrijednostima

koordinata koje se nalaze u dnu zaslona, što je i logično jer klikom miša iznad

dotične točke taj prozor prestaje biti aktivan (aktivan postaje prozor Alert u kojem se

nalaze vrijednosti značajki) pa prema tome u polju koordinata ostaju zapisane zadnje

vrijednosti, a to su upravo koordinate selektirane točke. Time je dokazana i

ispravnost ugrađene funkcije za određivanje koordinata meže.

Na slici 23. se može vidjeti ispis značajki vezanih uz svojstvo vod.

Slika 23. Ispisivanje atributa i značajki elementa vod

Page 67: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

67

Vidljivo je na mapi da je selektiran vod koji spaja TS123 i TS124 jer je taj vod

označen zelenom bojom. U prozoru sa informacijama su navedene tehničke

značajke tog voda.

Još jedno bitno svojstvo SVG-a je da se tekst može selektirati, pretraživati (odnosno,

tekst ostaje tekst). Pretraživanje unutar SVG dokumenta prikazano je na slici 24.

Traženi pojam TS128 SVG je našao i selektirao.

Slika 24. Selektiranje teksta

Page 68: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

68

6. Zaključak U informatičkom svijetu postoje stvari koje su do pred par godina bile potpuno

nepoznate, još jučer su bile luksuz, a danas su već nužnost. GML spada među njih.

U ovom radu je pokazana upotreba GML-a u modelu podataka za energetsku

razdijelnu mrežu. Prikaz takvih GML podataka se postiže transformacijom u SVG

format pomoću pripadnog XSLT-a. Grafički prikaz koji dobijemo je interaktivan. To

znači da možemo kreirati izgled mape (odnosno količine informacija na njoj) prema

vlastitoj želji, odabirom pojedinih objekata, odnosno njihovih svojstava. Također, svi

podaci potrebni za prikaz su učitani odmah.

U ubrzanom vremenu u kakvom živimo, korištenje takvih mapa bitno olakšava

snalaženje u prostoru i GML kao otvoreni standard ima svijetlu budućnost na

području geografskih informacijskih sustava.

Page 69: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

69

7. Literatura [1] C. F. GOLDFARB, P. PRESCOND, The XML Handbook, Prentice-Hall, NJ

1998.

[2] A. WATT, Designing SVG web graphics, New Riders Publishing, 2002.

[3] A. WATT, C. LILLEY, SVG unleashed, SAMS, Indianapolis, 2002.

[4] D. FLANAGAN, JavaScript, The Definitive Guide, O`Reilly, Sebastopol 1996.

[5] A. H. ROBINSON, J. L. MORISSON, Elements of Cartography. John Wiley &

sons, USA, 1995.

[6] Open GIS Consortium Inc. www.opengis.net/index.htm (GML standard)

[7] Galdos Systems Inc. www.galdos.ca (GML primjeri)

[8] ESRI (ArcGis) www.esri.com/arcexplorer (ArcExplorer)

[9] Adobe www.adobe.com/SVG (definicija SVG standarda)

[10] W3C www.w3.org/XSLT (definicija XSLT standarda)

[11] www.w3schools.com/default.asp (primjeri XSLT-a)

[12] http://gip.inha.ac.kr/ (strategija razvoja GML-a)

[13] www.geoinformatics.com (vijesti iz područja GIS-a) [14] epil.urban.uiuc.edu/GIS/ (primjeri vizualizacije GML-a)

[15] W3C http://www.w3.org/XML/ (XML standard)

[16] www.ec-gis.org/Workshops/7ec-gis/papers/pdf/taladoire.pdf (integracija geo-

prostornih podataka)

[17] Microsoft corporation http://www.microsoft.com, (Microsoft XML Parser User's

Manual, Microsoft XML Core Services (MSXML) 4.0)

[18] M. ŽAGAR, GML, Seminarski rad, Fakultet elektrotehnike i računarstva,

Zagreb, 2003.

[19] T. SLIJEPAC, GML/XML model podataka za razdjelnu mrežu, Diplomski rad,

Fakultet elektrotehnike i računarstva, Zagreb, 2004.

[20] A. NAVARRO, C. WHITE, L. BURMAN, Mastering XML, SYBEX, San

Francisco, 2000.

[21] S. HOLZNER, Inside XML, New Riders, Indianapolis, 2001.

Page 70: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

70

8. Sažetak Uvođenje XML-a je omogućilo lagano stvaranje specijaliziranih jezika. Jedan od

takvih je i Geography Markup Language (GML), predložen od strane OpenGIS

Consortiuma (OGC), čija je osnovna namjena prezentacija geografskih podataka.

Standard specificira strukturu za kodiranje podatka, način povezivanja podataka, te

definira prijenos i spremanje podatka u Internet okolini, uključujući i prostorne i

neprostorne značajke pojedinih svojstava. GML modelira geografske podatke kao

svojstva i zbirke svojstava. Međutim, GML ne pruža nikakve informacije o

prezentiranju i zato se sadržaj podataka mora pretvoriti u drugi grafički format.

U ovom diplomskom radu se opisuje vizualizacija GML-a transformiranjem u SVG

(Scalable Vector Graphics) format. Taj format je odabran zato jer se vrlo lako

vizualizira u Web pregledniku MS IE 6.0. Transformacija se obavlja pomoću liste

pravila u XSLT-u.

Page 71: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

71

9. Abstract

Introduction of XML has enabled easy creation of specialized languages. One form

is Geography Markup Language (GML), suggested by OpenGIS Consortium (OGC),

whose basic purpose is presentation of geographic data. Standard specifies the

structure for the coding of data, way of connections between data, define the transfer

and data preparation in Internet environment, including spacial and non-spacial

characteristics of geographic features. GML models geographic data as features and

collections of properties. However, GML does not extend information about the

presentation and therefore the data content must be converted into another graphic

format.

In this graduation thesis visualisation of GML and transforming in SVG (Scalable

Vector Graphics) format is described. This format has been chosen as very easily

visualized in Web browser MS IE 6.0. Transformation is performed using the style

sheet defined by XSLT.

Page 72: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

72

10. Zahvala

Zahvaljujem se svima koji su me podržavali i imali razumijevanja za nastanak ovog

rada. Posebna zahvala mentoru, prof.dr.sc. Davoru Škrlecu, koji mi je omogućio izbor

ove teme, dao mi smjernice po kojima je rad nastao i pružio pomoć kada je to bilo

potrebno.

Page 73: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

73

11. Životopis Rođen sam 14. siječnja 1981. godine u Zagrebu. Nakon završetka osnovne škole

upisujem V. gimnaziju u Zagrebu. Zahvaljujući odličnom uspjehu kroz sve četiri

školske godine, oslobođen sam polaganja mature. Fakultet elektrotehnike i

računarstva u Zagrebu upisujem 1999. godine. 2003. godine dobivam od Fakulteta

priznanje «Josip Lončar» za primjeren uspjeh (5,00) na četvrtoj godini studija

računarstva. Oduvijek sam pokazivao sklonosti prema geografiji pa je i tema

diplomskog rada povezana s tim područjem.

Bavim se raznim sportskim aktivnostima, a posebno plivanjem već 17 godina. U

zadnje vrijeme to je disciplina maraton s dosta dobrim uspjehom. Proteklih godina

studija branio sam boje FER-a. Preostalo slobodno vrijeme namijenjeno je

tečajevima njemačkog i talijanskog jezika te druženju s klasičnom gitarom i

umjetničkom fotografijom.

Page 74: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

74

Dodatak A: gmlFeature.dtd (izvor OpenGIS specifikacija) <?xml version="1.0" encoding="UTF-8"?>

<!-- ============================================================== -->

<!-- G e o g r a p h y -->

<!-- M a r k u p -->

<!-- L a n g u a g e -->

<!-- -->

<!-- ( G M L ) -->

<!-- -->

<!-- F E A T U R E D T D -->

<!-- -->

<!-- Copyright (c) 2000 OGC All Rights Reserved. -->

<!-- ============================================================== -->

<!-- The GML Feature DTD includes the GML Geometry DTD as an external

entity reference. -->

<!ENTITY % GMLGEOMETRYDTD SYSTEM "gmlgeometry.dtd">

%GMLGEOMETRYDTD;

<!-- A feature contains a set of properties (simple and/or geometric). In

addition a feature can optionally contain a description. A feature must

specify its feature type by name (typeName). It may optionally provide an

identifier for use within its containing feature collection (identifier)-->

<!ELEMENT Feature (

description?, name?, boundedBy?,

property*, geometricProperty* )>

<!ATTLIST Feature

typeName CDATA #REQUIRED

identifier CDATA #IMPLIED >

<!-- A feature collection has the same definition as a feature, but in

addition a feature collection may contain featureMembers. The boundedBy

element is mandatory for feature collections. -->

Page 75: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

75

<!ELEMENT FeatureCollection (

description?, name?, boundedBy,

property*, geometricProperty*,

featureMember* )>

<!ATTLIST FeatureCollection

typeName CDATA #REQUIRED

identifier CDATA #IMPLIED >

<!-- A featureMember can be a Feature or a FeatureCollection. The name of

the relationship between the containing FeatureCollection and contained

Features is specified by the typeName attribute. -->

<!ELEMENT featureMember ( Feature | FeatureCollection )>

<!ATTLIST featureMember

typeName CDATA #REQUIRED >

<!-- Simple properties hold the property value as parsed character data.

The type of the value is specified by the type attribute, which defaults to

the 'string' type. The name of the property is specified by the typeName

attribute. -->

<!ELEMENT property (#PCDATA)>

<!ATTLIST property

typeName CDATA #REQUIRED

type ( boolean | integer | real | string ) "string" >

<!-- Geometric properties hold the property value as a contained geometry

element. The name of the property is specified by the typeName attribute.

-->

<!ELEMENT geometricProperty (%GeometryClasses;)>

<!ATTLIST geometricProperty

typeName CDATA #REQUIRED >

Page 76: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

76

Dodatak B: gmlGeometry.dtd (izvor OpenGIS specifikacija) <!-- ============================================================== -->

<!-- G e o g r a p h y -->

<!-- M a r k u p -->

<!-- L a n g u a g e -->

<!-- -->

<!-- ( G M L ) -->

<!-- -->

<!-- G E O M E T R Y D T D -->

<!-- -->

<!-- Copyright (c) 2000 OGC All Rights Reserved. -->

<!-- ============================================================== -->

<!-- the coordinate element holds a list of coordinates as parsed character

data. Note that it does not reference a SRS and does not constitute a

proper geometry class. -->

<!ELEMENT coordinates (#PCDATA) >

<!ATTLIST coordinates

decimal CDATA #IMPLIED

cs CDATA #IMPLIED

ts CDATA #IMPLIED >

<!-- the Box element defines an extent using a pair of coordinates and a

SRS name. -->

<!ELEMENT Box (coordinates) >

<!ATTLIST Box

ID CDATA #IMPLIED

srsName CDATA #REQUIRED >

<!-- ============================================================== -->

<!-- G E O M E T R Y C L A S S D e f i n i t i o n s -->

<!-- ============================================================== -->

<!-- a Point is defined by a single coordinate. -->

<!ELEMENT Point (coordinates) >

<!ATTLIST Point

ID CDATA #IMPLIED

srsName CDATA #IMPLIED >

Page 77: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

77

<!-- a LineString is defined by two or more coordinates, with linear

interoplation between them. -->

<!ELEMENT LineString (coordinates) >

<!ATTLIST LineString

ID CDATA #IMPLIED

srsName CDATA #IMPLIED >

<!-- a Polygon is defined by an outer boundary and zero or more inner

boundaries. These boundaries are themselves defined by LinerRings. -->

<!ELEMENT Polygon (outerBoundaryIs, innerBoundaryIs*) >

<!ATTLIST Polygon

ID CDATA #IMPLIED

srsName CDATA #IMPLIED >

<!ELEMENT outerBoundaryIs (LinearRing) >

<!ELEMENT innerBoundaryIs (LinearRing) >

<!-- a LinearRing is defined by four or more coordinates, with linear

interpolation between them. The first and last coordinates must be

coincident. -->

<!ELEMENT LinearRing (coordinates) >

<!ATTLIST LinearRing

ID CDATA #IMPLIED >

<!-- a MultiPoint is defined by zero or more Points, referenced through a

pointMember element. -->

<!ELEMENT MultiPoint (pointMember+) >

<!ATTLIST MultiPoint

ID CDATA #IMPLIED

srsName CDATA #IMPLIED >

<!ELEMENT pointMember (Point) >

<!-- a MultiLineString is defined by zero or more LineStrings, referenced

through a lineStringMember element. -->

<!ELEMENT MultiLineString (lineStringMember+) >

<!ATTLIST MultiLineString

ID CDATA #IMPLIED

srsName CDATA #IMPLIED >

<!ELEMENT lineStringMember (LineString) >

<!-- a MultiPolygon is defined by zero or more Polygons, referenced through

a polygonMember element. -->

Page 78: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

78

<!ELEMENT MultiPolygon (polygonMember+) >

<!ATTLIST MultiPolygon

ID CDATA #IMPLIED

srsName CDATA #IMPLIED >

<!ELEMENT polygonMember (Polygon) >

<!-- a GeometryCollection is defined by zero or more geometries, referenced

through a geometryMember element. A geometryMember element may be any one

of the geometry classes. -->

<!ENTITY % GeometryClasses "(

Point | LineString | Polygon |

MultiPoint | MultiLineString | MultiPolygon |

GeometryCollection )" >

<!ELEMENT GeometryCollection (geometryMember+) >

<!ATTLIST GeometryCollection

ID CDATA #IMPLIED

srsName CDATA #IMPLIED >

<!ELEMENT geometryMember %GeometryClasses; >

<!-- ============================================================== -->

<!-- G E O M E T R Y P R O P E R T Y D e f i n i t i o n s -->

<!-- ============================================================== -->

<!-- GML provides an 'endorsed' name to define the extent of a feature. The

extent is defined by a Box element, the name of the property is boundedBy.

-->

<!ELEMENT boundedBy (Box) >

<!-- the generic geometryProperty can accept a geometry of any class. -->

<!ELEMENT geometryProperty (%GeometryClasses;) >

<!-- the pointProperty has three descriptive names: centerOf, location and

position. -->

<!ELEMENT pointProperty (Point) >

<!ELEMENT centerOf (Point) >

<!ELEMENT location (Point) >

<!ELEMENT position (Point) >

<!-- the lineStringProperty has two descriptive names: centerLineOf and

edgeOf. -->

Page 79: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

79

<!ELEMENT lineStringProperty (LineString) >

<!ELEMENT centerLineOf (LineString)>

<!ELEMENT edgeOf (LineString)>

<!-- the polygonProperty has two descriptive names: coverage and extentOf.

-->

<!ELEMENT polygonProperty (Polygon) >

<!ELEMENT coverage (Polygon)>

<!ELEMENT extentOf (Polygon)>

<!-- the multiPointProperty has three descriptive names: multiCenterOf,

multiLocation and multiPosition. -->

<!ELEMENT multiPointProperty (MultiPoint) >

<!ELEMENT multiCenterOf (MultiPoint) >

<!ELEMENT multiLocation (MultiPoint) >

<!ELEMENT multiPosition (MultiPoint) >

<!-- the multiLineStringProperty has two descriptive names:

multiCenterLineOf and multiEdgeOf. -->

<!ELEMENT multiLineStringProperty (MultiLineString) >

<!ELEMENT multiCenterLineOf (MultiLineString) >

<!ELEMENT multiEdgeOf (MultiLineString) >

<!-- the multiPolygonProperty has two descriptive names: multiCoverage and

multiExtentOf. -->

<!ELEMENT multiPolygonProperty (MultiPolygon) >

<!ELEMENT multiCoverage (MultiPolygon) >

<!ELEMENT multiExtentOf (MultiPolygon) >

<!ELEMENT geometryCollectionProperty (GeometryCollection) >

<!-- ============================================================== -->

<!-- F E A T U R E M E T A D A T A D e f i n i t i o n s -->

<!-- ============================================================== -->

<!-- Feature metadata, included in GML Geometry DTD for convenience; name

and description are two 'standard' string properties defined by GML. -->

<!ELEMENT name (#PCDATA)>

<!ELEMENT description (#PCDATA)>

Page 80: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

80

Dodatak C: mreza.gml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE FeatureCollection (View Source for full doctype...)>

- <FeatureCollection typeName="ulazni podaci">

- <boundedBy> <!-- okvir >

- <Box srsName="EPSG:4326">

<coordinates>100, 100 600, 600</coordinates>

</Box>

</boundedBy>

- <featureMember typeName="TS"> <!-- trafostanica>

- <FeatureCollection typeName="123">

- <boundedBy>

- <Box srsName="EPSG:4326">

<coordinates>100, 100 600, 600</coordintes>

</Box>

</boundedBy>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <MultiPoint>

- <pointMember>

- <Point ID="123">

<coordinates>326,383</coordinates> <!—definiranje pozicije>

</Point>

</pointMember>

</MultiPoint>

</geometryMember>

</GeometryCollection>

</geometricProperty>

- <featureMember typeName="pouzdanost"> <!-- atributi>

Page 81: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

81

- <Feature typeName="dodaci1">

<property typeName="Nc" type="integer">400</property>

<property typeName="Lc" type="real">456</property>

<property typeName="a" type="real">34</property>

</Feature>

</featureMember>

- <featureMember typeName="pouzdanost">

- <Feature typeName="dodaci2">

<property typeName="lambda" type="real">0.235</property>

<property typeName="r" type="real">456</property>

<property typeName="U" type="real">34</property>

<property typeName="komp" type="real">6</property>

<property typeName="N" type="integer">67</property>

<property typeName="La" type="real">898</property>

</Feature>

</featureMember>

- <featureMember typeName="snaga1">

- <Feature typeName="snaga">

<property typeName="Sn" type="real">400</property>

<property typeName="P_tereta" type="real">78.59</property>

<property typeName="Q_tereta" type="real">3</property>

<property typeName="S_tereta" type="real">98</property>

<property typeName="cos_fi" type="real">0.56</property>

</Feature>

</featureMember>

</FeatureCollection>

</featureMember>

- <featureMember typeName="vod"> <!-- vod>

- <Feature typeName="344"> <!—atributi vezani uz vod>

<property typeName="Un" type="real">22000</property>

Page 82: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

82

<property typeName="tipIPresjek" type="string">XHP48-

A,3x(1x185mm2)</property>

<property typeName="duljina" type="real">78.56</property>

<property typeName="R" type="real">1.345</property>

<property typeName="Xl" type="real">0.567</property>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <Polygon>

- <outerBoundaryIs>

- <LinearRing>

<coordinates>326,383 450,458 430,488</coordinates>

</LinearRing>

</outerBoundaryIs>

</Polygon>

</geometryMember>

</GeometryCollection>

</geometricProperty>

</Feature>

</featureMember>

- <featureMember typeName="vod">

- <Feature typeName="356">

<property typeName="Un" type="real">220</property>

<property typeName="tipIPresjek" type="string">XHP48-

A,3x(1x185mm2)</property>

<property typeName="duljina" type="real">300</property>

<property typeName="R" type="real">0.45</property>

<property typeName="Xl" type="real">0.45</property>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

Page 83: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

83

- <Polygon>

- <outerBoundaryIs>

- <LinearRing>

<coordinates>326,383 133,540 170,550</coordinates>

</LinearRing>

</outerBoundaryIs>

</Polygon>

</geometryMember>

</GeometryCollection>

</geometricProperty>

</Feature>

</featureMember>

- <featureMember typeName="TS">

- <FeatureCollection typeName="231">

- <boundedBy>

- <Box srsName="EPSG:4326">

<coordinates>100, 100 600, 600</coordinates>

</Box>

</boundedBy>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <MultiPoint>

- <pointMember>

- <Point ID="231">

<coordinates>450,458</coordinates>

</Point>

</pointMember>

</MultiPoint>

</geometryMember>

</GeometryCollection>

Page 84: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

84

</geometricProperty>

- <featureMember typeName="pouzdanost">

- <Feature typeName="dodaci1">

<property typeName="Nc" type="integer">400</property>

<property typeName="Lc" type="real">456</property>

<property typeName="a" type="real">34</property>

</Feature>

</featureMember>

- <featureMember typeName="pouzdanost2">

- <Feature typeName="dodaci2">

<property typeName="lambda" type="real">0.17</property>

<property typeName="r" type="real">123</property>

<property typeName="U" type="real">34</property>

<property typeName="komp" type="real">6</property>

<property typeName="N" type="integer">67</property>

<property typeName="La" type="real">898</property>

</Feature>

</featureMember>

- <featureMember typeName="snaga1">

- <Feature typeName="snaga">

<property typeName="Sn" type="real">400</property>

<property typeName="P_tereta" type="real">56</property>

<property typeName="Q_tereta" type="real">34.23</property>

<property typeName="S_tereta" type="real">45.9</property>

<property typeName="cos_fi" type="real">0.231</property>

</Feature>

</featureMember>

</FeatureCollection>

</featureMember>

- <featureMember typeName="TS">

- <FeatureCollection typeName="45">

Page 85: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

85

- <boundedBy>

- <Box srsName="EPSG:4326">

<coordinates>100, 100 600, 600</coordinates>

</Box>

</boundedBy>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <MultiPoint>

- <pointMember>

- <Point ID="45">

<coordinates>430,488</coordinates>

</Point>

</pointMember>

</MultiPoint>

</geometryMember>

</GeometryCollection>

</geometricProperty>

- <featureMember typeName="pouzdanost">

- <Feature typeName="dodaci1">

<property typeName="Nc" type="integer">400</property>

<property typeName="Lc" type="real">456</property>

<property typeName="a" type="real">34</property>

</Feature>

</featureMember>

- <featureMember typeName="pouzdanost2">

- <Feature typeName="dodaci2">

<property typeName="lambda" type="real">0.567</property>

<property typeName="r" type="real">456</property>

<property typeName="U" type="real">34</property>

<property typeName="komp" type="real">6</property>

Page 86: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

86

<property typeName="N" type="integer">67</property>

<property typeName="La" type="real">898</property>

</Feature>

</featureMember>

- <featureMember typeName="snaga1">

- <Feature typeName="snaga">

<property typeName="Sn" type="real">400</property>

<property typeName="P_tereta" type="real">56</property>

<property typeName="Q_tereta" type="real">3</property>

<property typeName="S_tereta" type="real">98</property>

<property typeName="cos_fi" type="real">0.9</property>

</Feature>

</featureMember>

</FeatureCollection>

</featureMember>

- <featureMember typeName="TS">

- <FeatureCollection typeName="67">

- <boundedBy>

- <Box srsName="EPSG:4326">

<coordinates>100, 100 600, 600</coordinates>

</Box>

</boundedBy>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <MultiPoint>

- <pointMember>

- <Point ID="67">

<coordinates>170,550</coordinates>

</Point>

</pointMember>

Page 87: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

87

</MultiPoint>

</geometryMember>

</GeometryCollection>

</geometricProperty>

- <featureMember typeName="pouzdanost">

- <Feature typeName="dodaci1">

<property typeName="Nc" type="integer">400</property>

<property typeName="Lc" type="real">456</property>

<property typeName="a" type="real">34</property>

</Feature>

</featureMember>

- <featureMember typeName="pouzdanost2">

- <Feature typeName="dodaci2">

<property typeName="lambda" type="real">0.78</property>

<property typeName="r" type="real">100</property>

<property typeName="U" type="real">34</property>

<property typeName="komp" type="real">7.9</property>

<property typeName="N" type="integer">9</property>

<property typeName="La" type="real">898</property>

</Feature>

</featureMember>

- <featureMember typeName="snaga1">

- <Feature typeName="snaga">

<property typeName="Sn" type="real">400</property>

<property typeName="P_tereta" type="real">0.978</property>

<property typeName="Q_tereta" type="real">12.7</property>

<property typeName="S_tereta" type="real">98</property>

<property typeName="cos_fi" type="real">0.12</property>

</Feature>

</featureMember>

</FeatureCollection>

Page 88: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

88

</featureMember>

- <featureMember typeName="TS">

- <FeatureCollection typeName="124">

- <boundedBy>

- <Box srsName="EPSG:4326">

<coordinates>100, 100 600, 600</coordinates>

</Box>

</boundedBy>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <MultiPoint>

- <pointMember>

- <Point ID="124">

<coordinates>315,290</coordinates>

</Point>

</pointMember>

</MultiPoint>

</geometryMember>

</GeometryCollection>

</geometricProperty>

- <featureMember typeName="pouzdanost">

- <Feature typeName="dodaci1">

<property typeName="Nc" type="integer">400</property>

<property typeName="Lc" type="real">10</property>

<property typeName="a" type="real">0.9</property>

</Feature>

</featureMember>

- <featureMember typeName="pouzdanost2">

- <Feature typeName="dodaci2">

<property typeName="lambda" type="real">0.0078</property>

Page 89: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

89

<property typeName="r" type="real">456</property>

<property typeName="U" type="real">34</property>

<property typeName="komp" type="real">6</property>

<property typeName="N" type="integer">67</property>

<property typeName="La" type="real">898</property>

</Feature>

</featureMember>

- <featureMember typeName="snaga1">

- <Feature typeName="snaga">

<property typeName="Sn" type="real">400</property>

<property typeName="P_tereta" type="real">56</property>

<property typeName="Q_tereta" type="real">56.9</property>

<property typeName="S_tereta" type="real">98</property>

<property typeName="cos_fi" type="real">0.98</property>

</Feature>

</featureMember>

</FeatureCollection>

</featureMember>

- <featureMember typeName="TS">

- <FeatureCollection typeName="127">

- <boundedBy>

- <Box srsName="EPSG:4326">

<coordinates>100, 100 600, 600</coordinates>

</Box>

</boundedBy>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <MultiPoint>

- <pointMember>

- <Point ID="127">

Page 90: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

90

<coordinates>150,170</coordinates>

</Point>

</pointMember>

</MultiPoint>

</geometryMember>

</GeometryCollection>

</geometricProperty>

- <featureMember typeName="pouzdanost">

- <Feature typeName="dodaci1">

<property typeName="Nc" type="integer">400</property>

<property typeName="Lc" type="real">456</property>

<property typeName="a" type="real">34</property>

</Feature>

</featureMember>

- <featureMember typeName="pouzdanost2">

- <Feature typeName="dodaci2">

<property typeName="lambda" type="real">0.78</property>

<property typeName="r" type="real">456</property>

<property typeName="U" type="real">34</property>

<property typeName="komp" type="real">6</property>

<property typeName="N" type="integer">67</property>

<property typeName="La" type="real">0.89</property>

</Feature>

</featureMember>

- <featureMember typeName="snaga1">

- <Feature typeName="snaga">

<property typeName="Sn" type="real">400</property>

<property typeName="P_tereta" type="real">3</property>

<property typeName="Q_tereta" type="real">3</property>

<property typeName="S_tereta" type="real">3</property>

<property typeName="cos_fi" type="real">0.56</property>

Page 91: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

91

</Feature>

</featureMember>

</FeatureCollection>

</featureMember>

- <featureMember typeName="TS">

- <FeatureCollection typeName="128">

- <boundedBy>

- <Box srsName="EPSG:4326">

<coordinates>100, 100 600, 600</coordinates>

</Box>

</boundedBy>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <MultiPoint>

- <pointMember>

- <Point ID="128">

<coordinates>500,200</coordinates>

</Point>

</pointMember>

</MultiPoint>

</geometryMember>

</GeometryCollection>

</geometricProperty>

- <featureMember typeName="pouzdanost">

- <Feature typeName="dodaci1">

<property typeName="Nc" type="integer">400</property>

<property typeName="Lc" type="real">456</property>

<property typeName="a" type="real">34</property>

</Feature>

</featureMember>

Page 92: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

92

- <featureMember typeName="pouzdanost2">

- <Feature typeName="dodaci2">

<property typeName="lambda" type="real">0.3</property>

<property typeName="r" type="real">6</property>

<property typeName="U" type="real">1.2</property>

<property typeName="komp" type="real">6</property>

<property typeName="N" type="integer">67</property>

<property typeName="La" type="real">898</property>

</Feature>

</featureMember>

- <featureMember typeName="snaga1">

- <Feature typeName="snaga">

<property typeName="Sn" type="real">400</property>

<property typeName="P_tereta" type="real">0</property>

<property typeName="Q_tereta" type="real">0</property>

<property typeName="S_tereta" type="real">0</property>

<property typeName="cos_fi" type="real">0.813</property>

</Feature>

</featureMember>

</FeatureCollection>

</featureMember>

- <featureMember typeName="vod">

- <Feature typeName="358">

<property typeName="Un" type="real">22000</property>

<property typeName="tipIPresjek" type="string">XHP48-

A,3x(1x185mm2)</property>

<property typeName="duljina" type="real">100</property>

<property typeName="R" type="real">0.07</property>

<property typeName="Xl" type="real">0.008</property>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

Page 93: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

93

- <geometryMember>

- <Polygon>

- <outerBoundaryIs>

- <LinearRing>

<coordinates>326,383 315,290</coordinates>

</LinearRing>

</outerBoundaryIs>

</Polygon>

</geometryMember>

</GeometryCollection>

</geometricProperty>

</Feature>

</featureMember>

- <featureMember typeName="vod">

- <Feature typeName="351">

<property typeName="Un" type="real">220</property>

<property typeName="tipIPresjek" type="string">XHP48-

A,3x(1x185mm2)</property>

<property typeName="duljina" type="real">300</property>

<property typeName="R" type="real">0.345</property>

<property typeName="Xl" type="real">0.02</property>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <Polygon>

- <outerBoundaryIs>

- <LinearRing>

<coordinates>315,290 500,200</coordinates>

</LinearRing>

</outerBoundaryIs>

</Polygon>

Page 94: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

94

</geometryMember>

</GeometryCollection>

</geometricProperty>

</Feature>

</featureMember>

- <featureMember typeName="vod">

- <Feature typeName="356">

<property typeName="Un" type="real">220</property>

<property typeName="tipIPresjek" type="string">XHP48-

A,3x(1x185mm2)</property>

<property typeName="duljina" type="real">3470</property>

<property typeName="R" type="real">0.578</property>

<property typeName="Xl" type="real">0.123</property>

- <geometricProperty typeName="geometricCollectionProperty">

- <GeometryCollection srsName="EPSG:4326">

- <geometryMember>

- <Polygon>

- <outerBoundaryIs>

- <LinearRing>

<coordinates>150,170 315,290</coordinates>

</LinearRing>

</outerBoundaryIs>

</Polygon>

</geometryMember>

</GeometryCollection>

</geometricProperty>

</Feature>

</featureMember>

</FeatureCollection>

Page 95: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

95

Dodatak D: transf.xsl

<?xml version="1.0" ?>

- <!--

-->

- <xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

- <!--

-->

<xsl:output method="xml" doctype-

system="http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-

20000303-stylable.dtd" doctype-public="-//W3C//DTD SVG 20000303

Stylable//EN" />

- <!--

-->

- <xsl:template match="/">

- <svg xml:space="preserve" width="800" height="800"

onmousemove="pokret(evt)"> <!— preserve služi za ljepši ispis u SVG>

- <script language="JavaScript" type="text/javascript">

- <![CDATA[

function onmouseover(evt) { // mis je preko

var elem = evt.target;

var style = elem.getStyle();

style.setProperty("stroke", "green"); // promijeni u zeleno

}

function onmouseout_hvod(evt) { // kada se maknemo mišem

var elem = evt.target; // izvan visokonaponskog voda

var style = elem.getStyle();

style.setProperty("stroke", "red"); // vrati ga u crveno

}

Page 96: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

96

function onmouseout_lvod(evt) { // za niskonaponski vod

var elem = evt.target;

var style = elem.getStyle();

style.setProperty("stroke", "orange"); // vrati ga u narančasto

}

function informe_vod(evt) { // popis atributa elementa vod

objekt=evt.target;att=objekt.attributes;chaine='Podaci o elementu:\n';

for (i=0;i<att.length;i++)

{if (att.item(i).name=='onmouseover' || att.item(i).name=='onmouseout' ||

att.item(i).name=='style' || att.item(i).name=='r' ||

att.item(i).name=='onclick' || att.item(i).name=='d') {}else

{ chaine=chaine+'\n'+att.item(i).name+' : '+att.item(i).value}};

alert(chaine) // ispis u prozoru

}

function onmouseout_ts(evt) { // maknemo se od trafostanice

var elem = evt.target;

var style = elem.getStyle();

style.setProperty("stroke", "indigo"); // farbaj u svjetlo plavu

}

function informe_ts(evt) { // atributi vezani uz trafostanicu

objekt=evt.target;att=objekt.attributes;chaine='Podaci o elementu:\n';

for (i=0;i<att.length;i++)

{if (att.item(i).name=='onmouseover' || att.item(i).name=='onmouseout' ||

att.item(i).name=='style' || att.item(i).name=='r' ||

att.item(i).name=='onclick') {}else

{ chaine=chaine+'\n'+att.item(i).name+' : '+att.item(i).value}};

alert(chaine) // ispis

}

function pokret(evt) {xm=evt.clientX;ym=evt.clientY; // interaktivnost

svgdoc=evt.target.ownerDocument; // koordinata

svgdoc.getElementById('pos').firstChild.setData('Koordinate: '+xm+'

'+ym);

}

Page 97: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

97

]]>

</script>

<text id="pos" x="200" y="600" style="font-size:16">Pomicite misa iznad mreze i

ovdje ce pisati koordinate</text>

<xsl:apply-templates select="/FeatureCollection/featureMember/Feature" />

<!-- poziva template za vod>

<xsl:apply-templates select="//featureMember/FeatureCollection" />

<!-- poziva template za trafostanicu>

</svg>

</xsl:template>

- <!--

template za trafostanicu

-->

- <xsl:template match="//featureMember/FeatureCollection">

- <xsl:element name="text">

<xsl:attribute name="style">font-family:Verdana;font-weight:bold; font-

size:14; fill:blue;</xsl:attribute>

<xsl:variable name="coor"

select="./geometricProperty/GeometryCollection/geometryMember/MultiPoint/

pointMember/Point/coordinates" />

<xsl:variable name="tcoor" select="normalize-space($coor)" />

<xsl:variable name="xtcoor" select="substring-before($tcoor,',')" />

<xsl:variable name="ytcoor" select="substring-after($tcoor,',')" />

- <xsl:attribute name="x">

<xsl:value-of select="$xtcoor + 7" />

</xsl:attribute>

- <xsl:attribute name="y">

<xsl:value-of select="$ytcoor" />

</xsl:attribute>

<xsl:value-of select="..//@typeName" /> <!—ispis imena trafostanice>

<xsl:value-of select=".//@typeName" />

</xsl:element>

- <xsl:element name="circle">

<xsl:attribute name="style">fill:indigo;fill-opacity:1.0; stroke:indigo; stroke-

width:0.1cm</xsl:attribute>

<xsl:attribute name="onmouseover">onmouseover(evt)</xsl:attribute>

<xsl:attribute name="onmouseout">onmouseout_ts(evt)</xsl:attribute>

Page 98: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

98

<xsl:attribute name="onclick">informe_ts(evt)</xsl:attribute>

<xsl:variable name="coor"

select="./geometricProperty/GeometryCollection/geometryMember/

MultiPoint/pointMember/Point/coordinates" />

<xsl:variable name="tcoor" select="normalize-space($coor)" />

<xsl:variable name="xtcoor" select="substring-before($tcoor,',')" />

<xsl:variable name="ytcoor" select="substring-after($tcoor,',')" />

<xsl:attribute name="Trafo-stanica" /> <!-- definiranje atributa koji će se

pojaviti u prozoru ispisa>

- <xsl:attribute name="ID">

<xsl:value-of select=".//@typeName" />

</xsl:attribute>

- <xsl:attribute name="cx">

<xsl:value-of select="$xtcoor" />

</xsl:attribute>

- <xsl:attribute name="cy">

<xsl:value-of select="$ytcoor" />

</xsl:attribute>

<xsl:attribute name="r">4</xsl:attribute>

<xsl:attribute name="dodaci1" />

- <xsl:attribute name="Nc">

<xsl:value-of select=

"./featureMember/Feature/property[.//@typeName='Nc']" />

</xsl:attribute>

- <xsl:attribute name="Lc">

<xsl:value-of select=

"./featureMember/Feature/property[.//@typeName='Lc']" />

</xsl:attribute>

- <xsl:attribute name="a">

<xsl:value-of select="./featureMember/Feature/property[.//@typeName='a']"

/>

</xsl:attribute>

<xsl:attribute name="dodaci2" />

- <xsl:attribute name="lambda">

<xsl:value-of

select="./featureMember/Feature/property[.//@typeName='lambda']" />

</xsl:attribute>

Page 99: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

99

- <xsl:attribute name="Ru">

<xsl:value-of select="./featureMember/Feature/property[.//@typeName='r']"

/>

</xsl:attribute>

- <xsl:attribute name="U">

<xsl:value-of select="./featureMember/Feature/property[.//@typeName='U']"

/>

</xsl:attribute>

- <xsl:attribute name="komp">

<xsl:value-of

select="./featureMember/Feature/property[.//@typeName='komp']" />

</xsl:attribute>

- <xsl:attribute name="N">

<xsl:value-of select="./featureMember/Feature/property[.//@typeName='N']"

/>

</xsl:attribute>

- <xsl:attribute name="La">

<xsl:value-of select="./featureMember/Feature/property[.//@typeName='La']"

/>

</xsl:attribute>

<xsl:attribute name="snaga" />

- <xsl:attribute name="Sn">

<xsl:value-of

select="./featureMember/Feature/property[.//@typeName='Sn']" />

</xsl:attribute>

- <xsl:attribute name="P_tereta">

<xsl:value-of

select="./featureMember/Feature/property[.//@typeName='P_tereta']" />

</xsl:attribute>

- <xsl:attribute name="Q_tereta">

<xsl:value-of

select="./featureMember/Feature/property[.//@typeName='Q_tereta']" />

</xsl:attribute>

- <xsl:attribute name="S_tereta">

<xsl:value-of

select="./featureMember/Feature/property[.//@typeName='S_tereta']" />

</xsl:attribute>

Page 100: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

100

- <xsl:attribute name="cos_fi">

<xsl:value-of

select="./featureMember/Feature/property[.//@typeName='cos_fi']" />

</xsl:attribute>

</xsl:element>

</xsl:template>

- <!--

vod

-->

- <xsl:template match="/FeatureCollection/featureMember/Feature">

<xsl:variable name="clist"

select="./geometricProperty/GeometryCollection/geometryMember/Polygon/o

uterBoundaryIs/LinearRing/coordinates" />

<xsl:variable name="tclist" select="normalize-space($clist)" />

<xsl:variable name="start" select="concat( 'M ',translate(substring-

before($tclist,' '),',',' '))" />

<xsl:variable name="rest" select="substring-after($tclist,' ')" />

- <xsl:variable name="all">

- <xsl:call-template name="transform-coords">

<xsl:with-param name="list" select="$rest" />

</xsl:call-template>

</xsl:variable>

<xsl:variable name="all2" select="concat($start,$all)" />

<xsl:variable name="napon" select="./property[.//@typeName='Un']" />

- <xsl:element name="path">

<xsl:attribute name="strujni_vod" />

- <xsl:attribute name="ID">

<xsl:value-of select=".//@typeName" />

</xsl:attribute>

- <xsl:choose>

- <xsl:when test="$napon > 10000"> <!-- za visokonaponski vod>

<xsl:attribute name="style">stroke:red;fill:green;fill-opacity:0.0;stroke-

width:0.15cm</xsl:attribute>

<xsl:attribute name="onmouseout">onmouseout_hvod(evt)</xsl:attribute>

</xsl:when>

- <xsl:otherwise> <!-- za niskonaponski vod>

Page 101: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

101

<xsl:attribute name="style">stroke:orange;fill:green;fill-opacity:0.0;stroke-

width:0.07cm</xsl:attribute>

<xsl:attribute name="onmouseout">onmouseout_lvod(evt)</xsl:attribute>

</xsl:otherwise>

</xsl:choose>

<xsl:attribute name="onmouseover">onmouseover(evt)</xsl:attribute>

<xsl:attribute name="onclick">informe_vod(evt)</xsl:attribute>

- <xsl:attribute name="d"> <!-- oblik linije voda>

<xsl:value-of select="$all2" />

</xsl:attribute>

- <xsl:attribute name="Un"> <!-- atributi vezani uz vod>

<xsl:value-of select="./property[.//@typeName='Un']" />

</xsl:attribute>

- <xsl:attribute name="tip_i_presjek">

<xsl:value-of select="./property[.//@typeName='tipIPresjek']" />

</xsl:attribute>

- <xsl:attribute name="duljina">

<xsl:value-of select="./property[.//@typeName='duljina']" />

</xsl:attribute>

- <xsl:attribute name="R">

<xsl:value-of select="./property[.//@typeName='R']" />

</xsl:attribute>

- <xsl:attribute name="Xl">

<xsl:value-of select="./property[.//@typeName='Xl']" />

</xsl:attribute>

</xsl:element>

</xsl:template>

- <!--

imenovani template za čitanje koordinata iz GML-a i prebacivanje u SVG format

-->

- <xsl:template name="transform-coords">

<xsl:param name="list" />

<xsl:variable name="wlist" select="normalize-space($list)" />

<xsl:variable name="first" select="translate(substring-before($wlist,' '),',',' ')"

/>

<xsl:variable name="rest" select="substring-after($wlist,' ')" />

- <xsl:choose>

Page 102: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

102

- <xsl:when test="string-length($rest) > 0">

- <xsl:variable name="all">

- <xsl:call-template name="transform-coords">

<xsl:with-param name="list" select="$rest" />

</xsl:call-template>

</xsl:variable>

<xsl:value-of select="concat(' L ',concat($first,$all))" />

</xsl:when>

- <xsl:otherwise>

<xsl:value-of select="concat(' L ',translate($wlist,',',' '))" />

</xsl:otherwise>

</xsl:choose>

</xsl:template>

</xsl:stylesheet>

Page 103: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

103

Dodatak E: SVG source dobiven transformacijom dokumenta mreza.gml

<?xml version="1.0" encoding="UTF-16"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN"

"http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd">

<svg xml:space="preserve" width="800" height="800" onmousemove="pokret(evt)">

<script language="JavaScript" type="text/javascript">

function onmouseover(evt) {

var elem = evt.target;

var style = elem.getStyle();

style.setProperty("stroke", "green");

}

function onmouseout_hvod(evt) {

var elem = evt.target;

var style = elem.getStyle();

style.setProperty("stroke", "red");

}

function onmouseout_lvod(evt) {

var elem = evt.target;

var style = elem.getStyle();

style.setProperty("stroke", "orange");

}

function informe_vod(evt) {

objekt=evt.target;att=objekt.attributes;chaine='Podaci o elementu:\n';

for (i=0;i&lt;att.length;i++)

{if (att.item(i).name=='onmouseover' || att.item(i).name=='onmouseout' ||

att.item(i).name=='style' || att.item(i).name=='r' || att.item(i).name=='onclick' ||

att.item(i).name=='d') {}else

{ chaine=chaine+'\n'+att.item(i).name+' : '+att.item(i).value}};

confirm(chaine)

}

function onmouseout_ts(evt) {

var elem = evt.target;

var style = elem.getStyle();

style.setProperty("stroke", "indigo");

}

Page 104: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

104

function informe_ts(evt) {

objekt=evt.target;att=objekt.attributes;chaine='Podaci o elementu:\n';

for (i=0;i&lt;att.length;i++)

{if (att.item(i).name=='onmouseover' || att.item(i).name=='onmouseout' ||

att.item(i).name=='style' || att.item(i).name=='r' || att.item(i).name=='onclick') {}else

{ chaine=chaine+'\n'+att.item(i).name+' : '+att.item(i).value}};

confirm(chaine)

}

function pokret(evt) {xm=evt.clientX;ym=evt.clientY;

svgdoc=evt.target.ownerDocument;

svgdoc.getElementById('pos').firstChild.setData('Koordinate: '+xm+' '+ym);

}

</script>

<text id="pos" x="200" y="600" style="font-size:16">Pomicite misa iznad

mreze i ovdje ce pisati koordinate</text>

<path strujni_vod="" ID="344" style="stroke:red;fill:green;fill-

opacity:0.0;stroke-width:0.15cm" onmouseout="onmouseout_hvod(evt)"

onmouseover="onmouseover(evt)" onclick="informe_vod(evt)" d="M 326 383 L 450 458

L 430 488" Un="22000" tip_i_presjek="XHP48-A,3x(1x185mm2)" duljina="78.56"

R="1.345" Xl="0.567" />

<path strujni_vod="" ID="356" style="stroke:orange;fill:green;fill-

opacity:0.0;stroke-width:0.07cm" onmouseout="onmouseout_lvod(evt)"

onmouseover="onmouseover(evt)" onclick="informe_vod(evt)" d="M 326 383 L 133 540

L 170 550" Un="220" tip_i_presjek="XHP48-A,3x(1x185mm2)" duljina="300" R="0.45"

Xl="0.45" />

<path strujni_vod="" ID="358" style="stroke:red;fill:green;fill-

opacity:0.0;stroke-width:0.15cm" onmouseout="onmouseout_hvod(evt)"

onmouseover="onmouseover(evt)" onclick="informe_vod(evt)" d="M 326 383 L 315

290" Un="22000" tip_i_presjek="XHP48-A,3x(1x185mm2)" duljina="100" R="0.07"

Xl="0.008" />

<path strujni_vod="" ID="351" style="stroke:orange;fill:green;fill-

opacity:0.0;stroke-width:0.07cm" onmouseout="onmouseout_lvod(evt)"

onmouseover="onmouseover(evt)" onclick="informe_vod(evt)" d="M 315 290 L 500

Page 105: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

105

200" Un="220" tip_i_presjek="XHP48-A,3x(1x185mm2)" duljina="300" R="0.345"

Xl="0.02" />

<path strujni_vod="" ID="356" style="stroke:orange;fill:green;fill-

opacity:0.0;stroke-width:0.07cm" onmouseout="onmouseout_lvod(evt)"

onmouseover="onmouseover(evt)" onclick="informe_vod(evt)" d="M 150 170 L 315

290" Un="220" tip_i_presjek="XHP48-A,3x(1x185mm2)" duljina="3470" R="0.578"

Xl="0.123" />

<text style="font-family:Verdana;font-weight:bold; font-size:14; fill:blue;"

x="333" y="383">TS123</text>

<circle style="fill:indigo;fill-opacity:1.0; stroke:indigo; stroke-width:0.1cm"

onmouseover="onmouseover(evt)" onmouseout="onmouseout_ts(evt)"

onclick="informe_ts(evt)" Trafo-stanica="" ID="123" cx="326" cy="383" r=" 4"

dodaci1="" Nc="400" Lc="456" a="34" dodaci2="" lambda="0.235" Ru="456" U="34"

komp="6" N="67" La="898" snaga="" Sn="400" P_tereta="78.59" Q_tereta="3"

S_tereta="98" cos_fi="0.56" />

<text style="font-family:Verdana;font-weight:bold; font-size:14; fill:blue;"

x="457" y="458">TS231</text>

<circle style="fill:indigo;fill-opacity:1.0; stroke:indigo; stroke-width:0.1cm"

onmouseover="onmouseover(evt)" onmouseout="onmouseout_ts(evt)"

onclick="informe_ts(evt)" Trafo-stanica="" ID="231" cx="450" cy="458" r=" 4"

dodaci1="" Nc="400" Lc="456" a="34" dodaci2="" lambda="0.17" Ru="123" U="34"

komp="6" N="67" La="898" snaga="" Sn="400" P_tereta="56" Q_tereta="34.23"

S_tereta="45.9" cos_fi="0.231" />

<text style="font-family:Verdana;font-weight:bold; font-size:14; fill:blue;"

x="437" y="488">TS45</text>

<circle style="fill:indigo;fill-opacity:1.0; stroke:indigo; stroke-width:0.1cm"

onmouseover="onmouseover(evt)" onmouseout="onmouseout_ts(evt)"

onclick="informe_ts(evt)" Trafo-stanica="" ID="45" cx="430" cy="488" r=" 4"

dodaci1="" Nc="400" Lc="456" a="34" dodaci2="" lambda="0.567" Ru="456" U="34"

komp="6" N="67" La="898" snaga="" Sn="400" P_tereta="56" Q_tereta="3"

S_tereta="98" cos_fi="0.9" />

Page 106: GML kao podloga geo-prostornoj interoperabilnosti · Geografska informacija nije ograničena kao samostalan sustav ili jedna homogena mreža. Ona je dijeljena u heterogenim okolinama

106

<text style="font-family:Verdana;font-weight:bold; font-size:14; fill:blue;"

x="177" y="550">TS67</text>

<circle style="fill:indigo;fill-opacity:1.0; stroke:indigo; stroke-width:0.1cm"

onmouseover="onmouseover(evt)" onmouseout="onmouseout_ts(evt)"

onclick="informe_ts(evt)" Trafo-stanica="" ID="67" cx="170" cy="550" r=" 4"

dodaci1="" Nc="400" Lc="456" a="34" dodaci2="" lambda="0.78" Ru="100" U="34"

komp="7.9" N="9" La="898" snaga="" Sn="400" P_tereta="0.978" Q_tereta="12.7"

S_tereta="98" cos_fi="0.12" />

<text style="font-family:Verdana;font-weight:bold; font-size:14; fill:blue;"

x="322" y="290">TS124</text>

<circle style="fill:indigo;fill-opacity:1.0; stroke:indigo; stroke-width:0.1cm"

onmouseover="onmouseover(evt)" onmouseout="onmouseout_ts(evt)"

onclick="informe_ts(evt)" Trafo-stanica="" ID="124" cx="315" cy="290" r=" 4"

dodaci1="" Nc="400" Lc="10" a="0.9" dodaci2="" lambda="0.0078" Ru="456" U="34"

komp="6" N="67" La="898" snaga="" Sn="400" P_tereta="56" Q_tereta="56.9"

S_tereta="98" cos_fi="0.98" />

<text style="font-family:Verdana;font-weight:bold; font-size:14; fill:blue;"

x="157" y="170">TS127</text>

<circle style="fill:indigo;fill-opacity:1.0; stroke:indigo; stroke-width:0.1cm"

onmouseover="onmouseover(evt)" onmouseout="onmouseout_ts(evt)"

onclick="informe_ts(evt)" Trafo-stanica="" ID="127" cx="150" cy="170" r=" 4"

dodaci1="" Nc="400" Lc="456" a="34" dodaci2="" lambda="0.78" Ru="456" U="34"

komp="6" N="67" La="0.89" snaga="" Sn="400" P_tereta="3" Q_tereta="3"

S_tereta="3" cos_fi="0.56" />

<text style="font-family:Verdana;font-weight:bold; font-size:14; fill:blue;"

x="507" y="200">TS128</text>

<circle style="fill:indigo;fill-opacity:1.0; stroke:indigo; stroke-width:0.1cm"

onmouseover="onmouseover(evt)" onmouseout="onmouseout_ts(evt)"

onclick="informe_ts(evt)" Trafo-stanica="" ID="128" cx="500" cy="200" r=" 4"

dodaci1="" Nc="400" Lc="456" a="34" dodaci2="" lambda="0.3" Ru="6" U="1.2"

komp="6" N="67" La="898" snaga="" Sn="400" P_tereta="0" Q_tereta="0"

S_tereta="0" cos_fi="0.813" />

</svg>