Maps

VVD mikt op rijke Amsterdammer; SP op buurt met lage opkomst

Landelijke politici kwamen dit weekend naar Amsterdam om mee te helpen met de campagne. Je mag ervan uitgaan dat er goed is nagedacht over de buurten die ze hebben bezocht: campagneleiders zullen zorgvuldig hebben gekeken naar de politieke, demografische en sociaal-economische kaart van Amsterdam. Welke keuzes hebben ze gemaakt en wat zegt dat over hun strategie?

Eerst wat achtergrond: kiezers van de PvdA en de SP wonen vaak in buurten waar de opkomst laag is. Voor deze partijen is het een logische strategie om te zorgen dat veel mensen in die buurten gaan stemmen. Hoog opgeleide, liberaal geöriënteerde kiezers gaan vaak al stemmen. Partijen die deze groep bedienen hebben dus minder te winnen bij opkomstbevordering en zullen op een andere manier moeten proberen stemmen te winnen.

PvdA

De PvdA stuurde zowel Diederik Samsom als Lodewijk Asscher naar het Osdorpplein in de buurt Osdorp-Oost. Bij de raadsverkiezing in 2010 was dit een buurt waar redelijk veel PvdA werd gestemd, al haalde de partij nog betere scores in buurten als de Bijlmer en de Kolenkit.

VVD

Jeanine Hennis bezocht het Museumkwartier: de één na duurste buurt van Amsterdam (naar woningwaarde), met een overwegend blanke bevolking en veel expats. Daarnaast stond de Noordermarkt op het programma. Officieel ligt deze buurt in de Jordaan maar hij grenst aan de Grachtengordel-West, een buurt met een vergelijkbaar profiel als het Museumkwartier.

In het Museumkwartier en de Grachtengordel-West stemden in 2010 veel mensen op VVD en D66. Dat Hennis naar deze buurten werd gestuurd geeft wel een hint wie de VVD-strategen als hun belangrijkste concurrent zien.

GroenLinks

Kamerlid Jesse Klaver kwam in februari naar de Oosterparkbuurt. In 2010 was dat één van de buurten waar GroenLinks de beste resultaten haalde.

SP

Emile Roemer bezocht de Van der Pekbuurt (Volewijck) in Amsterdam-Noord, waar de SP vier jaar geleden een goede uitslag had. Anders dan de PvdA koos de SP een buurt waar de opkomst vorige keer laag was. Blijkbaar is het doel om sociaal geöriënteerde kiesgerechtigden die mogelijk thuisblijven over te halen om toch te gaan stemmen. (Switch in de grafiek hierboven tussen Museumkwartier en Volewijck om te zien hoe de twee buurten elkaars spiegelbeeld vormen.)

D66

D66 heeft zich niet zoveel aangetrokken van de gegevens op buurtniveau en stuurde Alexander Pechtold vorige week naar het exclusieve Hyperion Lyceum aan het Tolhuisplein in Amsterdam-Noord. Dit adres ligt in de buurt Buiksloterham. Sociaal-economisch scoort deze niet zo hoog en voor wat betreft de verkiezingsuitslagen heeft O+S deze buurt gemakshalve samengevoegd met Volewijck.

Op basis van de cijfers op buurtniveau is Buiksloterham niet echt een buurt waar je Pechtold zou verwachten. Maar het is een langgerekte buurt en daarbinnen vormt Overhoeks, waar het Hyperion ligt, een nieuwbouwgebied dat sterk in opkomst is. Het is een handige lokatiekeuze om je te profileren als hip en pro-onderwijs, al komt het bezoek aan het lyceum misschien wat elitair over.

Komende woensdag komt een bus met (landelijke?) D66-politici naar stations. De lokatie is nog niet bekend, maar een voor de hand liggende gok is dat ze een station bezoeken waar je hoog opgeleide forenzen tegenkomt. Zeg Amsterdam Zuid.

