Updated html, javascript and python files to produce station and event maps.
This commit is contained in:
parent
fc0588d3b4
commit
41b22418e1
Notes:
subgit
2018-03-07 17:58:43 +01:00
r515 www/trunk
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1,2 +1,4 @@
|
||||
* text=auto !eol
|
||||
/mapkey.js -text
|
||||
/mapkey_yearly.js -text
|
||||
/quakes2kml.py -text
|
||||
|
@ -1,6 +1,6 @@
|
||||
<!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='de' lang='de'>
|
||||
<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" />
|
||||
<title>RUB SeisObs - Station and Seismicity Map</title>
|
||||
@ -26,8 +26,8 @@
|
||||
position: absolute;
|
||||
top: 18px;
|
||||
left: 80px;
|
||||
width: 320px;
|
||||
height: 34px;
|
||||
width: 420px;
|
||||
height: 80px;
|
||||
z-index: 20000;
|
||||
background: rgb(255, 255, 255);
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
@ -71,7 +71,9 @@
|
||||
'Google Maps (Terrain)': 'Google Maps (Gelände)',
|
||||
'Google Maps (Satellite)': 'Google Maps (Satellit)',
|
||||
'Google Maps (Streets)': 'Google Maps (Straßen)',
|
||||
'Year': 'Jahr',
|
||||
'Magnitudes': 'Magnituden',
|
||||
'Magnitude': 'Magnitude',
|
||||
'stations': 'Stationen',
|
||||
'Zoom in to resolve individual stations.': 'Zum Anzeigen der einzelnen Stationen vergrößern.'
|
||||
});
|
||||
|
87
mapkey.js
Normal file
87
mapkey.js
Normal file
@ -0,0 +1,87 @@
|
||||
/*
|
||||
* 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: station_map.js 321 2012-02-13 14:52:11Z kasper $
|
||||
|
||||
*/
|
||||
|
||||
/* Global variables */
|
||||
var mapkey;
|
||||
|
||||
/* Main function to create the map */
|
||||
function initKey(showMag, showAge, showStation) {
|
||||
|
||||
/* Creating map */
|
||||
wgs84 = new OpenLayers.Projection("EPSG:4326");
|
||||
mapkey = new OpenLayers.Map(
|
||||
'mapkey',
|
||||
{
|
||||
projection: wgs84,
|
||||
displayProjection: wgs84,
|
||||
controls: []
|
||||
}
|
||||
);
|
||||
|
||||
// Show Magnitudes
|
||||
mag_layer = new OpenLayers.Layer.Vector(
|
||||
'Magnitude Scale',
|
||||
{
|
||||
projection: wgs84,
|
||||
isBaseLayer: true
|
||||
}
|
||||
);
|
||||
|
||||
// Adding custom style for Magnitudes
|
||||
var mag_style_default = new OpenLayers.Style({
|
||||
fillColor: '#ff0000', fillOpacity: 0.2,
|
||||
strokeColor: '#ff0000', strokeWidth: 2,
|
||||
pointRadius: "${pntsize}",
|
||||
label: "${text}", labelXOffset: "${offset}",
|
||||
graphicName: 'circle'
|
||||
});
|
||||
var mag_style_map = new OpenLayers.StyleMap({
|
||||
'default': mag_style_default
|
||||
});
|
||||
mag_layer.styleMap = mag_style_map;
|
||||
|
||||
// Adding points as map key, size: mag*3.5+2.0
|
||||
var pointt = new OpenLayers.Geometry.Point(-10, 0);
|
||||
var mag_pointt = new OpenLayers.Feature.Vector(pointt, {pntsize: 0, text: 'Magnitude', offset: 2});
|
||||
var point0 = new OpenLayers.Geometry.Point(0, 0);
|
||||
var mag_point0 = new OpenLayers.Feature.Vector(point0, {pntsize: 0.5*3.5+2.0, text: '0.5', offset: 17});
|
||||
var point1 = new OpenLayers.Geometry.Point(10, 0);
|
||||
var mag_point1 = new OpenLayers.Feature.Vector(point1, {pntsize: 1.5*3.5+2.0, text: '1.5', offset: 20.5});
|
||||
var point2 = new OpenLayers.Geometry.Point(20, 0);
|
||||
var mag_point2 = new OpenLayers.Feature.Vector(point2, {pntsize: 2.5*3.5+2.0, text: '2.5', offset: 24.0});
|
||||
var point3 = new OpenLayers.Geometry.Point(30, 0);
|
||||
var mag_point3 = new OpenLayers.Feature.Vector(point3, {pntsize: 3.5*3.5+2.0, text: '3.5', offset: 27.5});
|
||||
mag_layer.addFeatures([mag_pointt, mag_point0, mag_point1, mag_point2, mag_point3]);
|
||||
|
||||
|
||||
mapkey.addLayer(mag_layer);
|
||||
mag_layer.setVisibility(true);
|
||||
|
||||
// Set initial view
|
||||
if (!mapkey.getCenter()) {
|
||||
mapkey.setCenter(0,0);
|
||||
mapkey.zoomToExtent(mag_layer.getDataExtent());
|
||||
}
|
||||
}
|
1
mapkey_yearly.js
Symbolic link
1
mapkey_yearly.js
Symbolic link
@ -0,0 +1 @@
|
||||
mapkey.js
|
@ -24,11 +24,35 @@
|
||||
*/
|
||||
|
||||
/* Global variables */
|
||||
var map;
|
||||
var map, mapargs;
|
||||
|
||||
/* Main function to create the map */
|
||||
function init(showGoogle, showStations, showQuakes, noFrils) {
|
||||
|
||||
/* get parameters from url */
|
||||
mapargs = OpenLayers.Util.getParameters();
|
||||
if (mapargs['print']) {
|
||||
if (mapargs['print'] == 'true') {
|
||||
noFrils = true;
|
||||
} else {
|
||||
noFrils = false;
|
||||
}
|
||||
}
|
||||
if (mapargs['quakes']) {
|
||||
if (mapargs['quakes'] == 'true') {
|
||||
showQuakes = true;
|
||||
} else {
|
||||
showQuakes = false;
|
||||
}
|
||||
}
|
||||
if (mapargs['stations']) {
|
||||
if (mapargs['stations'] == 'true') {
|
||||
showStations = true;
|
||||
} else {
|
||||
showStations = false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Creating map */
|
||||
if ( !noFrils ) {
|
||||
map = new OpenLayers.Map(
|
||||
@ -44,7 +68,7 @@ function init(showGoogle, showStations, showQuakes, noFrils) {
|
||||
new OpenLayers.Control.Navigation(),
|
||||
new OpenLayers.Control.OverviewMap(),
|
||||
new OpenLayers.Control.PanZoomBar({zoomWorldIcon: true}),
|
||||
new OpenLayers.Control.Permalink(),
|
||||
new OpenLayers.Control.Permalink({anchor: noFrils}),
|
||||
new OpenLayers.Control.ScaleLine({geodesic: true})
|
||||
]
|
||||
}
|
||||
@ -59,7 +83,7 @@ function init(showGoogle, showStations, showQuakes, noFrils) {
|
||||
new OpenLayers.Control.Attribution(),
|
||||
new OpenLayers.Control.KeyboardDefaults(),
|
||||
new OpenLayers.Control.Navigation(),
|
||||
new OpenLayers.Control.Permalink({anchor: true}),
|
||||
new OpenLayers.Control.Permalink({anchor: noFrils}),
|
||||
new OpenLayers.Control.ScaleLine({geodesic: true})
|
||||
]
|
||||
}
|
||||
@ -131,6 +155,27 @@ function init(showGoogle, showStations, showQuakes, noFrils) {
|
||||
map.addLayer(quakes_layer);
|
||||
quakes_layer.setVisibility(showQuakes);
|
||||
|
||||
// color coding of events
|
||||
var day2sec = 86400.;
|
||||
var timeNow = new Date().getTime()/1000.;
|
||||
var timeCoding;
|
||||
if (mapargs['timeCoding']) {
|
||||
switch ( mapargs['timeCoding'] ){
|
||||
case 'decade':
|
||||
timeCoding = {
|
||||
'colors': [ '#0000ff', '#ff0000', '#ffa500', '#ffff00'],
|
||||
'times': [1262300400, 946681200, 631148400, 315529200]
|
||||
// 1.1.2010, 1.1.2000, 1.1.1990, 1.1.1980
|
||||
};
|
||||
};
|
||||
};
|
||||
if (!mapargs['timeCoding'] || !timeCoding ) {
|
||||
timeCoding = {
|
||||
'colors': ['#0000ff', '#ff0000', '#ffa500', '#ffff00'],
|
||||
'ages': [7*day2sec, 30.4375*day2sec, 182.625*day2sec, 365.25*day2sec]
|
||||
};
|
||||
};
|
||||
|
||||
// Adding custom style to quakes
|
||||
var quake_style_default = new OpenLayers.Style({
|
||||
fillColor: '${pntcolor}', fillOpacity: 0.2,
|
||||
@ -140,10 +185,37 @@ function init(showGoogle, showStations, showQuakes, noFrils) {
|
||||
{
|
||||
context: {
|
||||
pntcolor: function(feature){
|
||||
return feature.data.pntcolor.value;
|
||||
return feature.data.pntcolor.value;
|
||||
},
|
||||
/* if (timeCoding['ages']) {
|
||||
quakeAge = feature.data.age.value;
|
||||
// quakeAge = timeNow - feature.data.stime.value;
|
||||
for ( level = 0; level < timeCoding['ages'].length; level += 1 ) {
|
||||
if ( quakeAge <= timeCoding['ages'][level] ) {
|
||||
return timeCoding['colors'][level];
|
||||
};
|
||||
};
|
||||
} else if (timeCoding['decade']) {
|
||||
return feature.data.pntcolor.value;
|
||||
} else {
|
||||
quakeTime = timeNow + feature.data.age.value;
|
||||
// quakeTime = feature.data.stime.value;
|
||||
for ( level = 0; level < timeCoding['times'].length; level += 1 ) {
|
||||
if ( quakeTime >= timeCoding['times'][level] ) {
|
||||
return timeCoding['colors'][level];
|
||||
};
|
||||
};
|
||||
};
|
||||
//return '#ffffff00';
|
||||
}, */
|
||||
pntsize: function(feature){
|
||||
return feature.data.pntsize.value;
|
||||
// quakeAge = feature.data.age.value;
|
||||
// quakeAge = timeNow - feature.data.time.value;
|
||||
// if ( timeCoding['ages'] && quakeAge > timeCoding['ages'][timeCoding['ages'].length-1] ) {
|
||||
// return 0;
|
||||
// } else {
|
||||
return feature.data.pntsize.value;
|
||||
//}
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -163,7 +235,7 @@ function init(showGoogle, showStations, showQuakes, noFrils) {
|
||||
|
||||
// Adding custom style to stations
|
||||
var station_style_default = new OpenLayers.Style({
|
||||
fillColor: '#8dae10', fillOpacity: 0.8,
|
||||
fillColor: '${pointColor}', fillOpacity: 0.8, // #8dae10
|
||||
strokeColor: 'black', strokeWidth: 2,
|
||||
label: "${text}", labelXOffset: 15, labelAlign: 'l',
|
||||
fontColor: "${tcolor}", fontFamily: 'sans-serif', fontWeight: 'bold',
|
||||
@ -172,6 +244,13 @@ function init(showGoogle, showStations, showQuakes, noFrils) {
|
||||
},
|
||||
{
|
||||
context: {
|
||||
pointColor: function(feature){
|
||||
if (feature.attributes.count) {
|
||||
return '#8dae10';
|
||||
} else {
|
||||
return '#8dae10'; //return feature.data.pntcolor.value;
|
||||
}
|
||||
},
|
||||
text: function(feature){
|
||||
if (feature.attributes.count) {
|
||||
var c = feature.attributes.count;
|
||||
@ -220,9 +299,9 @@ function init(showGoogle, showStations, showQuakes, noFrils) {
|
||||
}
|
||||
|
||||
// Enable animated zoom
|
||||
// for (var i=map.layers.length-1; i>=0; --i) {
|
||||
// map.layers[i].animationEnabled = true;
|
||||
//}
|
||||
for (var i=map.layers.length-1; i>=0; --i) {
|
||||
map.layers[i].animationEnabled = true;
|
||||
}
|
||||
|
||||
// Show description
|
||||
select = new OpenLayers.Control.SelectFeature([quakes_layer, stations_layer]);
|
||||
@ -344,7 +423,9 @@ function setQuakesMapkeyVisibility() {
|
||||
mapkey_div.style.display = "block";
|
||||
mapkey_div.style.visibility = "visible";
|
||||
} else {
|
||||
mapkey_div.style.display = "none";
|
||||
mapkey_div.style.visibility = "hidden";
|
||||
if (mapkey_div) {
|
||||
mapkey_div.style.visibility = "hidden";
|
||||
mapkey_div.style.display = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,60 +28,47 @@ import simplekml
|
||||
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'
|
||||
stationsFolder = kml.newfolder(name="Stations")
|
||||
|
||||
# station types
|
||||
stationTypes = {
|
||||
'broadband': {'textColor': '#003560', 'pointSize': 10, 'pointColor': '#ff0000'},
|
||||
'shortperiod': {'textColor': '#003560', 'pointSize': 10, 'pointColor': '#ffa500'},
|
||||
'auxiliary': {'textColor': '#003560', 'pointSize': 8, 'pointColor': '#ffff00'},
|
||||
'geothermie': {'textColor': '#003560', 'pointSize': 10, 'pointColor': '#ffff00'}
|
||||
}
|
||||
# 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],
|
||||
'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]
|
||||
'BUG, BKLB': [( 7.2693, 51.4406), 'broadband', 1, "GRSN station BUG, STS-2 seismometer<br />RuhrNet station BKLB, GS-13 seismometer"],
|
||||
'BULI': [( 7.2602, 51.4544), 'auxiliary', 0, 'RuhrNet station BULI, Mark L4c-3D seismometer'],
|
||||
'BTEZ': [( 7.2790, 51.4490), 'auxiliary', 0, 'RuhrNet station BTEZ, GS-13 seismometer'],
|
||||
'BPFI': [( 7.2276, 51.4185), 'auxiliary', 0, 'RuhrNet station BBFI, Mark L4c-3D seismometer'],
|
||||
'HMES': [( 7.7263, 51.6578), 'broadband', 0, 'RuhrNet station HMES, Trillium 40 seismometer'],
|
||||
'BRHE': [( 6.5710, 51.5155), 'shortperiod', 0, 'RuhrNet station BRHE, Mark L4c-3D seismometer'],
|
||||
'ZERL': [( 6.8695, 51.6207), 'shortperiod', 0, 'RuhrNet station ZERL, Mark L4c-3D seismometer'],
|
||||
'ZER1': [( 6.8252, 51.5948), 'auxiliary', 0, 'RuhrNet station ZER1, Mark L4c-3D seismometer'],
|
||||
'ZER2': [( 6.9062, 51.5871), 'auxiliary', 0, 'RuhrNet station ZER2, Mark L4c-3D seismometer'],
|
||||
'ZER3': [( 6.8384, 51.6127), 'auxiliary', 0, 'RuhrNet station ZER3, Mark L4c-3D seismometer'],
|
||||
'BAVN': [( 7.1220, 51.7380), 'broadband', 0, 'RuhrNet station BAVN, STS-2 seismometer'],
|
||||
'BAVS': [( 7.1331, 51.7000), 'auxiliary', 0, 'RuhrNet station BAVS, Mark L4c-3D seismometer'],
|
||||
'IBBN': [( 7.7566, 52.3072), 'broadband', 0, 'GEOFON station IBBN, STS-2 seismometer'],
|
||||
'IBBE': [( 7.7943, 52.2998), 'auxiliary', 0, 'RuhrNet station IBBE, Mark L4c-3D seismometer'],
|
||||
'IBBS': [( 7.7486, 52.2843), 'auxiliary', 0, 'RuhrNet station IBBS, Mark L4c-3D seismometer'],
|
||||
'KERA': [(23.5577, 35.3692), 'broadband', 0, 'GEOFON station KERA, STS-2 seismometer'],
|
||||
'KARP': [(27.1612, 35.5472), 'broadband', 0, 'GEOFON station KARP, STS-2 seismometer']
|
||||
}
|
||||
# 'BHOF': [(7.2614, 51.4289), 'RuhrNet station BHOF, GS-13 seismometer', AUXstyle, 8, '#ffff00', 'BHOF', AUXtcolor, 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(
|
||||
pnt = stationsFolder.newpoint(
|
||||
name = key,
|
||||
coords = [(value[0][0], value[0][1])],
|
||||
description = value[1]
|
||||
description = value[3]
|
||||
)
|
||||
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])
|
||||
pnt.extendeddata.newdata('pntsize', stationTypes[value[1]]['pointSize'])
|
||||
pnt.extendeddata.newdata('pntcolor', stationTypes[value[1]]['pointColor'])
|
||||
pnt.extendeddata.newdata('tcolor', stationTypes[value[1]]['textColor'])
|
||||
pnt.extendeddata.newdata('extrastation', value[2])
|
||||
|
||||
# saving the KML file
|
||||
kml.save('stations.kml')
|
||||
|
Loading…
Reference in New Issue
Block a user