Home / SQL Server / Nederlandse postcodetabel + SQL Script voor import
Nederlandse postcodetabel

Nederlandse postcodetabel + SQL Script voor import

De Nederlandse Postcodetabel bevat informatie over alle postcodes die in Nederland bekend zijn. Dit is erg handig als je meer informatie wilt over een bepaalde postcode zoals een geografische locatie of de plaats die bij een postcode hoort. We laten in dit artikel zien wat je met deze postcodes kunt doen.

De bron van Nederlandse postcodes is het kadaster. Het kadaster levert via de site zogenaamde “BAG-bestanden”. Hierin zit alle informatie over woningen en gebouwen, onder andere de postcode maar nog veel meer interessante data. Deze bestanden moet je eerst bewerken voor je ze kunt gebruiken. Dit is behoorlijk ingewikkeld. Ik adviseer je om het wiel niet zelf te gaan uitvinden maar een kant-en-klaar bestand te gebruiken. Er lopen initiatieven voor de data extractie maar jezelf hierin verdiepen kost bergen tijd.

Hoe werkt de SQL postcodetabel?

Iedere postcode in combinatie met de minimale en maximale huisnummer-range heeft een eigen rij in de tabel. Ook handig van deze tabel zijn de X-Y coordinaten, ook wel latitude/longitude genoemd. Ik heb met behulp van een SQL Functie direct de GeoLocation berekend zoals je in onderstaand SQL statement kunt zien.

De gratis postcodetabel tabel bevat in totaal 471.993 rijen dus het is een flink grote tabel. Met bijgevoegd SQL Script kun je in een keer alle data importeren in Microsoft SQL Server. Onderaan deze post vind je een download link, het SQL script. Let op dat dit bestand niet up-to-date is en uit < 2010 is. Ik adviseer je om eenmalig de nieuwste postcodetabel aan te schaffen via postcodestore. Dit kost 249 euro en voorziet je in ruim 9 miljoen up-to-date rijen data. Het bestand wordt maandelijks ge-update dus je kunt ook later nog eens een nieuwe file aankopen. Er staan ook tutorials op hoe je de data komt inlezen.

Als je een beetje handig met SQL bent weet je natuurlijk wel hoe je met deze data om moet gaan. Ik zal binnenkort een artikel publiceren hoe je vanuit een tabel met een postcode/huisnummer de geografische gegevens kunt tonen, bijvoorbeeld in Excel Maps of Power BI.

Nederlandse postcodetabel animatie

Postcodetabel aanmaken

Onderstaande SQL voer je uit om de postcodetabel aan te maken. Vervolgens voer je het script in SQL server uit om de tabel te vullen met postcodes.

CREATE TABLE [dbo].[REF_Postcode_NL](
[id] [FLOAT] NULL,
[postcode] [nvarchar](255) NULL,
[postcode_id] [FLOAT] NULL,
[pnum] [FLOAT] NULL,
[pchar] [nvarchar](255) NULL,
[minnumber] [FLOAT] NULL,
[maxnumber] [FLOAT] NULL,
[numbertype] [nvarchar](255) NULL,
[street] [nvarchar](255) NULL,
[city] [nvarchar](255) NULL,
[city_id] [FLOAT] NULL,
[municipality] [nvarchar](255) NULL,
[municipality_id] [FLOAT] NULL,
[province] [nvarchar](255) NULL,
[province_code] [nvarchar](255) NULL,
[lat] [FLOAT] NULL,
[lon] [FLOAT] NULL,
[rd_x] [FLOAT] NULL,
[rd_y] [FLOAT] NULL,
[location_detail] [nvarchar](255) NULL,
[changed_date] [datetime] NULL,
[geographypoint] AS ([geography]::STGeomFromText(((('POINT('+CONVERT([VARCHAR](20),[lon],(0)))+' ')+CONVERT([VARCHAR](20),[lat],(0)))+')',(4326)))
) ON [PRIMARY]

Microsoft Excel Power Maps

Wat je me de postcodes kunt doen is data op de kaart laten zien. Zo kun je met de eerste vier cijfers van de postcode data in Excel op de kaart tonen via Power Maps. Deze Power Maps zit gratis in Excel vanaf versie 2013. Het heet in Excel 2016 “3D kaarten” en ziet er als volgt uit:

Postcodes nederland op de kaart tonen via power maps

DOWNLOADEN POSTCODETABEL



Check Also

Linked Server – Why and how use them!

A linked server is used to connect to another (remote) database or file (Xls, CVX) …

22 comments

  1. Wat is je bron. Mogen we updates verwachten. Dit is verweg de meest bruikbare tabel die ik gevonden heb.
    Ga hem zeker proberen.

  2. hi Ronald, je code geeft bij mij de nodige fouten – (punctuation error)

  3. deze melding; bekend?

    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘AS (geography::STGeomFromText((((‘POINT(‘+CONVERT(VARCHAR(20),lon,(0)))+’ ‘)+CON’ at line 23

  4. ah.. dat verklaart een hoop. je hebt zeker geen mysql versie liggen;)?

  5. Plaatsnamen zijn vernacheld, kijk bijv. maar eens naar ‘1e Ex’.Half Friesland gebruikt ook stomme tekens in hun plaatsnamen en zijn ook allemaal incorrecte encoding weggeschreven. Gelukkig is het eenvoudig genoeg met een search & replace te repareren, want consistent.

  6. Ik zoek eigenlijk gewoon een mogelijkheid om een grote tabel met postcodes gekoppeld aan huisnummer (ranges) en plaatsnaam. In het formaat van:

    postcode | huisnummer (range) | plaatsnaam

    voorbeeld (fictief):

    3200AB | 1 – 100 | Rotterdam

    Deze tabel zou ik het liefst in Excel in kunnen lezen (dus CSV formaat of xlsx).
    Is er iemand die mij kan vertellen hoe dit te doen?

  7. Je bent geweldig! Hier heb ik wat aan! Eens kijken of dit ook fijn kan samenwerken met open street maps of google maps 😉

  8. Mooie tabel, maar ik krijg het script niet gedraaid in visual studio of SSMS, in beide gevallen krijg ik een melding over Memory en execute geeft ´query completed with errors´ zonder verder bericht.

    Iemand tips hoe ik dit moet doen?

  9. Beste allemaal.
    Ik heb de excel gedownload
    deze vervolgens als csv bestand opgeslagen
    in foxpro met import de import wizard gebruikt en nu is het een postcode.dbf .

  10. Top, vriendelijk bedankt! Precies wat ik zocht, ook met lengte- en breedtegraad.

    Exporteren naar CSV is in de meeste gevallen de beste optie. Mysql en Postgres kunnen CSV’s importeren.

    Hup & hop 🙂

  11. Hi Ronald,

    Ten eerste ongelooflijk bedankt voor deze dataset. Heel erg leuk en interessant.
    Ik liep alleen tegen een klein foutje aan. Er zitten bepaalde Latitude Longitude coordinaten verkeerd in.
    Voorbeeld: er zijn meerdere nederlandse plaatsen met een lat =< 49. Echter is het zuidelijkste puntje van Nederland boven de 50 lat. Is er een manier dit op te lossen? Of zal ik handmatig alles langs moeten gaan?

    Alvast bedankt!

    Renier

    • Jillis Eikelenboom

      Dezelfde fout constateerde ik ook, nadat ik de excel eerst als csv in PostgreSQL had ingelezen en daarna in QGIS had gevisualiseerd. Ook liggen er een aantal postcodes in Vlaanderen en in het IJsselmeer.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *