• Status: Solved
• Priority: Medium
• Security: Public
• Views: 376

# FileMaker Equivalent of pow()

I am looking for the pow(() and deg2rad() equivalent in FileMaker

I believe deg2rad() =  lat * pi / 180.

The FileMaker Calculated Field:
/*floor((1 - log(tan(LL_Y * pi / 180) + 1 / cos(LL_Y * pi / 180)) / pi) /2 * pow(2, LAYER);*/

Is started with this below from a php example that works.

floor((1 - log(tan(deg2rad(\$lat)) + 1 / cos(deg2rad(\$lat))) / pi()) /2 * pow(2, \$zoom));

More language examples here:
http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames

Thanks
0
• 3
• 2
• 2
2 Solutions

Author Commented:
LL_Y =  61.449269; latitude
LL_X = -149.348145; longitude
LAYER = 13; zoom level

697 for xtile and 2311 for ytile;

I have the xtile working in FileMaker. I believe I am having problems with the deg2rad()conversion. Any help would be appreciated. Both PHP statements work perfectly in PHP.
The FM conversion for ytile is off by about a third.

PHP:
\$ytile = floor((1 - log(tan(deg2rad(\$lat)) + 1 / cos(deg2rad(\$lat))) / pi()) /2 * pow(2, \$zoom));

FM:
Floor((1 - Log(Tan( LL_Y * (Pi / 180)) + 1 / Cos(LL_Y * (Pi / 180))) / Pi) /2 * (2 ^  LAYER))

*/ The FileMaker conversion of the xtile works, so I believe I have the pow() correct. */
PHP:
\$xtile = floor(((\$lon + 180) / 360) * pow(2, \$zoom));

FM:
Floor(((LL_X + 180) / 360) * (2  ^  LAYER))
0

Commented:
FileMaker has a Radians( angleInDegrees ) function built in, so you don't need to write your own deg2rad() function.

Simple math gives you pow( x; n ) = exp( n * ln( x ) )
0

PresidentCommented:
I haven't dug into your math, but just FYI, FileMaker does have two functions that you might find useful here:

Degrees( )
http://www.filemaker.com/help/html/func_ref3.33.113.html#1033232

http://www.filemaker.com/help/html/func_ref3.33.115.html#1033314

And of course, I think you've figured out that Pow() is simply ^  so for example 2 cubed is 2^3 = 8
0

Author Commented:
Thank you, I used the radians function but still get the same answer.  Must be something wrong with FM.

LL_Y =  59.57882161; latitude
LL_X = -151.43554688; longitude
LAYER = 11; zoom level

Longitude works fine in FileMaker.

The correct tile for Lat = 599 and is what PHP comes up with.  FM comes up with 839.

Does not work in FM
Floor((1 - Log(Tan(Radians(LL_Y)) + 1 / Cos(Radians(LL_Y))) / Pi) /2 *  (2 ^  LAYER) )

works in PHP

\$ytile = floor((1 - log(tan(deg2rad(\$lat)) + 1 / cos(deg2rad(\$lat))) / pi()) /2 * pow(2, \$zoom));
0

PresidentCommented:
The math looks the same so I'm wondering if it's an order of operations issue. Sometimes it can be useful to put extra parenthesis around sections that should be calculated together even if you think it should normally work based on standard order of operations.
0

Commented:
There's nothing wrong with FileMaker in this case. FileMaker's "Log" function returns the log to the base 10. You need to use the "Ln" function in the latitude calculation for the natural log. (PHP's "log" function returns the natural log.)
0

Author Commented:
That worked!  Thank you all for your help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.