new release

This commit is contained in:
Kasper D. Fischer 2021-10-17 13:30:12 +02:00
commit d65abe1b08
21 changed files with 252 additions and 226 deletions

49
.gitignore vendored
View File

@ -1,5 +1,44 @@
scripts/events.xml ## Visual Studio Code
scripts/geolocation.js # Visual Studio Code files
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
## MacOS / OSX
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
## Project Files
wsgi/.idea wsgi/.idea
www/dlsv www/dlsv
www/event.xml www/event.xml
@ -7,9 +46,7 @@ www/events.xml
www/geolocation.js www/geolocation.js
www/geolocationTable.js www/geolocationTable.js
www/stations.xml www/stations.xml
.vscode/settings.json
www/index.html www/index.html
www/favicon.ico www/favicon.ico
scripts/*.json
scripts/*.xml

14
scripts/fetchEvents.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
# get starting date
# find gdate or date command ( OSX: brew install coreutils)
# the date command on OSX is not compatible to the linux date command
datecmd=$((which gdate || which date )| grep bin)
STIME="${1:-$(${datecmd} -d 6-month-ago +%Y-%m-%d)}"
STIME="${STIME:-$(date +%Y-%m-%d)}"
# get output filename
OUTPUT="${2:--}"
# fetch events
curl -s -o ${OUTPUT} "https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/event/1/query?starttime=${STIME}&minlat=50.0&maxlat=53.0&minlon=4.0&maxlon=10.0&minmag=0.7"

View File

@ -1,4 +0,0 @@
#!/bin/bash
STIME=$1
curl -o events.xml "https://ariadne.geophysik.ruhr-uni-bochum.de/fdsnws/event/1/query?starttime=${STIME}&orderby=time&minlat=50.92&maxlat=52.76&minlon=4.26&maxlon=9.74&minmag=1.1"

View File

@ -1,4 +1,4 @@
#! /usr/bin/env python #! /usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
''' '''
@ -8,12 +8,12 @@
The output will will be a javascript structure to be included in the The output will will be a javascript structure to be included in the
SeisObs map service. SeisObs map service.
The script should be updated regulary keep the total number of all The script should be updated regularly keep the total number of all
AJAX calls to the Nominatim service small, e. g. : AJAX calls to the Nominatim service small, e. g. :
curl -s "https://ariadne.geophysik.ruhr-uni-bochum.de/fdsnws/event/1/query?minlat=50&maxlat=54&minlon=3&maxlon=10&minmag=1" | mkGeolocationTable.py > geolocationTable.js curl -s "https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/event/1/query?minlat=50&maxlat=54&minlon=3&maxlon=10&minmag=1" | mkGeolocationTable.py > geolocationTable.js
License License
Copyright 2020 Kasper D. Fischer <kasper.fischer@rub.de> Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
This program is free software: you can redistribute it and/or modify it 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 under the terms of the GNU General Public License as published by the Free
@ -27,30 +27,32 @@
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. with this program. If not, see http://www.gnu.org/licenses/.
$Id$
''' '''
def mkGeolocationTable(file=''): def mkGeolocationTable(file=''):
# imports ## imports
# XML ElementTree
try: try:
import xml.etree.cElementTree as ET import xml.etree.cElementTree as ET
except ImportError: except ImportError:
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
from sys import stdin
import warnings # json
from time import sleep
from geopy.geocoders import Photon
import urllib2 as URL
import json as JSON import json as JSON
# constants # sys stdin
namespaces = {'sc3': 'http://geofon.gfz-potsdam.de/ns/seiscomp3-schema/0.7', from sys import stdin
'qml': 'http://quakeml.org/xmlns/bed/1.2'}
def simple_warning(message, category, filename, lineno, file=None, line=None): # geopy
return 'Warning: %s\n' % (message) from geopy.geocoders import Photon
warnings.formatwarning = simple_warning from geopy.extra.rate_limiter import RateLimiter
from geopy.exc import GeocoderServiceError
## constants
URL = 'https://photon.komoot.io/reverse?lon={lng:.3f}&lat={lat:.3f}&limit=5'
NAMESPACES = {'sc3': 'http://geofon.gfz-potsdam.de/ns/seiscomp3-schema/0.7',
'qml': 'http://quakeml.org/xmlns/bed/1.2'}
# try loading the file # try loading the file
geolocationTable = {} geolocationTable = {}
@ -61,67 +63,93 @@ def mkGeolocationTable(file=''):
geolocationTable = JSON.loads(jsonfileContent) geolocationTable = JSON.loads(jsonfileContent)
except: except:
geolocationTable = {} geolocationTable = {}
warnings.warn('Could not parse file %s' %file) logging.warning('Could not parse file %s' %file)
# parse event.xml # parse event.xml
DOM = ET.parse(stdin).getroot() DOM = ET.parse(stdin).getroot()
geolocator = Photon() geolocator = Photon()
reverse_geolocate = RateLimiter(geolocator.reverse, min_delay_seconds=1)
# iterate over all events # iterate over all events
for event in DOM.iterfind('qml:eventParameters/qml:event', namespaces): count = 0
for event in DOM.iterfind('qml:eventParameters/qml:event', NAMESPACES):
count += 1
publicID = event.attrib['publicID'].split('/')[2] publicID = event.attrib['publicID'].split('/')[2]
lat = event.find('./qml:origin/qml:latitude/qml:value', namespaces).text lat = float(event.find('./qml:origin/qml:latitude/qml:value', NAMESPACES).text)
lng = event.find('./qml:origin/qml:longitude/qml:value', namespaces).text lng = float(event.find('./qml:origin/qml:longitude/qml:value', NAMESPACES).text)
evaluationMode = event.find('./qml:origin/qml:evaluationMode', namespaces).text evaluationMode = event.find('./qml:origin/qml:evaluationMode', NAMESPACES).text
if publicID in geolocationTable: if publicID in geolocationTable:
warnings.warn('Skipping cached event %s' %(publicID)) logging.warning('Skipping cached event {id}'.format(id=publicID))
elif evaluationMode == 'automatic': elif evaluationMode == 'automatic':
warnings.warn('Skipping automatic event %s' %(publicID)) logging.warning('Skipping automatic event {id}'.format(id=publicID))
else: else:
logging.info('Processing event {id}'.format(id=publicID))
try: try:
location = geolocator.reverse("{lat}, {lng}".format(lat=lat, lng=lng)) locations = reverse_geolocate("{lat:.3f}, {lng:.3f}".format(lat=lat, lng=lng),exactly_one=False,limit=5)
except: except GeocoderServiceError:
warnings.warn('Reverse Geolocation failed. Skipping event.') logging.warning('Reverse Geolocation failed. Skipping event.')
sleep(1.1)
continue continue
place = [] place = []
try: for location in locations:
place = location.raw['properties']['city']
except KeyError:
try: try:
place = location.raw['properties']['town'] place = location.raw['properties']['city']
except KeyError: except KeyError:
try: try:
place = location.raw['properties']['village'] place = location.raw['properties']['town']
except KeyError: except KeyError:
try: try:
place = location.raw['properties']['county'] place = location.raw['properties']['village']
except KeyError: except KeyError:
warnings.warn('Could not extract city for event {0} at {1} N / {2} E (URL: {3})'.format(publicID, lat, lng, url)) try:
warnings.warn('Sucessfully looked up location for event {0}.'.format(publicID)) place = location.raw['properties']['county']
except KeyError:
logging.debug('Could not extract city for event {id} at {lat:.3f} N / {lng:.3f} E (Service: {url}), trying next returned result'
.format(id=publicID, lat=lat, lng=lng, url=URL.format(lat=lat,lng=lng)))
logging.debug(location.raw)
if not place:
logging.critical('Could not extract city for event {id} at {lat:.3f} N / {lng:.3f} E (Service: {url})'
.format(id=publicID, lat=lat, lng=lng, url=URL.format(lat=lat,lng=lng)))
geolocationTable[publicID] = place geolocationTable[publicID] = place
sleep(1.1)
# dump json # dump json
print 'var geolocationTable = '+JSON.dumps(geolocationTable, sort_keys=True)+';' print('var geolocationTable = {0};'.format(JSON.dumps(geolocationTable, sort_keys=True)))
logging.info("processed %d events", count)
# __main__ # __main__
if __name__ == "__main__": if __name__ == "__main__":
def printline(line): # use module logging
print line import logging
# parse arguments # parse arguments
import argparse import argparse
versionText = '$Revision$ ($Date$, $Author$)'.replace('$', '').replace(':','') versionText = 'r20211017 (2021-10-17)'
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description='Reverese geocoding lookup of events in xml format (stdin).', description='Reverse geocoding lookup of events in xml format (stdin).',
epilog=versionText) epilog=versionText)
parser.add_argument('-v', '-V', '--version', action='version', parser.add_argument('-V', '--version', action='version', version=versionText,
version=versionText) help="show version")
parser.add_argument('-f', '--file', action='store', dest='file', parser.add_argument('-f', '--file', action='store', dest='file',
help='read in JSON file containing old output.') help='read in JSON file containing old output.')
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true",
help="increase output verbosity")
group.add_argument("-q", "--quiet", action="store_true",
help="disable output")
group.add_argument("-d", "--debug", action="store_true",
help="show debugging output",
)
cla = parser.parse_args() cla = parser.parse_args()
# set logging level
if cla.quiet:
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.ERROR)
elif cla.verbose:
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
elif cla.debug:
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
else:
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.WARN)
# call mkGeolocationTable(...) # call mkGeolocationTable(...)
mkGeolocationTable(file=cla.file) mkGeolocationTable(file=cla.file)

View File

@ -4,7 +4,7 @@
**********************************************************************/ **********************************************************************/
/* License /* License
Copyright 2020 Kasper D. Fischer <kasper.fischer@rub.de> Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
This program is free software: you can redistribute it and/or modify it 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 under the terms of the GNU General Public License as published by the Free
@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. with this program. If not, see http://www.gnu.org/licenses/.
$Id$ Version r20211017 (2021-10-17)
*/ */
/* adding row(s) to a table and format date strings afterwards */ /* adding row(s) to a table and format date strings afterwards */

