Manual d’ús del mòdul ‘Activitats econòmiques’

Aquest post explica el funcionament del plugin de ‘Activitat Econòmica’ per a QGIS.  Per a poder utilitzar-lo, el primer que s’ha de fer és executar el programa QGIS i un cop inicialitzat aquest, cal pitjar la icona següent  1 o anar a Complementos -> CCU -> Epígrafs i s’obrirà una finestra com la que podem veure a continuació a la imatge.
2
Aquest mòdul disposa de dues pestanyes principals: ‘Llista d’Activitats Econòmiques’ i ‘Altres operacions’. Començarem per la primera, que és la que apareix a la figura anterior:

  1. En primer lloc trobem 2 botons on podem escollir el mètode de treball, ja sigui amb parcel·les o número de policia.3
  2. A la dreta hi ha una pestanya desplegable on hi podrem escollir les connexions que prèviament haurem configurat en el QGIS.4
  3. Una vegada ens haguem connectat, en el requadre gran central ens apareixerà una llista amb totes les activitats econòmiques, on les podem trobar de dues maneres: per nom i per número d’epígraf. 5Ho podem escollir per mitjà de les dues pestanyes que podem trobar a la part superior del requadre.6Per tal de facilitar la feina, podem fer una cerca de l’epígraf desitjat per mitjà de la pestanya de cerca.7A mesura que anem seleccionant activitats econòmiques, ens apareixerà una barra superior temporal de color blau on hi podrem trobar informació referent als elements: número d’elements seleccionats tan en la llista d’epígraf per número com la de descripció. A l’esquerra d’aquesta informació ens apareixerà un botó, que si el pitgem, ens farà aparèixer una finestra on hi hauran llistat tots elements seleccionats.8A més a més, cada llista disposa d’un botó per poder des seleccionar tots els elements de la llista que haguem seleccionat prèviament.16
  1. A la part inferior de la finestra hi ha una etiqueta que ens indica l’estat de la connexió. Just a la dreta hi podem trobar dos botons: el botó ‘INICI’ processa les dades que li hem introduït i fa els càlculs pertinents per tal d’obtenir els resultats desitjats. En el moment en que s’estiguin realitzant la operació, l’etiqueta de la connexió ho indicarà. En canvi, el botó ‘SORTIR’ tanca el mòdul.9

Ara canviem a la pestanya de ‘Altres operacions’.10

Cal dir que segons les opcions que triem en la pestanya anterior, es mostraran o s’ocultaran diferents opcions. Tot seguit explicarem quines són:

  1. La opció de càlcul de radi consisteix en un camp on hi introduirem el valor de la variable K que correspon a la longitud del diàmetre del punt de l’entitat sobre la qual estem treballant. Per tant, com més gran sigui K, més gran serà el punt. Just al costat hi ha un botó per indicar el color del punt. Quan el cliquem se’ns obra un diàleg amb una paleta de colors per escollir. Cal afegir també que aquesta opció només és visible quan la opció de treballar amb números de policia de l’altre pestanya està activa.11
  1. En segon lloc hi trobem el camp on hi introduïm el títol de la llegenda que li volem donar a la entitat nova. Sempre hi ha un títol per defecte però podem posar el que sigui necessari. Aquesta opció sempre és visible.12
  2. Just a la dreta de les dues opcions anterior, hi trobem la de ‘Dibuixar zones d’influència’. A la part superior hi ha un checkBox que marcarem en el cas que vulguem veure les zones d’influència. En cas afirmatiu, just a sota apareixerà un submenú i es farà visible la opció de l’apartat 4, que posteriorment explicarem. Començant per la part superior i baixant, primer trobem un camp on hi podem indicar el radi o distància en metres de la zona d’influència segons si volem que aquesta sigui circula o de graf. Seguidament hi ha un botó per indicar el color, tal i com el que hem vist a l’apartat del càlcul del radi (1). Per complementar el color, també en podem indicar la transparència a la barra graduada. Si li indiquem que volem un 0% de transparència ens mostrarà una capa totalment opaca. Altrament, si li indiquem que volem un 100% de transparència, ens mostrarà la capa totalment transparent. En última posició hi trobem dos botons que serveixen per indicar si volem que la zona d’influència sigui circular o de graf. En el cas que sigui de graf, apareixerà la opció de l’apartat 5, que posteriorment explicarem.13
  3. La opció 4 és la de ‘Població’. Aquí indicarem si la zona d’influència volem que estigui relacionada amb la població. Per fer-ho cal marcar la opció del checkBox que trobem en primer lloc. Llavors trobem un desplegable on triarem el color del degradat per indicar les illes de població exclosa. El color tindrà més intensitat en funció de si en aquella illa hi ha més o menys població exclosa. En últim lloc hi trobem un altre checkBox que servirà per indicar volem que es mostri la zona d’influència o no.14
  4. Per acabar explicarem un submenú que es fa visible quan indiquem que volem la zona d’influència en forma de graf, explicat a l’apartat 3. En aquesta part tenim la possibilitat de escollir si fer el graf en funció de la distància o del temps a la pestanya desplegable que hi ha a la part superior. En el cas que s’esculli la opció del temps, dos checkBox apareixeran. Aquests ens permetran escollir el cost que volem utilitzar: cost de nusos o cost invers. Després podrem veure un camp on li indicarem el radi que volem que tingui el graf de la zona d’influència i també tindrem la possibilitat d’escollir el color. Finalment, trobem un checkBox on indicarem si volem pintar en el mapa l’esquelet del graf de la zona d’influència.15

Manual d’ús del mòdul ‘TaulaResum’

Aquest document explica el funcionament del plugin de ‘Taula Resum’ per a QGIS.  Per a poder utilitzar-lo, el primer que s’ha de fer és executar el programa QGIS i un cop inicialitzat aquest, cal pitjar la icona de la figura 1 o anar a Complementos -> CCU -> Taula Resum i s’obrirà una finestra com la que podem veure a la figura 2.

icona figura 1

inici figura 2

A continuació es detallaran els diferents components del plugin i quina és la seva funció:

  1. A la part superior esquerra, hi ha un rectangle on hi indicarem sobre quines capes volem treballar: illes, parcel·les, portals o totes tres alhora.met-treb
  2. A la part superior central, hi ha una pestanya desplegable amb les connexions disponibles (ja configurades prèviament) per a realitzar les operacions. Allà n’escollim una i seguidament la barra que hi ha just a sota n’indicarà l’estat.connexio
  3. A la zona lateral dreta hi podem trobar el selector de filtres que volem utilitzar per crear les taules. Només cal pitjar el filtre que vulguem aplicar per poder-lo emprar. Just a sota hi trobem dos botons més: crear taula i sortir. Crear taula inicia el procés de creació de taules i en el cas que hi hagi algun error en la configuració dels paràmetres per a la construcció d’aquestes, el procés s’interromp i ens apareix un missatge amb l’error. I el botó sortir, tanca el plugin.filtres
  4. Finalment, a la part central, tenim requadre amb cinc pestanyes amb les opcions per poder configurar els paràmetres de cada filtre. Seguidament els detallarem:
    • El primer que apareix és l’edat. En aquesta pestanya s’ha d’introduir en primer lloc una data segons la qual es vulgui fer l’estudi, per exemple 1 de maig de 2016. Després hem de posar el marge d’edat que volem definir en els camps edat mínima i edat màxima. Si volem fer una taula per les escoles bressol, cal posar 0 i 2 anys en els dos camps respectivament. Seleccionant la opció criteri restrictiu cercarem els nens que encara no hagin fet els 2 anys. En canvi seleccionant el criteri no restrictiu cercarem tots els nens que encara no han fet els tres anys.

pest

    • El segon criteri que apareix és el gènere. Podem decidir que la nostra cerca sigui en funció d’homes o de dones.

pest2

    • A continuació tenim els estudis: podem fer un filtratge segons els estudis que la persona hagi declarat tenir en el padró.

pest3

  • Un altre punt molt important seria l’origen no confondre amb nacionalitat. Una cosa és el país d’origen, és a dir, on ha nascut la persona en qüestió i l’altre la nacionalitat. La segona és quelcom més complex d’explicar, ja que està subjecte als conceptes de “ius sanguini” i “ius soli”. En el primer cas, quelcom comú als països europeus, africans i la Xina, els nen/a tenen automàtica la nacionalitat d’origen dels pares. Això comporta, per exemple, que un nen/a nascuda de pares marroquins a Mataró tingui nacionalitat marroquina. En el segon cas, si neixes en un país de dret de “ius soli”, obtens la automàticament la nacionalitat del país on neixes. Aquesta és la situació de la majoria de països llatinoamericans. Llavors, en aquesta finestra podem filtrar la nostre cerca segons diferents criteris:
    1. Pel país d’origen
    2. Per la zona del país d’origen
    3. Per que el seu país d’origen pertanyi a la unió europea.

pest4

    • Per últim la nacionalitat, que té els mateixos criteris de filtratge que en l’apartat anterior.

pest5

Una vegada aplicats els filtres a la cerca per qualsevol dels criteris explicats anteriorment, ja podem crear la teva taula resum, seleccionant tots els botons dels filtres sobre els quals volem fer la cerca i posteriorment pitjant al botó “crear taula”.

Creació del plugin ‘Taula Resum’

Introducció

En aquest post es podrà llegir els passos que cal seguir per a construir el plugin ‘Taula Resum’ per a QGIS.

En el plugin ‘TaulaResum’ cal destacar el canvi de filosofia que s’ha produït amb el canvi de GeoMedia, el qual treballa amb bases de dades locals, al QGIS. En canvi amb aquest últim hem passat a treballar amb un topologia client-servidor, que permet que tots els usuaris que disposin de les credencials podran accedir a les bases de dades sempre que vulguin i des de qualsevol lloc. I només el cal tenir el mòdul QGIS amb el mòdul instal·lat i podran treballar.

Sempre que fem referència a qualsevol element de l’entorn de programació o QGIS, aquest és explicat en el post sobre ‘com preparar l’entorn’.

Procés de creació

Disseny de la interfície

