Autor/s: Masdeu, F.
Institut Cartogràfic i Geològic de Catalunya
Títol: Aplicació Python(R) per automatitzar el procés d'inscripció d'un Mapa municipal al Registre Cartogràfic de Catalunya
Temātica: Cartografia
Publicat a: Revista Catalana de Geografia
IV època / volum XXI / núm. 53 / juliol 2016
Font: -
URL: http://www.rcg.cat/articles.php?id=352

 

APLICACIÓ PYTHON(R) PER AUTOMATITZAR EL PROCÉS D'INSCRIPCIÓ D'UN MAPA MUNICIPAL AL REGISTRE CARTOGRÀFIC DE CATALUNYA


Francesc Masdeu

Institut Cartogràfic i Geològic de Catalunya


INTRODUCCIÓ

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.

53_02_01
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.

53_02_02
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.

53_02_03
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.

Per començar a treballar amb la llibreria ArcPy, només cal importar-la mitjançant una simple línia de codi:

import arcpy

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.

53_02_04
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.

53_02_05
Figura 5 

L’APLICACIÓ GENERADOR-MMC

L’aplicació s’estructura en diferents scripts (amb l’extensió .py) que treballen com a mòduls dependents. Això vol dir que cada un, a part de tenir el codi propi per ser executat per si sol, conté definicions de variables que són importades des d’un altre mòdul. El fet de treballar en mòduls té múltiples avantatges:
 

-     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.

53_02_06
Figura 6

 -    Permet estructurar el programa en diferents seccions lògiques, més clares i comprensibles. Això és indispensable per a actualitzacions futures.

53_02_07 

Figura 7

 

-     Es pot dividir fàcilment l’aplicació en diferents subprocessos. Això permet a l’usuari intervenir a la meitat del procés (per exemple per revisar els resultats intermitjos que l’aplicació va generant).

El GENERADOR-MMC s’estructura en dos grans processos de creació d’informació (cada un format per múltiples mòduls): el primer procés és el de creació de dades i el segon el de creació de metadades.
 
53_02_08 
Figura 8

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.

53_02_09
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à.

53_02_10
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.

53_02_11

Figura 11

També es podrien programar aquestes mateixes accions amb comandes més genèriques de codi Pyhton, i obtindríem el mateix resultat. Tot i així, la llibreria ArcPy està pensada per treballar amb capes, taules i directoris de bases de dades geogràfiques i, per tant, el codi és més simple i amè.

Vegem ara algunes línies de codi de l’aplicació GENERADOR-MMC on s’executen eines pròpies i exclusives d’Arcpy i que corresponen a funcions comunes de geoprocés (append, join, select by atributte, etc.).

 

53_02_12 

53_02_13
Figura 12

Creació de metadades

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:forumla1

formula2

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:


53_02_14

El resultat és una llista de dates:
[2012-12-13, 2011-04-12, 2015-02-16,...]

53_02_15 

Per a cada data de la llista, el resultat serà l’estructura XML següent:

formula_a

 

I així es visualitzarà a les metadades:

53_02_16

 

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)

53_02_17


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ògicaExactitud 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ó:



Sobre el llenguatge Python, les llibreries utilitzades i l’entorn de treball utilitzat:

Bibliografia consultada:

  • Zandbergen, Paul A. (2014), Python Scripting for ArcGIS, Esri Press.