{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 0. Download seismograms\n", "\n", "This tutorial illustrates how to use `beampower` to detect and locate earthquakes with the backprojection technique. For the sake of simplicity and because the focus is on explaining how to use the code rather than providing detailed guidance into earthquake detection, this tutorial implements very rudimentary methodology. See the discussion at the of [notebook #3](3_beampower.ipynb) to further build upon the tutorial.\n", "\n", "The example dataset consists of one day of data from eight broadband, 3-component seismic stations in the North Anatolian Fault Zone.\n", "\n", "In the present notebook, we download the continuous dataset and save it for later use. We process the recordings from 2012-07-26 when several small magnitude earthquakes occurred underneath the station array used here.\n", "\n", "\n", "> **Note:** this notebook uses `mass_downloader` of `obspy` to find and download the data from the IRIS data center. The download duration can vary depending on your location, do not hesitate to consider another dataset that would suit you better. \n", "A more extensive tutorial about the mass downloader is available in the [obspy documentation](https://docs.obspy.org/packages/autogen/obspy.clients.fdsn.mass_downloader.html).\n", "\n", "#### Dataset information\n", "\n", "| Dataset info | Value |\n", "|-|-|\n", "| Location | North Anatolian Fault Zone |\n", "| Number of stations | 8 |\n", "| Number of files | 24 |\n", "| File size (HH) | 17 MB |\n", "| File size (BH) | 8 MB |\n", "| Download duration | 1 minute (fastest) to 10 minutes (slowest) |\n", "| Overall disk usage | 236.5 MB |\n", "\n", "#### Contents of this notebook\n", "* [Destination path](#download-destination-path)\n", "\n", "* [Download preparation](#prepare-the-downloader)\n", "* [Download](#download)\n", "* [Show inventory on a map](#show-inventory)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import cartopy\n", "import os\n", "\n", "from matplotlib import pyplot as plt\n", "from obspy import UTCDateTime, read_inventory\n", "from obspy.clients.fdsn import mass_downloader" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download destination path\n", "\n", "By default, the package comes with a `data/` folder which can be used to store the downloaded waveforms. Please, do not include the downloaded data if you contribute to `beampower` on Github. The `.mseed` extension is included in the `.gitignore` file; if you download any other data format, please update `.gitignore` accordingly. Feel free to change it to any convenient path of your choice. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "DIRPATH_DESTINATION = \"../data/raw/\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we remove the `data/` repository in future package releases, this next cell will ensure we can still save the data." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "os.makedirs(DIRPATH_DESTINATION, exist_ok=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare the data downloader\n", "\n", "Here, we define the geographical domain and other restrictions such as data quality and temporal coverage for the data download. \n", "\n", "### Geographical domain\n", "We restrict the data download to the North Anatolian domain using the `RectangularDomain` function." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "domain = mass_downloader.RectangularDomain(\n", " minlatitude=40.60,\n", " maxlatitude=40.76,\n", " minlongitude=30.20,\n", " maxlongitude=30.44,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Temporal domain and quality restrictions\n", "\n", "We restrict the data download to the eight seismic stations on `HH` or `BH` channels with continuous data on 2013-04-23 using the `Restrictions` function." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "restrictions = mass_downloader.Restrictions(\n", " starttime=UTCDateTime(\"2012-07-26\"),\n", " endtime=UTCDateTime(\"2012-07-27\"),\n", " chunklength_in_sec=86400.0,\n", " network=\"YH\",\n", " location=\"*\",\n", " channel=\"BH*,HH*\",\n", " station=\"SAUV,SPNC,DC08,DC07,DC06,DD06,DE07,DE08\",\n", " reject_channels_with_gaps=False,\n", " minimum_length=0.0,\n", " minimum_interstation_distance_in_m=100.0,\n", " channel_priorities=[\"HH[ZNE]\", \"BH[ZNE]\"],\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download the data\n", "\n", "The download can take up to several minutes depending on your internet connection and machine. You may need to run the following cell several times to make sure all data were correctly downloaded; data requests to data centers may fail due to intermittent problems on their servers." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[2024-02-20 14:46:15,675] - obspy.clients.fdsn.mass_downloader - INFO: Initializing FDSN client(s) for IRIS.\n", "[2024-02-20 14:46:16,276] - obspy.clients.fdsn.mass_downloader - INFO: Successfully initialized 1 client(s): IRIS.\n", "[2024-02-20 14:46:16,279] - obspy.clients.fdsn.mass_downloader - INFO: Total acquired or preexisting stations: 0\n", "[2024-02-20 14:46:16,280] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Requesting reliable availability.\n", "[2024-02-20 14:46:16,499] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully requested availability (0.22 seconds)\n", "[2024-02-20 14:46:16,502] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Found 8 stations (24 channels).\n", "[2024-02-20 14:46:16,505] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Will attempt to download data from 8 stations.\n", "[2024-02-20 14:46:16,513] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Status for 24 time intervals/channels before downloading: NEEDS_DOWNLOADING\n", "[2024-02-20 14:46:25,051] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 3 channels (of 3)\n", "[2024-02-20 14:46:28,297] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 3 channels (of 3)\n", "[2024-02-20 14:46:32,791] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 3 channels (of 3)\n", "[2024-02-20 14:46:36,391] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 3 channels (of 3)\n", "[2024-02-20 14:46:40,275] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 3 channels (of 3)\n", "[2024-02-20 14:46:45,163] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 3 channels (of 3)\n", "[2024-02-20 14:47:47,617] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 1 channels (of 1)\n", "[2024-02-20 14:47:53,453] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 1 channels (of 1)\n", "[2024-02-20 14:47:57,953] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 1 channels (of 1)\n", "[2024-02-20 14:49:45,907] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded 3 channels (of 3)\n", "[2024-02-20 14:49:45,911] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Launching basic QC checks...\n", "[2024-02-20 14:49:46,119] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Downloaded 226.7 MB [1108.71 KB/sec] of data, 0.0 MB of which were discarded afterwards.\n", "[2024-02-20 14:49:46,120] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Status for 24 time intervals/channels after downloading: DOWNLOADED\n", "[2024-02-20 14:49:46,371] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded '../data/raw/YH.DC06.xml'.\n", "[2024-02-20 14:49:46,374] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded '../data/raw/YH.DC07.xml'.\n", "[2024-02-20 14:49:46,382] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded '../data/raw/YH.DC08.xml'.\n", "[2024-02-20 14:49:46,613] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded '../data/raw/YH.DE07.xml'.\n", "[2024-02-20 14:49:46,616] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded '../data/raw/YH.DD06.xml'.\n", "[2024-02-20 14:49:46,621] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded '../data/raw/YH.DE08.xml'.\n", "[2024-02-20 14:49:46,854] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded '../data/raw/YH.SPNC.xml'.\n", "[2024-02-20 14:49:46,918] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Successfully downloaded '../data/raw/YH.SAUV.xml'.\n", "[2024-02-20 14:49:46,968] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Downloaded 8 station files [2.0 MB] in 0.8 seconds [2594.82 KB/sec].\n", "[2024-02-20 14:49:46,970] - obspy.clients.fdsn.mass_downloader - INFO: ============================== Final report\n", "[2024-02-20 14:49:46,971] - obspy.clients.fdsn.mass_downloader - INFO: 0 MiniSEED files [0.0 MB] already existed.\n", "[2024-02-20 14:49:46,971] - obspy.clients.fdsn.mass_downloader - INFO: 0 StationXML files [0.0 MB] already existed.\n", "[2024-02-20 14:49:46,973] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Acquired 24 MiniSEED files [226.7 MB].\n", "[2024-02-20 14:49:46,974] - obspy.clients.fdsn.mass_downloader - INFO: Client 'IRIS' - Acquired 8 StationXML files [2.0 MB].\n", "[2024-02-20 14:49:46,975] - obspy.clients.fdsn.mass_downloader - INFO: Downloaded 228.7 MB in total.\n" ] }, { "data": { "text/plain": [ "{'IRIS': }" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Downloader instance\n", "downloader = mass_downloader.MassDownloader(providers=[\"IRIS\"])\n", "\n", "# Download\n", "downloader.download(\n", " domain,\n", " restrictions,\n", " mseed_storage=DIRPATH_DESTINATION,\n", " stationxml_storage=DIRPATH_DESTINATION,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Show inventory\n", "\n", "The following shows the locations of the seismic stations that recorded the previously requested data. The inventory contains all metadata related to a given `seed_id`. Please check [this obspy tutorial](https://docs.obspy.org/master/packages/autogen/obspy.core.inventory.inventory.Inventory.plot.html) for more information." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/ebeauce/miniconda3/envs/hy7_py310/lib/python3.10/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/10m_physical/ne_10m_coastline.zip\n", " warnings.warn(f'Downloading: {url}', DownloadWarning)\n" ] }, { "data": { "image/png": "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M3zeHYF1t03dpoyj9GxjoBJmPEx1//79+OMf/yj7l3F9fT1UKhUsLCxQXFyMvn37oqCgAMOHD5f6PPnkk+jZs6f0uK+mVFVVwd3dHcnJyYiLizP5uNXV1S0+Aiw0NBTDhg1DWloaGhoaMGzYMDzxxBPw8fFBWlpaszcsrqyshJOTEzIzM2FnZ9fscYiIiKhzqKqqwqxZs1BRUQFHR8dG+yg129zLrBXCcePGyb4RB9w5HTFgwAAsW7YMfn5+0oWThjetpqYGeXl5SE1NbXH8Dz74ANXV1dItF0w9rrnPg7WwsEBKSgqioqLMStIRERFN/obqDGpra5Gbm4vw8HBYWVl19HTaDetm3R3h0KFDslXCffv2Ydy4cQ/seJ2l7vbGuln3/TDllk1KzzYGZgVCBwcHBAQEyNrs7e3h4uIitcfHx0On08Hf3x/+/v7Q6XSws7PDrFmzpH2io6Ph6elpdM48IyMDU6dOhYuLi9nHNVdkZCRGjhyJbdu2GV0X0BQrK6su8Qezq8yzrbFuZenousePH4+AgADk5+cjKCgI48ePb5fbHnV03R2FdStLW9VtyhhKzzYGbX6r+qVLl+LXX39FTEwMrl+/jpEjRyInJ0d2ofOlS5eMbttw9uxZHD16FDk5OW09pSalpqbisccea7fjEVH3oVKpoNPpEB4eDp1Ox3tgEnVjSsg29x0IDx8+LPu1SqVCUlISkpKSTN4HAPr169fiI51aGsPc/sHBwWYdk4jobmFhYfwZQtQNKTHb8FnGRERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERAp3X4EwJSUFKpUK8fHxUpsQAklJSfDw8ICtrS1CQ0Nx+vTpZscJDQ2FSqUyekVGRsqOFRQUBAcHB7i6umLq1KkoLi6WjaPX6zFx4kR4eHggJiYGDQ0NRsfIysqS7ZOWlgYfH5/WvwlERETUbSg127Q6EObn52P79u0YMmSIrH3Dhg3YvHkztmzZgvz8fGi1WoSHh+PmzZtNjrVv3z5cuXJFep06dQpqtRrTpk2T+uTl5SE2NhZff/01cnNzUVdXh4iICNy+fVvqk5iYiKCgIBw8eBClpaXYvXu37DgajQaJiYmora1tbdlERETUTSk527QqEN66dQuzZ89Geno6nJ2dpXYhBNLS0rBixQpERUUhICAAu3btQlVVFTIzM5scr1evXtBqtdIrNzcXdnZ2sjft008/xbPPPotBgwZh6NCh2LlzJy5duoRvvvlG6nPjxg0MGjQIgwcPhq+vLyoqKmTHmTlzJioqKpCent6asomIiKibUnq2aVUgjI2NRWRkJMLCwmTtJSUl0Ov1iIiIkNpsbGwQEhKCY8eOmTx+RkYGZsyYAXt7+yb7GN6QXr16SW3Lly/H4sWLYWNjg8LCQkRHR8v2cXR0REJCApKTk2Xpm4iIiJRN6dnG0twdsrKyUFBQgPz8fKNter0eAODm5iZrd3Nzw8WLF00a//jx4zh16hQyMjKa7COEwJIlSzB69GgEBARI7YGBgbh8+TKuXbsGrVbb6L4xMTF49dVXsXnzZqxcudKkORnU1tZ26tPNhrl15jk+CKybdSsB62bdStDWdZs6jpKzjYFZgbCsrAxxcXHIycmBRqNpsp9KpZL9Wghh1NaUjIwMBAQE4NFHH22yz6JFi/Ddd9/h6NGjRtssLS2bfMOAO6k+OTkZixYtwsKFC02ak0FOTg7s7OzM2qcj5ObmdvQUOgTrVhbWrSysW1naqu6qqqoW+yg920jHMKfzN998g/LycowYMUJqq6+vx5EjR7BlyxbpmzF6vR7u7u5Sn/LycqNk3ZiqqipkZWUhOTm5yT4vvPACDhw4gCNHjuChhx4yZ/qSOXPmYNOmTVi7dq1Z38KJiIiAo6Njq47ZHmpra5Gbm4vw8HBYWVl19HTaDetm3UrAulm3ErR13ZWVlS32UXq2MTArEI4bNw4nT56Utc2bNw8DBgzAsmXL4OfnJ104OXz4cABATU0N8vLykJqa2uL4H3zwAaqrqzFnzhyjbUIIvPDCC/jwww9x+PBh+Pr6mjN1GQsLC6SkpCAqKsqsJG1lZdUl/mB2lXm2NdatLKxbWVi3srRV3aaMofRsY2BWIHRwcJCd1wYAe3t7uLi4SO3x8fHQ6XTw9/eHv78/dDod7OzsMGvWLGmf6OhoeHp6IiUlRTZWRkYGpk6dChcXF6Njx8bGIjMzEx999BEcHBykc/pOTk6wtbU1pwwAQGRkJEaOHIlt27aZlPCJiIio+2G2ucPsL5W0ZOnSpfj1118RExOD69evY+TIkcjJyYGDg4PU59KlS7CwkH/B+ezZszh69ChycnIaHffNN98EcOcmjHfbuXMnnn322VbNNTU1FY899lir9iUiIiJlUEK2ue9AePjwYdmvVSoVkpKSkJSUZPI+ANCvXz8IIZrcp7ltpmjsmMHBwfc9LhEREXUvSsw2fJYxERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREpHAMhERERkcIxEBIREREp3AMPhCkpKVCpVIiPj5fahBBISkqCh4cHbG1tERoaitOnTzc7TmhoKFQqldErMjJS6nPr1i3MmDED7u7umDFjBm7fvi1te/bZZ6FSqbB+/XrZuPv374dKpWqbYomIiKhLU2pueaCBMD8/H9u3b8eQIUNk7Rs2bMDmzZuxZcsW5OfnQ6vVIjw8HDdv3mxyrH379uHKlSvS69SpU1Cr1Zg2bZrUJy0tDT169EBOTg7s7OyQlpYmG0Oj0SA1NRXXr19v0zqJiIio61NybnlggfDWrVuYPXs20tPT4ezsLLULIZCWloYVK1YgKioKAQEB2LVrF6qqqpCZmdnkeL169YJWq5Veubm5sLOzk72xN27cQL9+/TB48GAMGDAAFRUVsjHCwsKg1WqRkpLS9gUTERFRl6X03PLAAmFsbCwiIyMRFhYmay8pKYFer0dERITUZmNjg5CQEBw7dszk8TMyMjBjxgzY29tLbYsWLcK2bdtgZWWFnTt3Ii4uTraPWq2GTqfD66+/jh9++KGVlREREVF3o/TcYvkgBs3KykJBQQHy8/ONtun1egCAm5ubrN3NzQ0XL140afzjx4/j1KlTyMjIkLX7+Pjg3LlzKC8vh5ubW6Pn2P/4xz9i2LBhWL16tdH+LamtrUVtba1Z+7Qnw9w68xwfBNbNupWAdbNuJWjruk0dp7vmFnO0eSAsKytDXFwccnJyoNFomux3b9FCCJMvkszIyEBAQAAeffRRo20WFhbQarXN7p+amoonnngCL730kknHMzCc4+/scnNzO3oKHYJ1KwvrVhbWrSxtVXdVVVWLfbpzbjFHmwfCb775BuXl5RgxYoTUVl9fjyNHjmDLli0oLi4GcCdxu7u7S30M6bglVVVVyMrKQnJycqvnOHbsWIwfPx4JCQl49tlnTd4vIiICjo6OrT7ug1ZbW4vc3FyEh4fDysqqo6fTblg361YC1s26laCt666srGyxT3fOLeZo80A4btw4nDx5UtY2b948DBgwAMuWLYOfn590ceXw4cMBADU1NcjLy0NqamqL43/wwQeorq7GnDlz7mue69evx7Bhw9CvXz+T97GysuoSfzC7yjzbGutWFtatLKxbWdqqblPG6M65xRxtHggdHBwQEBAga7O3t4eLi4vUHh8fD51OB39/f/j7+0On08HOzg6zZs2S9omOjoanp6fRN2syMjIwdepUuLi43Nc8Bw8ejNmzZ+P111+/r3GIiIio62JuueOBfKmkJUuXLsWvv/6KmJgYXL9+HSNHjkROTg4cHBykPpcuXYKFhfxL0GfPnsXRo0eRk5PTJvNYs2YNPvjggzYZi4iIiLonJeSWdgmEhw8flv1apVIhKSkJSUlJJu8DAP369YMQolVzePvtt43aevfujd9++61V4xEREVH3pMTcwmcZExERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQElG3UVhYiP/5n/+Bq6srNBoNfHx88Mwzz+DatWsAgNLSUqhUKunl7OyMsWPHIi8vTxrj2WefhUqlwvr162Vj79+/HyqVStYmhMD27dsxcuRI9OjRAz179kRgYCDS0tJQVVX14AsmImojDIRE1C2Ul5cjLCwMv/vd7/DZZ5/hzJkz2LFjB9zd3Y3C2eeff44rV64gLy8Pjo6OmDRpEkpKSqTtGo0GqampuH79erPH/NOf/oT4+Hg8+eST+PLLL1FUVISVK1fio48+Qk5OzgOpk4joQbDs6AkQEbWFY8eOobKyEm+99RYsLe/8aPP19cUTTzxh1NfFxQVarRZarRbbtm3DQw89hJycHPz1r38FAISFheH8+fNISUnBhg0bGj3eBx98gH/+85/Yv38/nnzySandx8cHU6ZMQWVl5QOokojoweAKIRF1C1qtFnV1dfjwww8hhDB5Pzs7OwBAbW2t1KZWq6HT6fD666/jhx9+aHS/f/7zn+jfv78sDBqoVCo4OTmZWQERUcdhICSiTqesrEx2rd/dr6aC1h/+8AckJCRg1qxZ+N3vfoeJEydi48aN+Omnn5o8zu3bt/H3v/8darUaISEhsm1//OMfMWzYMKxevbrRfc+dO4f+/fu3vkgiok6EgZCIOpXq6moEBQW12K+mpsaobd26ddDr9di6dSsefvhhbN26FQMGDMDJkydl/R577DH06NEDDg4O+Pe//423334bgwcPNhovNTUVu3btwvfff2+0TQhh9CUTIqKuioGQiDoVa2treHt7w8Ki8R9PhnYrK6tGt7u4uGDatGl45ZVXcObMGXh4eGDTpk2yPu+//z6+/fZbXL16FZcvX8acOXMaHWvs2LEYP348EhISjLb169cPZ86cMac0IqJOi4GQiDoVlUqFNWvWoKGhodHthnZTVuesra3Rp08f3L59W9bu5eWFPn36wMXFpcUx1q9fj3//+984duyYrH3WrFk4e/YsPvroI6N9hBCoqKhocWwios6CgZCIOp2IiAgEBQVBrVbL2tVqNR555JFG9/n4448xZ84cfPzxxzh79iyKi4uxadMmZGdnN/rFD1MNHjwYs2fPxuuvvy5rnz59Op555hnMnDkTKSkpOHHiBC5evIiPP/4YYWFh+PLLL1t9TCKi9sbbzhBRp2NYJZwwYYKsvb6+HomJiaiurjba5+GHH4adnR1eeukllJWVwcbGBv7+/njrrbfwpz/96b7ms2bNGnzwwQdGc8zMzMT27duxY8cOrF27FpaWlvD390d0dDTGjx9/X8ckImpPDIRE1CkZVgkLCgpQX18vrQ4+8cQTOHjwoFF/Pz8/bN++vdkxfXx8Wrwlzdtvv23U1rt3b/z2229G7RYWFnj++efx/PPPN18MEVEnx1PGRNQpGVYJ6+vr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Zn+ppCVLly7Fr7/+ipiYGFy/fh0jR45ETk4OHBwcpD6XLl2S0jIAeHl5IScnBy+++CKGDBkCT09PxMXFYdmyZW09PZnU1FQ89thjD/QYRERE1LUpIdvcdyA8fPiw7NcqlQpJSUlISkoyeR8ACA4Oxtdff93q47amf3BwMIQQZo1DRERE3ZsSsw2fZUxERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERERArHQEhERESkcAyERERN8PHxgUqlgkqlgq2tLXx8fDB9+nR88cUXsn6lpaVSP5VKBQcHBwwaNAixsbE4d+6c0bh5eXkYMWIENBoN/Pz8sHXrVqM+N27cQGxsLNzd3aHRaDB48GCcOHHigdVKRMrGQEhE1Izk5GRcuXIFxcXFeOedd9CzZ0+EhYVh3bp1Rn0///xzXLlyBd9++y10Oh3OnDmDoUOH4tChQ1KfkpISTJo0CWPGjEFhYSESEhKwePFi7N27V+pTU1OD8PBwlJaWYs+ePSguLsbWrVvh4uLSLjUTkfJYdvQEiIg6MwcHB2i1WgCAt7c3xo4dC3d3d6xatQpPP/00+vfvL/V1cXGR+vr5+WHy5MkYN24cFixYgP/+979Qq9XYunUrvL29kZaWBgAYOHAgTpw4gU2bNuGpp54CAOzYsQO//PILjh07BisrKwCAh4cHKioq2rFyIlISrhASEZkpLi4OQgh89NFHzfazsLBAXFwcLl68iG+++QYA8NVXXyEiIkLWb/z48Thx4gRqa2sBAAcOHEBwcDBiY2Ph5uaGgIAArF+/HvX19Q+mICJSPAZCIur2ysrKZNf43fv64YcfzBqvV69ecHV1RWlpaYt9BwwYAABSX71eDzc3N1kfNzc31NXV4dq1awCACxcuYM+ePaivr0d2djYSExORlpaGPXv2mDVPIiJT8ZQxEXVr1dXVCAoKarZPUFAQSktLYWNjY/K4QgioVCqT+gGQ9b13v3v7NDQ0wNXVFdu3b4darcaIESNQVlaGlJQUk+dHRGQOBkIi6tasra3h7e2Nq1evoqGhwWi7hYUFvLy8YG1tbfKYP//8M65evQpfX98W+545cwYApL5arRZ6vV7Wp7y8HJaWltKXRtzd3WFlZQW1Wi31GTBgAK5fv46amhrpukIiorbCU8ZE1K2pVCqsWbOm0TAI3FmNW7NmjUmrfQavvvoqLCwsMHXq1Gb7NTQ04LXXXoOvry+GDx8OAAgODkZubq6sX05ODgIDA6WgN2rUKJw/f14253PnzsHZ2dms4EpEZCoGQiLq9iIiIhAUFCRbcQMAtVqNoKAgoy953O3mzZvQ6/UoKyvDkSNH8Nxzz2Ht2rVYt24d+vbtK+v7888/Q6/X48KFCzhw4ADCwsJw/PhxZGRkSMd+/vnncfHiRSxZsgRnzpzBjh07kJGRgZdfflkaZ+HChfj5558RFxeHs2fP4pNPPkFqaiomTZrUhu8KEdH/4SljIur2DKuEEyZMkLXX19e3uDq4atUqrFq1CtbW1tBqtfjDH/6AQ4cO4fHHHzfqGxYWBgCws7ND79698fjjj2P79u2y4Ojr64vs7Gy8+OKLeOONN+Dh4YHXXntNuuUMAHh5eSEnJwcvvvgihgwZAk9PTyxatAiDBg2637eCiKhRDIREpAiGVcKCggLU19dDrVbjkUceaXZ10JRvEQN3nmhi+GKIKUJCQlBQUNBsn+DgYHz99dfSr2tra5GdnW3yMYiIzHFfp4xTUlKgUqkQHx8vtQkhkJSUBA8PD9ja2iI0NBSnT59ucax7H9M0cOBA2Q+/lJQUBAUFwcHBAa6urpg6dSqKi4tlY+j1ekycOBEeHh6IiYmRXX8TGhoKlUqFrKws2T5paWnw8fFp3RtARF2GYZXQcC8/U1YHiUh5lJptWh0I8/PzsX37dgwZMkTWvmHDBmzevBlbtmxBfn4+tFotwsPDcfPmzSbHauwxTenp6fD09JT65OXlITY2Fl9//TVyc3NRV1eHiIgI3L59W+qTmJiIoKAgHDx4EKWlpdi9e7fsOBqNBomJidLNX4lIWQyrhABavHaQiJRHydmmVYHw1q1bmD17NtLT0+Hs7Cy1CyGQlpaGFStWICoqCgEBAdi1axeqqqqQmZnZ5HiGxzTt378fo0aNQu/evTF69GgMHTpU6vPpp5/i2WefxaBBgzB06FDs3LkTly5dku7+D9xJ4oMGDcLgwYPh6+tr9JinmTNnoqKiAunp6a0pm4i6OJVKBZ1OBwDQ6XRcHSQiidKzTasCYWxsLCIjI6ULqA1KSkqg1+tl/+q2sbFBSEgIjh071uR4jT2mSafTNfuYJsMb0qtXL6lt+fLlWLx4MWxsbFBYWIjo6GjZPo6OjkhISEBycrIsfRO1Fx8fH+npGLa2tvDx8cH06dPxxRdfNNp/7969CA0NhZOTE3r06IEhQ4YgOTkZv/zyi9TnyJEjGDFiBDQaDfz8/LB161ajcVo6baEkYWFhEEIY/fwiImVTerYxOxBmZWWhoKCg0TvmG2622thjme69EevdGntM0yuvvIJ169Y12l8IgSVLlmD06NEICAiQ2gMDA3H58mWUlZXh2LFj6NGjh9G+MTEx0Gg02Lx5s0n1ErW15ORkXLlyBcXFxXjnnXfQs2dPhIWFGf1+X7FiBZ555hnpVMGpU6fwyiuv4Ntvv8W7774LAPjpp58wZcoUjBkzBoWFhUhISMDixYuxd+9eaRxTTlsQESkZs42Z3zIuKytDXFwccnJyoNFomuzX2GOZmjs109hjmn788Uds3LgRq1atMuq/aNEifPfddzh69KjRNktLS2i12iaPZWNjg+TkZCxatAgLFy5ssl9jamtrO/X1h4a5deY5PghdrW47OzvZEymCg4Ph6uqKVatW4cknn0T//v2Rn58PnU6HV155BS+88IK0r6enJ0JDQ3Hjxg3U1tbi008/hZeXFzZu3AgA6Nu3L44fP46NGzdiypQpAID09HT88ssvyMvLk2587OHhAaDrvGd362qfd1th3axbCdq6blPGUXq2kY5hTudvvvkG5eXlGDFihNRWX1+PI0eOYMuWLdI3Y/R6Pdzd3aU+5eXlRsn6bo09pmngwIHQ6/WoqamR3Zn/hRdewIEDB3DkyBE89NBD5kxfMmfOHGzatAlr164161s4OTk5sLOza9Ux29O9T0FQiq5Qd1VVFb7//nuj07UDBgyAEAIbN25EVFQU3nrrLWg0GvTu3bvZU7vFxcXw9/eX9XFxccGJEydw4MABWFpaYseOHfDy8sLUqVNx/PhxODk5YcyYMYiKijK6UXNX0hU+7weBdSsL674/VVVVLfZRerYxMCsQjhs3DidPnpS1zZs3DwMGDMCyZcvg5+cHrVaL3Nxc6TFNNTU1yMvLQ2pqapPjjho1CpmZmWhoaICFxZ2z2GfPnoW7u7v0hgkh8MILL+DDDz/E4cOHTXqGaFMsLCyQkpKCqKgos5J0REQEHB0dW33cB622tha5ubkIDw9X1LNOu1LddnZ2ePjhhxt94sTLL78MW1tbTJo0CVu3boW/v7+0yteY2tpaxMTEIDAwUDaes7Mz1q9fj6CgILi7u2Pp0qU4ffo0Zs6cic8++wznzp1DXFwc+vTpg8TExAdS54PUlT7vtsS6WbcStHXdlZWVLfZRerYxMCsQOjg4yM5rA4C9vT1cXFyk9vj4eOh0Ovj7+8Pf3x86nQ52dnaYNWuWtE90dDQ8PT2lc/ULFy7E66+/jri4OLzwwgs4d+4cdDodFi9eLO0TGxuLzMxMfPTRR3BwcJDO2zs5OcHW1tbswiMjIzFy5Ehs27at2YR/Nysrqy7xB7OrzLOttWfdZWVl8Pb2bnZ7U//KU6vVjc5TCCHbZmFhYVI9945n+NeotbU1rKysIISAq6sr3nrrLajVaowcORLl5eXYuHEj/t//+38tjt9Z8fe5srBuZWmruk0ZQ+nZxqDNn1SydOlS/Prrr4iJicH169cxcuRI5OTkwMHBQepz6dIlKS0DjT+mKS4uDsuWLZP6vPnmmwDu3ITxbjt37sSzzz7bqrmmpqbisccea9W+pFzV1dXSveyaEhQUhNLSUtjY2Jg05s8//4yrV69K/zrs168fjh49itra2mZ/oPXs2RM//fSTrK28vByWlpay6xRNPW1BRETGlJBt7jsQHj58WPZrlUqFpKQkJCUlmbwPYPyYpnuZ81goc455v+OS8lhbW8Pb2xtXr16V3THewMLCAl5eXmYFrVdffRUWFhaYOnUqAGDWrFl47bXX8I9//ANxcXFG/W/cuAF7e3v0798fn3/+uWxbTk4OAgMDpSBpymkLIiL6P0rMNvf16DoiJTI8Aq2xMAjc+WZZc49Eu3nzJvR6PcrKynDkyBE899xzWLt2LdatW4e+ffsCAEaOHImlS5fipZdewtKlS/HVV1/h4sWLOHToEKZNm4Zdu3YBACZMmIBLly5hyZIlOHPmDHbs2IGMjAy8/PLL0vEWLlyIn3/+GXFxcTh79iw++eQT6HQ6xMbGtvE7Q0REXVWbnzImUgLDI9AKCgpkNxlVq9V45JFHmn0k2qpVq7Bq1SpYW1tDq9XiD3/4Aw4dOoTHH39c1i81NRUjRozAG2+8ga1bt6KhoQF9+vTB008/jblz5wK4cx+sAwcO4G9/+xveeOMNeHh44LXXXsNTTz0ljWPKaQsiIlI2BkKiVjCsEk6YMEHWXl9f3+zqYGlpqVnHmT59OqZPn97oNsP9tcaOHYuCgoJmx2nptAURESkbTxkTtZJhldDwZQ21Wo2goKBmVweJiIg6IwZColYyrBIaThm3tDpIRETUWTEQEt0HwyohAK4OEhFRl8VASHQfVCoVdDodAECn03F1kIiIuiR+qYToPoWFhfF+lkRE1KVxhZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4RgIiYiIiBSOgZCIiIhI4Sw7egJdSWVlZUdPoVm1tbWoqqpCZWUlrKysOno67YZ1s24lYN2sWwnauu7O/vd2Z8JAaAIbGxsAgJeXVwfPhIiIiMyh1WphbW3d0dPo9FRCCNHRk+gKqqurUV1d3dHTICIiIjNYW1tDo9F09DQ6PQZCIiIiIoXjl0qIiIiIFI6BkIiIiEjhGAiJiIiIFI6BkIiIiEjhGAiJiIiIFI6BkIiIiEjhGAjbwZtvvokhQ4bA0dERjo6OCA4OxsGDB6XtQggkJSXBw8MDtra2CA0NxenTp5sdMz09HWPGjIGzszOcnZ0RFhaG48ePy/qkpKQgKCgIDg4OcHV1xdSpU1FcXCzro9frMXHiRHh4eCAmJgYNDQ3SttDQUKhUKqPX888/36nrTkpKMpqzVqvt9nXX1dUhMTERvr6+sLW1hZ+fH5KTk2W1dbW69+3bh8DAQPTs2RP29vYYNmwY3n33XVmfI0eOYPLkyfDw8IBKpcL+/fuNxumOdd8tJSUFKpUK8fHx3b5uHx+fRucdGxvbLnW3x/twt6ysLKhUKkydOlXWfuvWLcyYMQPu7u6YMWMGbt++LW179tlnG61xwoQJraqxI+ts6bhA+37e3ZqgB+7AgQPik08+EcXFxaK4uFgkJCQIKysrcerUKSGEEOvXrxcODg5i79694uTJk+KZZ54R7u7uorKysskxZ82aJd544w1RWFgozpw5I+bNmyecnJzEDz/8IPUZP3682Llzpzh16pQoKioSkZGRwtvbW9y6dUvqs2DBArFy5UpRVFQkJk6cKN577z1pW0hIiPjLX/4irly5IntVVFR06rpXr14tBg0aJJtzeXm5bJzuWPfatWuFi4uL+Pjjj0VJSYn417/+JXr06CHS0tK6bN1ffvml2Ldvn/j+++/F+fPnRVpamlCr1eLTTz+V+mRnZ4sVK1aIvXv3CgDiww8/NBqnO9ZtcPz4ceHj4yOGDBki4uLiun3d5eXlsvnm5uYKAOLLL79sl7rb430wKC0tFZ6enmLMmDHiySeflG1bs2aNWLBggfjuu+/EvHnzxNq1a6Vtc+fOFRMmTDCq8ZdffmlVjR1ZZ0vHFaJ9P+/ujIGwgzg7O4u33npLNDQ0CK1WK9avXy9t++2334STk5PYunWryePV1dUJBwcHsWvXrib7lJeXCwAiLy9PanvqqadEVlaWqK+vFzExMeKNN96QtoWEhBj9BXO/2qPu1atXi6FDhza7X3esOzIyUsyfP1/WLyoqSsyZM0f6dVevWwghhg8fLhITExvd1lQg7K5137x5U/j7+4vc3NxG6+iudd8tLi5O9OnTRzQ0NEht7V33vdrifairqxOjRo0Sb731lpg7d65RUHrppZdEamqqEEKI1NRU8be//U3a1lj/B6E96mzuuAYd/Xl3Fzxl3M7q6+uRlZWF27dvIzg4GCUlJdDr9YiIiJD62NjYICQkBMeOHTN53KqqKtTW1qJXr15N9qmoqAAAWZ/ly5dj8eLFsLGxQWFhIaKjo1tRVcvau+5z587Bw8MDvr6+mDFjBi5cuCDb3h3rHj16NA4dOoSzZ88CAL799lscPXoUkyZNkvp05bqFEDh06BCKi4sxduxYs+bTXeuOjY1FZGQkwsLCGt23u9ZtUFNTg/feew/z58+HSqWS2tur7nu15fuQnJyM3//+91iwYEGj2xctWoRt27bBysoKO3fuRFxcXJvW0pz2rLO54xp01Ofd7XRwIFWM7777Ttjb2wu1Wi2cnJzEJ598IoQQ4j//+Y8AIC5fvizr/5e//EVERESYPH5MTIzo06eP+PXXXxvd3tDQICZPnixGjx5ttK22tlZcuXLFqD0kJERYWVkJe3t72evtt982eV4dUXd2drbYs2eP+O6776SVEzc3N3Ht2rVuXXdDQ4NYvny5UKlUwtLSUqhUKqHT6Yz27Wp137hxQ9jb2wtLS0thY2MjMjIymuyLJlYIheh+de/evVsEBARIvweaWgnpbnXf7f333xdqtdroOEI82Lrv1dbvw9GjR4Wnp6e4evWqEKLpFb/6+npx5coV2eqoob9arTaqMTk5udU1dmSdTR33bu35eXdXlh2WRBWmf//+KCoqwo0bN7B3717MnTsXeXl50va7/3UL3PnX8b1tTdmwYQN2796Nw4cPN/kA70WLFuG7777D0aNHjbZZWloafenCYPbs2VixYoWszdXV1aR5AR1T98SJE6X/Hzx4MIKDg9GnTx/s2rULS5YskbZ1t7rff/99vPfee8jMzMSgQYNQVFSE+Ph4eHh4YO7cuVK/rla3g4MDioqKcOvWLRw6dAhLliyBn58fQkNDTZ4X0L3qLisrQ1xcHHJycpr8M2/Qneq+V0ZGhvRlgns9yLrv1Zbvw82bNzFnzhykp6fjd7/7XbPHtbCwaLLGxx9/HG+++aasrbkzSKboqDqbOu7DDz8s9WnPz7vb6rgsqmzjxo0Tzz33nPjvf/8rAIiCggLZ9ilTpojo6OgWx9m4caNwcnIS+fn5TfZZtGiReOihh8SFCxfMmuODuPaiPeu+W1hYmHj++edN6ttV637ooYfEli1bZG1r1qwR/fv3N2mOnbnuuy1YsKDJVQc0s0LYlK5Y94cffigACLVaLb0ACJVKJdRqtairq2txvK5Y991KS0uFhYWF2L9/v1njtcc1ZffzPhQWFhp9tiqVSvpsz58/3+Lx2+sawo6q03BcU/AaQtPxGsIOIoRAdXU1fH19odVqkZubK22rqalBXl4eHnvssWbH2LhxI9asWYNPP/0UgYGBjR5j0aJF2LdvH7744gv4+vq2eR3mao+671VdXY0zZ87A3d39vuffWu1Rd1VVFSws5H+k1Wq17BYM7a0t6m5qzM7sQdc9btw4nDx5EkVFRdIrMDAQs2fPRlFREdRqdZvWY+4c2+Pz3rlzJ1xdXREZGXnf825r9/M+DBgwwOiznTJlCh5//HEUFRXBy8urvcpoUUfV2RV+BnRFPGXcDhISEjBx4kR4eXnh5s2byMrKwuHDh/Hpp59K9w7T6XTw9/eHv78/dDod7OzsMGvWLGmM6OhoeHp6IiUlBcCd04YrV65EZmYmfHx8oNfrAQA9evRAjx49ANy54DwzMxMfffQRHBwcpD5OTk6wtbU1ae5VVVXSfgY2NjZwdnbutHW//PLLmDx5Mry9vVFeXo61a9eisrJSdtq0O9Y9efJkrFu3Dt7e3hg0aBAKCwuxefNmzJ8/v8vWnZKSgsDAQPTp0wc1NTXIzs7GO++8IzsVduvWLZw/f176dUlJCYqKitCrVy94e3t3y7odHBwQEBAgm4e9vT1cXFyM2rtT3QYNDQ3YuXMn5s6dC0tL8/8au5+6H/T7oNFojD7Dnj17AoBZn211dbVRjZaWli2enu1sdTZ3XFO15efdrXXIuqTCzJ8/X/Tu3VtYW1uL3//+92LcuHEiJydH2t7Q0CBWr14ttFqtsLGxEWPHjhUnT56UjRESEiLmzp0r/bp3794CgNFr9erVUp/GtgMQO3fuNGneISEhje4/fvz4Tl234f5XVlZWwsPDQ0RFRYnTp0+bNOeuXHdlZaWIi4sT3t7eQqPRCD8/P7FixQpRXV3dZetesWKF6Nu3r9BoNMLZ2VkEBweLrKws2T5ffvllo/O+e5zuWHdjdZhzaqwr1/3ZZ58JAKK4uNjketuq7ns9iPfhXuaeAp47d26jNZp6+UhjOqrOlo7bkrb+vLszlRBC3GemJCIiIqIujNcQEhERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQEhERESkcAyERERGRwjEQEhERESnc/w8h1dF0xJOzWQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "MAP_EXTENT = (\n", " domain.minlongitude,\n", " domain.maxlongitude,\n", " domain.minlatitude,\n", " domain.maxlatitude,\n", ")\n", "\n", "# Read inventory\n", "inventory = read_inventory(os.path.join(DIRPATH_DESTINATION, \"*.xml\"))\n", "\n", "# Create axes\n", "ax = plt.axes(projection=cartopy.crs.PlateCarree())\n", "ax.set_extent(MAP_EXTENT)\n", "ax.gridlines(draw_labels=True)\n", "ax.coastlines()\n", "\n", "# Show\n", "for network in inventory:\n", " for station in network:\n", " ax.plot(station.longitude, station.latitude, \"kv\")\n", " ax.text(station.longitude, station.latitude, \" \" + station.code)\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.5 ('py310')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.1.0" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "312801dd0aa5461639464a6df6a6c417c90a144a1d808d7cfd3dc2851df10201" } } }, "nbformat": 4, "nbformat_minor": 2 }