View File

@ -4,7 +4,7 @@
**********************************************************************/ **********************************************************************/
/* License /* License
Copyright 2020 Kasper D. Fischer <kasper.fischer@rub.de> Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
This program is free software: you can redistribute it and/or modify it 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 under the terms of the GNU General Public License as published by the Free
@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. with this program. If not, see http://www.gnu.org/licenses/.
$Id$ Version r20211017 (2021-10-17)
*/ */
/* adding row(s) to a table and format date strings afterwards */ /* adding row(s) to a table and format date strings afterwards */

View File

@ -1,56 +0,0 @@
/*
* L.TileLayer.Grayscale is a regular tilelayer with grayscale makeover.
*/
L.TileLayer.Grayscale = L.TileLayer.extend({
options: {
quotaRed: 21,
quotaGreen: 71,
quotaBlue: 8,
quotaDividerTune: 0,
quotaDivider: function() {
return this.quotaRed + this.quotaGreen + this.quotaBlue + this.quotaDividerTune;
}
},
initialize: function (url, options) {
options = options || {}
options.crossOrigin = true;
L.TileLayer.prototype.initialize.call(this, url, options);
this.on('tileload', function(e) {
this._makeGrayscale(e.tile);
});
},
_createTile: function () {
var tile = L.TileLayer.prototype._createTile.call(this);
tile.crossOrigin = "Anonymous";
return tile;
},
_makeGrayscale: function (img) {
if (img.getAttribute('data-grayscaled'))
return;
img.crossOrigin = '';
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var imgd = ctx.getImageData(0, 0, canvas.width, canvas.height);
var pix = imgd.data;
for (var i = 0, n = pix.length; i < n; i += 4) {
pix[i] = pix[i + 1] = pix[i + 2] = (this.options.quotaRed * pix[i] + this.options.quotaGreen * pix[i + 1] + this.options.quotaBlue * pix[i + 2]) / this.options.quotaDivider();
}
ctx.putImageData(imgd, 0, 0);
img.setAttribute('data-grayscaled', true);
img.src = canvas.toDataURL();
}
});
L.tileLayer.grayscale = function (url, options) {
return new L.TileLayer.Grayscale(url, options);
};