El primer que vam fer va ser la creació de la interfície del plugin. Un cop hem creada l’estructura del plugin amb el ‘Plugin Builder’, vam obrir l’arxiu amb format *.ui amb el Qt Designer i començarem amb la creació. Primer va caldre posar les pestanyes més exteriors (QTab Widget) i dimensionar-lo de manera adequada. Al voltant, vam afegir els elements que ajudaran a escollir els filtres, els mètodes de treball, l’elecció de la connexió i els botons per crear la taula i sortir. Un costum que tenim és el de posar una etiqueta amb la versió de la plugin, ja que ajuda a la identificació de quines són les funcions que pot tenir un plugin. Els plugins poden patir diferents actualitzacions i les funcions poden variar. En el cas de que hi hagi un error en una versió que no és la més recent, l’etiqueta facilita la detecció de l’error i es pot corregir ràpidament. El resultat de tot això es pot veure a la figura 1.

p1
Figura 1

Un vegada fet, vam afegir els elements de dintre les cinc pestanyes dels filtres. Finalment, el que vàrem fer és donar-li un nom que ajudi a la identificació de cada element interactiu de la interfície. Aquest serà el nom que utilitzarem per poder-hi interactuar dins el codi principal que controlarà el plugin. A la figura 2 es pot veure com quedaria la finestra amb la pestanya principal omplerta.

p2
Figura 2

Recomanem que siguin el més explícits possible ja que es podran evitar errades i també ajudaran a facilitar la comprensió del codi, com per exemple ‘ComboConnexio’ en referencia a la pestanya desplegable on s’hi indicarà la connexió que volem escollir.

Interacció amb les Bases de Dades

Per a poder realitzar qualsevol acció sobre la base de dades cal primer saber el nom d’usuari, nom de la base de dades, servidor i contrasenya. És recomanable guardar aquestes dades en variables globals i aconseguirem accedir-hi des de qualsevol funció en qualsevol moment. També cal fer l’import de la llibreria psycopg2 (import psycopg2) al principi del codi.

Per establir la connexió hem utilitzat el codi següent:

#Connexio
nomBD = nomBD1.encode('ascii','ignore')
usuari = usuari1.encode('ascii','ignore')
servidor = host1.encode('ascii','ignore')
contrasenya = contra1.encode('ascii','ignore')
try:
  estructura="dbname='"+nomBD+"' user='"+usuari
  +"' host='"+servidor+"' password='" + contrasenya + "'"
  conn = psycopg2.connect(estructura)
  cur = conn.cursor()
  cur.execute(Sentencia_sql)
  resultat = cur.fetchall()
  conn.close()

Utilitzarem la comanda execute(<sentencia SQL>) per realitzar la consulta. Per poder passar els resultats i per poder-los tractar utilitzarem la comanda fetchall() que retorna una matriu amb tots ells. És important tancar la connexió un cop haguem fet les consultes necessàries.

En el cas que ens ocupa, hi ha tres pestanyes del grup de pestanyes principals que necessiten llegir dades de la BD i exposar-les en els seus respectius camps. Com per exemple en la pestanya ‘Estudis’ hi ha un requadre amb una llista (QListWidget) on cal llistar-hi tots els estudis que hi pot haver i que tenim emmagatzemats a la taula del Padró. El que busquem nosaltres és una consulta que ens retorni els diferents tipus d’estudi que hi ha i ho hem resolt amb la sentencia SQL següent:

select distinct("HABNIVINS"),"NINDESCRI" from "public"."Padro" order by 2;

El camp “HABNIVINS” és l’identificador de l’estudi i el “NINDESCRI” és el nom de l’estudi que apareixerà al requadre de la llista. L’identificador de l’estudi el vincularem a l’estudi per mitjà del ToolTip(), que posteriorment ens facilitarà la construcció de la consulta que l’usuari desitja.

Connexió dels botons

Per poder vincular i recollir els estats dels elements de la interfície cal fer els següents passos. Primer de tot cal fer from TaulaResum_dialog import TaulaResumDialog per tal de poder vincular el fitxer de la interfície amb el codi.

Aleshores, a la funció init(), que ja ve creada pel Plugin Builder, hi posem les següents comandes:

self.dlg = TaulaResumDialog()
self.dlg.btoNACIONALITAT.toggled.connect(self.on_click_MarcarBotoNACIONALITAT)
self.dlg.comboConnexions.currentIndexChanged.connect(self.on_Change_ComboConn)

El primer inicialitza el diàleg amb el què hem d’interaccionar. Les altres dos activen les seves funcions respectives cada vegada que el valor que tinguin variï. Segons el tipus d’element que sigui, es pot canviar l’aparença o carregar elements per pantalla.

Cada element de la interfície ha de tenir una funció vinculada a ell per tal de que el codi sigui capaç de veure en quin estat està.

Programació dels efectes dels botons

Cada vegada que l’usuari interaccioni amb un dels elements de la interfície es produirà un efecte. En aquest apartat s’introduirà un exemple d’aquest tipus de comportament. Per l’exemple utilitzarem el codi següent:

def on_click_MarcarBotoEDAT(self, clicked):
if clicked:
  self.dlg.btoEDAT.setStyleSheet('background-color: #7fff7f')
  self.dlg.GrupPestanyes.setCurrentIndex(0)
else:
  self.dlg.btoEDAT.setStyleSheet('background-color:rgb(227,227,227)')

Aquesta funció es dedica a controlar l’aspecte del botó del filtre d’Edat. Si és clicat, canvia de color de fons i mostra la pestanya del filtre d’edat per tal que l’usuari esculli els paràmetres que vol analitzar. Altrament, li torna a posar el color de desactivat.

A més a més, cal tenir en compte que els elements de la interfície tenen memòria i que un cop els hi canviem l’estat, creem la taula i tanquem el plugin, una vegada el tornem a obrir, conserven el seu estat anterior. Això fa necessària una funció que posi aquests elements en el seu estat inicial cada vegada el que el plugin s’obri i s’utilitzi.

En el nostre cas, la majoria d’elements de la interfície tenen efectes molt senzills com el que hem explicat fa un moment però hi ha un botó que realitza una funció més complexa: crear la taula resum. Aquesta funció recull totes les dades que l’usuari ha introduït sobre els filtres que desitja analitzar, comprova que no hi hagi cap error o que falti alguna dada, es connecta amb la base de dades i escriu el resultat en fitxers de text .csv per a que l’usuari els pugui utilitzar sempre que vulgui.

Un altre punt important és el control d’errors. Cada cop que es produeixi un resultat no esperat s’ha controlar i avisar a l’usuari del que ha passat i indicar-li els passos per corregir l’errada. En el nostre cas, els errors més comuns es produeixen a l’hora de crear les consultes: l’usuari no introdueix correctament les dades de la consulta. Però també pot ser que la connexió no estigui disponible o que l’usuari no tingui els permisos adequats de lectura.

Quan es tracta d’un error relacionat amb la connexió s’adverteix a l’usuari per mitjà d’una etiqueta que n’indica l’estat. En el cas de tenir problemes amb la consulta, apareixen finestres amb el missatge d’error.

Prova del plugin

Una vegada hem programat totes les funcions, cal comprovar que els resultats són els esperats. Per fer-ho, cal que utilitzem el GeoMedia amb el plugin que s’utilitzava anteriorment i comprovar que si posem les mateixes variables d’entrada obtenim el mateix resultat.

Cal que el procés sigui exhaustiu perquè cal revisar cadascuna de les funcions que s’han implementat. S’han de fer totes les combinacions possibles i comprovar que el número de resultats ha sigut igual. En el cas que no ho sigui, s’han de comparar els codis i veure el punt on difereixen.

Preparació de l’entorn de treball per la creació d’un plugin per a QGIS

Introducció

En aquest post es podran llegir els passos que cal seguir per preparar un entorn de treball per a construir un plugin per a QGIS. Aquesta configuració no és la única proposta possible, sinó que és la que hem escollit nosaltres en particular.

El primer que cal fer és pensar una bona planificació del plugin: les funcionalitats que es volen incorporar, la tria i disposició dels elements que integraran la interfície, les fonts d’informació sobre les qual es volen realitzar els càlculs i quin tipus de sortides s’oferiran a l’usuari són alguns dels punts que cal tenir en compte a l’hora de la organització.

La interfície cal que sigui el més clara i intuïtiva possible per tal que amb unes simples instruccions l’usuari sigui capaç d’usar el plugin sense cap mena de problema. L’altre aspecte que cal tenir amb compte és el format de les fonts d’informació. Segons quines fonts no són ràpides a l’hora de ser tractades. Degut a aquest fet, recomanem treballar amb taules PostgreSQL ja que permet tractar un gran nombre de dades i fer funcions complexes en un període de temps molt reduït.

En el cas de les capes o taules de sortida, les sortides que no tinguin geometria és preferible guardar-les directament a la base de dades. Altrament, les sortides que si que tinguin geometria seria recomanable guardar el resultat de la consulta a la BDD i a partir d’allà generar un arxiu temporal .SHP per tal de que l’usuari pugui veure el resultat per pantalla en el projecte.

També cal instal·lar el programa ‘pgAdmin’ per tal de poder administrar les bases de dades des de les quals podrem extreure i afegir les dades que necessitem o obtinguem després dels nostres càlculs. Allà també podrem administrar els rols i permisos que volem donar en els usuaris.

Preparació i posta apunt

Entorn de programació

Per a poder crear un plugin de QGIS cal, com es obvi, el QGIS i un IDE. Un IDE és l’entorn de programació necessari per a poder programar el plugin internament. En el nostre cas, hem escollit l’IDE anomenat ‘Eclipse’ ja que és un entorn fàcil i intuïtiu, i té diverses funcionalitats d’entre les quals dues que són de gran utilitat: parlem d’un servidor per poder debugar mentre executem el plugin en el QGIS i un controlador de versions.

L’extensió per debugar remotament es connecta amb un altre plugin del QGIS(posteriorment serà explicat) i permet seguir l’execució del programa en temps real i tens la possibilitat de posar punts d’interrupció per tal de poder detectar possibles errors. A més a més, disposa d’una graella on s’hi pot veure el valor de les variables que són utilitzades en el codi en el moment en què parem l’execució.

