creació d'un sistema d'informació per a la gestió ... · ii 5.2 aproximació tecnològica 23 5.3...

148
Creació d'un sistema d'informació per a la gestió, visualització i ús de les dades d'anivellacions. Març 2010 Autor: Ignacio Moreno Tutors: Laura Sala (LLIGIT) Neus Querol (IGC) Jordi Marturià (IGC)

Upload: phungkien

Post on 20-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • Creaci d'un sistema

    d'informaci per a la

    gesti, visualitzaci

    i s de les dades

    d'anivellacions.

    Mar 2010

    Autor: Ignacio Moreno

    Tutors: Laura Sala (LLIGIT)

    Neus Querol (IGC)

    Jordi Marturi (IGC)

  • i

    Taula de continguts

    1 Introducci 1

    1.1 Presentaci 1

    1.2 Marc institucional 1

    1.3 Esquema del document 2

    2 Antecedents 3

    3 Objectius 5

    3.1 Objectius generals 5

    3.2 Objectius especfics 5

    3.3 Arquitectura del projecte 6

    4 Disseny i implementaci de la BBDD 7

    4.1 Requeriments i objectius 7

    4.2 Aproximaci tecnolgica 7

    4.2.1 Programari 8

    4.2.2 Llenguatges de programaci 8

    4.3 Model conceptual 8

    4.4 Model lgic 10

    4.4.1 Aspectes formals del model lgic 11

    4.4.2 Relacions 12

    4.4.3 Disparadors i procediments 12

    4.4.4 Altres aspectes a destacar 16

    4.5 Implementaci de la Base de Dades 17

    4.6 Creaci de vistes 18

    4.7 Crrega inicial de dades 20

    5 Aplicaci de crrega de dades 23

    5.1 Requeriments i objectius 23

  • ii

    5.2 Aproximaci tecnolgica 23

    5.3 Casos ds 24

    5.4 Programaci de laplicaci de crrega de dades 37

    5.4.1 Connexi a la Base de dades 37

    5.4.2 Visualitzaci de dades de la base de dades. 39

    5.4.3 Omplir un combobox amb registres de la BBDD. 41

    5.4.4 Alta de nous registres a la BBDD. 42

    5.4.5 Crrega darxius externs a la BBDD 46

    5.4.6 Seleccionar zona o campanya 48

    5.4.7 Crrega massiva de dades danivellaci i GPS 50

    5.4.8 Exportar i editar registres de les diferents taules 58

    5.5 Creaci darxiu installable 60

    6 Visualitzador WEB 62

    6.1 Requeriments i objectius 62

    6.2 Aproximaci tecnolgica 62

    6.2.1 Programari 64

    6.2.2 Llenguatges de programaci 65

    6.3 Creaci de laplicaci 65

    6.3.1 Estructura darxius i carpetes 66

    6.3.2 Interfcie dusuari 68

    6.3.3 Informaci cartogrfica implementada 69

    6.4 Implementaci de funcionalitats al visualitzador 74

    6.4.1 Funcionalitats bsiques 74

    6.4.2 Widgets implementats 75

    6.4.3 Funcionalitats addicionals 88

    6.5 Publicaci del visor 92

    6.6 Casos prctics 93

    7 Conclusions 96

  • iii

    8 Referncies 98

    9 ndex 100

    10 Annexos 102

    10.1 Annex A: Model Lgic de la Base de Dades 102

    10.2 Annex B: Codi dimplementaci de la Base de Dades en Oracle 132

    10.3 Annex C: Esquema general de laplicaci 140

  • iv

    RESUM

    El present projecte representa la collaboraci entre lInstitut Geolgic de Catalunya (IGC)

    i la Universitat Autnoma de Barcelona (UAB), i ms concretament, el Laboratori

    dInformaci Geogrfica i de Teledetecci (LIGIT) per la realitzaci del projecte de final

    del Mster de Tecnologies de la Informaci Geogrfica (MTIG), 11a edici.

    Lesmentat projecte ha consistit en la creaci del SIA, Sistema dInformaci

    dAnivellacions. Un SIG integrat que ha estat creat per emmagatzemar, gestionar i

    consultar les dades danivellaci topogrfica i GPS que gestiona lIGC. El projecte ha

    comportat tres grans fases que en conjunt conformen el SIA.

    En primer terme sha creat una BBDD en Oracle a partir dun model conceptual realitzat

    conjuntament amb lusuari final i un model lgic que ha estat implementat en Dezign. La

    creaci de la BBDD, i la posterior crrega de dades han perms organitzar el conjunt de

    dades danivellaci topogrfica i GPS de qu disposava lIGC.

    Amb la finalitat de facilitar la inserci de dades, seguidament es crea una aplicaci que

    permet la rpida inclusi a la BBDD de les noves mesures que arribin a lIGC. Aquesta

    aplicaci ha estat desenvolupada grcies a lentorn de treball de Visual Studio 2008 i el

    llenguatge de programaci Visual Basic .NET.

    Finalment, sha creat un visualitzador que permet la consulta de la BBDD i la visualitzaci

    de la informaci cartogrfica associada. Aquest visualitzador es realitza sobre la

    tecnologia ESRI, ms concretament la nova API de Flex que ESRI ha desenvolupat. Aix

    doncs, mitjanant una connexi amb ArcSDE a la BBDD, la publicaci de la cartografia

    associada a la BBDD mitjanant ArcGIS Server 9.3.1 i lAPI Flex lusuari pot visualitzar,

    consultar i extreure informaci de les dades danivellaci topogrfica i GPS.

    El que es presenta en aquest document s, doncs, un exhaustiu resum dels

    procediments i tcniques utilitzades per la realitzaci dun SIG que permet als tcnics de

    lIGC realitzar una gesti ms eficient de les dades danivellaci topogrfica i GPS.

    Paraules clau: SIG, ArcGIS, anivellaci, API Flex, Oracle

  • v

    RESUMEN

    El presente proyecto representa la colaboracin entre el Institut Geolgic de Catalunya

    (IGC) y la Universitat Autnoma de Barcelona, y ms concretamente el Laboratori

    dInformaci Geogrfica i de Teledetecci (LIGIT) para la realizacin del proyecto final del

    Mster de Tecnologies de la Informaci Geogrfica (MTIG), 11a edici.

    El mencionado proyecto ha consistido en la creacin del SIA, Sistema de Informaci

    dAnivellacions. Un SIG integrado que se ha creado para almacenar, gestionar y consultar

    los datos de nivelacin topogrfica y GPS que gestiona el IGC. El proyecto ha

    comportado tres grandes fases que en conjunto conforman el SIA.

    En primer lugar se ha creado una BBDD en Oracle a partir de un modelo conceptual

    realizado conjuntamente con el usuario final y un modelo lgico implementado en Dezign.

    L creacin de la BBDD y la posterior carga de datos han permitido organizar el conjunto

    de datos de nivelacin topogrfica y GPS de que dispone el IGC.

    Con el fin de facilitar la insercin de datos, a continuacin se crea una aplicacin que

    permite la rpida inclusin en la BBDD de los nuevos datos que lleguen al IGC. Esta

    aplicacin se ha realizado mediante el entorno de desarrollo que proporciona Visual

    Studio 2008 y con el lenguaje de programacin Visual Basic .NET.

    Finalmente, se crea un visualizador que permite la consulta de la BBDD y la visualizacin

    de la informacin cartogrfica asociada. Este visualizador se realiza con tecnologa ESRI,

    ms concretamente con la nueva API Flex que ESRI ha desarrollado. As pues, mediante

    una conexin con ArcSDE a la BBDD, la publicacin de la cartografa asociada a la

    BBDD mediante ArcGIS Server 9.3.1 y la API de Flex el usuario puede visualizar,

    consultar y extraer informacin de los datos de nivelacin topogrfica y GPS.

    Lo que este documento presenta es un exhaustivo resumen de los procedimientos y

    tcnicas utilizadas para la realizacin de un SIG que permite a los tcnicos del IGC

    realizar una gestin ms eficiente de los datos de nivelacin topogrfica y GPS.

    Palabras clave: SIG, ArcGIS, nivelacin, API Flex, Oracle

  • Sisema dInformaci dAnivellacions

    Introducci

    1

    1 Introducci

    1.1 Presentaci

    El present document presenta les tasques realitzades en el marc del projecte final del

    Mster de Tecnologies de la Informaci Geogrfica (MTIG).

    El projecte sha anomenat Sistema dInformaci dAnivellacions (SIA) ja que pretn crear

    un Sistema dInformaci Geogrfica (SIG) per a la gesti de les dades danivellaci

    topogrfica i GPS de Catalunya. En lapartat dobjectius sespecifiquen ms en detall les

    principals tasques a realitzar per, cal remarcar que es tracta dun sistema integrat que

    ha comprs tots els passos que implica el desenvolupament dun sistema dinformaci:

    des de la creaci de la BBDD fins la creaci dun visor que permet la consulta i

    visualitzaci de les dades.

    Es tracta dun document tcnic que t un doble objectiu. Per una banda servir de resum

    de la feina realitzada dins de lesmentat projecte, un objectiu que podrem anomenar

    acadmic. Daltra, pretn ser una guia metodolgica que permeti als tcnics de lInstitut

    Geolgic de Catalunya (IGC) entendre tots els passos realitzats. Aquest doble objectiu fa

    imprescindible la presentaci, no noms dels resultats de les diverses fases del projecte

    final sin tamb del codi implementat. Aquesta s la ra que explica labundant presncia

    de codi al llarg de tot el document. Tamb en aquest sentit es fa necessari especificar els

    processos i mtodes emprats en algunes parts del procs de desenvolupament.

    Linforme va acompanyat dun CD que inclou un conjunt dinformaci complementria

    com el codi font de laplicaci de crrega, el codi font del visualitzador aix com altres

    arxius complementaris de gran ajuda i que complementen aquest document.

    Per ltim agrair als tutors, tant del LIGIT com de lIGC, pels seus consells i la seva

    pacincia a lhora de portar el projecte final. Tamb agrair a lIGC, especialment el

    personal de TIC, per haver facilitat la infraestructura necessria per assolir els objectius

    marcats.

    1.2 Marc institucional

    El present projecte representa la collaboraci entre el Institut Geolgic de Catalunya

    (IGC) i la Universitat Autnoma de Barcelona (UAB), i ms concretament el Laboratori

  • Sistema dInformaci dAnivellacions

    Introducci

    2

    dInformaci Geogrfica i de Teledetecci (LIGIT) per la realitzaci del projecte de final

    del Mster de Tecnologies de la Informaci Geogrfica, 11a edici.

    A tal fi es firma un conveni de collaboraci a travs del qual, lalumne, sincorpora a lrea

    dEnginyeria Geolgica i Riscs de lIGC per la realitzaci del projecte. Especficament,

    lalumne passa a formar part del grup de BBDD, SIG i projectes especfics, sota la

    direcci dels responsables del mencionat departament.

    En lrea dEnginyeria Geolgica i especialment el grup de BBDD i SIG utilitzen

    habitualment els Sistemes dInformaci Geogrfica per a la realitzaci de les seves

    tasques.

    El projecte ha estat una collaboraci amb una durada aproximada de 4 mesos, Setembre

    2009-Desembre 2009.

    1.3 Esquema del document

    Linforme sorganitza en funci de lordre i les tasques realitzades. Aix, en un primer

    apartat introductori es presenta el treball realitzat i les institucions participants.

    Posteriorment es preenten els antecedents per tal que es familiaritzi amb les dades i ls

    que sen fa per a continuaci especificar els objectius del projecte final tant a nivell

    general com els especfics de cada apartat.

    Seguidament, es presenten tres grans apartats que inclouen les principals tasques

    realitzades: el disseny i la implementaci de la BBDD, laplicaci de crrega i el

    visualitzador web. Al mateix temps, cadascun daquest tres apartats t una estructura

    comuna i una especfica segons la temtica tractada. En primer terme es mostren els

    requeriments que el projecte t per part de lIGC i el LIGIT, seguidament sespecifiquen

    els objectius de cada tasca i finalment es realitza una aproximaci a la tecnologia

    utilitzada aix com el programari fet servir. Posteriorment a aquests apartats comuns es

    desenvolupa cada tasca en profunditat seguint, sempre i quan sigui possible, un ordre

    cronolgic que faciliti la comprensi. Finalment, sinclou un apartat de conclusions i un

    apartat de propostes de futur per tal dassenyalar les millores que es podrien realitzar en

    un futur.

  • Sistema dInformaci dAnivellacions

    Antecedents

    3

    2 Antecedents

    Segons la Llei 19/2005, de 27 de desembre, de creaci de l'IGC t la funci, entre

    daltres, de: Estudiar i avaluar els riscs geolgics o associats, incls el risc dallaus; la

    proposta de mesures per a fer-ne la previsi, la prevenci i la mitigaci, i donar suport als

    organismes competents en la planificaci i lordenaci del territori, en lurbanisme i en la

    gesti de les emergncies.

    s en base a aquesta funci que lIGC porta a terme el seguiment dels moviments de

    subsidncia que tinguin lloc a Catalunya. s en aquest sentit que des de lany 1997 lIGC

    disposa de dades danivellaci que han estat procesades i analitzades pels professionals

    de lIGC, per tal de monitoritzar els processos de subsidncia. Lobjectiu daquestes

    mesures s controlar les deformacions del terreny i els riscos que per a les

    infraestructures o la poblaci aix pugui suposar. En aquest sentit, per exemple,

    semmarquen les dades que es disposen del barri de lestaci de Sallent les quals seran

    tractades en el projecte que es presenta.

    Fins lactualitat lemmagatzematge daquestes dades sha efectuat en format excel.

    Davant el gran nombre de dades assolides i el previsible augment del nombre de punts a

    mesurar sorgeix la necessitat de crear un entorn de treball integrat. Entorn que ha de

    permetre als usuaris obtenir informaci de les dades de forma ms immediata aix com la

    consulta de les dades per part daltres rees de lIGC. s en aquest sentit que sorgeix la

    necessitat de crear el Sistema dInformaci dAnivellacions.

    La mesura de la deformaci del terreny es realitza mitjanant la mesura amb elevada

    precisi i en diferents campanyes de la cota de punts coneguts. Daquesta forma, si es

    coneix la cota mesurada en diferents campanyes es pot calcular si la superfcie sha

    deformat, i la velocitat de deformaci daquesta. A tall dexemple, en el barri de lEstaci

    de Sallent la deformaci mxima ha estat duns 50 cm des de lany 1997.

    Per tant, lobjectiu del present treball s crear un entorn de treball integrat per aquestes

    dades puntuals.

    Les dades que es reben en poden dividir en dos grans grups, segons el mtode de

    captura;

    1. Dades danivellaci topogrfica: sobre un punt de coordenades fixes es mesura

    lalada mitjanant nivells topogrfics.

  • Sistema dInformaci dAnivellacions

    Antecedents

    4

    2. Dades GPS: es mesura lalada a travs daparells GPS delevada precisi. En

    aquest cas, per, les coordenades del punt varien lleugerament a cada campanya.

    Aquesta variaci es considera negligible a lhora danalitzar les diferents cotes per

    que cal tenir en compte a lhora de processar les coordenades.

    Per tant, sempre hi haur una dualitat, present tant en la base de dades com en

    laplicaci de crrega de dades en funci de si es tracta de dades danivellaci o de

    dades GPS.

    Cal tenir en compte que es tracta dun sistema dinmic, en el que es poden afegir nous

    mbits geogrfics sobre els que es prenen mesures, i que cada cert temps es creen

    noves campanyes en les que es prenen mesures sobre punts ja mesurats o de nous.

    Un dels millors exponents daquesta complexitat s el reclcul dalgunes de les dades. I

    s que, es pot donar el cas que es produeixi un ajust en algun dels parmetres que

    impliqui lexistncia dunes noves coordenades per alguns dels punts danivellaci. s a

    dir que en un moment donat shan de poder variar les coordenades dun punt ja donat

    dalta sense que aix impliqui la prdua de les anteriors. Aquesta casustica sha

    solucionat, com sespecificar ms endavant, amb la inclusi duna taula de punts

    histrics.

    Es pot observar doncs, que tot i laparent simplicitat de les dades (uns punts en UTM

    amb una mesura de la cota) la variabilitat dmbits de mesura i la dualitat esmentada fan

    que la creaci de la base de dades i la posterior aplicaci de crrega no siguin una tasca

    senzilla.

  • Sistema dInformaci dAnivellacions

    Objectius

    5

    3 Objectius

    En aquest apartat sespecificaran els principals objectius tant del projecte final en si com

    dels diferents apartats del mateix. Al final sinclou un esquema general de tot el projecte

    per donar una visi de conjunt del mateix.

    3.1 Objectius generals

    Com ja sha apuntat amb anterioritat el principal objectiu del projecte final s sistematitzar

    i crear un entorn de treball integrat per tal de gestionar les dades danivellaci i GPS que

    rep lIGC. En aquest sentit cal realitzar les segents tasques:

    1. Crear un model de dades que inclogui tota la casustica.

    2. Implementar el model de dades en una BBDD.

    3. Crear una aplicaci que permeti una gil inserci de dades per part dels tcnics

    de lIGC.

    4. Creaci dun visor web que permeti la consulta i descrrega de dades de la

    BBDD.

    3.2 Objectius especfics

    Per tal de crear un sistema integrat, com ja sha vist anteriorment, cal realitzar unes

    tasques especfiques que, a la vegada, tindran uns objectius propis. Aqu sapunten

    aquests objectius tot i que a cada apartat sentra ms en detall sobre aquests objectius.

    Els objectius sn:

    1. Creaci del model de dades: lobjectiu principal daquest apartat s generar un

    model de dades que pugui ser implementat en Oracle 10g i que consideri totes les

    especificats de les dades a tractar.

    2. Aplicaci de crrega de dades: la presa de dades es realitza per part duna

    empresa externa que lliura els resultats de les diferents campanyes a lIGC, que s

    qui sencarrega del seu tractament. Aquestes dades arriben en format *.xls. Cal crear

    una aplicaci per qu lusuari pugui introduir directament les dades a la BBDD.

    3. Visualitzador web: una vegada la base de dades ha estat creada i existeix una

    aplicaci de crrega de dades s necessari un entorn web amable amb lusuari que

    permeti la consulta daquestes dades. En aquest sentit es crea un visor web que

  • Sistema dInformaci dAnivellacions

    Objectius

    6

    permet la consulta alfanumrica i geogrfica de les dades i la descrrega daquestes

    per qu lusuari les pugui tractar.

    3.3 Arquitectura del projecte

    A continuaci es presenta un esquema (Figura 1) que presenta les diferents fases del

    projecte i que permet tenir una visi global del mateix. Com sha comentat el projecte sha

    dividit en tres fases:

    Figura 1. Arquitectura del sistema on es representen els diferents elements que conformen el sistema i les

    diferents fases de qu consta el projecte. En color sindica el programari utilitzat a cada cas.

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    7

    4 Disseny i implementaci de la BBDD

    4.1 Requeriments i objectius

    Els requeriments per part de lempresa, i per tant, els objectius a assolir, sn els

    segents:

    Requeriments funcionals:

    El Sistema Gestor de Bases de Dades (SGBD) a utilitzar ser Oracle en la seva

    versi 10g. Per tant, al projecte no ha calgut avaluar la idonetat de diversos SGBD

    donat que era un requeriment ls dOracle.

    El model de dades ha dincloure un camp BLOB que permeti lemmagatzematge

    darxius PDF referents als punts.

    En cas de reclcul cal mantenir les coordenades dels antics punts.

    Cal emmagatzemar el clculs de la velocitat entre la primera i ltima campanya

    per un mateix punt.

    Requeriments no funcionals:

    Creaci dun model de dades prou slid per assumir totes les mesures calculades

    fins ara a ms de les possibles noves dades que puguin arribar.

    Shan de poder incorporar, en un futur, el valor amb lestimaci de lerror de cada

    mesura.

    El model de dades ha de mantenir al mxim lestructura i nomenclatura de dades

    actual per minimitzar els canvis i facilitar aix la migraci i implementaci de les dades

    a la BBDD.

    Implementaci en la BBDD de la totalitat de les dades disponibles en lactualitat.

    4.2 Aproximaci tecnolgica

    A continuaci sespecifica tant el programari fet servir com tamb els diferents

    llenguatges de programaci emprats.

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    8

    4.2.1 Programari

    Icona Programa Utilitzaci

    Dezign for Databases v.

    5.2.2

    Disseny de la base de dades.

    Excel 2007 Creaci de les sentncies SQL que posteriorment han

    servit per la migraci de dades.

    Oracle 10g

    Per a la creaci i implementaci de la base de dades a

    travs dels diferents mduls de qu disposa oracle. En

    concret sha fet servir la Hoja de trabajo SQL Plus:

    Programa doracle que permet executar seqncies

    SQL, des de crear la base de dades a partit de le

    sentncies SQL generades pel Dezign fins la inserci

    de les dades tamb mitjanant seqncies SQL.

    Taula 1. Taula que mostra el programari fet servir durant la creaci i implementaci de la base de dades.

    4.2.2 Llenguatges de programaci

    Els llenguatges de programaci utilitzats per crear la BBDD sn els segents:

    SQL: Sigles en angls de Structured Query Language. Llenguatge universal per a

    la creaci i gesti de bases de dades relacionals. Sha fet servir per crear la BBDD i

    inserir-hi les dades.

    PL/SQL: Sigles en angls de Procedural Language/Structured Query Language,

    creat i incorporat per Oracle. Ha estat utilitzat a lhora de crear els triggers (o

    disparadors) que permeten crear camps autonumrics i tamb per a la inserci a la

    darxius PDF.

    4.3 Model conceptual

    El pas previ al disseny lgic i la implementaci de la BBDD (en el SGBD escollit) s la

    creaci del model conceptual.

    La creaci del model conceptual s un procs complex, que requereix de la intervenci

    de tots els actors que faran s de la BBDD i que t com a finalitat construir un esquema

    amb els principals elements de la BBDD. Tot i ser un pas previ a la construcci de la base

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    9

    de dades s un procs de cabdal importncia donat que la utilitat, versatilitat i eficincia

    de tot el sistema depenen dun bon model conceptual.

    Cal remarcar la necessria implicaci tant de lusuari com del tcnic que crea la BBDD.

    Aquesta implicaci dambds actors dinamitzar el procs i evitar al mxim els errors, a

    la vegada que augmentar leficincia de la base de dades.

    La metodologia utilitzada per tal de generar el model conceptual consta dels segents

    passos (Marqus, 2001):

    1. Identificar les entitats: els principals objectes que interessen a lusuari i que

    conformaren les diverses taules.

    2. Identificar les relacions. Una vegada shan identificat les diferents entitats shan de

    definir les diferents relacions existents entre elles.

    3. Identificar els atributs: els atributs sn les caracterstiques o propietats de les

    entitats. A lesquema lgic els atributs es correspondran amb les columnes de cada

    taula.

    ptimament desprs del procs descrit cal dibuixar i revisar lesquema creat amb lusuari

    tot i que en aquest cas, per tal doptimitzar el temps, la plasmaci de lesquema sha

    realitzat directament a lhora que es realitza lesquema lgic. La revisi de lesquema amb

    lusuari es realitza sobre lesquema lgic ja implementat. Aquest mtode, t un doble

    avantatge ja que fa innecessari ls dun nou software (i per tant de la llicncia associada)

    a la vegada que soptimitza el temps, com ja sha apuntat.

    El resultat final del procs s un esquema de la base dades que pugui satisfer totes les

    necessitats actuals i futures de lusuari. A la vegada, aquest esquema ha de ser

    entenedor i fcilment comprensible per qualsevol usuari mnimament familiaritzat amb les

    dades.

    Les entitats identificades i els seus principals atributs sn les segents:

    Zona: Diferents mbits geogrfics als quals es prenen mesures danivellacions o

    GPS. Cada zona vindr identificada per unes sigles i lmbit geogrfic vindr definit

    per una poblaci i un barri en concret. A ms, es diferencia ja cada zona pel tipus de

    dades que cont: danivellaci topogrfica, GPS o ambdues.

    Punts: Coordenades geogrfiques don es prenen les mesures. Cada punt vindr

    identificat per una sigla, tamb ser dun tipus (NIV) o un altre (GPS) i un arxiu PDF

    referent al punt. Sens dubte latribut ms important seran les coordenades X, Y del

    punt que shan tractat com atributs numrics. La decisi de no emmagatzemar a la

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    10

    BBDD els elements puntuals com camps geomtrics es pren per les diverses raons

    que sexposen a continuaci:

    o En tractar-se delements puntuals el tractament numric facilita el

    manteniment de la BBDD a la vegada que permet una ms senzilla

    crrega de dades.

    o ArcGIS tracta aquestes coordenades com events i reconeix aquests events

    com elements de geometria puntual, de manera que, a la prctica,

    reconeix les coordenades com un element geomtric.

    Campanya: Moment temporal en el que es prenen les dades de cada punt i a

    cada zona. Cada campanya es diferencia per una sigla i una data concreta diferent a

    cada campanya.

    Mesures: dades obtingudes in situ, i posteriorment processades, en un moment

    concret i sobre un punt i una zona concreta. Cada entitat de mesura contindr la cota i

    lerror associat a aquesta.

    A ms a ms de les entitats presentades hi altres variables dimportncia que cal

    considerar:

    Comarques: divisi administrativa comarcal de Catalunya i que servir per ubicar

    les diferents zones.

    Municipis: divisi administrativa municipal de Catalunya i que servir per ubicar les

    diferents zones.

    Observacions de campanya: Observacions de camp que cal emmagatzemar a la

    BBDD sobre les campanyes.

    Observacions de punts: Observacions de camp que cal emmagatzemar a la

    BBDD sobre els diferents punts.

    Punts histrics: Entitat que encabeix els punts danivellacions topogrfics que

    canvien les seves coordenades en un moment concret com a conseqncia dun

    reclcul i que cal emmagatzemar per no perdre les dades.

    Una vegada identificades les entitats es relacionen entre elles segons es mostra a la

    figura 2.

    4.4 Model lgic

    Una vegada finalitza la creaci del model conceptual es crea el model lgic mitjanant el

    programa Dezign. Aquest software presenta lavantatge que permet escollir el SGBD final

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    11

    i en finalitzar el procs crea un conjunt de seqncies SQL que permeten implementar la

    BBDD directament sobre Oracle.

    El model lgic s el que es presenta a la figura 3. A lannex A es pot trobar el model lgic

    ampliat aix com tota la informaci sobre les taules i atributs.

    Figura 2. Model lgic de la base de dades segons la seva implementaci en el programa Dezign.

    4.4.1 Aspectes formals del model lgic

    Nomenclatura: Cada entitat rep un nom que comena per les sigles del projecte,

    SIA (Sistema dInformaci dAnivellacions), seguit dun nom que identifica a cada taula

    (entitat), per exemple SIA_ZONA. Pel que fa als atributs sidentifiquen per un codi de

    tres lletres seguit del nom que identifica a cada atribut. Per exemple, a la taula de

    punts el tipus de punt queda identificat pel segent nom PNT_TIPUS. Daquesta

    manera es facilita la interpretaci del model, tant dentitats com datributs, ja que

    lusuari no expert pot identificar rpidament a quina taula pertany cada atribut.

    Codificaci: Cada entitat t una clau primria que consisteix en un codi

    autonumric independentmentment de si ja existeixen atributs, com les sigles

    (ZON_SIGLA, PNT_SIGLA,...), que es puguin considerar nics.

    Sigles: A lannex A es pot trobar una descripci dels criteris que shan seguit a

    lhora de determinar les sigles dels diferents atributs. Per exemple, apuntar que,

    zones i campanyes hereten la nomenclatura que ha estat utilitzada a lIGC. En el cas

    de les zones la sigla ve formada per un codi de tres lletres en relaci amb la poblaci

    o barri a la que correspon. En el cas de Cardona el valor de ZON_SIGLA s CAR o en

    el cas del barri de Rocaus de la poblaci de Sallent la sigla s SRU.

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    12

    4.4.2 Relacions

    A continuaci es justifica el disseny de la base de dades en funci de les relacions

    establertes al model lgic presentat. Tan sols es comentaran les relacions principals

    prescindint de les entitats considerades de menor importncia (SIA_COMARQUES,

    SIA_MUNICIPIS, SIA_CMP_TIPOBS, i SIA_PNT_TIPOBS).

    Es parteix de la taula de zones que cont diverses campanyes i diversos punts (relacions

    1-n). s a dir que els punts sassocien directament a una zona independentment de la

    campanya en la que van ser mesurats. La relaci entre campanyes i punts es fa a travs

    de la taula de mesures. Cada campanya tindr un seguit de mesures que estaran

    associades a un punt, tot i que, en aquest cas, no s necessari que un punt o una

    campanya tinguin mesures (la relaci s 1-n per no mandatory).

    Pel que fa a la entitat de velocitats la relaci s 1-1 perqu cada punt pot tenir noms una

    dada de velocitat associada. Aquest fet planteja el dubte de si s realment necessari

    establir una entitat diferenciada per les velocitats o aquestes es poden incloure com

    atributs dins de la entitat de punts. Es va creure que el model de dades seria ms

    entenedor si es feia una nova entitat amb les dades de velocitat a la vegada que aquest

    fet no suposava cap inconvenient ni complicaci, amb el que es va optar per crear

    aquesta nova entitat.

    A lentitat de punts histrics sinclouen aquells punts danivellacions que han estat

    recalculats per que no volem perdre les seves dades. Per tant cada punt podr tenir

    tants punts histrics com reclculs shagin donat, per aix la relaci 1-n. Tamb inclou

    tots els punts GPS que campanya rere campanya canvien de coordenades.

    4.4.3 Disparadors i procediments

    A lhora de crear el model lgic pot sorgir la necessitat de crea triggers (disparadors) o

    procedures (procediments). Un trigger s una porci de codi PL/SQL que sexecuta quan

    es compleix una condici, habitualment quan sexecuta un insert o un update. El

    procedure es un conjunt de comandes agrupades com una unitat executable que

    semmagatza a dins de la base de dades.

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    13

    4.4.3.1 Creaci de triggers

    En el decurs de la creaci de la base de dades va ser necessari crear triggers per tal

    dautomatitzar els atributs autonumrics. A continuaci sespecifica el procediment i el

    codi implementat per a tal fi:

    1. En el programa Dezign i tal i com mostra la figura 3 es crea una nova seqncia.

    Figura 3. Com crear una nova seqncia en lentorn del programa Dezign.

    2. Una vegada creada cal editar les propietats (figura 4) de la seqncia. Com es

    tracta dun valor autonumric es determina 0 com el valor mnim amb un increment de

    1. Daquesta forma, cada vegada que sexecuti el trigger augmentar el seu valor en

    una unitat.

    Figura 4. Finestra de propietats de la seqncia acabada de crear.

    3. Seguidament sediten les propietats de lentitat on es vol crear el trigger. Es

    selecciona la pestanya de triggers i se li dna el nom desitjat. A continuaci, i

    mitjanant leditor de codi, sescriu el codi PL/SQL corresponent.

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    14

    Figura 5.Creaci del trigger i edici del codi associat.

    4. El codi dels diferents triggers autonumrics implementats s el segent:

    CREATE OR REPLACE TRIGGER SIA_ZON_TR_SEQ

    BEFORE INSERT ON SIA_ZONA

    FOR EACH ROW

    BEGIN

    IF :NEW.ZON_CD IS NULL THEN

    SELECT SIA_ZON_SEQ.NEXTVAL

    INTO :NEW.ZON_CD

    FROM DUAL;

    END IF;

    END;

    /

    El trigger sexecuta cada vegada que es vol introduir un nou valor a la taula, en aquest

    cas SIA_ZONA. Es selecciona el codi de zona i shi insereix un nou valor segons la

    seqncia especificada.

    Aquest tipus de trigger es troba a totes les entitats que contenen camps

    autonumrics, s a dir, totes les entitats a excepci de les que contenen la divisi

    administrativa i les observacions.

    5. La programaci de triggers tamb sha utilitzat per inserir valors a la entitat de

    punts histrics. En aquest cas el codi implementat ha estat el segent:

    CREATE OR REPLACE TRIGGER SIA_PNT_TR_HIST

    BEFORE UPDATE ON SIA_PUNTS

    FOR EACH ROW

    BEGIN

    If :NEW.PNT_SIGLA = :OLD.PNT_SIGLA THEN

    INSERT INTO SIA_PNT_HISTORICS (PNTH_X, PNTH_Y, PNTH_DATA_VALOR,

    PNTH_DATA_INSERCIO,PNT_SIGLA)

    VALUES ( :OLD.PNT_X, :OLD.PNT_Y, :OLD.PNT_DATA_VALOR,

    sysdate,:OLD.PNT_SIGLA);

    END IF;

    END;

    /

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    15

    El trigger sexecuta quan intentem introduir a la taula SIA_PUNTS un punt amb una

    sigla preexistent, en aquest cas la base de dades inserir a la taula

    SIA_PNT_HISTRICS els valors indicats.

    4.4.3.2 Creaci de procediments

    La creaci de procediments ha estat necessria per la inclusi a la base de dades

    darxius .pdf. Com es pot observar al model lgic, la entitat SIA_PUNTS cont un atribut

    BLOB que sha creat per poder introduir a la BBDD els arxius descriptius de cada punt.

    Els camps BLOB permeten la introducci darxius binaris dins de la BBDD amb una

    capacitat mxima de 4Gb.

    En aquest cas el procediment necessari per poder carregar arxius .pdf s un tant ms

    laboris i implica lexecuci de diverses sentncies SQL en Oracle. Bsicament, el procs

    implica la creaci duna carpeta fsica on resideixen els arxius PDF de forma temporal fins

    la seva incorporaci a la base de dades.

    El procediment comprn els segents passos:

    1. Primer sha de crear un directori a la mateixa mquina on es troba el servidor

    dOracle i amb privilegis dusuari (no cal ser administrador) on es guardaran els

    diversos arxius a incorporar a la base de dades. La sentncia s:

    CREATE OR REPLACE DIRECTORY PDF AS 'D:\PDF';

    Daquesta manera lnic que es fa s crear una carpeta fsica al directori D:\

    2. Desprs satorguen privilegis de read a lusuari en qesti amb el segent SQL:

    GRANT READ ON DIRECTORY PDF to SIA WITH GRANT OPTION;

    Daquesta forma lusuari t els permisos suficients per llegir a la carpeta fsica que

    sacaba de crear.

    3. Finalment simplementa el codi del procediment al Dezign. A la carpeta de

    procedures es fa click sobre new i es crea el procediment en qesti, seguidament

    simplementa el segent codi. Daquesta manera el procediment es crea tamb

    automticament quan es genera la base de dades.

    CREATE OR REPLACE PROCEDURE carrega_pdf(

    nomfitxer varchar2,

    sigla varchar2,

    tipus varchar2,

    datavalor date,

    coordx number,

    coordy number,

    obs number,

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    16

    zon number)

    IS

    l_bfile BFILE;

    l_blob BLOB;

    BEGIN

    INSERT INTO

    SIA_PUNTS(PNT_SIGLA,PNT_TIPUS,PNT_PDF,PNT_DATA_VALOR,PNT_X,PNT_Y,PNT_OBS_C

    D,ZON_CD)

    VALUES (sigla,tipus,EMPTY_BLOB(),datavalor, coordx, coordy, obs, zon)

    RETURN PNT_PDF INTO l_blob;

    l_bfile := BFILENAME('PDF', nomfitxer);

    DBMS_LOB.fileopen(l_bfile, Dbms_Lob.File_Readonly);

    DBMS_LOB.loadfromfile(l_blob,l_bfile,DBMS_LOB.getlength(l_bfile));

    DBMS_LOB.fileclose(l_bfile);

    COMMIT;

    EXCEPTION WHEN OTHERS THEN

    ROLLBACK;

    RAISE;

    END;

    /

    En aquest cas es crea un procediment amb una srie de variables. Quan sexecuta el

    codi sinsereix a la taula de punts els valors de totes les variables i posteriorment

    larxiu PDF. Com es veur ms endavant, els valors daquestes variables provenen de

    laplicaci de crrega.

    El resultat final s que a la base de dades sha inserit larxiu desitjat.

    4.4.4 Altres aspectes a destacar

    El lector haur notat la gran quantitat datributs del model lgic que contenen un camp

    data. Per evitar confusions sespecifica a continuaci quin significat tenen:

    CMP_DATA a la entitat SIA_CAMPANYA: s la data ms important de totes ja

    que marca la data exacta quan va ser realitzada una campanya.

    MES_COT_DATA_VALOR a la entitat SIA_MESURES: indica la data quan va ser

    presa una mesura. Totes les mesures duna mateixa campanya tindran aquest valor

    idntic i, a ms, coincidir amb la data de la campanya (latribut CMP_DATA) sempre i

    quan no hi hagi un reclcul. En el cas dhaver-hi un reclcul, tamb les mesures

    pateixen canvis amb el que tindrem per a una mateixa campanya diverses mesures

    per amb una data del valor diferenciada.

    PNT_DATA_VALOR a la entitat SIA_PUNTS: s la data quan es dna dalta el

    punt. En el cas dels punts danivellacions aquesta data s invariable si no es produeix

    un reclcul per en el cas dels punts GPS aquesta data variar anualment.

    VEL_ULTIMA_DATA a la entitat SIA_VELOCITAT: data de lltima mesura vlida

    dun punt i que ha estat utilitzada en el clcul de la velocitat acumulada.

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    17

    PNTH_DATA_VALOR a la entitat SIA_PNT_HISTORICS: data dalta del punt en

    qesti, sempre coincidir amb la data PNT_DATA_VALOR per a un mateix punt.

    PNTH_DATA_INSERCIO a la entitat SIA_PNT_HISTORICS: indica quan ha estat

    introdut el valor a la taula. En el cas dels punts GPS PNTH_DATA_VALOR i

    PNTH_DATA_INSERCIO coincidiran sempre perqu les coordenades varien

    anualment. En el cas de les dades danivellaci topogrfica PNTH_DATA_INSERCIO

    coincidir amb la data en la que sha efectuat el reclcul.

    Finalment, i abans de donar per definitiu el model cal la verificaci del mateix. Aquest

    procs de verificaci va consistir en efectuar consultes a la BBDD per comprovar que

    realment satisf les necessitats de lusuari. ptimament aquest procs sha de portar a

    terme conjuntament amb lusuari final.

    4.5 Implementaci de la Base de Dades

    El procs dimplementaci de la base de dades consisteix en construir fsicament la base

    de dades en el SGBD escollit, aquest cas oracle. Aquest procs dimplementaci cont

    un doble vessant:

    1. En primer terme cal, mitjanant el programa Dezign, crear el codi que

    permeti la implementaci de la base de dades. El gran avantatge daquest

    programari s que aquest pas s senzill i rpid. Tan sols cal prmer sobre la tecla

    F9 o a la barra deines database generate database. El mateix programa crea

    les seqncies SQL que ja es poden executar directament en oracle.

    Pel que fa a les constraints cal evitar que el Dezign les anomeni automticament

    ja que aquest pas provoca que existeixi una duplicitat en algunes delles i aix

    provoca errors a lhora dexecutar el SQL. Indicant al programa, quan es genera el

    SQL, que no assigni de forma automtica un nom als diferents constraints evitem

    aquest problema.

    2. Una vegada generat el SQL ja es pot executar en oracle. En aquest cas es

    fa servir SQL *Plus Worksheet. Simplement es copien les ordres SQL i sexecuten

    a la finestra del programa.

    Remarcar, que a lannex B es troba el codi complert de creaci de la base de dades.

    Digual manera a lannex A es pot trobar un informe complert de la base de dades tal i

    com el genera el mateix programa Dezign.

    Tot i aix cal destacar les principals sentncies SQL generades:

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    18

    Creaci duna taula:

    CREATE TABLE SIA_ZONA (

    ZON_CD NUMBER NOT NULL,

    ZON_SIGLA VARCHAR2( 3) NOT NULL,

    ZON_POBLACIO VARCHAR2(40) NOT NULL,

    ZON_BARRI VARCHAR2(40) NOT NULL,

    ZON_TIPUS VARCHAR2(3) NOT NULL,

    MUN_CD NUMBER(6) NOT NULL,

    CONSTRAINT PK_SIA_ZONA PRIMARY KEY (ZON_CD)

    );

    Creaci de les seqncies:

    CREATE SEQUENCE SIA_ZON_SEQ

    START WITH 0

    INCREMENT BY 1

    MINVALUE 0

    NOMAXVALUE

    nocycle

    noorder;

    Creaci dels constraints:

    ALTER TABLE SIA_ZONA ADD CONSTRAINT SIA_MUNICIPIS_SIA_ZONA

    FOREIGN KEY (MUN_CD) REFERENCES SIA_MUNICIPIS (MUN_CD);

    La resta delements (triggers i procedures) ja han quedat explicats anteriorment.

    4.6 Creaci de vistes

    Una vista s una taula que es genera a partir de les dades retornades per una consulta,

    no ocupa espai (noms el necessari per emmagatzemar la consulta) i sactualitza de

    forma automtica. s una eina til per extreure i visualitzar informaci de la base de

    dades. En el projecte, les vistes shan fet servir per facilitar la consulta de la base de

    dades per part del visualitzador web. En altres paraules, les vistes han perms mostrar

    informaci a travs del visualitzador que daltra forma no hagus estat possible.

    Les vistes creades responen a les segents necessitats:

    1. Visualitzaci de la cota de les ltimes mesures per als diferents punts.

    2. Conjunci en una mateixa taula les coordenades i les mesures de tots els punts i

    totes els campanyes, el que a la prctica permet la consulta de la totalitat de la base

    de dades.

    La creaci duna vista pot ser una tasca complexa ms si, com en el nostre cas, calia

    afegir dades de diverses taules en una mateixa vista. I s que, per a la correcta

    visualitzaci i consulta en el visor calia disposar en una mateixa taula de les dades que es

    volen mostrar (ltimes mesures i velocitat) a ms de les coordenades del punt. Les

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    19

    coordenades ens permeten crear grficament el punt i aix mostrar les dades associades

    a aquest punt.

    Aix doncs per mostrar les dades abans esmentades va ser necessari crear un total de 4

    vistes, les tres primeres de les quals necessries per la visualitzaci en una mateixa taula

    de les ltimes mesures per a cada punt

    1. Vista per extreure la ltima data de la que es disposen mesures per a cada punt:

    CREATE OR REPLACE FORCE VIEW LASTDATAPNT ("PNT_CD", "LASTDATA") AS

    select pnt_cd, max(mes_cot_data_valor) as lastdata from sia_mesures group

    by pnt_cd order by pnt_cd;

    2. Vista per extreure el valor de cada mesura segons la data de la vista

    LASTDATAPNT:

    CREATE OR REPLACE FORCE VIEW LASTMESURES ("MES_CD", "MES_COT_Z",

    "MES_COT_DATA_VALOR", "PNT_CD") AS

    select sia_mesures.mes_cd, sia_mesures.mes_cot_z,

    sia_mesures.mes_cot_data_valor, sia_mesures.pnt_cd

    from sia_mesures where sia_mesures.mes_cd in (select sia_mesures.mes_cd from

    sia_mesures, lastdatapnt

    where sia_mesures.pnt_cd = lastdatapnt.pnt_cd and

    sia_mesures.mes_cot_data_valor = lastdatapnt.lastdata);

    3. Vista final que inclou la data, la mesura i les coordenades de cada punt, el que ha

    de permetre la seva representaci i consulta a travs del visualitzador web.

    CREATE OR REPLACE FORCE VIEW LASTMESURESXY ("MES_CD", "MES_COT_Z",

    "MES_COT_DATA_VALOR", "PNT_X", "PNT_Y", "PNT_SIGLA") AS

    select

    lastmesures."MES_CD",lastmesures."MES_COT_Z",lastmesures."MES_COT_DATA_VALOR",

    sia_punts.pnt_x, sia_punts.pnt_y, sia_punts.pnt_sigla from lastmesures,

    sia_punts

    where lastmesures.pnt_cd = sia_punts.pnt_cd;

    4. Finalment la vista LASTMESURESXY t el segent aspecte:

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    20

    Figura 6. Vista LASTMESURESXY amb les dades associades.

    Per ltim per poder visualitzar les mesures de cada punt, juntament amb la zona i la

    campanya es crea la vista MESURES_TOTAL amb el segent SQL:

    CREATE OR REPLACE FORCE VIEW MESURES_TOTAL ("MES_CD", "MES_COT_Z",

    "MES_COT_DATA_VALOR","CMP_SIGLA","PNT_SIGLA","PNT_X", "PNT_Y","ZON_SIGLA") AS

    select sia_mesures.mes_cd, sia_mesures.mes_cot_z,

    sia_mesures.mes_cot_data_valor, sia_campanya.cmp_sigla, sia_punts.pnt_sigla,

    sia_punts.pnt_x, sia_punts.pnt_y, sia_zona.zon_sigla

    from sia_mesures, sia_campanya, sia_punts, sia_zona where

    sia_mesures.cmp_cd=sia_campanya.cmp_cd

    and sia_mesures.pnt_cd=sia_punts.pnt_cd and sia_campanya.zon_cd=sia_zona.zon_cd

    order by mes_cd;

    4.7 Crrega inicial de dades

    La crrega inicial de dades a la base de dades t per finalitat omplir les diferents taules

    amb les dades reals.

    No ha estat una tasca fcil degut al gran nombre de dades i lescassa sistematitzaci que

    aquestes presentaven. Degut a aix es decideix que la crrega inicial de dades es far

    amb sentncies SQL generades en excel a partir de les dades originals. s a dir, que es

    crea un excel amb totes les dades a emplenar i mitjanant la concatenaci de dades i text

    es creen les diverses sentncies SQL que desprs sexecutaran al SQL *plus.

    A la taula 2 es presenta una fila de la taula SIA_ZONA extreta de lexcel que sutilitza per

    la crrega inicial de dades.

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    21

    ZON_CD ZON_SIGLA ZON_POBLACIO ZON_BARRI ZON_TIPUS MUN_CD

    0 GPC Sallent Cornet-Granjes-Puigb TOP 81918

    1 SER Sallent Estaci de Rampinya TOP 81918

    2 SRU Sallent Rocaus TOP 81918

    Taula 2. Part de la taula de SIA_ZONA tal i com es tracta en lexcel de crrega inicial de dades.

    A partir de les dades presentades a la taula 2 es crea una frmula que concatena totes

    les dades creant al mateix temps una seqncia INSERT en llenguatge SQL. EL resultat

    final de la concatenaci s el segent:

    INSERT INTO SIA_ZONA (ZON_SIGLA,ZON_POBLACIO,ZON_BARRI, ZON_TIPUS,MUN_CD)

    VALUES ('GPC','Sallent','Cornet-Granjes-Puigbspan>,'TOP',81918);

    Una vegada aquest procs sefectua per al conjunt de les dades, sempre tenint en comte

    les regles dintegritat, sobt un conjunt de sentncies SQL que executades al SQL *plus

    permeten la crrega de dades a la BBDD.

    Alguns dels aspectes ms importants a considerar en aquest sentit sn els segents:

    La importncia de lordre dinserci de les dades. Per evitar errors en la inserci

    de les dades degut a les relacions establertes entre les diverses entitats cal seguir

    lordre que sespecifica a continuaci:

    Figura 7. Ordre dinserci de les dades segons el model relacional establert. Les taules de velocitat i histrics

    no tenen una crrega inicial de dades, per aix no han estat considerades.

    A lhora dentrar dades amb apstrofs cal seguir el segent esquema:

    INSERT INTO SIA_COMARQUES (COM_CD,COM_NOM) VALUES (27,'Pla de L''Estany');

    En cas contrari el programa interpreta que lapstrof es correspon amb el final dels

    carcters alfanumrics i aix indueix a un error. En el segent codi es pot observar

    com el llenguatge SQL no reconeix lapstrof:

    INSERT INTO SIA_COMARQUES (COM_CD,COM_NOM) VALUES (27,'Pla de L'Estany');

  • Sistema dInformaci dAnivellacions

    Disseny i implementaci de la BBDD

    22

    La taula de velocitats. La taula de velocitat t una particularitat i s que es

    calculen de forma automtica quan es produeix una crrega de dades a travs de

    laplicaci de crrega (tal i com es veur ms endavant). Per aquest motiu el primer

    clcul sha de fer de forma manual. Es segueix el mateix procediment que amb la

    crrega inicial de dades, es crea un arxiu excel i de forma manual es calculen les

    velocitats. Posteriorment aquestes dades sintrodueixen a la base de dades a travs

    de sentncies SQL generades directament amb lexcel.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    23

    5 Aplicaci de crrega de dades

    5.1 Requeriments i objectius

    Els requeriments per part de lempresa, i per tant, els objectius a assolir, sn els

    segents:

    Requeriments funcionals:

    El programa ha de permetre la inserci de dades tant danivellaci topogrfica

    com GPS.

    Conjuntament amb la crrega de dades alfanumrica cal considerar la possibilitat

    de carregar arxius en format *.PDF a la entitat SIA_PUNTS.

    El programa a desenvolupar ha de ser intutiu. Un usuari no experimentat ha de

    poder fer servir el programa sense grans dificultats.

    La inserci de dades ha de ser segura, no qualsevol usuari ha de poder manipular

    les dades ni esborrar registres.

    Requeriments no funcionals:

    La inserci de les dades ha de ser simple, rpida, i amb el mnim nombre de

    canvis respecte les dades que rep lIGC.

    En aquest cas no hi ha cap requeriment tecnolgic ni de software de manera que

    lestudiant pot escollir el programari i llenguatge a utilitzar.

    5.2 Aproximaci tecnolgica

    Tal i com sespecifica a lltim apartat dels requeriments en aquesta etapa del projecte el

    programari a utilitzar no est limitat per part de lempresa. Finalment sopta per fer servir

    lentorn de desenvolupament ofert per Visual Studio 2008 i el llenguatge de programaci

    .NET. Diverses sn les raons que porten a aquesta elecci:

    a) El software VS2008 s fcilment accessible en una versi de prova de 3 mesos a

    travs de la pgina web de microsoft (http://www.microsoft.com/downloads/).

    b) Lestudiant es troba familiaritzat amb lentorn i llenguatge de programaci visual

    basic amb el que ladaptaci a lentorn .NET s ms rpida, augmentant aix la

    productivitat.

    c) Els tcnics del IGC es troben familiaritzats amb la programaci en .NET amb el

    que es facilita en un futur les millores i adaptacions que puguin sorgir.

    http://www.microsoft.com/downloads/

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    24

    d) Existeix abundant documentaci sobre oracle i .NET el que facilitar el

    desenvolupament del programa.

    5.3 Casos ds

    A la pgina segent es mostra el diagrama (figura 8) de casos ds i en els apartats

    segents lexplicaci de cadascun dells.

    Al diagrama sha remarcat el cam ms curt i ms habitual per la crrega de dades si es

    dna el cas que la zona, tots els punts mesurats i la campanya ja estan donats dalta a la

    base de dades.

  • 25

    Figura 8. Diagrama de casos ds de laplicaci de crrega de dades. Remarcat es pot veure litinerari a seguir si es dona el cas que la zona, tots els punts mesurats i la campanya ja estan donats dalta a la base de dades.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    26

    Cas d's 1. Inici de laplicaci

    Resum Lusuari obre laplicaci de crrega de dades

    Actors Usuari

    Precondicions Cal tenir installada laplicaci i el Oracle client amb el tsnnames.ora

    correctament configurat

    Flux normal Lusuari selecciona laplicaci del men inici.

    Flux alternatiu -

    Excepcions -

    Cas d's 1a. Connexi a la base de dades

    Resum Lusuari es connecta a la base de dades

    Actors Usuari

    Precondicions Ladministrador doracle ha de haver donat dalta lusuari en qesti

    Flux normal

    1. Lusuari escriu lusuari i la contrasenya per tal de connnectar-se a la base de dades.

    2. Sha de prmer sobre Connectar per tal de validar els parmetres introduts.

    3. Si els parmetres de connexi sn correctes apareix una nova finestra

    Flux alternatiu

    1. Lusuari vol sortir de laplicaci. Pot fer click sobre la creu ara i en qualsevol moment de laplicaci. En tal cas apareix una finestra per confirmar que es vol sortir de laplicaci.

    2. Per sortir de laplicaci tamb pot fer click sobre Sortir. En aquest cas la sortida s immediata.

    3. Es pot fer click sobre el smbol dajuda per tal daclarir les accions que ha de dur a terme.

    Excepcions En cas de no poder connectar a la base de dades apareix un missatge

    explicatiu amb lerror i torna a sortir la mateixa finestra.

    Cas d's 1b. Tipus de dades

    Resum Lusuari escull el tipus dacci a desenvolupar.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    27

    Actors Usuari

    Precondicions La connexi a la BBDD ha estat satifactria.

    Flux normal

    Lusuari pot es collir entre diverses opcions:

    1. Carregar dades danivellacions topogrfiques. 2. Carregar dades GPS. 3. Editar taules i exportar resultats

    Flux alternatiu Es pot tancar laplicaci o desplegar el men dajuda.

    Excepcions

    Cas d's 1.1 Anivellaci topogrfica. Zones

    Resum Zones danivellaci topogrfica, seleccionar o crea zona.

    Actors Usuari

    Precondicions Cal haver introdut zones per seleccionar-ne alguna.

    Flux normal

    Lusuari pot es collir entre diverses opcions:

    1. Seleccionar una zona i veure campanyes associades. Fer click sobre Segent >> Campanyes.

    2. Es poden veure els punts associats a una zona i crear-ne de nous. Fer click sobre el bot Veure-Crear Punts.

    3. Donar dalta una nova zona. Fer click sobre Alta de nova zona.

    Flux alternatiu Lusuari vol anar enrere. Bot Anterior

    Excepcions

    Cas d's 1.1.1 Alta de nova zona (anivellaci topogrfica)

    Resum Crea una nova zona i la guarda a la BBDD

    Actors Usuari

    Precondicions Tots els camps han destar omplerts per guardar una dada.

    Flux normal Lusuari omple els diferents camps amb el format adequat (segons lajuda

    contextual) i guarda els canvis a al base de dades (bot Guardar).

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    28

    Flux alternatiu Lusuari vol anar enrere sense guardar les dades. Bot Anterior

    Excepcions Si falten dades o no sn adequades sorgir una advertncia amb els errors

    corresponents.

    Cas d's 1.1.2 Veure punts (anivellaci topogrfica)

    Resum Es visualitzen els punts inserits a la BBDD.

    Actors Usuari

    Precondicions Per visualitzar punts cal que hi hagi algun registre a la BBDD.

    Flux normal

    Lusuari pot es collir entre diverses opcions:

    1. Si lusuari comprova que les dades que vol introduir ja tenen el seu corresponent punt a la BBDD fa click sobre Anterior i pot continuar per introduir les mesures.

    2. Si cal introduir nous punts fa click sobre Alta de nous punts.

    Flux alternatiu

    Excepcions

    Cas d's 1.1.2.1. Alta de nous punts (anivellaci topogrfica)

    Resum Formulari per introduir nous punts.

    Actors Usuari

    Precondicions Tots els camps han destar omplerts per guardar una dada.

    Flux normal Lusuari omple els diferents camps amb el format adequat (segons lajuda

    contextual) i guarda els canvis a al base de dades (bot Guardar).

    Flux alternatiu

    Existeixen dues opcions:

    1. Lusuari vol anar enrere sense guardar les dades. Bot Anterior. 2. Cal donar dalta una nova observaci. Lusuari fa click sobre alta

    de noves observacions

    Excepcions Si falten dades o no sn adequades sorgir una advertncia amb els errors

    corresponents.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    29

    Cas d's 1.1.2.1.1 Alta dobservacions sobre els punts (anivellaci topogrfica)

    Resum Es poden guardar noves observacions.

    Actors Usuari

    Precondicions

    Flux normal

    Lusuari introdueix un nou codi i una nova descripci i es guarden els

    canvis. Una vegada entrada les noves observacions es pot tornar enrere

    per tal de donar dalta els nous punts.

    Flux alternatiu Mitjanant el bot dajuda sorgeix un men dajuda contextual.

    En qualsevol moment lusuari pot tornar enrere sense guardar els canvis,

    Excepcions

    Cas d's 1.1.3 Campanyes (anivellaci topogrfica)

    Resum Campanyes duna zona seleccionada.

    Actors Usuari

    Precondicions Cal haver introdut la zona i els punts sobre els que volem introduir

    mesures.

    Flux normal

    Lusuari pot es collir entre diverses opcions:

    1. Donar dalta una nova campanya. Bot Alta de nova Campanya. 2. Seleccionar una campanya i fer click sobre Segent >> Introduir

    Mesures per tal dintroduir les mesures.

    Flux alternatiu Lusuari pot anar enrere. Bot Anterior

    Excepcions

    Cas d's 1.1.3.1. Alta de noves campanyes (anivellaci topogrfica)

    Resum Formulari per introduir noves campanyes.

    Actors Usuari

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    30

    Precondicions Tots els camps han destar omplerts per guardar una dada.

    Flux normal Lusuari omple els diferents camps amb el format adequat (segons lajuda

    contextual) i guarda els canvis a al base de dades (bot Guardar).

    Flux alternatiu

    Existeixen dues opcions:

    1. Lusuari vol anar enrere sense guardar les dades. Bot Anterior. 2. Cal donar dalta una nova observaci. Lusuari fa click sobre alta

    de noves observacions

    Excepcions Si falten dades o no sn adequades sorgir una advertncia amb els errors

    corresponents.

    Cas d's 1.1.3.1.1 Alta dobservacions sobre les campanyes (anivellaci

    topogrfica)

    Resum Es poden guardar noves observacions.

    Actors Usuari

    Precondicions

    Flux normal

    Lusuari introdueix un nou codi i una nova descripci i es guarden els

    canvis. Una vegada entrada les noves observacions es pot tornar enrere

    per tal de donar dalta els nous punts.

    Flux alternatiu Mitjanant el bot dajuda sorgeix un men dajuda contextual.

    En qualsevol moment lusuari pot tornar enrere sense guardar els canvis.

    Excepcions

    Cas d's 1.1.3.2 Introducci de noves mesures

    Resum Lusuari selecciona una arxiu amb les dades a introduir.

    Actors Usuari

    Precondicions Larxiu dintroducci de mesures ha destar en el format adequat.

    Flux normal 1. Lusuari selecciona larxiu amb les mesures a introduir. 2. Es comprova que totes les dades que apareixen en pantalla sn

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    31

    correctes: zona, campanya, data,... 3. Es fa cick sobre Actualitza la BBDD. 4. Apareixen missatges dadvertncia sobre la crrega de dades

    massiva a la BBDD. 5. La carrega de dades sha efectuat correctament, apareix un

    missatge de verificaci. 6. Apareix una finestra final de finalitzaci del programa

    Flux alternatiu Lusuari pot anar enrere. Bot Anterior

    Excepcions

    Les dades no es troben en el format correcte o larxiu ja es troba obert per

    una altra aplicaci o usuari. En ambds casos sorgeixen advertncies al

    respecte.

    Si no es poden calcular la velocitat per tots els valors introduts tamb

    sinforma a lusuari.

    Cas d's 1.2 GPS. Zones

    Resum Zones de GPS, seleccionar o crea zona.

    Actors Usuari

    Precondicions Cal haver introdut zones per seleccionar-ne alguna.

    Flux normal

    Lusuari pot es collir entre diverses opcions:

    1. Seleccionar una zona i veure campanyes associades. Fer click sobre Segent >> Campanyes.

    2. Es poden veure els punts associats a una zona i crear-ne de nous. Fer click sobre el bot Veure-Crear Punts.

    3. Donar dalta una nova zona. Fer click sobre Alta de nova zona.

    Flux alternatiu Lusuari vol anar enrere. Bot Anterior

    Excepcions

    Cas d's 1.2.1 Alta de nova zona (GPS)

    Resum Crea una nova zona i la guarda a la BBDD

    Actors Usuari

    Precondicions Tots els camps han destar omplerts per guardar una dada.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    32

    Flux normal Lusuari omple els diferents camps amb el format adequat (segons lajuda

    contextual) i guarda els canvis a al base de dades (bot Guardar).

    Flux alternatiu Lusuari vol anar enrere sense guardar les dades. Bot Anterior

    Excepcions Si falten dades o no sn adequades sorgir una advertncia amb els errors

    corresponents.

    Cas d's 1.2.2 Veure punts (GPS)

    Resum Es visualitzen els punts inserits a la BBDD.

    Actors Usuari

    Precondicions Per visualitzar punts cal que hi hagi algun registre a la BBDD.

    Flux normal

    Lusuari pot es collir entre diverses opcions:

    1. Si lusuari comprova que les dades que vol introduir ja tenen el seu corresponent punt a la BBDD fa click sobre Anterior i pot continuar per introduir les mesures.

    2. Si cal introduir nous punts fa click sobre Alta de nous punts.

    Flux alternatiu

    Excepcions

    Cas d's 1.2.2.1. Alta de nous punts (GPS)

    Resum Formulari per introduir nous punts.

    Actors Usuari

    Precondicions Tots els camps han destar omplerts per guardar una dada.

    Flux normal Lusuari omple els diferents camps amb el format adequat (segons lajuda

    contextual) i guarda els canvis a al base de dades (bot Guardar).

    Flux alternatiu

    Existeixen dues opcions:

    1. Lusuari vol anar enrere sense guardar les dades. Bot Anterior. 2. Cal donar dalta una nova observaci. Lusuari fa click sobre alta

    de noves observacions

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    33

    Excepcions Si falten dades o no sn adequades sorgir una advertncia amb els errors

    corresponents.

    Cas d's 1.2.2.1.1 Alta dobservacions sobre els punts (GPS)

    Resum Es poden guardar noves observacions.

    Actors Usuari

    Precondicions

    Flux normal

    Lusuari introdueix un nou codi i una nova descripci i es guarden els

    canvis. Una vegada entrada les noves observacions es pot tornar enrere

    per tal de donar dalta els nous punts.

    Flux alternatiu Mitjanant el bot dajuda sorgeix un men dajuda contextual.

    En qualsevol moment lusuari pot tornar enrere sense guardar els canvis,

    Excepcions

    Cas d's 1.2.3 Campanyes (GPS)

    Resum Campanyes duna zona seleccionada.

    Actors Usuari

    Precondicions Cal haver introdut la zona i els punts sobre els que volem introduir

    mesures.

    Flux normal

    Lusuari pot es collir entre diverses opcions:

    1. Donar dalta una nova campanya. Bot Alta de nova Campanya. 2. Seleccionar una campanya i fer click sobre Segent >> Introduir

    Mesures per tal dintroduir les mesures.

    Flux alternatiu Lusuari pot anar enrere. Bot Anterior

    Excepcions

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    34

    Cas d's 1.2.3.1. Alta de noves campanyes (anivellaci topogrfica)

    Resum Formulari per introduir noves campanyes.

    Actors Usuari

    Precondicions Tots els camps han destar omplerts per guardar una dada.

    Flux normal Lusuari omple els diferents camps amb el format adequat (segons lajuda

    contextual) i guarda els canvis a al base de dades (bot Guardar).

    Flux alternatiu

    Existeixen dues opcions:

    1. Lusuari vol anar enrere sense guardar les dades. Bot Anterior. 2. Cal donar dalta una nova observaci. Lusuari fa click sobre alta

    de noves observacions

    Excepcions Si falten dades o no sn adequades sorgir una advertncia amb els errors

    corresponents.

    Cas d's 1.2.3.1.1 Alta dobservacions sobre les campanyes (anivellaci

    topogrfica)

    Resum Es poden guardar noves observacions.

    Actors Usuari

    Precondicions

    Flux normal

    Lusuari introdueix un nou codi i una nova descripci i es guarden els

    canvis. Una vegada entrada les noves observacions es pot tornar enrere

    per tal de donar dalta els nous punts.

    Flux alternatiu Mitjanant el bot dajuda sorgeix un men dajuda contextual.

    En qualsevol moment lusuari pot tornar enrere sense guardar els canvis.

    Excepcions

    Cas d's 1.2.3.2 Introducci de noves mesures

    Resum Lusuari selecciona una arxiu amb les dades a introduir.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    35

    Actors Usuari

    Precondicions Larxiu dintroducci de mesures ha destar en el format adequat.

    Flux normal

    1. Lusuari selecciona larxiu amb les mesures a introduir. 2. Es comprova que totes les dades que apareixen en pantalla sn

    correctes: zona, campanya, data,... 3. Es fa cick sobre Actualitza la BBDD. 4. Apareixen missatges dadvertncia sobre la crrega de dades

    massiva a la BBDD. 5. La carrega de dades sha efectuat correctament, apareix un

    missatge de verificaci. 6. Apareix una finestra final de finalitzaci del programa

    Flux alternatiu Lusuari pot anar enrere. Bot Anterior

    Excepcions

    Les dades no es troben en el format correcte o larxiu ja es troba obert per

    una altra aplicaci o usuari. En ambds casos sorgeixen advertncies al

    respecte.

    Si no es poden calcular la velocitat per tots els valors introduts tamb

    sinforma a lusuari.

    Cas d's 1.3 Editar-exportar taules.

    Resum Lusuari vol editar-exportar les dades de la BBDD

    Actors Usuari

    Precondicions Cal tenir privilegis dadministrador de la BBDD. Lusuari a escollit lopci

    deditar taules.

    Flux normal

    1. Lusuari escriu lusuari i la contrasenya per tal de connnectar-se a la base de dades.

    2. Sha de fer click sobre Connectar per tal de validar els parmetres introduts.

    3. Si els parmetres de connexi sn correctes apareix una nova finestra

    Flux alternatiu

    1. Lusuari vol sortir de laplicaci. Pot fer click sobre la creu ara i en qualsevol moment de laplicaci. En tal cas apareix una finestra que es vol sortir de laplicaci.

    2. Per sortir de laplicaci tamb pot fer click sobre Sortir. En aquest cas la sortida s immediata.

    3. Es pot fer click sobre el smbol dajuda per tal daclarir les accions que ha de fer.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    36

    Excepcions En cas de no poder connectar a la base de dades apareix un missatge

    explicatiu amb lerror i torna a sortir la mateixa finestra.

    Cas d's 1.3.1 Selecci de taula a editar

    Resum Permet escollir a lusuari la taula per editar-exportar.

    Actors Usuari

    Precondicions

    Flux normal 1. Lusuari selecciona la taula que vol editar-exportar 2. Fa click Segent

    Flux alternatiu

    Excepcions

    Cas d's 1.3.1.1 Edici de taules

    Resum Permet a lusuari editar registres i exportar els atributs de la taula.

    Actors Usuari

    Precondicions

    Flux normal 1. Lusuari edita els registres que desitgi 2. Per guardar els canvis, Guardar. 3. Tamb es pot exportar els registres duna taula a un arxiu *.CSV.

    Flux alternatiu Lusuari pot anar enrere per seleccionar una nova taula. Bot Anterior

    Excepcions

    Cas d's 1.4 Finalitzaci del programa

    Resum Lusuari ja ha introdut les dades i vol finalitzar o continuar.

    Actors Usuari

    Precondicions La inserci de dades ha estat finalitzada correctament.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    37

    Flux normal

    Lusuari t dos opcions:

    1. Tancar el programa: Finalitzar el programa 2. Comenar de nou i introduir noves zones, punts, campmanyes i

    mesures.

    Flux alternatiu

    Excepcions

    5.4 Programaci de laplicaci de crrega de dades

    En el present apartat sexplicar el procs que sha seguit per la creaci de laplicaci de

    crrega de dades. Es tracta dun apartat tcnic ms centrat en com simplementen les

    diverses funcionalitats de laplicaci i, per tant, no est dirigit als usuaris. A tal fi es pot

    trobar un manual dusuari al final del document (Annex C)

    Lexplicaci sestructura en diferents apartats segons lusuari sendinsa en el programa.

    Per tal de facilitar la comprensi a ms de les explicacions i el codi es mostra la visi que

    t lusuari, s a dir les pantalles visualitzades per lusuari.

    5.4.1 Connexi a la Base de dades

    En iniciar-se laplicaci lusuari ha dintroduir les dades referents a la connexi a la base

    de dades, lusuari i la contrasenya, tal i com es pot veure a la figura 8.

    Figura 8. Pantalla inical del programa i connexi a la base de dades.

    Una vegada lusuari introdueix lusuari i la contrasenya i fa clic sobre el bot connectar

    laplicaci intenta connectar-se a la base de dades a travs de la llibreria

    Oracle.DataAccess.Client.

    El codi de connexi s el segent:

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    38

    Private Sub cmd_connect_Click(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles cmd_connect.Click

    '***************ENS CONNECTEM A LA BBDD**************

    dataSource = "esquema_de_la_bbdd"

    usr = txt_user.Text

    pwd = txt_pwd.Text

    Dim ora_db As String = "Data Source=" & dataSource & " ;User Id=" & usr &

    " ;Password=" & pwd & ";"

    'establim la connexi a la base de dades

    Dim conn As New OracleConnection(ora_db)

    conn.ConnectionString = ora_db

    'obrim la connexi per tenint en comte els posibles errors que es puguin

    donar

    Try

    conn.Open()

    'Obrim el segent formulari

    frm_tipus.Show()

    'tanquem el formulari d'accs a la BBDD

    Me.Hide()

    'treballem amb els possibles errors i li donem unmissatge entenedor a

    l'usuari

    Catch ex As OracleException ' noms amb els errors d'oracle

    Select Case ex.Number

    Case 1

    MsgBox("Error a l'introduir dades duplicades.")

    txt_user.Text = ""

    txt_pwd.Text = ""

    Case 12545

    MsgBox("Error de connexi a la base de dades")

    txt_user.Text = ""

    txt_pwd.Text = ""

    Case Else

    MsgBox("Database error: " + ex.Message.ToString())

    txt_user.Text = ""

    txt_pwd.Text = ""

    End Select

    End Try

    End Sub

    En el codi mostrat primer sassigna a les variables usr i pwd el text introdut per lusuari

    als textbox corresponents. Aquestes variables shan declarat de forma pblica a nivell de

    tota la soluci amb el que les podem fer servir en diversos formularis. Seguidament es

    crea una cadena de text, ora_db, amb tots els parmetres de la connexi. Aquests

    parmetres sn els que la classe OracleConnection far servir per connectar-se a la

    BBDD.

    Es pot observar com a ms de connectar-nos a la base de dades hi ha un control derrors

    per tal dinformar a lusuari, donat el cas, de lerror que es produeix durant la connexi.

    Durant lexecuci del programa lescritura que lusuari introdueixi al textbox de la

    contrasenya queda protegida i no s es visualitza el carcter * per raons de seguretat.

    Aix saconsegueix establint la propietat PassswordChar = * del textbox.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    39

    Una de les caracterstiques comuns a tots els formularis s la presncia de logo de lIGC.

    En aquest cas cal establir la propietat logo al formulari corresponent. Digual forma sha

    establert un Tab index adequat entre tots els controls dels diversos formularis per facilitar

    a lusuari la interacci amb laplicaci.

    Tamb cal remarcar que el codi font de laplicaci cont mltiples comentaris per facilitar

    al programador la comprensi.

    El segent pas s seleccionar el tipus dacci que es vol desenvolupar (figura 10). En

    aquest formulari lusuari escollir un tipus de dades, GPS o anivellaci, i aquesta

    informaci queda emmagatzemada a la variable tipus.

    Figura 10. Formulari de selecci del tipus dacci a desenvolupar per part de lusuari.

    5.4.2 Visualitzaci de dades de la base de dades.

    En molts dels formularis de laplicaci es presenta un datagrid amb informaci de la base

    de dades: zones, campanyes, punts,...com s el cas de les figures 11 i 12.

    Figura 11. Formulari que mostra totes les zones

    dun tipus concret de dades (anivellacions o gps)

    Figura 12. Formulari que mostra tots els punts

    pertanyents a una zona.

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    40

    Per tal de mostrar en un datagrid la informaci duna taula de la base de dades cal

    implementar el segent codi (sha obviat el codi de connexi a la bbdd '.........):

    Public Class frm_zones_a

    'declarem els objectes necessaris per omplir el datagrid

    Dim adapter As OracleDataAdapter

    Dim builder As OracleCommandBuilder

    Dim dataset As DataSet

    'guardem en una variable el codi de zon seleccionat per l'usuari al data grid

    Private Sub frm_zones_a_Load(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles MyBase.Load

    '***************ENS CONNECTEM A LA BBDD**************

    '.........

    'editem la consulta amb el que volem omplir la taula

    's'avalua si l'usuari ha escollit TOPO o GPS

    If tipus = 0 Then 'si l'usuari ha escollit TOP

    Dim sql As String = "select ZON.ZON_CD AS CODI, ZON.ZON_SIGLA AS

    SIGLA, ZON.ZON_POBLACIO AS POBLACIO," & _

    "ZON.ZON_BARRI AS BARRI, ZON.ZON_TIPUS " & _

    "AS TIPUS FROM SIA_ZONA ZON WHERE ZON_TIPUS='TOP' OR ZON_TIPUS='AMB'"

    Dim cmd As New OracleCommand(sql, conn)

    cmd.CommandType = CommandType.Text

    'declarem els objectes necessaris per omplir el datagrid

    'fet a partir de 2 day + .NET developers d'oracle

    adapter = New OracleDataAdapter(cmd)

    builder = New OracleCommandBuilder(adapter)

    dataset = New DataSet

    adapter.Fill(dataset)

    's'omple el datagrid amb les dades de la BBDD

    grd_zona.DataSource = dataset.Tables(0)

    'per tenir el datagrid ordenat per la primera columna

    grd_zona.Sort(grd_zona.Columns(0),

    System.ComponentModel.ListSortDirection.Ascending)

    Else 'si l'usuari has escollit GPS

    Dim sql As String = "select ZON.ZON_CD AS CODI, ZON.ZON_SIGLA AS

    SIGLA, ZON.ZON_POBLACIO AS POBLACIO," & _

    "ZON.ZON_BARRI AS BARRI, ZON.ZON_TIPUS " & _

    "AS TIPUS FROM SIA_ZONA ZON WHERE ZON_TIPUS='GPS' OR

    ZON_TIPUS='AMB'"

    Dim cmd As New OracleCommand(sql, conn)

    cmd.CommandType = CommandType.Text

    'declarem els objectes necessaris per omplir el datagrid

    adapter = New OracleDataAdapter(cmd)

    builder = New OracleCommandBuilder(adapter)

    dataset = New DataSet

    adapter.Fill(dataset)

    's'omple el datagrid amb les dades de la BBDD

    grd_zona.DataSource = dataset.Tables(0)

    'per tenir el datagrid ordenat per la primera columna

    grd_zona.Sort(grd_zona.Columns(0),

    System.ComponentModel.ListSortDirection.Ascending)

    End If

    End Sub

    Com es pot observar al codi, una vegada connectats a la base de dades savalua, amb

    una sentncia del tipus If...then...else, si lusuari ha escollit dades de tipus anivellaci

    topogrfica, tipus=0, o GPS, tipus=1. Segons sigui el cas creem una cadena de text amb

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    41

    una consulta SQL o una altra. Aquesta dicotomia s necessria perqu el mateix

    formulari es fa servir per als dos tipus de dades. Si sanalitza ms en profunditat la

    consulta SQL sobserva com cada camp t un lies, per tal de facilitar la lectura a lusuari.

    Seguidament es realitza la consulta a la base de dades. Primer es crea un

    Oraclecommand amb el SQL i la connexi a la BBDD. Posteriorment mitjanant el

    OracleDataAdapter, i OracleCommandBuilder somple un dataset amb les dades de la

    consulta. Finalment, es mostren les dades de la consulta al datagrid establint com a

    DataSource el dataset que sacaba domplir. Per millorar la visualitzaci de les dades

    sordena el datagrid amb les dades de la primera columna a travs de la classe sort.

    Exceptuant els datagrids que permeten la introducci i inserci de dades a la BBDD als

    dems datagrids shan deshabilitat les opcions dafegir o eliminar columnes i tan sols es

    permet la lectura de dades. Les propietats a tal fi sn: ReadOnly, AllowUserToAddRows,

    AllowUserToDeleteRows.

    Un altre aspecte com a la majoria dels formularis s lexistncia dajuda contextual: els

    Tooltips. Els tooltips permeten informar a lusuari sobre lacci dun bot o del format

    dentrada a les dades. Per afegir un tooltip cal afegir-lo al formulari a travs del toolbox

    de lentorn de VS2008. Una vegada al formulari cal editar-lo tal i com es mostra:

    ToolTip1.SetToolTip(Me.grd_zona, "Zones donades d'alta a la Base de dades")

    ToolTip1.InitialDelay = 100

    ToolTip1.ReshowDelay = 25

    La classe SetToolTip permet associar a un element del formulari en concret un text a

    especificar. Al codi dexemple es pot veure com sassocia al datagrid de les zones un text

    concret. Les propietats restants mostrades indiquen el temps inicial que triga en mostrar-

    se el text, InitialDelay, i el temps de reapariaci del mateix: ReshowDelay.

    5.4.3 Omplir un combobox amb registres de la BBDD.

    En molts casos cal omplir un combobox amb els registres de la BBDD per donar lopci a

    lusuari descollir els diferents registres aconseguint daquesta manera un doble objectiu:

    per una banda es facilita a lusuari la feina domplir un nou registre (no ha descriure res,

    noms seleccionar) i per una altra seviten errors tant en el format de les dades a introduir

    com de tipografia. En aquest sentit el cas ms paradigmtic s lelecci del municipi quan

    es dona dalta una nova zona. Per tant es mostra a continuaci quin s el codi necessari

    per omplir un combobox amb dades provinents duna BBDD:

    Private Sub frm_alta_campanya_Load(ByVal sender As System.Object, ByVal e

    As System.EventArgs) Handles MyBase.Load

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    42

    '***************ENS CONNECTEM A LA BBDD**************

    '

    'en el sql seleccionem el nom de les diferents observacions Dim sql As String = "select distinct cmp_obs_descripcio from

    sia_cmp_tipobs"

    Dim cmd As New OracleCommand(sql, conn)

    cmd.CommandType = CommandType.Text

    'escribim el valor de la columna al combo Dim dr As OracleDataReader = cmd.ExecuteReader()

    dr.Read()

    'el tipus de dada s un string amb el que s'ha d'especificar cbo_obs.Items.Add(dr.GetString(0).ToString)

    'es fa un bucle per omplr totes les files possibles While (dr.Read())

    cbo_obs.Items.Add(dr.GetString(0).ToString)

    End While

    '

    End Sub

    El combobox somple noms carregar-se el formulari. En primer terme cal concertar-se a

    la BBDD i fer una consulta SQL de les dades que es volen introduir al combo box. En

    aquest cas es guarda en el datareader les dades de la consulta per desprs afegir-les

    una a una mitjanant un bucle.

    5.4.4 Alta de nous registres a la BBDD.

    La crrega de dades implica, la major part de les vegades, tan sols la introducci de

    noves mesures. Aix implica que les zones, els punts i les observacions sn dades que,

    habitualment, no cal modificar. s per aix que lentrada de dades daquests registres es

    realitza a travs de formularis individualitzats en el cas de noves zones o noves

    campanyes. En el cas de les observacions, ja siguin de punts o de campanyes, donada la

    simplicitat de les taules i la informaci a introduir sha optat per editar la taula de forma

    directa. A lapartat posterior sespecificar el procediment per donar dalta nous punts que

    s diferent degut a la necessitat de carregar arxius a la BBDD.

    Hi ha doncs, dos mtodes per donar dalta nous registres: mitjanant formularis o amb

    ledici directa de la taula (figures 13 i 14).

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    43

    Figura 13. Alta de nous registres mitjanant formulari. Exemple dalta de noves campanyes.

    Figura 14. Alta de nous registres mitjanant edici directa de la taula. Exemple dalta dobservacions de

    campanya.

    Per donar dalta un nou registre mitjanant un formulari cal implementar el segent codi:

    Private Sub cmd_save_Click(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles cmd_save.Click

    If txt_sigla.Text "" And txt_data.Text "" And cbo_obs.SelectedItem ""

    And cbo_recalcul.SelectedItem "" Then

    Dim missatge As String

    missatge = MsgBox("Esteu a punt de modificar la BBDD original. Segur que voleu

    guardar els canvis?", MsgBoxStyle.YesNo, "Sistema d'informaci d'anivellacions")

    'si l'usuari escull s s'actualitza tota la taula

    If missatge = vbYes Then

    '***************ENS CONNECTEM A LA BBDD**************

    '......

    Dim CMP_OBS_CD As String

    'en el sql seleccionem el codi de l'observaci seleccionada per l'usuari

    Dim sql_obs As String = "select cmp_obs_cd from sia_cmp_tipobs where

    cmp_obs_descripcio='" & cbo_obs.SelectedItem & "'"

    Dim cmd_obs As New OracleCommand(sql_obs, conn)

    cmd_obs.CommandType = CommandType.Text

    'escribim el valor de la columna a la variable

    Dim dr As OracleDataReader = cmd_obs.ExecuteReader()

    dr.Read()

    'obtenim la informaci inclosa en el datareader

    CMP_OBS_CD = dr.Item(0)

    'transformem el cbo_selected en les sigles que van a la BBDD

    Dim rec_combo As String

    rec_combo = cbo_recalcul.SelectedItem

    Dim rec_sel As String

    Select Case rec_combo

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    44

    Case "S"

    rec_sel = 1

    Case "No"

    rec_sel = 0

    End Select

    'seguidament que fem s guardar totes les dades en una variable en forma de

    sql per desprs executar-la a la nostra BBDD

    Dim insert As String

    insert = "INSERT INTO SIA_CAMPANYA (CMP_SIGLA,CMP_DATA,CMP_RECALCUL,

    CMP_OBS_CD, ZON_CD) VALUES ('" & txt_sigla.Text & "','" & txt_data.Text & "'," &

    rec_sel & "," & CMP_OBS_CD & "," & zona & ")"

    'ara s'ha d'executar el sql a la base de dades

    Dim cmd As New OracleCommand(insert, conn)

    Try

    cmd.ExecuteNonQuery()

    'informem a l'usuari dels possibles errors

    Catch ex As OracleException ' noms amb els errors d'oracle

    Select Case ex.Number

    Case 1

    MsgBox("Error a l'introduir dades duplicades.",

    MsgBoxStyle.Exclamation, "Sistema d'informaci d'anivellacions")

    Exit Sub

    Case 12545

    MsgBox("Error de connexi a la base de dades",

    MsgBoxStyle.Exclamation, "Sistema d'informaci d'anivellacions")

    Exit Sub

    Case Else

    MsgBox("Database error: " + ex.Message.ToString() + vbNewLine + "La

    base de dades no s'ha actualitzat", MsgBoxStyle.Exclamation, "Sistema

    d'informaci d'anivellacions")

    Exit Sub

    End Select

    End Try

    MsgBox("La Base de Dades ha estat actualitzada", MsgBoxStyle.Information,

    "Sistema d'informaci d'anivellacions")

    Else

    MsgBox("No s'han guardat els canvis", MsgBoxStyle.Exclamation, "Sistema

    d'informaci d'anivellacions")

    End If

    Else

    MsgBox("Falten introduir dades." & vbNewLine & "S'han d'omplir tots els

    camps", MsgBoxStyle.Exclamation, "Sistema d'informaci d'anivellacions")

    End If

    End Sub

    Expliquem per passos el que executa el codi mostrat:

    1. El codi sexecuta quan lusuari prem sobre el bot Guardar del formulari. Abans de

    res es pregunta a lusuari si realment vol guardar els canvis, daquesta forma sevita

    que, per error, sinsereixin registres a la BBDD. Si lusuari decideix guardar els canvis

    es comprova si shan introdut valors a tots els textboxs amb una sentncia

    condicional. En cas que no es compleixi sinforma a lusuari amb un MsgBox i es

    retorna al formulari. Si es compleix la condici primer es connecta a la BBDD.

    Per poder introduir un nou registre a la BBDD cal tenir totes les dades. Els primers

    passos consisteixen en recuperar aquesta informaci

  • Sistema dInformaci dAnivellacions

    Aplicaci de crrega de dades

    45

    2. El segent pas s extreure el codi dobservaci que sintroduir a la taula de

    campanyes. Aquest pas s necessari perqu al combobox on lusuari selecciona les

    diverses observacions apareix la descripci de lobservaci, i no el codi per tal de

    facilitar la feina a lusuari (figura 15).

    Figura 15. Combobox dobservacions desplegat on es mostra la descripci de les observacions i no

    el codi.

    Per aix primer es fa una consulta a la BBDD per tal dextreure el camp

    CMP_OBS_CD i aix poder introduir-lo a la taula de campanyes. El resultat de la

    consulta semmagatzema en una variable mitjanant un DataReader.

    3. El cas del combobox que indica si ha hagut o no reclcul tamb s similar

    ja que a lusuari se li mostra un valor S o No per la BBDD necessita valro 0 o 1.

    El resultat de la selecci de lusuari es guarda a la variable rec_sel.

    4. Una vegada es disposa de totes les dades necessries per donar dalta

    una nova campanya i guardar-la a la BBDD sexecuta un SQL amb la sentncia

    INSERT. El codi s similar a quan es realitza una connexi a al BBDD per amb la

    diferncia que es fa servir el comand cmd.ExecuteNonQuery.

    5. Finalment sinforma a lusuari dels possibles errors o de lactualitzaci amb

    xit de la BBDD.

    En el cas de donar dalta nous valors mitjanant ledici directa de la taula el