View File

@ -1,20 +1,16 @@
.leaflet-control-easyPrint a { .leaflet-control-easyPrint-button a {
background:#fff url(print.png) no-repeat 5px; background:#fff url(external/easyPrint/print.png) no-repeat 5px;
background-size:16px 16px; background-size:16px 16px;
display: block; display: block;
}
@media print {
html {padding: 0px!important;}
.leaflet-control-easyPrint-button{display: none!important;}
} }
#map { //@media print {
html {padding: 0px!important;}
.leaflet-control-easyPrint-button{display: none!important;}
}
//#map {
width: 1200; width: 1200;
height: 800; height: 800;
} }

View File

@ -1,3 +0,0 @@
/*! sprintf-js v1.1.2 | Copyright (c) 2007-present, Alexandru Mărășteanu <hello@alexei.ro> | BSD-3-Clause */
!function(){"use strict";var g={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function y(e){return function(e,t){var r,n,i,s,a,o,p,c,l,u=1,f=e.length,d="";for(n=0;n<f;n++)if("string"==typeof e[n])d+=e[n];else if("object"==typeof e[n]){if((s=e[n]).keys)for(r=t[u],i=0;i<s.keys.length;i++){if(null==r)throw new Error(y('[sprintf] Cannot access property "%s" of undefined value "%s"',s.keys[i],s.keys[i-1]));r=r[s.keys[i]]}else r=s.param_no?t[s.param_no]:t[u++];if(g.not_type.test(s.type)&&g.not_primitive.test(s.type)&&r instanceof Function&&(r=r()),g.numeric_arg.test(s.type)&&"number"!=typeof r&&isNaN(r))throw new TypeError(y("[sprintf] expecting number but found %T",r));switch(g.number.test(s.type)&&(c=0<=r),s.type){case"b":r=parseInt(r,10).toString(2);break;case"c":r=String.fromCharCode(parseInt(r,10));break;case"d":case"i":r=parseInt(r,10);break;case"j":r=JSON.stringify(r,null,s.width?parseInt(s.width):0);break;case"e":r=s.precision?parseFloat(r).toExponential(s.precision):parseFloat(r).toExponential();break;case"f":r=s.precision?parseFloat(r).toFixed(s.precision):parseFloat(r);break;case"g":r=s.precision?String(Number(r.toPrecision(s.precision))):parseFloat(r);break;case"o":r=(parseInt(r,10)>>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}g.json.test(s.type)?d+=r:(!g.number.test(s.type)||c&&!s.sign?l="":(l=c?"+":"-",r=r.toString().replace(g.sign,"")),o=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",p=s.width-(l+r).length,a=s.width&&0<p?o.repeat(p):"",d+=s.align?l+r+a:"0"===o?l+a+r:a+l+r)}return d}(function(e){if(p[e])return p[e];var t,r=e,n=[],i=0;for(;r;){if(null!==(t=g.text.exec(r)))n.push(t[0]);else if(null!==(t=g.modulo.exec(r)))n.push("%");else{if(null===(t=g.placeholder.exec(r)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){i|=1;var s=[],a=t[2],o=[];if(null===(o=g.key.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(s.push(o[1]);""!==(a=a.substring(o[0].length));)if(null!==(o=g.key_access.exec(a)))s.push(o[1]);else{if(null===(o=g.index_access.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");s.push(o[1])}t[2]=s}else i|=2;if(3===i)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return p[e]=n}(e),arguments)}function e(e,t){return y.apply(null,[e].concat(t||[]))}var p=Object.create(null);"undefined"!=typeof exports&&(exports.sprintf=y,exports.vsprintf=e),"undefined"!=typeof window&&(window.sprintf=y,window.vsprintf=e,"function"==typeof define&&define.amd&&define(function(){return{sprintf:y,vsprintf:e}}))}();
//# sourceMappingURL=sprintf.min.js.map

