> On 5 Dec 2018, at 08:23, Alistair Grant <akgrant0...@gmail.com> wrote:
> 
> Hi Sven,
> 
> On Tue, 4 Dec 2018 at 11:04, Sven Van Caekenberghe <s...@stfx.eu> wrote:
>> 
>> Hi Alistair,
>> 
>>> On 4 Dec 2018, at 10:21, Alistair Grant <akgrant0...@gmail.com> wrote:
>>> 
>>> Hi,
>>> 
>>> Does anyone know of a library for processing GPS coordinates?
>>> 
>>> What I'm looking for are things like:
>>> 
>>> - Parsing from and printing to various string formats (HMS, NESW, decimal)
>>> - Distance between two points
>>> - etc.
>>> 
>>> Thanks,
>>> Alistair
>> 
>> We've got some elementary stuff based on WGS84 coordinates as points. For 
>> example,
>> 
>> T3GeoTools distanceBetween: 5.33732@50.926 and: 5.49705@50.82733.
>> T3GeoTools bearingFrom: 5.33732@50.926 to: 5.49705@50.82733.
>> T3GeoTools destinationFrom: 5.33732@50.926 bearing: 45 distance: 2500.
>> T3GeoTools centroidOf: { 5.48230@50.82249. 5.49523@50.81288. 
>> 5.50138@50.82008. 5.50228@50.82595. 5.49265@50.82560. 5.48230@50.82249 }.
>> T3GeoTools is: 5.33732@50.92601 inside: { 5.48230@50.82249. 
>> 5.49523@50.81288. 5.50138@50.82008. 5.50228@50.82595. 5.49265@50.82560. 
>> 5.48230@50.82249 }.
>> 
>> This is not open source, but it is not rocket science either (just 
>> implementations of public algorithms).
> 
> Right, I'll probably have a go at this a put it up on github.
> 
> It looks like you've chosen to model the coordinates using the Point
> class rather than creating a Coordinate class.  Can you explain why (I
> don't have a strong preference either way, so am wondering what your
> thinking is).
> 
> It also looks like it is longitude @ latitude.  Is that correct?  (I
> guess it lines up with the point y value being vertical, which is
> latitude.  But most written forms put latitude first).

I used the simplest thing that could work, using the mathematically oriented 
x@y (long@lat) form. From what I am doing, it works just fine. Converting 
to/from HMS notation is not hard I.

Here is an example:

distanceBetween: firstPosition and: secondPosition
        "T3GeoTools distanceBetween: 5.33732@50.926 and: 5.49705@50.82733"

        | c |
        c := (firstPosition y degreeSin * secondPosition y degreeSin)
                + (firstPosition y degreeCos * secondPosition y degreeCos
                        * (secondPosition x degreesToRadians - firstPosition x 
degreesToRadians) cos).
        c := c >= 0 ifTrue: [ 1 min: c ] ifFalse: [ -1 max: c ].
        ^ c arcCos * 6371000

I would not have anything against a real object, as long as it is 
mathematically sound and used properly. I think that only WGS84 makes sense as 
internal representation though - it seems the most common thing anyway.

> Thanks!
> Alistair


Reply via email to