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

First version serving KML files with forecast aggregates for POIs

Added License notices to some files
parent e4b8ebe5
Branches
Tags
No related merge requests found
......@@ -58,6 +58,11 @@
<version>2.5</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>de.micromata.jak</groupId>
<artifactId>JavaAPIforKml</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
......@@ -101,4 +106,5 @@
</plugin>
</plugins>
</build>
</project>
......@@ -37,6 +37,7 @@ public class VIPSLogicApplication extends Application
*/
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(no.bioforsk.vips.core.service.ModelResource.class);
resources.add(no.bioforsk.vips.coremanager.service.ManagerResource.class);
resources.add(no.bioforsk.vips.logic.service.LogicService.class);
}
......
package no.bioforsk.vips.logic.controller.session;
import de.micromata.opengis.kml.v_2_2_0.Coordinate;
import de.micromata.opengis.kml.v_2_2_0.Document;
import de.micromata.opengis.kml.v_2_2_0.Kml;
import de.micromata.opengis.kml.v_2_2_0.KmlFactory;
import de.micromata.opengis.kml.v_2_2_0.Placemark;
import de.micromata.opengis.kml.v_2_2_0.Point;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
......@@ -28,6 +35,7 @@ import no.bioforsk.vips.logic.entity.ForecastModelConfiguration;
import no.bioforsk.vips.logic.scheduling.model.ModelRunPreprocessor;
import no.bioforsk.vips.logic.scheduling.model.ModelRunPreprocessorFactory;
import no.bioforsk.vips.logic.scheduling.model.PreprocessorException;
import no.bioforsk.vips.logic.util.Globals;
import no.bioforsk.vips.logic.util.RunModelException;
import no.bioforsk.vips.logic.util.SessionControllerGetter;
import no.bioforsk.web.forms.FormField;
......@@ -275,8 +283,8 @@ public class ForecastBean {
ModelRunRequest request = new ModelRunRequest(config);
Map<String,String> loginInfo = new HashMap<>();
// VIPSLogic logs in on behalf of client
//loginInfo.put("username",System.getProperty("no.bioforsk.vips.logic.CORE_BATCH_USERNAME"));
loginInfo.put("username","wrongusername");
loginInfo.put("username",System.getProperty("no.bioforsk.vips.logic.CORE_BATCH_USERNAME"));
//loginInfo.put("username","wrongusername");
loginInfo.put("password",System.getProperty("no.bioforsk.vips.logic.CORE_BATCH_PASSWORD"));
request.setLoginInfo(loginInfo);
// We tell which client this is (the db Id in VIPSCoreManager)
......@@ -308,4 +316,96 @@ public class ForecastBean {
ManagerResource resource = rTarget.proxy(ManagerResource.class);
return resource;
}
public Kml getForecastsAggregateKml(Date theDate)
{
// Initialization
final Kml kml = KmlFactory.createKml();
final Document document = kml.createAndSetDocument()
.withName("Forecast results - aggregates").withDescription("Worst forecasts for each POI");
document.createAndAddStyle()
.withId("warning_type_0")
.createAndSetIconStyle()
.withScale(0.55)
.createAndSetIcon()
.withHref("http://www.vips-landbruk.no/graphics/dot_grey.png");
document.createAndAddStyle()
.withId("warning_type_1")
.createAndSetIconStyle()
.withScale(0.55)
.createAndSetIcon()
.withHref("http://www.vips-landbruk.no/graphics/dot_blue.png");
document.createAndAddStyle()
.withId("warning_type_2")
.createAndSetIconStyle()
.withScale(0.55)
.createAndSetIcon()
.withHref("http://www.vips-landbruk.no/graphics/dot_green.png");
document.createAndAddStyle()
.withId("warning_type_3")
.createAndSetIconStyle()
.withScale(0.55)
.createAndSetIcon()
.withHref("http://www.vips-landbruk.no/graphics/dot_yellow.png");
document.createAndAddStyle()
.withId("warning_type_4")
.createAndSetIconStyle()
.withScale(0.55)
.createAndSetIcon()
.withHref("http://www.vips-landbruk.no/graphics/dot_red.png");
// Run through forecast configurations
List<PointOfInterest> poisWithAggregate = getPointOfInterestForecastsAggregate(theDate);
for(PointOfInterest poiWithAggregate:poisWithAggregate)
{
final Placemark placemark = document.createAndAddPlacemark()
.withName(poiWithAggregate.getName())
.withDescription("<![CDATA[Mangler informasjon om varsler for " + poiWithAggregate.getName() + "]]>")
.withStyleUrl("#warning_type_"
+ (poiWithAggregate.getProperties().get("forecastsAggregate") != null ? poiWithAggregate.getProperties().get("forecastsAggregate") : "0")
);
final Point point = placemark.createAndSetPoint();
List<Coordinate> coord = point.createAndSetCoordinates();
coord.add(new Coordinate(
poiWithAggregate.getLongitude(),
poiWithAggregate.getLatitude(),
poiWithAggregate.getAltitude() != null ? poiWithAggregate.getAltitude() : 0
));
}
System.out.println(kml.marshal());
return kml;
}
/**
* TODO: This should be cached somehow. Here in app or in web server???
* @param theDate
* @return
*/
private List<PointOfInterest> getPointOfInterestForecastsAggregate(Date theDate) {
// TODO: More precise gathering of POIs...
List<PointOfInterest> pois = em.createNamedQuery("PointOfInterest.findAll").getResultList();
SimpleDateFormat format = new SimpleDateFormat(Globals.defaultDateFormat);
for(PointOfInterest poi: pois)
{
Query q = em.createNativeQuery("SELECT max(warning_status) FROM forecast_result \n" +
"WHERE forecast_configuration_id IN( \n" +
" SELECT forecast_configuration_id \n" +
" FROM forecast_configuration \n" +
" WHERE location_point_of_interest_id=:locationPointOfInterestId \n" +
")\n" +
"AND to_char(result_valid_time, 'yyyy-MM-dd') = :dateStr");
q.setParameter("locationPointOfInterestId", poi.getPointOfInterestId());
q.setParameter("dateStr", format.format(theDate));
poi.getProperties().put("forecastsAggregate", (Integer) q.getSingleResult());
}
return pois;
}
}
/*
* Copyright (c) 2013 Bioforsk <http://www.bioforsk.no/>.
*
* This file is part of VIPSLogic.
* VIPSLogic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 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
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with VIPSLogic. If not, see <http://www.gnu.org/licenses/>.
*
*/
package no.bioforsk.vips.logic.entity;
import java.io.Serializable;
......@@ -37,6 +55,7 @@ import org.codehaus.jackson.annotate.JsonIgnore;
@NamedQuery(name = "ForecastConfiguration.findByModelId", query = "SELECT f FROM ForecastConfiguration f WHERE f.modelId = :modelId"),
@NamedQuery(name = "ForecastConfiguration.findByDateStart", query = "SELECT f FROM ForecastConfiguration f WHERE f.dateStart = :dateStart"),
@NamedQuery(name = "ForecastConfiguration.findByDateEnd", query = "SELECT f FROM ForecastConfiguration f WHERE f.dateEnd = :dateEnd"),
@NamedQuery(name = "ForecastConfiguration.findByLocationPointOfInterestId", query = "SELECT f FROM ForecastConfiguration f WHERE f.locationPointOfInterestId = :locationPointOfInterestId"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserId", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId = :vipsLogicUserId"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIds", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds)")
})
......
/*
* Copyright (c) 2013 Bioforsk <http://www.bioforsk.no/>.
*
* This file is part of VIPSLogic.
* VIPSLogic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 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
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with VIPSLogic. If not, see <http://www.gnu.org/licenses/>.
*
*/
package no.bioforsk.vips.logic.entity;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
......@@ -18,6 +38,7 @@ import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
......@@ -71,6 +92,11 @@ public class PointOfInterest implements Serializable, Comparable {
@ManyToOne
private PointOfInterestType pointOfInterestType;
// For attaching ad-hoc properties
// e.g. Worst warning for map
@Transient
private Map<String, Object> properties;
public PointOfInterest() {
}
......@@ -205,4 +231,22 @@ public class PointOfInterest implements Serializable, Comparable {
public void setTimeZone(String timeZone) {
this.timeZone = timeZone;
}
/**
* @return the properties
*/
public Map<String,Object> getProperties() {
if(this.properties == null)
{
this.properties = new HashMap<>();
}
return properties;
}
/**
* @param properties the properties to set
*/
public void setProperties(Map<String,Object> properties) {
this.properties = properties;
}
}
/*
* Copyright (c) 2013 Bioforsk <http://www.bioforsk.no/>.
*
* This file is part of VIPSLogic.
* VIPSLogic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 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
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with VIPSLogic. If not, see <http://www.gnu.org/licenses/>.
*
*/
package no.bioforsk.vips.logic.scheduling.model.preprocessor;
import java.io.IOException;
import no.bioforsk.vips.logic.entity.ForecastConfiguration;
import java.text.ParseException;
import java.text.SimpleDateFormat;
......
package no.bioforsk.vips.logic.service;
import de.micromata.opengis.kml.v_2_2_0.Kml;
import java.util.List;
import java.util.Locale;
import java.util.Map;
......@@ -20,6 +21,7 @@ import no.bioforsk.vips.logic.i18n.SessionLocaleUtil;
import no.bioforsk.vips.logic.entity.ForecastConfiguration;
import no.bioforsk.vips.logic.entity.ForecastModelConfiguration;
import no.bioforsk.vips.logic.util.SessionControllerGetter;
import no.bioforsk.vips.logic.util.SystemTime;
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
import org.jboss.resteasy.spi.HttpRequest;
......@@ -125,6 +127,15 @@ public class LogicService {
return Response.ok().entity(forecastModelConfigurations).build();
}
@GET
@Path("forecastresults/aggregate")
@Produces("application/vnd.google-earth.kml+xml;charset=utf-8")
public Response getForecastResultsAggregate()
{
Kml retVal = SessionControllerGetter.getForecastBean().getForecastsAggregateKml(SystemTime.getSystemTime());
return Response.ok().entity(retVal).build();
}
private ManagerResource getManagerResource()
{
Client client = ClientBuilder.newClient();
......
package no.bioforsk.vips.logic.util;
import java.util.Locale;
/**
* @copyright 2013 <a href="http://www.bioforsk.no/">Bioforsk</a>
* @author Tor-Einar Skog <tor-einar.skog@bioforsk.no>
......@@ -25,7 +23,8 @@ public class Globals {
"/rest",
"/user",
"/test/testlogin.jsp",
"/test/testloginsuccess.jsp"
"/test/testloginsuccess.jsp",
"/test/mock.kml"
};
// Point of interest type IDs
......@@ -43,5 +42,6 @@ public class Globals {
public static Integer USER_STATUS_DISABLED = 5;
public static String defaultTimestampFormat = "yyyy-MM-dd HH:mm:ssXXX";
public static String defaultDateFormat = "yyyy-MM-dd";
}
......@@ -93,15 +93,6 @@
<servlet-name>LoginController</servlet-name>
<servlet-class>no.bioforsk.vips.logic.controller.servlet.LoginController</servlet-class>
</servlet>
<servlet>
<servlet-name>TestFreemarker</servlet-name>
<servlet-class>no.bioforsk.vips.logic.controller.servlet.TestFreemarker</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestFreemarker</servlet-name>
<url-pattern>/testfreemarker</url-pattern>
<url-pattern>/userTEST</url-pattern>
</servlet-mapping>
<filter>
<description>Authenticates users</description>
<filter-name>AuthenticationFilter</filter-name>
......@@ -115,6 +106,7 @@
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
<!-- RestEASY listens to all requests with /rest/* PATH -->
<filter>
<filter-name>Resteasy</filter-name>
......
<?xml version="1.0" encoding="UTF-8" ?>
<!--
/*
* Copyright (c) 2014 Bioforsk <http://www.bioforsk.no/>.
*
* This file is part of VIPSLogic.
* VIPSLogic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 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
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with VIPSLogic. If not, see <http://www.gnu.org/licenses/>.
*
*/
-->
<!-- Test KML for map development -->
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>Varsel hele landet</name>
<description>Klimastasjoner - verste varsel for hele landet</description>
<Style id="style_0">
<IconStyle>
<scale>0.55</scale>
<Icon>
<href>http://www.vips-landbruk.no/graphics/dot_grey.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="style_1">
<IconStyle>
<scale>0.55</scale>
<Icon>
<href>http://www.vips-landbruk.no/graphics/dot_blue.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="style_2">
<IconStyle>
<scale>0.55</scale>
<Icon>
<href>http://www.vips-landbruk.no/graphics/dot_green.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="style_3">
<IconStyle>
<scale>0.55</scale>
<Icon>
<href>http://www.vips-landbruk.no/graphics/dot_yellow.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="style_4">
<IconStyle>
<scale>0.55</scale>
<Icon>
<href>http://www.vips-landbruk.no/graphics/dot_red.png</href>
</Icon>
</IconStyle>
</Style>
<Placemark>
<name>Alvdal</name>
<description><![CDATA[Mangler informasjon om varsler for Alvdal]]></description>
<styleUrl>#style_3</styleUrl>
<Point>
<coordinates>10.62687,62.10944</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Apelsvoll</name>
<description><![CDATA[Mangler informasjon om varsler for Apelsvoll]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.86952,60.70024</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Balestrand</name>
<description><![CDATA[Mangler informasjon om varsler for Balestrand]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.52845,61.20294</coordinates>
</Point>
</Placemark>
<Placemark>
<name></name>
<description><![CDATA[Mangler informasjon om varsler for Bø]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.02859,59.4175</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Darbu</name>
<description><![CDATA[Mangler informasjon om varsler for Darbu]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.85057,59.6879</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Djønno</name>
<description><![CDATA[Mangler informasjon om varsler for Djønno]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.75063,60.46116</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Etne</name>
<description><![CDATA[Mangler informasjon om varsler for Etne]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>5.95383,59.6625</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Flesberg</name>
<description><![CDATA[Mangler informasjon om varsler for Flesberg]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.39985,59.86859</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Folldal</name>
<description><![CDATA[Mangler informasjon om varsler for Folldal]]></description>
<styleUrl>#style_0</styleUrl>
<Point>
<coordinates>9.99453,62.12793</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Frosta</name>
<description><![CDATA[Mangler informasjon om varsler for Frosta]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.69298,63.56502</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Fureneset</name>
<description><![CDATA[Mangler informasjon om varsler for Fureneset]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>5.04428,61.29272</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Fåvang</name>
<description><![CDATA[Mangler informasjon om varsler for Fåvang]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.1872,61.45822</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Gausdal</name>
<description><![CDATA[Mangler informasjon om varsler for Gausdal]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.25878,61.22468</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Gjerpen</name>
<description><![CDATA[Mangler informasjon om varsler for Gjerpen]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.57805,59.22684</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Gran</name>
<description><![CDATA[Mangler informasjon om varsler for Gran]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.55906,60.35575</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Grane</name>
<description><![CDATA[Mangler informasjon om varsler for Grane]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>13.39634,65.55085</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Grue</name>
<description><![CDATA[Mangler informasjon om varsler for Grue]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>12.0349,60.4699</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Gvarv</name>
<description><![CDATA[Mangler informasjon om varsler for Gvarv]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.21189,59.38223</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Hauso</name>
<description><![CDATA[Mangler informasjon om varsler for Hauso]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.64214,60.37373</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Hesthamar</name>
<description><![CDATA[Mangler informasjon om varsler for Hesthamar]]></description>
<styleUrl>#style_2</styleUrl>
<Point>
<coordinates>6.556,60.43029</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Hjelmeland</name>
<description><![CDATA[Mangler informasjon om varsler for Hjelmeland]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.14992,59.22995</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Hokksund</name>
<description><![CDATA[Mangler informasjon om varsler for Hokksund]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.89166,59.76152</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Holt</name>
<description><![CDATA[Mangler informasjon om varsler for Holt]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>18.90946,69.65381</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Hønefoss</name>
<description><![CDATA[Mangler informasjon om varsler for Hønefoss]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.2661,60.14032</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Høyheimsvik</name>
<description><![CDATA[Mangler informasjon om varsler for Høyheimsvik]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>7.40297,61.40506</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Ilseng</name>
<description><![CDATA[Mangler informasjon om varsler for Ilseng]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>11.20298,60.80264</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Kise</name>
<description><![CDATA[Mangler informasjon om varsler for Kise]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.80569,60.77324</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Kvam</name>
<description><![CDATA[Mangler informasjon om varsler for Kvam]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.21821,60.33637</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Kvelde</name>
<description><![CDATA[Mangler informasjon om varsler for Kvelde]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.983036,59.220314</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Kvithamar</name>
<description><![CDATA[Mangler informasjon om varsler for Kvithamar]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.87994,63.48795</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Landvik</name>
<description><![CDATA[Mangler informasjon om varsler for Landvik]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>8.522554,58.340073</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Leirflaten</name>
<description><![CDATA[Mangler informasjon om varsler for Leirflaten]]></description>
<styleUrl>#style_0</styleUrl>
<Point>
<coordinates>9.15267,61.72274</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Lier</name>
<description><![CDATA[Mangler informasjon om varsler for Lier]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.2604,59.79005</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Linge</name>
<description><![CDATA[Mangler informasjon om varsler for Linge]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>7.21713,62.28815</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Ljøsne</name>
<description><![CDATA[Mangler informasjon om varsler for Ljøsne]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>7.56252,61.05454</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Loen</name>
<description><![CDATA[Mangler informasjon om varsler for Loen]]></description>
<styleUrl>#style_2</styleUrl>
<Point>
<coordinates>6.78595,61.87228</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Lyngdal</name>
<description><![CDATA[Mangler informasjon om varsler for Lyngdal]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>7.05036,58.12589</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Løken</name>
<description><![CDATA[Mangler informasjon om varsler for Løken]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.06302,61.12183</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Meldal</name>
<description><![CDATA[Mangler informasjon om varsler for Meldal]]></description>
<styleUrl>#style_2</styleUrl>
<Point>
<coordinates>9.716463,63.026787</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Moelv</name>
<description><![CDATA[Mangler informasjon om varsler for Moelv]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.6937,60.943</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Mære</name>
<description><![CDATA[Mangler informasjon om varsler for Mære]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>11.42527,63.94244</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Målselv</name>
<description><![CDATA[Mangler informasjon om varsler for Målselv]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>18.537834,69.258835</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Njøs</name>
<description><![CDATA[Mangler informasjon om varsler for Njøs]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.862209,61.179943</coordinates>
</Point>
</Placemark>
<Placemark>
<name></name>
<description><![CDATA[Mangler informasjon om varsler for Nå]]></description>
<styleUrl>#style_2</styleUrl>
<Point>
<coordinates>6.57052,60.2542</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Oppdal</name>
<description><![CDATA[Mangler informasjon om varsler for Oppdal]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.483333,62.59999</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Orre</name>
<description><![CDATA[Mangler informasjon om varsler for Orre]]></description>
<styleUrl>#style_0</styleUrl>
<Point>
<coordinates>5.55,58.7</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Pasvik</name>
<description><![CDATA[Mangler informasjon om varsler for Pasvik]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>30.04085,69.45513</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Rakkestad</name>
<description><![CDATA[Mangler informasjon om varsler for Rakkestad]]></description>
<styleUrl>#style_2</styleUrl>
<Point>
<coordinates>11.39042,59.38824</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Ramnes</name>
<description><![CDATA[Mangler informasjon om varsler for Ramnes]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.23923,59.38081</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Rena</name>
<description><![CDATA[Mangler informasjon om varsler for Rena]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>11.359307,61.149868</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Rennebu</name>
<description><![CDATA[Mangler informasjon om varsler for Rennebu]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.836755,62.862926</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Rindal</name>
<description><![CDATA[Mangler informasjon om varsler for Rindal]]></description>
<styleUrl>#style_3</styleUrl>
<Point>
<coordinates>9.376915,63.104248</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Rissa</name>
<description><![CDATA[Mangler informasjon om varsler for Rissa]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.97051,63.58592</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Roverud</name>
<description><![CDATA[Mangler informasjon om varsler for Roverud]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>12.09144,60.25378</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Rygge</name>
<description><![CDATA[Mangler informasjon om varsler for Rygge]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.75427,59.39805</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Sandane</name>
<description><![CDATA[Mangler informasjon om varsler for Sandane]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.15884,61.79835</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Sande</name>
<description><![CDATA[Mangler informasjon om varsler for Sande]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.22339,59.6162</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Sandefjord</name>
<description><![CDATA[Mangler informasjon om varsler for Sandefjord]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.27512,59.16827</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Sekse</name>
<description><![CDATA[Mangler informasjon om varsler for Sekse]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.62133,60.25028</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Skjetlein</name>
<description><![CDATA[Mangler informasjon om varsler for Skjetlein]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.29737,63.34038</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Skjetten</name>
<description><![CDATA[Mangler informasjon om varsler for Skjetten]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.97765,59.97758</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Skogmo</name>
<description><![CDATA[Mangler informasjon om varsler for Skogmo]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>12.01885,64.51035</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Slinde</name>
<description><![CDATA[Mangler informasjon om varsler for Slinde]]></description>
<styleUrl>#style_2</styleUrl>
<Point>
<coordinates>6.93651,61.15988</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Soknedal</name>
<description><![CDATA[Mangler informasjon om varsler for Soknedal]]></description>
<styleUrl>#style_2</styleUrl>
<Point>
<coordinates>10.239745,62.92845</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Sortland</name>
<description><![CDATA[Mangler informasjon om varsler for Sortland]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>15.28288,68.64825</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Surnadal</name>
<description><![CDATA[Mangler informasjon om varsler for Surnadal]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>8.68956,62.98474</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Svelvik</name>
<description><![CDATA[Mangler informasjon om varsler for Svelvik]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.40478,59.60272</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Svelvik syd</name>
<description><![CDATA[Mangler informasjon om varsler for Svelvik syd]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.39205,59.55416</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Særheim</name>
<description><![CDATA[Mangler informasjon om varsler for Særheim]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>5.65078,58.76053</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Søve</name>
<description><![CDATA[Mangler informasjon om varsler for Søve]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>9.28132,59.27891</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Tingvoll</name>
<description><![CDATA[Mangler informasjon om varsler for Tingvoll]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>8.18623,62.91341</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Tjølling</name>
<description><![CDATA[Mangler informasjon om varsler for Tjølling]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.12513,59.04641</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Tjøtta</name>
<description><![CDATA[Mangler informasjon om varsler for Tjøtta]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>12.42553,65.82951</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Tomb</name>
<description><![CDATA[Mangler informasjon om varsler for Tomb]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.81449,59.31893</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Ullensvang</name>
<description><![CDATA[Mangler informasjon om varsler for Ullensvang]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.65381,60.31853</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Ulvik</name>
<description><![CDATA[Mangler informasjon om varsler for Ulvik]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>6.93246,60.56365</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Vågønes</name>
<description><![CDATA[Mangler informasjon om varsler for Vågønes]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>14.45155,67.28465</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Øsaker</name>
<description><![CDATA[Mangler informasjon om varsler for Øsaker]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>11.04221,59.31936</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Årnes</name>
<description><![CDATA[Mangler informasjon om varsler for Årnes]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>11.39342,60.1268</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Ås</name>
<description><![CDATA[Mangler informasjon om varsler for Ås]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.781989,59.66047</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Åsbakken</name>
<description><![CDATA[Mangler informasjon om varsler for Åsbakken]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>10.768903,59.66855</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Åsnes</name>
<description><![CDATA[Mangler informasjon om varsler for Åsnes]]></description>
<styleUrl>#style_4</styleUrl>
<Point>
<coordinates>12.0244,60.54933</coordinates>
</Point>
</Placemark>
</Document>
</kml>
\ 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