File diff suppressed because one or more lines are too long

View File

@ -13,16 +13,15 @@
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/jquery.tablesorter.pager.min.css" integrity="sha512-TWYBryfpFn3IugX13ZCIYHNK3/2sZk3dyXMKp3chZL+0wRuwFr1hDqZR9Qd5SONzn+Lja10hercP2Xjuzz5O3g==" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/jquery.tablesorter.pager.min.css" integrity="sha512-TWYBryfpFn3IugX13ZCIYHNK3/2sZk3dyXMKp3chZL+0wRuwFr1hDqZR9Qd5SONzn+Lja10hercP2Xjuzz5O3g==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/css/dvf.min.css" integrity="sha512-Ts/IYE5D8PaMBUDHcf6O57lOiV923cai3sEXo0WjhakpTxlwodQQJx1YA2t1mDUKO6fIXEngkKFLQNMXK/kBZg==" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/css/dvf.min.css" integrity="sha512-Ts/IYE5D8PaMBUDHcf6O57lOiV923cai3sEXo0WjhakpTxlwodQQJx1YA2t1mDUKO6fIXEngkKFLQNMXK/kBZg==" crossorigin="anonymous" />
<link type="text/css" rel="stylesheet" href="https://api.mqcdn.com/sdk/mapquest-js/v1.3.2/mapquest.css"/>
<link rel="stylesheet" href="external/easyPrint/easyPrint.css"/>
<!-- jQuery & jQueryUI --> <!-- jQuery & jQueryUI -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<!-- Localtime & sprintf --> <!-- Localtime, sprintf, showdown -->
<script type="text/javascript" src="external/jquery.localtime-0.9.1.min.js"></script> <!-- current 2020-07-15 --> <script type="text/javascript" src="external/jquery.localtime-0.9.1.min.js"></script> <!-- current 2020-07-15 -->
<script type="text/javascript" src="external/sprintf.min.js"></script> <!-- version 1.1.2 downloaded 2020-07-15 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/sprintf/1.1.2/sprintf.min.js" integrity="sha512-pmG0OkYtZVB2EqETE5HPsEaok7sNZFfStp5rNdpHv0tGQjbt1z8Qjzhtx88/4wsttOtDwq5DZGJyKyzEe7ribg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js" integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw==" crossorigin="anonymous"></script>
<!-- Tablesorter --> <!-- Tablesorter -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.min.js" integrity="sha512-qzgd5cYSZcosqpzpn7zF2ZId8f/8CHmFKZ8j7mU4OUXTNRd5g+ZHBPsgKEwoqxCtdQvExE5LprwwPAgoicguNg==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.min.js" integrity="sha512-qzgd5cYSZcosqpzpn7zF2ZId8f/8CHmFKZ8j7mU4OUXTNRd5g+ZHBPsgKEwoqxCtdQvExE5LprwwPAgoicguNg==" crossorigin="anonymous"></script>
@ -33,10 +32,9 @@
<!-- Leaflet --> <!-- Leaflet -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin="anonymous"></script>
<!-- <script type="text/javascript" src="external/TileLayer.Grayscale.js"></script> --> <! version of 2017-11-01 downloaded 2020-07-15 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/leaflet-dvf.markers.min.js" integrity="sha512-R/iucaxFnDFUTdZRxUvxzc+sypDQhqnxInBmNjgGE0RaiMl/ektVB1wFS/L0xDZmLFPpEGR0Kw3GEBgtQNFHyg==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/leaflet-dvf.markers.min.js" integrity="sha512-R/iucaxFnDFUTdZRxUvxzc+sypDQhqnxInBmNjgGE0RaiMl/ektVB1wFS/L0xDZmLFPpEGR0Kw3GEBgtQNFHyg==" crossorigin="anonymous"></script>
<script src="external/jQuery.print.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-providers/1.10.1/leaflet-providers.min.js" integrity="sha512-Ifxj89Ujg72gC/psKB9ystryRYiopmDud2EmNTKC9kz192aQwDKVK1FzWsyPc37tgU0UmRQlNnBM++ZnwIXJ9Q==" crossorigin="anonymous"></script>
<script src="external/easyPrint/bundle.js"></script> <script src="https://cdn.jsdelivr.net/npm/leaflet.browser.print@1.0.5/dist/leaflet.browser.print.min.js" integrity="sha256-1MQvHEnVXSKwR+XIVswRSBla/B5ohkp5+HJtritIkgE=" crossorigin="anonymous"></script>
<!-- Map, Events & Stations --> <!-- Map, Events & Stations -->
<script type="text/javascript" src="misc.js"></script> <script type="text/javascript" src="misc.js"></script>
@ -156,20 +154,19 @@
<p class="table-caption">Download als <a id="stations-csv-link" href="link" download="stations.csv">CSV-Datei</a>.</p> <p class="table-caption">Download als <a id="stations-csv-link" href="link" download="stations.csv">CSV-Datei</a>.</p>
</div> </div>
<!-- More --> <!-- More -->
<div class="tab" id="moretab"><!--include virtual="more.html.de" --></div> <div class="tab more_de" id="moretab">
<p>Text wird geladen ...</p>
</div>
<!-- Info --> <!-- Info -->
<div class="tab" id="infotab"> <div class="tab" id="infotab">
<div id="infoaccordion"> <div id="infoaccordion">
<h3 class="aheader">Navigation / Links</h3> <h3 class="aheader">Navigation / Links</h3>
<!--#include virtual="info.inc.de" --> <div class="info_de"><p>Text wird geladen ...</p></div>
<h3 class="aheader">Copyright / Lizenz</h3> <h3 class="aheader">Copyright / Lizenz</h3>
<!--#include virtual="copyright.inc.de" --> <div class="copyright_de"><p>Text wird geladen ...</p></div>
<h3 class="aheader">Impressum</h3> <h3 class="aheader">Impressum</h3>
<!--#include virtual="impressum.inc.de" --> <div class="imprint_de"><p>Text wird geladen ...</p></div>
<div> </div>
</div>
</div>
</div> </div>
</div> </div>
<!-- Logo --> <!-- Logo -->

