Skip to main content
Inspiring
January 16, 2018
質問

I've got an AS3 code that calculates the thides (highs and lows). Want to calculate the actual tide.

  • January 16, 2018
  • 返信数 1.
  • 616 ビュー

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});

}

このトピックへの返信は締め切られました。

返信数 1

kglad
Community Expert
Community Expert
January 16, 2018

there's probably nothing to calculate.  you just need to inspect tide_data.xml

Stephdidou作成者
Inspiring
January 16, 2018

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>

kglad
Community Expert
Community Expert
January 16, 2018

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?