Hoe ver naar het zwembad

Door de crisis en hogere belastingen dreigen tientallen zwembaden hun deuren te sluiten, al is de verwachting dat weinig gemeenten het aandurven om zwembaden te sluiten voor de gemeenteraadsverkiezingen op 19 maart. In Amsterdam neemt de deelraad Oost op 7 januari een besluit over zwembaden. Sluiting van het Flevoparkbad lijkt van de baan, maar het is de vraag of er nog een zwembad op IJburg komt, zoals de bedoeling was.

De kaart hierboven laat voor de Amsterdamse buurten zien wat de gemiddelde afstand is tot het dichtstbijzijnde zwembad, op basis van cijfers van het CBS (klik de kaart voor een grotere versie). Vooral inwoners van Waterland en IJburg wonen vaak ver van een zwembad. Voor de Zwemmonitor is onderzocht wanneer de afstand een belemmering gaat vormen om naar een zwembad te gaan. Op basis van dat onderzoek valt te verwachten dat sommige Amsterdammers het zwembad links laten liggen omdat het te ver weg is.

Uit de CBS-cijfers blijkt dat Amsterdammers gemiddeld 1,9 kilometer van het dichtstbijzijnde zwembad wonen. Voor Rotterdam is dat 1,6 kilometer, voor Den Haag 1,8 kilometer en voor Utrecht 2,1 kilometer.

Technische details hier.

Hoe maak je een kaart met Qgis en gegevens van het CBS


De kaart hierboven laat zien hoe ver inwoners van Amsterdamse buurten gemiddeld van dichtstbijzijnde zwembad wonen (achtergrond; klik de kaart voor een grotere versie). Hoewel de buurt- en wijkgegevens van het CBS in een gebruiksvriendelijke vorm worden aangeboden kostte het me enige moeite om er een kaart van te maken met het open sourceprogramma Qgis (informatie over Qgis hier). Voor anderen die tegen dezelfde knelpunten aanlopen zet ik hieronder stap voor stap op een rij hoe ik het heb aangepakt (ik gebruik Qgis 2.0.1 voor de Mac, wellicht dat sommige details in Windows anders werken).

De wijk- en buurtkaart

Download hier de Wijk- en Buurtkaart van het CBS en het Kadaster. Er zijn verschillende versies, voor het huidige project gebruik ik de aangepaste versie van 2011. Als het pakket is uitgepakt, open dan de relevante shapefile (in dit geval ‘buurt_2011_v2.shp’) in Qgis. Sla het project op.

Selecteer een deel van de kaart

De kaart omvat heel Nederland; in dit geval ben ik alleen in Amsterdam geïnteresseerd. Om de rest van het land te verwijderen:

  1. Rechtsklik op de kaartlaag in het venster Lagen, selecteer Open attributentabel.
  2. In het venster dat nu wordt geopend, klik linksboven de knop Bewerken aan/uitzetten.
  3. Klik op het label boven de kolom GM_NAAM om de records te sorteren op gemeentenaam.
  4. Scroll naar beneden tot je bij Amsterdam bent. Selecteer alle rijen die bij Amsterdam horen door ze links te klikken (om dit in één keer te doen: selecteer de bovenste Amsterdamse rij, hou de SHFT toets ingedrukt en selecteer de onderste Amsterdamse rij).
  5. Klik de knop Selectie omdraaien; nu is alles behalve Amsterdam geselecteerd.
  6. Klik Geselecteerde objecten verwijderen. Klik OK; vervolgens kan het even duren voordat alle niet-Amsterdamse buurten verwijderd zijn.
  7. Klik weer , bevestig dat je de aanpassingen wilt opslaan. Schrik niet als er vervolgens allemaal ERROR-meldingen in de tabel staan. Sluit het scherm. Rechtsklik in het venster Lagen de kaartlaag en selecteer Zoom naar laagextent. Nu heb je een kaart van Amsterdam.

Koppelen aan CBS-gegevens

In de Wijk- en Buurtkaart van het CBS zitten standaard al veel gegevens. In de versie van 2011 die ik gebruik zit de afstand tot het dichtstbijzijnde zwembad al opgenomen; eigenlijk is het dus niet nodig om te koppelen aan andere CBS-gegevens. Ik beschrijf toch welke stappen hiervoor nodig zijn, voor het geval zich een situatie voordoet waarin je gegevens van het CBS wil gebruiken die niet zijn opgenomen in een bepaalde versie van de Wijk- en Buurtkaart. Deze stap kan je desgewenst dus ook overslaan.

Gegevens van het CBS zijn in principe beschikbaar via Statline, maar als je gegevens voor alle buurten in Nederland zou willen downloaden dan heb je al gauw meer cellen nodig dan Statline kan verwerken. Om die reden worden de Kerncijfers Wijken en Buurten als kant-en-klare Excelbestanden aangeboden. Download hier het bestand voor het jaar dat je wil gebruiken. Op dezelfde pagina vind je ook een pdf met een toelichting op de beschikbare cijfers, waarin je ook kan opzoeken in welke jaargang bepaalde variabelen zijn opgenomen. De afstand tot het dichtstbijzijnde zwembad bijvoorbeeld zit niet in de editie 2012; vandaar dat gebruik maak van de kaart en de gegevens voor 2011.

  1. De variabele die we gaan gebruiken is AF_ZWEMB. Het Excelbestand is nogal groot; om het hanteerbaar te maken kan het geen kwaad om de variabelen (kolommen) die je niet gaat gebruiken weg te gooien. Filter vervolgens de kolom GM_NAAM op ‘Amsterdam’ en vervolgens de kolom RECS op ‘Buurt’; zo hou je alleen de gegevens van Amsterdamse buurten over.
  2. In de kolom AF_ZWEMB zitten twee cellen met ontbrekende waarden, aangeduid met een ‘x’. Daar kan Qgis niet goed mee uit de voeten, vervang ze daarom tijdelijk door een getal (bijvoorbeeld -99999). Uiteraard wel onthouden dat dat straks weer aangepast moet worden.
  3. Om de een of andere reden zit er in het bestand geen variabele die straks rechtstreeks kan worden gekoppeld aan de kaartlaag. Creëeer een nieuwe variabele die is opgebouwd uit de letters ‘BU’ plus achtereenvolgens de waarden van GM_CODE, WK_CODE en BU_CODE, dus bijvoorbeeld BU03630000 voor Burgwallen-Oude Zijde. Je kan dit doen met de functie TEKST.SAMENVOEGEN. Noem de nieuwe variabele BU_CODE2.
  4. Zorg dat er rechts naast de variable die je wil gebruiken (AF_ZWEMB) nog tenminste één kolom in de tabel zit.
  5. Kopieer alle zichtbare cellen en plak ze in een teksteditor (wellicht ten overvloede: dus niet in Word). Sla hem op als ‘cbs.csv’.
  6. Er is een kans dat je bij het importeren in Qgis vastloopt omdat Excel een komma gebruikt als scheidingsteken voor decimalen. Een simpele oplossing is om in de teksteditor met zoeken en vervangen de komma’s in punten te veranderen (denk erom dat je op die manier ook eventuele komma’s in buurtnamen verandert in punten; voor het huidige doel is dat overigens niet zo’n ramp).
  7. Klik in Qgis in de menubalk Kaartlagen -> Vectorlaag toevoegen. Klik op Bladeren om het bestand te selecteren. Selecteer bij filetype Comma separated value. Selecteer het cbs.csv-bestand en klik OK. Er is nu een nieuwe laag toegevoegd in het venster Lagen.
  8. Dubbelklik in het venster Lagen op de eerder toegevoegde kaartlaag. Klik Koppelingen. Klik op het plusteken onderin het venster. Er opent nu een nieuw venster met als titel Vectorkoppeling toevoegen. Bij de optie Koppellaag staat waarschijnlijk de naam van csv-laag geselecteerd, dat is ok. Bij Koppelveld en Doelveld moet je matchende variabelen selecteren die als sleutelvariabele worden gebruikt om de bestanden aan elkaar te koppelen. Kies voor het Koppelveld BU_CODE2 en voor het Doelveld BU_CODE. Klik daarna twee keer OK.
  9. In het venster Lagen de kaartlaag rechtsklikken en Attributentabel selecteren. Controleer of de variabelen uit het csv-bestand correct zijn gekoppeld aan de kaartlaag door helemaal naar rechts te scrollen. Als het goed is vind je daar onder meer de variabele cbs_AF_ZWEMB, plus als het goed is daar rechts naast nog tenminste één variabele.
  10. Waarschijnlijk staan de gegevens in cbs_AF_ZWEMB links uitgelijnd; dit komt doordat Qgis de geïmporteerde gegevens standaard opvat als tekst (string).
  11. Klik Bewerken aan/uitzetten. Klik Open veldberekening. Deselecteer alle rijen (knop bovenaan venster). Type een naam voor de nieuwe variabele die je gaat maken en specificeer dat het een Decimaal getal wordt met Precisie 1. Zorg dat in het vak onder Expressie de tekst ‘toreal( "XXX" )’ komt te staan, alleen dan in plaats van XXX de naam van de variabele rechts naast cbs_AF_ZWEMB (dit lijkt me een bug ofwel ik zie iets over het hoofd: om een gekoppelde variabele te selecteren moet je schijnbaar de naam van de volgende variabele invoeren). Klik OK.
  12. Als het goed is is er nu een nieuwe variabele toegevoegd. Je zou misschien verwachten dat de nieuwe waarde in helemaal rechts in de Attributentabel zou staan, maar hij staat tussen de oorspronkelijke variabelen uit de kaartlaag en de gekoppelde variabelen in. Denk er nog even om om de -99999 (of wat je ook hebt ingevuld voor de ontbrekende waarden) weer te verwijderen.