View File

@ -13,16 +13,15 @@
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/jquery.tablesorter.pager.min.css" integrity="sha512-TWYBryfpFn3IugX13ZCIYHNK3/2sZk3dyXMKp3chZL+0wRuwFr1hDqZR9Qd5SONzn+Lja10hercP2Xjuzz5O3g==" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/jquery.tablesorter.pager.min.css" integrity="sha512-TWYBryfpFn3IugX13ZCIYHNK3/2sZk3dyXMKp3chZL+0wRuwFr1hDqZR9Qd5SONzn+Lja10hercP2Xjuzz5O3g==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/css/dvf.min.css" integrity="sha512-Ts/IYE5D8PaMBUDHcf6O57lOiV923cai3sEXo0WjhakpTxlwodQQJx1YA2t1mDUKO6fIXEngkKFLQNMXK/kBZg==" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/css/dvf.min.css" integrity="sha512-Ts/IYE5D8PaMBUDHcf6O57lOiV923cai3sEXo0WjhakpTxlwodQQJx1YA2t1mDUKO6fIXEngkKFLQNMXK/kBZg==" crossorigin="anonymous" />
<link type="text/css" rel="stylesheet" href="https://api.mqcdn.com/sdk/mapquest-js/v1.3.2/mapquest.css"/>
<link rel="stylesheet" href="external/easyPrint/easyPrint.css"/>
<!-- jQuery & jQueryUI --> <!-- jQuery & jQueryUI -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<!-- Localtime & sprintf --> <!-- Localtime, sprintf, showdown -->
<script type="text/javascript" src="external/jquery.localtime-0.9.1.min.js"></script> <!-- current 2020-07-15 --> <script type="text/javascript" src="external/jquery.localtime-0.9.1.min.js"></script> <!-- current 2020-07-15 -->
<script type="text/javascript" src="external/sprintf.min.js"></script> <!-- version 1.1.2 downloaded 2020-07-15 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/sprintf/1.1.2/sprintf.min.js" integrity="sha512-pmG0OkYtZVB2EqETE5HPsEaok7sNZFfStp5rNdpHv0tGQjbt1z8Qjzhtx88/4wsttOtDwq5DZGJyKyzEe7ribg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js" integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw==" crossorigin="anonymous"></script>
<!-- Tablesorter --> <!-- Tablesorter -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.min.js" integrity="sha512-qzgd5cYSZcosqpzpn7zF2ZId8f/8CHmFKZ8j7mU4OUXTNRd5g+ZHBPsgKEwoqxCtdQvExE5LprwwPAgoicguNg==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.min.js" integrity="sha512-qzgd5cYSZcosqpzpn7zF2ZId8f/8CHmFKZ8j7mU4OUXTNRd5g+ZHBPsgKEwoqxCtdQvExE5LprwwPAgoicguNg==" crossorigin="anonymous"></script>
@ -33,10 +32,9 @@
<!-- Leaflet --> <!-- Leaflet -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin="anonymous"></script>
<!-- <script type="text/javascript" src="external/TileLayer.Grayscale.js"></script> --> <! version of 2017-11-01 downloaded 2020-07-15 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/leaflet-dvf.markers.min.js" integrity="sha512-R/iucaxFnDFUTdZRxUvxzc+sypDQhqnxInBmNjgGE0RaiMl/ektVB1wFS/L0xDZmLFPpEGR0Kw3GEBgtQNFHyg==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/leaflet-dvf.markers.min.js" integrity="sha512-R/iucaxFnDFUTdZRxUvxzc+sypDQhqnxInBmNjgGE0RaiMl/ektVB1wFS/L0xDZmLFPpEGR0Kw3GEBgtQNFHyg==" crossorigin="anonymous"></script>
<script src="external/jQuery.print.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-providers/1.10.1/leaflet-providers.min.js" integrity="sha512-Ifxj89Ujg72gC/psKB9ystryRYiopmDud2EmNTKC9kz192aQwDKVK1FzWsyPc37tgU0UmRQlNnBM++ZnwIXJ9Q==" crossorigin="anonymous"></script>
<script src="external/easyPrint/bundle.js"></script> <script src="https://cdn.jsdelivr.net/npm/leaflet.browser.print@1.0.5/dist/leaflet.browser.print.min.js" integrity="sha256-1MQvHEnVXSKwR+XIVswRSBla/B5ohkp5+HJtritIkgE=" crossorigin="anonymous"></script>
<!-- Map, Events & Stations --> <!-- Map, Events & Stations -->
<script type="text/javascript" src="misc.js"></script> <script type="text/javascript" src="misc.js"></script>
@ -156,20 +154,19 @@
<p class="table-caption">Download as <a id="stations-csv-link" href="link" download="stations.csv">CSV file</a>.</p> <p class="table-caption">Download as <a id="stations-csv-link" href="link" download="stations.csv">CSV file</a>.</p>
</div> </div>
<!-- More --> <!-- More -->
<div class="tab" id="moretab"><!--include virtual="more.html.de" --></div> <div class="tab more_en" id="moretab">
<p>Text loading ...</p>
</div>
<!-- Info --> <!-- Info -->
<div class="tab" id="infotab"> <div class="tab" id="infotab">
<div id="infoaccordion"> <div id="infoaccordion">
<h3 class="aheader">Navigation / Links</h3> <h3 class="aheader">Navigation / Links</h3>
<!--#include virtual="info.inc.de" --> <div class="info_en"><p>Text loading ...</p></div>
<h3 class="aheader">Copyright / License</h3> <h3 class="aheader">Copyright / Lizenz</h3>
<!--#include virtual="copyright.inc.de" --> <div class="copyright_en"><p>Text loading ...</p></div>
<h3 class="aheader">Imprint</h3> <h3 class="aheader">Imprint</h3>
<!--#include virtual="impressum.inc.de" --> <div class="imprint_en"><p>Text loading ...</p></div>
<div> </div>
</div>
</div>
</div> </div>
</div> </div>
<!-- Logo --> <!-- Logo -->

