Copy link to clipboard
Copied
I've got an app that calculate and displays tides (high and low tides).
All the math for the calculs are already done.
I would like to add one line to my code that would calculate the actual tide (not the 2 highest of the day or the 2 lowest but the meters of the water now).
I'm quite bad at math so any help would be good. I'm willing to pay 50$ for this job if needed.
The code :
/////// CALCULATE TIDES ///////////////////
var $cfm:Number;
var $cfs:Number;
var $pmm:String;
var $pms:String;
var $bmm:String;
var $bms:String;
var $hpmm:Number;
var $hpms:Number;
var $hbmm:Number;
var $hbms:Number;
var $latitude:String;
var $longitude:String;
var $temps:String;
var $port_maree:String;
var $jour_maree:Number;
var $mois_maree:Number;
var $annee_maree:Number;
var $nom_port:String;
var $z0:Number;
var $asa:Number;
var $aq1:Number;
var $ao1:Number;
var $ak1:Number;
var $an2:Number;
var $am2:Number;
var $as2:Number;
var $amn4:Number;
var $am4:Number;
var $ams4:Number;
var $gsa:Number;
var $gq1:Number;
var $go1:Number;
var $gk1:Number;
var $gn2:Number;
var $gm2:Number;
var $gs2:Number;
var $gmn4:Number;
var $gm4:Number;
var $gms4:Number;
var $la:String;
var $lo:String;
var $utc:String;
var $coef_z0:Number;
var $pref_z0:Number;
var $a:Object;
var $g:Object;
var $coef_a:Object;
var $coef_g:Object;
var $pref_a:Object;
var $pref_g:Object;
// calcul_maree properties
var $r0:Object;
var $phi0:Object;
var $r24:Object;
var $phi24:Object;
// tide data loader properties
var _onDataCompleteFunc:Function;
var _isDebug:Boolean = true;
// public properties
function get haute1():String { return $pmm; };
function get haute2():String { return $pms; }
function get basse1():String { return $bmm; };
function get basse2():String { return $bms; };
function get metrehaute1():Number { return $hpmm; };
function get metrehaute2():Number { return $hpms; };
function get metrebasse1():Number { return $hbmm; };
function get metrebasse2():Number { return $hbms; };
// convenient way to retrieve public data
function get results():Object
{
if (!$pmm) return {};
return {
haute1:$pmm,
haute2:$pms,
basse1:$bmm,
basse2:$bms,
metrehaute1:$hpmm,
metrehaute2:$hpms,
metrebasse1:$hbmm,
metrebasse2:$hbms
};
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
// TideDataTools.as
/////////////////////////////////////////////////////////////////////////////////////////////////////
function trim(pValue:String):String
{
var whitespace:RegExp = /(\t|\n|\s{2,})/g;
var trimmedValue:String = pValue.replace(whitespace, "");
return trimmedValue;
}
function maree($inputport:String = "", $inputdate:String = "", onDataCompleteFunc:Function = null):void
{
if (onDataCompleteFunc != null) _onDataCompleteFunc = onDataCompleteFunc;
$port_maree = trim($inputport).toUpperCase();
/*if ($inputdate != '') $infodate = getdate(date2timestamp($inputdate + " 00:00:00","d/m/Y h:i:s"));
else $infodate = getdate(date2timestamp(date("dmY") + " 00:00:00","d/m/Y h:i:s"));
$jour_maree = $infodate["mday"];
$mois_maree = $infodate["mon"];
$annee_maree = $infodate["year"];*/
var $infodate:Array = $inputdate.split("/");
$jour_maree = Number($infodate[0]); // 25; // Day
$mois_maree = Number($infodate[1]); // 12; // Month
$annee_maree = Number($infodate[2]); // 2015; // Year
loadXmlData();
}
// Load TideData XML
function loadXmlData():void
{
// _tideData = new TideDataLoader();
// _tideData.loadLocalData(onTideLoaderCallBack);
loadLocalData(onTideLoaderCallBack);
}
function onTideLoaderCallBack(data:Object):void
{
if (data["status"] == COMPLETE)
{
parseXmlData();
init_port();
calcul_maree();
}
else if (data["status"] == IO_ERROR)
{
}
if (_onDataCompleteFunc != null) _onDataCompleteFunc(data);
}
function parseXmlData():void
{
if (!_tideXmlData) return;
// scan and parse xml data
for each ( var dataItem:Object in _tideXmlData.row )
{
if (dataItem.NOM == $port_maree)
{
$z0 = dataItem.ZO;
$asa = dataItem.ASA;
$aq1 = dataItem.AQ1;
$ao1 =dataItem.AO1;
$ak1 = dataItem.AK1;
$an2 = dataItem.AN2;
$am2 = dataItem.AM2;
$as2 = dataItem.AS2;
$amn4 = dataItem.AMN4;
$am4 = dataItem.AM4;
$ams4 = dataItem.AMS4;
$gsa = dataItem.GSA;
$gq1 = dataItem.GQ1;
$go1 = dataItem.GO1;
$gk1 = dataItem.GK1;
$gn2 = dataItem.GN2;
$gm2 = dataItem.GM2;
$gs2 = dataItem.GS2;
$gmn4 = dataItem.GMN4;
$gm4 = dataItem.GM4;
$gms4 = dataItem.GMS4;
$la = dataItem.LA;
$lo = dataItem.LO;
$utc = dataItem.UTC;
break;
}
}
// Assignment longitude, latitude and time GMT
$latitude = $la;
$longitude = $lo;
$temps = $utc;
}
// Port initialization
function init_port($iscoef:Number = -1):void
{
var $i:int, $j:int;
$a = { };
$g = { };
// initialization tables
for ($j = 1; $j <= 5; $j++)
{
$a[$j] = {};
$g[$j] = {};
for ($i = 1; $i <= 11; $i++)
{
$a[$j][$i] = 0;
$g[$j][$i] = 0;
}
}
$coef_a = { };
$coef_g = { };
$pref_a = { };
$pref_g = { };
if ($iscoef >= 0)
{
$a[1][1] = 0;
$a[2][1] = 0;
$a[2][2] = 0;
$a[2][3] = 0;
$a[2][4] = 0;
$a[2][5] = 0;
$a[2][6] = 0;
$a[3][1] = 668;
$a[3][2] = 136;
$a[3][3] = 245;
$a[3][4] = (1 / 7.6) * 136;
$a[3][5] = (1 / 6.3) * 136;
$a[3][6] = (1 / 5.3) * 136;
$a[3][7] = ( -1 / 35) * 668;
$a[3][8] = (1 / 3.7) * 245;
$a[3][9] = (1 / 17) * 245;
$a[3][10] = ( -1 / 27) * 668;
$a[3][11] = (1 / 12) * 245;
$a[5][1] = 0;
$a[5][2] = 0;
$a[5][3] = 0;
$g[1][1] = 0;
$g[2][1] = 0;
$g[2][2] = 0;
$g[2][3] = 0;
$g[2][4] = 0;
$g[2][5] = 0;
$g[2][6] = 0;
$g[3][1] = 138;
$g[3][2] = 119;
$g[3][3] = 178;
$g[3][4] = 119;
$g[3][5] = 119;
$g[3][6] = 119;
$g[3][7] = 138;
$g[3][8] = 178;
$g[3][9] = -105;
$g[3][10] = 138;
$g[3][11] = 178;
$g[5][1] = 0;
$g[5][2] = 0;
$g[5][3] = 0;
$coef_z0 = 0;
for ($j = 1; $j <= 5; $j++)
{
$coef_a[$j] = { };
$coef_g[$j] = { };
for ($i = 1; $i <= 11; $i++)
{
$coef_a[$j][$i] = $a[$j][$i];
$coef_g[$j][$i] = $g[$j][$i];
}
}
}
else
{
$a[1][1] = $asa;
$a[2][1] = $ak1;
$a[2][2] = $ao1;
$a[2][3] = $aq1;
$a[2][4] = (-1/3) * $ak1;
$a[2][5] = (1/5.3) * $ao1;
$a[2][6] = (1/7.4) * $ak1;
$a[3][1] = $am2;
$a[3][2] = $an2;
$a[3][3] = $as2;
$a[3][4] = (1/7.6) * $an2;
$a[3][5] = (1/6.3) * $an2;
$a[3][6] = (1/5.3) * $an2;
$a[3][7] = (-1/35) * $am2;
$a[3][8] = (1/3.7) * $as2;
$a[3][9] = (1/17) * $as2;
$a[3][10] = (-1/27) * $am2;
$a[3][11] = (1/12) * $as2;
$a[5][1] = $amn4;
$a[5][2] = $am4;
$a[5][3] = $ams4;
$g[1][1] = $gsa;
$g[2][1] = $gk1;
$g[2][2] = $go1;
$g[2][3] = $gq1;
$g[2][4] = $gk1;
$g[2][5] = $go1;
$g[2][6] = $gk1;
$g[3][1] = $gm2;
$g[3][2] = $gn2;
$g[3][3] = $gs2;
$g[3][4] = $gn2;
$g[3][5] = $gn2;
$g[3][6] = $gn2;
$g[3][7] = $gm2;
$g[3][8] = $gs2;
$g[3][9] = $gs2 - 283;
$g[3][10] = $gm2;
$g[3][11] = $gs2;
$g[5][1] = $gmn4;
$g[5][2] = $gm4;
$g[5][3] = $gms4;
$pref_z0 = $z0;
for ($j = 1; $j <= 5; $j++)
{
$pref_a[$j] = { };
$pref_g[$j] = { };
for ($i = 1; $i <= 11; $i++)
{
$pref_a[$j][$i] = $a[$j][$i];
$pref_g[$j][$i] = $g[$j][$i];
}
}
}
}
// calculation feature heights
function calc_hauteur($valeur:Number):Number
{
var $h:Number = $z0 * 10;
var $j:int;
for ($j = 1; $j <= 5; $j++)
{
var $rj:Number = $r0[$j] + $valeur / 24 * ($r24[$j] - $r0[$j]);
var $deltaj:Number = $phi24[$j] - $phi0[$j];
if ($deltaj < -180) $deltaj = $deltaj + 360;
if ($deltaj > 180) $deltaj = $deltaj - 360;
var $phij:Number = $phi0[$j] + $valeur / 24 * (($j - 1) * 360 + $deltaj);
$h = $h + $rj * Math.cos($phij * Math.PI / 180);
}
return $h;
}
// calculating functions Tide
function calcul_maree($iscoef:Number = -1):void
{
var $sigma:Number = 0;
var $sigma2:Number = 0;
var $dt:Number = 0;
var $pb:Number = 0;
var $pif:Number = 0;
var $deltapm:Number = 0;
// initialization method Tide
init_maree($iscoef);
var $j:int = 3;
if ($phi0[$j] < 0) $deltapm = 0; else $deltapm = 1;
var $t:Number = 0;
var $deltaj:Number = 0;
var $rj:Number = 0;
var $phij:Number = 0;
var $tpbs:Object = { };
for ($j = 1; $j <= 5; $j++)
{
$rj = $r0[$j] + $t / 24 * ($r24[$j] - $r0[$j]);
$deltaj = $phi24[$j] - $phi0[$j];
if ($deltaj < -180) $deltaj = $deltaj + 360;
if ($deltaj > 180) $deltaj = $deltaj - 360;
$phij = $phi0[$j] + $t / 24 * (($j - 1) * 360 + $deltaj);
$sigma = $sigma + Math.PI / 180 * $rj * (15 * ($j - 1) + $deltaj / 24) * Math.sin($phij * Math.PI / 180) - ($r24[$j] - $r0[$j]) / 24 * Math.cos($phij * Math.PI / 180);
}
for ($pb = 1; $pb <= 4; $pb++)
{
$dt = 0.4;
for ($pif = 1; $pif <= 2; $pif++)
{
do
{
$t = $t + $dt;
$sigma2 = $sigma;
$sigma = 0;
for ($j = 1; $j <= 5; $j++)
{
$rj = $r0[$j] + $t / 24 * ($r24[$j] - $r0[$j]);
$deltaj = $phi24[$j] - $phi0[$j];
if ($deltaj < -180) $deltaj = $deltaj + 360;
if ($deltaj > 180) $deltaj = $deltaj - 360;
$phij = $phi0[$j] + $t / 24 * (($j - 1) * 360 + $deltaj);
$sigma = $sigma + Math.PI / 180 * $rj * (15 * ($j - 1) + $deltaj / 24) * Math.sin($phij * Math.PI / 180) - ($r24[$j] - $r0[$j]) / 24 * Math.cos($phij * Math.PI / 180);
}
} while (sng($sigma) == sng($sigma2));
$t = $t - $dt;
if ($pif == 1)
{
$sigma = $sigma2;
$dt = 0.01;
}
}
$tpbs[$pb] = $t;
}
if ($iscoef >= 0)
{
// Affects tidal coefficients
$cfm = Math.round(calc_hauteur($tpbs[1 + $deltapm]) / 10);
$cfs = Math.round(calc_hauteur($tpbs[3 + $deltapm]) / 10);
}
else
{
// Assigns hours and tidal heights
$pmm = convdateheure($tpbs[1 + $deltapm]);
$pms = convdateheure($tpbs[3 + $deltapm]);
$bmm = convdateheure($tpbs[2 - $deltapm]);
$bms = convdateheure($tpbs[4 - $deltapm]);
$hpmm = convhauteur(calc_hauteur($tpbs[1 + $deltapm]));
$hpms = convhauteur(calc_hauteur($tpbs[3 + $deltapm]));
$hbmm = convhauteur(calc_hauteur($tpbs[2 - $deltapm]));
$hbms = convhauteur(calc_hauteur($tpbs[4 - $deltapm]));
}
}
// fonction d'initialisation de la marée
function init_maree($iscoef:Number = -1):void
{
var $n1:Array = [[0,0,0,0,0,0,0,0,0,0,0], [0,-2,-3,0,-2,0,0,0,0,0,0], [-2,-3,0,-4,-4,-3,-1,0,0,-2,0], [0,0,0,0,0,0,0,0,0,0,0], [-5,-4,-2,0,0,0,0,0,0,0,0]];
var $n2:Array = [[1,0,0,0,0,0,0,0,0,0,0], [1,1,1,-1,1,1,0,0,0,0,0], [2,2,0,2,4,4,2,2,-1,2,2], [0,0,0,0,0,0,0,0,0,0,0], [4,4,2,0,0,0,0,0,0,0,0]];
var $n3:Array = [[0,0,0,0,0,0,0,0,0,0,0], [0,0,1,0,0,0,0,0,0,0,0], [0,1,0,2,0,-1,-1,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0], [1,0,0,0,0,0,0,0,0,0,0]];
var $n4:Array = [[0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,-1,1,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,-1,1], [0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0]];
var $n5:Array = [[0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0]];
var $n6:Array = [[0,0,0,0,0,0,0,0,0,0,0], [1,-1,-1,1,-1,1,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0]];
var $i:int, $j:int, $test:Number;
if ($iscoef >= 0)
{
$z0 = $coef_z0;
for ($j = 1; $j <= 5; $j++)
{
for ($i = 1; $i <= 11; $i++)
{
$a[$j][$i] = $coef_a[$j][$i];
$g[$j][$i] = $coef_g[$j][$i];
}
}
}
else
{
$z0 = $pref_z0;
for ($j = 1; $j <= 5; $j++)
{
for ($i = 1; $i <= 11; $i++)
{
$a[$j][$i] = $pref_a[$j][$i];
$g[$j][$i] = $pref_g[$j][$i];
}
}
}
var $t:Number = 0;
var $t2:Number = Math.floor(30.6001 * (1 + $mois_maree + 12 * Math.floor(1 / ($mois_maree + 1) + 0.7))) + Math.floor(365.25 * ($annee_maree - Math.floor(1 / ($mois_maree + 1) + 0.7))) + $jour_maree + $t / 24 - 723258;
var $h:Number = 279.82 + 0.98564734 * $t2;
var $s:Number = 78.16 + 13.17639673 * $t2;
var $p:Number = 349.5 + 0.11140408 * $t2;
var $n:Number = 208.1 + 0.05295392 * $t2;
var $p1:Number = 282.6 + 0.000047069 * $t2;
var $d:Number = 90;
$r0 = { };
$phi0 = { };
for ($j = 1; $j <= 5; $j++)
{
var $xj:Number = 0;
var $yj:Number = 0;
for ($i = 1; $i <= 11; $i++)
{
var $vij:Number = 15 * ($j - 1) * $t + $n1[$j-1][$i-1] * $s + $n2[$j-1][$i-1] * $h + $n3[$j-1][$i-1] *$p + $n4[$j-1][$i-1] * $n + $n5[$j-1][$i-1] * $p1 + $n6[$j-1][$i-1] * $d;
$xj = $xj + $a[$j][$i] * Math.cos(Math.PI / 180 * ($vij - $g[$j][$i]));
$yj = $yj + $a[$j][$i] * Math.sin(Math.PI / 180 * ($vij - $g[$j][$i]));
}
$r0[$j] = Math.sqrt(($xj * $xj) + ($yj * $yj));
if ($r0[$j] == 0) $phi0[$j] = 90;
else
{
$test = 180 / Math.PI * (Math.asin($yj / $r0[$j]));
if ($test < 0) $phi0[$j] = 180 / Math.PI * (Math.acos($xj / $r0[$j])) * -1;
else $phi0[$j] = 180 / Math.PI * (Math.acos($xj / $r0[$j]));
}
}
$t = 24;
$t2 = Math.floor(30.6001 * (1 + $mois_maree + 12 * Math.floor(1 / ($mois_maree + 1) + 0.7))) + Math.floor(365.25 * ($annee_maree - Math.floor(1 / ($mois_maree + 1) + 0.7))) + $jour_maree + $t / 24 - 723258;
$h = 279.82 + 0.98564734 * $t2;
$s = 78.16 + 13.17639673 * $t2;
$p = 349.5 + 0.11140408 * $t2;
$n = 208.1 + 0.05295392 * $t2;
$p1 = 282.6 + 0.000047069 * $t2;
$d = 90;
$r24 = { };
$phi24 = { };
for ($j = 1; $j <= 5; $j++)
{
$xj = 0;
$yj = 0;
for ($i = 1; $i <= 11; $i++)
{
$vij = 15 * ($j - 1) * $t + $n1[$j-1][$i-1] * $s + $n2[$j-1][$i-1] * $h + $n3[$j-1][$i-1] *$p + $n4[$j-1][$i-1] * $n + $n5[$j-1][$i-1] * $p1 + $n6[$j-1][$i-1] * $d;
$xj = $xj + $a[$j][$i] * Math.cos(Math.PI / 180 * ($vij - $g[$j][$i]));
$yj = $yj + $a[$j][$i] * Math.sin(Math.PI / 180 * ($vij - $g[$j][$i]));
}
$r24[$j] = Math.sqrt(($xj * $xj) + ($yj * $yj));
if ($r24[$j] == 0) $phi24[$j] = 90;
else
{
$test = 180 / Math.PI * (Math.asin($yj / $r24[$j]));
if ($test < 0) $phi24[$j] = 180 / Math.PI * (Math.acos($xj / $r24[$j])) * -1;
else $phi24[$j] = 180 / Math.PI * (Math.acos($xj / $r24[$j]));
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
// Helper Functions
/////////////////////////////////////////////////////////////////////////////////////////////////////
function sng($valeur:Number):Number
{
if ($valeur < 0) return -1; else return 1;
}
function convdateheure($valeur:Number):String
{
var $heure:Number = Math.floor($valeur);
var $minute:Number = Math.floor(Math.floor(($valeur - Math.floor($valeur)) * 100) * 0.6);
var hoursLabel:String = "", minsLabel:String = "";
if ($heure == 24) $heure = 0; // Check if at the 24 hour mark, change to 0
if ($heure < 10) hoursLabel += "0" + $heure.toString(); else hoursLabel = $heure.toString();
if ($minute < 10) minsLabel += "0" + $minute.toString(); else minsLabel = $minute.toString();
return hoursLabel + ":" + minsLabel;
}
function convhauteur($valeur:Number):Number
{
var $temp:Number = Math.floor($valeur / 10) / 100;
return Number($temp.toFixed(2));
}
////////////////////////////////////// ////////////////////////////////////// ////////////////////////////////////// //////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
// TideDataLoader.as
/////////////////////////////////////////////////////////////////////////////////////////////////////
const COMPLETE:String = Event.COMPLETE;
const IO_ERROR:String = IOErrorEvent.IO_ERROR;
var _localPath:String = "data/";
var _localTideDataFile:String = "tide_data.xml";
var _tideXmlData:XML;
function get tideXmlData():XML { return _tideXmlData; }
var _callBackFunc:Function;
var _configLoader:URLLoader;
var _isDebugger:Boolean = true;
/////////////////////////////////////////////////////////////////////////////////////////////////////
// Load Local Tide Data
/////////////////////////////////////////////////////////////////////////////////////////////////////
function loadLocalData(callBackFunc:Function):void
{
_callBackFunc = callBackFunc;
_configLoader = new URLLoader();
addDataEvents();
//var localDataFile:File = File.applicationDirectory;
//localDataFile = localDataFile.resolvePath(_localPath + _localTideDataFile);
// _configLoader.load( new URLRequest( localDataFile.url ));
_configLoader.load( new URLRequest( _localTideDataFile ));
}
function addDataEvents():void
{
_configLoader.addEventListener( flash.events.Event.COMPLETE, onLoadDataCompleted, false, 0 );
_configLoader.addEventListener( IOErrorEvent.IO_ERROR, onLoadDataIOError, false, 0 );
}
function removeDataEvents():void
{
_configLoader.removeEventListener( flash.events.Event.COMPLETE, onLoadDataCompleted );
_configLoader.removeEventListener( IOErrorEvent.IO_ERROR, onLoadDataIOError );
}
function onLoadDataCompleted( event:flash.events.Event ):void
{
removeDataEvents();
_tideXmlData = new XML(event.target.data);
_callBackFunc({status:COMPLETE});
}
function onLoadDataIOError(e:IOErrorEvent):void
{
removeDataEvents();
_callBackFunc({status:IO_ERROR});
}
Copy link to clipboard
Copied
there's probably nothing to calculate. you just need to inspect tide_data.xml
Copy link to clipboard
Copied
Not sure... I think it's for coordinates of ports :
Here's the tide_data.xml :
<?xml version="1.0" encoding="utf-8" ?>
<data>
<row>
<NOM><![CDATA[NOUMEA]]></NOM>
<ZO>95</ZO>
<ASA>49</ASA>
<AQ1>12</AQ1>
<AO1>66</AO1>
<AK1>139</AK1>
<AN2>64</AN2>
<AM2>409</AM2>
<AS2>142</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>307</GSA>
<GQ1>112</GQ1>
<GO1>150</GO1>
<GK1>193</GK1>
<GN2>211</GN2>
<GM2>229</GM2>
<GS2>277</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[22 18 S]]></LA>
<LO><![CDATA[166 26 E]]></LO>
<UTC><![CDATA[ UT 11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[NUVEA]]></NOM>
<ZO>96</ZO>
<ASA>62</ASA>
<AQ1>14</AQ1>
<AO1>66</AO1>
<AK1>138</AK1>
<AN2>63</AN2>
<AM2>412</AM2>
<AS2>144</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>298</GSA>
<GQ1>109</GQ1>
<GO1>150</GO1>
<GK1>132</GK1>
<GN2>213</GN2>
<GM2>227</GM2>
<GS2>277</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[22 18 S]]></LA>
<LO><![CDATA[166 26 E]]></LO>
<UTC><![CDATA[ UT 11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[BOURAIL]]></NOM>
<ZO>84</ZO>
<ASA>0</ASA>
<AQ1>9</AQ1>
<AO1>69</AO1>
<AK1>140</AK1>
<AN2>70</AN2>
<AM2>385</AM2>
<AS2>133</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>0</GSA>
<GQ1>91</GQ1>
<GO1>156</GO1>
<GK1>196</GK1>
<GN2>227</GN2>
<GM2>232</GM2>
<GS2>265</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[21 38 S]]></LA>
<LO><![CDATA[165 27 E]]></LO>
<UTC><![CDATA[ UT+11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[HIENGHENE]]></NOM>
<ZO>96</ZO>
<ASA>0</ASA>
<AQ1>14</AQ1>
<AO1>84</AO1>
<AK1>168</AK1>
<AN2>84</AN2>
<AM2>344</AM2>
<AS2>92</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>0</GSA>
<GQ1>135</GQ1>
<GO1>166</GO1>
<GK1>198</GK1>
<GN2>149</GN2>
<GM2>176</GM2>
<GS2>185</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[20 41 S]]></LA>
<LO><![CDATA[164 56 E]]></LO>
<UTC><![CDATA[ UT+11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[PRONY]]></NOM>
<ZO>78</ZO>
<ASA>0</ASA>
<AQ1>13</AQ1>
<AO1>65</AO1>
<AK1>136</AK1>
<AN2>43</AN2>
<AM2>309</AM2>
<AS2>87</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>0</GSA>
<GQ1>116</GQ1>
<GO1>147</GO1>
<GK1>190</GK1>
<GN2>166</GN2>
<GM2>211</GM2>
<GS2>287</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[22 19 S]]></LA>
<LO><![CDATA[166 49 E]]></LO>
<UTC><![CDATA[ UT+11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[POINGAM]]></NOM>
<ZO>90</ZO>
<ASA>0</ASA>
<AQ1>17</AQ1>
<AO1>92</AO1>
<AK1>189</AK1>
<AN2>67</AN2>
<AM2>349</AM2>
<AS2>107</AS2>
<AMN4>0</AMN4>
<AM4>13</AM4>
<AMS4>13</AMS4>
<GSA>0</GSA>
<GQ1>143</GQ1>
<GO1>170</GO1>
<GK1>205</GK1>
<GN2>177</GN2>
<GM2>200</GM2>
<GS2>221</GS2>
<GMN4>0</GMN4>
<GM4>268</GM4>
<GMS4>299</GMS4>
<LA><![CDATA[20 4 S]]></LA>
<LO><![CDATA[164 1 E]]></LO>
<UTC><![CDATA[ UT+11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[KUTO]]></NOM>
<ZO>81</ZO>
<ASA>32</ASA>
<AQ1>14</AQ1>
<AO1>64</AO1>
<AK1>129</AK1>
<AN2>48</AN2>
<AM2>311</AM2>
<AS2>82</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>2</AMS4>
<GSA>353</GSA>
<GQ1>116</GQ1>
<GO1>151</GO1>
<GK1>192</GK1>
<GN2>173</GN2>
<GM2>209</GM2>
<GS2>277</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>226</GMS4>
<LA><![CDATA[22 39 S]]></LA>
<LO><![CDATA[167 26 E]]></LO>
<UTC><![CDATA[ UT+11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[OUVEA]]></NOM>
<ZO>100</ZO>
<ASA>0</ASA>
<AQ1>12</AQ1>
<AO1>80</AO1>
<AK1>155</AK1>
<AN2>85</AN2>
<AM2>369</AM2>
<AS2>85</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>0</GSA>
<GQ1>126</GQ1>
<GO1>165</GO1>
<GK1>200</GK1>
<GN2>145</GN2>
<GM2>174</GM2>
<GS2>183</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[20 32 S]]></LA>
<LO><![CDATA[166 33 E]]></LO>
<UTC><![CDATA[ UT+11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[THIO]]></NOM>
<ZO>85</ZO>
<ASA>0</ASA>
<AQ1>11</AQ1>
<AO1>79</AO1>
<AK1>162</AK1>
<AN2>85</AN2>
<AM2>367</AM2>
<AS2>76</AS2>
<AMN4>4</AMN4>
<AM4>4</AM4>
<AMS4>2</AMS4>
<GSA>0</GSA>
<GQ1>136</GQ1>
<GO1>157</GO1>
<GK1>194</GK1>
<GN2>150</GN2>
<GM2>173</GM2>
<GS2>187</GS2>
<GMN4>80</GMN4>
<GM4>114</GM4>
<GMS4>255</GMS4>
<LA><![CDATA[21 37 S]]></LA>
<LO><![CDATA[166 14 E]]></LO>
<UTC><![CDATA[ UT+11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[KOUMAC]]></NOM>
<ZO>96</ZO>
<ASA>56</ASA>
<AQ1>13</AQ1>
<AO1>74</AO1>
<AK1>167</AK1>
<AN2>67</AN2>
<AM2>388</AM2>
<AS2>145</AS2>
<AMN4>0</AMN4>
<AM4>3</AM4>
<AMS4>1</AMS4>
<GSA>334</GSA>
<GQ1>142</GQ1>
<GO1>169</GO1>
<GK1>201</GK1>
<GN2>219</GN2>
<GM2>226</GM2>
<GS2>254</GS2>
<GMN4>0</GMN4>
<GM4>242</GM4>
<GMS4>357</GMS4>
<LA><![CDATA[20 29 S]]></LA>
<LO><![CDATA[164 11 E]]></LO>
<UTC><![CDATA[ UT+11.0]]></UTC>
</row>
<row>
<NOM><![CDATA[RIKITEA]]></NOM>
<ZO>54</ZO>
<ASA>45</ASA>
<AQ1>3</AQ1>
<AO1>18</AO1>
<AK1>23</AK1>
<AN2>70</AN2>
<AM2>275</AM2>
<AS2>91</AS2>
<AMN4>0</AMN4>
<AM4>2</AM4>
<AMS4>0</AMS4>
<GSA>4</GSA>
<GQ1>281</GQ1>
<GO1>269</GO1>
<GK1>215</GK1>
<GN2>47</GN2>
<GM2>60</GM2>
<GS2>8</GS2>
<GMN4>0</GMN4>
<GM4>19</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[23 7 S]]></LA>
<LO><![CDATA[134 58 W]]></LO>
<UTC><![CDATA[ UT-10.0]]></UTC>
</row>
<row>
<NOM><![CDATA[RAPA]]></NOM>
<ZO>50</ZO>
<ASA>95</ASA>
<AQ1>7</AQ1>
<AO1>24</AO1>
<AK1>29</AK1>
<AN2>41</AN2>
<AM2>186</AM2>
<AS2>111</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>6</GSA>
<GQ1>275</GQ1>
<GO1>279</GO1>
<GK1>253</GK1>
<GN2>352</GN2>
<GM2>354</GM2>
<GS2>7</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[27 37 S]]></LA>
<LO><![CDATA[144 19 W]]></LO>
<UTC><![CDATA[ UT-10.0]]></UTC>
</row>
<row>
<NOM><![CDATA[RAIVAVAE]]></NOM>
<ZO>53</ZO>
<ASA>0</ASA>
<AQ1>3</AQ1>
<AO1>19</AO1>
<AK1>21</AK1>
<AN2>40</AN2>
<AM2>134</AM2>
<AS2>113</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>0</GSA>
<GQ1>336</GQ1>
<GO1>301</GO1>
<GK1>230</GK1>
<GN2>14</GN2>
<GM2>2</GM2>
<GS2>21</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[23 52 S]]></LA>
<LO><![CDATA[147 41 W]]></LO>
<UTC><![CDATA[ UT-10.0]]></UTC>
</row>
<row>
<NOM><![CDATA[PAPEETE]]></NOM>
<ZO>44</ZO>
<ASA>22</ASA>
<AQ1>4</AQ1>
<AO1>16</AO1>
<AK1>6</AK1>
<AN2>9</AN2>
<AM2>62</AM2>
<AS2>69</AS2>
<AMN4>0</AMN4>
<AM4>1</AM4>
<AMS4>0</AMS4>
<GSA>16</GSA>
<GQ1>306</GQ1>
<GO1>309</GO1>
<GK1>140</GK1>
<GN2>346</GN2>
<GM2>19</GM2>
<GS2>19</GS2>
<GMN4>0</GMN4>
<GM4>104</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[17 32 S]]></LA>
<LO><![CDATA[149 34 W]]></LO>
<UTC><![CDATA[ UT-10.0]]></UTC>
</row>
<row>
<NOM><![CDATA[PAPEETE]]></NOM>
<ZO>44</ZO>
<ASA>23</ASA>
<AQ1>0</AQ1>
<AO1>4</AO1>
<AK1>0</AK1>
<AN2>9</AN2>
<AM2>58</AM2>
<AS2>68</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>21</GSA>
<GQ1>0</GQ1>
<GO1>204</GO1>
<GK1>0</GK1>
<GN2>346</GN2>
<GM2>16</GM2>
<GS2>7</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[17 32 S]]></LA>
<LO><![CDATA[149 34 W]]></LO>
<UTC><![CDATA[ UT-10.0]]></UTC>
</row>
<row>
<NOM><![CDATA[MAKATEA]]></NOM>
<ZO>30</ZO>
<ASA>0</ASA>
<AQ1>3</AQ1>
<AO1>14</AO1>
<AK1>2</AK1>
<AN2>24</AN2>
<AM2>122</AM2>
<AS2>57</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>0</GSA>
<GQ1>294</GQ1>
<GO1>309</GO1>
<GK1>109</GK1>
<GN2>34</GN2>
<GM2>78</GM2>
<GS2>31</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[15 49 S]]></LA>
<LO><![CDATA[148 17 W]]></LO>
<UTC><![CDATA[ UT-10.0]]></UTC>
</row>
<row>
<NOM><![CDATA[LAROCHE]]></NOM>
<ZO>99</ZO>
<ASA>0</ASA>
<AQ1>13</AQ1>
<AO1>72</AO1>
<AK1>156</AK1>
<AN2>89</AN2>
<AM2>393</AM2>
<AS2>51</AS2>
<AMN4>0</AMN4>
<AM4>0</AM4>
<AMS4>0</AMS4>
<GSA>0</GSA>
<GQ1>135</GQ1>
<GO1>163</GO1>
<GK1>197</GK1>
<GN2>142</GN2>
<GM2>176</GM2>
<GS2>200</GS2>
<GMN4>0</GMN4>
<GM4>0</GM4>
<GMS4>0</GMS4>
<LA><![CDATA[21 27 S]]></LA>
<LO><![CDATA[168 1 E]]></LO>
<UTC><![CDATA[ UT 11.0]]></UTC>
</row>
</data>
Copy link to clipboard
Copied
part of it latitude and longitude, but there's other info there. that should be pulled from a data server so the info is current if you want the current tide.
or if you just want to calculate the approximate tide, that might be doable with those data but you need the api that explains what those entries are. ie, where'd you get the xml?
Copy link to clipboard
Copied
In fact, the code is calculating the tides. This way, the user doesn't need an internet connection. If it could also calculate the tide of the current time it would be great.
Do you want me to send you the code to take a look at it ? (50$ if you're interested)
Copy link to clipboard
Copied
send me an email via www.kglad.com > contact