Grote geocoding batch

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johan Vels

Johan Vels

20/06/2014 00:17:38
Quote Anchor link
Hallo iedereen,

Zit met het volgende wil een grote geocoding batch uitvoeren. Hierbij wil ik gebruik maken van
The Google Geocoding API. Er is toegang tot een Google Business key.

Wil als output JSON gaan gebruiken.

Maak momenteel gebruik van de volgende code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
 
// zet adres in variable
$address = "Eindhovenstraat 1324 Almere";
 
// zet + sign in lege ruimte voor google
$address = str_replace(" ", "+", $address);
 
 
$address_url = "https://maps.googleapis.com/maps/api/geocode/json?address=$address&sensor=false";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $address_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
 
$response_a = json_decode($response);
 
//print adres
echo $formatted_address = $response_a->results[0]->formatted_address.'<br />';
 
//print Latitude en Longitude van adres
echo $lat = $response_a->results[0]->geometry->location->lat.'<br />';
echo $long = $response_a->results[0]->geometry->location->lng;

?>


Nu zou ik dus willen dat ik in $address meerdere adressen kan zetten zodat er een batch gedaan kan worden. En er als output een JSON komt met daarin alle adressen.

Hoe zou ik dit het beste kunnen aanpakken?
Gewijzigd op 20/06/2014 00:20:10 door Johan Vels
 
PHP hulp

PHP hulp

17/11/2024 15:46:49
 
Erwin H

Erwin H

20/06/2014 07:55:47
Quote Anchor link
Niet. Google accepteert bij mijn weten niet meerdere adressen per request. Je zal dus elk adres apart moeten doen.
 
Johan Vels

Johan Vels

20/06/2014 15:56:00
Quote Anchor link
Erwin H op 20/06/2014 07:55:47:
Niet. Google accepteert bij mijn weten niet meerdere adressen per request. Je zal dus elk adres apart moeten doen.

Hallo Erwin,

Bedankt voor je snelle duidelijke antwoord, helder. Zoiets dacht ik al.
Mijn vraag nu is hoe ik dit wel zou kunnen bereiken.

Dus dat hij de adressen één voor één queried denk
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
select * from geo.places where text=
uit bv een lokale database adressen. Of bv uit een lijst haalt denk CSV en in één bestand vervolgens output onder elkaar met Latitude en Longitude.

Ben opzoek gegaan naar een tutorial op internet hierover maar vond er geen.
Gewijzigd op 20/06/2014 15:57:23 door Johan Vels
 
Erwin H

Erwin H

20/06/2014 15:59:30
Quote Anchor link
Vraag is welke gegevens je al hebt (op welke manier dan ook) en welke gegevens je nodig hebt. Als je een lijst het met adressen en de coordinaten erbij nodig hebt, dan zal je via een for loop door die lijst moeten lopen en voor elk adres een call naar google moeten maken om de coordinaten te krijgen (let dan wel op het maximale aantal requests dat Google toestaat). Heb je dan alle coordinaten, dan kan je die wel weer gewoon met de hele lijst in 1 keer verwerken. Het gaat puur om de call naar Google waar je niet alles tegelijk kunt doen.
 
Johan Vels

Johan Vels

20/06/2014 16:11:37
Quote Anchor link
Gegevens die ik heb zijn als volgt:
Straatnaam + Nummer + Stad

Gegevens die nodig zijn:
Latitude + Longitude.

Ah, een for loop zou je hierover kunen uitbreiden en wellicht een voorbeeld kunnen geven in vorm van code? Is het gemakkelijker om een for loop te doen met een CSV of database of bv platte html tekst?

Het aantal request waar toegang tot is zijn er 100,000 p.dag.

Bedankt voor het meedenken!
 
Erwin H

Erwin H

20/06/2014 16:26:15
Quote Anchor link
De limiet per dag is 1 ding waar je op moet letten, er is ook nog een limiet per seconde. Nu weet ik niet precies hoe snel de api is, maar dus wel iets om op te letten als je een hele batch in een for loop laat gaan.

Code...? Pseudo code zou genoeg moeten zijn als je enige kennis van php hebt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$data = array( adresgegevens );

foreach element in data {
  call google api
  extract lat/long from results
  save lat/long to database
}

Als je een beetje php kennis hebt moet dit allemaal niet moeilijk in te vullen zijn.

Zorg dat je de gegevens in een database hebt zitten, kan je er veel meer mee dan in een csv of tekst bestand.
 
Johan Vels

Johan Vels

20/06/2014 16:43:18
Quote Anchor link
Ah, hier kan ik wel wat mee.

Heb ook een tutorial weten te vinden: http://imagine-it.org/google/articles/geocode.htm

Echter al wel uit 2007..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.