La segona extensió recomanada és el controlador de versions, ja que està pensat per fer més fàcil i eficient la construcció manteniment d’aplicacions que tenen un gran nombre d’arxius amb codi font. Entre d’altres funcions permet fer un seguiment exhaustiu de les etapes que ha seguit el codi. Tens la possibilitat tornar a versions anterior en cas que hagis comès un error i seguir des de l’última versió correcta. També facilita el treball amb grup ja que permet ajuntar codi de dues o més persones fàcilment i d’aquesta manera es pot coordinar el treball que s’ha realitzat.

Els plugins de QGIS estan programats en Python, així doncs serà imprescindible instal·lar Python en el nostre equip en el cas que no ho estigui i també afegir l’extensió ‘PyDev’ a l’Eclipse.

Seguidament, explicarem pas a pas la instal·lació de tots el programes i extensions que s’han mencionat prèviament.

Comencem per la instal·lació del ‘Eclipse’. En el nostre cas ens hem descarregat la versió 4.5.2 de l’Eclipse Mars. En el cas de que l’equip no disposi de Java instal·lat, caldrà instal·lar-lo prèviament, ja que sinó l’Eclipse no funcionarà. Recomanem instal·lar la última versió.
Una vegada instal·lat, cal afegir les extensions necessàries. Comencem pel ‘PyDev’. Cal anar a Help a Install New Software (figura 1) i ens apareixerà una finestra com la de la figura 2.

1

Figura 1

2Figura 2

Pitgem el botó ‘Add’, que està ressaltat en la figura 2, i ens apareixerà un finestra com la de la figura 3.
3

Figura 3

Només cal omplir els dos camps buits: el primer amb el nom PyDev i el segon amb el link següent http://pydev.org/updates. Un cop fet, pitgem el botó OK per incorporar el repositori.

Després cal escollir PyDev en el desplegable de ‘Work with’ (figura 2 o 4)  i es carregaran les extensions que hi ha disponibles en el servidor. Un cop s’hagin carregat, escollim la opció del PyDev i pitgem el botó ‘Next’ per procedir a la instal·lació. Tot seguit haurem d’acceptar els termes de la llicencia i pitjar el botó ‘Finish’ per tal de finalitzar. Aquesta extensió porta incorporat la funció amb el servidor per debugar.

Per tal d’instal·lar la extensió de control de versions cal anar a la mateixa finestra que la figura 2 i a la pestanya desplegable cal escollir la opció <Mars – http://download.eclipse.org/releases/mars>  i en camp de filtre posar ‘Git’ tal i com es mostra en la figura 4.
4

Figura 4

Cal escollir les tres primeres opcions. La quarta és opcional: depèn de si interessa treballar amb GitHub. Un cop seleccionades les opcions, cal instal·lar-les com hem fet amb el PyDev.

Aquí acabaria la preparació de l’IDE.

QGIS

Aquests serien els requisits per poder treballar amb l’Eclipse. Seguidament explicaré les plugins que són necessaris per treballar amb el QGIS.

El primer pas per preparar l’entorn és la descarrega del QGIS des de la web del programa http://www.qgis.org/ca/site/forusers/download.html. La versió que nosaltres utilitzem és la 2.14, tot i això, qualsevol versió posterior hauria de funcionar sense cap mena de problema. Un cop descarregat, cal instal·lar-lo en el nostre equip.

Després de la instal·lació, és necessari obrir el programa QGIS i procedirem a instal·lar els plugins que comentarem seguidament.

Començaré per l’esmentat anteriorment, el plugin ‘Remote Debug’ que ens ajuda a connectar el QGIS amb el nostre IDE per tal de poder controlar l’execució i detectar possibles errors. Facilita molt la tasca de trobar errors i agilitza la codificació del plugin.

També hi ha el ‘Plugin Builder’. Aquest plugin crea una estructura bàsica o plantilla per a fer un plugin. Es parteix d’aquesta base i a partir d’allà es comença a programar el plugin amb el nostre IDE, que posteriorment l’importarem.

L’últim plugin a instal·lar és el ‘Plugin Reloader’. La seva funció és refrescar el connector mentre estem debugant errors i estem fent canvis en el codi. Si no ho féssim, els canvis en els codi no quedarien reflectits a l’execució.

Per poder instal·lar aquests cal seguir els passos següents: primer cal anar a Complementos à Administrar e instalar complementos com en la figura 5.
5

Figura 5

I seguidament ens apareixerà una finestra com la de la figura 6.
6

Figura 6

Abans de tot, cal anar a la pestanya de ‘Configuració’ i marcar la opció de mostrar els complements experimentals com en la figura 7.
7

Figura 7

Un cop marcada l’opció, tornem a la pestanya de ‘Todos’, com a la figura 6 i a la casella de buscar, busquem els plugins pel seu nom: Plugin Builder, Plugin Reloader i Remote Debug. Una vegada els hem trobat, pitgem el botó de instal·lar com el de la figura 8.
8

Figura 8

Ja instal·lats els plugins, apareixeran a la nostra barra d’eines del menú (figura 9).
9

Figura 9

L’últim detall que cal solucionar és indicar al Remote Debug el camí on hi ha el servidor per debugar del nostre IDE.

Per fer-ho cal pitjar la icona del plugin (és la que apareix a la dreta a la figura 9) i ens apareixerà una imatge com la de la figura 10.
10

Figura 10

En el camp pydevd path cap posar-hi el path següent: a la carpeta on hi ha guardat l’eclipse à Plugins à org.python.pydev_X.X.X.201608171824 à pysrc on X varia segons la versió que escollim.

pgAdmin

Per instal·lar el pgAdmin el primer que cal fer és descarregar-se l’aplicació des del lloc web que del programa https://www.pgadmin.org/download/. Allà només caldrà descarregar-se el que s’adequa a la nostra plataforma.

Un cop fet, només cal executar l’arxiu que ens hem descarregat i seguir els passos que indica.

Connexions a la base de dades

Per tal de poder configurar la connexió amb la base de dades cal seguir els següents passos:

Primer cal cercar a la barra d’eines en el lateral esquerra de la nostra pantalla una icona com aquesta 18
Un cop ho haguem fet, ens apareixerà una finestra com la de la figura 11. En allà cal premer el botó “Nueva”, tal i com està senyalitzat a la mateixa figura. Posteriorment ens ha d’apareixer una finestra com la de la figura 12. En allà cal introduir els camps necessaris per configurar la connexió: usuari, nom de la base de dades, servidor i contrasenya.
20

Figura 11

19

Figura 12

Funcionament

Creació del plugin

Comencem pel plugin Builder, ja que serà el primer que farem servir. Primer de tot, crearem un projecte i introduirem totes les dades que ens demana (figura 11).
11

Figura 11

Entre les dades que ens demana, li entrarem un camí on guardarà el plugin. És recomanable posar-lo al path següent: Disc Local (C:) à Usuaris à (Usuari on estigui el QGIS) à .qgis2 à python à plugins, ja que en aquella carpeta és on es guarden els plugins instal·lats.

Seguidament, copiem el camí i obrim l’eclipse. Anem a File à Import… i ens apareixerà una pestanya com la de la figura 14.
12

Figura 14

Pitjem l’opció de ‘Existing Projects into Workspace’ i ens mostrarà un pantalla com la de la figura 15.
13

Figura 15

Copiem el camí en el camp del directori arrel i pitjem el botó de ‘Browse..’. Un cop fet, es carregaran el projectes que hi hagi a la carpeta en requadre blanc. Llavors només caldrà seleccionar-lo i importar-lo mitjançant el botó Finish.

Finalment obrim el projecte i comencem a treballar a l’arxiu [nom del projecte].py que ja s’haurà creat prèviament.

Creació de la interfície

En el projecte que nosaltres hem creat, hi haurà un arxiu .ui que és la base de la nostre interfície. Aquest fitxer el podem editar amb el programa Qt Designer que s’instal·la automàticament quan instal·lem el QGIS en el nostre equip.

Per tant, per editar la nostra interfície obrim aquest programa i obrim el l’arxiu que tenim en nostre projecte.

El Qt Designer disposa de totes del eines que necessitem a la barra lateral esquerra i des d’allà incorporem els elements en el nostre disseny arrossegan-los fins on els vulguem posar.

Servidor per debugar

El que primer cal fer és obrir el ‘Eclipse’ i fer el seguent:

Anar a Window à Prespective à Open Prespective à Other com a la de la figura 16.
14

Figura 16

I seguidament se’ns obrirà una finestra com la de la figura 17.
15

Figura 17

Seleccionem Debug i seleccionem OK. A la barra d’eines superior ens mostrarà unes eines com les de la figura 18.
16

Figura 18

Cal pitjar el tercer botó 17 i haurem encès el servidor per debugar. Un cop fet, cal obrir el GIS i obrir el plugin del Remote Debug, que té una icona similar a la anterior. I ens apareixerà una finestra com la figura 10. Aleshores, només cal pitjar el botó de Connect i si hem configurat bé el complement, ens sortirà un missatge indicant que s’ha connectat amb el servidor.

Primers passos en el rutatge al QGIS

En aquest post mostraré els passos que he hagut de seguir per tal de crear el primer dels mòduls que utilitza funcions de rutatge en el QGIS. En aquest cas, volem traslladar el mòdul que calcula els 3 camins a les escoles bressol i llars d’infants més pròximes a cada portal de la ciutat de Mataró. En primer lloc presento les capes amb les quals es treballa. Llavors segueixo amb la creació del mòdul i la seva utilització.

Capes de treball

Actualment amb el GeoMedia treballem amb bases de dades de Microsoft Access majoritàriament. Aquestes incorporen tot tipus de dades, ja sigui taules amb informació sobre el padró o el cadastre, que no estan georeferenciades, o capes de punts, línies o polígons com poden ser els mapes de carrers, illes, cruïlles i serveis públics de la ciutat. Les dades en aquest format ens permeten una gran versatilitat d’ús i facilitat tan en l’ús com en la creació, modificació i eliminació. També són fàcilment exportables a qualsevol altre tipus de format per seguir treballant. Ocasionalment també treballem amb arxius SHAPE.

