Adres opslaan
Hallo,
Ik moet in mijn database adressen opslaan, inclusief de coördinaten. De bedoeling is dat men een postcode invul en dat via (o.a.) de Google Maps API de straat en plaats erbij gezocht worden. Om de requests naar Google te verminderen wilde ik steeds als er iets nieuws opgevraagd is dat opslaan, zodat je je eigen database krijgt met alle gegevens.
Nu vroeg ik mij af hoe ik dit het beste op kon gaan slaan, je weet namelijk het volgende:
- Een provincie zit in een land.
- Een gemeente zit in een provincie.
- Een plaats zit in een gemeente.
- Een straat zit in een plaats.
- Een postcode zit in een straat (een straat kan meerdere postcodes hebben).
- Een huisnummer zit in een straat.
Coördinaten zal ik verder op verschillende manieren nodig hebben, soms een coördinaat van puur een postcode, maar soms ook van een huisnummer.
Heeft iemand een slim idee hiervoor? Ik post zo wel even wat ik in gedachten had.
Mvg,
Jonathan.
Ik moet in mijn database adressen opslaan, inclusief de coördinaten. De bedoeling is dat men een postcode invul en dat via (o.a.) de Google Maps API de straat en plaats erbij gezocht worden. Om de requests naar Google te verminderen wilde ik steeds als er iets nieuws opgevraagd is dat opslaan, zodat je je eigen database krijgt met alle gegevens.
Nu vroeg ik mij af hoe ik dit het beste op kon gaan slaan, je weet namelijk het volgende:
- Een provincie zit in een land.
- Een gemeente zit in een provincie.
- Een plaats zit in een gemeente.
- Een straat zit in een plaats.
- Een postcode zit in een straat (een straat kan meerdere postcodes hebben).
- Een huisnummer zit in een straat.
Coördinaten zal ik verder op verschillende manieren nodig hebben, soms een coördinaat van puur een postcode, maar soms ook van een huisnummer.
Heeft iemand een slim idee hiervoor? Ik post zo wel even wat ik in gedachten had.
Mvg,
Jonathan.
Gesponsorde koppelingen:
Hou ook even in de gaten: maximaal tien requests tegelijk, naar de Google Maps API.
Ok :P Nog een tip voor het datamodel?
Het is maar tot hoever je wilt doornormaliseren. Je laatste stelling (een huisnummer zit in een straat) zou eigenlijk een huisnummer zit in een postcode moeten zijn.
Er is nog iets anders met adressen en Googlemaps: zorg dat je ten minste een postcode hebt. Dat slikt de Googlemaps API namelijk altijd. Er zijn huisnummers als:
Dorpsstraat 24a 1hoog
en daar verslikt Googlemaps zich in.
Edit: hier, nog een kado'tje:
Er is nog iets anders met adressen en Googlemaps: zorg dat je ten minste een postcode hebt. Dat slikt de Googlemaps API namelijk altijd. Er zijn huisnummers als:
Dorpsstraat 24a 1hoog
en daar verslikt Googlemaps zich in.
Edit: hier, nog een kado'tje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function show_address (address, target_field) {
var geocoder = new GClientGeocoder ();
if (geocoder) {
geocoder.getLatLng (address, function(point) {
if (!point) {
target_field.value = 0;
}
else {
var marker = new GMarker (point);
var ll = marker.getLatLng ();
target_field.value = ll.lat () + ',' + ll.lng ();
}
});
}
}
var geocoder = new GClientGeocoder ();
if (geocoder) {
geocoder.getLatLng (address, function(point) {
if (!point) {
target_field.value = 0;
}
else {
var marker = new GMarker (point);
var ll = marker.getLatLng ();
target_field.value = ll.lat () + ',' + ll.lng ();
}
});
}
}
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Nee, een huisnummer zit niet in een postcode: als je een lange straat hebt, is die opgedeeld in blokken. Elk blok heeft een eigen postcode. De nummering van de huisnummers loopt echter niet dwars door de blokken heen, dus als je straat is opgedeeld in twee postcodes is er toch maar één huis met nummer 1.
Of denk ik verkeerd m.b.t. het datamodel?
Btw, weet jij hoe ik een straat en plaatsnaam uit de Google Maps API kan persen? Dat krijg ik allemaal niet terug...
Edit: De enige optie die ik zie is om de straatnaam en plaatsnaam los te rippen van Postcode.nl of TNT.nl, het probleem is dat je daar verplicht een huisnummer in moet vullen, en bijvoorbeeld nummer 1 bestaat niet altijd, dus als het tegenzit is er ergens een straat waarbij de nummers t/m 1000 gebombardeerd zijn, dus heb je pas na 1000 requests beet...
Edit: Nee, op Postcode.nl is datr gelukkig niet verplicht! Dank U God :-)
Of denk ik verkeerd m.b.t. het datamodel?
Btw, weet jij hoe ik een straat en plaatsnaam uit de Google Maps API kan persen? Dat krijg ik allemaal niet terug...
Edit: De enige optie die ik zie is om de straatnaam en plaatsnaam los te rippen van Postcode.nl of TNT.nl, het probleem is dat je daar verplicht een huisnummer in moet vullen, en bijvoorbeeld nummer 1 bestaat niet altijd, dus als het tegenzit is er ergens een straat waarbij de nummers t/m 1000 gebombardeerd zijn, dus heb je pas na 1000 requests beet...
Edit: Nee, op Postcode.nl is datr gelukkig niet verplicht! Dank U God :-)
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
Jonathan schreef op 04.08.2008 22:02:
Nee, een huisnummer zit niet in een postcode: als je een lange straat hebt, is die opgedeeld in blokken. Elk blok heeft een eigen postcode. De nummering van de huisnummers loopt echter niet dwars door de blokken heen, dus als je straat is opgedeeld in twee postcodes is er toch maar één huis met nummer 1.
Of denk ik verkeerd m.b.t. het datamodel?
Of denk ik verkeerd m.b.t. het datamodel?
Ja. Elk huis heeft minstens een postcode, maar meer huizen kunnen dezelfde postcode hebben. Maar zover ga ik meestal niet met normaliseren.
Ik heb een plaatje (je moet wel even coordinaten_id bij elke tabel denken):

