import javax.xml.soap.*;
import java.util.Iterator;
import java.net.URL;
import java.io.*;
public class Client {
public static void main(String[] args) {
try {
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnectionFactory.createConnection();
SOAPFactory soapFactory = SOAPFactory.newInstance();
SOAPMessage message = prepareMessage();
URL endpoint = new URL("https://opendap.co-ops.nos.noaa.gov/axis/services/portsconditions");
SOAPMessage response = connection.call(message, endpoint);
connection.close();
System.out.print("\nPrinting the message that is being sent: \n\n");
message.writeTo(System.out);
System.out.println("\n\n");
/*
System.out.println("\nPrinting the respone that was recieved: \n\n" );
response.writeTo(System.out);
*/
//Uncoment this part if you want the response to be saved locally in an XML file
/*
FileOutputStream fout = new FileOutputStream ("SoapResponse.xml");
response.writeTo(fout);
fout.close();
*/
//You can also store the response as a String
/*
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.writeTo( out );
String str = out.toString();
*/
System.out.println("\n\nIterating through the response object to get the values:\n\n");
SOAPBody responseBody = response.getSOAPBody();
//Checking for errors
if (responseBody.hasFault()) {
SOAPFault fault = responseBody.getFault();
String actor = fault.getFaultActor();
System.out.println("Fault contains: ");
System.out.println("Fault code: " + fault.getFaultCodeAsName().getQualifiedName());
System.out.println("Fault string: " + fault.getFaultString());
if (actor != null) {
System.out.println("Actor: " + actor);
}
} else {
Iterator iterator = responseBody.getChildElements();
String tagName = null;
SOAPElement se = null;
Name attributeName = null;
while (iterator.hasNext()) {
se = (SOAPElement) iterator.next();
iterator = se.getChildElements();
attributeName = soapFactory.createName("date");
System.out.println(" Date : " + se.getAttributeValue(attributeName));
attributeName = soapFactory.createName("portsId");
System.out.println(" Ports Id : " + se.getAttributeValue(attributeName));
attributeName = soapFactory.createName("time");
System.out.println(" Time : " + se.getAttributeValue(attributeName));
attributeName = soapFactory.createName("timeZone");
System.out.println(" Time Zone : " + se.getAttributeValue(attributeName) + "\n");
while (iterator.hasNext()) {
se = (SOAPElement) iterator.next();
tagName = se.getElementName().getLocalName();
if ("definitions".equals(tagName)) {
printDefinitions(se);
} else if ("units".equals(tagName)) {
printUnits(se);
} else if ("dataSource".equals(tagName)) {
System.out.println("Data Source and Disclaimer: ");
System.out.println("==================== ");
System.out.println("Data Source : " + se.getValue());
} else if ("dataDisclaimer".equals(tagName)) {
System.out.println("Data Disclaimer : " + se.getValue());
} else if ("portsStations".equals(tagName)) {
printStations(se);
} else if ("observations".equals(tagName)) {
printObservations(se);
}
}
}
}
} catch (SOAPException e) {
System.err.println("ERROR: ******* " + e.toString());
} catch (IOException io) {
System.err.println("ERROR: ******* " + io.toString());
}
}
public static SOAPMessage prepareMessage() {
SOAPMessage message = null;
try {
SOAPFactory soapFactory = SOAPFactory.newInstance();
MessageFactory factory = MessageFactory.newInstance();
message = factory.createMessage();
SOAPHeader header = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
header.detachNode();
message.getMimeHeaders().addHeader("SOAPAction", "");
Name bodyName = soapFactory.createName("getPortsConditions", "ports",
"https://opendap.co-ops.nos.noaa.gov/axis/services/portsconditions?wsdl");
//Constructing the body for the request
SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
Name name = soapFactory.createName("portsId");
SOAPElement symbol = bodyElement.addChildElement(name);
symbol.addTextNode("cn");
} catch (SOAPException e) {
System.err.println("ERROR: ******* " + e.toString());
}
return message;
}
public static void printObservations(SOAPElement se) {
Iterator iterator = se.getChildElements();//Observations
String tagName;
System.out.println("\nObservations: ");
System.out.println("==================== ");
while (iterator.hasNext()) {
se = (SOAPElement) iterator.next();
tagName = se.getElementName().getLocalName();
if ("wlMetData".equals(tagName)) {
printWlMetData(se);
} else if ("currentData".equals(tagName)) {
printCurrentData(se);
}
}
}
public static void printCurrentData(SOAPElement se) {
Iterator iterator = se.getChildElements();
String tagName;
System.out.print("Current Data for Station ID: ");
while (iterator.hasNext()) {
se = (SOAPElement) iterator.next();
tagName = se.getElementName().getLocalName();
if ("ID".equals(tagName)) {
System.out.println(se.getValue());
System.out.println("====================================");
} else if ("timeStamp".equals(tagName)) {
System.out.println("Time Stamp : " + se.getValue());
} else if ("speed".equals(tagName)) {
System.out.println("Speed : " + se.getValue());
} else if ("direction".equals(tagName)) {
System.out.println("Direction : " + se.getValue());
} else if ("level".equals(tagName)) {
System.out.println("Level : " + se.getValue());
} else if ("trend".equals(tagName)) {
System.out.println("Trend : " + se.getValue());
}
}
System.out.println("\n");
}
public static String addSpaces(String orig, int quantity) {
StringBuffer copy = new StringBuffer(orig);
while (copy.length() < quantity) {
copy.append(' ');
}
return copy.toString();
}
public static void printStations(SOAPElement se) {
Iterator iterator1 = null;
Iterator iterator = se.getChildElements();//portsStations
String tagName;
System.out.println("\nStations: ");
System.out.println("==================== ");
System.out.println("ID \t" + addSpaces("Name", 80) + "Latitude\tLongitude");
while (iterator.hasNext()) {
se = (SOAPElement) iterator.next();
iterator1 = se.getChildElements();
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("ID".equals(tagName)) {
System.out.print(addSpaces(se.getValue(), 8));
} else if ("name".equals(tagName)) {
System.out.print("\t" + addSpaces(se.getValue(), 80));
} else if ("latitude".equals(tagName)) {
System.out.print(se.getValue());
} else if ("longitude".equals(tagName)) {
System.out.println("\t\t" + se.getValue());
}
}
}
System.out.println("\n");
}
public static void printWlMetData(SOAPElement se) {
Iterator iterator1 = null;
Iterator iterator = se.getChildElements();
String tagName;
System.out.print("Water Level - Met Data for Station ID: ");
while (iterator.hasNext()) {
se = (SOAPElement) iterator.next();
tagName = se.getElementName().getLocalName();
if ("ID".equals(tagName)) {
System.out.println(se.getValue());
System.out.println("=============================================== ");
} else if ("waterLevel".equals(tagName)) {
System.out.println("***Water Level*** ");
iterator1 = se.getChildElements();
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("timeStamp".equals(tagName)) {
System.out.println("Time Stamp : " + se.getValue());
} else if ("observed".equals(tagName)) {
System.out.println("observed : " + se.getValue());
} else if ("trend".equals(tagName)) {
System.out.println("Trend : " + se.getValue());
}
}
} else if ("airTemperature".equals(tagName)) {
System.out.println("***Air Temperature*** ");
iterator1 = se.getChildElements();
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("timeStamp".equals(tagName)) {
System.out.println("Time Stamp : " + se.getValue());
} else if ("airTemp".equals(tagName)) {
System.out.println("Air Temperature : " + se.getValue());
}
}
} else if ("waterTemperature".equals(tagName)) {
System.out.println("***Water Temperature*** ");
iterator1 = se.getChildElements();
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("timeStamp".equals(tagName)) {
System.out.println("Time Stamp : " + se.getValue());
} else if ("waterTemp".equals(tagName)) {
System.out.println("Water Temperature : " + se.getValue());
}
}
} else if ("barometricPressure".equals(tagName)) {
System.out.println("***Barometric Pressure*** ");
iterator1 = se.getChildElements();
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("timeStamp".equals(tagName)) {
System.out.println("Time Stamp : " + se.getValue());
} else if ("pressure".equals(tagName)) {
System.out.println("Pressure : " + se.getValue());
} else if ("trend".equals(tagName)) {
System.out.println("Trend : " + se.getValue());
}
}
} else if ("salinity".equals(tagName)) {
System.out.println("***Salinity*** ");
iterator1 = se.getChildElements();
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("timeStamp".equals(tagName)) {
System.out.println("Time Stamp : " + se.getValue());
} else if ("wSalinity".equals(tagName)) {
System.out.println("Salinity : " + se.getValue());
}
}
} else if ("airGap".equals(tagName)) {
System.out.println("***Air Gap*** ");
iterator1 = se.getChildElements();
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("timeStamp".equals(tagName)) {
System.out.println("Time Stamp : " + se.getValue());
} else if ("clearance".equals(tagName)) {
System.out.println("Clearance : " + se.getValue());
} else if ("trend".equals(tagName)) {
System.out.println("Trend : " + se.getValue());
}
}
} else if ("wind".equals(tagName)) {
iterator1 = se.getChildElements();
System.out.println("***Wind*** ");
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("timeStamp".equals(tagName)) {
System.out.println("Time Stamp : " + se.getValue());
} else if ("speed".equals(tagName)) {
System.out.println("Speed : " + se.getValue());
} else if ("direction".equals(tagName)) {
System.out.println("Direction : " + se.getValue());
} else if ("gust".equals(tagName)) {
System.out.println("Gust : " + se.getValue());
}
}
}
}
System.out.println("\n");
}
public static void printDefinitions(SOAPElement se) {
Iterator iterator = se.getChildElements();
String tagName;
System.out.println("Definitions: ");
System.out.println("==================== ");
while (iterator.hasNext()) {
se = (SOAPElement) iterator.next();
tagName = se.getElementName().getLocalName();
if ("level".equals(tagName)) {
System.out.println("Level : " + se.getValue());
} else if ("datum".equals(tagName)) {
System.out.println("Datum : " + se.getValue());
} else if ("trend".equals(tagName)) {
System.out.println("trend : " + se.getValue());
} else if ("missingValue".equals(tagName)) {
System.out.println("Missing Value : " + se.getValue());
}
}
System.out.println("\n");
}
public static void printUnits(SOAPElement se) {
Iterator iterator1 = null;
Iterator iterator = se.getChildElements();
String tagName;
System.out.println("Units: ");
System.out.println("==================== ");
while (iterator.hasNext()) {
se = (SOAPElement) iterator.next();
tagName = se.getElementName().getLocalName();
if ("timeStamp".equals(tagName)) {
System.out.println("Time Stamp : " + se.getValue());
} else if ("waterLevel ".equals(tagName)) {
System.out.println("Water Level : " + se.getValue());
} else if ("airTemperature".equals(tagName)) {
System.out.println("Air Temperature : " + se.getValue());
} else if ("waterTemperature".equals(tagName)) {
System.out.println("Water Temperature : " + se.getValue());
} else if ("barometricPressure".equals(tagName)) {
System.out.println("Barometric Pressure : " + se.getValue());
} else if ("airGap".equals(tagName)) {
System.out.println("Air Gap : " + se.getValue());
} else if ("salinity".equals(tagName)) {
System.out.println("Salinity : " + se.getValue());
} else if ("windUnits".equals(tagName)) {
iterator1 = se.getChildElements();
System.out.println("**Wind** ");
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("speed".equals(tagName)) {
System.out.println("Speed : " + se.getValue());
} else if ("direction".equals(tagName)) {
System.out.println("Direction : " + se.getValue());
} else if ("gust".equals(tagName)) {
System.out.println("Gust : " + se.getValue());
}
}
} else if ("current".equals(tagName)) {
iterator1 = se.getChildElements();
System.out.println("**Current** ");
while (iterator1.hasNext()) {
se = (SOAPElement) iterator1.next();
tagName = se.getElementName().getLocalName();
if ("speed".equals(tagName)) {
System.out.println("speed : " + se.getValue());
} else if ("direction".equals(tagName)) {
System.out.println("Direction : " + se.getValue());
}
}
}
}
System.out.println("\n");
}
}
/**********************
*
>java Client
Printing the message that is being sent:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<ports:getPortsConditions xmlns:ports="https://opendap.co-ops.nos.noaa.gov/axis/webservices/portsconditions/wsdl">
<portsId>cn</portsId>
</ports:getPortsConditions>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Iterating through the response object to get the values:
Date : 20140604
Ports Id :Chesapeake Bay North PORTS
Time : 12:47
Time Zone : EDT //This time is the local time for PORTS while all the data is in GMT
Definitions:
====================
Level : Real time bin for the current instrument
Datum : 0 = MLLW, 1 = IGLD, 2 = CRD, 4 = STD
trend : 0 = Steady (Slack), 1 = decreasing (Ebbing), 2 = increasing (Flooding), 3 = undefined
Missing Value : -999.999 = indicates that there was no reading recorded
Units:
====================
Time Stamp : Timestamp of all data is in GMT
Air Temperature : Air temperature is in degrees centigrade
Water Temperature : Water temperature is in degrees centigrade
**Wind**
Speed : Wind speed is in meters per second
Direction : Wind direction is in degrees (true)
Gust : Wind gust is in meters per second
Barometric Pressure : Barometric pressure is in millibars
Air Gap : Clearance is in meters
Salinity : Salinity is in psu -- parts per thousand
**Current**
speed : Current speed is in knots
Direction : Current direction is in degrees (true)
Data Source and Disclaimer:
====================
Data Source : USDOC/NOAA/NOS/CO-OPS (Center for Operational Oceanographic Products and Services)
Data Disclaimer : These raw data have not been subjected to the National Ocean Service's quality control or quality assurance procedures
and do not meet the criteria and standards of official National Ocean Service data. They are released for limited public use
as preliminary data to be used only with appropriate caution.
Stations:
====================
ID Name Latitude Longitude
8632837 Rapp. Lt Front Range 37.538 -76.015
8636580 Windmill Point 37.615 -76.29
8635750 Lewisetta 37.996 -76.464
8578240 Piney Point 38.133 -76.533
8577330 Solomons Island 38.317 -76.452
cb1001 Cove Point LNG Pier Currents 38.403 -76.384
8577018 Cove Point LNG Pier 38.404 -76.385
8594900 Washington D.C. 38.873 -77.022
tplm2 Thomas Pt Light 38.899 -76.436
8575512 Annapolis 38.983 -76.482
8575432 Chesapeake Bay Brdg 38.993 -76.382
8573364 Tolchester Beach 39.213 -76.245
8574729 NE Tower 39.22 -76.525
8574728 Baltimore Key Bridge 39.22 -76.528
8574680 Baltimore 39.267 -76.578
8573927 Chesapeake City 39.527 -75.81
8573928 Ches. City Bridge 39.527 -75.81
cb1301 Chesapeake City Currents 39.531 -75.828
8551910 Reedy Point 39.558 -75.573
db0201 Reedy Point (pred) 39.559 -75.552
8551911 Reedy Point Bridge 39.56 -75.568
cb0901 Potomac R MCh LWB B 38.115 -76.531
cb1201 Tolch. Front Range 39.141 -76.33
cb0801 Rapp. Shl Ch LBB 60 37.674 -76.155
cb1101 Chesapeake Ch LBB 92 38.982 -76.385
Observations:
====================
Water Level - Met Data for Station ID: 8551911
===============================================
Water Level - Met Data for Station ID: 8551910
===============================================
***Water Level***
Time Stamp : 2014-06-04 16:42:00.0
observed : 0.629
Trend : 2
***Water Temperature***
Time Stamp : 2014-06-04 16:42:00.0
Water Temperature : 21.5
***Air Temperature***
Time Stamp : 2014-06-04 16:42:00.0
Air Temperature : 26.2
***Barometric Pressure***
Time Stamp : 2014-06-04 16:42:00.0
Pressure : 1009.8
Trend : 1
Water Level - Met Data for Station ID: 8573928
===============================================
***Air Gap***
Time Stamp : 2014-06-04 16:30:00.0
Clearance : 43.357
Trend : 1
Water Level - Met Data for Station ID: 8573927
===============================================
***Water Level***
Time Stamp : 2014-06-04 16:36:00.0
observed : 0.497
Trend : 2
***Water Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Water Temperature : 22.5
***Air Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Air Temperature : 26.0
***Wind***
Time Stamp : 2014-06-04 16:36:00.0
Speed : 1.898
Direction : 328.0
Gust : 5.0
***Barometric Pressure***
Time Stamp : 2014-06-04 16:36:00.0
Pressure : 1009.8
Trend : 1
Water Level - Met Data for Station ID: 8574680
===============================================
***Water Level***
Time Stamp : 2014-06-04 16:36:00.0
observed : 0.554
Trend : 1
***Water Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Water Temperature : 23.7
***Air Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Air Temperature : 26.7
***Wind***
Time Stamp : 2014-06-04 16:36:00.0
Speed : 3.802
Direction : 10.29
Gust : 4.7
***Barometric Pressure***
Time Stamp : 2014-06-04 16:36:00.0
Pressure : 1010.0
Trend : 1
***Salinity***
Time Stamp : 2014-06-04 16:36:00.0
Salinity : 1.82
Water Level - Met Data for Station ID: 8574729
===============================================
***Air Temperature***
Time Stamp : 2014-06-04 16:30:00.0
Air Temperature : 26.7
***Wind***
Time Stamp : 2014-06-04 16:30:00.0
Speed : 0.478
Direction : 240.97
Gust : 1.0
***Barometric Pressure***
Time Stamp : 2014-06-04 16:30:00.0
Pressure : 1010.4
Trend : 1
Water Level - Met Data for Station ID: 8574728
===============================================
***Air Temperature***
Time Stamp : 2014-06-04 16:42:00.0
Air Temperature : 27.0
***Wind***
Time Stamp : 2014-06-04 16:42:00.0
Speed : 0.201
Direction : 107.0
Gust : 0.6
***Barometric Pressure***
Time Stamp : 2014-06-04 16:42:00.0
Pressure : 1010.5
Trend : 1
Water Level - Met Data for Station ID: 8573364
===============================================
***Water Level***
Time Stamp : 2014-06-04 16:36:00.0
observed : 0.54
Trend : 0
***Water Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Water Temperature : 21.7
***Air Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Air Temperature : 25.0
***Wind***
Time Stamp : 2014-06-04 16:36:00.0
Speed : 0.7
Direction : 337.0
Gust : 0.9
***Barometric Pressure***
Time Stamp : 2014-06-04 16:36:00.0
Pressure : 1010.8
Trend : 1
Water Level - Met Data for Station ID: 8575432
===============================================
***Air Gap***
Time Stamp : 2014-06-04 16:36:00.0
Clearance : 57.203
Trend : 1
Water Level - Met Data for Station ID: 8575512
===============================================
***Water Level***
Time Stamp : 2014-06-04 16:30:00.0
observed : 0.479
Trend : 1
***Air Temperature***
Time Stamp : 2014-06-04 16:30:00.0
Air Temperature : 24.8
***Barometric Pressure***
Time Stamp : 2014-06-04 16:30:00.0
Pressure : 1010.3
Trend : 1
Water Level - Met Data for Station ID: tplm2
===============================================
Water Level - Met Data for Station ID: 8594900
===============================================
***Water Level***
Time Stamp : 2014-06-04 16:36:00.0
observed : 0.949
Trend : 2
***Water Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Water Temperature : 22.8
***Air Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Air Temperature : 28.4
***Wind***
Time Stamp : 2014-06-04 16:36:00.0
Speed : 2.243
Direction : 265.05
Gust : 3.2
***Barometric Pressure***
Time Stamp : 2014-06-04 16:36:00.0
Pressure : 1010.1
Trend : 1
Water Level - Met Data for Station ID: 8577018
===============================================
***Air Temperature***
Time Stamp : 2014-06-04 16:42:00.0
Air Temperature : 23.3
***Wind***
Time Stamp : 2014-06-04 16:42:00.0
Speed : 2.3
Direction : 348.0
Gust : 2.5
***Barometric Pressure***
Time Stamp : 2014-06-04 16:42:00.0
Pressure : 1010.7
Trend : 1
Water Level - Met Data for Station ID: 8577330
===============================================
***Water Level***
Time Stamp : 2014-06-04 16:30:00.0
observed : 0.288
Trend : 1
***Water Temperature***
Time Stamp : 2014-06-04 16:30:00.0
Water Temperature : 21.1
Water Level - Met Data for Station ID: 8578240
===============================================
***Wind***
Time Stamp : 2014-06-04 16:36:00.0
Speed : 2.001
Direction : 269.0
Gust : 2.1
Water Level - Met Data for Station ID: 8635750
===============================================
***Water Level***
Time Stamp : 2014-06-04 16:36:00.0
observed : 0.238
Trend : 1
***Water Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Water Temperature : 22.8
***Air Temperature***
Time Stamp : 2014-06-04 16:36:00.0
Air Temperature : 26.1
***Wind***
Time Stamp : 2014-06-04 16:36:00.0
Speed : 1.739
Direction : 66.29
Gust : 2.4
***Barometric Pressure***
Time Stamp : 2014-06-04 16:36:00.0
Pressure : 1010.6
Trend : 1
***Salinity***
Time Stamp : 2014-06-04 16:36:00.0
Salinity : 8.72
Water Level - Met Data for Station ID: 8636580
===============================================
***Water Level***
Time Stamp : 2014-06-04 16:36:00.0
observed : 0.304
Trend : 2
Water Level - Met Data for Station ID: 8632837
===============================================
***Wind***
Time Stamp : 2014-06-04 16:36:00.0
Speed : 1.698
Direction : 335.0
Gust : 6.6
***Barometric Pressure***
Time Stamp : 2014-06-04 16:36:00.0
Pressure : 1011.3
Trend : 1
Current Data for Station ID: cb0801
====================================
Time Stamp : -999
Speed : -999.999
Direction : -999.999
Level : -999
Trend : -999
Current Data for Station ID: cb0901
====================================
Time Stamp : 2014-06-04 16:35:00.0
Speed : 0.377
Direction : 109.0
Level : 4
Trend : 1
Current Data for Station ID: cb1001
====================================
Time Stamp : 2014-06-04 16:34:00.0
Speed : 0.535
Direction : 149.0
Level : 14
Trend : 1
Current Data for Station ID: cb1101
====================================
Time Stamp : 2014-06-04 16:35:00.0
Speed : 0.29
Direction : 34.0
Level : 4
Trend : 2
Current Data for Station ID: cb1201
====================================
Time Stamp : 2014-06-04 16:34:00.0
Speed : 0.432
Direction : 353.0
Level : 4
Trend : 2
Current Data for Station ID: cb1301
====================================
Time Stamp : -999
Speed : -999.999
Direction : -999.999
Level : -999
Trend : -999
Current Data for Station ID: db0201
====================================
Time Stamp : 2014-06-04 16:47:00.0
Speed : 0.87
Direction : 179.0
Level : 14
Trend : 1
*/