Entrades classificades amb: Anàlisi Urbà

Manual d’ús de l’usuari: Mapes descriptius de població

Aquest document explica el funcionament del plugin de ‘Mapes descriptius de població’ 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 101o anar a Complementos -> CCU -> Mapes descriptius de població i s’obrirà una finestra com la que podem veure a continuació a la figura 1, que és molt semblant a la interfície del plugin de la Taula Resum amb algunes diferències descrites en els apartats 1 i 4.
1054 quines capes volem treballar: illes, parcel·les, seccions, barris o districtes postals.

103

Fig 2. Mètode de treball

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

104

Fig 3. Connexió i progrés

  1. A la zona lateral dreta hi podem trobar el selector de filtres que volem utilitzar per crear la consulta. Només cal pitjar el filtre que vulguem aplicar per poder-lo emprar. Just a sota hi trobem dos botons més: INICI i SORTIR. ‘Inici’ arrenca el procés de representació del mapa 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.

105

Fig 4. Opcions i ordres principals

  1. Finalment, a la part central, tenim requadre amb dos pestanyes amb les opcions: configuració de la capa de sortida i els filtres.

106
Fig 5. Pestanyes

Per una banda, a la pestanya de ‘Filtres’ podem trobar-hi un requadre amb cinc pestanyes per poder configurar els paràmetres de cada  filtre. Recordem que el filtre es defineix en aquesta pestanya però s’activa pel botó lateral de la figura 4. , s’han de fer les dues coses.

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.

107
Fig 6. Filtre per edat

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

108
Fig 7. Génere

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

109
Fig 8. Estudis

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

110

Fig 9. Origen

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

111

Fig 10 . Nacionalitat

Per altra banda, a la pestanya de ‘Configuració de la sortida’ hi trobem diferents opcions per a la visualització dels resultats obtinguts.

112

Fig 11. Configuració de la sortida

Seguidament s’explicaran detalladament de què consta cada element:

  1. En primer lloc escollim la opció amb la qual volem que es faci el càlcul. Podem escollir entre tres opcions:
    • Habitants absoluts: retorna el número absolut dels habitants afectats pel filtre que hem escollit.
    • Habitants relatius: retorna el percentatge d’habitants afectats pel filtre entre el número total de persones que viuen en l’entitat que hem escollit per fer la cerca.
    • Densitat: retorna la densitat de població que està afectada pel filtre en Habitants/km2.
  1. En segon lloc escollim entre dues opcions pel color de la capa de sortida: un color únic per a tota la capa on en podem en podem regular la transparència, o bé un degradat de colors per indicar el major o menor nombre de persones afectades, on podem escollir-ne el número de intervals i el mode del temàtic que vol dir la forma en que es defineix cada rang, igual nombre de incidències , igual amplada de l’interval etc.
  1. En tercer i últim lloc tenim la possibilitat d’afegir etiquetes i modificar-ne algunes de les seves propietats com ara la mida i el color de la lletra i també la visualització en escala. Els valors de l’escala de visualització tenen un valor per defecte per a cada tipus d’entitat, però es poden modificar sense cap mena de problema.

Una vegada aplicats els filtres a la cerca per qualsevol dels criteris explicats anteriorment i configurats els paràmetres de sortida, només cal pitjar el botó “INICI”.

 

Manual d’ús del mòdul ‘Zones d’influència adaptatives’

Aquest document explica el funcionament del plugin de ‘Zones d’influència adaptatives’ 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üent1

o anar a Complements -> CCU -> Zones d’influència adaptatives i s’obrirà una finestra com la que podem veure a continuació a la imatge.

2

