Moved www files for station maps from stations/trunk/www to www/trunk.
This commit is contained in:
commit
46ecb92d5c
Notes:
subgit
2018-03-07 17:58:38 +01:00
r471 www/trunk
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
||||
* text=auto !eol
|
70
index.html
Normal file
70
index.html
Normal file
@ -0,0 +1,70 @@
|
||||
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
|
||||
<!-- $Id$ -->
|
||||
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
|
||||
<head>
|
||||
<meta http-equiv='content-type' content='text/html;charset=UTF-8' />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<style type="text/css">
|
||||
html, body, #map {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 10000;
|
||||
}
|
||||
|
||||
#maptext {
|
||||
position: absolute;
|
||||
bottom: 1em;
|
||||
left: 1em;
|
||||
width: 20%;
|
||||
z-index: 20000;
|
||||
background-color: white;
|
||||
padding: 0 0.5em 0.5em 0.5em;
|
||||
}
|
||||
|
||||
#mapkey {
|
||||
position: absolute;
|
||||
top: 18px;
|
||||
left: 80px;
|
||||
width: 320px;
|
||||
height: 34px;
|
||||
z-index: 20000;
|
||||
background: rgb(255, 255, 255);
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
padding: 0px 0px 0px 0px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type='text/javascript' src='OpenLayers.js'></script>
|
||||
<script src="https://maps.google.com/maps/api/js?sensor=false&v=3.9"></script>
|
||||
<script type='text/javascript' src='station_map_www.js'></script>
|
||||
<script type='text/javascript' src='mapkey.js'></script>
|
||||
<script type='text/javascript' src='lang/de.js'></script>
|
||||
<script type='text/javascript'>
|
||||
OpenLayers.Util.extend(OpenLayers.Lang.de, {
|
||||
'Overlays' : 'Ebenen',
|
||||
'Stations' : 'Stationen',
|
||||
'Events': 'Ereignisse',
|
||||
'Grid': 'Gitter',
|
||||
'Google Maps (Terrain)': 'Google Maps (Gelände)',
|
||||
'Google Maps (Satellite)': 'Google Maps (Satellit)',
|
||||
'Google Maps (Streets)': 'Google Maps (Straßen)',
|
||||
'Magnitudes': 'Magnituden',
|
||||
'stations': 'Stationen',
|
||||
'Zoom in to resolve individual stations.': 'Zum Anzeigen der einzelnen Stationen vergrößern.'
|
||||
});
|
||||
OpenLayers.Lang.setCode(document.documentElement.lang);
|
||||
</script>
|
||||
<!-- <div id="mapkey">
|
||||
<script type='text/javascript'>initKey(true, false, false);</script>
|
||||
</div> -->
|
||||
<div id="map">
|
||||
<script type='text/javascript'>init(true, true, false, false);</script>
|
||||
</div>
|
||||
<!-- <div id="maptext">
|
||||
<h3 id="title">Stations</h3>
|
||||
</div> -->
|
||||
</body>
|
||||
</html>
|
313
station_map_www.js
Normal file
313
station_map_www.js
Normal file
@ -0,0 +1,313 @@
|
||||
/*
|
||||
* JavaScript code to generate maps used by the
|
||||
* Seismological Observatory of the Ruhr-University Bochum
|
||||
*
|
||||
* Copyright 2012 Kasper D. Fischer <kasper.fischer@rub.de>
|
||||
*
|
||||
* License
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program 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
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
*
|
||||
* $Id$
|
||||
|
||||
*/
|
||||
|
||||
/* Global variables */
|
||||
var map;
|
||||
|
||||
/* Main function to create the map */
|
||||
function init(showGoogle, showStations, showQuakes, noFrils) {
|
||||
|
||||
/* Creating map */
|
||||
if ( !noFrils ) {
|
||||
map = new OpenLayers.Map(
|
||||
'map',
|
||||
{
|
||||
projection: new OpenLayers.Projection("EPSG:900913"),
|
||||
displayProjection: new OpenLayers.Projection("EPSG:4326"),
|
||||
controls: [
|
||||
new OpenLayers.Control.Attribution(),
|
||||
new OpenLayers.Control.KeyboardDefaults(),
|
||||
new OpenLayers.Control.LayerSwitcher({}),
|
||||
new OpenLayers.Control.MousePosition(),
|
||||
new OpenLayers.Control.Navigation(),
|
||||
new OpenLayers.Control.OverviewMap(),
|
||||
new OpenLayers.Control.PanZoomBar({zoomWorldIcon: true}),
|
||||
new OpenLayers.Control.Permalink(),
|
||||
new OpenLayers.Control.ScaleLine({geodesic: true})
|
||||
]
|
||||
}
|
||||
);
|
||||
} else {
|
||||
map = new OpenLayers.Map(
|
||||
'map',
|
||||
{
|
||||
projection: new OpenLayers.Projection("EPSG:900913"),
|
||||
displayProjection: new OpenLayers.Projection("EPSG:4326"),
|
||||
controls: [
|
||||
new OpenLayers.Control.Attribution(),
|
||||
new OpenLayers.Control.KeyboardDefaults(),
|
||||
new OpenLayers.Control.Navigation(),
|
||||
new OpenLayers.Control.Permalink({anchor: true}),
|
||||
new OpenLayers.Control.ScaleLine({geodesic: true})
|
||||
]
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/* Base Layers */
|
||||
// OpenStreetMap
|
||||
var osmde_map_layer = new OpenLayers.Layer.OSM(
|
||||
'OpenStreetMap (DE)',
|
||||
[
|
||||
"http://a.tile.openstreetmap.de/tiles/osmde/${z}/${x}/${y}.png",
|
||||
"http://b.tile.openstreetmap.de/tiles/osmde/${z}/${x}/${y}.png",
|
||||
"http://c.tile.openstreetmap.de/tiles/osmde/${z}/${x}/${y}.png"
|
||||
],
|
||||
{
|
||||
attribution: 'Geobasisdaten: Copyright © 2013 <a href="http://www.openstreetmap.org/">OpenStreetMap</a> und Mitwirkende <br />' +
|
||||
'Lizenz: <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative Commons BY-SA 2.0.</a>'
|
||||
}
|
||||
);
|
||||
var osm_map_layer = new OpenLayers.Layer.OSM(
|
||||
'OpenStreetMap (Standard)');
|
||||
map.addLayers([
|
||||
osmde_map_layer,
|
||||
osm_map_layer
|
||||
]);
|
||||
|
||||
// Google Maps
|
||||
if (showGoogle) {
|
||||
var googleT_map_layer = new OpenLayers.Layer.Google(
|
||||
OpenLayers.i18n('Google Maps (Terrain)'),
|
||||
{type: google.maps.MapTypeId.TERRAIN,transitionEffect: "resize"}
|
||||
);
|
||||
var googleS_map_layer = new OpenLayers.Layer.Google(
|
||||
OpenLayers.i18n("Google Maps (Satellite)"),
|
||||
{type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22,transitionEffect: "resize"}
|
||||
);
|
||||
var googleH_map_layer = new OpenLayers.Layer.Google(
|
||||
'Google Maps (Hybrid)',
|
||||
{type: google.maps.MapTypeId.HYBRID, numZoomLevels: 20,transitionEffect: "resize"}
|
||||
);
|
||||
var googleM_map_layer = new OpenLayers.Layer.Google(
|
||||
OpenLayers.i18n("Google Maps (Streets)"),
|
||||
{numZoomLevels: 20,transitionEffect: "resize"}
|
||||
);
|
||||
map.addLayers([
|
||||
googleT_map_layer,
|
||||
googleS_map_layer,
|
||||
googleH_map_layer,
|
||||
googleM_map_layer
|
||||
]);
|
||||
};
|
||||
|
||||
// Show quakes
|
||||
quakes_layer = loadKML(OpenLayers.i18n("Events"), 'quakes.kml', false, true);
|
||||
map.addLayer(quakes_layer);
|
||||
quakes_layer.setVisibility(showQuakes);
|
||||
|
||||
// Adding custom style to quakes
|
||||
var quake_style_default = new OpenLayers.Style({
|
||||
fillColor: '${pntcolor}', fillOpacity: 0.2,
|
||||
strokeColor: '${pntcolor}', strokeWidth: 2,
|
||||
pointRadius: '${pntsize}'
|
||||
});
|
||||
var quake_style_select = new OpenLayers.Style({
|
||||
fillColor: '${pntcolor}', fillOpacity: 0.8,
|
||||
strokeColor: '${pntcolor}', strokeWidth: 2,
|
||||
pointRadius: '${pntsize}'
|
||||
});
|
||||
var quake_style_map = new OpenLayers.StyleMap({
|
||||
'default': quake_style_default,
|
||||
'select': quake_style_select
|
||||
});
|
||||
quakes_layer.styleMap = quake_style_map;
|
||||
|
||||
// Show stations
|
||||
stations_layer = loadKML(OpenLayers.i18n("Stations"), 'stations.kml', false, noFrils);
|
||||
map.addLayer(stations_layer);
|
||||
stations_layer.setVisibility(showStations);
|
||||
|
||||
// Adding custom style to stations
|
||||
var station_style_default = new OpenLayers.Style({
|
||||
fillColor: '#8dae10', fillOpacity: 0.8,
|
||||
strokeColor: 'black', strokeWidth: 2,
|
||||
label: "${text}", labelXOffset: 15, labelAlign: 'l',
|
||||
fontColor: "${tcolor}", fontFamily: 'sans-serif', fontWeight: 'bold',
|
||||
pointRadius: '${pntsize}',
|
||||
graphicName: '${pntsymbol}'
|
||||
},
|
||||
{
|
||||
context: {
|
||||
text: function(feature){
|
||||
if (feature.attributes.count) {
|
||||
var c = feature.attributes.count;
|
||||
for (var i=0; i<feature.cluster.length; i++){
|
||||
c = c + feature.cluster[i].attributes.extrastation * 1.0;
|
||||
}
|
||||
return c + ' ' + OpenLayers.i18n('stations');
|
||||
} else {
|
||||
return feature.attributes.name;
|
||||
}
|
||||
},
|
||||
tcolor: function(feature){
|
||||
if (feature.attributes.count) {
|
||||
return 'black';
|
||||
} else {
|
||||
return feature.attributes.tcolor;
|
||||
}
|
||||
},
|
||||
pntsize: function(feature){
|
||||
if (feature.attributes.count) {
|
||||
return Math.min(feature.attributes.count * 2.0 + 6.0, 12);
|
||||
} else {
|
||||
return feature.attributes.pntsize;
|
||||
}
|
||||
},
|
||||
pntsymbol: function(feature){
|
||||
if (feature.attributes.count) {
|
||||
return 'circle';
|
||||
} else {
|
||||
return 'triangle';
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
var station_style_select = station_style_default.clone();
|
||||
station_style_select.defaultStyle.strokeWidth = 4;
|
||||
var station_style_map = new OpenLayers.StyleMap({
|
||||
'default': station_style_default,
|
||||
'select': station_style_select
|
||||
});
|
||||
stations_layer.styleMap = station_style_map;
|
||||
|
||||
// Show description
|
||||
select = new OpenLayers.Control.SelectFeature([quakes_layer, stations_layer]);
|
||||
map.addControl(select);
|
||||
select.activate();
|
||||
|
||||
// Add graticule
|
||||
map.addControl(new OpenLayers.Control.Graticule({layerName: OpenLayers.i18n("Grid"), visible: false}));
|
||||
|
||||
// Set initial view
|
||||
if (!map.getCenter()) {
|
||||
map.setCenter(new OpenLayers.LonLat(800500, 6780000),0);
|
||||
}
|
||||
if (!map.getZoom()) {
|
||||
map.zoomTo(9);
|
||||
}
|
||||
}
|
||||
|
||||
/* Function to load KML file */
|
||||
function loadKML(name, file, useStyle, noFrils) {
|
||||
// define layer strategy
|
||||
var layer_strategy
|
||||
if (noFrils){
|
||||
layer_strategy = [
|
||||
new OpenLayers.Strategy.Fixed(),
|
||||
];
|
||||
} else {
|
||||
// define cluster parameters
|
||||
var thresholdValue = 4;
|
||||
if (map.getZoom() <= 8){ thresholdValue = 2}
|
||||
if (map.getZoom() >= 10){ thresholdValue = 6}
|
||||
if (noFrils) {
|
||||
thresholdValue = 99;
|
||||
distanceValue = 0
|
||||
};
|
||||
|
||||
var distanceValue = 10;
|
||||
if (map.getZoom() <= 9){ distanceValue = 20}
|
||||
|
||||
layer_strategy = [
|
||||
new OpenLayers.Strategy.Fixed(),
|
||||
new OpenLayers.Strategy.Cluster({distance: distanceValue, threshold: thresholdValue})
|
||||
];
|
||||
}
|
||||
|
||||
// create kml layer
|
||||
var kml_layer = new OpenLayers.Layer.Vector(
|
||||
name,
|
||||
{
|
||||
strategies: layer_strategy,
|
||||
protocol: new OpenLayers.Protocol.HTTP(
|
||||
{
|
||||
url: file,
|
||||
format: new OpenLayers.Format.KML({
|
||||
extractStyles: useStyle,
|
||||
extractAttributes: true,
|
||||
maxDepth: 1
|
||||
})
|
||||
}),
|
||||
transitionEffect: "resize",
|
||||
projection: new OpenLayers.Projection("EPSG:4326")
|
||||
});
|
||||
kml_layer.events.on(
|
||||
{
|
||||
"featureselected": onFeatureSelect,
|
||||
"featureunselected": onFeatureUnselect
|
||||
});
|
||||
|
||||
// return layer object
|
||||
return kml_layer;
|
||||
}
|
||||
|
||||
/* Function called at closing of a popup */
|
||||
function onPopupClose(evt) {
|
||||
select.unselectAll();
|
||||
}
|
||||
|
||||
/* Function called when clicking on a markger */
|
||||
function onFeatureSelect(event) {
|
||||
var feature = event.feature;
|
||||
// Since KML is user-generated, do naive protection against
|
||||
// Javascript.
|
||||
if (feature.attributes.name){
|
||||
var content = "<h3>"+feature.attributes.name + "</h3><p>" + feature.attributes.description + '</p>';
|
||||
if (content.search("<script") != -1) {
|
||||
content = "Content contained Javascript! Escaped content below.<br>" + content.replace(/</g, "<");
|
||||
}
|
||||
} else {
|
||||
var content = '<h3>';
|
||||
for (var i=0; i<feature.cluster.length; i++){
|
||||
content = content + feature.cluster[i].attributes.name;
|
||||
if (i < feature.cluster.length-1) {
|
||||
content = content + ', ';
|
||||
}
|
||||
}
|
||||
content += '</h3>'+
|
||||
OpenLayers.i18n('Zoom in to resolve individual stations.');
|
||||
}
|
||||
var popup = new OpenLayers.Popup.FramedCloud(
|
||||
"popups",
|
||||
feature.geometry.getBounds().getCenterLonLat(),
|
||||
new OpenLayers.Size(100,100),
|
||||
content,
|
||||
null, true,
|
||||
onPopupClose
|
||||
);
|
||||
feature.popup = popup;
|
||||
map.addPopup(popup);
|
||||
}
|
||||
|
||||
/* Function to close popups */
|
||||
function onFeatureUnselect(event) {
|
||||
var feature = event.feature;
|
||||
if(feature.popup) {
|
||||
map.removePopup(feature.popup);
|
||||
feature.popup.destroy();
|
||||
delete feature.popup;
|
||||
}
|
||||
}
|
87
stations2kml.py
Executable file
87
stations2kml.py
Executable file
@ -0,0 +1,87 @@
|
||||
#! /usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Creates KML file with station info.
|
||||
|
||||
License
|
||||
Copyright 2012 Kasper D. Fischer <kasper.fischer@rub.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation, either version 3 of the License, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program 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 General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
$Id$
|
||||
"""
|
||||
|
||||
import simplekml
|
||||
|
||||
# create new empty KML file
|
||||
kml = simplekml.Kml()
|
||||
|
||||
# create empyt folder to contain styles and stations
|
||||
stations_folder = kml.newfolder(name="Stations")
|
||||
|
||||
# style of broad-band stations
|
||||
BBstyle = simplekml.Style()
|
||||
BBstyle.iconstyle.icon.href = 'https://maps.google.com/mapfiles/ms/micons/red-dot.png'
|
||||
BBtcolor = '#003560'
|
||||
|
||||
# style of short periode stations
|
||||
SPstyle = simplekml.Style()
|
||||
SPstyle.iconstyle.icon.href = 'https://maps.google.com/mapfiles/ms/micons/orange-dot.png'
|
||||
SPtcolor = '#003560'
|
||||
|
||||
# style of short periode stations
|
||||
AUXstyle = simplekml.Style()
|
||||
AUXstyle.iconstyle.icon.href = 'https://maps.google.com/mapfiles/ms/micons/yellow-dot.png'
|
||||
AUXtcolor = '#003560'
|
||||
|
||||
# setting station info
|
||||
stations = {
|
||||
'BUG, BKLB': [(7.2693, 51.4406), "GRSN station BUG, STS-2 seismometer<br />RuhrNet station BKLB, GS-13 seismometer", BBstyle, 10, '#ff0000', 'BUG (Bochum University Germany), BKLB (Bochum - Klosterbusch)', BBtcolor, 1],
|
||||
'BULI': [(7.2602, 51.4544), 'RuhrNet station BULI, Mark L-4C 3D seismometer', AUXstyle, 8, '#ffff00', 'BULI', AUXtcolor, 0],
|
||||
'BTEZ': [(7.2790, 51.4490), 'RuhrNet station BTEZ, GS-13 seismometer', AUXstyle, 8, '#ffff00', 'BTEZ', AUXtcolor, 0],
|
||||
'BHOF': [(7.2614, 51.4289), 'RuhrNet station BHOF, GS-13 seismometer', AUXstyle, 8, '#ffff00', 'BHOF', AUXtcolor, 0],
|
||||
'BPFI': [(7.2276, 51.4185 ), 'RuhrNet station BBFI, Mark L-4C 3D seismometer', AUXstyle, 8, '#ffff00', 'BPFI', AUXtcolor, 0],
|
||||
'HMES': [(7.7263, 51.6578), 'RuhrNet station HMES, Trillium 40 seismometer', BBstyle, 10, '#ff0000', 'HMES', BBtcolor, 0],
|
||||
'BRHE': [(6.5710, 51.5155), 'RuhrNet station BRHE, Mark L-4C 3D seismometer', SPstyle, 10, '#ffa500', 'BRHE', SPtcolor, 0],
|
||||
'ZERL': [(6.8695, 51.6207), 'RuhrNet station ZERL, Mark L-4C 3D seismometer', SPstyle, 10, '#ffa500', 'ZERL', SPtcolor, 0],
|
||||
'ZER1': [(6.8252, 51.5948), 'RuhrNet station ZER1, Mark L-4C 3D seismometer', AUXstyle, 8, '#ffff00', 'ZER1', AUXtcolor, 0],
|
||||
'ZER2': [(6.9062, 51.5871 ), 'RuhrNet station ZER2, Mark L-4C 3D seismometer', AUXstyle, 8, '#ffff00', 'ZER2', AUXtcolor, 0],
|
||||
'ZER3': [(6.8384, 51.61274), 'RuhrNet station ZER3, Mark L-4C 3D seismometer', AUXstyle, 8, '#ffff00', 'ZER3', AUXtcolor, 0],
|
||||
'BAVN': [(7.1220, 51.7380), 'RuhrNet station BAVN, STS-2 seismometer', BBstyle, 10, '#ff0000', 'BAVN', BBtcolor, 0],
|
||||
'BAVS': [(7.13307, 51.7000), 'RuhrNet station BAVS, Mark L-4C 3D seismometer', AUXstyle, 8, '#ffff00', 'BAVS', AUXtcolor, 0],
|
||||
'IBBN': [(7.7566, 52.3072), 'GEOFON station IBBN, STS-2 seismometer', BBstyle, 10, '#ff0000', 'IBBN', BBtcolor, 0],
|
||||
'IBBE': [(7.7943, 52.2998), 'RuhrNet station IBBE, Mark L-4C 3D seismometer', AUXstyle, 8, '#ffff00', 'IBBE', AUXtcolor, 0],
|
||||
'IBBS': [(7.7486, 52.2843), 'RuhrNet station IBBS, Mark L-4C 3D seismometer', AUXstyle, 8, '#ffff00', 'IBBS', AUXtcolor, 0],
|
||||
'KERA': [(23.55769, 35.36919), 'GEOFON station KERA, STS-2 seismometer', BBstyle, 10, '#ff0000', 'KERA', BBtcolor, 0],
|
||||
'KARP': [(27.16117, 35.54717), 'GEOFON station KARP, STS-2 seismometer', BBstyle, 10, '#ff0000', 'KARP', BBtcolor, 0]
|
||||
}
|
||||
# 'BSHA': [(7.2445, 51.4469), 'RuhrNet station BSHA, GS-13 seismometer', AUXstyle, 8, '#ffff00', '', 'black'],
|
||||
# 'BKLB': [(7.2697, 51.4401), 'RuhrNet station BKLB, GS-13 seismometer', AUXstyle, 8, '#ffff00', 'BKLB', AUXtcolor],
|
||||
|
||||
# adding station markers
|
||||
for key, value in stations.iteritems():
|
||||
pnt = stations_folder.newpoint(
|
||||
name = key,
|
||||
coords = [(value[0][0], value[0][1])],
|
||||
description = value[1]
|
||||
)
|
||||
pnt.style = value[2]
|
||||
pnt.extendeddata.newdata('pntsize', value[3])
|
||||
pnt.extendeddata.newdata('pntcolor', value[4])
|
||||
pnt.extendeddata.newdata('text', value[5])
|
||||
pnt.extendeddata.newdata('tcolor', value[6])
|
||||
pnt.extendeddata.newdata('extrastation', value[7])
|
||||
|
||||
# saving the KML file
|
||||
kml.save('stations.kml')
|
Loading…
Reference in New Issue
Block a user