Skip to content
Snippets Groups Projects
Commit a2c6e304 authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

Added proxy service for the Danish Meteorological Institute's

PointWeb weather service
parent a899a5f5
No related branches found
No related tags found
No related merge requests found
Showing
with 426 additions and 2 deletions
......@@ -25,5 +25,6 @@ Any value defined here will override the pom.xml file value but is only applicab
<org-netbeans-modules-css-prep.less_2e_compiler_2e_options/>
<org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server>WildFly</org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server>
<org-netbeans-modules-projectapi.jsf_2e_language>Facelets</org-netbeans-modules-projectapi.jsf_2e_language>
<org-netbeans-modules-maven-jaxws._5f_C_5f_DMIWeatherService_2e_svc>https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?wsdl</org-netbeans-modules-maven-jaxws._5f_C_5f_DMIWeatherService_2e_svc>
</properties>
</project-shared-configuration>
......@@ -23,6 +23,28 @@
</goals>
<properties>
<skipTests>true</skipTests>
</properties>
</action>
<action>
<actionName>test.single</actionName>
<packagings>
<packaging>*</packaging>
</packagings>
<goals>
<goal>test-compile</goal>
<goal>surefire:test</goal>
</goals>
<properties>
<test>${packageClassName}</test>
<com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump>true</com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump>
<com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump>true</com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump>
<com.sun.xml.ws.transport.http.HttpAdapter.dump>true</com.sun.xml.ws.transport.http.HttpAdapter.dump>
<com.sun.xml.internal.ws.transport.http.HttpAdapter.dump>true</com.sun.xml.internal.ws.transport.http.HttpAdapter.dump>
</properties>
</action>
</actions>
......@@ -224,6 +224,70 @@
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlFiles>
<wsdlFile>dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc.wsdl</wsdlFile>
</wsdlFiles>
<packageName>no.nibio.vips.util.weather.dnmipointweb</packageName>
<vmArgs>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
<wsdlLocation>https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?wsdl</wsdlLocation>
<staleFile>${project.build.directory}/jaxws/stale/DMIWeatherService.svc.stale</staleFile>
</configuration>
<id>wsimport-generate-DMIWeatherService.svc</id>
<phase>generate-sources</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<configuration>
<sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
<xnocompile>true</xnocompile>
<verbose>true</verbose>
<extension>true</extension>
<catalog>${basedir}/src/jax-ws-catalog.xml</catalog>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<webResources>
<resource>
<directory>src</directory>
<targetPath>WEB-INF</targetPath>
<includes>
<include>jax-ws-catalog.xml</include>
<include>wsdl/**</include>
</includes>
</resource>
<resource>
<directory>src</directory>
<targetPath>WEB-INF/classes/META-INF</targetPath>
<includes>
<include>jax-ws-catalog.xml</include>
<include>wsdl/**</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
<system systemId="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?wsdl" uri="wsdl/dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc.wsdl"/>
<system systemId="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd0" uri="wsdl/dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc.xsd_xsd0.xsd"/>
<system systemId="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd1" uri="wsdl/dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc.xsd_xsd1.xsd"/>
<system systemId="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd2" uri="wsdl/dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc.xsd_xsd2.xsd"/>
<system systemId="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd3" uri="wsdl/dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc.xsd_xsd3.xsd"/>
<system systemId="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd4" uri="wsdl/dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc.xsd_xsd4.xsd"/>
</catalog>
\ No newline at end of file
......@@ -23,6 +23,7 @@ import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
......@@ -35,11 +36,14 @@ import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import no.nibio.vips.entity.WeatherObservation;
import no.nibio.vips.logic.util.SystemTime;
import no.nibio.vips.util.weather.ALabDataParser;
import no.nibio.vips.util.weather.FruitWebDavisDataParser;
import no.nibio.vips.util.weather.MetosAPIDataParser;
import no.nibio.vips.util.weather.MetosRIMProDataParser;
import no.nibio.vips.util.weather.ParseWeatherDataException;
import no.nibio.vips.util.weather.USPestDataParser;
import no.nibio.vips.util.weather.dnmipointweb.DMIPointWebDataParser;
import org.jboss.resteasy.annotations.GZIP;
/**
......@@ -50,10 +54,10 @@ import org.jboss.resteasy.annotations.GZIP;
public class WeatherProxyService {
@GET
@POST
@Path("metos/{stationId}")
@Path("metosrimpro/{stationId}")
@GZIP
@Produces("application/json;charset=UTF-8")
public Response getMetosWeatherData(
public Response getMetosRIMProWeatherData(
@PathParam("stationId") String stationId,
@FormParam("timeZone") String timeZonePOST,
@QueryParam("timeZone") String timeZoneGET,
......@@ -77,6 +81,35 @@ public class WeatherProxyService {
return Response.ok().entity(observations).build();
}
@GET
@POST
@Path("metosapi/{stationId}")
@GZIP
@Produces("application/json;charset=UTF-8")
public Response getMetosAPIWeatherData(
@PathParam("stationId") String stationId,
@FormParam("timeZone") String timeZonePOST,
@QueryParam("timeZone") String timeZoneGET,
@FormParam("startDate") String startDatePOST,
@QueryParam("startDate") String startDateGET
)
{
List<WeatherObservation> observations;
try
{
String timeZoneParam = timeZonePOST != null ? timeZonePOST : timeZoneGET != null ? timeZoneGET : "UTC";
TimeZone timeZone = TimeZone.getTimeZone(timeZoneParam);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.setTimeZone(timeZone);
String startDateParam = startDatePOST != null ? startDatePOST : startDateGET;
Date startDate1 = format.parse(startDateParam);
observations = new MetosAPIDataParser().getWeatherObservations(stationId, timeZone, startDate1);
} catch (ParseException | ParseWeatherDataException | NullPointerException ex) {
return Response.serverError().entity(ex).build();
}
return Response.ok().entity(observations).build();
}
@GET
@POST
@Path("fruitwebdavis/{stationId}")
......@@ -171,4 +204,64 @@ public class WeatherProxyService {
return Response.ok().entity(observations).build();
}
/**
* Getting data from the Danish Meteorological Institute's PointWeb weather service
* @param stationId
* @param timeZonePOST
* @param timeZoneGET
* @param startDatePOST
* @param startDateGET
* @param endDatePOST
* @param endDateGET
* @return
*/
@GET
@POST
@Path("dmipointweb/{stationId}")
@GZIP
@Produces("application/json;charset=UTF-8")
public Response getDMIPointWebWeatherData(
@PathParam("stationId") String stationId,
@FormParam("timeZone") String timeZonePOST,
@QueryParam("timeZone") String timeZoneGET,
@FormParam("startDate") String startDatePOST,
@QueryParam("startDate") String startDateGET,
@FormParam("endDate") String endDatePOST,
@QueryParam("endDate") String endDateGET
)
{
// Station is id'ed by decimal degrees position
// Format is &stationId=long,lat. E.g. &stationId=9.583,56.488 (sample is from Follum, Denmark)
List<WeatherObservation> observations;
try
{
String timeZoneParam = timeZonePOST != null ? timeZonePOST : timeZoneGET != null ? timeZoneGET : "UTC";
TimeZone timeZone = TimeZone.getTimeZone(timeZoneParam);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.setTimeZone(timeZone);
String startDateParam = startDatePOST != null ? startDatePOST : startDateGET;
Date startDate1 = format.parse(startDateParam);
String endDateParam = endDatePOST != null ? endDatePOST : endDateGET;
Date endDate1;
if(endDateParam != null)
{
endDate1 = format.parse(endDateParam);
}
else
{
// Expecting endDate to be 6 days after today if not specified
Calendar cal = Calendar.getInstance();
cal.setTime(SystemTime.getSystemTime());
cal.add(Calendar.DATE, 6);
endDate1 = cal.getTime();
}
String[] coordinates = stationId.split(",");
Double longitude = Double.parseDouble(coordinates[0]);
Double latitude = Double.parseDouble(coordinates[1]);
observations = new DMIPointWebDataParser().getData(longitude, latitude, startDate1, endDate1);
} catch (ParseException | NullPointerException ex) {
return Response.serverError().entity(ex).build();
}
return Response.ok().entity(observations).build();
}
}
/*
* Copyright (c) 2017 NIBIO <http://www.nibio.no/>.
*
* This file is part of VIPSLogic.
* VIPSLogic is free software: you can redistribute it and/or modify
* it under the terms of the NIBIO Open Source License as published by
* NIBIO, either version 1 of the License, or (at your option) any
* later version.
*
* VIPSLogic is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* NIBIO Open Source License for more details.
*
* You should have received a copy of the NIBIO Open Source License
* along with VIPSLogic. If not, see <http://www.nibio.no/licenses/>.
*
*/
package no.nibio.vips.util.weather.dnmipointweb;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import no.nibio.vips.entity.WeatherObservation;
import no.nibio.vips.util.WeatherElements;
/**
* Gets data from the Danish Meteorological Institute's Point Web service
* @copyright 2017 <a href="http://www.nibio.no/">NIBIO</a>
* @author Tor-Einar Skog <tor-einar.skog@nibio.no>
*/
public class DMIPointWebDataParser {
private static final Map<String, WeatherDataParameter> PARAM_MAP;
static
{
PARAM_MAP = new HashMap<>();
PARAM_MAP.put(WeatherElements.TEMPERATURE_MEAN, WeatherDataParameter.AIRTEMP);
PARAM_MAP.put(WeatherElements.PRECIPITATION, WeatherDataParameter.PREC);
PARAM_MAP.put(WeatherElements.RELATIVE_HUMIDITY_MEAN, WeatherDataParameter.AIRRH);
PARAM_MAP.put(WeatherElements.WIND_SPEED_2M, WeatherDataParameter.WINDSPEED);
PARAM_MAP.put(WeatherElements.SOIL_TEMPERATURE_10CM_MEAN, WeatherDataParameter.SOILTEMP);
PARAM_MAP.put(WeatherElements.LEAF_WETNESS, WeatherDataParameter.LEAFWET);
}
public List<WeatherObservation> getData(Double longitude, Double latitude, Date dateFrom, Date dateTo)
{
List<WeatherObservation> retVal = new ArrayList<>();
try {
IWeatherService proxy = new WeatherService().getSslOffloadedBasicHttpBindingIWeatherService();
ArrayOfWeatherDataSource wdsource = new ArrayOfWeatherDataSource();
wdsource.add(WeatherDataSource.OBS);
wdsource.add(WeatherDataSource.FORECAST);
wdsource.add(WeatherDataSource.NORMAL);
GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("Europe/Copenhagen"));
gc.setTime(dateFrom);
XMLGregorianCalendar calFrom = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
XMLGregorianCalendar calTo = null;
if(dateTo != null)
{
gc.setTime(dateTo);
calTo = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
}
ArrayOfWeatherDataParameter wdparam = new ArrayOfWeatherDataParameter();
DMIPointWebDataParser.PARAM_MAP.values().stream().forEach(
listedParam -> wdparam.add(listedParam)
);
WeatherResponse result = proxy.getWeatherData(
String.valueOf(latitude).replace(".", ","), // Latitude ("X") Decimal separator is comma!
String.valueOf(longitude).replace(".", ","), // Longitude ("Y") Decimal separator is comma!
false, // true if UTM, false if decimal degrees
null, // UTM Zone if using UTM
WeatherInterval.HOUR, // Hourly or Daily data
wdsource, // Set of data sources
calFrom, // Start of period with data
calTo, // End of period with data
wdparam, // Set of requested parameters
0.0, // Base temperature value
false // Use base temperature? (t/f)
);
ArrayOfWeatherDataModel value = result.getWeahterDataList().getValue();
value.getWeatherDataModel().stream().forEach(weatherDataModel -> {
DMIPointWebDataParser.PARAM_MAP.keySet().stream().forEach(
VIPSParam->{
WeatherObservation obs = this.getWeatherObservation(VIPSParam, weatherDataModel);
if(obs != null)
retVal.add(obs);
}
);
}
);
} catch (Exception ex) {
Logger.getLogger(DMIPointWebDataParser.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Number of extracted weather data = " + retVal.size());
return retVal;
}
private WeatherObservation getWeatherObservation(String VIPSParam, WeatherDataModel wDataModel) {
WeatherObservation obs = new WeatherObservation();
obs.setTimeMeasured(wDataModel.getDateDay().toGregorianCalendar().getTime());
obs.setLogIntervalId(WeatherObservation.LOG_INTERVAL_ID_1H);
obs.setElementMeasurementTypeId(VIPSParam);
try
{
switch(VIPSParam)
{
case WeatherElements.TEMPERATURE_MEAN:
obs.setValue(wDataModel.getAirtemp().getValue()); break;
case WeatherElements.PRECIPITATION:
obs.setValue(wDataModel.getPrec().getValue()); break;
case WeatherElements.RELATIVE_HUMIDITY_MEAN:
obs.setValue(wDataModel.getAirrh().getValue()); break;
case WeatherElements.WIND_SPEED_2M:
obs.setValue(wDataModel.getWindspeed().getValue()); break;
case WeatherElements.SOIL_TEMPERATURE_10CM_MEAN:
obs.setValue(wDataModel.getSoiltemp().getValue()); break;// Not sure if it's 10 or 5 cm depth yet
case WeatherElements.SOIL_TEMPERATURE_5CM_MEAN:
obs.setValue(wDataModel.getSoiltemp().getValue()); break;
case WeatherElements.LEAF_WETNESS:
obs.setValue(wDataModel.getLeafwet().getValue()); break;
default: return null;
}
}
catch(NullPointerException ex) // The requested parameter didn't exist
{
return null;
}
return obs;
}
}
/*
* Copyright (c) 2017 NIBIO <http://www.nibio.no/>.
*
* This file is part of VIPSLogic.
* VIPSLogic is free software: you can redistribute it and/or modify
* it under the terms of the NIBIO Open Source License as published by
* NIBIO, either version 1 of the License, or (at your option) any
* later version.
*
* VIPSLogic is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* NIBIO Open Source License for more details.
*
* You should have received a copy of the NIBIO Open Source License
* along with VIPSLogic. If not, see <http://www.nibio.no/licenses/>.
*
*/
package no.nibio.vips.util.weather.dnmipointweb;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import no.nibio.vips.entity.WeatherObservation;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author treinar
*/
public class DMIPointWebDataParserTest {
public DMIPointWebDataParserTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
/**
* Test of getData method, of class DMIPointWebDataParser.
*/
@Test
public void testGetData() {
System.out.println("getData");
DMIPointWebDataParser instance = new DMIPointWebDataParser();
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Copenhagen"));
cal.set(2017, Calendar.JULY, 5, 0, 0, 0);
Date dateFrom = cal.getTime();
cal.set(Calendar.DATE, 15);
Date dateTo = cal.getTime();
Double longitude = 10.0213;
Double latitude = 56.0199;
List<WeatherObservation> result = instance.getData(longitude, latitude, dateFrom, dateTo);
result.stream().forEach(r->System.out.println(r.toString()));
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
}
<?xml version="1.0" encoding="utf-8"?><wsdl:definitions name="WeatherService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><wsdl:types><xsd:schema targetNamespace="http://tempuri.org/Imports"><xsd:import schemaLocation="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd0" namespace="http://tempuri.org/"/><xsd:import schemaLocation="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/><xsd:import schemaLocation="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xsd:import schemaLocation="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd3" namespace="http://schemas.datacontract.org/2004/07/System"/><xsd:import schemaLocation="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd4" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/></xsd:schema></wsdl:types><wsdl:message name="IWeatherService_GetWeatherData_InputMessage"><wsdl:part name="parameters" element="tns:GetWeatherData"/></wsdl:message><wsdl:message name="IWeatherService_GetWeatherData_OutputMessage"><wsdl:part name="parameters" element="tns:GetWeatherDataResponse"/></wsdl:message><wsdl:message name="IWeatherService_GetWeatherDataExtended_InputMessage"><wsdl:part name="parameters" element="tns:GetWeatherDataExtended"/></wsdl:message><wsdl:message name="IWeatherService_GetWeatherDataExtended_OutputMessage"><wsdl:part name="parameters" element="tns:GetWeatherDataExtendedResponse"/></wsdl:message><wsdl:message name="IWeatherService_GetWeatherDataMultipoint_InputMessage"><wsdl:part name="parameters" element="tns:GetWeatherDataMultipoint"/></wsdl:message><wsdl:message name="IWeatherService_GetWeatherDataMultipoint_OutputMessage"><wsdl:part name="parameters" element="tns:GetWeatherDataMultipointResponse"/></wsdl:message><wsdl:message name="IWeatherService_GetWeatherDataMultipointExtended_InputMessage"><wsdl:part name="parameters" element="tns:GetWeatherDataMultipointExtended"/></wsdl:message><wsdl:message name="IWeatherService_GetWeatherDataMultipointExtended_OutputMessage"><wsdl:part name="parameters" element="tns:GetWeatherDataMultipointExtendedResponse"/></wsdl:message><wsdl:portType name="IWeatherService"><wsdl:operation name="GetWeatherData"><wsdl:input wsaw:Action="http://tempuri.org/IWeatherService/GetWeatherData" message="tns:IWeatherService_GetWeatherData_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IWeatherService/GetWeatherDataResponse" message="tns:IWeatherService_GetWeatherData_OutputMessage"/></wsdl:operation><wsdl:operation name="GetWeatherDataExtended"><wsdl:input wsaw:Action="http://tempuri.org/IWeatherService/GetWeatherDataExtended" message="tns:IWeatherService_GetWeatherDataExtended_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IWeatherService/GetWeatherDataExtendedResponse" message="tns:IWeatherService_GetWeatherDataExtended_OutputMessage"/></wsdl:operation><wsdl:operation name="GetWeatherDataMultipoint"><wsdl:input wsaw:Action="http://tempuri.org/IWeatherService/GetWeatherDataMultipoint" message="tns:IWeatherService_GetWeatherDataMultipoint_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IWeatherService/GetWeatherDataMultipointResponse" message="tns:IWeatherService_GetWeatherDataMultipoint_OutputMessage"/></wsdl:operation><wsdl:operation name="GetWeatherDataMultipointExtended"><wsdl:input wsaw:Action="http://tempuri.org/IWeatherService/GetWeatherDataMultipointExtended" message="tns:IWeatherService_GetWeatherDataMultipointExtended_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IWeatherService/GetWeatherDataMultipointExtendedResponse" message="tns:IWeatherService_GetWeatherDataMultipointExtended_OutputMessage"/></wsdl:operation></wsdl:portType><wsdl:binding name="SslOffloadedBasicHttpBinding_IWeatherService" type="tns:IWeatherService"><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="GetWeatherData"><soap:operation soapAction="http://tempuri.org/IWeatherService/GetWeatherData" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="GetWeatherDataExtended"><soap:operation soapAction="http://tempuri.org/IWeatherService/GetWeatherDataExtended" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="GetWeatherDataMultipoint"><soap:operation soapAction="http://tempuri.org/IWeatherService/GetWeatherDataMultipoint" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="GetWeatherDataMultipointExtended"><soap:operation soapAction="http://tempuri.org/IWeatherService/GetWeatherDataMultipointExtended" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="WeatherService"><wsdl:port name="SslOffloadedBasicHttpBinding_IWeatherService" binding="tns:SslOffloadedBasicHttpBinding_IWeatherService"><soap:address location="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc"/></wsdl:port></wsdl:service></wsdl:definitions>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/"><xs:import schemaLocation="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element name="GetWeatherData"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="X_Coordinate" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="Y_Coordinate" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="isUTM" type="xs:boolean"/><xs:element minOccurs="0" name="UTMZone" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="interval" type="q1:WeatherInterval" xmlns:q1="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="sources" nillable="true" type="q2:ArrayOfWeatherDataSource" xmlns:q2="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="DateFrom" type="xs:dateTime"/><xs:element minOccurs="0" name="DateTo" type="xs:dateTime"/><xs:element minOccurs="0" name="weatherDataParameters" nillable="true" type="q3:ArrayOfWeatherDataParameter" xmlns:q3="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="baseTempValue" type="xs:double"/><xs:element minOccurs="0" name="includeTempSum" type="xs:boolean"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetWeatherDataResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="GetWeatherDataResult" nillable="true" type="q4:WeatherResponse" xmlns:q4="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetWeatherDataExtended"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="X_Coordinate" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="Y_Coordinate" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="isUTM" type="xs:boolean"/><xs:element minOccurs="0" name="UTMZone" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="interval" type="q5:WeatherInterval" xmlns:q5="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="sources" nillable="true" type="q6:ArrayOfWeatherDataSource" xmlns:q6="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="DateFrom" type="xs:dateTime"/><xs:element minOccurs="0" name="DateTo" type="xs:dateTime"/><xs:element minOccurs="0" name="weatherDataParameters" nillable="true" type="q7:ArrayOfWeatherDataParameter" xmlns:q7="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="baseTempValue" type="xs:double"/><xs:element minOccurs="0" name="includeTempSum" type="xs:boolean"/><xs:element minOccurs="0" name="getExtendedEndDate" type="xs:boolean"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetWeatherDataExtendedResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="GetWeatherDataExtendedResult" nillable="true" type="q8:WeatherResponse" xmlns:q8="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetWeatherDataMultipoint"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="xCoordinate" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="yCoordinate" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="isUTM" type="xs:boolean"/><xs:element minOccurs="0" name="utmZone" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="interval" type="q9:WeatherInterval" xmlns:q9="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="sources" nillable="true" type="q10:ArrayOfWeatherDataSource" xmlns:q10="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="dateFrom" type="xs:dateTime"/><xs:element minOccurs="0" name="dateTo" type="xs:dateTime"/><xs:element minOccurs="0" name="weatherDataParameters" nillable="true" type="q11:ArrayOfWeatherDataParameter" xmlns:q11="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="baseTempValue" type="xs:double"/><xs:element minOccurs="0" name="includeTempSum" type="xs:boolean"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetWeatherDataMultipointResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="GetWeatherDataMultipointResult" nillable="true" type="q12:ArrayOfExtendedWeatherResponse" xmlns:q12="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetWeatherDataMultipointExtended"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="xCoordinate" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="yCoordinate" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="isUTM" type="xs:boolean"/><xs:element minOccurs="0" name="utmZone" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="interval" type="q13:WeatherInterval" xmlns:q13="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="sources" nillable="true" type="q14:ArrayOfWeatherDataSource" xmlns:q14="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="dateFrom" type="xs:dateTime"/><xs:element minOccurs="0" name="dateTo" type="xs:dateTime"/><xs:element minOccurs="0" name="weatherDataParameters" nillable="true" type="q15:ArrayOfWeatherDataParameter" xmlns:q15="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:element minOccurs="0" name="baseTempValue" type="xs:double"/><xs:element minOccurs="0" name="includeTempSum" type="xs:boolean"/><xs:element minOccurs="0" name="getExtendedEndDate" type="xs:boolean"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetWeatherDataMultipointExtendedResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="GetWeatherDataMultipointExtendedResult" nillable="true" type="q16:ArrayOfExtendedWeatherResponse" xmlns:q16="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/></xs:sequence></xs:complexType></xs:element></xs:schema>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/"><xs:element name="anyType" nillable="true" type="xs:anyType"/><xs:element name="anyURI" nillable="true" type="xs:anyURI"/><xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/><xs:element name="boolean" nillable="true" type="xs:boolean"/><xs:element name="byte" nillable="true" type="xs:byte"/><xs:element name="dateTime" nillable="true" type="xs:dateTime"/><xs:element name="decimal" nillable="true" type="xs:decimal"/><xs:element name="double" nillable="true" type="xs:double"/><xs:element name="float" nillable="true" type="xs:float"/><xs:element name="int" nillable="true" type="xs:int"/><xs:element name="long" nillable="true" type="xs:long"/><xs:element name="QName" nillable="true" type="xs:QName"/><xs:element name="short" nillable="true" type="xs:short"/><xs:element name="string" nillable="true" type="xs:string"/><xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/><xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/><xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/><xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/><xs:element name="char" nillable="true" type="tns:char"/><xs:simpleType name="char"><xs:restriction base="xs:int"/></xs:simpleType><xs:element name="duration" nillable="true" type="tns:duration"/><xs:simpleType name="duration"><xs:restriction base="xs:duration"><xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/><xs:minInclusive value="-P10675199DT2H48M5.4775808S"/><xs:maxInclusive value="P10675199DT2H48M5.4775807S"/></xs:restriction></xs:simpleType><xs:element name="guid" nillable="true" type="tns:guid"/><xs:simpleType name="guid"><xs:restriction base="xs:string"><xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/></xs:restriction></xs:simpleType><xs:attribute name="FactoryType" type="xs:QName"/><xs:attribute name="Id" type="xs:ID"/><xs:attribute name="Ref" type="xs:IDREF"/></xs:schema>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"><xs:import schemaLocation="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd3" namespace="http://schemas.datacontract.org/2004/07/System"/><xs:import schemaLocation="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd4" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/><xs:simpleType name="WeatherInterval"><xs:restriction base="xs:string"><xs:enumeration value="day"/><xs:enumeration value="hour"/></xs:restriction></xs:simpleType><xs:element name="WeatherInterval" nillable="true" type="tns:WeatherInterval"/><xs:complexType name="ArrayOfWeatherDataSource"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="WeatherDataSource" type="tns:WeatherDataSource"/></xs:sequence></xs:complexType><xs:element name="ArrayOfWeatherDataSource" nillable="true" type="tns:ArrayOfWeatherDataSource"/><xs:simpleType name="WeatherDataSource"><xs:restriction base="xs:string"><xs:enumeration value="obs"/><xs:enumeration value="forecast"/><xs:enumeration value="normal"/><xs:enumeration value="auto"/><xs:enumeration value="partly_constructed"/><xs:enumeration value="constructed_case1"/><xs:enumeration value="constructed_case2"/><xs:enumeration value="constructed_case3"/><xs:enumeration value="obs_forecast"/></xs:restriction></xs:simpleType><xs:element name="WeatherDataSource" nillable="true" type="tns:WeatherDataSource"/><xs:complexType name="ArrayOfWeatherDataParameter"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="WeatherDataParameter" type="tns:WeatherDataParameter"/></xs:sequence></xs:complexType><xs:element name="ArrayOfWeatherDataParameter" nillable="true" type="tns:ArrayOfWeatherDataParameter"/><xs:simpleType name="WeatherDataParameter"><xs:restriction base="xs:string"><xs:enumeration value="airtemp"/><xs:enumeration value="glorad"/><xs:enumeration value="evapo"/><xs:enumeration value="mintemp"/><xs:enumeration value="maxtemp"/><xs:enumeration value="soiltemp"/><xs:enumeration value="airrh"/><xs:enumeration value="prec"/><xs:enumeration value="sunrad"/><xs:enumeration value="windspeed"/><xs:enumeration value="winddir"/><xs:enumeration value="leafwet"/><xs:enumeration value="precNoCor"/><xs:enumeration value="airtemp_special"/><xs:enumeration value="prec_special"/><xs:enumeration value="difrad_special"/><xs:enumeration value="glorad_special"/><xs:enumeration value="windspeed_special"/><xs:enumeration value="winddir_special"/><xs:enumeration value="leafwet_special"/><xs:enumeration value="airrh_special"/></xs:restriction></xs:simpleType><xs:element name="WeatherDataParameter" nillable="true" type="tns:WeatherDataParameter"/><xs:complexType name="WeatherResponse"><xs:sequence><xs:element minOccurs="0" name="WeahterDataList" nillable="true" type="tns:ArrayOfWeatherDataModel"/><xs:element minOccurs="0" name="WeatherError" nillable="true" type="tns:WeatherErrorModel"/><xs:element minOccurs="0" name="HasError" type="xs:boolean"/></xs:sequence></xs:complexType><xs:element name="WeatherResponse" nillable="true" type="tns:WeatherResponse"/><xs:complexType name="ArrayOfWeatherDataModel"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="WeatherDataModel" nillable="true" type="tns:WeatherDataModel"/></xs:sequence></xs:complexType><xs:element name="ArrayOfWeatherDataModel" nillable="true" type="tns:ArrayOfWeatherDataModel"/><xs:complexType name="WeatherDataModel"><xs:sequence><xs:element minOccurs="0" name="Airtemp" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Glorad" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Evapo" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Mintemp" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Maxtemp" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Soiltemp" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Airrh" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Prec" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Sunrad" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Windspeed" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Winddir" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="Leafwet" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="AirtempSum" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="DateDay" type="xs:dateTime"/><xs:element minOccurs="0" name="DataSource" type="tns:WeatherDataSource"/><xs:element minOccurs="0" name="ExpectedDataSource" type="tns:WeatherDataSource"/><xs:element minOccurs="0" name="WeatherDataVariables" nillable="true" type="q1:ArrayOfNullableOfdouble" xmlns:q1="http://schemas.datacontract.org/2004/07/System"/><xs:element minOccurs="0" name="WeatherDataSources" nillable="true" type="q2:ArrayOfNullableOfWeatherDataSourcev_PY1Rzz9" xmlns:q2="http://schemas.datacontract.org/2004/07/System"/><xs:element minOccurs="0" name="PrecNoCor" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="AirtempSpecial" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="PrecSpecial" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="DifradSpecial" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="GloradSpecial" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="WindspeedSpecial" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="WinddirSpecial" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="LeafwetSpecial" nillable="true" type="xs:double"/><xs:element minOccurs="0" name="AirrhSpecial" nillable="true" type="xs:double"/></xs:sequence></xs:complexType><xs:element name="WeatherDataModel" nillable="true" type="tns:WeatherDataModel"/><xs:complexType name="WeatherErrorModel"><xs:sequence><xs:element minOccurs="0" name="ErrorMessages" nillable="true" type="q3:ArrayOfstring" xmlns:q3="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/></xs:sequence></xs:complexType><xs:element name="WeatherErrorModel" nillable="true" type="tns:WeatherErrorModel"/><xs:complexType name="ArrayOfExtendedWeatherResponse"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="ExtendedWeatherResponse" nillable="true" type="tns:ExtendedWeatherResponse"/></xs:sequence></xs:complexType><xs:element name="ArrayOfExtendedWeatherResponse" nillable="true" type="tns:ArrayOfExtendedWeatherResponse"/><xs:complexType name="ExtendedWeatherResponse"><xs:sequence><xs:element minOccurs="0" name="WeatherPoint" nillable="true" type="tns:Point"/><xs:element minOccurs="0" name="WeatherData" nillable="true" type="tns:WeatherResponse"/></xs:sequence></xs:complexType><xs:element name="ExtendedWeatherResponse" nillable="true" type="tns:ExtendedWeatherResponse"/><xs:complexType name="Point"><xs:sequence><xs:element minOccurs="0" name="X" type="xs:float"/><xs:element minOccurs="0" name="Y" type="xs:float"/><xs:element minOccurs="0" name="UtmE" type="xs:int"/><xs:element minOccurs="0" name="UtmN" type="xs:int"/></xs:sequence></xs:complexType><xs:element name="Point" nillable="true" type="tns:Point"/></xs:schema>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/System" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/System"><xs:import schemaLocation="https://dmiweatherservice-plant.dlbr.dk/DMIWeatherService.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/><xs:complexType name="ArrayOfNullableOfdouble"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="double" nillable="true" type="xs:double"/></xs:sequence></xs:complexType><xs:element name="ArrayOfNullableOfdouble" nillable="true" type="tns:ArrayOfNullableOfdouble"/><xs:complexType name="ArrayOfNullableOfWeatherDataSourcev_PY1Rzz9"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="WeatherDataSource" nillable="true" type="q1:WeatherDataSource" xmlns:q1="http://schemas.datacontract.org/2004/07/DMIWeatherService.DataContract"/></xs:sequence></xs:complexType><xs:element name="ArrayOfNullableOfWeatherDataSourcev_PY1Rzz9" nillable="true" type="tns:ArrayOfNullableOfWeatherDataSourcev_PY1Rzz9"/></xs:schema>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"><xs:complexType name="ArrayOfstring"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring"/></xs:schema>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment