Adding Licensing information, using warnings for warnings, using county if city is not available.
This commit is contained in:
parent
a38905569c
commit
19dc9b75c5
Notes:
subgit
2018-03-07 17:58:46 +01:00
r607 www/trunk
@ -1,16 +1,34 @@
|
|||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# $Id$
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
Script to lookup city names of events with Nominatim service
|
Script to lookup city names of events with Nominatim service
|
||||||
|
|
||||||
The input should be an valid quakeML file passed to stdin.
|
The input should be an valid quakeML file passed to stdin.
|
||||||
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 regulary keep the total number of all
|
||||||
AJAX calls to the Nominatim service small
|
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
|
||||||
|
|
||||||
|
License
|
||||||
|
Copyright 2014 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$
|
||||||
'''
|
'''
|
||||||
|
|
||||||
# imports
|
# imports
|
||||||
@ -19,6 +37,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
from sys import stdin
|
from sys import stdin
|
||||||
|
import warnings
|
||||||
import urllib2 as URL
|
import urllib2 as URL
|
||||||
import json as JSON
|
import json as JSON
|
||||||
|
|
||||||
@ -29,9 +48,12 @@ namespaces = {'sc3': 'http://geofon.gfz-potsdam.de/ns/seiscomp3-schema/0.7',
|
|||||||
# initialise variables
|
# initialise variables
|
||||||
geolocationTable = {};
|
geolocationTable = {};
|
||||||
|
|
||||||
|
def simple_warning(message, category, filename, lineno, file=None, line=None):
|
||||||
|
return 'Warning: %s\n' % (message)
|
||||||
|
warnings.formatwarning = simple_warning
|
||||||
|
|
||||||
# parse event.xml
|
# parse event.xml
|
||||||
DOM = ET.parse(stdin).getroot()
|
DOM = ET.parse(stdin).getroot()
|
||||||
#DOM = ET.parse('../www/event.xml').getroot()
|
|
||||||
|
|
||||||
# iterate over all events
|
# iterate over all events
|
||||||
for event in DOM.iterfind('qml:eventParameters/qml:event', namespaces):
|
for event in DOM.iterfind('qml:eventParameters/qml:event', namespaces):
|
||||||
@ -43,8 +65,12 @@ for event in DOM.iterfind('qml:eventParameters/qml:event', namespaces):
|
|||||||
response = URL.urlopen(url)
|
response = URL.urlopen(url)
|
||||||
if ( response.msg == 'OK' ):
|
if ( response.msg == 'OK' ):
|
||||||
data = JSON.loads(response.read())
|
data = JSON.loads(response.read())
|
||||||
|
try:
|
||||||
try:
|
try:
|
||||||
city = data['address']['city']
|
city = data['address']['city']
|
||||||
|
except:
|
||||||
|
warnings.warn('Using county instead of city for event {0} at {1} N / {2} E (URL: {3})'.format(publicID, lat, lng, url))
|
||||||
|
city = data['address']['county']
|
||||||
country = data['address']['country']
|
country = data['address']['country']
|
||||||
countryCode = data['address']['country_code'].upper()
|
countryCode = data['address']['country_code'].upper()
|
||||||
value = city
|
value = city
|
||||||
@ -52,10 +78,8 @@ for event in DOM.iterfind('qml:eventParameters/qml:event', namespaces):
|
|||||||
value = '{0} ({1})'.format(value, countryCode)
|
value = '{0} ({1})'.format(value, countryCode)
|
||||||
geolocationTable[publicID] = value
|
geolocationTable[publicID] = value
|
||||||
except:
|
except:
|
||||||
print 'Could not etract city for event {0}'.format(publicID)
|
warnings.warn('Could not extract city for event {0} at {1} N / {2} E (URL: {3})'.format(publicID, lat, lng, url))
|
||||||
else:
|
else:
|
||||||
print 'Request {0} failed'.format(url)
|
warnings.warn('Request {0} failed'.format(url))
|
||||||
# dump json
|
# dump json
|
||||||
print 'var geolocationTable = '+JSON.dumps(geolocationTable)
|
print 'var geolocationTable = '+JSON.dumps(geolocationTable)+';'
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user