El QGIS permet gestionar formats raster i vectorials a través de les biblioteques GDAL i OGR, així com altres bases de dades. Una biblioteca GDAL i OGR és un conjunt de programes que estan formats per comandes, cada un amb moltes possibilitats d’ús.

Les capes més comunes amb les quals hem treballat són el Vector Layer, on utilitzem arxius SHAPE (.shp), i Delimited Text Layer on utilitzem arxius CSV (.csv).

Ambdos tipus de dades poden ser modificats fàcilment: tan crear, inserir, modificar o eliminar objectes i/o camps, la qual cosa els fa idonis treballar amb aquests tipus d’arxius ja que si volem fer proves per poder desenvolupar les consultes o els mòduls, ens són de gran utilitat.

Procés de creació

Per crear la interfície gràfica s’utilitza un creador de models que porta incorporats una sèrie de funcionalitats. Haurem d’anar a la caixa d’eines de processat i allà “crear model nou”.
fuc
I seguidament se’ns obra la següent finestra:
nou
Les dues imatges següents corresponen a la columna de l’esquerra de l’anterior imatge hi tenim tots els tipus de paràmetres amb els quals podem treballar, i si canviem a la pestanya de algoritmes, trobem totes les funcions amb les quals podrem treballar sobre les dades. Cal veure el funcionament d’aquestes per tal de poder-les utilitzar correctament.

fuc

dades

 

 

 

 

 

Seguidament, vam afegir el tipus de dades i buscar les funcionalitats adequades per construir la interfície gràfica.

dades2
Una vegada introduïdes les capes, va ser necessari buscar una funcionalitat que convertís el tipus de geometria dels objectes de les capes de punts ja que van sorgir problemes per què obteníem una capa buida. En el nostre cas vam utilitzar el mòdul “Convert Geometry type”.
convert
Seguidament vam començar la recerca d’entre les funcionalitats alguna que calculi una ruta entre dos punts. No existeix una funcionalitat que faci tal funció, així que vam seguir la cerca. Vam seguir buscant entre els plugins que permet instal·lar el QGIS. Vam trobar-ne un que si que fa aquesta funció però no ens era d’utilitat ja que no hi ha cap manera d’automatitzar el procés de càlcul de les distàncies. Això doncs, vam recórrer a l’últim recurs: crear un script en Python que realitzi la funció.

Vam trobar un script que calculava la ruta entre dos punts sobre un graf de carrers. Aquest script utilitza una funció interna de la API de QGIS anomenada “dijkstra” que et retorna un camí. El següent script és el que vam trobar a Internet:

##ruta=name
##ruta=name
##points=vector
##network=vector
##output=output vector

#Algorithm body
#==================================
from PyQt4.QtCore import *
from PyQt4.QtGui import *

from qgis.core import *
from qgis.gui import *
from qgis.networkanalysis import *
from processing.tools.vector import VectorWriter

point_layer = processing.getObject(points)
network_layer = processing.getObject(network)
writer = VectorWriter(output, None, [QgsField("order", QVariant.Int)],
network_layer.dataProvider().geometryType(), network_layer.crs())

# prepare graph
vl = network_layer
director = QgsLineVectorLayerDirector(vl,-1,'','','',3)
properter = QgsDistanceArcProperter()
director.addProperter( properter )
crs = vl.crs()
builder = QgsGraphBuilder( crs )

# prepare points
features = processing.features(point_layer)
point_count = point_layer.featureCount()
points = []
for f in features:
  points.append(f.geometry().asPoint())
tiedPoints = director.makeGraph( builder, points )
graph = builder.graph()
route_vertices = []

for i in range(0,point_count-1):
    progress.setPercentage(int(100 * i/ point_count))
    
    from_point = tiedPoints[i]
    to_point = tiedPoints[i+1]
    from_id = graph.findVertex(from_point)
    to_id = graph.findVertex(to_point)

    (tree,cost) = QgsGraphAnalyzer.dijkstra(graph,from_id,0)
    if tree[to_id] == -1:
        continue # ignore this point pair
    else:
        #collect all the vertices between the points
        route_points = []
        curPos = to_id 
        while (curPos != from_id):
            route_points.append(graph.vertex(
graph.arc(tree[curPos]).inVertex()).point())
           curPos = graph.arc( tree[ curPos ] ).outVertex()
        route_points.append(from_point)
    # add a feature
    fet = QgsFeature()
    fet.setGeometry(QgsGeometry.fromPolyline(route_points))
    fet.setAttributes([i])
    writer.addFeature(fet)
del writer

Un cop testejat i debuguejat, vam començar amb la modificació de l’script per tal d’obtenir el resultat desitjat. Aquest va ser un procés complex ja que s’havia de canviar el programa per dins. Després de forces entrebancs en el procés vam aconseguir un resultat força aproximat al que volíem. Van caldre forces hores per acabar de depurar el codi ja que teníem petits errors que costaven de detectar.

##dintreilla=vector
##EscolesBressol=vector
##network=vector
##output=output vector
#Algorithm body
#==================================
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import time
from qgis.core import *
from qgis.gui import *
from qgis.networkanalysis import *
from processing.tools.vector import VectorWriter

start_time = time.time()
network_layer = processing.getObject(network)

inputPoint = processing.getObject(dintreilla)
features = processing.features(inputPoint)

inputPoint2 = processing.getObject(EscolesBressol)
features2 = processing.features(inputPoint2)

di= 0
eb= 0
id = -1
fields = []
fields.append (QgsField("ID", QVariant.Int))
fields.append (QgsField("Length", QVariant.Int))
fields.append(QgsField("From_Node",QVariant.String))
fields.append(QgsField("To_Node",QVariant.String))

writer = VectorWriter(output, None, 
fields, network_layer.dataProvider().geometryType(), network_layer.crs())

#Per buscar els 3 millors de cada punt

for fea1 in features:
    di=di+1
    #xx = fea1.geometry().asPoint().x()
    #yy = fea1.geometry().asPoint().y()
    #pStart = QgsPoint(xx, yy)
    from_node = fea1.attributes()
    inici = from_node[0]
    print inici
    fea2=None
    features2 = processing.features(inputPoint2)
    eb = -1
    vec = []
    for fea2 in features2:
        eb=eb+1
        id  = id + 1
        nom = fea2.attributes()
        desti = nom[2]
       #---------------------------------------------------------------
        vl = network_layer
        director = QgsLineVectorLayerDirector(vl,-1,'Cost','Cost_inver','',3)
        properter = QgsDistanceArcProperter()
        director.addProperter(properter)
        crs = vl.crs()
        builder = QgsGraphBuilder(crs ,True,0.001)

        # prepare points
        points = []
        points.append(fea1.geometry().asPoint())
        points.append(fea2.geometry().asPoint())

        tiedPoints = director.makeGraph( builder, points )
        graph = builder.graph()

        route_vertices = []
        for i in range(0,2-1):
            from_point = tiedPoints[i]
            to_point = tiedPoints[i+1]

            from_id = graph.findVertex(from_point)
            to_id = graph.findVertex(to_point)

            (tree,cost) = QgsGraphAnalyzer.dijkstra(graph,from_id,0)
            if tree[to_id] == -1:
                continue # ignore this point pair
            else:
                # collect all the vertices between the points
                route_points = []
                curPos = to_id 
                while (curPos != from_id):
                    route_points.append(graph.vertex(
graph.arc(tree[curPos]).inVertex()).point())
                    curPos = graph.arc(tree[curPos]).outVertex()

                route_points.append(from_point)

            # add a feature
            geom=QgsGeometry.fromPolyline(route_points)
            fet = QgsFeature()
            fet.setGeometry(QgsGeometry.fromPolyline(route_points))
            fet.setAttributes([id, geom.length(), inici, desti])
            vec.append(fet)
           
    if (len(vec) > 0):
        vec.sort(key=lambda vec: vec[1])
        for i in range (0,3):
            writer.addFeature(vec[i])
del writer
print("--- %s seconds ---" % (time.time() - start_time))

Finalment vam aconseguir un resultat que s’ajustava a les nostres necessitats, i així completar el procés de creació d’un mòdul amb el QGIS. Vam posar l’script en un mòdul per a python, vam posar-li totes les connexions necessàries.
python
I aquest en va ser el resultat final de tot el procés:
final

Procés d’utilització

Aquí es descriu el procés d’utilització del mòdul per trobar els 3 Camins més pròxims a una Escola Bressol i una d’infants. Aquest comença amb la preparació de les dades a la llegenda o panell de capes del QGIS. En el cas que ens ocupa necessitarem 4 capes SHAPE, 3 de punts i una de segments. Les 3 capes de punts són les Escoles Bressol, les Llars d’Infants  i els dintreilles, que són tots els portals de la ciutat.  I la capa de segments són el conjunts de carrers de la ciutat, és a dir, per on hem de trobar el camí.

Primer de tot, hem de tenir les capes en el tipus desitjat: SHAPE. En el cas que no estiguin ja en aquest format, cal transformar-les per tal de poder-hi treballar. Un cop les tinguem, les guardem per tal de poder-les agafar i emprar.

Tal com s’indica a la fotografia, s’afegeix cada capa via Capa -> Añadir capa -> Añadir capa vectorial:
afe3

afe

Seleccionem explorar i amb l’ajuda de la finestra, busquem els arxius SHAPE que volem posar.

afe2

Repetim l’acció 3 vegades més fins a aconseguir les 4 capes desitjades, tal i com es veu a la foto.

Un cop fet, anem al panell de la dreta de la pantalla on hi ha la “caja de herramientas de procesado” i busquem a l’apartat de Modelos -> CCU, un model anomenat “3EB més pròximes”.
afe4

Una vegada trobat, cal executar-lo. S’obrirà una pestanya amb el següent diàleg:

afe5