View File

@ -18,4 +18,5 @@
<ul> <ul>
<li>Homepage der <a class="extern" target="_blank" href="http://www.rag.de">RAG</a></li> <li>Homepage der <a class="extern" target="_blank" href="http://www.rag.de">RAG</a></li>
<li><a class="extern" target="_blank" href="http://www.bid.rag.de">Bürgerinformationssystem</a> der RAG</li> <li><a class="extern" target="_blank" href="http://www.bid.rag.de">Bürgerinformationssystem</a> der RAG</li>
</ul>
</div> </div>

View File

@ -4,7 +4,7 @@
**********************************************************************/ **********************************************************************/
/* License /* License
Copyright 2020 Kasper D. Fischer <kasper.fischer@rub.de> Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
This program is free software: you can redistribute it and/or modify it 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 under the terms of the GNU General Public License as published by the Free
@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program. If not, see https://www.gnu.org/licenses/. with this program. If not, see https://www.gnu.org/licenses/.
$Id$ Version r20211017 (2021-10-17)
*/ */
/* add station marker */ /* add station marker */
@ -140,39 +140,27 @@ function initMapLink() {
$(document).ready(function() { $(document).ready(function() {
// create a map in the "map" div, set the view to a given place and zoom // create a map in the "map" div, set the view to a given place and zoom
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']);
// create baselayer // create baselayer
switch ( config['map']['baselayer'] ) { switch ( config['map']['baselayer'] ) {
case 'esrigray': // add ESRI Grayscale World Map (neither city nor road names) case 'esrigray': // add ESRI Grayscale World Map (neither city nor road names)
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); L.tileLayer.provider('Esri.WorldGrayCanvas').addTo(map);
L.tileLayer('//server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}',
{
attribution: 'Tiles &copy; Esri &mdash; Esri, DeLorme, NAVTEQ',
maxZoom: 16
}).addTo(map);
break; break;
case 'aerial': // add ESRI WordImagery tile layer case 'aerial': // add ESRI WordImagery tile layer
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); L.tileLayer.provider('Esri.WorldImagery').addTo(map);
L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', break;
{ case 'opentopo': // add OpenTopoMap tile layer
attribution: 'Tiles &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' L.tileLayer.provider('OpenTopoMap').addTo(map);
}).addTo(map);
break; break;
case 'opentopo': // add OpenTopoMap tile layer https://opentopomap.org/
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']);
L.tileLayer('https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png',
{
attribution: 'Kartendaten: &copy; <a href="https://openstreetmap.org">OpenStreetMap</a> contributors, SRTM | Kartendarstellung: &copy; <a href="http://opentopomap.org/">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>)'
}).addTo(map);
break;
case 'osmde': // add OpenStreetMap.DE tile layer, default case 'osmde': // add OpenStreetMap.DE tile layer, default
null; L.tileLayer.provider('OpenStreetMap.DE').addTo(map);
default: break;
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); case 'mapnik': // add OpenStreetMap.Mapni tile layer
L.tileLayer('https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', L.tileLayer.provider('OpenStreetMap.Mapnik').addTo(map);
{ break;
attribution: '&copy; <a href="https://openstreetmap.org">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>', default: // use OpenStreetMap.DE as default
}).addTo(map); L.tileLayer.provider(config['map']['baselayer']).addTo(map);
}; };
// add controls // add controls
@ -218,5 +206,8 @@ $(document).ready(function() {
}); });
// print icon // print icon
L.easyPrint().addTo(map); L.control.browserPrint({
title: 'print map',
position: 'topright',
}).addTo(map);
}); });

View File

@ -4,7 +4,7 @@
**********************************************************************/ **********************************************************************/
/* License /* License
Copyright 2020 Kasper D. Fischer <kasper.fischer@rub.de> Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
This program is free software: you can redistribute it and/or modify it 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 under the terms of the GNU General Public License as published by the Free
@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program. If not, see https://www.gnu.org/licenses/. with this program. If not, see https://www.gnu.org/licenses/.
$Id$ Version r20211017 (2021-10-17)
*/ */
/* add station marker */ /* add station marker */
@ -140,39 +140,27 @@ function initMapLink() {
$(document).ready(function() { $(document).ready(function() {
// create a map in the "map" div, set the view to a given place and zoom // create a map in the "map" div, set the view to a given place and zoom
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']);
// create baselayer // create baselayer
switch ( config['map']['baselayer'] ) { switch ( config['map']['baselayer'] ) {
case 'esrigray': // add ESRI Grayscale World Map (neither city nor road names) case 'esrigray': // add ESRI Grayscale World Map (neither city nor road names)
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); L.tileLayer.provider('Esri.WorldGrayCanvas').addTo(map);
L.tileLayer('//server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}',
{
attribution: 'Tiles &copy; Esri &mdash; Esri, DeLorme, NAVTEQ',
maxZoom: 16
}).addTo(map);
break; break;
case 'aerial': // add ESRI WordImagery tile layer case 'aerial': // add ESRI WordImagery tile layer
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); L.tileLayer.provider('Esri.WorldImagery').addTo(map);
L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', break;
{ case 'opentopo': // add OpenTopoMap tile layer
attribution: 'Tiles &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' L.tileLayer.provider('OpenTopoMap').addTo(map);
}).addTo(map);
break; break;
case 'opentopo': // add OpenTopoMap tile layer https://opentopomap.org/
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']);
L.tileLayer('https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png',
{
attribution: 'Kartendaten: &copy; <a href="https://openstreetmap.org">OpenStreetMap</a> contributors, SRTM | Kartendarstellung: &copy; <a href="http://opentopomap.org/">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>)'
}).addTo(map);
break;
case 'osmde': // add OpenStreetMap.DE tile layer, default case 'osmde': // add OpenStreetMap.DE tile layer, default
null; L.tileLayer.provider('OpenStreetMap.DE').addTo(map);
default: break;
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); case 'mapnik': // add OpenStreetMap.Mapni tile layer
L.tileLayer('https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', L.tileLayer.provider('OpenStreetMap.Mapnik').addTo(map);
{ break;
attribution: '&copy; <a href="https://openstreetmap.org">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>', default: // use OpenStreetMap.DE as default
}).addTo(map); L.tileLayer.provider(config['map']['baselayer']).addTo(map);
}; };
// add controls // add controls
@ -218,5 +206,8 @@ $(document).ready(function() {
}); });
// print icon // print icon
L.easyPrint().addTo(map); L.control.browserPrint({
title: 'print map',
position: 'topright',
}).addTo(map);
}); });

View File

