Outdated version of the documentation. Find the latest one here.

7.2. Lesson: Análisis Vectorial

También se puede proceder al análisis de datos vectoriales para saber cómo los distintos elementos interactúan entre sí en el espacio. Hay muchas funciones relacionadas con el análisis en SIG, así que no nos detendremos en todas ellas. En su lugar, plantearemos una pregunta e intentaremos resolverla utilizando las herramientas proporcionadas por QGIS.

El objetivo de esta lección: Plantear una pregunta y contestarla utilizando las herramientas de análisis.

7.2.1. basic El proceso SIG

Antes de comenzar, sería de utilidad conocer de manera general los pasos que podemos seguir para resolver cualquier problema SIG. Lo que debemos hacer es lo siguiente:

  1. Plantear el problema

  2. Obtener los datos

  3. Analizar el problema

  4. Presentar los resultados

7.2.2. basic The problem

Comencemos este procedimiento eligiendo un problema que se deba resolver. Por ejemplo, imaginemos que eres un agente inmobiliario que está buscando un inmueble en Swellendam para clientes con el siguiente perfil:

  1. It needs to be in Swellendam.
  2. It must be within reasonable driving distance of a school (say 1km).
  3. It must be more than 100m squared in size.
  4. Closer than 50m to a main road.
  5. Closer than 500m to a restaurant.

7.2.3. basic The data

Para resolver todas estas preguntas, vamos a necesitar los siguientes datos:

  1. The residential properties (buildings) in the area.
  2. The roads in and around the town.
  3. The location of schools and restaurants.
  4. The size of buildings.

All of this data is available through OSM and you should find that the dataset you have been using throughout this manual can also be used for this lesson. However, in order to ensure we have the complete data, we will re-download the data from OSM using QGIS’ built-in OSM download tool.


Aunque hay coherencia en los campos de datos que encontramos en las descargas de OSM, pueden variar en su cobertura y detalle. Si ves, por ejemplo, que la región que has elegido no contiene información sobre restaurantes, quizás necesitas elegir otra región.

7.2.4. basic Follow Along: Start a Project

  • Start a new QGIS project.
  • Use the OpenStreetMap data download tool found in the Vector ‣ OpenStreetMap menu to download the data for your chosen region.
  • Save the data as osm_data.osm in your exercise_data folder.
  • Note that the osm format is a type of vector data. Add this data as a vector layer as usually Layer ‣ Add vector layer..., browse to the new osm_data.osm file you just downloaded. You may need to select Show All Files as the file format.
  • Select osm_data.osm and click Open
  • In the dialog which opens, select all the layers, except the other_relations and multilinestrings layer:

This will import the OSM data as separate layers into your map.

The data you just downloaded from OSM is in a geographic coordinate system, WGS84, which uses latitude and longitude coordinates, as you know from the previous lesson. You also learnt that to calculate distances in meters, we need to work with a projected coordinate system. Start by setting your project’s coordinate system to a suitable CRS for your data, in the case of Swellendam, WGS 84 / UTM zone 34S:

  • Open the Project Properties dialog, select CRS and filter the list to find WGS 84 / UTM zone 34S.
  • Haz clic en OK.

We now need to extract the information we need from the OSM dataset. We need to end up with layers representing all the houses, schools, restaurants and roads in the region. That information is inside the multipolygons layer and can be extracted using the information in its Attribute Table. We’ll start with the schools layer:

  • Right-click on the multipolygons layer in the Layers list and open the Layer Properties.
  • Go to the General menu.
  • Under Feature subset click on the [Query Builder] button to open the Query builder dialog.
  • In the Fields list on the left of this dialog until you see the field amenity.
  • Click on it once.
  • Click the All button underneath the Values list:

Now we need to tell QGIS to only show us the polygons where the value of amenity is equal to school.

  • Double-click the word amenity in the Fields list.
  • Watch what happens in the Provider specific filter expression field below:

The word "amenity" has appeared. To build the rest of the query:

  • Click the = button (under Operators).
  • Double-click the value school in the Values list.
  • Click OK twice.