Aquest mòdul el que fa és ajustar la zona d’influència de cada entitat proveïdora d’un servei a la població a la capacitat de cada centre (que s’ha de fixar en la BD prèviament), tenint en compte la densitat de la problació ‘target’ del seu entorn. Aquesta zona d’influència pot ser circular o seguint el Graf de Trams de Carrer.

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

  1. A la part superior, hi ha un barra on s’hi indica l’estat de la connexió i una pestanya desplegable amb les connexions disponibles (ja configurades prèviament) per a realitzar les operacions. Allà n’escollim una.3
  2. En aquesta part escollirem la capa de punts a partir de la qual volem fer la zona d’influència i el color que tindrà.4
  3. Just a sota trobarem tres botons que ens permetran escollir la capa sobre la que volem treballar: Illes, parcel·les o portals.5
  4. En aquesta secció cal introduir un número de iteracions que volem que es realitzin.6
    Hem de tenir present que el programa fa el recalcul del següent radi (o distància) a partir del nombre de persones trobades prèviament dins de la zona i això ho pot fer una vegada (cas de una iteració) o unes quantes, poguent anar refinant l’ajust, però amb augment del temps de càlcul.
  1. En l’apartat de cobertura caldrà dir el percentatge de població sobre el qual volem fer l’estudi. També marcarem el checkBox en el cas que vulguem que es mostri la població no afectada per la zona d’influència. Una vegada realitzada la operació, ens apareixerà el nombre d’habitants no coberts en el requadre blanc, a la part inferior.7
  2. Aquí cal introduir el radi inicial a partir del qual treballarem amb les entitats puntuals. Es una radi inicial mitjà a partir del qual i segons la capacitat de cada centre s’assigna el radi inicial particular de cada un.8
  3. En aquest apartat es pot escollir zones d’influència de graf si se selecciona l’opció ‘fer servir trams’. En cas contrari, les zones d’influència són circulars. En cas de fer servir trams, podem fer que es vegi el dibuix del graf marcan el checkBox corresponent. També es pot modificar el radi de la zona d’influència canviant el valor en el textBox.9
  4. En el cas que la opció de ‘fer servir trams’ estigui habilitada, cal escollir un graf sobre la qual treballar, mitjançant la pestanya desplegable. També podem escollir el color de l’àrea d’influència i modificar el traç amb la pestanya desplegable inferior.10
  5. En últim lloc, a la part inferior de la finestra podem trobar la versió de la plugin amb la que estem treballant i dos botons: ‘INICI’ per començar el processament de les dades i ‘SORTIR’ per tancar el plugin.11

 

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.

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.

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.

 

Segmentació de la Població

 

Tal com vam veure en un ‘post’ anterior sobre les agregacions de la població de la ciutat, utilitzant la base de dades del Padró Municipal d’Habitants es pot localitzar la població segons la Illa de cases on es viu, segons la parcel·la o segons el portal on hi ha el seu domicili.

Aquesta manera de geolocalitzar pot ser molt útil per mesures o consultes en les quals interessi veure on hi ha més gent o on n’hi ha menys. Però, anant més enllà, pot caldre també discernir sobre quin tipus de població hi ha, segons característiques que estiguin reflectides en el Padró, aquestes característiques són: la data de naixement, el gènere, els estudis, el lloc de procedència , la nacionalitat, i totes les  declarades per cada ciutadà a   l’empadronar-se a la ciutat.

Aquestes propietats, juntes, combinades o separades poden determinar segmentacions de la població en cada una de les agregacions per lloc de què parlàvem abans.

En un anterior exemple sobre les Escoles Bressol Municipal, el segment de població que interessava geolocalitzar era el de nens entre 0 i 2 anys. Anem a veure una interfície del plug-in construït en VB per treballar sobre el SIG  GeoMedia que permet fer aquestes segmentacions.

 

Fig 1. Interfície per fer la Segmentació i l’Agregació dels habitants

A la figura 1 podem veure a la pestanya de l’ edat uns camps on indicar el marge inferior i el marge superior de l’edat que estem cercant, i amb dues possibilitats de comptabilitzar-ho,  estrictament si compleix anys a la data indicada, o en sentit ampli, la persona té X anys fins que no en compleixi  X+1. A la part superior del formulari es pot veure el mètode d’agregació que s’utilitzarà que en aquest cas és el de les Illes.

Aquestes dades de franges d’edat es podrien combinar amb el gènere i el nivell d’estudis o qualsevol altre propietat. Per exemple si el segment que cerquem és el d’homes entre 50 i 60 anys que tinguin estudis universitaris a nivell de llicenciatura, s’haurien de posar els paràmetres a les pestanyes corresponents com es pot veure a les figures 2, 3 i 4.

Fig 2: Marge d’edat
Fig 3: Gènere
Fig 4: Estudis

