scieee AI-readable full text Open interactive document viewer

Servei Web pel CCU amb GeoMedia WebMap 6.1

Ruiz Yuste, Albert

Abstract

Aquest projecte realitza un estudi detallat sobre el mètode generació d’entorns web mitjançant la família d’aplicacions GeoMedia d’Intergraph. Aquest estudi demostra que és viable el desenvolupament d’un geoportal web en un entorn intranet amb GeoMedia WebMap 6.1. A més, s’implementaran operacions d’anàlisi pel CCU semblants a les actuals en escriptori per a GeoMedia, desenvolupades en projectes anteriors per en David Perelló i en Javier Gómez.

Full text

Enginyeria Tècnica de Telecomunicació: Especialitat Telemàtica Servei Web pel CCU amb GeoMedia WebMap 6.1 Albert Ruiz Yuste Miquel Roca i Cisa Tardor 2009 I Resum: Aquest projecte realitza un estudi detallat sobre el mètode generació d’entorns web mitjançant la família d’aplicacions GeoMedia d’Intergraph. Aquest estudi demostra que és viable el desenvolupament d’un geoportal web en un entorn intranet amb GeoMedia WebMap 6.1. A més, s’implementaran operacions d’anàlisi pel CCU semblants a les actuals en escriptori per a GeoMedia, desenvolupades en projectes anteriors per la Meritxell González i en David Perelló. Resumen: Este proyecto realiza un estudio detallado sobre el método de generación de entornos web mediante la familia de aplicaciones GeoMedia de Intergraph. Este estudio demuestra que es viable el desarrollo de un geoportal web en un entorno intranet con GeoMedia WebMap 6.1. Además se implementarán operaciones de análisis para el CCU, parecidas a las actuales en escritorio para GeoMedia, desarrolladas en proyectos anteriores por Meritxell González y David Perelló. Abstract: This project makes a detailed study of available methods to build web environments using GeoMedia family applications by Intergraph. This study demonstrates the viability of developing a geographic website in a intranet environment with GeoMedia WebMap 6.1. Moreover, a sort of analysing tools for CCU will be made, like the current tools for GeoMedia desktop, developed in previous projects by Meritxell González and David Perelló. II III Índex 1. Introducció ..................................................................................................................... 1 2. Objectius......................................................................................................................... 3 2.1. Objectius genèrics ................................................................................................... 3 2.2. Objectius específics ................................................................................................ 4 3. Estat actual dels sistemes d’informació geogràfica i la seva interfície web .................. 9 3.1. Software de publicació web .................................................................................. 10 3.1.1. Plug-ins i interactivitat ...................................................................................... 11 3.2. Software d’emmagatzemament de dades espacials .............................................. 13 3.3. OGC ...................................................................................................................... 18 3.4. IDEs i Geoportals .................................................................................................. 21 4. Productes Intergraph .................................................................................................... 25 4.1. GeoMedia .............................................................................................................. 26 4.2. GeoMedia WebMap .............................................................................................. 31 4.2.1. WebMap Publisher ............................................................................................ 31 4.2.2. Evolució WebMap versions 5 i 6 ...................................................................... 32 5. Programació bàsica de GeoMedia WebMap ................................................................ 35 5.1. Programació de servidor ....................................................................................... 35 5.1.1. Estructura i funcionament general..................................................................... 36 5.1.2. Objectes MapServer i MapServerManager....................................................... 37 5.1.3. RangeScale ........................................................................................................ 39 5.1.4. Sistema de coordenades .................................................................................... 40 5.1.5. Connexions ........................................................................................................ 41 5.1.6. Objectes LegendEntries i LegendEntry ............................................................. 42 5.1.7. Objectes addicionals .......................................................................................... 46 5.1.8. Creació del mapa ............................................................................................... 51 5.1.9. Alliberació de recursos ...................................................................................... 52 5.2. Programació de client: Control de visualització del mapa.................................... 53 IV 5.2.1. Visualitzadors ................................................................................................... 54 5.2.2. API del control SVG ......................................................................................... 55 5.2.3. Navegació en client ........................................................................................... 61 6. Funcions avançades ..................................................................................................... 63 6.1. Antecedents .......................................................................................................... 63 6.1.1. Mòdul de generació de taules resum ................................................................. 64 6.1.2. Mòdul de generació d’àrees d’influència .......................................................... 65 6.1.3. Mòdul de comptar entitats properes .................................................................. 68 6.1.4. Mòdul de temàtics per proximitat ..................................................................... 69 6.1.5. Mòdul de finques per ús i any de construcció ................................................... 70 6.1.6. Mòdul d’activitats econòmiques ....................................................................... 71 6.2. Operacions a realitzar en entorn web ................................................................... 74 6.3. Objectes de GeoMedia WebMap .......................................................................... 74 6.3.1. Ús. Codi .NET ................................................................................................... 85 6.3.2. Eines d’ajuda programades ............................................................................... 90 6.3.3. Concatenació d’operacions ............................................................................... 90 7. Implementació del geoportal web: Prototip CCU ........................................................ 93 7.1. Flux de treball seguit ............................................................................................ 93 7.2. Requeriments del geoportal .................................................................................. 94 7.3. Estructura de la pàgina web .................................................................................. 95 7.3.1. Estructura: Frames i MasterPages .................................................................... 96 7.3.2. Codi de servidor i codi de client ....................................................................... 96 7.4. Autentificació ....................................................................................................... 98 7.4.1. Model d’autentificació per formularis de .NET ................................................ 99 7.5. Àrea de treball .................................................................................................... 100 7.5.1. Àrea del mapa i llegenda ................................................................................. 101 7.5.2. Eines del mapa ................................................................................................ 102 7.5.3. Capes i estils ................................................................................................... 103 7.6. Bases de dades .................................................................................................... 104 7.6.1. Organització de les bases de dades ................................................................. 105 7.6.2. Bases de dades en entorns multi usuari ........................................................... 105 7.7. Àrees d’interacció amb la informació ................................................................ 106 V 7.8. Actualitzar informació gràfica ............................................................................ 108 7.8.1. Crear, esborrar i desplaçar entitats amb WebMap .......................................... 108 7.8.2. Classes d’ajuda programades .......................................................................... 109 7.8.3. Casos d’ús i exemples ..................................................................................... 114 7.9. Càrrega i manteniment del servidor .................................................................... 120 7.10. Migració dels mòduls d’escriptori................................................................... 122 7.10.1. Procediment general .................................................................................... 123 7.10.2. Modificació del codi del prototip ................................................................ 125 8. Conclusions ................................................................................................................ 127 8.1. Generació i integració de noves pàgines web ..................................................... 128 8.2. Escalabilitat ......................................................................................................... 129 Annex I: Configuració del servidor IIS ............................................................................. 131 Annex II: Configuració de GeoMedia WebMap 6.1 ......................................................... 133 Annex III: Descripció de les BBDD .................................................................................. 139 Annex IV: Objectes rellevants de GeoMedia WebMap .................................................... 143 Annex V: Contingut del CD .............................................................................................. 149 Annex VI: Creació d’arxius CSF ...................................................................................... 151 Annex VII: Generació d’estils per WebMap ..................................................................... 155 Bibliografia ........................................................................................................................ 159 VI Índex de figures Figura 3-1. IDE del govern d'Aragó .................................................................................. 22 Figura 3-2. Geoportal de planejament urbanístic de la Mancomunitat de Municipis de l’Àrea Metropolitana de Barcelona ................................................................................... 23 Figura 3-3. IDE del govern de Galícia .............................................................................. 24 Figura 5-1. Diagrama de generació d’un mapa amb GeoMedia WebMap ....................... 36 Figura 5-2. Codi C# per a crear i inicialitzar un objecte MapServerManager .................. 37 Figura 5-3. Codi C# per a crear i inicialitzar un objecte MapServer ................................ 38 Figura 5-4. Codi C# per a crear i configurar un objecte RangeScale ................................ 40 Figura 5-5. Codi C# per a configurar el sistema de coordenades .................................... 41 Figura 5-6. Codi C# per a crear i configurar un objecte Connection ................................ 42 Figura 5-7. Codi C# per configurar un objecte LegendEntry ........................................... 46 Figura 5-8. Codi C# per a crear un GRecordset a través d’un OriginatingPipe ................ 48 Figura 5-9. Codi C# (1) per a crear un atribut funcional (FunctionalAttribute) ............... 49 Figura 5-10. Codi C# (2) per a crear un atribut funcional (FunctionalAttribute) ............. 49 Figura 5-11. Codi C# per a alliberar els recursos dels objectes de WebMap ................... 53 Figura 5-12. Configuració de transformació XSL de WebMap ........................................ 55 Figura 5-13. Tag HTML per a afegir un mapa SVG a la pàgina web ............................... 56 Figura 5-14. Declaració, captura i ús de l’objecte mapa des de JavaScript ...................... 56 Figura 5-15. Funció Javascript per ensenyar/amagar una capa ......................................... 60 Figura 6-1. Zones d’influència dels Centres d’Assistència Primària de Mataró ............... 67 Figura 6-2. Atributs d’una àrea d’influència calculada ..................................................... 67 Figura 6-3. Temàtic del mòdul de comptar entitats sobre els CAP de Mataró ................. 69 Figura 6-4. Temàtic del mòdul de càlcul de proximitat a entitats ..................................... 70 Figura 6-5. Finques de tipus “vivenda” construïdes entre 1950 i 1960 ............................ 71 Figura 6-6. Parcel•les que tenen com a activitat econòmica el sector tèxtil ..................... 73 Figura 6-7. Parcel•les que tenen com a activitat econòmica la banca, amb àrees d’influència de 250 metres, i temàtic de distància de la població ..................................... 73 Figura 6-8. Exemple d’un Buffer amb GeoMedia WebMap ............................................ 78 Figura 6-9. Codi C# per generar una classe d’entitat Buffer ............................................ 85 Figura 6-10. Codi C# per generar una agregació entre classes d’entitat ........................... 86 Figura 6-11. Codi C# per a combinar les entitats d’una classe ......................................... 88 VII Figura 6-12. Codi C# per a relacionar dues classes d’entitat ............................................ 89 Figura 7-1. Gràfic d’execució de codi en servidor i client ................................................ 97 Figura 7-2. Control .NET per a l’autentificació ................................................................ 98 Figura 7-3. Geoportal. Àrees de treball ........................................................................... 101 Figura 7-4. Geoportal. Barra d’eines i barra d’ajuda a les eines ..................................... 101 Figura 7-5. Formulari d’edició d’entitats “CAP” ............................................................ 107 Figura 7-6. Formulari de generació de taules resum ....................................................... 107 Figura 7-7. Agrupament de les classes d’ajuda programades per al CCU ...................... 110 Figura 7-8. Codi C# per a crear un LegendEntry i afegir-lo al mapa .............................. 115 Figura 7-9. Codi C# per a crear una nova entitat de classe “CAP” ................................. 116 Figura 7-10. Codi C# per a concatenar la creació d’un buffer, realitzar-ne una combinació de les seves entitats, i realitzar una agregació contra la taula del Padró ...... 118 Figura 7-11. Codi C# per a afegir un atribut funcional a una classe d’entitat ................. 119 Figura 7-12. Codi C# per a ocultar un element per a un determinat perfil d’usuaris ...... 120 Figura 7-13. Formulari de publicació d’aplicacions web de Visual Studio 2008 ........... 121 Figura 7-14. Flux d’execució d’un mòdul genèric dins el geoportal............................... 124 Figura II-1: Configuració de “COM Distribuido” en Windows 2000 ............................. 134 Figura II-2: Configuració de “COM Distribuido” en Windows XP ................................ 134 Figura II-3: Configuració de CACHE a l’Administrador de WebMap ........................... 137 Figura II-4: Configuració del servidor de mapes a l’Administrador de WebMap .......... 138 Figura II-5: Configuració de LOGs a l’Administrador de WebMap ............................... 138 Figura II-6: Configuració Miscellaneous a l’Administrador de WebMap ...................... 138 Figura IV-1. Esquema d’objectes generals de GeoMedia WebMap Professional .......... 145 Figura IV-2. Esquema d’objectes de llegenda i estils de GeoMedia WebMap Professional ..................................................................................................... 145 Figura IV-3. Esquema d’objectes d’accés a dades de GeoMedia WebMap Professional ..................................................................................................... 146 Figura IV-4. Esquema d’objectes per a la realització d’operacions complexes de GeoMedia WebMap Professional ............................................................. 146 Figura IV-5. Esquema d’objectes de geometria de GeoMedia WebMap Professional ..................................................................................................... 147 Figura VI-1. Configuració del tipus d’un sistema de coordenades GeoMedia ............... 152 Figura VI-2. Configuració del magatzem d’un sistema de coordenades GeoMedia ....... 152 4 - Objectius cost. Cal tenir en compte que l’actual sistema d’escriptori requereix de l’aplicació GeoMedia instal·lada a cada ordinador on es vulgui fer ús de les eines del CCU, i això representa un cost molt elevat degut a les llicències d’aquest programari que s’han d’adquirir. A més a més, representa una forma més idònia per al treball corporatiu i per al manteniment dels aplicatius i les dades. Durant anys de treball, el projecte CCU ha desenvolupat diferents aplicacions en diferents sistemes, i un d’ells és l’entorn GeoMedia WebMap, que és una extensió web de l’aplicació d’escriptori GeoMedia i que permet la implementació d’aplicacions en entorn web utilitzant tècniques de programació avançada. El projecte es centrarà en l’ús d’aquesta tecnologia per a desenvolupar un geoportal que ofereixi els requisits explicats anteriorment. El geoportal web desitjat hauria de permetre unes prestacions semblants al sistema actual, amb la millora de no haver d’instal·lar l’aplicació GeoMedia a cada ordinador on es vulgui fer servir el geoportal, doncs a aquest s’hi accedeix amb un navegador web. A més, i com a conseqüència d’això, es substitueixen les llicències de GeoMedia per una de GeoMedia WebMap, que és l’aplicació que servirà la informació a través de la xarxa. Aquest geoportal serà d’àmbit intranet i per tant només se’n farà ús des d’una xarxa controlada i en cap cas pública. 2.2. Objectius específics Hi ha un objectiu preliminar per a aquest projecte i és l’anàlisi dels objectes de programació disponibles a GeoMedia WebMap Professional 6.1. S’ha de comprovar que els objectes que ofereix aquest aplicatiu son similars als de l’aplicació d’escriptori GeoMedia, i que seran útils i suficients per a replicar la funcionalitat dels mòduls actuals del CCU. Per això caldrà identificar els objectes, relacionar-los amb les funcionalitats dels mòduls del CCU (que s’enumeren i expliquen més endavant en aquest capítol), i finalment comprovar-ne el funcionament. Un cop superat l’objectiu preliminar amb resultat afirmatiu, es definirà un geoportal web per tal de demostrar que mitjançant aquestes eines es pot oferir a través del web les Servei Web pel CCU amb GeoMedia WebMap 6.1 - 5 mateixes funcionalitats que els mòduls d’escriptori del CCU. Per aquest geoportal que es desenvoluparà, cal definir-ne els detalls que s’implementaran i com es realitzarà aquesta tasca. Un geoportal està format per un conjunt de planes web que ens permeten visualitzar i manipular informació enllaçada geogràficament al territori. Per això, l’element central del geoportal és sempre el mapa. El mapa és l’element on es realitza la major part de la interacció entre l’usuari i el programari. Al mapa és on es veuen les entitats, on es seleccionen i també on es dibuixen els resultats de les operacions que es realitzen sobre les dades geogràfiques. Aquest mapa contindrà una sèrie d’eines que permetran realitzar tota aquesta sèrie d’operacions. Aquestes eines es divideixen en dos grups principals: • Navegació: Les eines principals i més habituals en tots els geoportals són les eines de navegació, que han de permetre a l’usuari apropar-se, allunyar-se i desplaçar-se pel mapa. • Operacions: Les eines per a realitzar operacions sobre el mapa han de permetre l’usuari realitzar les operacions gràfiques implementades al portal, com podrien ser operacions espacials o afegir i esborrar entitats al mapa. El geoportal haurà de tenir implementades una sèrie d’operacions senzilles que permetran construir el mapa principal i donar-hi un aspecte satisfactori per a l’experiència de l’usuari. Aquestes operacions es poden resumir bàsicament en dues tasques: la primera és la creació d’entitats que es mostraran al mapa, és a dir, la creació de tots els objectes que es pintaran a la pantalla i que formaran el mapa; la segona tasca és la definició i aplicació d’estils gràfics a aquestes entitats, és a dir, establir l’aspecte visual que tindran les entitats del mapa. El geoportal haurà de connectar-se a les bases de dades de les que ja disposa el CCU per tal d’extreure’n la informació que necessiti per tal de generar el mapa, modificar els atributs de les entitats que el formen, afegir o esborrar entitats i realitzar operacions complexes. 6 - Objectius El CCU disposa actualment de dues bases de dades: una primera base de dades conté tota la informació geo-referenciada que permet dibuixar el mapa; la segona base de dades conté tota la informació de la població de Mataró (padró). Addicionalment es crearà una tercera base de dades que contindrà tota la informació necessària per a gestionar el sistema d’usuaris del geoportal. El geoportal haurà d’implementar una sèrie d’operacions complexes. Aquestes operacions complexes hauran de permetre la modificació dels atributs de les entitats del mapa, així com la possibilitat d’afegir i eliminar entitats al mapa. Aquestes operacions es caracteritzen per tenir una vessant gràfica, on es realitza la identificació al mapa d’una entitat o una posició, i una vessant de base de dades, on es realitza la modificació dels atributs i també s’afegeixen o s’eliminen les entitats. Igualment dins d’aquestes operacions complexes és necessari que el geoportal implementi tota una sèrie de funcionalitats d’anàlisi espacial, que permetran la implementació posterior del codi necessari per a replicar les prestacions els mòduls d’escriptori del CCU en aquest entorn web. Les operacions complexes que s’hauran d’implementar són: unió d’entitats (merge), agregació d’informació calculada a una entitat (aggregation), combinació de dades amb una entitat (join) i creació d’àrees d’afectació d’entitats (buffer). La unió d’entitats és una operació espacial que realitza la fusió de dues o més entitats seleccionades mitjançant un criteri espacial definit. Els criteris més típics són la intersecció i la inclusió, de manera que per exemple es poden unir dues o més entitats que estiguin incloses en l’espai per una altra entitat per formar-ne una de nova que les englobi a totes, o es poden unir dues àrees d’influència que es toquin per a formar una nova àrea d’influència total que englobi a les anteriors. L’agregació d’informació calculada a un conjunt d’entitats és una relació que s’estableix entre un conjunts d’entitats definit i que conté una sèrie d’atributs (detall), i un segon conjunt d’entitats d’ordre superior (resum), que normalment o conté el primer conjunt o bé permet l’associació dels elements del primer conjunt amb el seus. El resultat de la relació establerta és el conjunt resum amb una sèrie d’atributs funcionals nous creats a partir d’operacions realitzades sobre els atributs dels elements del conjunt detall. Un exemple Servei Web pel CCU amb GeoMedia WebMap 6.1 - 7 senzill és comptar el nombre d’entitats del conjunt detall que estan incloses espacialment dins de les entitats del conjunt resum; el resultat seria la col·lecció d’entitats resum, i cada entitat resum contindria un atribut que indicaria el nombre d’entitats detall que inclou. La combinació de dades amb una entitat és una relació entre taules d’una base de dades mitjançant la que s’afegeixen atributs d’una taula a l’altra. En el cas particular del geoportal es fa servir aquesta operació per a llegir atributs d’una entitat a una taula externa; per exemple combinar una taula on tenim el nombre d’habitants per cada illa d’edificis amb les entitats del mapa que implementen les illes d’edificis. La creació d’àrees d’afectació d’entitats és una operació espacial complexa mitjançant la que es defineix una àrea espacial al voltant d’una entitat. Aquesta àrea pot ser circular o rectangular, i està definida sempre per una distància que pot ser fixa (un valor) o variable (el contingut d’un atribut). Aquesta operació es podria utilitzar per exemple per definir una àrea circular de 500 metres de radi sobre les escoles de Mataró, i veure’n el resultat gràfic, obtenint així una impressió visual i ràpida de l’àrea immediata de cobertura de les escoles. En quant als tipus d’usuari, es defineixen tres nivells d’usuaris que es relacionaran de forma jeràrquica. Els tres nivells són el d’usuari, el d’operador i el d’administrador. Els usuaris podran accedir al geoportal i veure’n la informació; podran crear les taules resum (segmentació poblacional) però no podran modificar atributs ni entitats. Els operadors tindran els mateixos permisos que els usuaris, i a més podran modificar els atributs de les entitats. Els administradors podran realitzar les mateixes tasques que els operadors, i a més podran afegir i esborrar entitats al mapa. El geoportal disposarà d’una plana web inicial on es realitzarà l’autentificació de l’usuari. Aquesta autentificació es realitzarà mitjançant la introducció d’un nom d’usuari i una contrasenya per part de l’usuari, i aquestes hauran de trobar-se a la base de dades d’usuaris del sistema. 8 - Objectius Servei Web pel CCU amb GeoMedia WebMap 6.1 - 9 3. Estat actual dels sistemes d’informació geogràfica i la seva interfície web Un sistema d’informació geogràfica (SIG), també anomenat GIS de les seves segles angleses (Geographic Information System), és un sistema que permet emmagatzemar i manipular una sèrie d’informació organitzada en forma de dades, i on aquestes dades tenen la particularitat de disposar d’una referència geogràfica, és a dir, que corresponen a un espai físic real. Un SIG doncs, és necessari sempre que es vulgui manipular dades que estiguin lligades d’una forma inequívoca amb el territori. Actualment en el mercat existeixen quatre conjunts de software que dominen el mercat per sobre de tots els altres. Aquests són: Autodesk MapGuide, proporcionat per l’empresa Autodesk; GeoMedia WebMap, proporcionat per l’empresa Intergraph; ArcIMS, fet per l’empresa ESRI; i finalment els productes open source (de codi obert i lliure), majoritàriament dominat per MapServer (programat a la Universitat de Minessota, Estats Units), tot i que darrerament Deegree (Universitat de Bonn, Alemanya) també reclama una petita part del mercat. El software més estès i popular és el MapServer, de codi obert i lliure, probablement per la gran quantitat d’informació que s’hi pot trobar a la xarxa d’internet (gràcies a ser open source), i a la gran popularitat que s’ha guanyat els darrers anys. Molts projectes però, consideren prioritària la seguretat de tenir el suport d’una gran companyia de software, i és per això que molts també trien softwares com MapGuide, ArcIMS o WebMap, tot i que aquests siguin de pagament. El seu principal inconvenient és l’import econòmic que representa l’adquisició de llicències, que moltes vegades resulta força elevat. A més, la tendència a compartir informació que es mostra en els entorns de software de codi lliure no s’observa en el cas d’aquests softwares de pagament. 10 - Estat actual dels sistemes d’informació geogràfica i la seva interfície web 3.1. Software de publicació web Descripció dels diferents softwares que hi ha disponibles per a publicar en entorns web informació geogràfica: • MapGuide (Autodesk) • GeoMedia WebMap (Intergraph) • ArcIMS (ESRI) (nota: necessita una plataforma intermèdia de dades, ArcSDE) • MapServer (OpenSource, Universitat de Minessota) MapGuide és el software que proporciona Autodesk per a la publicació de dades espacials. Per a la generació d’aquestes dades, Autodesk ofereix també l’eina AutoCAD MAP 3D, que permet la connexió directa amb els sistemes de bases de dades i l’intercanvi d’informació geo-referenciada amb aquests. Per a realitzar la publicació d’aquestes dades, Autodesk proporciona MapGuide Author i MapGuide Studio, que permeten la creació, modificació i anàlisi de mapes a partir de dades espacials i la creació d’aplicacions de publicació per web, respectivament. GeoMedia és l’aplicació de SIG que ofereix Intergraph. Aquesta aplicació permet tant l’edició com l’anàlisi de dades espacials, així com la generació de mapes a partir d’aquesta informació. Intergraph també proposa un visualitzador de mapes creats amb GeoMedia. Aquesta eina és gratuïta i per a escriptori, i s’anomena GeoMedia Viewer. Per a la generació d’aplicacions web Intergraph proposa GeoMedia WebMap Publisher, mentre que GeoMedia WebMap és l’aplicació encarregada de publicar la informació espacial. ESRI també disposa d’aplicacions per a crear i manipular informació geogràfica. ArcInfo és la seva eina de creació, edició i anàlisi de dades espacials completament integrada. Per a la visualització dels mapes creats a partir d’aquestes dades, ESRI ofereix l’eina ArcView. ArcIMS és el servidor de mapes utilitzat per a publicar en entorns web la informació geogràfica d’ESRI. Cal esmentar que ESRI no utilitza encara formats de dades de forma directa, sinó que utilitza una eina pròpia anomenada ArcSDE que fa de conversor entre els diferents formats del mercat i les seves aplicacions. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 11 MapServer és una completa eina de publicació de mapes de codi lliure i distribuït sota llicència MIT-style (gratuït), desenvolupat al Departament de Recursos Forestals de la Universitat de Minessota, amb la col·laboració econòmica de la NASA a través de diferents acords de cooperació. Aquest software té l’avantatge de comptar amb nombroses utilitats extra programades per nombroses comunitats de tot el món, degut a la seva naturalesa de codi lliure. L’inconvenient és que no hi ha cap eina relacionada per a la creació i modificació de dades espacials. 3.1.1. Plug-ins i interactivitat Un plug-in de visualització és un objecte web que permet automatitzar i encapsular tasques que esdevenen transparents per a l’usuari (i en ocasions, fins i tot per al programador). Aquests plug-ins s’encarreguen de realitzar la transformació de la informació publicada i el que rep l’usuari final, és a dir, entre un format transportable per internet i la imatge interactiva que forma el mapa que veu l’usuari. Cal esmentar que aquest plug-in s’ha d’instal·lar i enregistrar al navegador web. Cadascun d’aquests softwares utilitza la seva pròpia API de client per a interpretar les dades publicades. La majoria de softwares s’han recolzat sobre algun plug-in que permeti gestionar una certa interactivitat en el client, mitjançant la qual l’usuari pot treballar sobre el mapa sense necessitat d’estar consultant el servidor contínuament per a rebre informació que pot ser mostrada sobre el mateix mapa. La interactivitat representa un salt de qualitat important per a l’usuari final, ja que millora la seva experiència de treball amb el mapa mitjançant la resposta que aquest li dóna a accions programades a les entitats. En la pràctica aquesta interactivitat es tradueix en tres funcionalitats finalment visibles pel client: • Tooltips: Són textos d’ajuda interactius que es mostren en passar per sobre d’una entitat en concret. • Highlighting: Ressaltat d’entitats, o sigui que l’entitat que hi ha sota el punter en qualsevol moment estigui il·luminada. 12 - Estat actual dels sistemes d’informació geogràfica i la seva interfície web • Actions: El plug-in s’encarrega d’identificar l’entitat que s’assenyala, i se li pot assignar una acció, és a dir, en fer un click sobre una entitat el plug-in la identifica i es crida una funció que realitza alguna acció sobre aquesta entitat concreta. Aquestes avantatges fan que l’ús d’un plug-in sigui molt atractiu, ja que ofereix unes possibilitats d’ús i visualització molt atractives, a més d’una major velocitat d’execució (no es fan tantes crides al servidor), però té dos grans handicaps: en primer lloc necessiten instal·lar un software sobre el navegador del client, cosa que no agrada a cap administrador de sistemes, i en segon lloc la poca compatibilitat, és a dir, que els plug-ins no són habitualment multi-plataforma sinó que només funcionen en alguns navegadors web en concret. No hi ha una tendència generalitzada al respecte, i alguns softwares segueixen apostant per els plug-ins, com és el cas de GeoMedia WebMap. Altres l’han abandonat, com Autodesk MapGuide, que fins la versió 6.5 feia servir un plug-in i va deixar de suportar-lo posteriorment, decantant-se per una API de client programada amb tecnologia AJAX. Davant de l’absència de plug-in, el programador del geoportal ha de programar-se ell mateix les classes necessàries per a respondre adequadament a les peticions del client, o bé aprendre a utilitzar una API exposada de programació de client, força complexa, i de la que no tots els softwares GIS en disposen. Tal i com es comenta en el capítol 5 (apartat 5.2.1), Intergraph està desenvolupant una actualització per a GeoMedia WebMap i GeoMedia WebMap Professional, que entre d’altres, inclourà suport per a un nou tipus de format de mapa: flashNavigator. El flashNavigator és un plug-in desenvolupat per l’empresa NavTeq i basat en tecnologia Flash, de nova generació i molt més lleuger i potent que els anteriors. Aquest plug-in té l’avantatge que és multi-plataforma i multi-navegador, cosa que ha fet que anés guanyant adeptes durant el darrer any. Està previst que per gener de 2010 Intergraph també suporti aquest nou plug-in. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 13 3.2. Software d’emmagatzemament de dades espacials Per tal de publicar les dades espacials, aquestes han d’estar organitzades i emmagatzemades degudament. El mitjà d’emmagatzemament d’aquestes dades són les bases de dades espacials. Aquestes bases de dades espacials permeten organitzar la informació dispersa en forma de dades espacials, referenciades geogràficament, i a més permet fer operacions espacials entre elles. També es poden emmagatzemar aquestes dades en bases de dades estàndard (Oracle, SQL Server, Microsoft Access, etc.), però aquestes no afegeixen cap tipus de funcionalitat espacial (indexació espacial, cerques espacials, etc.). En la pràctica, la informació geogràfica es pot organitzar de tres formes diferents: • Fitxers: DWG (Autodesk), ShapeFile (ESRI), SDF, SmartStore (Intergraph), etc. • Base de dades espacials: Oracle, SQLServer, MySQL Spatial, ArcSDE, etc. • SDF3: Format híbrid d’Autodesk. L’emmagatzemament de dades en fitxers és ràpid i d’execució fàcil, però presenta força problemes com ara el difícil manteniment (molts arxius que dificulten la organització), o la falta de funcionalitat, ja que els arxius només permeten emmagatzemar les dades. Qualsevol cosa que es vulgui fer amb les dades s’haurà de realitzar externament. La utilització de bases de dades espacials soluciona la majoria de problemes anteriors, però en perd les avantatges. Les bases de dades espacials solen ser sistemes força importants pel que fa al tamany (per sistemes petits no són rentables), i per norma general són relativament complexes, cosa que fa que la seva implementació sigui una tasca força complicada de realitzar. Però les bases de dades espacials ofereixen una gran funcionalitat, ja que les dades es poden consultar directament mitjançant SSQL (Spatial Structured Query Language, en català Llenguatge de Consulta Estructurat Espacial), que ofereix certes avantatges: • En les cerques, no s’ha d’accedir a tots els elements. La base de dades indexa els elements i només accedeix als que es volen consultar. • Permet realitzar consultes als atributs espacials de les entitats. • Permet realitzar consultes als atributs alfanumèrics de les entitats. 20 - Estat actual dels sistemes d’informació geogràfica i la seva interfície web Geoserveis: WMS Un Web Feature Server (WFS) proporciona un conjunt de serveis per a la manipulació d’elements (features) geogràfics, utilitzant HTTP com a plataforma de computació distribuïda. Essencialment un “feature” no és res més que una llista de propietats i geometries. Les propietats es descriuen amb un nom, tipus i valor. Les geometries es composen de blocs geomètrics bàsics de construcció, com ara punts, línies, corbes, superfícies i polígons. Els serveis de manipulació oferts inclouen capacitats per a: • Crear un nou “feature” • Esborrar un “feature” • Actualitzar un “feature” • Accedir o consultar “features” en base a restriccions espacials i no espacials Una petició a un WFS consisteix en una consulta o operació de transformació de dades que serà aplicada sobre un o més “features” geogràfics. La petició és generada per un client i envidad al WFS fent servir tgh. El WFS llegeix la petició, la interpreta i finalment l’executa, retornant si s’escau el resultat en GML (Geography Markup Language). Geoserveis: WCS Mitjançant la sol·licitud a través de la interfície d’un WMS es poden obtenir mapes estàtics, és a dir, una imatge. El Web Coverage Server (WCS) és una extensió del WMS que permet l’accés a “cobertures” geoespacials, que conté valors o propietats de localitzacions geogràfiques. El Web Coverage Service consta de dues operacions: GetCapabilities i GetCoverage. La operació GetCapabilities retorna una descripció del servei, estructurat en un document XML similar al que retorna un WMS, amb elements addicionals per a descriure les cobertures multidimensionals. Els clients invocaran aquesta operació una vegada, i emmagatzemaran el seu resultat a través d’una sessió, o el reutilitzaran en més d’una sessió. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 21 La operació GetCoverage és normalment invocada una vegada que la operació GetCapabilities ha determinat quin tipus de consultes està permesa i quines dades estan implementades. Aquesta operació retorna valors o propietats de localitzacions geogràfiques. La sintaxis i la semàntica són similars a la operació GetMap del WMS, però amb les extensions necessàries per a permetre recuperar cobertures en comptes de mapes estàtics. 3.4. IDEs i Geoportals S’aplica normalment el terme “Infraestructura de Dades Espacials” (IDE) per a indicar l’acumulació important de tecnologies, normes i plans institucionals que faciliten la disponibilitat a dades espacials. La IDE proveeix d’una base per al descobriment de dades espacials, amb avaluació i aplicació per a usuaris i proveïdors a tots els nivells governamentals, per al sector comercial, institucions no lucratives, sector acadèmic i públic en general. S’utilitza el terme infraestructura per avançar el concepte d’un ambient de suport i fiable, anàleg al d’una xarxa de carreteres o telecomunicacions que, en aquest cas, facilita l’accés a la informació relacionada amb la geografia, utilitzant un mínim de pràctiques, protocols i especificacions estàndard. Un geoportal no proporciona aquesta infraestructura, sinó que és una eina dissenyada específicament per a mostrar un conjunt finit i tancat de dades espacials. Addicionalment disposa de més funcionalitats d’interacció amb les dades, donat que es tracta d’un sistema molt més personalitzat que no pas una IDE, i no serveix com a font de dades espacials per a aplicacions externes. Un geoportal doncs és més semblant a una aplicació d’ús intern per a la companyia, tot i que moltes vegades siguin també públics. A continuació es mostren alguns exemples d’IDEs desenvolupats amb diferents softwares d’emmagatzemament i edició i publicació web: 22 - Estat actual dels sistemes d’informació geogràfica i la seva interfície web SITAR: Servicio de Información Territorial de Aragón Aquesta IDE està desenvolupada utilitzant el software d’ESRI tant per l’edició com per la publicació via web. Les dades s’emmagatzemen en Oracl ArcIMS especialitzats, accés a cartografia per a clients ArcGIS, servei de descàrrega de cartografia i serveis WMS. Es pot accedir a la IDE a l’adreça Figura 3 Estat actual dels sistemes d’informació geogràfica i la seva interfície web SITAR: Servicio de Información Territorial de Aragón Aquesta IDE està desenvolupada utilitzant el software d’ESRI tant per l’edició com per la Les dades s’emmagatzemen en Oracl e 9i Spatial. Proporciona serveis ArcIMS especialitzats, accés a cartografia per a clients ArcGIS, servei de descàrrega de cartografia i serveis WMS. Es pot accedir a la IDE a l’adreça http://sitar.aragon.es/ Figura 3 -1. IDE del govern d’Aragó Aquesta IDE està desenvolupada utilitzant el software d’ESRI tant per l’edició com per la Proporciona serveis ArcIMS especialitzats, accés a cartografia per a clients ArcGIS, servei de descàrrega de http://sitar.aragon.es/ . Geoportal de la Mancomunitat de Municipis de l’Àrea Metropolitana de Barcelona El geoportal de la Mancomunitat de Municipis és una eina que disposa d’un visualitzador de mapes de l’àrea metropolitana i a més proporcio urbanístics que afecten a cada edifici, entre d’altres funcionalitats. De moment no ofereix cap geoservei, tot i que està previst que n’incorpori en un futur. per crear tot el portal és d’Autodesk: Ma Studio per a generar el portal i Figura 3- 2. Geoportal de planejament urbanístic de la Mancomunitat de Municipis de l’Àrea Metropolitana de Barcelona Servei Web pel CCU amb GeoMedia Geoportal de la Mancomunitat de Municipis de l’Àrea Metropolitana de Barcelona El geoportal de la Mancomunitat de Municipis és una eina que disposa d’un visualitzador de mapes de l’àrea metropolitana i a més proporcio na informació sobre els plans urbanístics que afecten a cada edifici, entre d’altres funcionalitats. De moment no ofereix cap geoservei, tot i que està previst que n’incorpori en un futur. El software GIS utilitzat per crear tot el portal és d’Autodesk: Ma p3D per a generar la majoria de dades, Studio per a generar el portal i MapGuide Server per a publicar-lo. 2. Geoportal de planejament urbanístic de la Mancomunitat de Municipis de l’Àrea Metropolitana de Barcelona GeoMedia WebMap 6.1 - 23 Geoportal de la Mancomunitat de Municipis de l’Àrea Metropolitana de Barcelona El geoportal de la Mancomunitat de Municipis és una eina que disposa d’un visualitzador na informació sobre els plans urbanístics que afecten a cada edifici, entre d’altres funcionalitats. De moment no ofereix El software GIS utilitzat p3D per a generar la majoria de dades, MapGuide 2. Geoportal de planejament urbanístic de la Mancomunitat 24 - Estat actual dels sistemes d’informació geogràfica i la seva interfície web SITGA: Sistema de Información Territorial de Galicia El SITGA és una IDE de la Xunta de Galicia que permet tant la visualització de mapes i informació territorial de tota la comunitat autònoma, i a més, com a IDE ofereix geoserveis com ara WMS, fotografia aèria i cartograf d’Intergraph per a GIS GeoMedia, i publicat utilitzant GeoMedia WebMap i GeoMedia WebMap Publisher. Figura 3 Estat actual dels sistemes d’informació geogràfica i la seva interfície web Información Territorial de Galicia El SITGA és una IDE de la Xunta de Galicia que permet tant la visualització de mapes i informació territorial de tota la comunitat autònoma, i a més, com a IDE ofereix geoserveis com ara WMS, fotografia aèria i cartograf ia. Està realitzat utilitzant el software d’Intergraph per a GIS GeoMedia, i publicat utilitzant GeoMedia WebMap i GeoMedia Figura 3 -3. IDE del govern de Galícia El SITGA és una IDE de la Xunta de Galicia que permet tant la visualització de mapes i informació territorial de tota la comunitat autònoma, i a més, com a IDE ofereix geoserveis ia. Està realitzat utilitzant el software d’Intergraph per a GIS GeoMedia, i publicat utilitzant GeoMedia WebMap i GeoMedia Servei Web pel CCU amb GeoMedia WebMap 6.1 - 25 4. Productes Intergraph Intergraph és una empresa nord americana especialitzada en la creació de software, dividida en dos grans blocs: software d'enginyeria i software d'anàlisi geoespacial. Dins la divisió de software d'enginyeria, Intergraph implementa solucions per a crear, gestionar i utilitzar les dades crítiques d’enginyeria per a augmentar la productivitat i organitzar-les per a la seva utilització de forma fiable i efectiva. Aquesta divisió s’encarrega d’aportar solucions per als sectors industrials de la química, metalls i mineria, energia nuclear, extracció petrolífera, gas, farmàcia i construcció de vaixells, entre d’altres. Pel que fa a la divisió de software d'anàlisi geoespacial, que rep el nom de SG&I (Security Government and Infrastructure, Seguretat Govern i Infraestructura), desenvolupa software adaptat a nombrosos sectors: • Intel·ligència i seguretat: Software per a la publicació d'imatges d'alta definició, control i seguiment d'amenaces, producció de mapes a gran escala. • Seguretat pública: Software per a la gestió d’incidències, gestió de seguretat ciutadana (inventari de detencions, citacions, informes de criminalitat, etc.). • Governs: control i seguretat de fronteres, seguiment i control d'emergències, gestió d’infraestructura (xarxa d'aigua, aigües residuals, transport municipal), informació del territori (parcel·les, valoracions, propietats, ...), creació de mapes cartogràfics, i serveis públics. • Transport: Gestió de ports i aeroports, gestió de carreteres i ferrocarrils, seguretat al transport, càlcul de rutes, etc. • Fotogrametria: Adquisició d'imatges d'alta definició per a fotogrametria, generació d'informació geoespacial. • Serveis: Software de gestió per a sistemes de distribució elèctrica, de gas, aigua, brigades mòbils de treballadors, estructures de canonades, etc. • Comunicacions: Gestió de xarxes de comunicació de coure, fibra, wireless. 26 - Productes Intergraph Familia de productes GeoMedia La família de productes GeoMedia ofereix solucions per a tots els sectors enumerats en l'apartat anterior. Aquesta família de productes consta d'un producte base, que pot ser GeoMedia o GeoMedia Professional, i una sèrie de productes addicionals que permeten afegir diferents funcionalitats al producte base. Els dos mòduls base són: GeoMedia GeoMedia permet recollir la informació des d'ubicacions diferents per a utilitzar-la en un entorn GIS únic, per a visualitzar-les, analitzar-les i presentar-les de la forma més adient, tot sense necessitat de transformar prèviament la informació. La tecnologia de servidor de dades GeoMedia suporta els estàndards oberts, proporcionant interoperabilitat GIS a través d'accés directe a la majoria de formats geoespacials/CAD i bases de dades relacionals estàndard de la indústria. GeoMedia està pensat especialment per a resoldre les situacions d'anàlisi de tipus "què passaria si...", perquè permet la utilització conjunta d'operacions d'anàlisi concatenades. Canviant qualsevol de les dades concatenades automàticament actualitza el resultat. GeoMedia Professional GeoMedia Professional proporciona tota la funcionalitat de GeoMedia, i hi afegeix eines senzilles de captura i edició de dades espacials. Es basa en la flexibilitat i escalabilitat de GeoMedia, obert als estàndards, i proporciona un augment del a productivitat en la recollida i modificació de dades, així com en la ràpida implementació de bases de dades GIS. També permet mantenir obertes simultàniament diferents connexions a diferents magatzems de dades GIS. Els mòduls d'analisi addicionals són els següents: GeoMedia Database Curato Com a part de la Solució de Producció d’Intel·ligència Espacial d'Intergraph (GIPS, de les seves segles angleses), Database Curator és una solució innovadora per al emmagatzemament i manteniment de les dades d'entitat, i està específicament dissenyat Servei Web pel CCU amb GeoMedia WebMap 6.1 - 27 per als membres de la comunitat d’intel·ligència espacial que desenvolupin tasques d'integració, validació i manteniment de dades d'entitat des de diferents orígens. Dissenyat per a acceptar dades recollides per eines com Feature Topographer, Database Curator proporciona una solució centralitzada de base de dades per a emmagatzemament de dades d’intel·ligència geoespacial. GeoMedia Digital Cartographer Digital Cartographer també forma part de la Solució de Producció d’Intel·ligència Espacial d'Intergraph (GIPS), i conté una sèrie de comandes addicionals per a GeoMedia que generen sortides digitals, tant en format Vector Product Format (VPF) com en format Multinational Geospatial CoProduction program (MGCP). GeoMedia Feature Cartographer Feature Cartographer també forma part de la Solució de Producció d’Intel·ligència Espacial d'Intergraph (GIPS), i ofereix una sèrie de comandes que amplien les capacitats de GeoMedia Professional i GeoMedia Map Publisher, per a desenvolupar productes amb mapes cartogràfics de gran precisió. GeoMedia Feature Curator Feature Curator també forma part de la Solució de Producció d’Intel·ligència Espacial d'Intergraph (GIPS), i proporciona capacitats de gestió d'informació per a dades d'entitat des de varies fonts d'entrada. Inclou la possibilitat d'identificar i aïllar entitats modificades dins una base de dades global, així com suport per a la gestió de transaccions després de llargs períodes d'inactivitat. GeoMedia Feature Topographer Feature Topographer també forma part de la Solució de Producció d’Intel·ligència Espacial d'Intergraph (GIPS), i ofereix capacitats addicionals i intuïtives per a capturar dades des d'imatges i servidors de mapes. Aquest producte es basa en la plataforma GeoMedia Professional, i estén la col·lecció de capacitats per automatitzar la recollida i validació de dades d'entitat per a productes digitals claus per a la defensa i intel·ligència com MGCP. 28 - Productes Intergraph GeoMedia Fusion GeoMedia Fusion ajuda a crear i mantenir fonts de dades d'entitats geoespacials, i ofereix un entorn de treball flexible, permetent configurar al gust de l'usuari les seves dades i manera de treballar. GeoMedia GI Toolkit Feature GI Toolkit forma part de la Solució de Producció d’Intel·ligència Espacial d'Intergraph (GIPS). És un producte addicional per a GeoMedia, i proporciona una sèrie d'eines de gran utilitat per a producció en sèrie de mapes de gran escala, recollida de dades, anàlisi, validació i presentació. GeoMedia Grid GeoMedia Grid proporciona integració completa entre formats de dades vectorials i cartesianes, per a la visualització i anàlisi. Es ideal per a dur a terme anàlisis espacials complexos com localització de posicions òptimes, planificació de passadissos (camí òptim entre localitzacions), i detecció de punts "calents". GeoMedia Image GeoMedia Image proporciona un ventall complet d'eines per a la visualització, millora i manipulació d'imatges, completament integrat amb altres productes GeoMedia. Permet interactuar entre dades vectorials i imatges en un únic entorn homogeni. Una barra d'eines especialitzada per a la millora d'imatges permet mètodes de treball senzills i intuïtius. Permet l'aplicació d'algoritmes de procés d'imatge de forma simultània a múltiples imatges de forma directa, sense afectar les imatges originals, o guardant-les a disc com a nous arxius. Unes eines de procés avançat d'imatges permeten detallar molt els algoritmes de procés per a una major precisió. GeoMedia Map Publisher GeoMedia Map Publisher es un nou producte que s'ha afegit a la família de productes GeoMedia. Les agencies militar, regional i nacional podran fer servir GeoMedia Map Publisher quan necessitin capacitats cartogràfiques i alts nivells d'automatització en la generació de mapes per als seus productes geogràfics. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 29 GeoMedia Parcel Manager GeoMedia Parcel Manager proporciona la possibilitat de generar mapes cadastrals de la forma necessària per a suportar la gestió d'impostos. GeoMedia Parcel Manager permet realitzar operacions de geometria sobre les parcel·les i interactuar amb la base de dades GIS, mentre visualitza el mapa de la parcel·la o la zona. Aquest software ofereix eines per a simplificar els processos de subdivisió, així com altres eines per a millorar la ràpida detecció, correcció i integració de les dades. GeoMedia Parcel Manager està dissenyat per a treballar en un entorn de base de dades, i proporciona eines per a realitzar, de forma interactiva, cerques i filtres en mapes per a produir informació des de la base de dades. GeoMedia Publicworks Manager GeoMedia PublicWorks Manager està dissenyat per a ajudar a gestionar els aspectes d'una xarxa complexa d'aigua i aigues residuals, des de l'entrada inicial de dades fins a l'anàlisi i gestió de la xarxa. GeoMedia PublicWorks Manager ofereix eines per a una millora en la productivitat que permeten la creació, validació, manteniment i anàlisi de la informació de la xarxa, tot dins l'entorn de GeoMedia. GeoMedia Terrain GeoMedia Terrain afegeix capacitats d'anàlisi i visualització del terreny a l'entorn de GeoMedia. Es concentra en l’habilitat de GeoMedia per a mostrar diferents tipus de dades geogràfiques de forma simultània, sense necessitat de transformació. GeoMedia Terrain ofereix la possibilitat de generar dades del terreny, entitats i imatges per a alimentar nombroses aplicacions d’anàlisi del terreny. GeoMedia Transaction Manager GeoMedia Transaction Manager està dissenyat per a organitzacions que tenen nombrosos usuaris que, de forma simultània, creen i mantenen models de dades geoespacials dins un departament o per tota la companyia. Introdueix la funcionalitat per a gestió de transaccions, de versions i de dades temporals per a entorns GeoMedia Professional i Oracle9i. Amb Transaction Manager, les companyies poden gestionar el cicle de vida dels canvis en les dades, mentre mantenen de forma segura la integritat i validesa de la informació geoespacial de la companyia. 36 - Programació bàsica de GeoMedia WebMap modificar-la sense realitzar una nova crida al servidor perquè la informació sigui novament processada. 5.1.1. Estructura i funcionament general El flux de treball d’una aplicació programada amb l’API de GeoMedia WebMap és relativament senzill. L’aplicació de servidor es divideix bàsicament en tres parts: la generació de l’objecte de mapa (MapServer), la generació i addició d’elements (LegendEntry) a aquest objecte de mapa, i finalment la generació d’un mapa físic a partir de l’objecte de mapa configurat. L’arxiu físic obtingut (mapa) s’haurà d’incorporar dins la pàgina web on es vulgui veure el mapa, però aquest procés dependrà del format en que es generi l’arxiu físic del mapa. Obtenir objecte MapServer Configurar MapServer Afegir elements al mapa Arxiu de sistema de coordenades Base de dades Generar Mapa Arxiu de Mapa Figura 5-1. Diagrama de generació d’un mapa amb GeoMedia WebMap Servei Web pel CCU amb GeoMedia WebMap 6.1 - 37 5.1.2. Objectes MapServer i MapServerManager L’objecte de mapa és l’objecte principal de l’API de GeoMedia WebMap. Tota la programació de servidor gira entorn d’aquest objecte, que es configura de forma adient i permet la generació del mapa físic a partir d’aquesta configuració realitzada. L’API de GeoMedia WebMap proporciona dos objectes per a fer aquesta feina: són el GMWebMap.MapServerManager i el GWMMapServerHelper (d’ara en davant anomenat simplement MapServer). L’objecte MapServerManager és un assistent creat per a controlar els diferents objectes de mapa que poden conviure en un servidor. És aquest objecte qui decideix si queden recursos disponibles per a crear un nou objecte de mapa, o en cas contrari, si el client s’ha d’esperar a que el servidor acabi de servir totes les peticions que encara té en procés per després atendre la seva. L’objecte MapServerManager es troba a la biblioteca de classes MapServerManager_exe.dll, que trobarem a la carpeta X:/WebMap/program (on X:/WebMap/ és la carpeta on s’ha instal·lat el GeoMedia WebMap). Per a crear i inicialitzar l’objecte MapServerManager farem servir el codi font següent, inclòs dins la figura 5-2. Figura 5-2. Codi C# per a crear i inicialitzar un objecte MapServerManager Mètodes Descripció breu MapServer Obté un nou objecte MapServer, si n’hi ha de disponibles Taula 5-1. Resum de mètodes de l’objecte MapServerManager // Inicialitzem l'objecte MapServerManager MapSvrMngr.MapServerManager objMSM; objMSM = (MapSvrMngr.MapServerManager)Server.CreateObject( "GMWebMap.MapServerManager"); 38 - Programació bàsica de GeoMedia WebMap L’objecte MapServer és l’objecte al voltant del que gira tot en les aplicacions de servidor de WebMap. Aquest objecte s’encarrega de recopilar tota la informació necessària per tal de generar un mapa a partir de la informació geogràfica de la que es disposi. L’objecte MapServer es troba a la biblioteca de classes MapServer_exe.dll, que trobarem a la carpeta C:/WebMap/program (on C:/WebMap/ és la carpeta on s’ha instal·lat el GeoMedia WebMap). Per a crear i inicialitzar l’objecte MapServer farem servir el codi font següent, inclòs dins la figura 5-3. Cal notar que necessitem un objecte MapServerManager creat i inicialitzat per a poder crear l’objecte MapServer. Figura 5-3. Codi C# per a crear i inicialitzar un objecte MapServer Propietats Descripció breu AutoScales Obté la col·lecció d’objectes RangeScale configurats al MapServer DataSources Obté la col·lecció de connexions a dades configurades al MapServer OutputType Especifica el format de sortida de l’arxiu físic del mapa Taula 5-2. Resum de propietats de l’objecte MapServer Per a poder generar un mapa, l’objecte MapServer s’ha de configurar amb un conjunt mínim de paràmetres que es descriuran a continuació. Aquest paràmetres són l’autoescala, el sistema de coordenades, les connexions a dades i les entitats (objectes LegendEntry) que es veuran al mapa. // Inicialitzem l'objecte MapServer MapSvr.GWMMapServerHelper objMS; objMS = (MapSvr.GWMMapServerHelper)objMSM.MapServer(""); Servei Web pel CCU amb GeoMedia WebMap 6.1 - 39 Mètodes Descripció breu AddLibraryConnection Configura una connexió de biblioteca AddRangeAutoScale Configura un objecte RangeScale Clear Esborra totes les configuracions actuals de l’objecte MapServer CreateMapByRange Crea el mapa a partir de la configuració actual CreateObject Funció genèrica per crear objectes de GeoMedia WebMap SetCoordinateSystem Configura el sistema de coordenades SetLegendEntryProperty Configura les propietats dels elements del mapa Taula 5-3. Resum de mètodes de l’objecte MapServer 5.1.3. RangeScale L’objecte RangeScale és el que ens permet modificar l’àrea de cobertura del mapa i els seus límits d’escala. Té tres propietats, que són Multiplier, MaximumWindow i MinimumWindow. Per a crear l’objecte RangeScale necessitem d’un objecte MapServer prèviament inicialitzat. A partir d’aquest i mitjançant el mètode AddRangeAutoScale(nom) crearem un nou objecte RangeScale dins el MapServer, i el podrem identificar pel nom indicat. Això és important doncs es pot definir més d’un objecte RangeScale al mateix MapServer i generar el mapa utilitzant el que més convingui en cada cas. Es pot veure a la figura 5-4 com es crea l’objecte RangeScale. Per a establir l’àrea de cobertura del mapa utilitzarem la propietat Multiplier de l’objecte RangeScale. Aquesta propietat li assignarem un valor enter que serà el factor d’escala utilitzat per defecte al mapa. Així, un multiplicador de 2 augmentarà l’àrea de cobertura per quatre, mentre que un multiplicador 0.5 la reduirà a una quarta part. Es pot veure a la figura 5-4 un exemple d’utilització de la propietat Multiplier. 40 - Programació bàsica de GeoMedia WebMap Per a establir els límits d’escala del mapa utilitzarem les propietats MaximumWindow i MinimumWindow, a les que els proporcionarem el valor enter de l’escala màxima i mínima respectivament. Aquests valors es prendran tenint en compte el sistema de coordenades subministrat al mapa. Es pot veure a la figura 5-4 un exemple d’utilització de les propietats MaximumWindow i MinimumWindow. La utilització d’un o altre objecte RangeScale es du a terme en la generació final del mapa. La última instrucció de la figura 5-4 mostra la generació final del mapa, que s’explicarà més endavant, on es pot veure l’ús de l’objecte RangeScale. Figura 5-4. Codi C# per a crear i configurar un objecte RangeScale Propietats Descripció breu MaximumWindow Estableix l’escala màxima del mapa MinimumWindow Estableix l’escala mínima del mapa Multiplier Estableix el multiplicador d’escala Name Estableix el nom de l’objecte Taula 5-4. Resum de propietats de l’objecte RangeScale 5.1.4. Sistema de coordenades WebMap carrega els sistemes de coordenades des de fitxers amb extensió CSF (Coordinate System File). Aquests fitxers contenen la descripció d’un sistema de coordenades concret i es poden generar fàcilment utilitzant el software d’escriptori GeoMedia. Un cop generat aquest fitxer es pot guardar i utilitzar en tantes aplicacions de WebMap com es vulgui. El procés de creació d’un arxiu CSF es descriu a l’annex VII. // Creem l'objecte RangeScale MapSvr.CGWMRangeScale objAS; objAS = (MapSvr.CGWMRangeScale)objMS.AddRangeAutoScale("objAS"); // Establim els valors d’àrea de cobertura i tamany objAS.Multiplier = 1; objAS.MaximumWindow = 25000; objAS.MinimumWindow = 100; ... // Generació del mapa objMS.CreateMapByRange(X1, Y1, X2, Y2, 400, 400, "objAS" , System. Type .Missing); Servei Web pel CCU amb GeoMedia WebMap 6.1 - 41 Per a configurar correctament el sistema de coordenades a utilitzar en el mapa s’ha d’usar el mètode SetCoordinateSystem de l’objecte MapServer, al que se li ha de passar com a paràmetre una variable de text amb la ubicació i el nom del fitxer a carregar. També s’ha de fixar quines unitats de distància farà servir el mapa per defecte, cosa que es fa mitjançant la propietat DistanceUnit del mateix objecte. A la figura 5-5 es pot veure un exemple del codi necessari per configurar un sistema de coordenades donat. Figura 5-5. Codi C# per a configurar el sistema de coordenades 5.1.5. Connexions Per tal de generar un mapa, l’objecte MapServer ha d’accedir al conjunt de dades que el defineixen (metadades), així com al conjunt de dades del qual s’alimenta (dades). La manera d’accedir a les dades i metadades del mapa és a través de la propietat Connections de l’objecte MapServer. Aquesta propietat conté una col·lecció d’objectes Connection (veure taules 5-5 i 5-6), que representen cada una de les connexions a les diferents bases de dades utilitzades per a generar el mapa. Mètodes Descripció breu Connect Activa la connexió amb la BBDD Taula 5-5. Resum de mètodes de l’objecte Connection Propietats Descripció breu Location Ubicació de l’arxiu de BBDD Mode Estableix el mode de connexió a lectura o escriptura Name Estableix el nom de la connexió Type Estableix el tipus de connexió Taula 5-6. Resum de propietats de l’objecte Connection // Establim les unitats i el sistema de coordenades objMS.DistanceUnit = "m"; objMS.SetCoordinateSystem("C:\\UTM31.csf"); 42 - Programació bàsica de GeoMedia WebMap Per a generar un mapa correctament s’ha d’afegir (com a mínim) una connexió a la col·lecció de connexions de l’objecte MapServer. Un cop s’ha creat un objecte de connexió (Connection), aquest s’ha d’obrir (ha d’establir la connexió) abans que l’objecte MapServer en pugui fer ús. Si això no es fes així, l’objecte MapServer donaria un error a l’hora d’intentar obtenir-ne dades, doncs la connexió estaria encara tancada. Per a configurar una nova connexió a base de dades primer s’ha de crear un objecte Connection mitjançant el mètode CreateObject d’un objecte MapServer prèviament inicialitzat (veure figura 5-6). Un cop creat l’objecte Connection s’ha de configurar a través de les seves propietats (veure figura 5-6). S’ha d’assignar un nom a la connexió mitjançant la propietat Name, el tipus de base de dades que es farà servir amb la propietat Type i l’adreça on trobar la base de dades (la ruta a l’arxiu en el cas d’una base de dades de Microsoft Access) amb la propietat Location. Un cop configurat l’objecte Connection s’ha d’invocar el mètode de connexió Connect per tal que el MapServer en pugui fer ús (figura 5-6). Figura 5-6. Codi C# per a crear i configurar un objecte Connection 5.1.6. Objectes LegendEntries i LegendEntry Per tal de visualitzar entitats al mapa aquestes s’han de configurar a l’objecte MapServer. Aquesta configuració es realitza a partir de la col·lecció LegendEntries de l’objecte MapServer, que conté un element LegendEntry per cada entitat que es vulgui visualitzar al mapa. // Creem l'objecte de connexió a la BBDD PClient.Connection objConn = null; objConn = (PClient.Connection)objMS.CreateObject( "GeoMedia.Connection", null); // Establim el nom, tipus i on adreça objConn.Name = "CCU"; objConn.Type = "Access.GDatabase"; objConn.Location = DataBasePath; // Obrim la BBDD objConn.Connect(); Servei Web pel CCU amb GeoMedia WebMap 6.1 - 43 Propietats Descripció breu GeometryFieldName Estableix el nom del camp dins l’origen de dades que conté la geometria de l’entitat InputRecordset Estableix l’origen de dades (recordset) de l’entitat Name Estableix el nom de la capa SetLegendEntryProperty Estableix una propietat interna de l’objecte LegendEntry Style Estableix l’estil amb el que es visualitzarà l’entitat al mapa Taula 5-7. Resum de propietats de l’objecte LegendEntry Mètodes Descripció breu GetDisplayScaleRange Obté els límits de l’escala SetDisplayScaleRange Estableix els límits de l’escala Taula 5-8. Resum de mètodes de l’objecte LegendEntry Hi ha quatre propietats fonamentals a configurar en cada entitat del mapa, que són el conjunt de dades d’entrada, la geometria, el nom de la capa i l’estil de l’entitat. Addicionalment es pot configurar la interactivitat de l’entitat i els límits de l’escala dins els que l’entitat serà visible. Aquestes configuracions corresponen amb les propietats i mètodes indicats anteriorment a les taules 5-7 i 5-8. A continuació s’explica detalladament com es configura cadascuna d’elles. InputRecordset: Per a configurar el conjunt de dades d’entrada s’ha de subministrar a l’objecte LegendEntry d’un objecte GRecordset que contingui tant les seves dades geomètriques com els seus atributs. Hi ha diverses formes d’obtenir aquest objecte GRecordset, algunes de les quals s’hi farà referència posteriorment (veure capítol 5.1.7.Objectes addicionals). GeometryFieldName: Perquè l’objecte MapServer interpreti correctament la geometria de l’entitat i en dibuixi el resultat al mapa, el conjunt de dades de l’entitat ha de tenir un camp que contingui la geometria de l’entitat. Mitjançant la propietat GeometryFieldName 44 - Programació bàsica de GeoMedia WebMap s’especifica quin dels camps del conjunt de dades és el que representa la geometria de l’entitat. Name: Estableix quin és el nom que rep l’objecte LegendEntry. Aquest nom és important perquè pot servir posteriorment per a fer referència a un conjunt d’entitats concret (un LegendEntry) i per a accedir-hi des del codi client (també és el nom que rebrà la capa al visualitzador), com es veurà a l’apartat de programació de client. Style: Mitjançant una sèrie d’objectes de l’API de WebMap es poden definir els estils visuals que tindran les entitats al mapa. Aquests objectes però, se’n dedueix de la documentació que la seva funcionalitat s’ha vist substituïda per un únic objecte que pretén centralitzar-los tots: l’objecte StyleDefinition. En la pràctica aquest objecte és complex d’utilitzar i la documentació al respecte és reduïda, i en tot cas confusa. S’ha trobat un mètode molt més adient d’utilitzar els estils: es generen des de GeoMedia i es guarden en una biblioteca d’estils, i després es carreguen mitjançant el mètode GetFromLibrary de l’objecte MapServer. Aquest mètode, a més, permet mantenir el mateix aspecte visual que els estils generats des de GeoMedia, a més de tenir-los en un magatzem extern i permetre’n així la seva modificació sense necessitat de modificar el codi. S’inclou un annex (veure Annex VIII) on s’explica tot aquest procés. SetDisplayScaleRange: Es pot limitar l’escala de visualització d’una entitat amb aquest mètode, de manera que aquesta és visible en el mapa només en un cert rang d’escala. Indicant-ne l’escala mínima i màxima amb aquest mètode de l’objecte LegendEntry s’indicarà a partir de quina escala (mínima) i fins a quina escala (màxima) serà visible l’entitat. Cal tenir en compte que les escales especificades s’interpretaran en funció del sistema de coordenades configurat a l’objecte MapServer. SetLegendEntryProperty: Aquest és un mètode genèric per establir valors en propietats internes dels objectes LegendEntry. En la pràctica s’utilitza per a configurar la interactivitat amb l’usuari de l’entitat, és a dir, què passarà quan l’usuari assenyali amb el punter l’entitat o la seleccioni. Hi ha dues propietats internes de l’objecte LegendEntry que estan documentades: MapWindowToolTip i gwmAction. La primera permet configurar el text que es veurà quan el punter de l’usuari es situï a sobre de l’entitat, mentre que la Servei Web pel CCU amb GeoMedia WebMap 6.1 - 45 segona permet configurar l’acció que es durà a terme quan es seleccioni l’entitat (normalment funcions javascript de client). Per a fer servir aquestes propietats de forma útil es poden fer servir les paraules reservades Input.NOMCAMP per a fer referència a el valor d’un atribut de l’entitat amb la que s’interactua, essent NOMCAMP el nom de l’atribut (camp) del conjunt de dades d’entrada del LegendEntry configurat. Un cop configurat de forma adient l’objecte LegendEntry, aquest s’ha d’afegir a la col·lecció LegendEntries de l’objecte MapServer. Tots els objectes LegendEntry creats i configurat s’afegiran a aquesta col·lecció per tal que es puguin visualitzar al mapa. Això es fa mitjançant el mètode Append, al qui s’ha de subministrar com a paràmetres l’objecte LegendEntry que es vol afegir, i la posició (índex numèric) abans de la que es vol afegir l’objecte i/o la posició després de la que es vol afegir. El mètode més habitual és generar els objectes LegendEntry i anar-los afegint sense especificar la posició, i així es van afegint en l’ordre estricte del codi. Cal tenir en compte que l’ordre els objectes LegendEntry serà traduït en el visualitzador a l’ordre de superposició de les capes del mapa: la primera entitat (LegendEntry) afegida estarà a la part superior (sempre visible) i la última afegida a la part inferior (no necessàriament visible). És recomanable doncs, realitzar una planificació prèvia de les capes que es volen publicar i en quin ordre es volen visualitzar. A la figura 5-7 es pot veure un exemple complert de la configuració d’un objecte LegendEntry i com s’afegeix aquest al mapa. Donat que aquestes operacions s’han de programar amb molta freqüència (de fet, tantes vegades com entitats es vol que apareguin en un mapa) s’han creat classes d’ajuda per al CCU per tal de facilitar aquesta tasca. 52 - Programació bàsica de GeoMedia WebMap • MapScale: Paràmetre afegit a les darreres versions. Sense documentar. Utilitzar sempre el valor System.Type.Missing de .NET per deixar-lo en blanc. Una vegada executat el mètode CreateMapByRange amb èxit, s’haurà generat un nou mapa en el format indicat a la carpeta configurada al servidor com a GWMCache. És possible obrir l’arxiu generat per comprovar-ne el contingut si es disposa del visualitzador corresponent al format generat. Per tal de visualitzar el mapa en una aplicació web s’utilitza el valor en aquest instant de la propietat OutputFile de l’objecte MapServer. Després d’haver generat el mapa aquesta propietat conté l’adreça URL de l’arxiu del mapa que s’ha creat (és un valor de tipus string). Ara aquesta adreça es pot incloure en l’aplicació web al lloc més adient per a visualitzar el mapa obtingut. 5.1.9. Alliberació de recursos Les classes utilitzades per programar sota la plataforma Microsoft .NET Framework no són natives d’aquesta plataforma, sinó que són objectes COM importats des del compilador .NET en mode d’interoperabilitat. És per això que no s’alliberen els recursos de la forma habitual en .NET (l’eina anomenada Garbage Collector s’encarrega d’això), sinó que s’han d’alliberar de forma manual. Per a alliberar un objecte s’ha de fer servir un alliberador programat a la classe Marshal de la llibreria d’interoperabilitat de la plataforma .NET. A aquest alliberador se’l crida passant-li com a paràmetre l’objecte COM que es vol que alliberi. Si no es fa d’aquesta manera s’aconsegueix que el servei de mapes de GeoMedia WebMap es saturi i es quedi en un estat de bloqueig, on arribat el punt la única solució per a que torni a funcionar és reiniciar el servei manualment. El codi que s’executa per a alliberar un objecte COM consta de tres parts: primer, l’objecte ha de tenir contingut, és a dir, no ha d’estar buit, ja que sinó no cal alliberar-lo; en segon lloc s’ha de fer la crida a l’alliberador; finalment s’ha de buidar de la forma habitual la variable utilitzada, per tal que l’alliberador de la plataforma .NET, el Garbage Collector Servei Web pel CCU amb GeoMedia WebMap 6.1 - 53 (GC), n’alliberi els recursos que hagi reservat dins la seva plataforma. La figura 5-11 mostra un exemple del codi a executar per a alliberar un objecte OriginatingPipe. Figura 5-11. Codi C# per a alliberar els recursos dels objectes de WebMap No tots els objectes que es facin servir durant la programació s’hauran d’alliberar mitjançant aquest mètode, només els objectes que siguin propis de l’API de GeoMedia WebMap. Els objectes d’altres APIs o propis de la plataforma s’hauran d’alliberar d’acord amb les especificacions donades pel seu fabricant o distribuïdor. 5.2. Programació de client: Control de visualització del mapa El concepte de programació de client és diferent del de programar al servidor. La programació de client s’executa exclusivament a la màquina de l’usuari, i dins l’entorn del navegador web. Això fa que tingui uns recursos molt limitats i per tant, la seva funcionalitat està en conseqüència limitada. Aquesta programació es pot realitzar en dos llenguatges: VisualBasic Script i Javascript, sent aquest darrer el llenguatge més utilitzat. Tal i com s’ha explicat en el primer apartat d’aquest capítol, un cop generat el mapa en el servidor aquest s’envia cap al client, on s’interpreta segons el format de generació triat. En funció d’aquest format el mapa s’haurà de visualitzar d’una forma o altra, i això farà que en funció el format es pugui disposar d’una sèrie de característiques diferents. L’eina amb la que es visualitza el mapa també és responsable de les diferents característiques finals que tindrà el mapa, permetent realitzar diferents operacions amb aquest per part de l’usuari final. GeoMedia WebMap proporciona quatre formes de visualització que són: visualització mitjançant imatges (corresponent als formats de mapa // Comprovem que l’objecte tingui algun contingut if (objOriginatingPipe != null) { // Cridem al releaser d’objectes COM System.Runtime.InteropServices.Marshal.ReleaseComObject( objOriginatingPipe); // Un cop alliberat, l’assignem a null perquè actui el GC objOriginatingPipe = null; } 54 - Programació bàsica de GeoMedia WebMap PNG i JPG), que no té cap eina d’ajuda per a programació de client i s’ha de programar manualment tota la funcionalitat desitjada; ActiveCGM (corresponent al format CGM) que permet una interactivitat limitada i ofereix una algunes funcions preprogramades al client; javaViewer (corresponent al format jViewer) que permet força interactivitat amb el mapa i disposa d’una API molt completa; i SVG (corresponent als formats SVG i SVGZ) que permet molta interactivitat i ofereix també una API de programació a client molt completa. GeoMedia WebMap no ofereix cap tipus d’eina per a la visualització de mapes en forma d’imatges estàtiques, és a dir, amb els formats JPG i PNG, i això vol dir que qualsevol operació que es vulgui realitzar amb el mapa s’haurà de programar completament, mitjançant la captura de la posició de la imatge assenyalada, i enviant-la al servidor perquè es tradueixi a coordenades del mapa i s’efectuï la operació desitjada. És el tipus de format menys utilitzat amb GeoMedia WebMap per motius obvis. 5.2.1. Visualitzadors ActiveCGM: L’Active CGM és un plug-in de visualització que exposa una petita API de programació de client mitjançant la qual es poden programar amb relativa facilitat les operacions més comunes del mapa, com són l’activació/desactivació de capes, zooms i interactivitat amb les entitats. El seu punt més feble és la presentació gràfica, que no té la qualitat que ofereix l’aplicació d’escriptori GeoMedia. JavaViewer: El javaViewer és un applet de java que actua com a plug-in de visualització, i que també exposa una API de programació de client, molt més completa que la del control ActiveCGM. A més de permetre realitzar més operacions amb el mapa, el resultat gràfic és millor que en el cas anterior, tot i que tampoc arriba a la que ofereix GeoMedia. SVG: El plug-in de visualització SVG (Scalable Vector Graphics) està basat en l’estàndard proposat per la OGC, i GeoMedia WebMap ofereix una API de programació de client molt completa. A més permet una interacció amb el mapa molt interessant i el resultat gràfic és pràcticament idèntic al que ofereix l’aplicació d’escriptori, aprofitant els avantatges dels gràfics vectorials. És per aquests motius que és el visualitzador més utilitzat amb GeoMedia WebMap. Actualment està en desenvo anomenat flashNavigator , de la coneguda empresa NavTeq disponible per a la generació del mapa, on s’afegiran dos nous formats disponibles: mapa per flashNavigator (tindrà el valor 5) i mapa per flashNavigator comprimit (tindrà el valor 6). Aquestes novetats les incorporarà Intergraph en la nova versió 6.1.6 prevista per a mitjans de gener de 2010. 5.2.2. API del control SVG La API del control SVG consta d’una sèrie de internes del control, exposant possible. Per a fer servir aquesta API s’han de realitzar dos passos: • Configuració XSL: Utilitzant l’administrador de l’arxiu XSL que farà servir per defecte figura 5-12 , i s’explica a l’Annex II: Configuració de Aquest arxiu és el que defineix l’aspecte visual del control SVG. • Inclusió de scripts : Dins la pàgina web on aparegui el mapa s’han d’incloure referències als arxius de l’API del control SVG que proporciona WebMap. Figura 5-12 . Configuració de transformació XSL de Servei Web pel CCU amb GeoMedia Actualment està en desenvo lupament un suportar un visualitzador basat en tecnologia flash , de la coneguda empresa NavTeq . Aquesta funcionalitat estarà disponible per a la generació del mapa, on s’afegiran dos nous formats disponibles: mapa (tindrà el valor 5) i mapa per flashNavigator comprimit (tindrà el valor 6). Aquestes novetats les incorporarà Intergraph en la nova versió 6.1.6 prevista per a API del control SVG La API del control SVG consta d’una sèrie de fitxers que contenen les crides a les funcions internes del control, exposant - ne al programador només una interfície el més simplificada possible. Per a fer servir aquesta API s’han de realitzar dos passos: Configuració XSL: Utilitzant l’administrador de WebMap s’ha de configurar l’arxiu XSL que farà servir per defecte GeoMedia WebMap , tal i com es veu a la , i s’explica a l’Annex II: Configuració de GeoMedia Aquest arxiu és el que defineix l’aspecte visual del control SVG. : Dins la pàgina web on aparegui el mapa s’han d’incloure referències als arxius de l’API del control SVG que proporciona . Configuració de transformació XSL de WebMap GeoMedia WebMap 6.1 - 55 lupament un suportar un visualitzador basat en tecnologia flash . Aquesta funcionalitat estarà disponible per a la generació del mapa, on s’afegiran dos nous formats disponibles: mapa (tindrà el valor 5) i mapa per flashNavigator comprimit (tindrà el valor 6). Aquestes novetats les incorporarà Intergraph en la nova versió 6.1.6 prevista per a fitxers que contenen les crides a les funcions ne al programador només una interfície el més simplificada s’ha de configurar , tal i com es veu a la GeoMedia WebMap 6.1. Aquest arxiu és el que defineix l’aspecte visual del control SVG. : Dins la pàgina web on aparegui el mapa s’han d’incloure referències als arxius de l’API del control SVG que proporciona GeoMedia WebMap 56 - Programació bàsica de GeoMedia WebMap La inserció del controls de visualització es realitza mitjançant un tag HTML, que en cas concret del control SVG és com el que es veu a la figura 5-13. Dins aquest tag hi ha cinc propietats importants que cal omplir correctament per a poder tractar posteriorment el mapa: • ID: Representa l’identificador únic de l’objecte dins la pàgina web, que es necessitarà posteriorment per a obtenir aquest objecte a través de les funcions de localització d’objectes de javascript. • WIDTH: Determina l’amplada en píxels del mapa a la pantalla. • HEIGHT: Determina l’alçada en píxels del mapa a la pantalla. • PLUG-INSPAGE: Especifica quina pàgina es carregarà de forma automàtica si no es detecta el plug-in correctament instal·lat al navegador web. • SRC: Especifica l’adreça web (en format URL) on es troba l’arxiu SVG/SVGZ del mapa que s’ha de carregar. Figura 5-13. Tag HTML per a afegir un mapa SVG a la pàgina web L’API del control SVG ofereix nombroses funcions de navegació, captura del punter i programació sobre les capes i entitats. En aquest apartat es farà un resum d’aquelles funcions més importants i s’inclouran exemples del seu funcionament. Figura 5-14. Declaració, captura i ús de l’objecte mapa des de JavaScript <embed id="objMapView" name="objMapView" type="image/svg+xml" width="500" height="300" plug-inspage="NoPlug-in.aspx" src="<% =MapFileName %>" /> var gObjMapView; function ViewControlStarted(mapWidth) { var gObjMapView = null; gObjMapView = document.getElementById("objMapView"); if (gObjMapView.readystate != 4) { setTimeout(ViewControlStarted, 50); return; } gObjMapView.window.initializeGWMSVG( gObjMapView, true, true); } Servei Web pel CCU amb GeoMedia WebMap 6.1 - 57 L’API exposa un objecte que s’ha de crear i inicialitzar tant bon punt la pàgina on es troba el mapa estigui carregada, per tal que quan l’usuari comenci a realitzar operacions aquest objecte estigui operatiu. Aquest objecte representa el mapa en el client, i és a través d’ell que es podrà accedir a totes les funcions i propietats del mapa quan es programi en client. Aquest objecte s’ha de capturar mitjançant la propietat ID que se li hagi especificat en el tag HTML que s’ha afegit a la pàgina del mapa. Es pot veure un exemple en la figura 5-14. La variable que conté l’objecte del mapa es declara fora de la funció per tal que sigui accessible des de qualsevol operació que es realitzi a la pàgina, sense necessitat de recórrer la pàgina a la recerca de l’objecte cada vegada que es vulgui treballar amb ell. A més a més, declarant l’objecte de forma global ens permet programar un mecanisme senzill d’inicialització de l’objecte, mitjançant el codi de la figura 5-14, on es crida aquesta funció des de la càrrega inicial de la pàgina per assegurar-se de que l’objecte estigui inicialitzat quan es comenci a treballar amb ell. Captura de punter El control SVG permet programar diferents captures del punter sobre el mapa, incloent de captures d’un punt, d’una línia, d’un cercle o d’un polígon. El funcionament d’aquestes funcions és comú per totes elles: s’estableix internament al mapa un estat de captura, que fa que el mapa esperi a que l’usuari assenyali tants punts com sigui necessari (en funció de la opció triada: línia, polígon, etc.), i un cop capturats tots els punts, s’executa una funció de client que rep com a paràmetres les coordenades capturades directament en el sistema de coordenades del mapa. Les diferents funcions són: • ObjMap.cmdCapturePoint(funcio, param): Aquesta funció realitzarà la captura d’un punt al mapa. ObjMap representa l’objecte del mapa inicialitzat, mentre que funcio és el nom de la funció javascript que es cridarà quan s’hagi capturat el punt, i param són (separats per comes, tants com es vulguin) els diferents paràmetres que es passaran directament a la funció que es cridi. • ObjMap.cmdCaptureLine(funcio, param): Aquesta funció realitzarà la captura d’una línia al mapa, és a dir, dos punts. ObjMap representa l’objecte del mapa inicialitzat, mentre que funcio és el nom de la funció javascript que es cridarà quan 58 - Programació bàsica de GeoMedia WebMap s’hagi capturat la línia, i param són (separats per comes, tants com es vulguin) els diferents paràmetres que es passaran directament a la funció que es cridi. • ObjMap.cmdCaptureRectangle(funcio, param): Aquesta funció realitzarà la captura d’un rectangle al mapa, és a dir, dos punts (dues cantonades oposades d’un rectangle). ObjMap representa l’objecte del mapa inicialitzat, mentre que funcio és el nom de la funció javascript que es cridarà quan s’hagi capturat el rectangle, i param són (separats per comes, tants com es vulguin) els diferents paràmetres que es passaran directament a la funció que es cridi. • ObjMap.cmdCaptureCircle(funcio, param): Aquesta funció realitzarà la captura d’un cercle al mapa, és a dir, dos punts (el punt central i un punt qualsevol del perímetre). ObjMap representa l’objecte del mapa inicialitzat, mentre que funcio és el nom de la funció javascript que es cridarà quan s’hagi capturat el cercle, i param són (separats per comes, tants com es vulguin) els diferents paràmetres que es passaran directament a la funció que es cridi. Mitjançant l’ús d’aquestes funcions es poden realitzar senzillament les tasques més comunes, com ara la navegació en servidor (tant els zooms com el desplaçament pel mapa), amb l’ajuda també dels transformadors de client. Aquests transformadors, inclosos dins els arxius de l’API, apliquen els estils necessaris perquè la visualització de les operacions amb el mapa sigui més satisfactòria per a l’usuari. El procediment habitual d’ús és el de preparar la operació a realitzar amb l’ajuda de les eines de captura de l’API, i un cop definida la operació i els paràmetres (per exemple, el zoom i les coordenades de l’àrea on es vol aplicar aquest zoom), s’executa un script que realitzi la recàrrega de la pàgina però enviant la operació i les dades necessàries com a paràmetres d’aquesta pàgina. La pàgina ha d’estar preparada per a rebre aquests paràmetres i interpretar-los correctament (seguint el mateix exemple, la pàgina hauria de tornar a generar el mapa, però no sencer sinó només la zona que se li passa per paràmetre). Servei Web pel CCU amb GeoMedia WebMap 6.1 - 59 Amb aquestes funcions es pot programar qualsevol funcionalitat que requereixi una situació visual al mapa (excepte aquelles en les que intervingui una entitat existent, que es programen mitjançant els hotspots, veure apartat 5.1.6), com poden ser afegir entitats a una classe d’entitat seleccionant la ubicació desitjada, mesurar distàncies o àrees de forma interactiva, obtenir la coordenada corresponent a una posició assenyalada al mapa, etc. L’API del control SVG presenta les entitats organitzades en capes, que corresponen a cada classe d’entitat afegida al mapa. Aquestes capes estan ubicades dins l’objecte de mapa de client a la propietat Legend, i s’hi pot accedir utilitzant el codi de la figura 5-15. Un cop tenim una capa, podem realitzar vàries accions amb ella sense necessitat d’accedir al servidor per a regenerar el mapa: • Amagar capa: Oculta al mapa la classe d’entitat (capa) especificada. • Ensenyar capa: Mostra al mapa la classe d’entitat especificada. • Habilitar hotspots: Permet l’execució de hotspots a la classe d’entitat especificada. • Inhabilitar hotspots: Inhabilita l’execució de hotspots a la classe d’entitat especificada. • Habilitar tooltips: Permet la visualització de tooltips a la classe d’entitat especificada. • Inhabilitar tooltips: No permet la visualització de tooltips a la classe d’entitat especificada. El primer pas és obtenir la capa amb la que es vol treballar. Aquesta acció es fa accedint a la col·lecció displayEntries de la propietat Legend de l’objecte del mapa. S’ha de cridar el mètode item(capa), al que se li passa com a paràmetre un text amb el nom de la capa que es vol obtenir (veure figura 5-15). 60 - Programació bàsica de GeoMedia WebMap Un cop es té la capa, es poden realitzar les funcions anteriorment descrites. Per fer-ho s’haurà de cridar a les funcions: • setDisplayMode(mode): Ensenya o amaga una capa al mapa. El paràmetre mode serà ObjMapa.DisplayMode.on per a ensenyar-la o ObjMapa.DisplayMode.off per amagar-la. • isEnabled(): Retorna un valor booleà (verdader/fals) que indica si la capa és localitzable, és a dir, si el client pot interactuar amb les entitats que aquesta conté. • enableHotspots(): Permet que les entitats executin accions programades. • disableHotspots(): No permet que les entitats executin accions programades. • enableTooltips(): Permet la visualització dels textos de les entitats. • disableTooltips(): No permet que es vegin els textos de les entitats. Figura 5-15. Funció Javascript per ensenyar/amagar una capa Mitjançant aquestes funcions, es poden realitzar en client aquestes operacions amb les classes d’entitat del mapa d’una manera senzilla i molt ràpida, degut a que l’execució no torna al servidor per a interpretar cada operació que es vol realitzar, sinó que aquestes s’interpreten directament dins el control SVG gràcies a les funcions de l’API incloses a la pàgina. function setLayerVisibility(element) { var layer = element.name; var le = gObjMapView.Legend.displayEntries.item(layer); if (element.checked) { le.setDisplayMode(gObjMapView.DisplayMode.on); if (le.isEnabled()) { le.enableHotspots(); le.enableTooltips(); } } else { le.setDisplayMode(gObjMapView.DisplayMode.off); if (le.isEnabled()) { le.disableHotspots(); le.disableTooltips(); } } } Servei Web pel CCU amb GeoMedia WebMap 6.1 - 61 5.2.3. Navegació en client El control SVG permet un mode de navegació pel mapa natiu, que aprofita les funcionalitats del format SVG (és vectorial) per fer les ampliacions o reduccions necessàries, així com el posicionament i moviment dins el mapa (panning). Aquestes funcions de navegació les pot cridar directament l’usuari, sense necessitat de programar res a la pàgina web. Les funcions són: • Apropament: Amplia la zona assenyalada al mapa. S’executa prement el botó esquerre del ratolí en un punt del mapa mentre es manté premuda la tecla Control del teclat. • Allunyament: Allunya la vista del mapa centrant-lo a la zona assenyalada. S’executa prement el botó esquerre del ratolí en un punt del mapa mentre es mantenen premudes les tecles Control i Shift (a la vegada) del teclat. • Apropament en finestra: Amplia la visió del mapa fins a cobrir l’àrea definida per la finestra seleccionada. S’executa prement el botó esquerre del ratolí en un punt, i sense deixar-lo anar, moure el punter fins a la cantonada contrària de la finestra que volem definir, on es deixarà anar el botó. • Desplaçament: Permet a l’usuari desplaçar-se pel mapa, quan aquest no es veu en la seva totalitat a la finestra. S’executa prement el botó esquerre del ratolí en un punt de referència, i sense deixar-lo anar, moure el punter en direcció contrària de la part del mapa que es vulgui veure, i deixar anar el botó. La navegació en client té un gran handicap, ja que tot i ser molt més ràpida que la navegació en servidor, té una resolució gràfica absolutament limitada. Per exemple, quan es fa una ampliació, aquesta es realitza al cost de perdre resolució (tot es fa més gran, referències, gruixos de línies, etc.), mentre que si s’executen en servidor sempre es manté la resolució inicial del mapa. 68 - Funcions avançades 6.1.3. Mòdul de comptar entitats properes Aquest mòdul el va implementar i exposar el David Martin Perelló Mires en el seu treball de final de carrera “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor 2005. Aquest mòdul permet comptar per cada illa d’edificis del mapa de Mataró aquelles entitats que es troben a una certa distància que introdueix l’usuari. La distància de càlcul està limitada a 700 metres. El mòdul, com a resultat final, dibuixa un mapa temàtic en funció del número d’entitats que conté cada illa dins la distància especificada. El mapa temàtic pot utilitzar colors aleatoris o utilitzar un escalat de color especificat per l’usuari (degradat des d’un color inicial fins a un color final). Les illes que no contenen cap entitat es mostren de color blanc. Finalment, es va decidir relacionar aquest mòdul amb la població de Mataró, i s’hi ha afegit la opció de generar un segon mapa temàtic que es basa en les illes que no contenen entitats. Aquest temàtics és per rangs i expressa el nombre d’habitants per illa. El funcionament d’aquest mòdul és el següent: es carreguen les classes d’entitat de l’entitat sobre la que es vol fer el temàtic i la d’illes. Tot seguit es generen les àrees d’influència de cada illa amb la distància especificada per l’usuari, i es fa una intersecció espacial amb les entitats base. Es fa una agregació a les illes amb el número d’entitats que toquen la seva àrea d’influència, i s’afegeixen al mapa totes les que tinguin una o més entitats dins el radi. De les illes que no tenen cap entitat relacionada, se’n fa un temàtic de població mitjançant una agregació amb la taula del padró. Es pot veure un exemple del resultat d’aquest mòdul en la figura 6-3. Figura 6-3 . Temàtic del mòdul de comptar entitats sobre els CAP de Mataró 6.1.4. Mòdul de temàtics per proximita El mòdul de proximitat ja havia estat implementat i exposat anteriorment per la Meritxell González Navarro en el seu treball de final de carrera “Utilització d’un SIG per analitzar la població de Mataró”, Primavera 2004. El David Martin Perelló Mires v funcionalitats i millores en la visualització dels temàtics, en el seu treball de final de carrera “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor El mòdul produeix dos tipus de resultats: • Mapa temàtic per proximitat escalats, a partir de la distància a la que es troben les illes d’una classe d’entitat seleccionada al mapa. • Mapa temàtic de proximitat i de la població més llunyana: realitza la presentació anterior, i a més, afegeix un temàtic per rangs (escalats) de les illes més llunyanes. Aquest temàtic representa la població que està més allunyada de la classe d’entitat. Servei Web pel CCU amb GeoMedia . Temàtic del mòdul de comptar entitats sobre els CAP de Mataró Mòdul de temàtics per proximita t El mòdul de proximitat ja havia estat implementat i exposat anteriorment per la Meritxell González Navarro en el seu treball de final de carrera “Utilització d’un SIG per analitzar la població de Mataró”, Primavera 2004. El David Martin Perelló Mires v funcionalitats i millores en la visualització dels temàtics, en el seu treball de final de carrera “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor El mòdul produeix dos tipus de resultats: Mapa temàtic per proximitat : es mostra un temàtic per rangs, de colors aleatoris o escalats, a partir de la distància a la que es troben les illes d’una classe d’entitat seleccionada al mapa. Mapa temàtic de proximitat i de la població més llunyana: realitza la presentació i a més, afegeix un temàtic per rangs (escalats) de les illes més llunyanes. Aquest temàtic representa la població que està més allunyada de la classe d’entitat. GeoMedia WebMap 6.1 - 69 . Temàtic del mòdul de comptar entitats sobre els CAP de Mataró El mòdul de proximitat ja havia estat implementat i exposat anteriorment per la Meritxell González Navarro en el seu treball de final de carrera “Utilització d’un SIG per analitzar la població de Mataró”, Primavera 2004. El David Martin Perelló Mires v a afegir-hi noves funcionalitats i millores en la visualització dels temàtics, en el seu treball de final de carrera “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor 2005. : es mostra un temàtic per rangs, de colors aleatoris o escalats, a partir de la distància a la que es troben les illes d’una classe d’entitat Mapa temàtic de proximitat i de la població més llunyana: realitza la presentació i a més, afegeix un temàtic per rangs (escalats) de les illes més llunyanes. Aquest temàtic representa la població que està més allunyada de la classe d’entitat. 70 - Funcions avançades El funcionament d’aquest mòdul és el següent: es carreguen les classes d’entitat sobre la que es realitza la operació i la d’illes. Tot seguit s’afegeix com a atribut funcional de les illes la localització de les entitats, i se’n genera una zona d’influència de radi fix. A partir d’aquí, per una banda se’n calcula la distància mínima des de l’i l’atribut funcional i s’afegeixen al mapa com a temàtic per distància; per l’altra banda, es busquen les illes sense cap entitat, se’n consulta la població mitjançant una agregació, i s’afegeixen al mapa formant un temàtic per pobl resultat d’aquest mòdul a la figura 6 Figura 6- 4. Temàtic del mòdul de càlcul de proximitat a entitats 6.1.5. Mòdul de finques per ús i any de construcció Aquest mòdul el va implementar i exposar el David Martin Perelló de final de carrera “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor 2005. Aquest mòdul és l’únic que treballa sobre la base de dades del cadastre de Mataró. El mòdul té com a objectiu la creació de mapes marcant les que compleixin els requisits especificats per l’usuari. El funcionament d’aquest mòdul és el següent: es carreguen les classes d’entitat sobre la que es realitza la operació i la d’illes. Tot seguit s’afegeix com a atribut funcional de les illes la localització de les entitats, i se’n genera una zona d’influència de radi fix. A partir d’aquí, per una banda se’n calcula la distància mínima des de l’i lla fins a la posició de l’atribut funcional i s’afegeixen al mapa com a temàtic per distància; per l’altra banda, es busquen les illes sense cap entitat, se’n consulta la població mitjançant una agregació, i s’afegeixen al mapa formant un temàtic per pobl ació. Se’n pot veure un exemple de resultat d’aquest mòdul a la figura 6 -4. 4. Temàtic del mòdul de càlcul de proximitat a entitats Mòdul de finques per ús i any de construcció Aquest mòdul el va implementar i exposar el David Martin Perelló Mires en el seu treball de final de carrera “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor que treballa sobre la base de dades del cadastre de Mataró. El mòdul té com a objectiu la creació de mapes marcant les parcel·les on existeixen finques que compleixin els requisits especificats per l’usuari. El funcionament d’aquest mòdul és el següent: es carreguen les classes d’entitat sobre la que es realitza la operació i la d’illes. Tot seguit s’afegeix com a atribut funcional de les illes la localització de les entitats, i se’n genera una zona d’influència de radi fix. A partir lla fins a la posició de l’atribut funcional i s’afegeixen al mapa com a temàtic per distància; per l’altra banda, es busquen les illes sense cap entitat, se’n consulta la població mitjançant una agregació, i ació. Se’n pot veure un exemple de 4. Temàtic del mòdul de càlcul de proximitat a entitats Mires en el seu treball de final de carrera “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor que treballa sobre la base de dades del cadastre de Mataró. El parcel·les on existeixen finques L’usuari ha d’entrar sempre un rang d’anys que indicarà entre quins marges de data es van construir les finques que es busquen. Després es poden especificar dos paràm addicionals: l’ús que se li dóna a la finca pot indicar de quin color es mostraran les parcel·les on es trobin les finques que compleixin els paràmetres donats. El funcionament del mòdul és molt se del cadastre (FinquesAnyConstrucció, FinquesPlantes, FinquesUS) i la taula de parcel·les aplicant els filtres especificats per l’usuari de parcel·l es trobades a cada illa finca, i es mostra la resta al mapa. figura 6-5. Figura 6-5 . Finques de tipus “vivenda” construïdes entre 1950 i 196 6.1.6. Mòdul d’activitats econòmiques Aquest mòdul el va implementar projecte del CCU. Servei Web pel CCU amb GeoMedia L’usuari ha d’entrar sempre un rang d’anys que indicarà entre quins marges de data es van construir les finques que es busquen. Després es poden especificar dos paràm addicionals: l’ús que se li dóna a la finca , i l’estat en què està la finca. Finalment, l’usuari pot indicar de quin color es mostraran les parcel·les on es trobin les finques que compleixin El funcionament del mòdul és molt se nzill: es fan les relacions necessàries entre les taules del cadastre (FinquesAnyConstrucció, FinquesPlantes, FinquesUS) i la taula de parcel·les aplicant els filtres especificats per l’usuari , i tot seguit es realitza una agregació del nombre es trobades a cada illa . Finalment, s’esborren aquelles illes que no contenen cap al mapa. Podem veure un exemple de resultat d’aquest mòdul a la . Finques de tipus “vivenda” construïdes entre 1950 i 196 Mòdul d’activitats econòmiques Aquest mòdul el va implementar en David Perelló en posteriors col·laboracions amb el GeoMedia WebMap 6.1 - 71 L’usuari ha d’entrar sempre un rang d’anys que indicarà entre quins marges de data es van construir les finques que es busquen. Després es poden especificar dos paràm etre , i l’estat en què està la finca. Finalment, l’usuari pot indicar de quin color es mostraran les parcel·les on es trobin les finques que compleixin nzill: es fan les relacions necessàries entre les taules del cadastre (FinquesAnyConstrucció, FinquesPlantes, FinquesUS) i la taula de parcel·les , , i tot seguit es realitza una agregació del nombre . Finalment, s’esborren aquelles illes que no contenen cap Podem veure un exemple de resultat d’aquest mòdul a la . Finques de tipus “vivenda” construïdes entre 1950 i 196 0 posteriors col·laboracions amb el 72 - Funcions avançades Aquest mòdul és l’únic que treballa sobre la base de dades d’activitats econòmiques de Mataró. En concret, el mòdul obté la relació d’activitats econòmiques de la taula de BrossaComercial. El mòdul té com a objectiu la creació de mapes marcant les parcel·les on existeixen finques que compleixin els requisits especificats per l’usuari. L’usuari ha d’entrar sempre una o més activitats comercials per a filtrar les parcel·les que es mostraran al mapa (es poden especificar d’una llista de noms d’activitat, o pel seu codi numèric d’activitat), i pot especificar el color en el que es ressaltaran les parcel·les que continguin aquest tipus d’activitat. Com a operacions addicionals, l’usuari pot escollir treballar amb números de policia en comptes de parcel·les. A més, permet la generació de zones d’influència senzilles per a les activitats comercials seleccionades, i també crear un temàtic amb la població que es troba a més distància que l’especificada per l’usuari. En tots els casos, l’usuari pot indicar de quin color es mostraran les parcel·les on es trobin les finques que compleixin els paràmetres donats i quins es faran servir en els temàtics. El funcionament bàsic del mòdul és senzill, doncs fa una relació entre la informació de la brossa comercial i les entitats base (parcel·les o números de policia), i tot seguit les representa al mapa. Les opcions addicionals són directes, com ara les zones d’influència, sobre les entitats seleccionades. Per al temàtic es fa servir un atribut funcional basat en la distància més propera a qualsevol de les entitats seleccionades. Podem veure’n un exemple dels resultats obtinguts en les figures 6-6 (només ressaltat de parcel·les) i 6-7 (amb zones d’influència i temàtic d’illes per distància). Figura 6-6 . Parcel·les que ten Figura 6- 7. Parcel·les que tenen com a activitat econòmica d’influència de 250 metres, i temàtic de distància de la població Servei Web pel CCU amb GeoMedia . Parcel·les que ten en com a activitat econòmica el sector tèxtil 7. Parcel·les que tenen com a activitat econòmica la banca, amb àrees d’influència de 250 metres, i temàtic de distància de la població GeoMedia WebMap 6.1 - 73 en com a activitat econòmica el sector tèxtil la banca, amb àrees d’influència de 250 metres, i temàtic de distància de la població 74 - Funcions avançades 6.2. Operacions a realitzar en entorn web L’objectiu principal d’aquest projecte és estudiar la viabilitat de realitzar en un entorn web les operacions dels mòduls anteriorment comentats. Per això caldrà que es puguin executar en entorn web una sèrie d’operacions complexes, i que contenen una componen espacial en la seva majoria. Aquestes operacions es realitzen en entorn escriptori mitjançant l’API de GeoMedia 6.0 i 6.1, i s’haurà de trobar i estudiar els objectes equivalents per l’API de GeoMedia WebMap Professional 6.1. De l’anàlisi dels mòduls existents s’extreuen quines operacions de GeoMedia són necessàries per tal de replicar el funcionament dels mòduls existents en escriptori en un entorn web. Aquestes operacions són: • Buffer: Aquesta operació permet la creació d’àrees d’influència al voltant d’un conjunt d’entitats determinat. És necessària per replicar el mòdul d’àrees d’influència existent i altres. Poden ser de radi fix o de radi variable. • Agregació: Aquesta operació permet relacionar dos tipus de classes d’entitat associats per la seva situació a l’espai o per un atribut, i al mateix temps permet la creació d’atributs funcionals basant-se en operacions matemàtiques entre els atributs de les dues classes d’entitat relacionades. És necessària per al funcionament de gairebé tots els mòduls. • Combinació: Aquesta operació permet la fusió de varies d’entitats d’una mateixa classe d’entitat en una de sola, basant-se en un criteri espacial o un filtre d’atribut. És necessària per replicar els mòduls d’àrees d’influència. • Relació: Aquesta operació permet la relació de diferents taules, corresponguin o no a entitats del mapa, mitjançant filtres d’atributs. És necessària per replicar pràcticament tots els mòduls. 6.3. Objectes de GeoMedia WebMap GeoMedia WebMap realitza aquestes operacions mitjançant el que s’anomenen pipes. Aquestes pipes són objectes de transformació de dades, als que se’ls subministra un Servei Web pel CCU amb GeoMedia WebMap 6.1 - 75 conjunt de dades i un conjunt de paràmetres, i se n’obté un nou conjunt de dades modificades a partir de les entrades. Cal esmentar que GeoMedia (l’aplicació versió d’escriptori) disposa d’un conjunt d’objectes per a realitzar tot aquest tipus d’operacions, i que són molt semblants a aquests. De fet els objectes que proporciona GeoMedia WebMap són una evolució dels objectes de GeoMedia orientada a l’ús en entorns web. Depenent de l’eina utilitzada hi haurà un grau o un altre de diferència entre els objectes dels dos aplicatius, però en general la semblança és més que notable. A més a més dels objectes explicats en el capítol 5, hi ha una sèrie d’objectes que permeten realitzar operacions d’anàlisi espacial que són les que permeten la implementació dels mòduls del CCU. Hi ha un objecte de GeoMedia WebMap que es correspon amb cadascuna de les operacions necessàries (esmentades en el capítol anterior). Aquests objectes són el BufferPipe, que permet implementar buffers, l’AggregationPipe per a implementar agregacions, el MergePipe per implementar la combinació i l’EquiJoinPipe, que permet la implementació de relacions. BufferPipe Per a realitzar les operacions d’àrees d’influència, GeoMedia WebMap proporciona l’objecte BufferPipe. Aquest objecte genera una àrea d’influència (buffer) al voltant de cada entitat d’una classe d’entitats especificada. S’han d’assignar les propietats (veure resum a la taula 6-1) d’entrada adients per a obtenir un GRecordset resultant que contindrà les àrees generades per a cada entitat: • BufferType: Obligatori. Defineix el tipus de buffer que es crearà. Aquesta propietat té dos possibles valors: gmbztLinearRoundEnd = 1, que genera àrees d’influència de forma circular; i gmbztLinearSquareEnd = 2, que genera àrees de forma quadrada. Si no s’estableix un d’aquests valors s’obtindrà un error en obtenir el resultat. 76 - Funcions avançades • DistanceType: Obligatori. Defineix quina distància s’utilitzarà per a generar el buffer. Aquesta propietat té dos possibles valors: gmbzConstantDistance = 1, que genera buffers de radi fix; i gmbzVariableDistance = 2, que genera buffers de radi variable. Si no s’estableix un d’aquests valors s’obtindrà un error en obtenir el resultat. Si s’utilitza el valor 1, s’haurà d’especificar obligatòriament la propietat InputDistance, definida més endavant; si per contra s’utilitza el valor 2 (distància variable) s’haurà d’especificar obligatòriament la propietat InputDistanceFieldName, definida més endavant. • InputDistance: Defineix el valor (numèric, però cal passar-lo com a tipus string) per a la longitud fixa del buffer. Normalment és un valor numèric únic, tot i que es poden especificar valors múltiples. Per fer-ho cal separar els valors que defineixen una franja amb el caràcter dos punts (:), i separar cada franja amb el caràcter punt i coma (;). Per exemple, el valor “0:100;100:200;200:500” definiria tres buffers al voltant de cada entitat, un de 0 a 100 metres, un de 100 a 200 metres i un tercer buffer de 200 a 500 metres. • InputDistanceFieldName: Defineix el nom de l’atribut de l’entitat de especificarà la distància per al buffer, és a dir, que es farà servir el valor d’aquest atribut de l’entitat com a radi del buffer. Els valors vàlids per a l’atribut utilitzat són els mateixos que els definits per a la propietat InputDistance. • InputDistanceUnit: Opcional (per defecte es faran servir metres). Defineix les unitats de mesura que es faran servir per a interpretar el radi dels buffers. Els valors possibles són els de la taula 6-2. Els més comuns són igDistanceMeter = 59, igDistanceKilometer = 63 o igDistanceMile = 67. • InputGeometryFieldName: Obligatori. Especifica quin és l’atribut que defineix la geometria de l’entitat sobre la que s’ha d’aplicar el buffer. • InputRecordset: Obligatori. GRecordset que conté la classe d’entitat sobre la que es vol generar el buffer. • OutputDistanceFieldName: Opcional. Si s’especifica, es crearà un atribut amb aquest nom a la classe d’entitat resultant (el buffer). El valor d’aquest atribut serà la distància utilitzada en cada cas per a generar el buffer. • OutputGeometryFieldName: Obligatori. Nom que rebrà el camp de geometria que definirà les entitats a la classe d’entitat generada amb els buffers. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 77 • OutputStatusFieldName: Opcional. Si s’especifica, es crearà un atribut amb aquest nom a la classe d’entitat resultant (el buffer). El valor d’aquest atribut serà NULL si s’ha generat el buffer correctament, o un text indicant l’error que s’ha produït. • OutputRecordset: Propietat de sortida. Un cop establertes les propietats anteriors (les necessàries en cada cas) s’obtindrà el resultat mitjançant aquesta propietat. El valor que retornarà aquesta propietat serà l’objecte GRecordset corresponent a la classe d’entitat generada amb tots els buffers creats. Propietats Descripció breu BufferType Defineix la forma del buffer (circular o rectangular) DistanceType Defineix el tipus de radi del buffer (fix o variable) InputDistance Defineix el radi (distància) del buffer InputDistanceFieldName Defineix l’atribut que contindrà el valor per al radi del buffer InputDistanceUnit Defineix les unitats de distància InputGeometryFieldName Defineix el nom del camp on es troba la geometria de la classe d’entitats sobre la que es farà el buffer InputRecordset Classe d’entitats sobre la que es farà el buffer OutputDistanceFieldName Nom de l’atribut que contindrà el valor del radi del buffer (distància) OutputGeometryFieldName Nom del camp que contindrà la geometria de la classe d’entitat resultant OutputRecordset GRecordset amb la classe d’entitat resultant (els buffers creats) OutputStatusFieldName Nom de l’atribut on s’escriurà l’estat de creació del buffer Taula 6-1. Taula de propietats de l’objecte BufferPipe 84 - Funcions avançades propietats (veure resum a la taula 6-7) d’entrada adients per a obtenir un GRecordset resultant amb la nova classe d’entitat generada: • LeftRecordset: Obligatori. És el GRecordset que conté la primera classe d’entitat que es vol relacionar. • RightRecordset: Obligatori. És el GRecordset que conté la segona classe d’entitat que es vol relacionar. • JoinFieldNames: Obligatori. És una matriu de dues dimensions (si no té dues dimensions no funciona), on s’indiquen els noms dels atributs que hauran de tenir el mateix valor per a que dues entitats estiguin relacionades. • JoinType: Obligatori. Indica el tipus de relació que s’establirà. Pot rebre els valors de la taula 6-8. • OutputRecordset: Propietat de sortida. Obté la classe d’entitat (un GRecordset) resultant de realitzar la operació de relació d’entitats. Propietats Descripció breu LeftRecordset Classe d’entitat a relacionar RightRecordset Classe d’entitat a relacionar JoinFieldNames Atributs de relació JoinType Tipus de relació OutputRecordset GRecordset resultant de l’agregació Taula 6-7. Taula de propietats de l’objecte EquiJoinPipe Constant Valor Unitats gmejpInner 1 Atributs iguals i descarta les no coincidències gmejpLeftOuter 2 Totes les entitats del LeftRecordset i les coincidències del RightRecordset gmejpRightOuter 3 Totes les entitats del RightRecordset i les coincidències del LeftRecordset gmejpFullOuter 4 Totes les entitats de les dos classes que no tinguin coincidència gmejpUnion 5 Totes les entitats de les dos classes relacionades Taula 6-8. Operadors de relació de GeoMedia WebMap Servei Web pel CCU amb GeoMedia WebMap 6.1 - 85 6.3.1. Ús. Codi .NET Un cop analitzats els objectes que GeoMedia WebMap ofereix per a realitzar aquestes operacions, s’analitzarà en aquest apartat el codi C# necessari per a cada operació. BufferPipe En la figura 6-9 es pot observar el codi C# necessari per a generar un buffer al voltant de la classe d’entitat puntual CAP, que representa els diferents centres d’assistència primària de la ciutat. Figura 6-9. Codi C# per generar una classe d’entitat Buffer El procés que s’observa al codi (figura 6-9) és l’habitual dels objectes de WebMap. En primer lloc s’ha de crear la variable per a emmagatzemar l’objecte. Tot seguit, mitjançant l’objecte MapServer es crea la instància de l’objecte i es guarda a la variable per poder treballar amb ell. Un cop es té la variable amb l’objecte s’han d’establir les propietats de generació del buffer: la forma (arrodonida), el tipus (de radi fix), el radi (500 metres), les unitats de distància (metres), el GRecordset d’entrada (objRSCAP, que conté les entitats // Objecte Buffer Pipe PPipe.BufferPipe buf; // Creació objecte buffer buf = (PPipe.BufferPipe)objecteMapServer.CreateObject( "GeoMedia.BufferPipe", System.Type.Missing); // Forma del buffer -> Cantonades arrodonides buf.BufferType = gmbztLinearRoundEnd; // Tipus de buffer -> Radi fix buf.DistanceType = gmbzConstantDistance; // Radi del buffer -> 500 metres buf.InputDistance = "500"; // Unitats de distància -> metres buf.InputDistanceUnit = igDistanceMeter; // Camp Geometria d’entrada -> “Geometry1” buf.InputGeometryFieldName = "Geometry1"; // Classe d’entitat d’entrada -> GRecordset que conté els CAP buf.set_InputRecordset(ref objRSCAP); // Nom del camp STATUS de sortida -> “ResultatBuffer” (opcional) buf.OutputStatusFieldName = "ResultatBuffer"; // Nom del camp DISTANCIA de sortida -> “RadiBuffer” (opcional) buf.OutputDistanceFieldName = "RadiBuffer"; // Nom del camp Geometria a la sortida -> “Geometry” buf.OutputGeometryFieldName = "Geometry"; // Obtenim el recordset amb el buffer resultant GDO.GRecordset Result = buf.OutputRecordset; 86 - Funcions avançades CAP de Mataró), el nom del camp de geometria de objRSCAP (Geometry1), els atributs de sortida opcionals (atribut d’estat i radi del buffer) i el nom de l’atribut de geometria resultant (Geometry). Un cop s’han assignat valors a totes les propietats de l’objecte BufferPipe ja es pot generar el buffer mitjançant l’accés a la propietat OutputRecordset. Un cop es té el GRecordset resultant, aquest es pot associar a un objecte LegendEntry per a mostrar-lo com una capa al mapa, o es pot utilitzar per a realitzar alguna altra operació. AggregationPipe En la figura 6-10 es pot observar el codi C# necessari per a generar una operació d’agregació entre dos classes d’entitat, en aquest cas illes i parcel·les, que representen les illes d’edificis i els edificis de la ciutat respectivament. Figura 6-10. Codi C# per generar una agregació espacial entre classes d’entitat // Variables per guardar els objectes PPipe.AggregationPipe agregacio; PDBPipe.FunctionalAttribute objFA; // Creació de l’objecte AggregationPipe agregacio = (PPipe.AggregationPipe)objMS.CreateObject( "GeoMedia.AggregationPipe", System.Type.Missing); // S’estableix la classe d’entitat principal (Illes) agregacio.InputRecordset = objRSIlles; // S’estableix la classe d’entitat de detall (Parcel·les) agregacio.DetailRecordset = objRSParceles; // S’estableix l’atribut de geometria de les illes agregacio.InputGeometryFieldName = "AreaGeometry"; // S’estableix l’atribut de geometria de les parcel·les agregacio.DetailGeometryFieldName = " AreaGeometry"; // Operador espacial -> Parceles contingudes per una illa agregacio.SpatialOperator = gmsqContainedBy; // Operador de resolució -> en cas de dubte TOTES les parcel·les agregacio.ResolutionOperator = gmroAll; // Creació d'atributs funcionals objFA = (PDBPipe.FunctionalAttribute)objMS.CreateObject( "GeoMedia.FunctionalAttribute", System.Type.Missing); // L’atribut funcional serà el número de parcel·les per illa objFA.Expression = "COUNT(Detail.ID)"; // L’atribut funcional tindrà per nom NumParceles objFA.FieldName = "NomParceles"; // Afegim l'atribut a l'agregació agregacio.OutputFunctionalAttributes.Append(objFA); // Finalment obtenim un GRecordset de les illes (classe // d’entitat principal) amb el nou atribut funcional GDO. GRecordset Result = agregacio.OutputRecordset; Servei Web pel CCU amb GeoMedia WebMap 6.1 - 87 Es pot tornar a observar al codi (figura 6-10) l’habitual procés de treball dels objectes de WebMap. En primer lloc s’ha de crear la variable per a emmagatzemar l’objecte. Tot seguit, mitjançant l’objecte MapServer es crea la instància de l’objecte AggregationPipe i es guarda a la variable per poder treballar amb ell. Un cop es té la variable amb l’objecte s’han d’establir les propietats de l’operació d’agregació: les classes d’entitat principal (illes) i detall (parcel·les), els noms dels atributs de geometria de les dues classes (AreaGeometry en tots dos casos), l’operador espacial (parcel·les contingudes per illa), l’operador de resolució de conflicte (en cas de dubte comptar totes les illes implicades) i l’atribut funcional desitjat (comptar les parcel·les de cada entitat illa). Un cop s’han assignat valors a totes les propietats de l’objecte AggregationPipe ja es pot obtenir el resultat de l’agregació mitjançant l’accés a la propietat OutputRecordset. Un cop es té el GRecordset resultant, aquest es pot associar a un objecte LegendEntry per a mostrar-lo com una capa al mapa, o es pot utilitzar per a realitzar alguna altra operació. Cal recordar que la operació d’agregació de GeoMedia WebMap genera com a resultat un GRecordset que conté la classe d’entitat principal implicada a l’operació, més els atributs funcionals programats. Aquest exemple doncs, proporciona una classe d’entitat que conté les illes de la ciutat de Mataró amb un nou atribut, que conté el nombre de parcel·les contingudes per a cada entitat illa de la classe. MergePipe En la figura 6-11 es pot observar el codi C# necessari per a combinar les entitats d’una classe d’entitat donada, en aquest cas de la classe d’entitat ZonesVerdesAccessibles, que representa les diferents zones verdes de la ciutat que són accessibles que són accessibles per als ciutadans. 88 - Funcions avançades Figura 6-11. Codi C# per a combinar les entitats d’una classe El procés que s’observa al codi (figura 6-11) és com sempre l’habitual dels objectes de WebMap. En primer lloc s’ha de crear la variable per a emmagatzemar l’objecte. Tot seguit, mitjançant l’objecte MapServer es crea la instància de l’objecte i es guarda a la variable per poder treballar amb ell. Un cop est té la variable amb l’objecte s’han d’establir les propietats necessàries per a dur a terme la combinació d’entitats: el GRecordset d’entrada (objRSZonesVerdes, que conté les entitats ZonesVerdesAccessibles de Mataró), el nom del camp de geometria de objRSZonesVerdes (AreaGeometry) i l’atribut funcional de sortida obligatori per a realitzar la combinació (ha de contenir la funció MERGE del l’atribut geometria de la classe d’entrada), que definirà també el nom de l’atribut de geometria resultant (Geometry). Un cop s’han assignat valors a totes les propietats de l’objecte MergePipe ja es pot obtenir la nova classe d’entitat mitjançant l’accés a la propietat OutputRecordset. Un cop es té el GRecordset resultant, aquest es pot associar a un objecte LegendEntry per a mostrar-lo com una capa al mapa, o es pot utilitzar per a realitzar alguna altra operació. Cal recordar que de l’operació de combinació d’entitats en resulta la mateixa classe d’entitat d’entrada de l’operació però amb les entitats combinades entre elles en funció del criteri especificat. // Variable per al MergePipe PPipe. MergePipe merge; // Creació de l’objecte MergePipe merge = (PPipe.MergePipe)objecteMapServer.CreateObject( "GeoMedia.MergePipe", System.Type.Missing); // Establim la classe d’entitat que es vol processar merge.InputRecordset = objRSZonesVerdes; // Creem l’atribut funcional: la combinació de geometries PDBPipe.FunctionalAttribute fa = (PDBPipe.FunctionalAttribute)objecteMapServer.CreateObject( "GeoMedia.FunctionalAttribute", System.Type.Missing); // L’expressió ha de ser: MERGE(NomDelCampGeometria) fa.Expression = "MERGE(AreaGeometry)"; fa.FieldName = "Geometry"; merge.OutputFunctionalAttributes.Append(fa); // Obtenim el GRecordset resultant GDO. GRecordset Result = merge.OutputRecordset; Servei Web pel CCU amb GeoMedia WebMap 6.1 - 89 EquiJoinPipe En la figura 6-12 es pot observar el codi C# necessari per a realitzar la relació de les classes d’entitat ILLES i ResumIlles, que representen les illes d’edificis de la ciutat i la taula de resum generada amb el mòdul de taules resum. El procés que s’observa al codi (figura 6-12) és, igual que amb els objectes anteriors, l’habitual dels objectes de WebMap. En primer lloc s’ha de crear la variable per a emmagatzemar l’objecte i tot seguit, mitjançant l’objecte MapServer, es crea la instància de l’objecte i es guarda a la variable per poder treballar amb ell. Un cop es té la variable amb l’objecte s’han d’establir les propietats de l’operació de relació: les classes d’entitat d’entrada (GRecordsets d’Illes i del resum), els atributs que s’avaluaran per a realitzar la relació (l’atribut D_S_I de les illes, i l’atribut ILLES_Codificades del resum, que contenen tots dos els codis de districte, secció i illa degudament concatenats) i l’operador de relació amb que s’avaluaran els atributs indicats. Figura 6-12. Codi C# per a relacionar dues classes d’entitat Un cop s’han assignat valors a totes les propietats de l’objecte EquiJoinPipe ja es pot obtenir la nova classe mitjançant l’accés a la propietat OutputRecordset. Un cop es té el GRecordset resultant, aquest es pot associar a un objecte LegendEntry per a mostrar-lo com una capa al mapa, o es pot utilitzar per a realitzar alguna altra operació, en funció del contingut específic de la classe d’entitat resultant. // Objecte EquiJoinPipe PPipe.EquijoinPipe join; // Creació objecte EquiJoinPipe join = (PDBPipe.EquijoinPipe)objMS.CreateObject( "GeoMedia.EquijoinPipe", System.Type.Missing); join.LeftRecordset = objRSIlles; join.RightRecordset = objRSDetall; // Establim els camps de relació (matriu de dos dimensions) object[,] fields = new object[2,1]; fields[0,0] = "D_S_I"; fields[1,0] = "ILLES_Codificades"; join.JoinFieldNames = fields; // Establim l’operador de relació: // Totes les illes i aquells valors del resum que coincideixin join.JoinType = gmejpLeftOuter; // Obtenim el GRecordset resultant PDBPipe.GRecordset Result = join.OutputRecordset; 90 - Funcions avançades Cal recordar que aquesta operació pot relacionar dues entitats que no han de ser necessàriament gràfiques, com és el cas de la taula resum, que no té atribut de geometria i per tant no es pot representar gràficament en l’espai. 6.3.2. Eines d’ajuda programades Un cop analitzades les operacions més importants i els objectes que WebMap proporciona per a realitzar aquestes operacions, s’ha decidit generar unes classes d’ajuda que encapsulen el codi per a executar aquestes funcions i l’exposen en un conjunt molt reduït de comandes, per tal de facilitar la tasca de programació dels mòduls web pel CCU. S’ha programat una llibreria anomenada CCUFrameWork que conté diverses classes programades amb C# per tal de facilitar l’ús de les funcions avançades descrites en aquest capítol. Aquesta llibreria es descriurà en el capítol següent (7. Implementació del geoportal web: Prototip CCU), i inclou (entre d’altres) una classe per a cada funció descrita en aquest capítol: la classe Buffer per a generar àrees d’influència, tant de radi fix com variable, la classe Aggregation per a realitzar agregacions entre classes d’entitat, la classe Merge per a realitzar combinacions d’entitat i la classe Join per a realitzar relacions entre classes d’entitat. 6.3.3. Concatenació d’operacions Donat que totes les operacions que s’han vist fins ara tenen l’objecte GRecordset tant com a paràmetres d’entrada com a objecte resultat de sortida, és molt important veure l’avantatge que suposa aquesta forma de treballar: la concatenació de funcions. Com que el resultat d’aquestes funcions són classes d’entitat (en forma d’objectes GRecordset), aquests resultats es poden utilitzar de la mateixa manera que una classe d’entitat qualsevol: per a representar-la en un mapa, per a realitzar operacions sobre ella, o per a buscar informació d’una entitat concreta, per posar alguns exemples. És clar doncs, que un cop realitzada una operació complexa i obtingut un GRecordset amb una classe d’entitat com a resultat, aquesta es pot utilitzar com a classe d’entitat d’entrada per a Servei Web pel CCU amb GeoMedia WebMap 6.1 - 91 qualsevol operació de les descrites fins ara, concatenant així les operacions descrites de la forma que es necessiti per a obtenir els resultats desitjats. Es podrà veure en el proper capítol (7. Implementació del geoportal web: Prototip CCU) com s’utilitza la concatenació de funcions en una de les funcionalitats del geoportal: es genera una zona d’influència al voltant d’una classe d’entitat puntual triada, tot seguit es combinen aquelles zones d’influència que es toquin, i finalment es realitza una agregació sobre aquestes zones d’influència per a comptar el nombre d’habitants de les illes que toca cada zona. A més, per a poder comptar els habitants, es fa una relació prèvia entre la classe d’entitat illes d’edificis i la taula resum d’illes, i amb el resultat s’alimenta l’agregació amb les zones d’influència. Com es pot observar, les possibilitats de la concatenació de funcions pràcticament no té límits, i es poden generar processos realment complexes per a obtenir els resultats desitjats. A més, aquest flux d’execució permet l’anàlisi dels mòduls a realitzar d’una forma molt directa mitjançant la subdivisió recursiva del mòdul, és a dir, que es pot desglossar la operació complexa que es vol fer en operacions més senzilles, fins a arribar a operacions que es puguin realitzar fàcilment amb els objectes del que es disposen, ja que els resultats d’aquestes operacions es podran combinar després per a obtenir el resultat complex esperat. 92 - Funcions avançades Servei Web pel CCU amb GeoMedia WebMap 6.1 - 93 7. Implementació del geoportal web: Prototip CCU Un cop analitzades, definides i documentades les eines necessàries per a realitzar les operacions dels mòduls del CCU sota un entorn web, s’ha procedit a la implementació d’un prototip de geoportal on estiguin implementades el màxim possible de funcionalitats que presenten els mòduls d’escriptori del CCU. 7.1. Flux de treball seguit Per tal de realitzar el prototip de la forma més organitzada i eficient possible, s’ha dividit tota la feina en dues grans parts: generació del mapa per una banda, i implementació de les funcions de portal web (navegabilitat, usabilitat) per una altra. Es vol que aquest prototip serveixi com a base de coneixement per a futurs desenvolupaments, és a dir, que serveixi com a experiència prèvia a l’hora de dissenyar i implementar un geoportal pel CCU en un futur. La part de navegabilitat i usabilitat del geoportal recau gairebé tota en dos pilars: el disseny del geoportal, i la interactivitat de l’usuari. En el cas del disseny s’ha de dir que no influeix gaire la decisió del software a utilitzar (WebMap, MapGuide, MapView, etc.), sinó que és més important la funcionalitat i l’estètica desitjades. Pel que fa la usabilitat sí que és més important la tecnologia utilitzada, doncs aquesta part s’ha de programar amb l’ajuda (o l’absència) d’una API de client, que serà diferent en funció del software triat. El flux d’implementació seguit durant el desenvolupament del prototip ha estat en primer lloc fer un anàlisi dels resultats desitjats, és a dir, s’han analitzat els mòduls d’escriptori i s’han identificat quines operacions són necessàries per a implementar-los en un entorn web. Un cop realitzat aquest anàlisi, s’ha procedit a implementar una solució aïllada per a cada tipus d’operació identificada, i així demostrar en la pràctica que es pot replicar cada funcionalitat per separat sota un entorn web. Un cop implementades les solucions per separat, s’ha dissenyat un prototip de geoportal i s’ha definit quines funcionalitats ha de tenir com a aplicació única. Per a desenvolupar el 100 - Implementació del geoportal web: Prototip CCU A la classe que hereta de RoleProvider no s’ha d’implementar obligatòriament cap mètode, doncs l’autentificació de formularis es realitza a través de l’usuari i no del grup al que aquest pertany. En qualsevol cas, s’han implementat les funcions GetRolesForUser, que retorna els diferents grups als que pertany l’usuari (en el cas del geoportal sempre és un únic nivell d’usuari), i IsUserInRole, que permet saber si un usuari pertany a un grup especificat o no, funció també que s’ha reescrit amb els nivells d’usuari utilitzats al portal, per facilitar-ne l’ús. 7.5. Àrea de treball S’ha dividit el geoportal en quatre àrees de treball, numerades de la mateixa forma que a la figura 7-3: • Títol: El títol de la pàgina ocupa una petita franja a tota la part superior de la pàgina. Només té una funcionalitat, que és la de anular l’autentificació actual (sortir del geoportal). El seu paper és majoritàriament estètic. • Llegenda: Quan s’està visualitzant un mapa en el geoportal, ha d’estar present una llegenda que permeti interpretar el mapa i/o seleccionar quines classes d’entitat es veuran al mapa. Aquesta llegenda ocuparà una franja vertical a la part esquerra de la pàgina, sota del títol. • Mapa: És la part més important del geoportal, i en conseqüència la més gran. Ocupa tota la franja central de la pàgina, sota del títol, i entre la llegenda i els formularis. És on es visualitzarà el mapa generat per WebMap al servidor. • Formularis: És la part on es realitzaran les tasques d’entrada i sortida de dades, i on es disposaran els controls necessaris perquè l’usuari pugui realitzar tasques alfanumèriques (on no intervé el mapa). Aquí es realitzaran des de l’edició d’atributs d’entitat fins a la generació de les taules resum. Ocuparà la franja dreta sota el títol, al costat del mapa. Figura 7 Figura 7- 4. Geoportal. Barra d’eines i barra d’ajuda a les eines Donat que l’estructura de frames de treball en funció de la tasca que s’estigui realitzant en cada moment, és a dir, que quan s’estigui realitzant una operació de formulari purament alfanumèrica es podrà amagar el mapa de forma di nàmica per tal de disposar del major espai possible per a que l’usuari pugui interactuar amb el formulari de forma còmoda. Un cop es finalitzi la tasca, es tornarà a veure el mapa, també de forma dinàmica. 7.5.1. Àrea del mapa i llegenda L’àrea del mapa conté t res divisions horitzontals: • La barra d’eines: És una petita franja situada a sobre del mapa que conté tots els botons que permeten a l’usuari realitzar totes les tasques necessàries sobre el mapa, des de la navegació (zooms, desplaçaments) fins a la Servei Web pel CCU amb GeoMedia Figura 7 -3. Geoportal. Àrees de treball 4. Geoportal. Barra d’eines i barra d’ajuda a les eines frames de la pàgina ho permet, s’ajustarà el tamany de les àrees de treball en funció de la tasca que s’estigui realitzant en cada moment, és a dir, que quan s’estigui realitzant una operació de formulari purament alfanumèrica es podrà amagar el nàmica per tal de disposar del major espai possible per a que l’usuari pugui interactuar amb el formulari de forma còmoda. Un cop es finalitzi la tasca, es tornarà a veure el mapa, també de forma dinàmica. Àrea del mapa i llegenda res divisions horitzontals: La barra d’eines: És una petita franja situada a sobre del mapa que conté tots els botons que permeten a l’usuari realitzar totes les tasques necessàries sobre el mapa, des de la navegació (zooms, desplaçaments) fins a la captura de punts o àrees. GeoMedia WebMap 6.1 - 101 4. Geoportal. Barra d’eines i barra d’ajuda a les eines de la pàgina ho permet, s’ajustarà el tamany de les àrees de treball en funció de la tasca que s’estigui realitzant en cada moment, és a dir, que quan s’estigui realitzant una operació de formulari purament alfanumèrica es podrà amagar el nàmica per tal de disposar del major espai possible per a que l’usuari pugui interactuar amb el formulari de forma còmoda. Un cop es finalitzi la tasca, es tornarà La barra d’eines: És una petita franja situada a sobre del mapa que conté tots els botons que permeten a l’usuari realitzar totes les tasques necessàries sobre el mapa, captura de punts o àrees. 102 - Implementació del geoportal web: Prototip CCU • Mapa: Ocupa la major part de l’àrea, en la zona central. És on s’inclou el codi HTML que conté l’objecte del mapa. S’ha de recarregar cada vegada que es genera un nou mapa. • Barra d’estat: És una petita franja situada sota del mapa, pintada d’un color groc molt clar, i és on es veurà una petita descripció sobre com s’ha utilitzar l’eina que estigui sent assenyalada en aquest moment pel punter. Canviarà en funció del botó de la barra d’eines que assenyali el punter, i tota la seva programació està realitzada en client. 7.5.2. Eines del mapa El grup més important d’eines per a la usabilitat del mapa són les eines de navegació, que permeten ampliar el mapa, allunyar-lo i desplaçar-s’hi. Són totes elles eines de visualització que no realitzen cap tipus de modificació en les dades, ni cap operació complexa. S’han programat les següents eines de navegació, per l’ordre en que apareixen les icones en la figura 7-4: • Desplaçar-se: Realitza un desplaçament al mapa, centrant la vista en un nou punt. • Ampliar: Realitza una ampliació d’un 25% sobre el punt assenyalat al mapa. • Allunyar: Realitza una ampliació d’un -25% sobre el punt assenyalat al mapa. • Ampliar finestra: Permet capturar una finestra sobre el mapa, i realitza una ampliació sobre l’àrea triada. • Vista inicial: Permet retornar la vista del mapa a la vista inicial (tot el mapa). També com a demostració de les operacions que es poden realitzar en client, s’han afegit una sèrie d’eines que formen el grup de captura de geometries. Aquestes eines permeten capturar diferents geometries i emmagatzemar-ne les coordenades per a crear noves entitats, executar filtres espacials o qualsevol altra operació que es vulgui fer. S’han afegit les següents eines: • Capturar punt: Captura un punt i n’ensenya les coordenades. • Capturar cercle: Captura un cercle i n’ensenya les coordenades. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 103 • Capturar rectangle: Captura un rectangle i n’ensenya les coordenades. • Capturar polígon: Captura un polígon de qualsevol número de costats i n’ensenya les coordenades. S’han afegit una sèrie d’eines addicionals com a demostració de la capacitat d’afegir noves entitats al mapa. Aquestes eines, que formen el grup d’eines de modificació d’entitats, permeten afegir entitats puntuals de diferents tipus. Quan s’afegeix una d’aquestes entitats al mapa, s’afegeix sense cap dada alfanumèrica associada, és a dir, només s’afegeix la geometria. Un cop afegida, s’haurà de seleccionar l’entitat al mapa per a afegir-li les dades alfanumèriques que li corresponguin. Les eines afegides són les següents: • Afegir CAP: Afegeix una nova entitat de la classe CentreAssistenciaPrimaria • Afegir CEIP: Afegeix una nova entitat de la classe CEIP • Afegir IES: Afegeix una nova entitat de la classe IES A més, hi ha dos icones per a activar formularis: • Taula resum: Obre el generador de taules resum a l’àrea de formularis. • Operacions complexes: Obre el formulari d’operacions complexes a l’àrea de formularis. 7.5.3. Capes i estils S’han seleccionat les classes d’entitat més rellevants de la base de dades del CCU i s’han afegit al mapa, tot dotant-les d’uns estils adients i del corresponent control de visualització a la llegenda del geoportal. Les capes afegides són: • CEIP: Escoles de primària de Mataró, representades per un punt blau • CEIP Concertats: Escoles de primària concertades de Mataró, representades per un punt blau • Escoles Bressol: Escoles bressol de Mataró, representades per un punt blau • IES: Instituts de secundària de Mataró, representades per un punt blau 104 - Implementació del geoportal web: Prototip CCU • IES Concertats: Instituts de secundària concertats de Mataró, representades per un punt blau • Llars d’Infants: Llars d’infants de Mataró, representades per un punt blau • Casals d’Avis: Casals d’avis de Mataró, representades per un punt negre • CAP: Centres d’assistència primària de Mataró, representades per un punt blau • Antenes de Telefonia: Antenes de telefonia mòbil de Mataró, representades per un punt negre • Aparcaments Reservats: Aparcaments especials reservats a Mataró, representades per un punt negre • Parades d’Autobús: Parades d’autobús de Mataró, representades per una icona d’autobús blava • Parades de Taxi: Parades de taxis de Mataró, punt de , representades per un punt vermell 7.6. Bases de dades El CCU disposa de tres bases de dades on es guarda i s’organitza de forma adequada tota la informació necessària per a l’anàlisi poblacional de la ciutat de Mataró. A més, el geoportal aporta dues bases de dades addicionals per a emmagatzemar les seves pròpies dades. Donat el volum reduït de dades que es publiquen actualment i l’abast de publicació del projecte, que és un grup reduït d’usuaris dins una intranet, el format estàndard de GeoMedia WebMap, que és Microsoft Access, és el més adient: perquè és el format estàndard de WebMap, per la seva flexibilitat, i per la seva facilitat de manipulació. El rendiment d’un servidor de base de dades dedicat (com podria ser Oracle o SQL Server) seria millor, però l’augment de rendiment no és prou gran (entre un 10% i un 20%, segons el cas) com per assumir aquesta despesa, que per una altra part seria força important. Així doncs, decidida la utilització de les bases de dades de Microsoft Access, es decideix mantenir l’actual estructura de separació de bases de dades. Ja que tant les bases de dades del padró com la del cadastre són subministrades al CCU per tercers, és més fàcil Servei Web pel CCU amb GeoMedia WebMap 6.1 - 105 mantenir-les com a arxius separats, i per tant, simplificar la tasca d’actualització al simple procés de comprovar la integritat de l’estructura i substituir l’arxiu. 7.6.1. Organització de les bases de dades Les bases de dades que intervenen en el geoportal són: • MapaAbr08.mdb: Base de dades geogràfica de la ciutat de Mataró. Conté totes les classes d’entitats i la seva informació geogràfica. Aquesta base de dades és necessària per a generar el mapa. • Padró1abr09.mdb: Base de dades alfanumèrica del padró de la ciutat de Mataró. S’utilitza per extreure’n la informació necessària de la població de la ciutat. És la base de dades a partir de la qual es generen les taules resum. Es manté en un arxiu de base de dades apart per facilitar-ne l’actualització, ja que aquesta base de dades és subministrada al CCU per tercers. • Cadastre09.mdb: Base de dades del cadastre de la ciutat de Mataró. S’utilitza per als mòduls de finques per any de construcció i l’anàlisi per activitat econòmica. També es manté en un arxiu de base de dades apart per facilitar-ne l’actualització, doncs també li és subministrat al CCU per tercers. • Usuaris.mdb: Base de dades pròpia del geoportal on s’emmagatzema la informació dels usuaris i grups que tenen accés al geoportal. S’ha ubicat en un arxiu de base de dades apart per a mantenir la mateixa estructuració que les altres. • CCU_Library.mdb: Base de dades que conté els estils que fan servir les entitats publicades al mapa. També és una base de dades pròpia del geoportal i es manté en un arxiu de base de dades apart per tal de facilitar-ne la importació a GeoMedia i així permetre la seva actualització de forma senzilla. 7.6.2. Bases de dades en entorns multi usuari Els entorns multi usuari provoquen una problemàtica en sistemes que ofereixen la funcionalitat de modificar les dades per més d’un usuari. El problema és que més d’un 106 - Implementació del geoportal web: Prototip CCU usuari pot accedir a l’hora a modificar la mateixa dada, i per tant, es produeix un conflicte a l’hora de guardar la nova informació a la base de dades. Quan no es realitza cap actuació al respecte, la situació és la següent: un usuari A modifica les dades, mentre un usuari B accedeix a modificar exactament la mateixa informació. Mentre la informació no es guardi, no succeeix res, però en el moment en que l’usuari A acaba de modificar les dades, aquestes modificacions queden enregistrades a la base de dades. Quan l’usuari B guarda les dades que ha modificat es pot trobar amb dos situacions diferents: 1. L’usuari A ha modificat part de la informació, però els atributs que identifiquen les dades (índex) no han canviat, i llavors l’usuari B sobreescriu la informació perdentse així els canvis que hagi realitzat l’usuari A 2. Per contra, si l’usuari A ha modificat algun atribut identificador de les dades (índex), aquestes poden no existir quan l’usuari B intenti enregistrar els canvis, motiu pel qual es produiria un error. Una solució a aquesta problemàtica és desenvolupar i implementar un sistema de bloqueigs que no permeti a més d’un usuari modificar les mateixes dades a la vegada. Donat que aquest geoportal és un prototip, no s’ha cregut necessària la implementació d’un sistema d’aquest tipus. En qualsevol cas, totes les funcions d’enregistrament de dades comprova prèviament que les dades encara existeixin a la base de dades abans d’actualitzar-les, i si no és així, dóna un avís a l’usuari informant-lo d’aquest fet. 7.7. Àrees d’interacció amb la informació Hi ha diversos formularis que permeten l’edició de dades alfanumèriques, que apareixen en l’àrea de formularis, a la dreta del mapa. Hi ha diversos tipus de formularis, que s’expliquen a continuació: • Formularis d’edició d’entitats: Són formularis alfanumèrics petits que contenen les dades d’una entitat assenyal entitat del mapa. Cada usuari podrà veure, modificar i/o esborrar l’entitat en funció del nivell de permisos que tingui associat. • Formulari de generació de resum: És un formulari que permet escollir u paràmetres per a generar les taules resum del CCU. Tots els usuaris poden accedir a aquest formulari independentment del seu perfil mitjançant el botó “Taula Resum” de la barra d’eines principal. Figura 7 Figura 7 Servei Web pel CCU amb GeoMedia Formularis d’edició d’entitats: Són formularis alfanumèrics petits que contenen les dades d’una entitat assenyal ada al mapa. S’hi accedeix mitjançant la selecció d’una entitat del mapa. Cada usuari podrà veure, modificar i/o esborrar l’entitat en funció del nivell de permisos que tingui associat. Formulari de generació de resum: És un formulari que permet escollir u paràmetres per a generar les taules resum del CCU. Tots els usuaris poden accedir a aquest formulari independentment del seu perfil mitjançant el botó “Taula Resum” de la barra d’eines principal. Figura 7 -5. Formulari d’edició d’entitats “CAP” Figura 7 - 6. Formulari de generació de taules resum GeoMedia WebMap 6.1 - 107 Formularis d’edició d’entitats: Són formularis alfanumèrics petits que contenen les ada al mapa. S’hi accedeix mitjançant la selecció d’una entitat del mapa. Cada usuari podrà veure, modificar i/o esborrar l’entitat en funció Formulari de generació de resum: És un formulari que permet escollir u na sèrie de paràmetres per a generar les taules resum del CCU. Tots els usuaris poden accedir a aquest formulari independentment del seu perfil mitjançant el botó “Taula Resum” 6. Formulari de generació de taules resum 108 - Implementació del geoportal web: Prototip CCU 7.8. Actualitzar informació gràfica Utilitzar un programa com GeoMedia no és trivial. Són necessaris un mínim de coneixements i costum d’utilització de les eines, així com el coneixement de quines són les dades, on es troben, com s’inclouen a l’aplicació, i un llarg etc. Cal recordar que un dels requisits del geoportal és que els usuaris no necessitin ser ni tècnics ni experts, i és per això que s’ha implementat la opció d’afegir noves entitats a les classes d’entitat existents al mapa. Com a demostració, al prototip s’ha habilitat la opció d’afegir entitats de les classes CAP, IES i CEIP. Aquesta funcionalitat però només està disponible per aquells usuaris que pertanyin al nivell Administrador. Tanmateix es podran eliminar les entitats des del formulari d’edició de l’entitat corresponent. El fet de poder afegir i eliminar entitats de les classes que formen el mapa és un avantatge respecte a haver-ho de fer des de l’aplicació d’escriptori, ja que qualsevol usuari amb els permisos adients podrà realitzar aquesta tasca, sense haver de conèixer les bases de dades, les carpetes del servidor, etc. A més, els coneixements necessaris per a realitzar aquestes tasques des del geoportal són mínims comparats amb els que fan falta per a ser usuari de l’aplicació d’escriptori. 7.8.1. Crear, esborrar i desplaçar entitats amb WebMap El procediment de crear entitats és molt senzill: s’activa l’eina corresponent de la barra d’eines del mapa per a afegir l’entitat; tot seguit al client es captura en coordenades reals la forma i posició que tindrà l’entitat directament al mapa; un cop capturada la figura geomètrica que es vol crear (punt, cercle o polígon), s’envien aquestes dades a una pagina del servidor perquè les processi. La pàgina del servidor durà a terme les operacions necessàries mitjançant els objectes de WebMap per a crear la nova entitat i afegir-la a la classe d’entitat que correspongui. Els objectes de WebMap utilitzats en servidor per a crear entitats són el CustomDataPipe, que serveix per a crear GRecordsets personalitzats, l’objecte geomètric adient (PointGeometry, PolylineGeometry, RectangleGeometry, ArcGeometry, etc.) en funció del tipus d’entitat Servei Web pel CCU amb GeoMedia WebMap 6.1 - 109 que es vulgui crear, i l’objecte GeometryStorageService per a transformar la geometria en un conjunt de bytes (binary blob) que es pugui gravar directament a la base de dades. L’esborrat d’entitats és senzill: s’implementa al mateix formulari d’edició alfanumèrica d’atributs de les entitats. No hi intervé cap operació gràfica ni de geometria, només l’esborrat simple d’un registre de base de dades. El procés de desplaçament d’entitats és semblant al de creació: primer s’ha de detectar en client quin és l’objecte a desplaçar, i tot seguit capturar un vector de desplaçament, és a dir, desplaçament en els eixos X, Y i Z (si es treballa en dos dimensions, que és el més habitual, Z sempre serà zero). Un cop es tenen ambdues coses s’envien a la pàgina del servidor corresponent per a que realitzi el desplaçament. El desplaçament d’entitats en servidor és una operació gràfica complexa que realitza un objecte de WebMap anomenat MovePipe. Aquest objecte necessita un GRecordset amb les entitats a desplaçar i el vector de desplaçament que es vol aplicar. Invocant la propietat OutputRecordset s’obté un GRecordset amb les entitats que hi havia al GRecordset d’entrada desplaçades segons el vector especificat. 7.8.2. Classes d’ajuda programades S’han desenvolupat unes classes en forma de llibreria .NET, que s’ha batejat amb el nom de CCUFrameWork. S’ha estructurat la llibreria amb un espai de noms comú, que engloba totes les classes .NET per a ús en entorns web, i que s’ha anomenat CCUFrameWork.Web. Aquest espai de noms s’ha subdividit de la següent forma (veure figura 7-7): • CCUFrameWork.Web.Mapa: Implementa classes d’ajuda per a l’ús dels objectes més comuns a l’hora de programar un geoportal. • CCUFrameWork.Web.Operacions: Implementa classes d’ajuda per a l’execució simplificada d’operacions complexes amb l’ajuda dels objectes de WebMap. • CCUFrameWork.Web.Usuaris: Implementa classes d’ajuda i funcionalitat necessària per a la utilització del sistema d’autentificació del geoportal. 116 - Implementació del geoportal web: Prototip CCU Cas 2: Afegir una nova entitat Aquest cas es dona després de la captura de les coordenades on es vol afegir una nova entitat puntual. L’execució s’ha de retornar al servidor, perquè executi les funcions de creació de la nova entitat. És en aquest punt on s’executa el codi de la figura 7-9. Aquest codi carrega les coordenades rebudes a través de l’adreça URL de la pàgina carregada, i crida a la funció perquè generi la nova entitat. A la funció se li indiquen les dades de la classe d’entitat on s’afegirà la nova entitat. Després de la crida, les dades de la nova entitat queden emmagatzemades a la base de dades, tot i que no s’ha omplert cap més atribut que l’identificador i la geometria. Figura 7-9. Codi C# per a crear una nova entitat de classe “CAP” // Obtenim les coordenades que arriben a la pàgina // directament dins la URL, mitjançant la variable // CoordenadesCAP string CoordenadesCAP = Request.QueryString["CoordenadesCAP"]; // Cridem a la funció AfegirEntitatPuntual, de la // classe AfegirEntitat. Li passem com a paràmetres // l’objecte MapServer, la connexió activa, la variable // amb les coordenades que hem capturat, el nom de la // taula de la base de dades que conté la classe d’entitat // on volem afegir-la, el nom de l’atribut que conté la // geometria de les entitats, i el nom de l’atribut que // conté l’identificador únic de cada entitat. string nouID = Operacions.AfegirEntitat.AfegirEntitatPuntual( objMS, objConn, CoordenadesCAP, "CentreAssistenciaPrimaria", "Geometry1", "ID"); // La funció ens retorna el valor de l’identificador per // a la nova entitat afegida. Els canvis queden enregistrats // a la base de dades de forma automàtica. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 117 Cas 3: Operacions complexes Aquest cas es dona durant l’execució d’una pàgina que genera un mapa, però hi vol realitzar una sèrie d’operacions complexes per a mostrar dades calculades en una capa addicional. Tal i com s’observa a la figura 7-10, s’executaran operacions de lectura de classes d’entitat, i operacions complexes del tipus buffer, agregació, combinació i relació. Totes les operacions s’encadenen entre elles, veient en aquest cas un exemple perfecte de concatenació d’operacions complexes. En primer lloc l’exemple realitza la càrrega de dades de la classe d’entitat “CAP”. Sobre aquestes entitats, executa un buffer per generar una zona d’influència de radi variable, on el valor del radi és el contingut de l’atribut “RadiInicial” de cada entitat. Tot seguit executa una combinació de les entitats resultants, és a dir, transforma aquelles àrees d’influència que es toquen (o es sobreposen) en una de sola. Després es fa la càrrega de la classe d’entitat “Illes”, i en realitza una relació amb la taula resum d’illes. Això carrega les dades del resum sobre les entitats de la classe “Illes”. Un cop feta la relació, es fa una agregació de la classe d’entitat d’Illes sobre les àrees d’influència, calculant la població que afecta cada àrea d’influència creada. Un cop acabat, es disposa d’un GRecordset anomenat “rsBuffer” que conté una classe d’entitat amb les àrees d’influència, amb un atribut funcional que n’indica el nombre d’habitants als que afecta. Aquest GRecordset es pot utilitzar per exemple per a mostrar-lo en un mapa, o bé se’n podrien concatenar més operacions a continuació. 118 - Implementació del geoportal web: Prototip CCU Figura 7-10. Codi C# per a la creació d’un buffer, realitzar-ne una combinació de les seves entitats, i realitzar una agregació del resultat amb la taula del Padró // La variable radi contindrà el nom de l’atribut // que s’utilitzarà com a radi variable per al buffer string radi = "RadiInicial"; // La variable taula contindrà el nom de la classe d’entitat // sobre la que es generarà el buffer (CAP) string taula = "CentreAssistenciaPrimaria"; // Nom de l’atribut que conté la geometria de les entitats string geomEntrada = "Geometry1"; // Variables per a guardar els diferents recordsets que usarem GRecordset rsEntrada = null; GRecordset rsBuffer = null; GRecordset rsIlles = null; GRecordset rsResum = null; // Obtenim un GRecordset amb la classe d’entitat CAP Mapa.Taula.getTaula( objMS, objConn, taula, geomEntrada, out rsEntrada); // Generem un buffer variable sobre les entitats CAP rsBuffer = Operacions.Buffer.getVariableBuffer( objMS, rsEntrada, geomEntrada, "Geometria", Operacions.Buffer.BufferType.LinearRoundEnd, Operacions.Buffer.DistanceUnits.igDistanceMeter, radi); // Combinem aquells buffers que es toquin rsBuffer = Operacions.Merge.getMerge(objMS, rsBuffer, "Geometria", null, "Geometria", null); // Carreguem la informació de la classe d’entitat ILLES Mapa.Taula.getTaula( objMS, objConn, "ILLES", "AreaGeometry", out rsIlles); // Llegim la taula resum de les illes filtrada per usuari // User.Identity.Name ens proporciona el nom d’usuari actual Mapa.Taula.getTaula( objMS, objConn, "ResumIlles", "", "Usuari = '" + User.Identity.Name + "'", out rsResum); // Fem la relació entre les illes i el resum rsIlles = Operacions.EquiJoin.getJoin(objMS, rsIlles, rsResum, "D_S_I", "ILLES_Codificades", 2); // Fem una agregació entre el buffer i les illes+resum, // i en treiem el nombre d’habitants afectats pel buffer rsBuffer = Operacions.Aggregation.getAggregation(objMS, rsBuffer, rsIlles, "Geometria", "AreaGeometry", "SUM(Detail.Habitants)", "Habitants"); Servei Web pel CCU amb GeoMedia WebMap 6.1 - 119 Cas 4: Afegir un atribut funcional a una classe d’entitat Aquest cas es pot donar quan es realitza la càrrega d’una classe d’entitats, ja sigui per mostrar-la directament o per utilitzar-la en operacions complexes. És possible que es vulgui accedir a una dada que necessiti ser calculada a partir d’altres atributs, i per tant, es necessita de la creació d’un atribut funcional a la classe. El següent exemple (figura 7-11), mostra un exemple senzill en el que es vol mostrar com a tooltip de les entitats de la classe “Zones Verdes Accessibles” l’àrea que ocupen. Es carrega la classe d’entitat com al cas 1 (figura 7-8), però s’executa la funció “afegirAtributFuncional”, que crida internament a la classe “AtributsFuncionals” per a realitzar la funció de forma automatitzada. Figura 7-11. Codi C# per a afegir un atribut funcional a una classe d’entitat // Creem les classes d'ajuda per afegir entitats al mapa Mapa.HotSpot.ToolTip tooltip; Mapa.HotSpot.Action action; Mapa.Entitat ent; // Creem els hotspots per a les Zones Verdes action = new Mapa.HotSpot.Action("HotSpotHit", "ID", "ZonesVerdesAccessibles"); tooltip = new Mapa.HotSpot.ToolTip("Lloc: {{lloc}}", "Àrea: {{AF_AREA}}"); // Creem la classe d’entitat Zones Verdes ent = new Mapa.Entitat(objMS, objConn, "ZonesVerdesAccessibles", "Geometry1", "ZonaVerda", "ZonesVerdes", action, tooltip); // Afegim un nou atribut que sigui l’àrea de la geometria // S’utilitza la formula AREA(x) que calcula la geometria, i // després ROUND(x;n) que arrodoneix un numero. ent.afegirAtributFuncional("AF_AREA", "ROUND(AREA(Input.Geometry1);2)"); // Afegim el LegendEntry a la col·lecció per visualitzar-lo objLEs.Append(ent.LegendEntry, null, null); // Alliberem els recursos de la classe d’entitat ent.Dispose(); 120 - Implementació del geoportal web: Prototip CCU Cas 5: Ocultar una barra d’eines per a usuaris del perfil “Visitant” Aquest cas es pot donar quan es realitza la càrrega d’una classe d’entitats, ja sigui per mostrar-la directament o per utilitzar-la en operacions complexes. És possible que es vulgui accedir a una dada que necessiti ser calculada a partir d’altres atributs, i per tant, es necessita de la creació d’un atribut funcional a la classe. El següent exemple (figura 7-12), mostra un exemple senzill en el que es vol mostrar com a tooltip de les entitats de la classe “Zones Verdes Accessibles” l’àrea que ocupen. Es carrega la classe d’entitat com al cas 1 (figura 7-8), però s’executa la funció “afegirAtributFuncional”, que crida internament a la classe “AtributsFuncionals” per a realitzar la funció de forma automatitzada. Figura 7-12. Codi C# per a ocultar un element per a un determinat perfil d’usuaris 7.9. Càrrega i manteniment del servidor Per a realitzar la càrrega del geoportal al servidor és necessari un equip amb la plataforma de desenvolupament (Visual Studio 2008) per tal de realitzar la operació de forma manual. Es pot realitzar una càrrega de forma autònoma, mitjançant la generació del que s’anomena un ensamblat de distribució de .NET. S’expliquen a continuació els dos mètodes: 1. Per realitzar la càrrega utilitzant Visual Studio 2008, només cal carregar el projecte dins Visual Studio i executar la comanda de publicació, que es troba al menú “Generar”, opció “Publicar sitio web”. Aquesta opció obrirà un formulari on es pot indicar l’emplaçament on es vol publicar el projecte (figura X-X). Només cal // Comprovem el nivell de permisos de l'usuari // i configurem la barra d'eines switch (WebUser.getRole(Page.User)) { case UserRoles.Operador: case UserRoles.Visitant: einesAfegirEntitat.Visible = false; break; } // Per als nivells “Operador” i “Visitant” fem // invisible la barra d’eines d’afegir entitats prémer el botó “Aceptar” per dur a terme la publicació de la pàgina web. Cal especificar l’adreça on estaran publicats els arxius (s’ha de configurar al servidor IIS), i s’hi pot accedir per adreça de xarxa, FTP o via web. col·loca al servidor només els arxius necessaris per a l’execució de l’aplicació web (no hi copia els arxius de codi font). 2. Per a realitzar la càrrega mitjançant un paquet d’instal·lació, s’ha d’utilitzar una eina addicional anomenada “ permet la precompilació d’aplicacions web de Visual Studio per a la seva distribució mitjançant un paquet d’instal·lació. Aquesta complicació és degut al funcionament de Visual Studio, que a l’hora de gener realitza distinció entre la part de codi i la part compilada de les aplicacions web, i a l’hora de generar els paquets d’instal·lació hi inclou també tots els arxius corresponents al codi font de l’aplicació. Aquesta eina gen (precompilat) que realitza aquesta distinció, i llavors és aquest el que s’inclou en el paquet d’instal·lació. Figura 7- 13. Formulari de publicació d’aplicacions web de Visual Studio 2008 Donat que la instal·lació del geoportal és una tasca que es realitza en un únic servidor, i que no està previst que es realitzi sovint, la opció de generar un instal·lador no és atractiva, ja que els avantatges que aporta precisament és la flexibilitat a l Servei Web pel CCU amb GeoMedia prémer el botó “Aceptar” per dur a terme la publicació de la pàgina web. Cal especificar l’adreça on estaran publicats els arxius (s’ha de configurar al servidor IIS), i s’hi pot accedir per adreça de xarxa, FTP o via web. Aquesta publicació col·loca al servidor només els arxius necessaris per a l’execució de l’aplicació web (no hi copia els arxius de codi font). Per a realitzar la càrrega mitjançant un paquet d’instal·lació, s’ha d’utilitzar una anomenada “ Visual Studio 2008 Web Deployment Projects compilació d’aplicacions web de Visual Studio per a la seva distribució mitjançant un paquet d’instal·lació. Aquesta complicació és degut al funcionament de Visual Studio, que a l’hora de gener ar un paquet d’instal·lació no realitza distinció entre la part de codi i la part compilada de les aplicacions web, i a l’hora de generar els paquets d’instal·lació hi inclou també tots els arxius corresponents al codi font de l’aplicació. Aquesta eina gen era un paquet compilat) que realitza aquesta distinció, i llavors és aquest el que s’inclou en el paquet d’instal·lació. 13. Formulari de publicació d’aplicacions web de Visual Studio 2008 Donat que la instal·lació del geoportal és una tasca que es realitza en un únic servidor, i que no està previst que es realitzi sovint, la opció de generar un instal·lador no és atractiva, ja que els avantatges que aporta precisament és la flexibilitat a l ’hora de distribuir i GeoMedia WebMap 6.1 - 121 prémer el botó “Aceptar” per dur a terme la publicació de la pàgina web. Cal especificar l’adreça on estaran publicats els arxius (s’ha de configurar al servidor Aquesta publicació col·loca al servidor només els arxius necessaris per a l’execució de l’aplicació web Per a realitzar la càrrega mitjançant un paquet d’instal·lació, s’ha d’utilitzar una Visual Studio 2008 Web Deployment Projects ”, que compilació d’aplicacions web de Visual Studio per a la seva distribució mitjançant un paquet d’instal·lació. Aquesta complicació és degut al ar un paquet d’instal·lació no realitza distinció entre la part de codi i la part compilada de les aplicacions web, i a l’hora de generar els paquets d’instal·lació hi inclou també tots els arxius era un paquet intermedi compilat) que realitza aquesta distinció, i llavors és aquest el que s’inclou en el 13. Formulari de publicació d’aplicacions web de Visual Studio 2008 Donat que la instal·lació del geoportal és una tasca que es realitza en un únic servidor, i que no està previst que es realitzi sovint, la opció de generar un instal·lador no és atractiva, ’hora de distribuir i 122 - Implementació del geoportal web: Prototip CCU instal·lar aplicacions. La opció més senzilla és connectar un ordinador (possiblement portàtil) a la xarxa on es trobi el servidor destí, i realitzar la publicació de la pàgina de forma directa des d’aquest ordinador. Pel que fa al manteniment de WebMap, no cal realitzar cap tasca en concret. Els únics arxius que genera WebMap són els arxius de log, si estan configurats, però s’esborren de forma automàtica depenent d’aquesta configuració. Pel que fa a les bases de dades, com que són d’Access, cal compactar-les de tant en tant. En funció del número d’usuaris que tinguin accés al servidor, i del tipus de feina que facin, generaran més o menys informació a les bases de dades. Access no esborra registres, sinó que els marca per a esborrar-los durant la compactació. Això fa que si no es compacten sovint les bases de dades aquestes augmentaran de tamany ràpidament. Una compactació setmanal no és una tasca difícil, i garantirà bons rendiment i fiabilitat en la majoria de casos. Si s’observa que els tamanys de les bases de dades augmenten de forma alarmant, s’hauria de procedir a reduir aquest temps entre compactacions. 7.10. Migració dels mòduls d’escriptori Per tal de disposar dels mòduls d’escriptori dins el geoportal, s’han d’analitzar prèviament els requisits i planificar-ne la implementació. També s’hauran de tenir en compte diferents conceptes més generals abans de començar: • Disseny: És important tenir clar a nivell de disseny on s’inclourà cadascun dels mòduls, com s’hi arribarà i on presentaran els seus resultats. • Mapes: També cal analitzar si cal desenvolupar mapes diferents o representar tota la funcionalitat al mateix mapa, com és el cas del prototip. • Desenvolupament: Caldrà analitzar si amb les eines d’ajuda actuals és suficient per a escriure el codi dels mòduls, o si per contra, hi ha tasques que no es poden fer amb aquestes eines. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 123 7.10.1. Procediment general Els mòduls s’hauran de migrar un per un, però és vital realitzar-ne un anàlisi conjunt per tal d’aportar solucions globals i que no afectin al disseny ni la estructura del geoportal. Un cop realitzat aquest anàlisi, la primera conclusió és la divisió de cada mòdul en tres parts: recol·lecció de dades, execució i presentació de resultats. Recol·lecció de dades Tots els mòduls necessiten d’una interfície on l’usuari entri les dades pertinents per tal de realitzar els càlculs i operacions que el mòdul implementa. Aquesta interfície dins el prototip de geoportal es troba a l’àrea de formularis, a la dreta del mapa. Com que aquesta part de l’àrea de treball és ampliable de forma dinàmica, s’hi podran afegir els controls necessaris per tal de recollir tota aquesta informació que l’usuari facilita. Degut a l’estructuració en frames de la pàgina del geoportal, la millor opció és generar la operativa de cada mòdul en una pàgina web independent. Després, cadascuna d’aquestes webs es podran incloure al frame de l’àrea de formularis en funció del mòdul que es vulgui executar. Per això caldrà també programar els accessos necessaris per a cada mòdul, ja sigui en forma de botons a la barra d’eines actual, o bé d’un sol botó, que obri un menú de mòduls a l’àrea de formularis, i que permeti accedir a tots els mòduls disponibles. Execució Un cop recol·lectades les dades necessàries en funció del mòdul, aquestes s’hauran d’enviar al servidor per tal que aquest les processi i així poder obtenir el resultat desitjat. Aquest procés d’execució és ideal que estigui encapsulat, per dos motius: primer, el codi del mòdul queda aïllat, i per tant és més fàcil de llegir i interpretar; i segon, com que es realitza una sola crida al mòdul, enviant-li la informació necessària perquè ens proporcioni un resultat, el codi font de la pàgina principal des d’on es realitza la crida també queda notablement simplificat. D’aquesta manera es contribueix doblement a tenir un codi net i de fàcil lectura i depuració. 124 - Implementació del geoportal web: Prototip CCU Presentació de resultats És important decidir des d’on s’ha de cridar a l’execució del mòdul, és a dir, qui serà l’intermediari entre la recol·lecció de dades i el resultat final. L’intermediari ideal és gairebé sempre el mateix qui presenta el resultat final, doncs no s’ha de separar aquesta funcionalitat en diferents blocs. En resum, i per entendre aquests conceptes de forma ràpida s’inclou la figura X-X, que inclou un gràfic del flux d’execució d’un mòdul genèric. L’execució del mòdul comença al client, on es realitza la captació de dades necessàries per a la realització de l’operació corresponent al mòdul. Un cop es té tota la informació, aquesta s’envia al servidor, directament a la pàgina que visualitzarà els seus resultats. Aquesta pàgina realitzarà una crida al mòdul, de qui n’obtindrà una entitat a representar en cas de ser dades representables a un mapa, o bé un conjunt de registres per mostrar en forma de taula, etc. Figura 7-14. Flux d’execució d’un mòdul genèric dins el geoportal Interpretant aquest flux d’execució, és fàcil deduir que el procés de migració dels mòduls serà el següent: • Mòduls de proximitat, i de comptar entitats properes: S’haurà de desenvolupar primer un nou mapa, que representi un mapa temàtic de Mataró. Per tal de generar Servei Web pel CCU amb GeoMedia WebMap 6.1 - 125 aquest mapa, es cridarà a un dels dos mòduls, i amb el resultat que se n’obtingui es completarà el mapa temàtic. • Mòdul de taules resum: Tal i com ja està implementat, aquest mòdul consta de dues pàgines, i no es relaciona amb el mapa ni tan sols fa servir cap objecte de WebMap. Consta d’una pàgina que realitza la recol·lecció d’informació necessària per a generar les taules, i una segona pàgina que realitza el procés de generació dels resums directament a la base de dades. • Mòduls d’àrees d’influència, de finques per ús i any de construcció, i d’activitats econòmiques: aquests tres mòduls es poden implementar directament sobre el mapa actual, cridant-lo des dels formularis de recol·lecció de dades necessaris. S’haurà d’implementar la recepció dels paràmetres necessaris, i a l’hora de generar el mapa principal, examinar els paràmetres i cridar al mòdul corresponent. Si es creu necessari, en funció del mòdul, presentar els resultats en un mapa específic, també és una opció perfectament acceptable. 7.10.2. Modificació del codi del prototip Per a modificar el prototip, ja sigui per afegir-hi noves funcionalitats o per canviar-ne d’existents, es recomana seguir aquests consells: • No modificar l’estructura de l’aplicació en la mesura que sigui possible: per motius obvis, com més modificacions estructurals es facin poden sorgir modificacions addicionals no previstes provocades per canvis en l’estructura o en el flux d’execució. • Afegir nous mòduls i funcions a la llibreria CCUFrameWork: ajudarà a mantenir net i endreçat el codi del portal, mantenint la implementació de cada concepte en llocs separats. • Afegir una pàgina prèvia al mapa que faci de portada: si el portal es fa créixer notablement, o simplement es creu oportú en algun moment, és recomanable programar una pàgina d’entrada al portal, que faci de portada, pàgina de benvinguda i/o menú d’accés (o totes a la vegada). És especialment recomanable aquesta acció si el geoportal ha de permetre la visualització de més d’un mapa base, o per exemple, si s’implementés una selecció de mapes temàtics. La demostració 132 - Annex I: Configuració del servidor IIS Servei Web pel CCU amb GeoMedia WebMap 6.1 - 133 Annex II: Configuració de GeoMedia WebMap Professional 6.1 Instalació de GeoMedia WebMap Professional 6.1 Hi ha uns requisits mínims abans d’instal·lar GeoMedia WebMap Professional 6.1. Són els següents: 1. Instalar Microsoft .NET Framework 2.0 2. Instalar XML Parser 4.0 Un cop instal·lades aquestes dues utilitats, es podrà procedir amb la instal·lació de GeoMedia WebMap. Executant l’assistent d’instal·lació, aquesta és trivial, acceptant tots els valors per defecte que dóna l’assistent. Un cop instal·lat GeoMedia WebMap, s’han de modificar les propietats de “Configuración de COM Distribuido”. Per a fer això, s’haurà d’executar l’aplicació “DCOMCNFG.EXE”, des de “Inicio” y “Ejecutar...”. Aquesta comanda varia substancialment d’un sistema operatiu a un altre. Per a sistemes amb Windows 2000, es mostrarà la finestra de la figura II-1, on s’hauran de modificar les dos opcions: “Permisos de acceso predeterminados” i “Permisos de inicio predeterminados”. Dins de cada opció, s’haurà d’afegir les comptes d’usuari per IUSR_HOSTNAME, IWAM_HOSTNAME, .NET, INTERACTIVE i SYSTEM. Si és Windows 2000 Server, s’haurà d’afegir també l’usuari NETWORK. Per a sistemes amb Windows 2003 Server, la instal·lació és similar a la especificada per a Windows 2000, però s’haurà d’afegir també l’usuari IIS_WPG. Per a sistemes amb Windows XP, es veuran les finestres de la figura II-2, on s’haurà de triar la opció “Propiedades” (com es veu a la imatge de l’esquerra de la figura, fent click amb el botó dret sobre “Mi PC”), i es veurà la finestra de la dreta de la mateixa figura. S’hauran de configurar les opcions “Permisos de acceso” i “Permisos de inicio”. Per a 134 - Annex II: Configuració de GeoMedia WebMap Professional 6.1 cada una de les opcions s’hauran d’afegir els usuaris següents: IWAN_HOSTNAME, IUSR_HOSTMANE, NETWORK, SYSTEM i ASP.NET (si existeix). Figura II- 1: Configuració de “COM Distribuido Figura II-2 : Configuració de “COM Distribuido” en Windows XP Annex II: Configuració de GeoMedia WebMap Professional 6.1 cada una de les opcions s’hauran d’afegir els usuaris següents: IWAN_HOSTNAME, IUSR_HOSTMANE, NETWORK, SYSTEM i ASP.NET (si existeix). 1: Configuració de “COM Distribuido ” en Windows 2000 : Configuració de “COM Distribuido” en Windows XP cada una de les opcions s’hauran d’afegir els usuaris següents: IWAN_HOSTNAME, ” en Windows 2000 : Configuració de “COM Distribuido” en Windows XP Servei Web pel CCU amb GeoMedia WebMap 6.1 - 135 Per a tots els usuaris que s’afegeixin, sigui quin sigui el sistema operatiu, s’hauran de donar permisos d’accés local. Tot seguit s’hauran de reiniciar els processos de servei web (IIS) i del GeoMedia WebMap. Tota aquesta configuració està documentada i estesa en la documentació del producte de GeoMedia WebMap Professional 6.1, dins el capítol “Configuring the Server”, en els apartats “IIS Configuration” i “System Security and Access Settings”. Configuració de WebMap: Administrator Un cop configurats els permisos per DCOM, caldrà realitzar la prova de l’Administrador de GeoMedia WebMap. Aquesta prova està documentada i estesa en la documentació del producte de GeoMedia WebMap Professional 6.1, dins el capítol “Configuring the Server”, en l’apartat “Running the Administrator” (veure “Configuration Test”). Consisteix bàsicament en fer un test de generació d’un mapa de prova per comprovar que tot s’ha configurat correctament. Per a executar l’administrador de GeoMedia WebMap s’haurà d’executar l’accés al programa: “Inicio”, “Programas”, “GeoMedia WebMap” i “Administrador”. Quan s’obri l’aplicació d’administració, es podrà observar com a l’esquerra es mostra una estructura d’arbre per a navegar pels diferents elements de l’administrador. Hi ha quatre d’aquests elements que s’han de configurar: Cache S’ha de definir la carpeta de CACHE (veure figura II-3). WebMap el busca automàticament, tot i que es pot especificar qualsevol ruta. Aquest serà un directori virtual qualsevol definit dins el servidor IIS. El paràmetre Cleanup és el temps en minuts màxim que un fitxer s’emmagatzemarà a la carpeta de cache. Passat aquest temps, quan s’executi el MapServerManager, s’eliminaran tots els arxius més antics d’aquest temps. 136 - Annex II: Configuració de GeoMedia WebMap Professional 6.1 MapServer L’element “Map Server” permet especificar valors de configuració per al servidor de mapes, i controlar-ne l’ús de la memòria entre d’altres (veure figura II-4). Hi ha diversos paràmetres: • Request time out: És el temps màxim en segons que s’espera per a obtenir una resposta del servidor de mapes, i passat aquest temps es retornarà un error. És normal que un mapa trigui menys de 5 segons en generar-se, però això dependrà de la informació i del tipus de petició. Si es realitzen moltes operacions complexes el temps podria superar els 180 segons. Valor normal: 180 segons. • Number of map servers: Número màxim de Map Servers, que depèn del tipus de llicència adquirida. Permet atendre més d’una petició al mateix temps si s’especifica més d’un. S’ha de tenir en compte que la generació dels mapes té molta component d’entrada/sortida, temps que pot utilitzar la màquina per a generar altres mapes. Valor normal: 1. • Memory threshold for restart (MB): És el límit de memòria màxim que pot assolir un MapServer abans de “suïcidar-se”. Si generant un mapa passa d’aquest tamany en memòria, el procés es reiniciaria automàticament tot just acabi de generar el mapa actual. Si el valor és zero mai es reiniciarà (no es recomana). Valor normal: 256 o 512 MB. • Number of raster files cached: Permet mantenir en memòria informació de raster, però això suposa un gran ús d’aquesta. El valor recomanat és zero, excepte en aplicacions web especials, i en aquests casos caldrà realitzar proves de rendiment i disposar de molta memòria RAM. Valor normal: 0. • Use default CMDF or MSS: Permet definir la ubicació d’un fitxer CMDF o MSS per a establir únicament les connexions als magatzems. Això té utilitat només si hi ha una única aplicació web de GeoMedia, o si totes es connecten a les mateixes dades. • Use default XSL file: Defineix el fitxer XSL utilitzat per MapServer per defecte per a la transformació del fitxer SVG. Es recomana definir un per defecte per evitar que l’execució falli quan no se n’especifica cap per codi, sobretot en màquines de desenvolupament. Referir-se a la documentació del producte per al plug-in SVG. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 137 Logging El servidor de mapes pot generar un fitxer de LOG per a cada mapa que es genera (veure figura II-5). Aquest fitxer permetrà als desenvolupadors seguir el flux d’execució, detectar errors en la càrrega i procés de dades, i veure quines dades i tasques consumeixen la part de temps més gran. Amb tot això es pot realitzar la depuració d’una aplicació i la millora del seu rendiment. El “Path” és la carpeta on es guarden, que es crea durant la instal·lació de WebMap. “Level” especifica el tipus de detall que es desitja (quantitat d’informació generada), i “Cleanup” és el temps que trigaran en ser eliminats els arxius LOG. Per defecte el LOG està inhabilitat. Miscellaneous En aquesta finestra es pot especificar la carpeta per defecte dels magatzems cartogràfics. Això no té més importància per a l’aplicació general. Sí que en té el paràmetre ROOT URL (veure figura II-6). Cada vegada que GeoMedia WebMap genera un mapa, sigui quin sigui el format de sortida, li dona un nom únic i el coloca a la carpeta de caché, i com a resultat final retorna un nom format per: ROOT_URL/Virtual/Fitxer. “ROOT_URL” és el paràmetre especificat en aquesta finestra, “Virtual” és la carpeta virtual especificada a la configuració de caché (anterior) i “Fitxer” és el nom únic del fitxer. Perquè l’usuari final pugui veure el mapa s’ha de poder descarregar l’arxiu i ha de tenir accés a ell a través d’aquesta adreça. També es pot modificar aquest nom abans d’enviar-li al client final, mitjançant codi de servidor. Figura II-3: Configuració de CACHE a l’Administrador de WebMap 138 - Annex II: Configuració de GeoMedia WebMap Professional 6.1 Figura II-4: Configuració del servidor de mapes a l’Administrador de WebMap Figura II-5: Configuració de LOGs a l’Administrador de WebMap Figura II-6: Configuració Miscellaneous a l’Administrador de WebMap Servei Web pel CCU amb GeoMedia WebMap 6.1 - 139 Annex III: Descripció de les BBDD En aquest projecte es fan servir cinc bases de dades diferents, totes elles en format de Microsoft Access 2002-2003. Aquestes bases de dades es defineixen a continuació. Com que el portal es tracta d’un prototip, s’ha desenvolupat de tal manera que les bases de dades s’han de copiar a la ubicació “C:\data” per tal que funcioni el geoportal. Aquesta carpeta no és configurable. Base de dades del mapa de Mataró Aquesta base de dades és la darrera versió de la que disposa el CCU, sense haver-hi realitzat cap tipus de modificació. Es fa servir per a obtenir la cartografia i les entitats que es fan servir per a dibuixar els diferents mapes que es generen al geoportal. Les taules utilitzades són: antenesTM, AparcamentR, CEIP, CEIPcon, CentreAssistenciaPrimaria, districtes, EscolaBressol, IES, IEScon, ILLES, LlarInfants, ParadesBus, ParadesTaxi, seccions i ZonesVerdesAccessibles. Totes elles es fan servir per a generar els mapes del geoportal. Per al detall d’aquesta base de dades, referir-se al projecte “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor 2005, de David Perelló. Base de dades del cadastre de Mataró Aquesta base de dades es fa servir als mòduls d’escriptori del CCU. No s’ha fet servir en aquest projecte. L’únic motiu pel qual s’inclou és perquè en cas de realitzar qualsevol continuació d’aquest projecte, es disposi del material necessari per a migrar els mòduls d’escriptori del CCU. Per al detall d’aquesta base de dades, referir-se al projecte “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor 2005, de David Perelló. Base de dades del padró de Mataró Aquesta base de dades es fa servir gairebé a totes les funcionalitats avançades del geoportal. És necessària per a realitzar qualsevol recompte d’habitants, i per tant, per tots els mòduls d’escriptori del CCU, i també per la majoria de funcionalitats avançades implementades al geoportal. La taula principal que es fa servir és la taula “Padro”, que 140 - Annex III: Descripció de les BBDD conté tota la informació pública i no identificativa dels habitants de Mataró. També s’utilitzen les taules ResumIlles i ResumParceles, que s’han creat específicament per al mòdul de generació de taules resum del geoportal. No s’han utilitzat les taules existents dels mòduls d’escriptori per a permetre que aquests segueixin funcionant amb aquestes bases de dades. Per al detall d’aquesta base de dades, referir-se al projecte “Aplicacions pel Centre de Coneixement Urbà de Mataró”, Tardor 2005, de David Perelló. Base de dades d’estils del geoportal Aquesta base de dades s’ha creat des de l’aplicació GeoMedia, i és un magatzem d’estils utilitzat per a donar format d’una forma senzilla i ordenada a les entitats dels mapes que es generen al geoportal. La seva gestió íntegra es fa exclusivament des de GeoMedia, i no s’utilitza de forma directa en cap cas. Aquesta base de dades només conté metadades per a la generació de mapes, i per tant, no té sentit realitzar-ne cap definició ni anàlisi. La forma de crear i mantenir aquesta base de dades s’explica amb detall en l’annex VII: Generació d’estils per WebMap. Base de dades d’usuaris Aquesta base de dades s’ha creat específicament per a gestionar el sistema d’autentificació del geoportal. Consta de dos taules, Usuaris i Perfils, que emmagatzemen la informació dels diferents usuaris que poden accedir al geoportal i dels nivells de permisos als que pertanyen aquests usuaris, respectivament. L’accés a aquestes bases de dades es realitza mitjançant les classes de proveïdor d’usuaris (MemberProvider) i de proveïdor de nivells d’usuari (RoleProvider), que s’expliquen en el capítol 7.4 - Autentificació. No s’ha implementat cap eina per a la gestió i manteniment d’aquesta base de dades, de manera que per afegir, modificar i eliminar usuaris el procés a seguir és completament manual, modificant la base de dades amb l’aplicació Microsoft Access. Servei Web pel CCU amb GeoMedia WebMap 6.1 - 141 Per tal d’afegir un nou usuari, cal afegir un nou registre manualment a la taula usuaris, i en el camp “Perfil” s’ha d’introduir un nom de perfil existent en la taula “Perfils”. Per tal d’assegurar aquesta integritat, s’ha afegit una relació directa entre aquestes taules, de manera que Microsoft Access s’encarrega d’obligar al compliment d’aquest requisit de forma automàtica. L’aplicació no està preparada per afegir nous perfils d’usuari, així que no s’haurà de modificar la taula “Perfils” per a garantir un correcte funcionament del sistema d’autentificació d’usuaris del geoportal. Camp Descripció Nom Nom del perfil (nivell d’usuari) Taula III-1: Descripció de la taula “Perfils” dins la base de dades “Usuaris” Camp Descripció Username Nom de l’usuari Password Contrasenya de l’usuari Perfil Nom del perfil al que pertany (haurà de coincidir amb un valor de la taula “Perfils”) Taula III-2: Descripció de la taula “Usuaris” dins la base de dades “Usuaris”