This will filter OSM’s multipolygons layer to only show the schools in your region. You can now either:

  • Rename the filtered OSM layer to schools and re-import the multipolygons layer from osm_data.osm, OR
  • Duplicate the filtered layer, rename the copy, clear the Query Builder and create your new query in the Query Builder.

7.2.5. moderate Try Yourself Extract Required Layers from OSM

Using the above technique, use the Query Builder tool to extract the remaining data from OSM to create the following layers:

  • roads (from OSM’s lines layer)
  • restaurants (from OSM’s multipolygons layer)
  • houses (from OSM’s multipolygons layer)

You may wish to re-use the roads.shp layer you created in earlier lessons.

Comprueba tus resultados

  • Save your map under exercise_data, as analysis.qgs (this map will be used in future modules).
  • In your operating system’s file manager, create a new folder under exercise_data and call it residential_development. This is where you’ll save the datasets that will be the results of the analysis functions.

7.2.6. basic Try Yourself Find important roads

Some of the roads in OSM’s dataset are listed as unclassified, tracks, path and footway. We want to exclude these from our roads dataset.

  • Open the Query Builder for the roads layer, click Clear and build the following query:

    "highway"  != 'NULL' AND "highway" != 'unclassified' AND "highway" != 'track' AND "highway" != 'path' AND "highway" != 'footway'

You can either use the approach above, where you double-clicked values and clicked buttons, or you can copy and paste the command above.

This should immediately reduce the number of roads on your map:


7.2.7. basic Try Yourself Convertir el SRC de una Capa

Because we are going to be measuring distances within our layers, we need to change the layers’ CRS. To do this, we need to select each layer in turn, save the layer to a new shapefile with our new projection, then import that new layer into our map.


En este ejemplo, vamos a usar el SRC WGS 84 / UTM zone 34S, pero puedes utilizar un SRC UTM que sea más apropiado para tu región.

  • Right click the roads layer in the Layers panel.
  • Click Save as...
  • In the Save Vector As dialog, choose the following settings and click Ok (making sure you select Add saved file to map):

The new shapefile will be created and the resulting layer added to your map.


If you don’t have activated Enable ‘on the fly’ CRS transformation or the Automatically enable ‘on the fly’ reprojection if layers have different CRS settings (see previous lesson), you might not be able to see the new layers you just added to the map. In this case, you can focus the map on any of the layers by right click on any layer and click Zoom to layer extent, or just enable any of the mentioned ‘on the fly’ options.

  • Remove the old roads layer.

Repeat this process for each layer, creating a new shapefile and layer with “_34S” appended to the original name and removing each of the old layers.

Una vez que hayas completado el proceso para cada capa, haz clic derecho sobre cualquiera de las capas y clic en Zum a la extensión de la capa para enfocar el mapa a la zona de interés.

Ahora que hemos convertido los datos OSM a una proyección UTM, podemos empezar nuestros cálculos.

7.2.8. basic Follow Along: Analizando el Problema: Distancias Desde Colegios y Carreteras.

QGIS te permite calcular distancias desde cualquier objeto vectorial.

  • Make sure that only the roads_34S and houses_34S layers are visible, to simplify the map while you’re working.
  • Click on the Vector ‣ Geoprocessing Tools ‣ Fixed distance buffer tool:

This gives you a new dialog.

  • Configúralo así:


The Distance is in meters because our input dataset is in a Projected Coordinate System that uses meter as its basic measurement unit. This is why we needed to use projected data.

  • Save the resulting layer under exercise_data/residential_development/ as roads_buffer_50m.shp.
  • Click OK and it will create the buffer.
  • When it asks you if it should “add the new layer to the TOC”, click Yes. (“TOC” stands for “Table of Contents”, by which it means the Layers list).
  • Close the Fixed distance buffer dialog.

Ahora tu mapa se parece un poco a esto:


If your new layer is at the top of the Layers list, it will probably obscure much of your map, but this gives us all the areas in your region which are within 50m of a road.