També s’observa a la figura 4, que en el formulari cal marcar tots els criteris pels quals es farà la cerca, abans de generar la taula,  a més a més cal posar els paràmetres corresponents a cada una de les pestanyes que siguin necessaris per a cada cas.

En resum, com a eina necessària en els estudis de població basats en les dades del Padró Municipal d’Habitants, presentem aquest recurs que permet de generar taules per entitats agregades,  escollides segons els segments de població que ens interessin i que permetin les dades, presentant sempre dades agregades i mai personalitzades.

 

WFS: Interactuació amb mapes.

Descripció.

La necessitat de transferir cartografia per Internet ha sigut, i encara és, un problema difícil. La cartografia digital conté un gran volum de dades d’informació, i enviar aquestes quantitats de megabytes per Internet és una tasca pesada, i lenta.

És per això que es va començar a treballar amb WFS, sigles de “Web Feature Service”, que és un servei estàndard que ofereix una interfície que permet sol·licituds de comunicació, permetent interactuar amb mapes WMS (Web Map Service).

A través d’una URL, es pot accedir a les dades cartogràfiques que s’hagin publicat a la taula WFS, i fer consultes específiques, més endavant es mostra un exemple.

Per realitzar aquestes operacions s’utilitza el llenguatge GML, que deriva de XML,  és l’estàndard a través del qual es transmeten les comandes WFS.

Un cop s’ha fet la publicació de la taula WFS i es té la URL que apunta a ella, es poden veure les dades en alguns SIG (Sistemes d’Informació Geogràfica) que permetin el tractament d’aquest tipus de dades, en aquest cas al Geomedia.

En aquest cas, s’ha decidit a utilitzar la taula de trajectes i proximitat a les tres escoles bressol més properes.

Com fer la publicació?

Primerament, des del servidor on està instal·lat el GeoMediaWebMap Professional, s’obre el Server Configuration Utility i es crea un nou servei amb el botó “Add”.

Creació del servei.

El següent pas és seleccionar l’opció Manipulate Feature Web Service.

Es deixen els valors per defecte i es va prement “Next”, s’haurà d’introduir un nom pel WFS.

Nom del servei.

Quan es demani el tipus de base de dades, introduir Microsoft Access. La resta es deixa per defecte, i es finalitza, el servei s’ha creat.

En aquest punt, s’obre el Geomedia i es carrega el mapa que es vol publicar, s’obre el “GeomediaWebMap Publisher Administrator”.

Configurant el Geomedia.

Es selecciona el servei que s’acaba de crear i apareixerà una barra amb botons. Polsar sobre el cinqué botó “PublishandPopulatetheGeoWorkspace”, i seleccionar la primera opció “PublishtheGeoWorkspace contents to theMetaData”. Es selecciona “Sí”.

Botó “settings”.

Es selecciona el segon botó, “settings”. Aquí s’ha de seleccionar l’arxiu .csf que conté el sistema de coordenades. Després es prem l’últim botó per tancar el menú.

En aquest punt només queda inicialitzar el servei, per fer-ho, es torna al Publisher Server Configuration Utility, es selecciona el servei que s’ha creat i es prem “Initialize”.

Servei inicialitzat.

Provar el servei des del navegador introduint l següent línia de comanda:

http://geoportalccu.tecnocampus.cat/ProvaWFS/request.aspx?version=1.1.0&service=wfs&request=getcapabilities

Codi GML creat.

Interpretació gràfica del codi GML.

Veure així el codi no és interessant, el més interessant és veure-ho transformat en un mapa, al Geomedia per exemple, a continuació es veu com es pot configurar el geomedia per tal de veure la informació del servei WFS.

Primerament s’ha de crear una nova connexió, de tipus WFS, en aquest cas s’ha creat de WFS només lectura, per tal de que les dades no es puguin modificar.

Nova connexió.

S’ha d’introduir la URL abans esmentada, i s’accepta.

Un cop creada la connexió, ja es poden mostrar les seves entrades des de la llegenda.

Ventana de mapa del Geomedia amb les dades.

Entitats agregades de Població

 

Hem vist en anteriors entrades que al final de qualsevol càlcul de proximitat en un sentit o en altre (comptar entitats), arribàvem a veure la població afectada agrupada per illes de cases, cosa que permetia, mitjançant un mapa temàtic, veure les illes on hi havia més o menys gent, que en el cas dels càlculs de proximitat ens  portava a estudiar  les illes que es trobaven a més distància d’un determinat centre o que no en tenien cap a una distància determinada.