Buurten kleuren op basis van de afstand tot zwembad (choropleth maken)

Om voor elke buurt met een kleur aan te geven hoe ver de inwoners gemiddeld onderweg zijn naar een zwembad:

  1. Dubbelklik in het venster Lagen op de kaartlaag.
  2. Selecteer links Stijl.
  3. Klik Symbool wijzigen. Selecteer Standaard vulling; klik op het zwarte vlak naast Rand en klik in de kleurkiezer op wit, dan twee keer OK (dit is om de grenzen van de buurten wit te maken in plaats van zwart).
  4. Kies in de selector Gradueel, bij Kolom AF_ZWEMBAD, bij Modus ‘Mooie Grenzen’ (in andere situaties kan een andere keuze beter zijn). Kies een geschikt kleurverloop en klik Classificeren. Als je tevreden bent, klik OK.

Locaties van zwembaden toevoegen

Wat je nodig hebt is een csv-bestand met in ieder geval de coördinaten van de zwembaden. Als je de adressen hebt, kan je hier bijvoorbeeld de bijbehorende coördinaten opzoeken (om meer dan 5 adressen op te zoeken moet je een Bing Maps API key aanvragen, zie uitleg op de site).

  1. Klik in de menubalk Project -> Projectinstellingen. In het nieuwe scherm, links CRS klikken. Vervolgens bovenin het scherm de optie Gelijktijdige CRS-transformatie gebruiken aanvinken. Selecteer ‘Amersfoort / RD Nieuw’ als Ruimtelijk Referentie Systeem (dat is het CRS dat het CBS gebruikt). Klik OK.
  2. Klik in de menubalk Kaartlagen -> Tekstgescheiden kaartlaag toevoegen. Klik Bladeren om het csv-bestand te selecteren en klik OK.
  3. Stel de juiste tekstscheidingstekens in. Selecteer bij X-veld en Y-veld de variabelen met de betreffende coördinaten. Klik OK.
  4. Vervolgens moet je de CRS kiezen. Meestal zal dit WGS 84 zijn (filter op EPSG:4326). Klik OK. Als het goed is staan de locaties van de zwembaden nu op de kaart.
  5. Om ze op te maken, dubbelklik in het venster Lagen de laag met de zwembaden. Ik heb in het bestand ook een variabele opgenomen over het type zwembad, die ik hierbij gebruik. Selecteer links in het nieuwe scherm de optie Stijl. Selecteer Categorieën. Selecteer bij Kolom, ‘Type’ (of wat ook de naam is van de variabele die je wil gebruiken). Klik Classificeren. Dubbelklik in de legenda op de symbolen om ze verder op te maken. Klik desgewenst links in het venster op Labels om labels te tonen bij de zwembaden.

