1. Use a simplified "Box Search" to start out. Instead of doing a radius search, (with the trig functions) we did a quick db search to get the matching records that would be inside of a BOX as opposed to a circle. We used whatever the basic rule about how many degrees in a mile etc, with some linear fudging to compensate for the shrinking dimensions in the latitude axis. as you go away from the equator.
2. Then since we wanted to know the exact distance for each record we calculated the distance in a loop. (since we're only calculating it for records that are close, we're not wasting that much time)
This was quite a while ago though so I may be remembering things incorrectly.
/John
[EMAIL PROTECTED] wrote:
Jonah,
to avoid a lot of calculations: I have allready short the formula. The enclosed formula was only to show how it works finally.
Also I store allready the result for "SIN(<@COLUMN 'Adressen.Geo_Breite'>) / COS(<@COLUMN 'Adressen.Geo_Breite'>)" in the database :-))
But this don't help me to make the sort or to make a search in a radius :-((
regards
Daniel
----- Original Message ----- From: "Jonah Simpson" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, October 31, 2004 9:10 PM
Subject: Re: Witango-Talk: Distance Calculations - Sort on..., search on...
Hey Daniel!
What database are you using? I know MySQL can do the trigonometric functions in a select statement and you could order your result from the database...
Doing trig functions is pretty gross efficiency wise. You might want
to store some of the functions that aren't going to change in your
location table. ie. Have columns for:
SIN(<@COLUMN 'Adressen.Geo_Breite'>)
COS(<@COLUMN 'Adressen.Geo_Breite'>)
in the same table that Adressen.Geo_Breite is stored in. As well, pre-calculate:
COS(@@User$Breite_1) and
SIN(@@User$Breite_1) to avoid doing this calculation 2500 times.
You might want to play with that formula and optimize it. I'm not super hot with my trig identites, but I'm sure you could put it into a form that allows you to store as much information in the database as possible. Then you would only have to do a couple of calculations in your actual select statement.
Interesting problem...let us know what route you eventually take.
Cheers, Jonah Simpson [EMAIL PROTECTED]
On Sun, 31 Oct 2004 19:22:39 +0100, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Distance Calculation is no problem, that works. Here the formula:
<@CALC EXPR="ACOS(SIN(@@User$Breite_1)*SIN(<@COLUMN 'Adressen.Geo_Breite'>)
+ COS(@@User$Breite_1)*COS(<@COLUMN 'Adressen.Geo_Breite'>)*COS(<@COLUMN
'Adressen.Geo_laenge'>-@@User$Laenge_1)) * 6378,388" Precision="1">
The problem what I have is:
1) To do a sort of the result (OK, I can do it in a array, but this need to
much RAM [more as 2500 records, nearly 50x on one time])
2) To do a search in a specified area like "show me all points near x miles(km).
One way what make sense is to store the formula in the database, but
- if i make a assign to a variable, then Witango store only the result. What
I like to store is the formula-text:
Second problem: I can't do a sort on the stored formula (Sort command: <@COLUMN 'Adressen.formel' Encoding="Metahtml">)
Any Successions ?
THX for help
regards
Daniel
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
________________________________________________________________________ TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
________________________________________________________________________ TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
________________________________________________________________________ TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