Es pot dir que aquesta relació amb la població és el motiu final de molts càlculs i simulacions, ja que la població, en darrera instància és el subjecte principal de l’activitat de la gestió municipal.

Anem a veure una mica en detall com fem aquestes agrupacions dels habitants. L’eina base és el Padro Municipal d’Habitants. En un primer procés s’agafen totes les dades rellevants de la base de dades del Padró, i un cop despersonalitzades, s’inclouen en una taula única, que seria una imatge de la situació del Padró Municipal en un moment determinat, en una data determinada, per tant seria una fotografia que es queda obsoleta immediatament acabada de fer ja que el Padró va canviant en el temps constantment degut a les altes i baixes que es van produint de forma contínua.

Un aspecte important és com situar els habitants en el territori. Nosaltres fem les agregacions dels habitants de tres maneres: càlcul dels habitants que viuen en una  mateixa illa, càlcul dels habitants que viuen en una mateixa parcel·la, i càlcul dels habitants que viuen en el mateix ‘portal’.

Aquesta diferent forma de comptar els habitants correspon al nivell de resolució que ens cal, segons el tipus d’estudi que volem fer. Les illes de Mataró són de l’ordre de 600, les parcel·les, estaríem en unes 12.000 i els portals  (també anomenats números de policia) de l’ordre de 20.000. Per tenir una visió general, no massa precisa, les illes són suficients. Si volem calcular els habitants d’una zona arbitrària de la ciutat  afinarem molt més amb àrees molt més petites com ara les parcel·les, i amb els portals, que per definició no són àrees sinó punts, encara més. Seria com tenir una mateixa fotografia amb uns pixels molt grans (illes) o més petits (parcel·les i portals).

Com podem associar cada habitant amb una illa, una parcel·la o un portal?  D’entrada hem dit que tenim tots els habitants en una única taula, cada fila de la taula és una persona i tant tindrem un total de tantes files com persones. Ara el que cal és un identificador de l’entitat amb la qual volem associar aquest habitant. Si parlem d’illes hi ha una forma única d’identificar cada illa amb un conjunt de tres codis INE (Instituto Nacional de Estadística) : codi de districte censal, i dins de cada districte codi de secció censal i dins de cada secció codi d’illa, tots tres són codis numèrics, i el conjunt de tots tres codis constitueix un identificador únic per una illa de la ciutat de Mataró, el format sol ser D-S-I (districte-secció-illa) per exemple: 5-2-4 que vol dir la illa 4 de la secció 2 del districte 5. Com que cada registre (fila) de la taula tindrà el seu codi D-S-I podrem sumar tots els habitants que tenen un mateix codi, per exemple pel codi 5-2-4 podríem dir que hi ha 235 habitants i així podríem fer una nova taula de dues columnes en la primera tindríem tots els codis d’illa i en la segona els habitants que podem comptar de cada codi. Aquesta seria una primera forma d’agregació dels habitants.

Codificació INE per les Illes: Districte-Secció-Illa
Taula d’agregacions d’habitants per Illa

De la mateixa manera podem tenir en cada registre de la taula general del Padró un identificador únic per la parcel·la que en aquest cas s’anomena codi UTM o Referència Cadastral [set caracters numèrics], aquest codi no existeix per les parcel·les dins de les zones rurals i en aquest cas és substituït per un altre codi que s’anomena CODI_GIS[ nou caracters numèrics]

Codificació per les parcel·les urbanes codi UTM

De la mateixa manera que hem fet la taula d’agregacions per les illes ho faríem per les parcel·les

Agregacions dels habitants per parcel·la

Tal com es pot veure el nombre d’habitants per parcel·la és molt menor que en el cas de les illes, però clar depèn de l’edificació en vertical que hi hagi.

L’agregació per portals o números de policia la faríem en base a un codi que es genera directament de l’adreça postal. El codi NP estaria format per codiCarrer+NumCasa+Lletra, corresponent a cinc caracters numèrics pel codi de carrer, tres pel número de casa, i un per la lletra que si no n’hi ha, que és el normal, es posa una x.

Numeros de Carrer. Codificació CodiCarrer.NumCarrer.Lletra

