Re: [PHP] Re: Google Maps Distance Between UK Postcodes
At 8:31 AM -0700 9/11/08, mike wrote: On Thu, Sep 11, 2008 at 8:17 AM, tedd <[EMAIL PROTECTED]> wrote: Considering that my other profession is Geophysicist, I'm kind of up on those sort of things. The Earth is an oblate spheroid and the computation to include the curvature of the earth would be a bit more involved. what do you think of the code i mentioned earlier? $distance = number_format(ceil(69*rad2deg(acos(sin(deg2rad($ulat)) * sin(deg2rad($vlat)) + cos(deg2rad($ulat)) * cos(deg2rad($vlat)) * cos(deg2rad($ulong - $vlong)); where: $ulat = latitude of user #1 $ulong = longitude of user #1 $vlat = latitude of user #2 $vlong = longitude of user #2 I took the very popular mysql query (at the time) that supposedly works with a sphere and mapped it to php functions and it has appeared to work very well. I have only tested with US zip codes, but the concept should be the same as long as lat/long are centered properly. I dunno. But I do know that knowing the latitude and longitude of two points on the surface of the Earth and then trying to calculate the actual distance between each is not a trivial task Take a look at: http://en.wikipedia.org/wiki/Latitude#Degree_length In that table you can see that for every degree north-south there is a change -- likewise, for every degree east-west AND those changes are not equal. This has been a problem for map makers for a long time. I remember surveying ancient playas (i.e., lake-beds) in the Mohave desert where my rod man would travel away and I would see his boots disappear beneath the curvature of the Earth. Now, what's the distance between me and my rod man? Is it the distance I see in my survey instrument or the distance of my rod chain? One is a straight line while the other isn't -- which is the correct one? Cheers, tedd -- --- http://sperling.com http://ancientstones.com http://earthstones.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Re: Google Maps Distance Between UK Postcodes
At 3:54 PM -0500 9/11/08, Boyd, Todd M. wrote: > Considering that my other profession is Geophysicist, I'm kind of up on those sort of things. The Earth is an oblate spheroid and the computation to include the curvature of the earth would be a bit more involved. ---8<--- snip But it's also NOT an oblate spheroid! :) http://blogs.discovermagazine.com/badastronomy/2008/09/08/ten-things-you -dont-know-about-the-earth/ Todd: LOL -- Discover magazine is hardly the definitive authority for Geophysical terms. This is more an article written to make controversial claims for laymen to ponder rather than to provide anything of real substance for people who work in the Geophysical field. Note, while the article claims that the Earth is NOT an oblate spheroid, it does NOT provide a real alternative. However, it does say "it would be smoother [billiard ball]" but it also claims that "The Earth is more complicated than an oblate spheroid." So, which is it? Is it as simple as a billiard ball or more complicated than an oblate spheroid? You see, it's one of those "Hit and run -- You can't prove me wrong because I didn't say anything" articles. While technically the Earth isn't ANY standard/formal static size, an oblate spheroid is a pretty good fit. Perhaps an example may be of assistance -- if the Earth was pure water (a fluid medium having an equipotential surface) then its surface could be described as a spheroid -- imagine a drop of water in space without any external forces applied to it. If you introduce rotation, then the radius from the center of the Earth to the equator (perpendicular to the axis of spin) expands and the radius at the poles (axis of spin) reduces. As such, this surface IS known and IS defined as an oblate spheroid -- and with respect to Earth, this IS upon which the geodetic latitude determinations are made. Now, to be more exact in describing the Earth's surface, requires more attention to detail. First, the Earth consists of more than just water and it's content are not uniform with respect to distribution and density -- not to mention numerous other physical properties (i.e., elasticity); Second, the Earth has rotational, orbital, and even processional forces applied to it; Third, the Earth has external gravitational forces exerted on it from the Sun, Moon, Planets, and et all; Considering all, the surface of the Earth becomes very complex to compute, let alone to define for the general population. So, the problem of what term to use to define the surface of the Earth really depends upon the audience you're addressing. If I were talking to a group of preschoolers, I would use the term "Ball", but if I was addressing a group of Geophysical Scientist, then I would use the term "oblate spheroid." Incidentally, I have done both successfully without objection. An "oblate spheroid" is good enough for me, but the author of the article likes the term "Ball" -- each has their audience of believers. Cheers, tedd -- --- http://sperling.com http://ancientstones.com http://earthstones.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Re: Google Maps Distance Between UK Postcodes
> -Original Message- > From: news [mailto:[EMAIL PROTECTED] On Behalf Of Colin Guthrie > Sent: Friday, September 12, 2008 3:15 AM > To: php-general@lists.php.net > Subject: [PHP] Re: Google Maps Distance Between UK Postcodes > > Boyd, Todd M. wrote: > >> -Original Message- > >> From: tedd > > >> Considering that my other profession is Geophysicist, I'm kind of up > >> on those sort of things. The Earth is an oblate spheroid and the > >> computation to include the curvature of the earth would be a bit > more > >> involved. > > > > ---8<--- snip > > > > But it's also NOT an oblate spheroid! :) > > > > http://blogs.discovermagazine.com/badastronomy/2008/09/08/ten-things- > you > > -dont-know-about-the-earth/ > > Todd Vs. Tedd: A deathmatch separated only by one vowel! FIIGHT!!! Willing to bet I've lost this one already, seeing as how I've never been (and likely never will be) a geophysicist. :) I took an Astronomy class a few years ago, but I couldn't tell you what the Chandrasekhar Limit is now if my life depended on it. I just thought it was pretty neat that I'd read that article maybe two days ago, having almost never heard the word "oblate" or "spheroid" (let alone used together in a sentence), and tedd mentions the very same thing soon after. I couldn't resist the rebuttal. Heh... Todd Boyd Web Programmer
RE: [PHP] Re: Google Maps Distance Between UK Postcodes
> -Original Message- > From: tedd [mailto:[EMAIL PROTECTED] > Sent: Thursday, September 11, 2008 10:17 AM > To: php-general@lists.php.net > Subject: [PHP] Re: Google Maps Distance Between UK Postcodes > > At 5:37 PM +0100 9/1/08, Colin Guthrie wrote: > >Tom Chubb wrote: > >>That's all way above my head, but I think I'll be able to understand > it > >>after a strong coffee! > > > >I should point out that this is really just trig and is only an > >approximate distance as the crow flies. Not even sure if it takes > >the curvature of the earth into consideration, but it's probably > >"good enough" for most things. > > > I've reviewed your code and it does not include the curvature of the > earth -- it's a flat surface computation. > > Considering that my other profession is Geophysicist, I'm kind of up > on those sort of things. The Earth is an oblate spheroid and the > computation to include the curvature of the earth would be a bit more > involved. ---8<--- snip But it's also NOT an oblate spheroid! :) http://blogs.discovermagazine.com/badastronomy/2008/09/08/ten-things-you -dont-know-about-the-earth/ Todd Boyd Web Programmer -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Google Maps Distance Between UK Postcodes
tedd wrote: At 5:37 PM +0100 9/1/08, Colin Guthrie wrote: Tom Chubb wrote: That's all way above my head, but I think I'll be able to understand it after a strong coffee! I should point out that this is really just trig and is only an approximate distance as the crow flies. Not even sure if it takes the curvature of the earth into consideration, but it's probably "good enough" for most things. Oh, I forgot to add -- I use it for this: http://php1.net/b/zipcode/ This plugs into a zip code dB that has the center of the zip code in lats and longs. Cheers, tedd I've got code to cal all of this it's rather simple actually - I'll fire it through when i get back from work. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Google Maps Distance Between UK Postcodes
On Thu, Sep 11, 2008 at 8:17 AM, tedd <[EMAIL PROTECTED]> wrote: > Considering that my other profession is Geophysicist, I'm kind of up on > those sort of things. The Earth is an oblate spheroid and the computation to > include the curvature of the earth would be a bit more involved. what do you think of the code i mentioned earlier? $distance = number_format(ceil(69*rad2deg(acos(sin(deg2rad($ulat)) * sin(deg2rad($vlat)) + cos(deg2rad($ulat)) * cos(deg2rad($vlat)) * cos(deg2rad($ulong - $vlong)); where: $ulat = latitude of user #1 $ulong = longitude of user #1 $vlat = latitude of user #2 $vlong = longitude of user #2 I took the very popular mysql query (at the time) that supposedly works with a sphere and mapped it to php functions and it has appeared to work very well. I have only tested with US zip codes, but the concept should be the same as long as lat/long are centered properly. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Google Maps Distance Between UK Postcodes
On Sep 11, 2008, at 11:19 AM, tedd wrote: At 5:37 PM +0100 9/1/08, Colin Guthrie wrote: Tom Chubb wrote: That's all way above my head, but I think I'll be able to understand it after a strong coffee! I should point out that this is really just trig and is only an approximate distance as the crow flies. Not even sure if it takes the curvature of the earth into consideration, but it's probably "good enough" for most things. Oh, I forgot to add -- I use it for this: http://php1.net/b/zipcode/ This plugs into a zip code dB that has the center of the zip code in lats and longs. Cheers, tedd In regards to your php1.net/b/zipcode/ ... I think I may have found a bug :) zipcode 49422 does not show up as being within 10 miles of 49424 even though 49423 does. FYI, 49422 is the zipcode for holland, mi PO BOXES so I'm not sure if your database has that included or not... Or where they would even register the lat/lon... I would assume at the holland post office.. but I could be wrong. -- Jason Pruim Raoset Inc. Technology Manager MQC Specialist 11287 James St Holland, MI 49424 www.raoset.com [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Google Maps Distance Between UK Postcodes
On 01/09/2008, Michal Sokolowski <[EMAIL PROTECTED]> wrote: > > > > 2008/9/1 Tom Chubb <[EMAIL PROTECTED]> > >> On 01/09/2008, Colin Guthrie <[EMAIL PROTECTED]> wrote: >> > >> > Tom Chubb wrote: >> > >> >> I thought it would be easy but it seems that I need to convert each >> >> postcode >> >> to Lat/Long using Geocoding and then work it out from there. >> >> >> > >> > That's the best way: then just do something like: >> > >> > Here's how I do it in SQL, but the principle is the same in PHP, so I'm >> > sure you'll be able to convert it. >> > >> > HTHs >> > >> > Col >> > >> > >> > public static function Distance($latA, $lngA, $latB, $lngB, $blnMiles = >> > false) >> > { >> >$multiplier = 6371; >> >if ($blnMiles) >> > $multiplier *= 1.609344; >> > >> >$rv = <<> > (ACOS( >> >SIN(RADIANS($latA)) * SIN(RADIANS($latB)) >> >+ COS(RADIANS($latA)) * COS(RADIANS($latB)) * COS(RADIANS($lngB) - >> > RADIANS($lngA))) >> > * $multiplier) >> > ESQL; >> >return $rv; >> > } >> > >> > >> > >> > >> > >> > -- >> > >> > Colin Guthrie >> > gmane(at)colin.guthr.ie >> > http://colin.guthr.ie/ >> > >> > Day Job: >> > Tribalogic Limited [http://www.tribalogic.net/] >> > Open Source: >> > Mandriva Linux Contributor [http://www.mandriva.com/] >> > PulseAudio Hacker [http://www.pulseaudio.org/] >> > Trac Hacker [http://trac.edgewall.org/] >> > >> > >> > -- >> > PHP General Mailing List (http://www.php.net/) >> > To unsubscribe, visit: http://www.php.net/unsub.php >> > >> > >> >> >> Thanks Colin, >> That's all way above my head, but I think I'll be able to understand it >> after a strong coffee! >> Any idea how you get the co-ords from the UK Postcode though? >> There seems to be a privacy factor with UK postcodes, but I'm only after >> the >> first section: eg SW11 6** >> > > > This address should help you. Thay have distance calculator on the page but > also you can download database with postcodes and their co-ords -> > http://www.pc-i.co.uk/postcode-distance.php > > That's perfect for what I need! Thanks very much Michal Tom
Re: [PHP] Re: Google Maps Distance Between UK Postcodes
This is what I have: $distance = number_format(ceil(69*rad2deg(acos(sin(deg2rad($ulat)) * sin(deg2rad($vlat)) + cos(deg2rad($ulat)) * cos(deg2rad($vlat)) * cos(deg2rad($ulong - $vlong)); where: $ulat = latitude of user #1 $ulong = longitude of user #1 $vlat = latitude of user #2 $vlong = longitude of user #2 it seems to work properly at least with US data. I assume any longitude/latitude date will work fine with it. If anyone has links to other countries' zipcode mappings I'd love to be able to add that to my site :) (I basically took a MySQL query and mapped it to the PHP functions) On 9/1/08, Tom Chubb <[EMAIL PROTECTED]> wrote: > > > > public static function Distance($latA, $lngA, $latB, $lngB, $blnMiles = > > false) > > { > >$multiplier = 6371; > >if ($blnMiles) > > $multiplier *= 1.609344; > > > >$rv = << > (ACOS( > >SIN(RADIANS($latA)) * SIN(RADIANS($latB)) > >+ COS(RADIANS($latA)) * COS(RADIANS($latB)) * COS(RADIANS($lngB) - > > RADIANS($lngA))) > > * $multiplier) > > ESQL; > >return $rv; > > } -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Google Maps Distance Between UK Postcodes
2008/9/1 Tom Chubb <[EMAIL PROTECTED]> > On 01/09/2008, Colin Guthrie <[EMAIL PROTECTED]> wrote: > > > > Tom Chubb wrote: > > > >> I thought it would be easy but it seems that I need to convert each > >> postcode > >> to Lat/Long using Geocoding and then work it out from there. > >> > > > > That's the best way: then just do something like: > > > > Here's how I do it in SQL, but the principle is the same in PHP, so I'm > > sure you'll be able to convert it. > > > > HTHs > > > > Col > > > > > > public static function Distance($latA, $lngA, $latB, $lngB, $blnMiles = > > false) > > { > >$multiplier = 6371; > >if ($blnMiles) > > $multiplier *= 1.609344; > > > >$rv = << > (ACOS( > >SIN(RADIANS($latA)) * SIN(RADIANS($latB)) > >+ COS(RADIANS($latA)) * COS(RADIANS($latB)) * COS(RADIANS($lngB) - > > RADIANS($lngA))) > > * $multiplier) > > ESQL; > >return $rv; > > } > > > > > > > > > > > > -- > > > > Colin Guthrie > > gmane(at)colin.guthr.ie > > http://colin.guthr.ie/ > > > > Day Job: > > Tribalogic Limited [http://www.tribalogic.net/] > > Open Source: > > Mandriva Linux Contributor [http://www.mandriva.com/] > > PulseAudio Hacker [http://www.pulseaudio.org/] > > Trac Hacker [http://trac.edgewall.org/] > > > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > Thanks Colin, > That's all way above my head, but I think I'll be able to understand it > after a strong coffee! > Any idea how you get the co-ords from the UK Postcode though? > There seems to be a privacy factor with UK postcodes, but I'm only after > the > first section: eg SW11 6** > This address should help you. Thay have distance calculator on the page but also you can download database with postcodes and their co-ords -> http://www.pc-i.co.uk/postcode-distance.php
Re: [PHP] Re: Google Maps Distance Between UK Postcodes
On 01/09/2008, Colin Guthrie <[EMAIL PROTECTED]> wrote: > > Tom Chubb wrote: > >> I thought it would be easy but it seems that I need to convert each >> postcode >> to Lat/Long using Geocoding and then work it out from there. >> > > That's the best way: then just do something like: > > Here's how I do it in SQL, but the principle is the same in PHP, so I'm > sure you'll be able to convert it. > > HTHs > > Col > > > public static function Distance($latA, $lngA, $latB, $lngB, $blnMiles = > false) > { >$multiplier = 6371; >if ($blnMiles) > $multiplier *= 1.609344; > >$rv = << (ACOS( >SIN(RADIANS($latA)) * SIN(RADIANS($latB)) >+ COS(RADIANS($latA)) * COS(RADIANS($latB)) * COS(RADIANS($lngB) - > RADIANS($lngA))) > * $multiplier) > ESQL; >return $rv; > } > > > > > > -- > > Colin Guthrie > gmane(at)colin.guthr.ie > http://colin.guthr.ie/ > > Day Job: > Tribalogic Limited [http://www.tribalogic.net/] > Open Source: > Mandriva Linux Contributor [http://www.mandriva.com/] > PulseAudio Hacker [http://www.pulseaudio.org/] > Trac Hacker [http://trac.edgewall.org/] > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > Thanks Colin, That's all way above my head, but I think I'll be able to understand it after a strong coffee! Any idea how you get the co-ords from the UK Postcode though? There seems to be a privacy factor with UK postcodes, but I'm only after the first section: eg SW11 6**