Kaart exporteren als pdf of afbeelding

  1. Klik op de knop Nieuwe printvormgeving (of CMD-P) en geef deze een naam.
  2. Klik bovenin het nieuwe scherm Nieuwe kaart toevoegen. Sleep vervolgens de cursor van linksboven naar rechtsonder in het open vak. Als het goed is verschijnt daar de kaart.
  3. Desgewenst klik je Nieuwe legenda toevoegen. Klik vervolgens op de plek waar de legenda moet komen.
  4. Klik naar keuze Exporteren als pdf of Opslaan als afbeelding bovenin het scherm.

Klaar.

How to create a map with Qgis and data from Statistics Netherlands (CBS)

Above is a map of Amsterdam showing the average distance people have to travel to a swimming pool. The map was created with the open source Qgis application and data from Statistics Netherlands (CBS). CBS has data at the neighbourhood level that can be used with a shapefile map they also provide. I’m not very experienced with Qgis and it took me a while to figure out how to create a map with this material. Below I describe the steps that got me there (I use Qgis 2.0.1 for Mac; perhaps things work slightly different in Windows).

CBS data and map

CBS offers data at municipality (gemeente), district (wijk) and neighbourhood (buurt) level on topics including demographics, housing, employment, companies by sector, car ownership, distance to services etc. An Excel file can be downloaded here (select the appropriate year). The same page offers a manual (pdf) specifying which variables are available for which years. To get a general idea of the available data, you could copy the text from the manual and run it through google translate. For technical information, the CBS can be contacted here.

CBS and the Kadaster also offer a map which can be downloaded here. Open the shapefile with the title starting with buurt for the neighbourhood map; wijk for the district map and gemeente for the muncipality map. For the example: below, I’ll use buurt_2011_v2.shp (i.e., the shapefile for version 2 of the 2011 neighbourhood map).

Select a part of the map

The map contains all of the Netherlands, but in this case I’m only interested in Amsterdam. In order to remove the rest of the country:

  1. Right click the map layer in the Layers window to the left; select Open attribute table.
  2. In the new window that opens, click Toggle editing mode (top left).
  3. Click the column name GM_NAME to sort the records by municipality.
  4. Scroll down until you reach records for Amsterdam. Select all rows for Amsterdam by clicking them to the left (to do this more efficiently: select the top Amsterdam row; hold SHFT and click the bottom Amsterdam row).
  5. Click the button Invert selection; now all but Amsterdam is selected.
  6. Click the button Delete selected features. Click OK (it may take a while before all the non-Amsterdam neighbourhoods are deleted).
  7. Again click Toggle editing mode; confirm that you want to save the changes to the layer (don’t be shocked if NULL shows up in all cells). Close the window. Right click the map layer in the Layers window and select Zoom to layer extent. You now have a map of Amsterdam.

.

Join with other CBS data