Posem a cada pestanya la capa que ens demani: a la primera hi posem la xarxa de carrers sobre la qual volem treballar, a la segona hi posem els Dintreilles o portals de la ciutat(assegurar-se de que sigui la versió “dintreilla_trajectes”) i finalment les escoles bressol o les llars d’infants. Haurem de repetir el procés per cada una de les capes: una per les EB i una altre per les LI.

Un cop tot estigui a punt, només cal executar el procés i esperar a obtenir el resultat. El temps d’espera pot variar segons l’ordinador on s’estigui executant aquest.

Quan finalitzi el procés cal guardar el resultat en un fitxer SHAPE, ja que està en un fitxer temporal i per tant, es perdria en el moment en què tanquem el programa.

Prova del mòdul

En aquest apartat es mostra un exemple de mostra del mòdul. No utilitzaré la capa del ‘dintreilla’ ja que es massa gran i per veure el funcionament, amb una simple capa en tenim prou.

En aquest cas utilitzaré una capa amb un punt (de color vermell) que serà el punt d’origen i una altre capa (de color verd) amb els possibles destins més propers. D’aquesta manera es pot veure ben clar el funcionament.
ex1

Posem en marxa el mòdul i el resultat que obtenim és el següent:

ex2

A la imatge es pot veure el graf de carrers de la ciutat de Mataró. S’hi pot veure 3 camins ressaltats de color verd clar. Tots tres tenen com a origen el punt vermell.

Primeres consultes amb el QGIS

En aquest post, veurem com es fan consultes bàsiques com ara la població que viu a cada illa  o parcel·la de la ciutat de Mataró. El QGIS permet fer uns mapes temàtics molt clars. Per tal de realitzar aquesta consultes, hem de seguir els següents passos:

Primera consulta: habitants per illa

El primer pas és incloure en el nostre projecte la capa de illes i el padró de la ciutat. Un cop fet això, farem un join d’aquestes dues taules utilitzant el camp que tenen en comú: “D_S_I”. Fem la unió dins les propietats de la taula padró.

1. Afegim la connexió.

2. Escollim la taula ‘illes’ i el camp en comú.

Ja tenim la unió feta.

Un cop feta la unió, calculem el número d’habitants que té cada illa de la ciutat. Per tal de realitzar aquesta consulta hem d’utilitzar la funció “GroupStats”. En el cas que no la tingueu, heu d’instal·lar el plug-in.

Un cop aquí, hem d’arrossegar els paràmetres amb els quals volem treballar. En el nostre cas seran els següents: D_S_I i ID1, i també amb l’operador ‘count’, i els disposarem en les diferents files i columnes:

Un cop fet, executem la consulta i obtindrem la següent taula:

Seguidament, exportem la taula en un arxiu .csv i la incorporem en el projecte QGIS en el que estem treballant.

Seguim fent un join per tal de connectar les taules ‘Illes’ i ‘Count_Taules’ i així poder fer el mapa temàtic.

Posteriorment, canviem l’estil de les propietats de la capa “Illes” per tal que mostri les dades de població de cada illa de la ciutat.

Obrim la pestanya d’estils de la capa i el que hem de fer és canviar la pestanya superior de “Símbol únic” a “Graduat”, triar la columna amb les dades de població i clicar el botó de “classificar”. La funció d’aquest darrer botó és fer un classificació de les dades que es mostren i identifica cada interval amb un color diferent.

El QGIS ofereix grans possibilitats a l’hora de fer mapes temàtics com per exemple podem afegir o treure intervals i canviar el color identificatiu interval segons convingui.

Apliquem els canvis i ja tenim el mapa llest per ser consultat.

Segona cosulta: habitants per parcel·la

Per a realitzar aquesta consulta hem de seguir uns passos molt similars als que hem seguit abans. El primer pas és fer un join de les taules “Padro” i “parcel” que comparteixen l’atribut “REFCAD”. Realitzem aquesta acció des de les propietats de la taula Padro.

Afegim una nova conexió premen el botó “+” i seleccionem la capa de les parcel·les. Seguidament esollim els camps en comú i creem la unió.

Hem d’obtenir aquest resultat:

Un cop feta la unió, calculem el número d’habitants que té cada parcel·la de la ciutat. Per tal de realitzar aquesta consulta hem d’utilitzar la funció “GroupStats”. En el cas que no la tingueu, heu d’instal·lar el plug-in.

Li donen les instruccions necessaries per tal d’obtenir el resultat correcte:

I el resultat que obtindrem serà el següent:

Seguidament, exportem la taula en un arxiu .csv i la incorporem en el projecte QGIS en el que estem treballant.

Un cop fet això, només queda fer la unió d’aquesta taula amb la capa de les parcel·les i donar-li un estil graduat per tal d’obtenir el resultat desitjat en el mapa.

 

Aquí fem la unió de les taules.

Aquí canviem l’estil de les diferents categories que hi han i el resultat és el següent:

Elements de Simulació en l’Anàlisi Urbà

Activitats Econòmiques

El mòdul per visualitzar les activitats econòmiques, tal com ja es va explicar en aquest Bloc, permet a més a més de ubicar les activitat segons una llista de descriptors, definir tambè una zona d’influència i representar mitjançant un mapa temàtic la població que es troba a fora d’aquesta zona d’influència.

Característiques interessants de la representació són el poder escollir com a zona d’influència, la que hi ha a l’entorn del Graf de Trams de Carrer (GTC) que es genera al recòrrer a peu en distància o en temps a partir del punt on es desenvolupa l’activitat, igualment es pot escollir si es vol generar el mapa temàtic de la població exclosa i altres paràmetres de la generació del graf.

S’utilitzarà un mòdul del CCU que permet conèixer quin tant per cent de la població, possible usuària un recurs determinat, es troba dins d’una zona d’influència determinada pel desplaçament a peu, mesurada en distància o en temps. És el mòdul anomenat ‘Mesura de la Població Afectada’

Cas1: Panaderies o pastisseries amb la Zona d’Influència GTC que es genera anant 3 minuts a peu, i la població externa, segmentada per ILLES de cases. Vegeu la figura 1

Fig 1. Zones d’Influència GTC de 3m a peu i població exclosa: Forns de Pa

Cas 2: Peixeteries amb les mateixes condicions de 3m a peu. Vegeu la figura 2.

Fig 2. Zones d’Influència GTC de 3m a peu i població exclosa: Peixateries

Fig 2. Zones d’Influència GTC de 3m a peu i població exclosa: Peixateries

Cas 3: Papereries i llibreries en les mateixes condicion de 3m a peu. Vegeu la figura 3.

Fig 3. Zones d’Influència GTC de 3m a peu i població exclosa: Papereries i Llibreries

Tal com es pot veure en les corresponents figures en el cas dels forns de pa és difícil trobar zones on instal·lar un nou forn de pa que no estiguin dins de les arees d’influ-ència dels anteriors, encara que sí que n’ni ha en alguns punts de la ciutat. En el cas de les peixateries ja és molt més fàcil trobar-ne i en el cas de les papereries està en un punt intermig.

En aquest darrer (figura 3) cas hem volgut posar de manifest una altra de les possibi-litats del mòdul que és representar el punt on es troba l’activitat amb un tamany que és proporcional al tamany real en metres quadrats del local, exagerant una  mica l’escala del punt.

Simulació de la incorporació d’una nova activitat. Cas de les Peixeteries

En el mapa de la figura 2 podem veure a baix de tot que hi ha una zona molt poblada (ILLES més fosques) on no hi ha cap comerç d’aquest tipus. Simulem per tant que sobre un nou comerç en el punt que mostra la figura 4, encara sense zona d’influència delimitada.

Fig 4. Simulació d’una nova peixateria (punt vermell sense ZI)

Amb l’eina corresponent simulem la Zona d’Influència GTC visualizant el temàtic per ILLES de població exclosa i el tant per cent de cobertura. Figura 5

Fig 5. Simulació d’una nova peixateria amb ZI-GTC i temàtic de població exclosa

En el primer cas obtenim una cobertura del 58.15 % i en el segon del 60.53 %

Fragment del Quadre de Diàleg del mòdul 'Població Afectada'. Sense la Nova Peixateria

Fragment del Quadre de Diàleg del mòdul. Amb la Nova Peixateria

 

 

 

 

De manera que si ho volem saber exactament quants habitants hi ha a menys de 3 minuts d’aquest nou emplaçament tindriem:

(60.53-58.15)*123.744=2945 habitants

Àrees d’Influència d’Equipaments

El mateix que s’ha fet amb activitats econòmiques o comercials es pot fer amb equi-paments que realitzen un servei determinat. Ara es veurà un exemple amb els Centres d’Assitència Primària.

Suposem que tenim uns Centres d’Assistència Primària i volem saber la població que es troba a menys de 5 minuts a peu seguint el Graf de Trams de Carrer. En principi fem la representació dels entorns de cada centre i a 5 minuts, vegeu la figura 6

Fig 6. Zones d’Influència GTC a 5m dels CAP

Mitjançant el mòdul corresponent podem saber el tant per cent de a població total que està dins d’aquestes Zones d’Influència a 5 m del corresponent CAP. La interfície la podem veure a la figura 7

Fig 7. Quadre de Dialeg per a Definir la Zona d’Influència GTC i calcular la població inclosa. En aquest cas un 28.3 % del total d’usuaris potencials

Fixem-nos que el càlcul s’efectua a partir de la segmentació de la població per parcel·les tal com mostra la figura 8 amb un detall de mapa amb les ZI i les parcel·les que hi són en contacte.

Fig 8. Detall del procediment de calcul de la població a partir de la segmentació en parcel•les.

A efectes de simulació de possibles escenaris podem posar un nou CAP i tornar a fer els càlculs anteriors. El resultat és una cobertura del 32,11 % com mostren les figures 9 i 10

Fig 9. Simulació de la inclusió d’un nou CAP

Fig 10. Quadre de Diàleg amb Població Afectada. Simulació de nou CAP.

Tal com s’ha dit podem saber igualment la quantitat de població que es veurà bene-ficiada per aquest equipament en les condicions de proximitat que ens interessi, i anar-ho repetint per a qualsevol emplaçament que es vulgui testejar.

