Werking van Postcode API
Ik heb al redelijk recentelijk een postcode database gedownload, om vervolgens de afstand te berekenen. Die database schijnt na een paar controles, niet helemaal volledig te zijn. Nu heb ik een API gevonden op het internet (Klik) waar een paar postcodes die misten in mijn database wel in stonden. Mijn vraag is, hoe gebruik ik zo'n API?
Gewijzigd op 04/08/2012 23:11:47 door Albert de Wit
http://wiki.dreamhost.com/index.php/CURL, of als je makkelijker wilt doen gebruik je de functie file_get_contents, zie http://php.net/file_get_contents, om de data die de pagina genereert uit te lezen.
Daarna kan je d.m.v. json_decode (http://php.net/json_decode) de response van de api omzetten naar een array die je daarna verder kan gebruiken in je applicatie.
Door middel van een CURL opdracht kan je een HTTP request versturen, zie: Daarna kan je d.m.v. json_decode (http://php.net/json_decode) de response van de api omzetten naar een array die je daarna verder kan gebruiken in je applicatie.
Gewijzigd op 04/08/2012 21:10:54 door Thomas Verschoof
cURL is niet eens nodig, je kan ook file_get_content() gebruiken.
- Aar - op 04/08/2012 21:08:06:
En kies een betere titel, API is zo globaal ;-)
Sorry, wat zou wel een goede titel moeten zijn?
Toevoeging op 04/08/2012 21:53:20:
Thomas Verschoof op 04/08/2012 21:09:42:
of als je makkelijker wilt doen gebruik je de functie file_get_contents, zie http://php.net/file_get_contents, om de data die de pagina genereert uit te lezen.
Ok bedankt, ik lees nu de pagina http://postcode-api.nl/adres/9207dj/ uit. Ik krijg precies wat ik op dit pagina zie. Hoe kan ik nu een specifiek element krijgen? Ik doel dan op bijvoorbeeld Latitude (in dit geval 53.10000000). Hoe krijg ik zoiets in een variabele?
Werking Postcode-API?
En doe eens een print_r() op json_decode()
Gewijzigd op 04/08/2012 21:59:25 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$json = file_get_contents('http://postcode-api.nl/adres/'.$_GET['postcode'].'/');
$json = json_decode($json);
$json = $json[0];
echo '<table>';
echo '<tr><td>Provincie</td><td>'.$json->{'provincie'}.'</td></tr>';
echo '<tr><td>Gemeente</td><td>'.$json->{'gemeente'}.'</td></tr>';
if ($json->{'alternatief'}!=''){
echo '<tr><td>Plaats</td><td>'.$json->{'alternatief'}.'</td></tr>';
}else{
echo '<tr><td>Plaats</td><td>'.$json->{'plaats'}.'</td></tr>';
}
echo '<tr><td>Straat</td><td>'.$json->{'straat'}.'</td></tr>';
echo '<tr><td>Postcode</td><td>'.$json->{'postcode'}.'</td></tr>';
echo '<tr><td>Latitude</td><td>'.$json->{'latitude'}.'</td></tr>';
echo '<tr><td>Longtitude</td><td>'.$json->{'longtitude'}.'</td></tr>';
?>
$json = file_get_contents('http://postcode-api.nl/adres/'.$_GET['postcode'].'/');
$json = json_decode($json);
$json = $json[0];
echo '<table>';
echo '<tr><td>Provincie</td><td>'.$json->{'provincie'}.'</td></tr>';
echo '<tr><td>Gemeente</td><td>'.$json->{'gemeente'}.'</td></tr>';
if ($json->{'alternatief'}!=''){
echo '<tr><td>Plaats</td><td>'.$json->{'alternatief'}.'</td></tr>';
}else{
echo '<tr><td>Plaats</td><td>'.$json->{'plaats'}.'</td></tr>';
}
echo '<tr><td>Straat</td><td>'.$json->{'straat'}.'</td></tr>';
echo '<tr><td>Postcode</td><td>'.$json->{'postcode'}.'</td></tr>';
echo '<tr><td>Latitude</td><td>'.$json->{'latitude'}.'</td></tr>';
echo '<tr><td>Longtitude</td><td>'.$json->{'longtitude'}.'</td></tr>';
?>
werkt prachtig!! bedankt!
Toevoeging op 05/08/2012 00:17:13:
nu heb ik nog snel een vraagje,
na even snel onderzoek gedaan te hebben uit mijn bestaande database die ik heb gedownload, blijkt dat er verschil is tussen de afstand van postcodes.
als ik een radius van 5 kilometer invoer krijg ik van (random) 7461 de volgende postcodes
7460
7461
7462
7463
7466
7467
en als ik een radius invoer bij de postcode-api.nl van 5 kilometer krijg ik
7461
7462
7463
7466
7467
7468
is dit gewoon een verschil tussen de databases of is ligt dit aan het feit dat mijn database 6pp postcodes berekent en de API de 4pp gebruikt?
kan het verschil cruciaal zijn?
Als mensen wel 5 km willen rijden, doen ze er 6 ook wel (als de volgende stap 50 km is etc).
tja, 5 kilometer is vrij klein lijkt mij. Als mensen op een site iets zoeken, gaan ze heus wel verder dan 10 kilometer ervoor rijden. Of fietsen.
Het verschil zit m in de gegevens in de postcode tabel van d-centralize. Die kloppen namelijk niet. Ik krijg via google geocode api andere coordinaten (verschil 3 km)
ik gebruik http://postcode-api.nl/
Ik zie niet de afstanden maar mijn postcode database (die ik ondertussen gewist heb) toonde minder postcodes aan binnen een radius dan deze postcode-api
d-centralize is waar je jouw postcode database vandaan hebt. Die is dus onvolledig en incorrect.
is het handiger om een API te gebruiken?
wat als een API ophoud met bestaan?
wat als een API tijdelijk down is?
is het handiger om een API te importeren naar een database?
Daar is het voor. Dus niet om zelf alles te downloaden en te moeten upgraden.
Als de API down is, moet je gewoon een melding geven dat het nu niet mogelijk is om zoiets te berekenen oid.
Als het ophoud met bestaan, zoek je een ander.
Kijk ook postcodes wijzigen: denk aan nieuwe straten/wijk of herindelingen (zeldzamer).
www.postcode.nl, die schijnen een volledige Postcode-database te hebben. Is wel betaald, maar is als ik het goed heb wel redelijk betaalbaar.
Vergeet niet dat er wekelijks een hoop postcode-mutaties plaatsvinden, en een actuele database zeer handig kan zijn als je op postcodes wilt controleren.
Vergeet niet dat er wekelijks een hoop postcode-mutaties plaatsvinden, en een actuele database zeer handig kan zijn als je op postcodes wilt controleren.
tja, ik weet zelf niet in hoeverre postcode-api.nl up to date is.
Oké, je koopt de blokkade om ipv die te omzeilen.
omzeilen? postcode-api.nl verschaft het naar mijn mening gratis. alles wat er op dit site staat is hoe het te gebruiken. totaal niets anders
Eddy Erkelens op 05/08/2012 13:33:28:
90 euro voor iets wat ook met een (gratis) API kan.... of desnoods met cURL() vind ik nog best veel.
Oké, je koopt de blokkade om ipv die te omzeilen.
Oké, je koopt de blokkade om ipv die te omzeilen.
Heb je mijn laatste alinea trouwens gelezen?
Voor de liefhebbers: Elke dag/week verdert er een hoop qua postcode's.
Gewijzigd op 05/08/2012 13:45:27 door - Ariën -
Ik heb een sterk vermoeden dat ze ook de database van d-centralize gebruiken (in ieder geval de lat en long -die dus niet kloppen-)
@Aar
Zo goedkoop is dat niet, voor de pro versie betaal je bijna 1700 euro (dat was begin dit jaar)
Ger van Steenderen op 05/08/2012 13:54:08:
Albert, ik ben zo 'gemeen' geweest om dat te uit te testen, en de conclusie is: nee.
Ik heb een sterk vermoeden dat ze ook de database van d-centralize gebruiken (in ieder geval de lat en long -die dus niet kloppen-)
Ik heb een sterk vermoeden dat ze ook de database van d-centralize gebruiken (in ieder geval de lat en long -die dus niet kloppen-)
Ik had dus met de gedownloade database van d-centralize en die toonde noujuist verschillen met deze API