@ -4,7 +4,7 @@
**********************************************************************/ **********************************************************************/
/* License /* License
Copyright 2020 Kasper D. Fischer <kasper.fischer@rub.de> Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
This program is free software: you can redistribute it and/or modify it 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 under the terms of the GNU General Public License as published by the Free
@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. with this program. If not, see http://www.gnu.org/licenses/.
$Id$ Version r20211017 (2021-10-17)
*/ */
/* calculate marker radius from magnitude /* calculate marker radius from magnitude
@ -113,6 +113,7 @@ var config = {
centerDefault: [51.85, 7.0], centerDefault: [51.85, 7.0],
timespan: 180, timespan: 180,
latlngDelta: 0.1, latlngDelta: 0.1,
baselayer: 'OpenStreetMap.DE',
}, },
station: { station: {
markerColor: 'darkgreen', markerColor: 'darkgreen',
@ -136,7 +137,7 @@ var config = {
}, },
tab: { tab: {
active: 0, active: 0,
disabled: [2], // disabled: [2],
max: 4, max: 4,
}, },
}; };
@ -222,4 +223,24 @@ $(document).ready(function() {
}).on("ajaxStop", function() { }).on("ajaxStop", function() {
$("#spinner").hide(); $("#spinner").hide();
}); });
// load more tab content
$.get("more_de.md", function( data ) {
var converter = new showdown.Converter();
$('.more_de').html(converter.makeHtml(data));
});
$.get("more_en.md", function( data ) {
var converter = new showdown.Converter();
$('.more_en').html(converter.makeHtml(data));
});
// load info tab content
$.get("info.inc.de", function( data ) {
$('.info_de, .info_en').html(data);
});
$.get("copyright.inc.de", function( data ) {
$('.copyright_de, .copyright_en').html(data);
});
$.get("impressum.inc.de", function( data ) {
$('.imprint_de, .imprint_en').html(data);
});
}); });

View File

@ -1 +0,0 @@
Das seismologische Netz der Ruhr-Universität besteht aus 13 Stationen. Zwei breitbandige Stationen (BUG und IBBN) sind gleichzeitig Bestandteil des Deutschen Seismologischen Regionalnetzes (GRSN). Sie befinden sich in der Nähe der Ruhr-Universität in einem stillgelegten Stollen der Zeche Klosterbusch bzw. bei Ibbenbüren. Weitere Außenstationen gibt es bei Rheinberg (BRHE) und Hünxe (ZERL, westliches Ruhrgebiet), bei Haltern (BAVN, nörldiches Ruhrgebiet) und Hamm (HMES, östliches Ruhrgebiet). In Ibbenbüren ergänzen die kurzperiodischen Stationen IBBE und IBBS das Stationsnetz. Im Bereich der Ruhr-Universität werden weiterhin 5 kurzperiodische Stationen (BTEZ, BSHA, BKLB, BHOF, BULI) betrieben, die zur Ortung von Ereignissen im Ruhrgebiet verwendet werden. Das von den Seismometern registrierte Messsignal wird an den Stationen digitalisiert und kontinuierlich an die Auswertezentrale an der Ruhr-Universität Bochum übertragen.

9
www/more_de.md Normal file
View File

@ -0,0 +1,9 @@
# Seismologisches Observatorium
## Stationsnetz
Das seismologische Observatorium der Ruhr-Universität Bochum betreibt mehrere seismologische Stationen im Ruhrgebiet, im Raum Ibbenbüren und im Alpenvorland. Zwei breitbandige Stationen (BUG und IBBN) sind gleichzeitig Bestandteil des Deutschen Seismologischen Regionalnetzes (GRSN). Sie befinden sich in der Nähe der Ruhr-Universität in einem stillgelegten Stollen der Zeche Klosterbusch bzw. bei Ibbenbüren.
## Seismologische Netzwerke
### RuhrNet (RN)
### FloodRisk (YD)
### AlpArray (Z3)

9
www/more_en.md Normal file
View File

@ -0,0 +1,9 @@
# Seismological Observatory
## Station Network
The seismological observatory of the Ruhr-University Bochum (Germany) maintains several seismolocical stations in the Ruhr area, around Ibbenbueren and in the foreland of the Alps. Two broadband stations (BUG and IBBN) are also part of the German Regional Seismological Network (GRSN). These are located near the Ruhr-University in an abandoned coal mine and near the city of Ibbenbueren.
## Seismological Networks
### RuhrNet (RN)
### FloodRisk (YD)
### AlpArray (Z3)

View File

@ -4,7 +4,7 @@
**********************************************************************/ **********************************************************************/
/* License /* License
Copyright 2020 Kasper D. Fischer <kasper.fischer@rub.de> Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
This program is free software: you can redistribute it and/or modify it 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 under the terms of the GNU General Public License as published by the Free
@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. with this program. If not, see http://www.gnu.org/licenses/.
$Id$ Version r20211017 (2021-10-17)
*/ */
/* Load the stations using ajax */ /* Load the stations using ajax */

View File

@ -4,7 +4,7 @@
**********************************************************************/ **********************************************************************/
/* License /* License
Copyright 2020 Kasper D. Fischer <kasper.fischer@rub.de> Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
This program is free software: you can redistribute it and/or modify it 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 under the terms of the GNU General Public License as published by the Free
@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. with this program. If not, see http://www.gnu.org/licenses/.
$Id$ Version r20211017 (2021-10-17)
*/ */
/* Load the stations using ajax */ /* Load the stations using ajax */