creació d'un sistema d'informació per a la gestió ... · ii 5.2 aproximació tecnològica 23 5.3...
Post on 20-Sep-2018
217 Views
Preview:
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
top related