Real-time Crowd-sourced Detection of Earthquakes

The European-Mediterranean Seismological Centre publishes up to date earthquake information from around the world. However, for several years, we have been able to detect many important earthquakes earlier than the seismic networks! After an earthquake, people affected often rapidly arrive on our website or use our app, this causes a peak in internet traffic that our customised traffic monitoring system detects.

When a peak is detected, our website and app respond by requesting our users to complete a questionnaire if they have felt an earthquake. Each peak is also analyzed to estimate its epicentre and start time, whereupon the system starts trying to associate the peak with a seismically detected earthquake. If an association is obtained, this earthquake is given special status by our website since we can be sure that it has been felt by the public (most earthquakes are only felt by a few people). This system helps us improve our site’s responsivity and hence our connection with the public.

The system consists of a collection of python processes linked via RabbitMQ. RabbitMQ is a messaging server that creates a queue of messages for each process to consume. We use the pika library to interact with RabbitMQ from python, each process is an actor in the RMQ network.

Users are localized via their IP or mobile phone geolocation. Peaks are localized using a clustering algorithm. This allows us to create maps of activity, which is done using GMT (via gmtpy - GMT is a mapping software popular in the seismic community).

Data and results are also persisted to a postgresql database using the sqlalchemy toolkit. A realtime display of the postgresql data is accomplished using Grafana via a customization of the graphite-api application.

This talk will give an overview of our system’s operation and details on its technical implementation.