Com podem veure són els números de carrer que es correspondran amb els portals de les cases i/o les escales. Podem fer l’agregació igual que s’ha fet per les Illes i les parcel·les.

Agregació d’habitants per portal

En resum, d’aquesta manera podem construir les agregacions d’habitants segons la unitat de referència geogràfica que agafem.

Aquesta georeferenciació agregada dels habitants de la ciutat ens pot permetre fer estudis de densitat de població per barris o per àrees concretes de la ciutat, també per carrers, vies i eixos i preveure necessitats de serveis a la població.

 

Polígons de Voronoi

En aquest article es descriurà el funcionament dels polígons de Voronoi, una eina molt important a l’hora d’estudiar àrees d’influència.

Els polígons de Voronoi es basen en la distància euclidiana, i són molt apropiats quan les dades són qualitatives. Es tracta de fer una partició del pla, a partir d’uns punts que anomenarem punts generadors.

Aquesta partició del pla en regions té la peculiaritat de que des de qualsevol punt de dins d’una regió determinada, la distància al punt generador corresponent és sempre menor que la distància a qualsevol altre punt generador extern. Per tant, les fronteres de les regions són equidistants de dos o mes punts generadors.

Inicialment, aquest polígons van ser creats per l’anàlisi de dades meteorològiques, però avui en dia s’utilitzen també per determinar zones d’influència, que és el que s’explicarà en aquest article.

Els polígons de Voronoi serveixen per dividir un espai en un número determinat de regions. S’especifiquen un conjunt de punts (punts generadors) i quan es fa el diagrama, aquests queden dividits pels polígons, un punt en cada regió. Les regions s’anomenen cel·les o polígons de Voronoi.

Cada polígon correspon a l’àrea d’influència, per dir-ho d’alguna manera, del punt  que conté.

Primerament, crec que és interessant posar un exemple per entendre millor per a què serveixen els polígons:

Suposem el cas de que s s’està estudiant els centres d’atenció primària (CAP) del terme municipal de Mataró, i es vol construir un altre i no se sap on. Gràcies a les zones d’influència creades mitjançant els polígons de Voronoi, es podrà situar més o menys el nou CAP.

El programa que s’ha utilitzat, a més del Geomedia, ha sigut el Global Mapper.

Global Mapper és una potent aplicació que combina eines de tractament de dades espacials amb un accés a gran varietat de formats d’arxius. És molt útil com a complement del Geomedia.

Amb el Geomedia s’han exportat els caps com una única entitat, i el contorn de Mataró s’ha aconseguit agafant el perfil de la unió de totes les illes que formen Mataró.

Terme municipal amb els CAPS

Tots els arxius exportats són de tipus ShapeFile, per tal de que Global Mapper els reconegui i es pugui treballar amb ells.

Un cop es té el terme municipal de Mataró amb els CAPS, és hora de passar a l’acció, el procés és simple, i el resultat és molt satisfactori.

Primerament es selecciona tot i es crea el diagrama de Voronoi des del menú d’anàlisi.

Apareixerà una finestra en la que s’haurà d’indicar que es volen allargar els límits uns 4000 metres, això permetrà que, en cas de que el diagrama no arribi a tocar el perímetre de Mataró, aquest s’allargui fins a tocar-lo.

Allargar límits

Un cop allargats, només cal dir que el límit fins on s’allarguen els polígons és l’àrea contenidora, és a dir, el terme municipal de Mataró. Això es configura a partir del botó “Bounds” i seleccionant l’última opció. Per últim s’accepta per crear els polígons.

Limitar polígons

La imatge de Mataró amb els seus CAPS quedaria dividida pels polígons de Voronoi, hi hauria una cel·la per cada CAP.

Aquests polígons resultants, permeten veure l’àrea d’influència de cada CAP.

Polígons creats

Observant la imatge, es pot veure les divisions que corresponen a cada CAP, hi ha una concentració més elevada al centre urbà, degut a que la població és notablement més elevada.

El CAP de dalt a la dreta, el de Rocafonda-Palau, té molta zona d’influència, això és perquè la zona Nord de Mataró no està tant urbanitzada com la resta.

Segons la població, i el número de places de cada CAP, fent ús dels diagrames de Voronoi, es podria situar un futur CAP.