[php] postcode coordinaten berekenen adhv straal

Pagina: 1
Acties:
  • 1.293 views sinds 30-01-2008
  • Reageer

Onderwerpen


Verwijderd

Topicstarter
Hoi, ik heb van postcode.nl een tabel gekocht met de x- en y-coördinaten van alle postcodes in Nederland. Nu kunnen ze me daar wel uitleggen hoe ik de afstand tussen 2 postcodes kan berekenen adhv de bijbehorende coordinaten. Dmv pythagoras:

afstand = wortel( ((x1-x2)*2+((y1-y2)*2) )


Maar ik wil iets anders en ik kom daar dus niet uit.

Stel ik heb een postcode: 3232
Nu wil ik alle tussenliggene postcode vinden binnen een straal van 5km.

Coordinaten van 3232 zijn x=500,y=700 (ik zeg maar wat) en je moet rekenen met meters, dus een straal van 5000.

Maar ik heb dus geen idee hoe ik de coordinaten binnen deze cirkel kan berekenen.
Kan iemand mij de goede richting opduwen of heeft iemand dit wel eens gedaan?

Oppervlakte en omtrek uitrekenen lukt me nog wel.

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Je wilt van elke postcode weten of die binnen de cirkel valt. Dus je moet van alle postcodes uitrekenen hoever ze van je af zijn: is dat meer dan de straal van je cirkel, dan is het te ver weg.

Verwijderd

Topicstarter
Mja, het zijn slechts 4500 postcodes
Lijkt me dus per zoekacties wel erg veel berekeningen.
Kan het dus niet de andere kant op?
Dat je een bereik heb voor x en een bereik voor y en dan met een mysql querie uitzoekt welke postcodes hierbij horen?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Wat denk je dat mysql hier intern mee gaat doen?

je zou in eerste instantie natuurlijk wel een ruwe selectie kunnen maken waarbij je enkel kijkt of de postcodes in het omliggende vierkant liggen. Hierdoor kun je waarschijnlijk wel de indexen van de tabel gebruiken. Vervolgens ga je met dit resultaat aan de slag om daadwerkelijk de cirkel te bepalen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • BRAINLESS01
  • Registratie: April 2003
  • Nu online
Dat bereik is altijd vierkant, omdat je alleen X en Y kan aangeven. Je zult over die resultaten dus nog steeds een check moeten gooien qua afstandberekening.

Alles wat 1/2 * de afstand vanaf de locatie is, zit binnen dit vierkant. Voorbeeldje (met jou 5000 meter)

locatie: X: 10000, Y: 15000, afstand: 5000

alle postcodes in de buurt (vierkant van 5 kilometer) vanaf: X: 7500 tot X: 12500 en Y:12500 tot Y: 17500.

Hiermee krijg je een kleine greep uit de database, waarmee je dan weer kunt controleren of ze meer of minder dan 5 kilometer van je locatie af zijn. Uiteraard even rekening houden met de grenzen (0 en de hoogste waarde)

Verwijderd

Topicstarter
Bedankt, hier kan ik wat mee!!!

  • Lolhozer
  • Registratie: Oktober 2004
  • Laatst online: 08:15

Lolhozer

Cetero censeo birrum bibendum

_BRAINLESS schreef op woensdag 28 september 2005 @ 16:05:
Dat bereik is altijd vierkant, omdat je alleen X en Y kan aangeven. Je zult over die resultaten dus nog steeds een check moeten gooien qua afstandberekening.

Alles wat 1/2 * de afstand vanaf de locatie is, zit binnen dit vierkant. Voorbeeldje (met jou 5000 meter)

locatie: X: 10000, Y: 15000, afstand: 5000

alle postcodes in de buurt (vierkant van 5 kilometer) vanaf: X: 7500 tot X: 12500 en Y:12500 tot Y: 17500.

Hiermee krijg je een kleine greep uit de database, waarmee je dan weer kunt controleren of ze meer of minder dan 5 kilometer van je locatie af zijn. Uiteraard even rekening houden met de grenzen (0 en de hoogste waarde)
Klein foutje in bovenstaande, namelijk wordt hier nu gerekend met een diameter van 5000, bij straal wordt indien X=10000, Xmin 5000 en Xmax 15000. Voor Y op dezelfde fiets natuurlijk.

Waarom? Omdat het kan!!

Pagina: 1