A.u.b. tips!

A.u.b. tips!
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
Je wilt bij elke tabel coordinaten hebben? Waarom?
Je hebt namelijk mensen die zich geregistreerd hebben, die hebben huisnummer, toevoeging en postcode doorgegeven. Daarnaast heb je bedrijven die zich op dezelfde wijze geregistreerd hebben. De bedoeling is dat bezoekers (geregistreerd of niet) kunnen zoeken naar bedrijven in de buurt. Dat kan door simpelweg alleen je postcode in te tikken, of alleen je plaatsnaam. Theoretisch zou ik de coördinaten van provincie en gemeente ook kunnen laten vallen, maarja, als je toch bezig bent, why not?
Snap je een beetje het idee?
Snap je een beetje het idee?
Ik heb even alles doorgelezen maar ik begrijp ook niet waarom je niet gewoon kan zoeken op postcode/huisnummer. Ik zie niet in waar je precies coördinaten voor nodig hebt.
Je kunt toch alle postcodes koppelen aan plaatsen (n:1), alle straten aan postcodes (n:m) en alle adressen aan straten (n:1)? Who needs coordinates?
Waarschijnlijk overkill, maar kijk eens naar PostGIS mocht je echt veel met coördinaten willen doen.
Je kunt toch alle postcodes koppelen aan plaatsen (n:1), alle straten aan postcodes (n:m) en alle adressen aan straten (n:1)? Who needs coordinates?
Waarschijnlijk overkill, maar kijk eens naar PostGIS mocht je echt veel met coördinaten willen doen.
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
Ik heb de coördinaten nodig om de afstand tussen twee punten te kunnen berekenen, gewoon met de stelling van Pythagoras.
Edit:
Ik lees net op Wikipedia het volgende:
Moet ik het dus toch andersom doen, namelijk de straten aan de postcodes koppelen?
Edit:
Ik moet dus een tabel hebben met postcodes welke aan een plaats gekoppeld zijn, dan een tabel met straten, dan een koppeltabel om de straten aan een postcode te linken (een straat kan meerdere postcodes hebben, en een postcode kan meerdere straten hebben) en dan een tabel met huisnummers om aan de postcode-straat-koppeltabel te linken?
Edit:
Ik ga nog wel even tekenen :)
Edit:
Ik lees net op Wikipedia het volgende:
Quote:
Twee verschillende straten hebben haast altijd een verschillende postcode. Er bestaan echter vele duizenden postcodes die voor meer verschillende straten gebruikt worden. In al deze gevallen geldt dat de straten geen gemeenschappelijke huisnummers hebben, zodat de combinatie van huisnummer en postcode nog steeds uniek is.
Moet ik het dus toch andersom doen, namelijk de straten aan de postcodes koppelen?
Edit:
Ik moet dus een tabel hebben met postcodes welke aan een plaats gekoppeld zijn, dan een tabel met straten, dan een koppeltabel om de straten aan een postcode te linken (een straat kan meerdere postcodes hebben, en een postcode kan meerdere straten hebben) en dan een tabel met huisnummers om aan de postcode-straat-koppeltabel te linken?
Edit:
Ik ga nog wel even tekenen :)
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
Google Maps kan ook afstand berekenen.. en ook de complete data opzoeken, zal dat wel ff zoeken voor je.
Edit: http://code.google.com/apis/maps/documentation/services.html#Geocoding_Structured
En dan gebruik je getLocations();
Edit: http://code.google.com/apis/maps/documentation/services.html#Geocoding_Structured
En dan gebruik je getLocations();
Gewijzigd op 01/01/1970 01:00:00 door Gerben Jacobs
Nee, in Nederland kan Google geen straten en plaatsen ophalen, alleen gemeentes en provincies. Daarnaast wordt dit gebruikt met JavaScript, maar ik ben op zoek naar een HTTP-request mogelijkheid.
Ik heb nuhetde volgende schetsje:

Iemand op- of aanmerkingen, tips, ideeën, whatever?
Edit: Doe ik niet veelt te moeilijk? Heeft iemand niet een beter idee? Want nu zou ik al 9 tabellen nodig hebben voor puur een adres... Ik heb een ander simpeler (minder genormaliseerd) idee, ik maak ff een tekening...
Edit:
Twee tabellen minder, maar ik vind het toch slordiger qua normaliseren:

Iemand een idee?
Ik heb nu

Iemand op- of aanmerkingen, tips, ideeën, whatever?
Edit: Doe ik niet veelt te moeilijk? Heeft iemand niet een beter idee? Want nu zou ik al 9 tabellen nodig hebben voor puur een adres... Ik heb een ander simpeler (minder genormaliseerd) idee, ik maak ff een tekening...
Edit:
Twee tabellen minder, maar ik vind het toch slordiger qua normaliseren:

Iemand een idee?
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
Even een kleine opmerking: tabelnamen 'hoor' je in enkelvoud te zetten. Zeg maar net als objecten. Dus je krijgt 'provincie', 'gemeente', etc. Je zegt meestal ook: "de provincietabel" en niet "de provinciestabel". Er zit logica in.
Oei, ga ik wat aan doen. Maar wat raad je verder aan qua datamodel?