(32,11-28,3)*123.744= 4629 habitants

Aquestes eines gràfiques d’anàlisi no solament poden ajudar a tenir una fotografia més exacta del significat de tenin un equipament o una activitat en un lloc concret de la ciu-tat sinò que ens permeten visualitzar els efectes de tots els canvis i modificacions que es facin sobre tots els ciutadans o els usuaris en particular

Iniciació al software QGIS (Quantum GIS)

Fins ara, en el CCU s’ha treballat en un entorn Windows-Geomedia fent la programació en Visual Basic degut a la gran facilitat d’ús d’aquest entorn i a la seva generalització en tots els àmbits tant de l’Empresa Privada com de l’Administració. Però, darrerament, el Programari Lliure s’ha anat obrint camí allà on abans només hi havia programari de propietari. Malgrat tot, encara resten molts inconvenients pels usuaris del Programari Lliure que s’han d’anar superant.

En aquest sentit, s’ha començat un projecte que té com a finalitat el pas total de tota la operativa desenvolupada en l’entorn Geomedia a Programari Lliure, i concretament els mòduls funcionals que s’han anat creat com a plug-ins del Geomedia.

Així doncs, en aquesta primera entrada es parla del QGIS com a alternativa al GIS de desktop Geomedia Professional i s’explica de la forma més entenedora possible els primers passos per iniciar-se en aquest nou entorn.

Aquest nou entorn a treballar és el Programari Lliure QGIS. És un Sistema d’informació Geogràfica (SIG) de codi lliure per plataformes GNU/Linux, Unix, Mac OS i Microsoft Windows. Permet gestionar formats raster i vectorials a través de les biblioteques GDAL i OGR, així com altres bases de dades.

QGIS permet construir d’una forma més senzilla i gràfica models que realitzen les mateixes funcions que, actualment, desenvolupen els mòduls utilitzats al GeoMedia. I el més important, l’elaboració d’aquests models al QGIS es realitzen en molt menys temps que si es volgués fer amb el GeoMedia, tot i que requereixen un elevat temps previ d’investigació. A més, QGIS ofereix una àmplia gamma de funcionalitats que el GeoMedia no ofereix.

Per tant, la finalitat d’inicar-se en aquest nou programa és acabar substituint l’actual programa que es fa servir, el GeoMedia Professional.

Primers passos en el QGIS.

El primer que s’ha de fer en executar per primera vegada el programa, és carregar en la llegenda totes aquelles capes que siguin necessàries per poder treballar i realitzar les corresponents consultes.

En aquest cas, es carreguen dos tipus de capes:

  • Vector Layer: Es tracten d’arxius tipus “shape”. Aquest arxius són aquelles capes que tenen alguna forma geomètrica (punt, línia, polígon). Exemples d’aquestes capes són les illes, les parcel·les, els  números de policia, les entitats base, etc. Per efectuar la càrrega, primer de tot s’han d’exportar aquests “Arxius Shape” des del GeoMedia.
  • Delimited Text Layer: Es tracten d’arxius tipus “CSV”. Per tant, són arxius en format taula, on dins d’aquestes, es troba una sèrie d’informació que serà necessària per efectuar futures consultes. Igual que amb els Arxius Shape, també s’han d’exportar des del GeoMedia.

1. Afegir les capes “Vector Layer” al QGIS

  • El primer pas a seguir, es exportar les capes des del GeoMedia. Un cop dins del GeoMedia Professional, es realitza l’exportació de les capes que interessi.

Fig. 1. Exportació dels arxius shape.

  • S’indiquen aquelles capes que es vulguin exportar, per exemple, les illes, i es clica en “Aplicar”.

Fig. 2. Exportació de les Illes.

  • Un cop s’han exportat les capes des del GeoMedia, s’executa el QGIS i s’importen aquestes capes. Es clica en “Add Vector Layer”.

Fig. 3. Importar capes en format shape.

  • Es busca la ubicació de l’arxiu i es polsa en “Open”.

Fig. 4. Importar capes en format shape.

  • A continuació, apareix la capa “Illes” en la llegenda del QGIS i per tant, es mostra per pantalla tot el mapa de Mataró.

Fig. 5. Mapa de Mataró (Illes).

  • És molt important indicar en cada capa que s’afegeix, el seu sistema de coordenades de referència (ha de ser el mateix que el del GeoMedia: EPSG:23031 – ED50 / UTM zone 31N). Si s’afegeix  una capa, i per defecte no té  aquest sistema de coordenades, la capa no es mostrarà en pantalla. Per fer això, es fa doble clic a sobre de la capa i es va a la pestanya “General”.

Fig. 6. Canviar Sistema de Coordenades.

  • Repetir aquests passos per totes aquelles capes que es vulguin afegir.

2. Afegir les capes “Delimited Text Layer” al QGIS

  • Igual que s’ha fet amb les capes “vector layer”, primer de tot s’han de realitzar les exportacions d’aquelles taules que es vulguin fer servir al QGIS des del GeoMedia. Però, en aquest cas, no existeix una opció al GeoMedia per poder fer-ho directament. Les taules que es desitgin exportar per afegir-les posteriorment al QGIS, han d’estar en format CSV, és a dir, delimitades per comes. Això es pot realitzar des del mateix Excel. Per tant, una opció per dur a terme l’exportació, és anar a buscar la taula que interessi en la base de dades (BBDD) que utilitza el GeoMedia per la taula en concret. En aquest cas, es farà l’exportació de la Taula Resum, que es troba en la BBDD “Padro28Feb14”.

Fig. 7. Exportar les taules a l'Excel.

  • Un cop realitzada l’exportació de la taula des de l’Access, s’obre l’arxiu generat en Excel i es guarda en “CSV (delimitado por comas)”.

Fig. 8. Guardar en format csv.

  • Ara, un cop dins del QGIS, es procedeix a carregar les taules exportades. Es clica en “Add Delimited Text Layer”.

Fig. 9. Importar capes en format CSV.

  • Es busca la ubicació de l’arxiu, es seleccionen les opcions “First record has field names” i “No geometry (attribute only table)” i es clica en “OK”.

Fig. 10. Importar capes en format CSV.

  • A continuació, apareix la capa “Resum” en la llegenda del QGIS i es pot comprovar que tota la informació que conté la taula és correcte. Per fer això, es clica amb el botó dret del ratolí a sobre de la taula i es selecciona “Open Attribute Table”.

Fig. 11. Comprovar informació correcte.

  • Repetir aquests passos per totes aquelles capes que es vulguin afegir.

Editar elements de la llegenda

Un cop ja s’han carregat en la llegenda del QGIS els elements corresponents (entitats, illes, taules…), aquests elements poden ser editats i visualitzar les seves propietats. A continuació, s’explica com fer-ho per l’entitat “Escoles Bressol”, que prèviament ha hagut de ser carregada a la llegenda de la mateixa manera que s’ha fet amb les Illes, seguint el mateix procediment.

  • Si es fa activa la capa de l’entitat “Escoles Bressol” perquè es visualitzin per pantalla, es pot consultar informació de cada una de les escoles que es troben a Mataró. Per fer això, s’ha de clicar a “Identify Features” que es troba en la barra d’eines superior.

Fig. 12. Consultar informació.

I a continuació, clicar a sobre del mapa a l’Escola Bressol que es vulgui consultar i apareixerà una sèrie d’informació.

Fig. 13. Informació de l'Escola Bressol.

  • Una altra manera de visualitzar la informació de les Escoles Bressol sense haver d’anar clicant una per una, és clicar amb el botó dret a sobre de “EscolaBressol” que es troba en la llegenda i seleccionar “Open Attribute Table”.

Fig. 14. Open Attribute Table.

S’observa com es visualitza la taula amb tota la informació de cada una de les Escoles Bressol.

Fig. 15. Informació de les Escoles Bressol.

  • Si el que es vol es visualitzar les propietats de les entitats, el que s’ha de fer és pitjar amb el botó dret a sobre de “EscolaBressol” i clicar a “Properties”.

Fig. 16. Propietats de les Escoles Bressol.

En la següent entrada d’aquest bloc, s’explicarà com construir un model des del QGIS que realitzi les mateixes funcions que, actualment, realitza en el GeoMedia.

 

Sobre la Generació de Taules de Proximitat

 

 

En anteriors entrades ja hem parlat del Graf de Trams de Carrer (GTC). El GTC és un conjunt de segments connectats per nodes per on poden circular els vianants de la ciutat per fer els seus trajectes a peu dins de la vila (vegeu l’entrada: ‘Sobre el Graf de Trams de Carrer (GTC) ‘).

També es va veure com mitjançant unes característiques pròpies dels segments del graf podem saber la distància mínima entre un punt qualsevol, normalment una adreça qual­sevol, i un centre proveïdor de servei (CAP, Escola, Centre Cívic etc.), això ens va por­tar al un nou concepte de Zona d’Influència basat en la distància sobre el GTC o en el temps necessari per recórrer aquesta distància (vegeu l’entrada: ‘Nou concepte de Zo­nes d’Influència lligat als desplaçaments de la població’).

El GTC és un graf orientat i d’aquí ve que en els seus segments podem tenir informació del Cost (temps que triga una persona en recórrer el segment anant a una determinada velocitat quan va en el sentit del tram) i Cost_invers (temps que triga quan va en sentit contrari), això també es pot aplicar a una población segmentada segons l’edat, ja que presumiblement la velocitat será diferent per una persona de 25 anys que per una per­sona de 65.

Una de les possibilitats que té el GTC dins del Geomèdia (GM) és la utilització d’eines de rutatge, com el Geomèdia Transportation Mànager (GMTM) que ens permeten, a més a més de generar el propi graf, calcular els camins més curts o òptims segons una determinada funció cost entre dues o més entitats o Classes d’Entitat (taula o conjunt d’entitats del mateix tipus). Una de les característiques del GMTM que es va desenvo­lupar és la possibilitat de generar cobertures a partir d’unes classes d’entitat inicials que ens van facilitar la construcció de l’eina per generar les Zones d’Influència basades en el GTC que ja s’ha descrit.