However, you’ll notice that there are distinct areas within our buffer, which correspond to all the individual roads. To get rid of this problem, remove the layer and re-create the buffer using the settings shown here:

  • Note that we’re now checking the Dissolve result box.
  • Save the output under the same name as before (click Yes when it asks your permission to overwrite the old one).
  • Click OK and close the Fixed distance buffer dialog again.

Once you’ve added the layer to the Layers list, it will look like this:


Ahora no hay subdivisiones innecesarias.

7.2.9. basic Try Yourself Distancia desde colegios.

  • Usa el mismo enfoque que anteriormente y crea un buffer para tus colegios.

It needs to be 1 km in radius, and saved under the usual directory as schools_buffer_1km.shp.

:ref:` Comprueba tus resultados <vector-analysis-basic-2>`

7.2.10. basic Follow Along: Areas que se solapan.

Now we have areas where the road is 50 meters away and there’s a school within 1 km (direct line, not by road). But obviously, we only want the areas where both of these criteria are satisfied. To do that, we’ll need to use the Intersect tool. Find it under Vector ‣ Geoprocessing Tools ‣ Intersect. Set it up like this:


The two input layers are the two buffers; the save location is as usual; and the file name is road_school_buffers_intersect.shp. Once it’s set up like this, click OK and add the layer to the Layers list when prompted.

En la imagen inferior, las áreas en azul muestran donde ambos criterios de distancia coinciden


Usted puede borrar las dos capas buffer y solo mantener la que muestra la superposición, dado que eso era lo que queriamos conocer en primer lugar:


7.2.11. basic Follow Along: Select the Buildings

Now you’ve got the area that the buildings must overlap. Next, you want to select the buildings in that area.

  • Click on the menu entry Vector ‣ Research Tools ‣ Select by location. A dialog will appear.
  • Configúralo así:

  • Click OK, then Close.
  • You’ll probably find that not much seems to have changed. If so, move the school_roads_intersect layer to the bottom of the layers list, then zoom in:

The buildings highlighted in yellow are those which match our criteria and are selected, while the buildings in green are those which do not. We can now save the selected buildings as a new layer.

  • Right-click on the houses_34S layer in the Layers list.
  • Select Save Selection As....
  • Set the dialog up like this:
  • The file name is well_located_houses.shp.
  • Haz clic en OK.

Now you have the selection as a separate layer and can remove the houses_34S layer.

7.2.12. moderate Try Yourself Filtrado adicional de nuestros Edificios

Ahora tenemos una capa que nos muestra los edificios en un radio de 1km de una escuela y a menos de 50m de una carretera. Ahora tenemos que reducir la selección para que sólo nos muestre los edificios que están a menos de 500 metros de un restaurante.

Using the processes described above, create a new layer called houses_restaurants_500m which further filters your well_located_houses layer to show only those which are within 500m of a restaurant.

Check your results

7.2.13. basic Follow Along: Seleccione las Construcciones de Tamaño Adecuado

To see which buildings are the correct size (more than 100 square meters), we first need to calculate their size.

  • Open the attribute table for the houses_restaurants_500m layer.
  • Enter edit mode and open the field calculator.
  • Configúralo así:

  • If you can’t find AREA in the list, try creating a new field as you did in the previous lesson of this module.
  • Haz clic en OK.

  • Scroll to the right of the attribute table; your AREA field now has areas in metres for all the buildings in your houses_restaurants_500m layer.
  • Haga clic en el botón del modo de edición de nuevo para finalizar la edición y guarde los cambios cuando se le pida.

  • Build a query as earlier in this lesson:
  • Click OK. Your map should now only show you those buildings which match our starting criteria and which are more than 100m squared in size.

7.2.14. basic Try Yourself

  • Save your solution as a new layer, using the approach you learned above for doing so. The file should be saved under the usual directory, with the name solution.shp.

7.2.15. In Conclusion

Usando la estrategia de resolución de problemas SIG junto con las herramientas de análisis vectorial de QGIS, has sido capaz de resolver un problema con múltiples criterios rápida y fácilmente.

7.2.16. What’s Next?

En la siguiente lección veremos como calcular la distancia mas corta de un punto a otro de una carretera.