La Generalitat de Catalunya, mitjançant el Departament de Governació, Administracions Públiques i Habitatge (DGAPH) i l’Institut Cartogràfic i Geològic de Catalunya (ICGC), està impulsant el procés de delimitació entre els termes municipals catalans en el marc que estableixen el Decret 209/2015, de 22 de setembre, i el Decret 244/2007, de 6 de novembre.
Aquests decrets recullen i detallen el conjunt de passos necessaris per a l’elaboració del Mapa municipal (MM), per a cada un dels 948 municipis catalans (febrer de 2016). El MM d’un municipi és el reflex del conjunt de les seves fites de terme, les línies de límit i la superfície del seu territori en dues dimensions (2D), i la seva escala de treball és l’1:5000.
Aquest procés finalitza amb la incorporació del mapa a diferents registres cartogràfics. En aquest sentit, correspon a l’ICGC preparar les dades i metadades de cada un d’ells per sol·licitar la seva incorporació al Registre Cartogràfic de Catalunya (RCC).
Objectiu
Per tal de donar compliment a aquesta tasca, l’ICGC ha definit una nova estratègia que aporta agilitat i seguretat al llarg de tot el procés.
Per poder inscriure un MM al RCC, se l’hi ha de donar el format adequat, tant a les seves dades com a les respectives metadades. Aquest format ve definit pels estàndards i especificacions tècniques aprovades per la Comissió de Coordinació Cartogràfica de Catalunya (C4): Especificacions tècniques del format «Shapefile» del Mapa Municipal de Catalunya 1:5 000.
És important assegurar la veracitat i l’exactitud de les dades, així com garantir una bona agilitat i fluïdesa en el seu procés de creació. Per tal d’aconseguir-ho s’han creat diferents eines i processos automàtics que, a més de facilitar el flux de treball, proporcionen un millor control. De forma paral·lela s’han establert controls de qualitat per a cada un dels passos del procés.
La Unitat de Delimitació Territorial i Grans Obres de l’ICGC, unitat de l’ICGC encarregada de la delimitació municipal, ha creat l’aplicació GENERADOR-MMC que permet generar i donar format a les dades que es registraran i crear les metadades associades d’una forma quasi automàtica.
EL PROCÉS D’INSCRIPCIÓ
Com hem vist, els treballs de l’ICGC dins el procés de delimitació d’un terme municipal finalitzen amb la inscripció del seu MM al RCC, tot seguint els passos següents:
- captar, emmagatzemar i gestionar les dades per elaborar el MM,
- lliurar els MM a la Direcció General d’Administració Local per poder ser presentats a la CDT,
- donar format a les dades i generar les metadades segons les especificacions tècniques,
- passar els controls de qualitat, i
- inscriure el mapa al RCC.
Figura 1.
Les dades de partida que s’utilitzen per inscriure un MM al registre són: el document oficial del MM i una gran quantitat d’informació gràfica i alfanumèrica recollida al llarg dels treballs de delimitació anteriors.
L’ICGC, com a responsable de la generació d’aquesta documentació, disposa d’eines que permeten la gestió de tota la informació generada (alfanumèrica i geogràfica). El Sistema d’Informació Geogràfica de Delimitació (SIGD) és l’estructura pròpia utilitzada en aquest sentit. Està format per un sistema de gestor de bases Oracle® 11g i d’un component addicional, ArcSDE 9.3.1 (ESRI Inc.®) que dota el sistema de totes les habilitats pròpies de les bases de dades geogràfiques. Dins d’aquest entorn (Oracle + ArcSDE) s’ha creat l’esquema de dades XSIDM, on s’emmagatzemen totes les dades i la informació que s’utilitza per generar els MM i les seves metadades.
Per aconseguir el màxim nivell d’automatització i control en el procés, s’ha creat una aplicació personalitzada, el GENERADOR-MMC. Aquesta aplicació recull la informació de les diferents bases de l’esquema XSIDM i del mateix MM i retorna les dades i metadades de cada mapa municipal en el format definit a les especificacions.
Aquesta aplicació permet el mínim nivell d’intervenció externa en la gran quantitat de processos de creuaments complexos de bases de dades. A més, ha estat dissenyada per aconseguir el màxim control en la veracitat i qualitat de la informació (origen i final) d’una forma automàtica.
L’aplicació és un conjunt d’scripts elaborats amb llenguatge Python® que executen les funcions de gestió de bases de dades, algunes d’elles basant-se amb l’API d’ArcGis® per Python, l’Arcpy.
ENTORN DE PROGRAMACIÓ
Python és un llenguatge de programació de codi obert que permet una integració fàcil i efectiva entre diferents sistemes. Actualment s’utilitza en múltiples disciplines com el desenvolupament d’eines web i solucions d’Internet, l’anàlisi de dades, càlculs matemàtics i científics, la implementació de protocols, interfícies d’usuari o la gestió de bases de dades.
De fet, és un llenguatge de programació àmpliament utilitzat en els Sistemes d’Informació Geogràfica (SIG) que gestionen grans quantitats de dades (alfanumèriques i gràfiques). Python gaudeix de grans avantatges que el fan idoni per a aquests entorns:
és un llenguatge de programació orientat a objectes.
està definit per una sintaxis simple i eficient, fàcil de llegir i d’interpretar.
és simple i ràpid d’aprendre, comparable a d’altres com C++ o Visual Basic.
és un llenguatge gratuït i de codi obert, que permet a l’activa comunitat que té darrere enriquir-lo constantment.
es pot utilitzar en múltiples plataformes (Windows®, Mac®, Linux®).
no necessita una compilació per ser executat.
és extensible, pot enriquir-se de la gran varietat de llibreries estàndards de què disposa, facilitant així les operacions més comunes i repetitives.
A més, és un llenguatge excel·lent per generar scripts. Un script és un programa que permet connectar diversos components existents per crear-ne un de nou i semblant. ArcGis (ESRI Inc.®) va començar a integrar l’ús d’scripts en la seva versió 9, la qual admet llenguatges com Perl, VBScript o JavaScript. Els llenguatges de programació, com Python, són ideals per accedir a totes les funcions que defineixen els programaris SIG mitjançant l’ús d’scripts.
Sembla fàcil, doncs, automatitzar processos i tasques pròpies ArcGis a través d’aquest llenguatge. De fet, els scripts es poden integrar com a eines pròpies que treballen com un model de geoprocés més.
Figura 2
ArcGis permet interactuar amb les seves eines mitjançant la finestra de Python, on s’executen petites línies de codi en temps real i on el resultat es mostra en el mateix moment.
Figura 3
Però també permet crear mòduls externs que poden ser executats independentment del fet que en aquell moment s’estigui treballant o no amb el programa obert.
Totes les eines de geoprocés pròpies d’ArcGis (merge, dissolve, etc.) tenen la seva traducció en llenguatge Python i es recullen en un paquet de lloc propi anomenat ArcPy. És per tant, una llibreria d’arxius (amb mòduls, funcions i classes) que permet la seva integració i accés a totes les seves eines de geoprocessament.
Aquesta llibreria ha estat àmpliament utilitzada en el codi de l’aplicació GENERADOR-MMC.
D’altra banda, per crear el paquet de mòduls que conformen el GENERADOR-MMC, s’ha triat l’editor PythonWin sobre plataforma Windows, que proporciona eines d’ajuda i control del llenguatge.
Figura 4
Durant el procés de creació del codi, s’ha intentat seguir els consells de bones praxis del codi Python que recomanen els seus creadors: la claredat i simplicitat del codi, una bona estructuració i la inclusió de força comentaris explicatius. En aquest últim sentit, s’ha procurat deixar ben documentat cada un dels passos que s’executen dins l’aplicació. L’objectiu és que qualsevol persona, sense coneixements de programació en Python, pugui llegir el codi de l’aplicació i el pugui entendre.
Introduir comentaris dins un codi de Python és tan senzill com afegir el caràcter # al principi de la línia.
Figura 5
– Les funcions i variables es poden definir una sola vegada i fer-se servir en molts altres mòduls, sense necessitat de reescriure el codi.
Figura 6
– Permet estructurar el programa en diferents seccions lògiques, més clares i comprensibles. Això és indispensable per a actualitzacions futures.
Figura 7
Com ja s’ha comentat, la informació continguda al XSDIM està distribuïda en diferents bases de dades: bases geogràfiques de límits (línies de límits i fites de terme), bases de dades alfanumèriques (dates, altes/baixes, etc.). Per tant, les dades que es necessiten s’han d’extreure de diferents llocs i en diferents formats. Aquest és un procés complex que actua sobre l’estructura i el contingut de 5 geodatabases, 21 capes, 20 taules i 3 arxius de text.
L’aplicació permet analitzar aquestes variables i és capaç d’automatitzar multitud de processos sense la intervenció de l’usuari.
Interfície gràfica: la finestra de treball
Per fer més amigable l’aplicació s’ha creat una interfície gràfica d’usuari (GUI) amb el paquet estàndard Tkinter. Això ha permès crear una finestra principal on l’usuari pot interactuar amb l’aplicació de forma intuïtiva.
Aquest paquet permet crear botons, quadres de text, etiquetes, etc. fàcilment i intuïtivament.
Figura 9
Creació de dades
El procés de creació de dades recull tota la informació necessària continguda en aquestes bases de dades i crea una sèrie de capes (en format .shp) i taules (en format .dbf) amb l’estructura i el contingut que dicten les Especificacions tècniques del format «Shapefile» del Mapa Municipal de Catalunya 1:5 000.
Com s’ha dit, la llibreria d’Arcpy conté totes les eines del toolbox d’ArcGis en codi Python. Per tant, podem fer servir qualsevol d’aquestes eines dins del nostre script. Aquí exposem alguns exemples de mòduls d’aquesta llibreria. Com veurem, un cop hem importat la llibreria al nostre script (import arcpy) podem accedir a qualsevol de les eines de geoprocés. Al web d’ajuda d’ArcGis s’explica el funcionament de cada eina i com integrar-les en un script de Python.
Vegem, per exemple, com l’aplicació importa les dades originals sobre les quals després es treballarà.
Figura 10
El següent pas seria fer la còpia de les capes que ens interessen, que en aquest cas són les acabades amb fites, linies o poligon.
Figura 11
Figura 12
Les metadades de cada MM s’han creat d’acord amb el perfil IDEC de l’estàndard ISO 19115:2003. A les metadades s’informa sobre: les dades, la qualitat de les dades, el sistema de referència i les mateixes metadades. L’àmbit d’aplicació és el conjunt de dades, és a dir el terme municipal.
Les metadades es generen també automàticament amb l’aplicació GENERADOR-MMC. Seguint l’estructura de format d’un fitxer estàndard de metadades, s’ha creat un arxiu com a plantilla original. L’aplicació actua i modifica el contingut d’aquest arxiu per a cada un dels MM.
Podem distingir 3 tipologies de codi intern d’aquest arxiu:
Així doncs, en el procés de creació de les metadades, l’aplicació accedeix a les diferents bases de dades, captura la informació de cada MM i la transfereix al fitxer XML de metadades, on substitueix les claus per la informació corresponent. Aquestes claus poden ser substituïdes per textos o per blocs sencers de codi encapsulat (<>).
Una de les informacions que s’inclouen a les metadades, per exemple, és la data en què es va crear l’Acta de reconeixement per a cada una de les línies de terme.
Com que el número de línies d’un terme municipal no és constant en tots els municipis, s’ha d’incorporar un número variable de dates per a cada cas. A més, aquesta informació ve estructurada en un format concret que cal respectar, tot encapsulant la informació de manera adequada. Ho resolem amb un parell de funcions molt bàsiques:
El resultat és una llista de dates: [2012-12-13, 2011-04-12, 2015-02-16,…]
Per a cada data de la llista, el resultat serà l’estructura XML següent:
I així es visualitzarà a les metadades:
El producte final
L’aplicació guarda automàticament les dades i metadades que genera en un directori propi. Dins aquest directori s’emmagatzemen totes les dades i metadades que s’enviaran al registre:
- fites (.shp) (ex. bdmmcv10sh0_170950_20130529_1_fita.shp)
- línia de terme (.shp) (ex. bdmmcv10sh0_170950_20130529_1_lter.shp)
- polígon (.shp) (ex. bdmmcv10sh0_170950_20130529_1_munimmc.shp)
- línia de costa (.shp) (ex. bdmmcv10sh0_170950_20130529_1_lcos.shp)
- línia de costa (taula) (ex. bdmmcv10sh0_170950_20130529_1_lcosmmc.dbf)
- línia de terme (taula) (ex. bdmmcv10sh0_170950_20130529_1_ltermmc.dbf)
- metadades (.xml) (ex. bdmmcv10sh0_170950_20130529_1_ca.xml)
- full BT5M costa (taula) (ex. bdmmcv10sh0_170950_20130529_1_fbt5m.dbf)
Control de qualitat
Per tal d’assegurar la bondat del MM, cal complir els requisits de control de qualitat definits a les Especificacions tècniques del Mapa municipal de Catalunya (especificacions del producte) i que es concreten a la Guia per al control de dades d’informació geogràfica.
Aquests requisits són els següents:
Completesa | Consistència topològica |
Consistència lògica | Exactitud temàtica |
Consistència conceptual |
Exactitud posicional |
Consistència de domini |
L’automatització dels processos del programa GENERADOR-MMC comporta una intervenció directa en cada un d’aquests requisits, a excepció del control d’exactitud posicional que es controla en el moment de la captura de dades en els diferents treballs de camp previs.
Així, temes com la consistència de domini en els atributs de les línies, fites o polígons, resten garantits, ja que els camps es generen automàticament sempre amb l’estructura i el domini corresponents.
De la mateixa manera, com que el contingut de les metadades es genera automàticament extraient la informació de les bases de dades existents, si el contingut d’aquestes és correcte, les metadades compliran els requisits de qualitat preestablerts.
AVALUACIÓ FINAL
El termini per inscriure un MM al RCC és de 6 mesos, a partir del moment en què és aprovat per la CDT. Abans de la creació d’aquesta aplicació, els treballs per donar el format necessari al mapa i per generar les seves metadades eren feixucs i implicaven un gran nombre d’hores de dedicació. A més, el control de qualitat es feia un cop s’havia finalitzat el producte i implicava una revisió manual de cada una de les dades.
El GENERADOR-MMC ha representat una millora palpable en els terminis i en el procés de control de qualitat. S’han reduït considerablement les hores de treball, s’ha augmentat el control sobre els processos i les dades, i s’ha millorat el control de la qualitat del producte final.
Actualment (febrer de 2016), dels 213 Mapes municipals que la CDT ha considerat, l’ICGC n’ha inscrit al RCC un total de 195. La resta també han estat treballats i s’ha iniciat ja la sol·licitud per poder inscriure’ls.
REFERÈNCIA DOCUMENTAL
Sobre el producte del Mapa municipal i la seva evolució:
-
Delimitació municipal-municat http://municat.gencat.cat/index.php?page=normativamm
-
Decret 209/2015, de 22 de desembre http://portaldogc.gencat.cat/
-
Especificacions tècniques de la C4 http://www.cccartografica.cat/Home-CCCC/Normes-i-estandards/Especificacions-tecniques
-
Perfil IDEC. http://www.geoportal.cat/geoportal/cat/documentacio/manuals/index.jsp
-
Institut Cartogràfic de Catalunya http://www.icgc.cat/
Sobre el llenguatge Python, les llibreries utilitzades i l’entorn de treball utilitzat:
-
Python https://www.python.org/
-
ArcPy http://pro.arcgis.com/en/pro-app/arcpy/get-started/what-is-arcpy-.htm
Bibliografia consultada:
-
Zandbergen, Paul A. (2014), Python Scripting for ArcGIS, Esri Press.
Warning: Undefined variable $req in /var/www/vhosts/rcg.cat/httpdocs/wp-content/themes/neomag-child/functions.php on line 48
Warning: Undefined variable $commenter in /var/www/vhosts/rcg.cat/httpdocs/wp-content/themes/neomag-child/functions.php on line 48
Warning: Trying to access array offset on value of type null in /var/www/vhosts/rcg.cat/httpdocs/wp-content/themes/neomag-child/functions.php on line 48
Warning: Undefined variable $aria_req in /var/www/vhosts/rcg.cat/httpdocs/wp-content/themes/neomag-child/functions.php on line 48
Warning: Undefined variable $req in /var/www/vhosts/rcg.cat/httpdocs/wp-content/themes/neomag-child/functions.php on line 49
Warning: Undefined variable $replace_email in /var/www/vhosts/rcg.cat/httpdocs/wp-content/themes/neomag-child/functions.php on line 49
Warning: Undefined variable $commenter in /var/www/vhosts/rcg.cat/httpdocs/wp-content/themes/neomag-child/functions.php on line 49
Warning: Trying to access array offset on value of type null in /var/www/vhosts/rcg.cat/httpdocs/wp-content/themes/neomag-child/functions.php on line 49
Warning: Undefined variable $aria_req in /var/www/vhosts/rcg.cat/httpdocs/wp-content/themes/neomag-child/functions.php on line 49