Versio

Adres opslaan

Overzicht Reageren

Jonathan -

Jonathan -

04/08/2008 21:22:00
Quote Anchor link
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.
 
PHP hulp

PHP hulp

23/05/2012 20:20:56
Gesponsorde koppelingen:
 
Jan Koehoorn

Jan Koehoorn

04/08/2008 21:43:00
Quote Anchor link
Hou ook even in de gaten: maximaal tien requests tegelijk, naar de Google Maps API.
 
Jonathan -

Jonathan -

04/08/2008 21:51:00
Quote Anchor link
Ok :P Nog een tip voor het datamodel?
 
Jan Koehoorn

Jan Koehoorn

04/08/2008 21:59:00
Quote Anchor link
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:
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
    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 ();
                }
            });
        }
    }
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Jonathan -

Jonathan -

04/08/2008 22:02:00
Quote Anchor link
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 :-)
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
 
Jan Koehoorn

Jan Koehoorn

04/08/2008 22:11:00
Quote Anchor link
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?

Ja. Elk huis heeft minstens een postcode, maar meer huizen kunnen dezelfde postcode hebben. Maar zover ga ik meestal niet met normaliseren.
 
Jonathan -

Jonathan -

04/08/2008 22:14:00
Quote Anchor link
Ik heb een plaatje (je moet wel even coordinaten_id bij elke tabel denken):
http://jonathanhogervorst.com/dump/db.gif

A.u.b. tips!
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
 
Jan Koehoorn

Jan Koehoorn

05/08/2008 07:59:00
Quote Anchor link
Je wilt bij elke tabel coordinaten hebben? Waarom?
 
Jonathan -

Jonathan -

05/08/2008 10:10:00
Quote Anchor link
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?
 
PHP erik

PHP erik

05/08/2008 13:32:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
 
Jonathan -

Jonathan -

05/08/2008 14:11:00
Quote Anchor link
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:
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 -
 
Gerben Jacobs

Gerben Jacobs

05/08/2008 15:18:00
Quote Anchor link
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();
Gewijzigd op 01/01/1970 01:00:00 door Gerben Jacobs
 
Jonathan -

Jonathan -

05/08/2008 15:24:00
Quote Anchor link
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 nu hetde volgende schetsje:
http://jonathanhogervorst.com/dump/db2.gif
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:
http://jonathanhogervorst.com/dump/db3.gif
Iemand een idee?
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
 
PHP erik

PHP erik

05/08/2008 15:39:00
Quote Anchor link
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.
 
Jonathan -

Jonathan -

05/08/2008 15:40:00
Quote Anchor link
Oei, ga ik wat aan doen. Maar wat raad je verder aan qua datamodel?
 



Overzicht Reageren

Get Adobe Flash player