The Neighbourhood and District Map of the CBS contains many data as is. The 2011 version I’m using contains the distance to nearest swimming pool, so there’s strictly no need to join the map with other data. I’ll nevertheless describe the steps to do so, in case you find yourself in a situation in which you do need to add more data to the map. If you whish, feel free to skip this section.

  1. Use the CBS Excel file refered to above. The variable we’ll use is AF_ZWEMB (average distance to the nearest swimming pool in kilometers). The Excel file is rather large; in order to make it manageable you may want to delete irrelevant columns. Next, filter the column GM_NAAM (municipality) by Amsterdam. Then filter the column RECS by Buurt (neighbourhood). Now you only have the Amsterdam neighbourhoods.
  2. The column AF_ZWEMB contains two missing values represented by ‘x’. Qgis won’t handle them properly; replace them with a number (e.g. -99999). Don’t forget to change them back later.
  3. Oddly, the Excel file doesn’t contain a ready variable that can be used as a key to join the data with the map later. Create a new variable consisting of the letters ‘BU’ plus the values of GM_CODE, WK_CODE and BU_CODE (for example BU03630000 for the neighbourhood Burgwallen-Oude Zijde). You can use Excel’s CONCATENATE function for this. Name the new variable BU_CODE2.
  4. Make sure there’s at least one variable to the right of AF_ZWEMB (or add one). This needn’t contain values but must be named.
  5. Copy all visible cells to a text editor (perhaps needless to say: not MS Word). Save it as cbs.csv.
  6. Check if the file doesn’t use comma’s as decimal marks. If it does, a simple way to fix this is by using search/replace. This will also change comma’s in neighbourhood names into points, but for the current project that’s not really a problem.
  7. In Qgis, in the menu bar select Layer -> Add Vector Layer. Click Browse to select a file and indicate you’re looking for Files of type: Comma separated value. Select the cbs.csv file and click OK. A new layer has been added to the Layers window.
  8. Double click the map layer added earlier. Click Joins to the left of the new window. Click the plus-sign to the bottom of the window. A new window named Add vector join will open. At Join layer, the cbs.csv file is probably selected; that’s ok. The Join field and Target field options should contain identical variables to be used as key variable for the join. Select BU_CODE2 for Join field and BU_CODE for Target field. The click OK twice.
  9. In the Layers window, right click the map layer and select Open attribute table. Check if the variables from the cbs.csv file have been added to the right of the table. Among others, you should find the variable cbs_AF_ZWEMB there, as well as at least one more variable to the right of it.
  10. The cbs_AF_ZWEMB variable is probably left aligned, because Qgis treats joined data as character strings. Click Toggle editing mode. Deselect all rows (button to the top of the window). Click Open field calculator. Type a name for the new variable you’re going to create and specify that it’s going to be a Decimal number with Precision 1. In the box below Expression, fill out the text ‘toreal( "XXX" )’, only replace XXX with the name of the variable to the right of cbs_AF_ZWEMB (I guess this is a bug: in order to select a joined variable it appears you need to enter the name of the variable to the right of it). Click OK.
  11. You should now have added a new variable. You might expect this variable to be to the right of the table, but it’s actually between the original variables included in the map and the joined variables. Don’t forget to remove the -99999 values (or whatever you used for the missing values).

Colour neighbourhoods by distance to swimming pool (create choropleth)

In order to colour each neighbourhood by average distance to the nearest swimming pool:

  1. Double click the map layer in the Layer window.
  2. To the left of the window, select Style.
  3. Click Simple fill. Click the black box next to Border and use the colour selector to select white.
  4. In the selector, select Graduated; for Column select AF_ZWEMB and for Mode select Pretty Breaks (in other situations, other options may be preferable); select an appropriate color ramp and click Classify. If you’re satisfied, click OK.

Add locations of swimming pools