L’explotació de totes les possibilitats de trobar camins entre entitats a través d’un graf, si no es vol efectuar el càlcul directament en el moment, o si no es disposa dels ele­ments de càlcul ‘on line’, ens porta a la generació de taules amb tots els camins entre les entitats origen i les entitats final, que anomenem ‘Taules de Proximitat’.  Després per obtenir determinats trajectes només haurem de consultar la taula corresponent, sense necessitat de disposar de les eines de rutatge i ni tan sols l’entorn del GM.

Per la creació d’aquestes taules es va construïr un mòdul del GM anomenat ‘Generació de Taules de Proximitat’ que anem a descriure tot seguit [Aquest mòdul formava part del Projecte Final de Carrera de Eric Belando que va presentar el 2011 a la EUPMt per obtenir el Títol d’Enginyer Tècnic Industrial] . El format del Generador de Taules és el d’un formulari on haurem de plasmar les entrades i les opcions d’aquest càlcul, vegeu la figura 1.

Fig 1. Interfície d’usuari per la Generació de Taules de Proximitat

Anem a repassar les tres seccions que es poden veure en aquest formulari

ENTRADES

  • Entitats  ‘origen’ ,des de les quals volem accedir a les entitats proveïdores d’un servei, aquestes poden ser entitats puntuals, com ara els números de policia o portals a peu de carrer, que podem resumir en una adreça determinada tipus Nom de Carrer i Numèro de Carrer. Un altre tipus d’entitats genèriques de la ciutat poden ser les Illes de cases, o també les Parcel·les, en aquest cas serien entitats tipus àrea. Com que per fer el rutatge necessitem una entitat puntual d’origen, en el cas de les entitats tipus àrea s’agafaria el centroide. De totes maneres l’aplicatiu pot funcionar amb qualsevol tipus d’entitat origen, parades de bus, contenidors d’escombreries etc.
  • Entitats ‘destí’, cap a on es dirigeixen els camins que surten de les entitats ori­gen, aquestes entitats serien les que proveeixen d’un servei: Centres d’Assistència Primària, Escoles etc.
  • Graf de Trams de Carrer que utilitzarem. S’han de donar dues classes d’entitat: segments i nusos. El graf ha de tenir informació dels valors de les variables Cost i Cost_invers de cada segment i si es volen calcular taules amb segmentació d’edats hem de tenir aquests mateixos valors de Cost i Cost_invers per a cada segment d’edat. Per això hi ha l’opció d’escollir el GTC que en interessi.

PARÀMETRES

  • S’ha d’indicar si volem generar la taula agafant com a criteri de proximitat la dis­tància (camins de les entitats ‘origen’ fins a les entitats ‘final’ que siguin més curts en distància) o bé el temps  (camins de les entitats ‘origen’ fins a les enti­tats ‘final’ que siguin més curts en temps).

Si hem agafat com a criteri el temps haurem d’escollir si volem segmen­tació per edats o no (si és així el GTC l’ha d’incloure).

  • Nombre d’entitats a les que volem generar camins per ordre de proximitat. Ca­mins a 4 les Escoles Bressol (EB), per exemple, més properes. En aquest cas de cada entitat ‘origen’ hi haurà 4 camins a les 4 EB més properes.
  • Paràmetres interns de la generació de taules. Com ara quina ha la distància mà­xima de les entitats ‘origen’ al GTC per possibilitar el rutatge. O els les agrupa­cions d’entitats que podem fer com a bloc de càlcul.

SORTIDES

  • A quina connexió del GM volem posar les taules que generem com a sortida.
  • Els noms que tenen cada una de les dues taules que generem. Una taula de trajec­tes, o camins, per tant amb geometria de línia. I una taula sense geometria on només posem les dades de la proximitat les entitats ‘final’ per a cada entitat ‘origen’, aquesta proximitat pot ser expressada en metres (distància) o en minuts (temps) segons el mètode que hàgim utilitzat

Aquesta  interfície de la figura 1 correspon a la generació de taules de trajectes i proxi­mitat des de les Illes de Cases de la ciutat de Mataró fins a totes les Llars d’Infants (es­coles bressol privades) de la ciutat. Considerant la unitat de mesura el temps empleat en fer el recorregut , per les les persones de menys de 25 anys. Es considera també que cerquem els trajectes i la proximitat a les dues Llars d’Infants més properes a cada Illa de Cases.

A la part esquerra del formulari tenim les ENTRADES on s’ha d’escollir la classe d’entitat de les entitats ‘origen’ i la classe d’entitat de les entitats ‘destí’ i on també s’ha d’escollir l’atribut identificador de cada entitat. Igualment s’ha de seleccionar les dues classes d’entitat del GTC, els segments i els nodes.

A la part central hi ha els PARÀMETRES de les taules que ja hem comentat.

A la dreta hi ha la configuració de les SORTIDES, connexió escollida d’entre les con­nexions actives del GM, i els noms de les dues taules de sortida que estem generant. També hi ha una retroacció del procés que s’està desenvolupant, una barra de progrés abaix de tot i un ‘log’ de quan s’ha acabat de processar cada una dels blocs d’entitats en que s’ha dividit del procés. En el cas de la figura 1, s’ha escollit blocs de 100 entitats i com que hi ha unes 800 i escaig Illes tindrem unes nou línies en la finestra, indicant per a cada bloc en quin moment s’ha completat. Aquest informació ens pot permetre decidir quin format de bloc és més eficient per a cada procés i cada màquina.

 

Fig 2. Generació de la Taula des de cada portal

A la figura 2 veiem el cas de la generació de les taules de trajectes i proximitat des de cada portal, n’hi ha uns 20000, si s’agafen blocs de 100 es necessiten 200 blocs tal com mostra la finestra de seguiment del procés.

També a la figura 3 es mostra la taula generada,  amb el primer camp D_S_I (districte_secció_illa) que correspon de cada Illa de Cases, el segon camp que es veu correspon a l’entitat d’arribada, que està definida pel nom de la Llar d’Infants corresponent, el camp número 4 correspon al temps definit en minuts que es trigaria en anar des de l’Illa del primer camp a la Llar d’Infants del segon camp, la resta de camps indiquen la geometria o sigui el dibuix del trajecte i només els pot interpretar el GM. Com es pot veure per a cada Illa hi ha dos trajectes, són els dos més ‘curts’ a les Llars d’Infants més ‘properes’.

Fig. 3. Taula de les sortides dels trajectes: TrajectesILLES_LI_25a_2

Aquesta  mateixa informació està indicada en un sol registre, en comptes de dos, en la taula de proximitat, on no hi ha cap ‘geometria’. Vegeu la figura 4 on la primera entitat de destí que es troba és la més propera (en temps)

Fig 4. Taula de les sortides de la proximitat: ProximitatILLES_LI_25a_2

En resum aquest mòdul és molt interessant per tenir una base de dades de trajectes o de proximitat en temps o distància, que es poden utilitzar en la publicació ràpida d’informacions que es puguin cercar a partir de ubicacions sobre el mapa de la ciutat o de llistats de domicilis, o d’adreces amb georeferenciació.   Pot ser molt útil per un recurs web, com ara el el servei WFS, del que es pugui obtenir un o varis camins a partir d’una petició d’una pàgina web on hi hagi una ubicació sobre el mapa de mataró. Només cal que, per que la informació sigui actual, les taules es va­gin generant periòdicament, cosa que s’aconsegueix de forma senzilla utilitzant aquest aplicatiu mostrat.

Generador de polígons de Voronoi (2/2)

En l’anterior entrada del bloc s’ha explicat l’aplicació “generador de polígons de Voronoi” des del punt de vista d’un programador, en aquest capítol s’explicarà com funciona des del punt de vista de l’usuari.

Es comentarà tot el procés que ha de fer l’usuari per poder utilitzar el mòdul de forma correcte i treure-l’hi el millor partit possible. Per això també es realitzaran una sèrie d’exemples per que l’usuari tingui la màxima facilitat a l’hora d’entendre el funcionament.

Carregar l’aplicació al Geomedia

Primerament explicaré com carregar el mòdul VB al Geomedia, de tal forma que pugui ser utilitzat per l’usuari.

  • Quan utilitzem el geomedia command wizard , plug-in que serveix per implementar el mòdul visual basic per que pugi ser utilitzar en l’entorn del geomedia profesional, se’ns creen dues carpetes.

Fig. 1. Contingut del nou projecte.

  • La carpeta “src” conté tots els arxius del projecte (mòduls, formularis etc..)

Fig. 2. Contingut carpeta "scr".

  • En la carpeta “bin” trobem l’arxiu .dll que es el que s’haurà d’instal·lar dintre del Geomedia.

Fig. 3. Contingut de la carpeta "bin".

  • Per instal·lar-ho utilitzem l’icona “install” d’intergraph, com podem veure a la següent imatge. Seleccionem la ruta de la carpeta “bin” del nostre projecte i pitgem “OK”.

Aquest procés tan sols s’haurà de fet un primer cop, ja que una vegada instal.lat el mòdul una vegada, per qualsevol canvi en el mòdul tan sols s’haurà de generar una nova dll, amb el procés explicat anteriorment al final del capítol anterior.

Fig. 4. Instal•lació nou mòdul creat.

  • Finalment, s’hi la instal·lació ha estat un èxit, ens hauria de sortir un missatge com el següent.

Fig. 5. Instal•lació satisfactòria del mòdul.

  • Una vegada estem dintre del interface del Geomedia Professional abans de poder provar el nostre mòdul, haurem de fer una mínim una connexió amb una base de dades que contingui classes d’entitat puntual de línia i d’àrea. ja que les tres son necessàries de cara al funcionament del aplicatiu. Per fer la connexió seguim el mateix procés explicat en el capítol 2, apartat Geomedia Professional.

Fig. 6. Addició de les connexions necessàries.

  • Una vegada fetes les connexions necessàries haurem de pitjar sobre un icona que ens apareixerà per defecte com el de la següent imatge. (Si volem tenir el mòdul a un dels menús, s’ha de seguir el procés explicat a L’annex 1).

Fig. 7. Icona per defecte del nostre mòdul.

  • Que ens portarà a la finestra del nostre mòdul, preparat per ser utilitzat.

Fig. 8. Finestra mòdul.

Exemples de la aplicació

En aquest capítol s’explicarà amb exemples el funcionament de la aplicació creada en l’entorn del Geomedia Profesional.

És realitzaran 4 exemples  amb centres proveïdors de serveis (escoles bressol, CAPS, centres de formació primària, Parades de bus) i un especial amb una consulta. Aquests exemples estaran documentats pas per pas i aportant diferents captures per mostrar els diferents punts de vista.

Escoles bressol

Per poder visualitzar el resultat dels polígons de Voronoi de la millor manera posible, haurem de tenir activades a la llegenda un mínim de dos classes d’entitat. Per una banda, l’area que limitarà el Voronoi, en aquest cas, el terme municipal de Mataró i per l’altra la classe d’entitat puntual sobre la que volem crear les nostres zones d’influència, en aquest exemple, seran les escoles bressol. Per això anem a Leyenda>Agregar entradas de leyenda i seleccionem aquestes en els desplegables de les connexions i pitgem el botó “aceptar”.

Fig. 9. Agregació de entrades de llegenda necessàries.

Com podem veure en les imatges, ens apareixeran les escoles bressol situades en el terme municipal.

Fig. 10. Escoles bressol i el terme municipal mostrats a la pantalla.

Si volem saber més detalls sobre les escoles, simplement pitgem a sobre d’una i ens apareixerà un quadre de diàleg com el següents on ens donarà propietats com el nom de l’escola o el numero de places entre d’altres.

Fig. 11. Propietats de les escoles bressol.

Una vegada tenim les classes d’entitat seleccionades a la llegenda, anem al mòdul  i seleccionem en els desplegables “EscolaBressol” com a entitat puntual, “Terme_municipal” com àrea delimitada i “Linies” com a sortida lineal per guardar el resultat del diagrama de Voronoi. Finalment pitgem el botó Calcular Voronoi.

Fig. 12. Omplir desplegables del mòdul per escoles bressol.

Com podem veure obtenim el diagrama Voronoi perfecte sobre les escoles bressol. El diagrama per aquest cas constarà de 17 línies guardades a la classe d’entitat “linies”.

Fig. 13. Polígons de Voronoi sobre les escoles bressol.

Com es pot comprovar, les línies no acaben en el límit del terme municipal, això es deu, ja que l’algoritme de Voronoi sempre es base en un quadrat o rectangle per arribar al punt final de les línies. Per tant en aquest cas calcula un quadrat imaginari amb els punts més alts de l’amplada i l’alçada. Per poder arreglar aquest problema, tenim dos formes de fer-ho des de el Geomedia:

  1. Fent una intersecció espacial:

Anem a Analisis> Intersección espacial .Una vegada dintre haurem de seleccionar  les classes d’entitat de línia i terme municipal i deixar per defecte la opció ” es toquen”. Escrivim el nom final de la consulta resultant i pitgem “aceptar”.

Fig. 14. Intersecció espacial entre línies i terme municipal.

Amb aquesta intersecció aconseguirem el resultat desitjat, com podem veure a la següent captura. El resultat de la consulta com podem veure a la llegenda es una barreja entre línies i àrees.

Fig. 15. Voronoi final sobre les escoles bressol mitjançant intersecció.

2.  Amb la opció dividir entidades.

Pitgem el boto “dividir entidades”.

Fig. 16. Procés dividir entitats (1/3).

Marquem el cursor i seleccionem el mapa amb les línies amb un quadrat.

Fig. 17. Procés dividir entitats (2/3).

Pitgem amb el botó dret a la pantalla i seleccionem la opció “realizar division”. Llavors, et va dividint el terme municipal en seccions de una en una.

Fig. 18. Procés dividir entitats (3/3).

Fins arribar al resultat final on tenim el Terme municipal dividit en regions de Voronoi.

Fig. 19. Voronoi resultant sobre escoles bressol mitjançant divisió d'entitats.

Llavors amb aquest mètode obtenim com a resultat final àrees. Seleccionant a la llegenda la classe d’entitat  “illes” podríem veure les regions d’una forma més visual.

Fig. 20. Voronoi resultant sobre escoles amb la capa d'illes.

Per últim activant la capa de la “ortofoto2013” a la llegenda podem visualitzar els polígons des de una vista Aérea similar a la de Google Maps.

Fig. 21. Voronoi resultant sobre escoles amb la capa "ortofoto".

CAPS

En aquest exemple crearem les regions de Voronoi al voltant dels CAPS de Mataró.

Primer de tot, com hem fet en l’exemple anterior agreguem a la llegenda la classe d’entitat puntual (CAPS)i  l’àrea  delimitant (terme_municipal). Com podem comprovar tenim 8 CAPS tal i com ens mostra la llegenda.

Fig. 22. Caps i terme municipal mostrats en pantalla.

Obrim el mòdul i  com hem fet en l’exemple anterior, seleccionem l’entitat puntual,(CAPS en aquest cas), el terme municipal com a area delimitada i per últim “linies” com a classe d’entitat de sortida per guardar el resultat. Pitgem Calcular Voronoi.

Fig. 23. Omplir desplegables del mòdul per escoles bressol.

Obtenim el  digrama de Voronoi resultant pels CAPS, que conté en aquest cas 14 línies.

Fig. 24. Diagrama de Voronoi sobre CAPS.

Llavors, utilitzant el segon sistema explicat anteriorment (Escoles bressol) per separar el Terme municipal en les regions de Voronoi obtindríem la següent imatge.

Fig. 25. Voronoi final sobre els CAPS mitjançant intersecció espacial .

Agregant la classe d’entitat illes a la llegenda tindríem la següent vista.

Fig. 26. Voronoi final sobre els CAPS amb la capa d'illes .

Finalment amb activant la Ortofoto com en l’exemple anterior, tindríem la vista des de dalt.

Fig. 27. Voronoi final amb la vista Aérea.

Parades de bus

Com als altres dos exemples, agreguem a la llegenda les parades de bus en aquest cas i el terme municipal. Com es pot comprovar a la següent imatge hi ha un total de 144 parades de bus a Mataró.

Fig. 28. Parades de bus i terme municipal mostrats en pantalla.

Seleccionem ParadesBus, Terme_municipal i Linies en els desplegables del nostre mòdul.

Fig. 29. Omplir desplegables del mòdul per Parades de bus.

Una vegada pitgem al botó Calcular Voronoi, obtindrem un resultat com el següent, abans però haurem d’esperar uns segons ja que al haver-hi 144 parades de bus, el programa necessita més temps per executar l’algoritme. Per tant no serà de forma immediata com en els altres dos exemples. Com podem veure  a la imatge s’han necessitat 408 línies per completar el diagrama de Voronoi.

Fig. 30. Diagrama de Voronoi per Parades de bus.

En aquest exemple utilitzem el primer mètode de intersecció espacial per arribar al resultat final desitjat. Anem a Analisis> Interseccion espacial i omplim els camps de la mateixa manera que en l’exemple de les escoles bressol.

Fig. 31. Intersecció espacial entre línies i terme municipal.

Al prémer el botó Acceptar obtindrem el Voronoi final de les parades de bus.

Fig. 32. Polígons Voronoi resultants sobre parades de bus mitjançant intersecció espacial.

Si afegim les illes a la llegenda, l’aspecte ens quedaria de la següent forma.

Fig. 33. Polígons Voronoi resultants amb la capa d'illes.

Apliquem la ortofoto per visualitzar el resultat de la millor forma possible.

Fig. 34. Polígons Voronoi resultants amb la vista Aérea.

Consultes

Aquest mòdul no només es pot utilitzar per classe d’entitats que estiguin a la base de dades connectada. Aquesta aplicació com la majoria de les creades en el CCU també pot utilitzar consultes que estiguin en memòria. La particularitat de la consulta es que pots seleccionar d’una mateixa classe d’entitat les entitats que tu vols, i després executar el mòdul sobre aquella selecció feta.

Si per exemple volem fer el Voronoi dels CEIPcon en el centre Urbà de Mataró com és mostra en la fotografia, hi ha un CEIPcon que quedaria fora d’aquest centre urbà. El problema vindria, ja que al executar el mòdul ho faria per totes les entitats, inclús la que queda fora del territori, per tant una consulta ens pot permetre eliminar aquesta entitat en memoria sense modificar la base de dades i poder realitzar el diagrama de Voronoi de forma satisfactòria.

Fig. 35. CEIPcon i centre urbà en pantalla.

Per crear la consulta desitjada, anem a Analisis>consulta espacial. Seleccionem CEIPcon en el desplegable seleccionar entidades en: . Després haurem de seleccionar la opció “estan contenides en” en el segon desplegable. I Per últim seleccionarem Centre Urba en el tercer desplegable. Finalment introdüirem un nom per la consulta de sortida i pitjarem “Aceptar”.

Fig. 36. Consulta espacial.

Per tant aquesta consulta el que ens farà serà seleccionar totes les entitats de CEIPcon que estiguin dintre del centre urbà.

Fig. 37. Nova consulta espacial representada a la llegenda.

Ara ja podrem utilitzar el mòdul per la consulta desitjada.  Simplement accedim al mòdul i en el desplegable de selecció d’entitat puntual, seleccionem la consulta creada en el sub-desplegable de consultes.

Fig. 38. selecció de la consulta creada al desplegable.

Com en exemples anteriors, seleccionem l’àrea delimitada en aquest cas seria el centre urbà i la classe d’entitat de tipus línia de sortida.

Fig. 39. Omplir desplegables del mòdul per escoles bressol.

Obtenim el Voronoi de forma perfecte sense tenir en compte la entitat exclosa.

Fig. 40. Polígons de Voronoi per la consulta creada.

Utilitzem la opció “dividir entidades” per obtenir el digrama final.

Fig. 41. Polígons de voronoi finals per la consulta creada mitjançant dividir entitats.