You’ll need a csv file with at least the coordinates of the swimming pools. If you have the addresses, you can geocode them here (in order to look up more than 5 addresses you’ll need to create a Bing Maps API, see explanation on the website). My file also has the names of the pools and their type (indoor or only outdoor).

  1. In the menu bar, select Project -> Project properties. In the new window, tick off Enable ‘on the fly’ CRS transformation. For CRS, select ‘Amersfoort / RD New’ (the CRS used by CBS). Click OK.
  2. In the menu bar, select Layer -> Add delimited text layer. Click Browse to select the appropriate csv file and click OK.
  3. Select the appropriate delimiters and the appropriate values for the X and Y fields. Click OK.
  4. When prompted, select the appropriate CRS. Usually, this will be WGS 84 (filter by EPSG:4326). Click OK. The locations should now be marked on the map.
  5. In order to format the markings, double click the swimming pools layer and select Style. I choose to use different symbols for indoor and outdoor pools. Select Categorized. For column, select Type (or whatever name you gave to the variable specifying the type of pool). Click Classify. Double click the symbols in the legend to further format them. If you want to add labels to the markings, click Labels to the left of the window.

Export the map as pdf or image

  1. In the menu bar, select Project -> New print composer (or use CMD-P) and give the composer a name.
  2. To the top of the new window, click Add new map. Drag the cursor from the top left to the bottom right of the empty box. The map should now appear.
  3. If you want a legend, click the button Add new legend and then click where you want it. Other buttons offer more options to add elements to the map.
  4. Either click Export as image or Export as PDF.

And you’re done.

About the swimming pools

In case you’re interested in the story behind the map: dozens of Dutch swimming pools may have to close because of the crisis and higher taxes, although it’s expected few municipalities will risk closing a pool before the city council election on 19 March. In Amsterdam, the Oost District Council will decide on swimming pools in early January. It’s expected that closing the Flevoparkbad will no longer be considered, but it’s uncertain whether a new pool will open at IJburg, as projected earlier. The map shows that residents of Waterland and IJburg (to the East and North-East of Amsterdam) have the highest average distance to the nearest swimming pool.

Link addresses to neighbourhoods (or points to polygons) using Qgis

Say, you have a list of addresses and you want to know which neighbourhood they’re in. It turns out this is actually quite easy if you use the free & open source mapping tool Qgis and you have a shapefile of the neighbourhoods. Here’s how it works:

  • Open the shapefile with the neighbourhoods in Qgis.
  • I’ll assume you have a csv file containing the addresses and their coordinates. If not, look up the coordinates of the addresses with a service like GPS Visualizer’s geocoder or Batchgeo (in the latter case, after saving the map go to the bottom of the page to download the kml file; open this in a text editor to get the coordinates).
  • Add the csv to your project by clicking Layer » Add Delimited Text Layer. Check if the correct fields have been selected for X field (longitude) and Y field (latitude). When prompted, select the correct CRS (likely WGS 84).

Both the shapefile with the neighbourhoods and the text file with the addresses should now be in the Layers box.

  • Make sure the shapefile and the text file have the same CRS. If not, create a duplicate of one of them having the CRS that matches the other’s: right click the layer you want to duplicate; click «Save as...», fill out a name and select the correct CRS, then click OK.
  • Add the newly created layer by clicking Layer » Add Vector Layer and selecting the layer you’ve just saved.
  • Click Vector » Data Management Tools » Join Attributes By Location.
  • Select the text (csv) file with the addresses as Target Vector Layer and the shapefile as Join Vector Layer (make sure you select the versions with matching CRS). Give the Output Shapefile a name and click OK.

At this point I always get a warning that input layers have non-matching CRS. Provided the layers’ CRS’s do in fact match, it seems to be ok to ignore this warning. With large files, it may take a while before the data is processed.

  • When prompted, indicate you want to add the new layer to the TOC.
  • When prompted, select the CRS for the new layer.
  • Right click the new layer and select Open Attribute Table.

You should now get a table with the list of addresses, all with the corresponding neighbourhood from the shapefile. You can select all rows and copy and paste them into an empty text or excel file for further analysis. Done.

Pages