Last active
November 16, 2023 21:11
-
-
Save Sharan123/87597a1002fc5bb65c4280b37c91972f to your computer and use it in GitHub Desktop.
Open Meteo Weather Feature Crawler
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import pandas as pd\n", | |
| "import numpy as np\n", | |
| "import geopandas as gpd\n", | |
| "import requests\n", | |
| "from pathlib import Path\n", | |
| "import time" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "#Load the geo data\n", | |
| "\n", | |
| "path_to_geojson = \"../Datasets/TransmissionLineData/BPA_TransmissionLines.geojson\"\n", | |
| "lines = gpd.read_file(path_to_geojson)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "**Extracting Lines of Interest, i.e. XRefCd's from the outages for matching**" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Each XRefCd is a list of lists, given as a string in the form of [Xref1], [XRef2, Xref3], [Xref4] etc. for example\n", | |
| "def extract_xrefcds(xrefcds):\n", | |
| " xrefcds = xrefcds.replace(\"[\", \"\").replace(\"]\", \"\").split(\",\")\n", | |
| " xrefcds = [xrefcd.strip() for xrefcd in xrefcds]\n", | |
| " #print('Found the following XRefCds: ', xrefcds)\n", | |
| " return xrefcds" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Cells crossed: 1020\n", | |
| "Points considered: 44498\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "cells = set()\n", | |
| "count = 0\n", | |
| "\n", | |
| "#Note that the 'lines' geojson has multiple entries for some XRefCd; this successfully handles that\n", | |
| "for idx, item in lines.iterrows():\n", | |
| " if not(item['XRefCd'] in interest_xrefs): #If the current xrefcd/line not used, skip it\n", | |
| " continue\n", | |
| " \n", | |
| " g = item['geometry']\n", | |
| " for line in g.geoms: #This seems to be just 1; some sort of wrapper\n", | |
| " for c in line.coords: #all of the pairs\n", | |
| " lon = round(c[0],1) #Cells are centered at 0.1 degree longitude/latitudes resolution in OpenMeteo dataset\n", | |
| " lat = round(c[1],1)\n", | |
| " cells.add( (lon,lat) )\n", | |
| " count += 1\n", | |
| "\n", | |
| "print(\"Cells crossed:\", len(cells))\n", | |
| "print(\"Points considered: \",count)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "# Downloading the OpenMeteo Dataset" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "save_path = Path(\"../Datasets/open-metro-cells/\")\n", | |
| "start_date= \"2016-01-01\" # YYYY-MM-DD, Inclusive\n", | |
| "end_date= \"2022-04-06\" #Also inclusive\n", | |
| "\n", | |
| "cells_list = [c for c in cells] #The cells of interest as a list\n", | |
| "cells_list.sort() #To maintain consistant order if something goes wrong and the requests have to be resumed\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "cell_-124.5_42.7 (1/1020)\n", | |
| "File already exists for cell (-124.5, 42.7). Not Saving.\n", | |
| "cell_-124.5_42.8 (2/1020)\n", | |
| "File already exists for cell (-124.5, 42.8). Not Saving.\n", | |
| "cell_-124.5_42.9 (3/1020)\n", | |
| "File already exists for cell (-124.5, 42.9). Not Saving.\n", | |
| "cell_-124.4_42.4 (4/1020)\n", | |
| "File already exists for cell (-124.4, 42.4). Not Saving.\n", | |
| "cell_-124.4_42.5 (5/1020)\n", | |
| "File already exists for cell (-124.4, 42.5). Not Saving.\n", | |
| "cell_-124.4_42.6 (6/1020)\n", | |
| "File already exists for cell (-124.4, 42.6). Not Saving.\n", | |
| "cell_-124.4_42.7 (7/1020)\n", | |
| "File already exists for cell (-124.4, 42.7). Not Saving.\n", | |
| "cell_-124.4_42.9 (8/1020)\n", | |
| "File already exists for cell (-124.4, 42.9). Not Saving.\n", | |
| "cell_-124.4_43.0 (9/1020)\n", | |
| "File already exists for cell (-124.4, 43.0). Not Saving.\n", | |
| "cell_-124.4_43.1 (10/1020)\n", | |
| "File already exists for cell (-124.4, 43.1). Not Saving.\n", | |
| "cell_-124.3_43.1 (11/1020)\n", | |
| "cell_-124.3_48.1 (12/1020)\n", | |
| "cell_-124.2_43.1 (13/1020)\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on cell (-124.2, 43.1). Code 429. Not Saving...\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "count = 0\n", | |
| "total = len(cells_list)\n", | |
| "\n", | |
| "if not save_path.is_dir():\n", | |
| " save_path.mkdir()\n", | |
| "\n", | |
| "for cell in cells_list:\n", | |
| " #Progress tracker\n", | |
| " count += 1\n", | |
| " \n", | |
| " lon = cell[0]\n", | |
| " lat = cell[1]\n", | |
| " print(f\"cell_{lon}_{lat} ({count}/{total})\")\n", | |
| "\n", | |
| " # Check if the file for this cell already exists, if so, skip it. Use pathlib Path for this\n", | |
| " # check if file cell_{lon}_{lat}.csv exists in save_path\n", | |
| " if Path(save_path/f\"cell_{lon}_{lat}.csv\").is_file():\n", | |
| " print(f\"File already exists for cell {cell}. Not Saving.\")\n", | |
| " continue\n", | |
| " #Note the cell selection method is 'Nearest'; there are various ways of selecting cells, see https://open-meteo.com/en/docs/overview\n", | |
| " response = requests.get(f\"https://archive-api.open-meteo.com/v1/archive?latitude={lat}&longitude={lon}&start_date={start_date}&end_date={end_date}&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\", headers = {'User-agent': 'Weather Historical Crawler 0.2'})\n", | |
| " if (response.status_code == 429): #Too many requests\n", | |
| " print(\"Too many requests, waiting 1 second...\")\n", | |
| " time.sleep(1)\n", | |
| " response = requests.get(f\"https://archive-api.open-meteo.com/v1/archive?latitude={lat}&longitude={lon}&start_date={start_date}&end_date={end_date}&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto\")\n", | |
| " if(response.status_code != 200): \n", | |
| " print(f\"Error on cell {cell}. Code {response.status_code}. Not Saving...\")\n", | |
| " break #don't continue if request failed\n", | |
| " \n", | |
| " #Get the json representation\n", | |
| " j = response.json()\n", | |
| "\n", | |
| " #Continue if mismatched\n", | |
| " if abs(j['latitude'] - lat) > 0.1005 or abs(j[\"longitude\"] - lon) > 0.1005: #Check to make sure it is correct cell, with tolerance for values like (-124.5, 42.699997)\n", | |
| " print(f\"Cell did not match expected coords! actual lon/lat = {j['longitude'],j['latitude']}, expected {cell}. Not Saving...\")\n", | |
| " print(f'Difference lon/lat = {abs(j[\"longitude\"] - lon), abs(j[\"latitude\"] - lat)}')\n", | |
| " continue\n", | |
| " \n", | |
| " #create the df from the hourly data (ignoring the metadata such as units, etc.)\n", | |
| " df = pd.DataFrame(data=j[\"hourly\"])\n", | |
| "\n", | |
| " # Save the data\n", | |
| " df.to_csv(path_or_buf=save_path / f\"cell_{lon}_{lat}.csv\",index=False)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "**Note! We do have a couple of lines which have 2 entries for the same XRefCd in the BPA_TransmissionLines** \n", | |
| "We are handling it by including both of the geojson shapefiles for the two XRefCds" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "-----------------------" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "# Trying something else since we are getting 429 Error quickly (after ~3 API calls).\n", | |
| " **So trying to merge all cell lat,lon and see if it works**\n", | |
| " " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 27, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(-124.5, 42.7)" | |
| ] | |
| }, | |
| "execution_count": 27, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "cells_list[0]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 28, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "https://archive-api.open-meteo.com/v1/archive?latitude=42.7,42.8,42.9,42.4,42.5,42.6,42.7,42.9,43.0,43.1,43.1,48.1,43.1,43.2,43.3,43.4,43.5,43.6,43.7,48.1,43.1,43.2,43.4,43.7,48.1,43.2,44.0,48.1,44.0,45.2,47.0,48.1,44.0,45.1,45.2,45.3,45.4,45.5,46.2,46.4,46.9,47.0,48.1,44.0,45.1,45.4,45.5,46.2,46.4,46.7,46.9,47.0,48.1,44.0,44.6,45.4,45.5,45.6,46.2,46.3,46.4,46.5,46.6,46.7,46.9,47.0,48.1,44.0,44.6,45.4,45.6,46.2,46.3,46.5,46.6,47.0,48.1,44.0,44.6,45.3,45.4,45.6,46.1,46.2,46.3,46.5,46.6,47.0,48.1,44.0,44.6,45.3,45.6,45.7,45.8,46.1,46.6,47.0,48.1,44.0,44.1,44.2,44.3,44.4,44.5,44.6,44.7,44.8,44.9,45.3,45.6,46.1,46.6,47.0,47.3,47.4,48.0,48.1,43.7,43.8,44.0,44.1,44.6,44.7,44.8,44.9,45.5,45.6,46.1,46.6,47.0,47.1,47.2,47.3,47.4,47.5,47.6,48.0,43.8,44.0,44.6,45.0,45.1,46.1,46.2,46.3,46.4,46.5,46.6,46.9,47.0,47.3,47.6,47.7,48.0,44.6,45.1,45.2,46.1,46.2,46.6,46.8,46.9,47.0,47.3,47.4,47.7,47.8,47.9,48.0,48.5,43.9,44.6,44.7,45.2,45.3,45.4,46.1,46.6,47.0,47.4,47.5,48.5,43.9,44.7,44.8,45.3,45.7,45.9,46.0,46.1,46.6,47.0,47.5,48.5,43.8,43.9,44.8,45.3,45.7,45.8,45.9,46.5,46.6,47.0,48.9,43.7,43.8,44.7,44.8,45.3,45.6,45.7,47.0,48.8,48.9,43.7,44.7,44.8,44.9,45.3,45.4,45.5,45.6,45.7,47.0,47.1,48.8,44.7,44.8,44.9,45.0,45.4,45.5,45.6,45.7,46.9,47.0,47.1,47.2,48.7,48.8,44.7,45.0,45.4,45.5,45.6,45.7,47.0,47.1,47.2,47.5,47.8,48.3,48.4,48.5,48.6,48.7,44.7,44.8,45.0,45.4,45.5,45.6,45.7,47.1,47.5,47.9,48.1,48.2,48.3,44.8,45.0,45.4,45.5,45.6,45.7,47.1,47.4,47.5,47.6,47.7,47.9,48.0,48.1,44.8,45.0,45.4,45.6,45.7,47.1,47.2,47.3,47.4,47.5,47.7,47.8,47.9,44.8,45.0,45.4,45.5,45.7,45.8,47.2,47.3,47.4,47.5,47.9,44.8,44.9,45.0,45.1,45.5,45.7,45.8,47.2,47.3,47.4,47.5,47.9,44.9,45.1,45.5,45.7,45.8,47.2,47.4,47.8,47.9,43.6,43.7,44.9,45.1,45.5,45.7,45.8,47.2,47.4,47.8,42.0,42.1,43.5,43.6,44.9,45.0,45.1,45.5,45.6,45.7,45.8,47.2,47.3,47.4,47.7,42.0,43.4,43.5,45.0,45.1,45.2,45.5,45.6,45.7,45.8,47.3,47.7,43.4,45.1,45.2,45.6,45.7,45.8,47.2,47.3,47.7,43.3,43.4,45.1,45.2,45.3,45.6,45.7,45.8,47.2,47.7,43.0,43.1,43.3,44.3,44.4,44.5,44.6,44.7,45.2,45.3,45.4,45.6,45.7,45.8,45.9,47.2,47.7,47.8,43.1,43.2,43.3,43.4,43.5,43.6,43.7,43.8,43.9,44.0,44.1,44.2,44.3,44.8,44.9,45.0,45.1,45.2,45.3,45.4,45.5,45.6,45.7,45.8,45.9,47.2,47.8,43.4,43.8,45.3,45.4,45.5,45.6,45.7,45.8,47.1,47.2,47.8,45.3,45.4,45.5,45.7,47.1,47.2,47.7,47.8,45.4,45.5,45.7,45.8,46.8,46.9,47.0,47.1,47.2,47.7,45.4,45.5,45.7,45.8,45.9,46.7,46.8,47.1,47.7,41.7,45.4,45.5,45.6,45.7,45.9,46.0,46.6,46.7,47.1,47.2,47.7,45.2,45.3,45.4,45.6,45.7,46.0,46.1,46.5,46.6,47.0,47.1,47.2,47.3,47.5,47.7,45.0,45.1,45.2,45.7,45.8,46.1,46.5,46.9,47.0,47.2,47.3,47.4,47.5,47.7,45.7,45.8,46.1,46.5,46.9,47.3,47.7,45.7,45.8,46.1,46.2,46.3,46.5,46.9,47.3,47.7,47.8,45.8,45.9,46.3,46.4,46.5,46.7,46.8,46.9,47.3,47.8,45.8,45.9,46.2,46.3,46.5,46.6,46.7,46.8,47.4,47.8,47.9,45.5,45.6,45.8,45.9,46.0,46.3,46.6,46.8,46.9,47.0,47.4,47.5,47.9,48.0,45.6,45.7,45.8,45.9,46.0,46.1,46.2,46.3,46.6,46.7,46.8,46.9,47.0,47.1,47.5,48.0,45.9,46.3,46.4,46.6,46.7,47.1,47.2,47.3,47.5,47.6,48.0,45.9,46.3,46.4,46.5,46.6,46.7,47.3,47.4,47.6,47.7,48.0,45.8,45.9,46.0,46.2,46.4,46.5,46.7,47.4,47.5,47.7,47.8,48.0,45.7,45.8,45.9,46.0,46.1,46.2,46.4,46.5,46.7,47.5,47.6,47.7,47.8,47.9,48.0,45.7,45.9,46.1,46.2,46.3,46.4,46.5,46.6,46.7,47.7,47.8,47.9,48.0,45.6,45.7,45.9,46.0,46.2,46.3,46.5,46.6,46.7,47.8,47.9,48.0,45.6,46.0,46.1,46.2,46.3,46.6,47.9,45.6,45.7,46.1,46.2,46.3,46.6,47.9,45.6,45.7,45.8,46.1,46.3,46.4,46.6,47.6,47.7,47.8,47.9,45.6,45.8,45.9,46.1,46.4,46.5,46.6,47.8,45.5,45.6,45.9,46.0,46.1,46.5,46.6,47.8,45.4,45.5,46.0,46.1,47.7,47.8,45.3,45.4,47.7,45.3,47.7,45.3,47.7,47.7,47.7,48.4,48.5,48.6,47.7,48.3,48.4,48.6,48.7,46.4,47.7,48.1,48.2,48.3,48.7,48.8,46.4,47.7,48.0,48.1,48.7,48.8,46.4,47.7,47.8,47.9,48.0,48.7,48.8,46.4,46.6,46.7,47.7,47.8,47.9,48.3,48.4,48.5,48.6,48.7,48.8,48.9,49.0,46.4,46.6,47.7,47.8,48.2,48.3,48.4,48.5,46.4,46.5,46.6,47.7,47.8,48.2,46.4,47.7,48.2,46.4,46.5,47.7,47.8,48.2,46.5,47.8,48.2,47.8,47.9,48.2,47.9,48.2,48.3,47.8,47.9,48.3,46.7,46.8,47.8,47.9,48.0,48.3,48.4,48.5,46.5,46.6,46.7,46.8,46.9,47.7,47.8,48.0,48.1,48.5,48.6,46.9,47.0,47.7,48.1,48.6,48.7,47.0,47.1,47.7,48.1,48.7,47.1,47.2,47.6,47.7,48.1,48.6,48.7,47.2,47.3,47.6,48.0,48.1,48.5,48.6,47.3,47.4,47.5,48.0,48.4,48.5,47.4,47.5,48.0,48.4,48.5,43.2,47.4,47.5,47.9,48.0,48.4,48.5,43.2,47.4,47.5,47.9,48.0,48.4,43.3,43.4,47.4,47.5,47.9,48.0,48.4,47.4,48.0,48.4,47.4,48.0,48.1,48.4,47.4,48.1,48.4,47.3,47.4,48.1,48.2,48.3,48.4,47.3,48.2,48.3,47.2,47.3,48.7,47.2,48.6,48.7,47.1,47.2,48.6,47.1,47.5,47.6,48.5,48.6,47.0,47.1,47.5,47.6,47.7,48.4,48.5,47.0,47.4,47.5,47.7,47.8,47.9,48.2,48.4,46.9,47.0,47.3,47.4,47.7,47.8,47.9,48.0,48.1,48.2,48.4,46.8,46.9,47.2,47.3,47.7,48.0,48.1,48.2,48.3,48.4,44.4,46.8,47.0,47.1,47.2,48.3,48.4,44.3,44.4,46.7,46.8,46.9,47.0,46.7,46.7,42.5,46.7,42.5,46.6,46.7,42.5,42.6,42.7,46.6,46.5,46.6,46.4,46.5,46.4,46.4,46.5,46.5,46.5,46.5,46.5,46.3,46.4,46.5,46.3,46.3,46.3,46.3,43.3,46.3,43.3,43.4,46.2,46.3,43.4,43.5,46.2,43.5,43.6,43.7,46.2,43.5,43.6,43.7,46.2,43.5,43.6,43.7,43.8,43.9,46.2,43.5,43.8,43.9,46.2,46.3,43.5,43.9,44.0,43.5,43.6,43.8,43.9,44.0,44.5,43.6,43.7,43.8,44.5,44.6,43.5,43.6,43.7,44.6,44.7,43.5,43.5,43.5&longitude=-124.5,-124.5,-124.5,-124.4,-124.4,-124.4,-124.4,-124.4,-124.4,-124.4,-124.3,-124.3,-124.2,-124.2,-124.2,-124.2,-124.2,-124.2,-124.2,-124.2,-124.1,-124.1,-124.1,-124.1,-124.1,-124.0,-124.0,-124.0,-123.9,-123.9,-123.9,-123.9,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.7,-123.7,-123.7,-123.7,-123.7,-123.7,-123.7,-123.7,-123.7,-123.7,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.8,-122.8,-122.8,-122.8,-122.8,-122.8,-122.8,-122.8,-122.8,-122.8,-122.8,-122.8,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.6,-121.6,-121.6,-121.6,-121.6,-121.6,-121.6,-121.6,-121.6,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.2,-121.2,-121.2,-121.2,-121.2,-121.2,-121.2,-121.2,-121.2,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.7,-120.7,-120.7,-120.7,-120.7,-120.7,-120.7,-120.7,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.5,-120.5,-120.5,-120.5,-120.5,-120.5,-120.5,-120.5,-120.5,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.1,-120.1,-120.1,-120.1,-120.1,-120.1,-120.1,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-119.9,-119.9,-119.9,-119.9,-119.9,-119.9,-119.9,-119.9,-119.9,-119.9,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-118.9,-118.9,-118.9,-118.9,-118.9,-118.9,-118.9,-118.8,-118.8,-118.8,-118.8,-118.8,-118.8,-118.8,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.6,-118.6,-118.6,-118.6,-118.6,-118.6,-118.6,-118.6,-118.5,-118.5,-118.5,-118.5,-118.5,-118.5,-118.5,-118.5,-118.4,-118.4,-118.4,-118.4,-118.4,-118.4,-118.3,-118.3,-118.3,-118.2,-118.2,-118.1,-118.1,-118.0,-117.9,-117.9,-117.9,-117.9,-117.8,-117.8,-117.8,-117.8,-117.8,-117.7,-117.7,-117.7,-117.7,-117.7,-117.7,-117.7,-117.6,-117.6,-117.6,-117.6,-117.6,-117.6,-117.5,-117.5,-117.5,-117.5,-117.5,-117.5,-117.5,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.3,-117.3,-117.3,-117.3,-117.3,-117.3,-117.3,-117.3,-117.2,-117.2,-117.2,-117.2,-117.2,-117.2,-117.1,-117.1,-117.1,-117.0,-117.0,-117.0,-117.0,-117.0,-116.9,-116.9,-116.9,-116.8,-116.8,-116.8,-116.7,-116.7,-116.7,-116.6,-116.6,-116.6,-116.5,-116.5,-116.5,-116.5,-116.5,-116.5,-116.5,-116.5,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.3,-116.3,-116.3,-116.3,-116.3,-116.3,-116.2,-116.2,-116.2,-116.2,-116.2,-116.1,-116.1,-116.1,-116.1,-116.1,-116.1,-116.1,-116.0,-116.0,-116.0,-116.0,-116.0,-116.0,-116.0,-115.9,-115.9,-115.9,-115.9,-115.9,-115.9,-115.8,-115.8,-115.8,-115.8,-115.8,-115.7,-115.7,-115.7,-115.7,-115.7,-115.7,-115.7,-115.6,-115.6,-115.6,-115.6,-115.6,-115.6,-115.5,-115.5,-115.5,-115.5,-115.5,-115.5,-115.5,-115.4,-115.4,-115.4,-115.3,-115.3,-115.3,-115.3,-115.2,-115.2,-115.2,-115.1,-115.1,-115.1,-115.1,-115.1,-115.1,-115.0,-115.0,-115.0,-114.9,-114.9,-114.9,-114.8,-114.8,-114.8,-114.7,-114.7,-114.7,-114.6,-114.6,-114.6,-114.6,-114.6,-114.5,-114.5,-114.5,-114.5,-114.5,-114.5,-114.5,-114.4,-114.4,-114.4,-114.4,-114.4,-114.4,-114.4,-114.4,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.2,-114.2,-114.2,-114.2,-114.2,-114.2,-114.2,-114.2,-114.2,-114.2,-114.1,-114.1,-114.1,-114.1,-114.1,-114.1,-114.1,-114.0,-114.0,-114.0,-114.0,-114.0,-114.0,-113.9,-113.8,-113.7,-113.7,-113.6,-113.6,-113.6,-113.5,-113.5,-113.5,-113.5,-113.4,-113.4,-113.3,-113.3,-113.2,-113.1,-113.1,-113.0,-112.9,-112.8,-112.7,-112.6,-112.6,-112.6,-112.5,-112.4,-112.3,-112.2,-112.1,-112.1,-112.0,-112.0,-112.0,-112.0,-111.9,-111.9,-111.9,-111.8,-111.8,-111.8,-111.8,-111.7,-111.7,-111.7,-111.7,-111.6,-111.6,-111.6,-111.6,-111.6,-111.6,-111.5,-111.5,-111.5,-111.5,-111.5,-111.4,-111.4,-111.4,-111.3,-111.3,-111.3,-111.3,-111.3,-111.3,-111.2,-111.2,-111.2,-111.2,-111.2,-111.1,-111.1,-111.1,-111.1,-111.1,-111.0,-110.9,-110.8&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Format the api string which is in format https://archive-api.open-meteo.com/v1/archive?latitude=lat1,lat2,lat,...&longitude=lon1,lon2,lon3,...\n", | |
| "# Where lat1 = cells_list[0][1], lon1 = cells_list[0][0] etc.\n", | |
| "latitudes = [str(cell[1]) for cell in cells_list]\n", | |
| "longitudes = [str(cell[0]) for cell in cells_list]\n", | |
| "latitudes_str = \",\".join(latitudes)\n", | |
| "longitudes_str = \",\".join(longitudes)\n", | |
| "api_string = f\"https://archive-api.open-meteo.com/v1/archive?latitude={latitudes_str}&longitude={longitudes_str}&start_date={start_date}&end_date={end_date}&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\"\n", | |
| "print(api_string)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 29, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Idx: 0, URL: https://archive-api.open-meteo.com/v1/archive?latitude=42.7,42.8,42.9,42.4,42.5,42.6,42.7,42.9,43.0,43.1,43.1,48.1,43.1,43.2,43.3,43.4,43.5,43.6,43.7,48.1,43.1,43.2,43.4,43.7,48.1,43.2,44.0,48.1,44.0,45.2,47.0,48.1,44.0,45.1,45.2,45.3,45.4,45.5,46.2,46.4,46.9,47.0,48.1,44.0,45.1&longitude=-124.5,-124.5,-124.5,-124.4,-124.4,-124.4,-124.4,-124.4,-124.4,-124.4,-124.3,-124.3,-124.2,-124.2,-124.2,-124.2,-124.2,-124.2,-124.2,-124.2,-124.1,-124.1,-124.1,-124.1,-124.1,-124.0,-124.0,-124.0,-123.9,-123.9,-123.9,-123.9,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.8,-123.7,-123.7&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 1, URL: https://archive-api.open-meteo.com/v1/archive?latitude=45.1,45.4,45.5,46.2,46.4,46.7,46.9,47.0,48.1,44.0,44.6,45.4,45.5,45.6,46.2,46.3,46.4,46.5,46.6,46.7,46.9,47.0,48.1,44.0,44.6,45.4,45.6,46.2,46.3,46.5,46.6,47.0,48.1,44.0,44.6,45.3,45.4,45.6,46.1,46.2,46.3,46.5,46.6,47.0,48.1&longitude=-123.7,-123.7,-123.7,-123.7,-123.7,-123.7,-123.7,-123.7,-123.7,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.6,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.5,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4,-123.4&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 2, URL: https://archive-api.open-meteo.com/v1/archive?latitude=48.1,44.0,44.6,45.3,45.6,45.7,45.8,46.1,46.6,47.0,48.1,44.0,44.1,44.2,44.3,44.4,44.5,44.6,44.7,44.8,44.9,45.3,45.6,46.1,46.6,47.0,47.3,47.4,48.0,48.1,43.7,43.8,44.0,44.1,44.6,44.7,44.8,44.9,45.5,45.6,46.1,46.6,47.0,47.1,47.2&longitude=-123.4,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.3,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.2,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.1&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 3, URL: https://archive-api.open-meteo.com/v1/archive?latitude=47.2,47.3,47.4,47.5,47.6,48.0,43.8,44.0,44.6,45.0,45.1,46.1,46.2,46.3,46.4,46.5,46.6,46.9,47.0,47.3,47.6,47.7,48.0,44.6,45.1,45.2,46.1,46.2,46.6,46.8,46.9,47.0,47.3,47.4,47.7,47.8,47.9,48.0,48.5,43.9,44.6,44.7,45.2,45.3,45.4&longitude=-123.1,-123.1,-123.1,-123.1,-123.1,-123.1,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-123.0,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.9,-122.8,-122.8,-122.8,-122.8,-122.8,-122.8&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 4, URL: https://archive-api.open-meteo.com/v1/archive?latitude=45.4,46.1,46.6,47.0,47.4,47.5,48.5,43.9,44.7,44.8,45.3,45.7,45.9,46.0,46.1,46.6,47.0,47.5,48.5,43.8,43.9,44.8,45.3,45.7,45.8,45.9,46.5,46.6,47.0,48.9,43.7,43.8,44.7,44.8,45.3,45.6,45.7,47.0,48.8,48.9,43.7,44.7,44.8,44.9,45.3&longitude=-122.8,-122.8,-122.8,-122.8,-122.8,-122.8,-122.8,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.7,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.6,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.5,-122.4,-122.4,-122.4,-122.4,-122.4&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 5, URL: https://archive-api.open-meteo.com/v1/archive?latitude=45.3,45.4,45.5,45.6,45.7,47.0,47.1,48.8,44.7,44.8,44.9,45.0,45.4,45.5,45.6,45.7,46.9,47.0,47.1,47.2,48.7,48.8,44.7,45.0,45.4,45.5,45.6,45.7,47.0,47.1,47.2,47.5,47.8,48.3,48.4,48.5,48.6,48.7,44.7,44.8,45.0,45.4,45.5,45.6,45.7&longitude=-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.4,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.3,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.2,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 6, URL: https://archive-api.open-meteo.com/v1/archive?latitude=45.7,47.1,47.5,47.9,48.1,48.2,48.3,44.8,45.0,45.4,45.5,45.6,45.7,47.1,47.4,47.5,47.6,47.7,47.9,48.0,48.1,44.8,45.0,45.4,45.6,45.7,47.1,47.2,47.3,47.4,47.5,47.7,47.8,47.9,44.8,45.0,45.4,45.5,45.7,45.8,47.2,47.3,47.4,47.5,47.9&longitude=-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.1,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-122.0,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.9,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8,-121.8&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 7, URL: https://archive-api.open-meteo.com/v1/archive?latitude=47.9,44.8,44.9,45.0,45.1,45.5,45.7,45.8,47.2,47.3,47.4,47.5,47.9,44.9,45.1,45.5,45.7,45.8,47.2,47.4,47.8,47.9,43.6,43.7,44.9,45.1,45.5,45.7,45.8,47.2,47.4,47.8,42.0,42.1,43.5,43.6,44.9,45.0,45.1,45.5,45.6,45.7,45.8,47.2,47.3&longitude=-121.8,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.7,-121.6,-121.6,-121.6,-121.6,-121.6,-121.6,-121.6,-121.6,-121.6,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.5,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4,-121.4&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 8, URL: https://archive-api.open-meteo.com/v1/archive?latitude=47.3,47.4,47.7,42.0,43.4,43.5,45.0,45.1,45.2,45.5,45.6,45.7,45.8,47.3,47.7,43.4,45.1,45.2,45.6,45.7,45.8,47.2,47.3,47.7,43.3,43.4,45.1,45.2,45.3,45.6,45.7,45.8,47.2,47.7,43.0,43.1,43.3,44.3,44.4,44.5,44.6,44.7,45.2,45.3,45.4&longitude=-121.4,-121.4,-121.4,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.3,-121.2,-121.2,-121.2,-121.2,-121.2,-121.2,-121.2,-121.2,-121.2,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.1,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 9, URL: https://archive-api.open-meteo.com/v1/archive?latitude=45.4,45.6,45.7,45.8,45.9,47.2,47.7,47.8,43.1,43.2,43.3,43.4,43.5,43.6,43.7,43.8,43.9,44.0,44.1,44.2,44.3,44.8,44.9,45.0,45.1,45.2,45.3,45.4,45.5,45.6,45.7,45.8,45.9,47.2,47.8,43.4,43.8,45.3,45.4,45.5,45.6,45.7,45.8,47.1,47.2&longitude=-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-121.0,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.9,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8,-120.8&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 10, URL: https://archive-api.open-meteo.com/v1/archive?latitude=47.2,47.8,45.3,45.4,45.5,45.7,47.1,47.2,47.7,47.8,45.4,45.5,45.7,45.8,46.8,46.9,47.0,47.1,47.2,47.7,45.4,45.5,45.7,45.8,45.9,46.7,46.8,47.1,47.7,41.7,45.4,45.5,45.6,45.7,45.9,46.0,46.6,46.7,47.1,47.2,47.7,45.2,45.3,45.4,45.6&longitude=-120.8,-120.8,-120.7,-120.7,-120.7,-120.7,-120.7,-120.7,-120.7,-120.7,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.6,-120.5,-120.5,-120.5,-120.5,-120.5,-120.5,-120.5,-120.5,-120.5,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.4,-120.3,-120.3,-120.3,-120.3&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 11, URL: https://archive-api.open-meteo.com/v1/archive?latitude=45.6,45.7,46.0,46.1,46.5,46.6,47.0,47.1,47.2,47.3,47.5,47.7,45.0,45.1,45.2,45.7,45.8,46.1,46.5,46.9,47.0,47.2,47.3,47.4,47.5,47.7,45.7,45.8,46.1,46.5,46.9,47.3,47.7,45.7,45.8,46.1,46.2,46.3,46.5,46.9,47.3,47.7,47.8,45.8,45.9&longitude=-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.3,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.2,-120.1,-120.1,-120.1,-120.1,-120.1,-120.1,-120.1,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-120.0,-119.9,-119.9&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 12, URL: https://archive-api.open-meteo.com/v1/archive?latitude=45.9,46.3,46.4,46.5,46.7,46.8,46.9,47.3,47.8,45.8,45.9,46.2,46.3,46.5,46.6,46.7,46.8,47.4,47.8,47.9,45.5,45.6,45.8,45.9,46.0,46.3,46.6,46.8,46.9,47.0,47.4,47.5,47.9,48.0,45.6,45.7,45.8,45.9,46.0,46.1,46.2,46.3,46.6,46.7,46.8&longitude=-119.9,-119.9,-119.9,-119.9,-119.9,-119.9,-119.9,-119.9,-119.9,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.8,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.7,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.6&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 13, URL: https://archive-api.open-meteo.com/v1/archive?latitude=46.8,46.9,47.0,47.1,47.5,48.0,45.9,46.3,46.4,46.6,46.7,47.1,47.2,47.3,47.5,47.6,48.0,45.9,46.3,46.4,46.5,46.6,46.7,47.3,47.4,47.6,47.7,48.0,45.8,45.9,46.0,46.2,46.4,46.5,46.7,47.4,47.5,47.7,47.8,48.0,45.7,45.8,45.9,46.0,46.1&longitude=-119.6,-119.6,-119.6,-119.6,-119.6,-119.6,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.5,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.4,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.3,-119.2,-119.2,-119.2,-119.2,-119.2&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 14, URL: https://archive-api.open-meteo.com/v1/archive?latitude=46.1,46.2,46.4,46.5,46.7,47.5,47.6,47.7,47.8,47.9,48.0,45.7,45.9,46.1,46.2,46.3,46.4,46.5,46.6,46.7,47.7,47.8,47.9,48.0,45.6,45.7,45.9,46.0,46.2,46.3,46.5,46.6,46.7,47.8,47.9,48.0,45.6,46.0,46.1,46.2,46.3,46.6,47.9,45.6,45.7&longitude=-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.2,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.1,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-119.0,-118.9,-118.9,-118.9,-118.9,-118.9,-118.9,-118.9,-118.8,-118.8&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 15, URL: https://archive-api.open-meteo.com/v1/archive?latitude=45.7,46.1,46.2,46.3,46.6,47.9,45.6,45.7,45.8,46.1,46.3,46.4,46.6,47.6,47.7,47.8,47.9,45.6,45.8,45.9,46.1,46.4,46.5,46.6,47.8,45.5,45.6,45.9,46.0,46.1,46.5,46.6,47.8,45.4,45.5,46.0,46.1,47.7,47.8,45.3,45.4,47.7,45.3,47.7,45.3&longitude=-118.8,-118.8,-118.8,-118.8,-118.8,-118.8,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.7,-118.6,-118.6,-118.6,-118.6,-118.6,-118.6,-118.6,-118.6,-118.5,-118.5,-118.5,-118.5,-118.5,-118.5,-118.5,-118.5,-118.4,-118.4,-118.4,-118.4,-118.4,-118.4,-118.3,-118.3,-118.3,-118.2,-118.2,-118.1&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 16, URL: https://archive-api.open-meteo.com/v1/archive?latitude=45.3,47.7,47.7,47.7,48.4,48.5,48.6,47.7,48.3,48.4,48.6,48.7,46.4,47.7,48.1,48.2,48.3,48.7,48.8,46.4,47.7,48.0,48.1,48.7,48.8,46.4,47.7,47.8,47.9,48.0,48.7,48.8,46.4,46.6,46.7,47.7,47.8,47.9,48.3,48.4,48.5,48.6,48.7,48.8,48.9&longitude=-118.1,-118.1,-118.0,-117.9,-117.9,-117.9,-117.9,-117.8,-117.8,-117.8,-117.8,-117.8,-117.7,-117.7,-117.7,-117.7,-117.7,-117.7,-117.7,-117.6,-117.6,-117.6,-117.6,-117.6,-117.6,-117.5,-117.5,-117.5,-117.5,-117.5,-117.5,-117.5,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4,-117.4&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 17, URL: https://archive-api.open-meteo.com/v1/archive?latitude=48.9,49.0,46.4,46.6,47.7,47.8,48.2,48.3,48.4,48.5,46.4,46.5,46.6,47.7,47.8,48.2,46.4,47.7,48.2,46.4,46.5,47.7,47.8,48.2,46.5,47.8,48.2,47.8,47.9,48.2,47.9,48.2,48.3,47.8,47.9,48.3,46.7,46.8,47.8,47.9,48.0,48.3,48.4,48.5,46.5&longitude=-117.4,-117.4,-117.3,-117.3,-117.3,-117.3,-117.3,-117.3,-117.3,-117.3,-117.2,-117.2,-117.2,-117.2,-117.2,-117.2,-117.1,-117.1,-117.1,-117.0,-117.0,-117.0,-117.0,-117.0,-116.9,-116.9,-116.9,-116.8,-116.8,-116.8,-116.7,-116.7,-116.7,-116.6,-116.6,-116.6,-116.5,-116.5,-116.5,-116.5,-116.5,-116.5,-116.5,-116.5,-116.4&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 18, URL: https://archive-api.open-meteo.com/v1/archive?latitude=46.5,46.6,46.7,46.8,46.9,47.7,47.8,48.0,48.1,48.5,48.6,46.9,47.0,47.7,48.1,48.6,48.7,47.0,47.1,47.7,48.1,48.7,47.1,47.2,47.6,47.7,48.1,48.6,48.7,47.2,47.3,47.6,48.0,48.1,48.5,48.6,47.3,47.4,47.5,48.0,48.4,48.5,47.4,47.5,48.0&longitude=-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.4,-116.3,-116.3,-116.3,-116.3,-116.3,-116.3,-116.2,-116.2,-116.2,-116.2,-116.2,-116.1,-116.1,-116.1,-116.1,-116.1,-116.1,-116.1,-116.0,-116.0,-116.0,-116.0,-116.0,-116.0,-116.0,-115.9,-115.9,-115.9,-115.9,-115.9,-115.9,-115.8,-115.8,-115.8&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 19, URL: https://archive-api.open-meteo.com/v1/archive?latitude=48.0,48.4,48.5,43.2,47.4,47.5,47.9,48.0,48.4,48.5,43.2,47.4,47.5,47.9,48.0,48.4,43.3,43.4,47.4,47.5,47.9,48.0,48.4,47.4,48.0,48.4,47.4,48.0,48.1,48.4,47.4,48.1,48.4,47.3,47.4,48.1,48.2,48.3,48.4,47.3,48.2,48.3,47.2,47.3,48.7&longitude=-115.8,-115.8,-115.8,-115.7,-115.7,-115.7,-115.7,-115.7,-115.7,-115.7,-115.6,-115.6,-115.6,-115.6,-115.6,-115.6,-115.5,-115.5,-115.5,-115.5,-115.5,-115.5,-115.5,-115.4,-115.4,-115.4,-115.3,-115.3,-115.3,-115.3,-115.2,-115.2,-115.2,-115.1,-115.1,-115.1,-115.1,-115.1,-115.1,-115.0,-115.0,-115.0,-114.9,-114.9,-114.9&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 20, URL: https://archive-api.open-meteo.com/v1/archive?latitude=48.7,47.2,48.6,48.7,47.1,47.2,48.6,47.1,47.5,47.6,48.5,48.6,47.0,47.1,47.5,47.6,47.7,48.4,48.5,47.0,47.4,47.5,47.7,47.8,47.9,48.2,48.4,46.9,47.0,47.3,47.4,47.7,47.8,47.9,48.0,48.1,48.2,48.4,46.8,46.9,47.2,47.3,47.7,48.0,48.1&longitude=-114.9,-114.8,-114.8,-114.8,-114.7,-114.7,-114.7,-114.6,-114.6,-114.6,-114.6,-114.6,-114.5,-114.5,-114.5,-114.5,-114.5,-114.5,-114.5,-114.4,-114.4,-114.4,-114.4,-114.4,-114.4,-114.4,-114.4,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.3,-114.2,-114.2,-114.2,-114.2,-114.2,-114.2,-114.2&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 21, URL: https://archive-api.open-meteo.com/v1/archive?latitude=48.1,48.2,48.3,48.4,44.4,46.8,47.0,47.1,47.2,48.3,48.4,44.3,44.4,46.7,46.8,46.9,47.0,46.7,46.7,42.5,46.7,42.5,46.6,46.7,42.5,42.6,42.7,46.6,46.5,46.6,46.4,46.5,46.4,46.4,46.5,46.5,46.5,46.5,46.5,46.3,46.4,46.5,46.3,46.3,46.3&longitude=-114.2,-114.2,-114.2,-114.2,-114.1,-114.1,-114.1,-114.1,-114.1,-114.1,-114.1,-114.0,-114.0,-114.0,-114.0,-114.0,-114.0,-113.9,-113.8,-113.7,-113.7,-113.6,-113.6,-113.6,-113.5,-113.5,-113.5,-113.5,-113.4,-113.4,-113.3,-113.3,-113.2,-113.1,-113.1,-113.0,-112.9,-112.8,-112.7,-112.6,-112.6,-112.6,-112.5,-112.4,-112.3&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 22, URL: https://archive-api.open-meteo.com/v1/archive?latitude=46.3,46.3,43.3,46.3,43.3,43.4,46.2,46.3,43.4,43.5,46.2,43.5,43.6,43.7,46.2,43.5,43.6,43.7,46.2,43.5,43.6,43.7,43.8,43.9,46.2,43.5,43.8,43.9,46.2,46.3,43.5,43.9,44.0,43.5,43.6,43.8,43.9,44.0,44.5,43.6,43.7,43.8,44.5,44.6,43.5&longitude=-112.3,-112.2,-112.1,-112.1,-112.0,-112.0,-112.0,-112.0,-111.9,-111.9,-111.9,-111.8,-111.8,-111.8,-111.8,-111.7,-111.7,-111.7,-111.7,-111.6,-111.6,-111.6,-111.6,-111.6,-111.6,-111.5,-111.5,-111.5,-111.5,-111.5,-111.4,-111.4,-111.4,-111.3,-111.3,-111.3,-111.3,-111.3,-111.3,-111.2,-111.2,-111.2,-111.2,-111.2,-111.1&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n", | |
| "Idx: 23, URL: https://archive-api.open-meteo.com/v1/archive?latitude=43.5,43.6,43.7,44.6,44.7,43.5,43.5,43.5&longitude=-111.1,-111.1,-111.1,-111.1,-111.1,-111.0,-110.9,-110.8&start_date=2016-01-01&end_date=2022-04-06&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "def generate_api_strings(latitudes, longitudes, max_len=1000):\n", | |
| " left_part = 'https://archive-api.open-meteo.com/v1/archive?latitude='\n", | |
| " right_part = f\"&start_date={start_date}&end_date={end_date}&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,precipitation,rain,snowfall,weathercode,surface_pressure,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,windspeed_100m,winddirection_10m,winddirection_100m,windgusts_10m,soil_temperature_0_to_7cm,soil_temperature_7_to_28cm,soil_moisture_0_to_7cm,soil_moisture_7_to_28cm&timezone=auto&format=csv\"\n", | |
| " idx = 0\n", | |
| " while idx < len(latitudes):\n", | |
| " next_idx = idx\n", | |
| " while next_idx < len(latitudes):\n", | |
| " api_str = left_part + ','.join(latitudes[idx:next_idx+1]) + '&longitude=' + ','.join(longitudes[idx:next_idx+1]) + right_part\n", | |
| " if len(api_str) > max_len:\n", | |
| " break\n", | |
| " next_idx += 1\n", | |
| " yield api_str\n", | |
| " idx = next_idx\n", | |
| "\n", | |
| "\n", | |
| "for i, api_str in enumerate(generate_api_strings(latitudes, longitudes,1000)):\n", | |
| " print(f\"Idx: {i}, URL: {api_str}\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 31, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=0. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=1. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=2. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=3. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "Exception ignored in: <finalize object at 0x7f4cbdb7da00; dead>\n", | |
| "Traceback (most recent call last):\n", | |
| " File \"/home/sharan/anaconda3/lib/python3.10/weakref.py\", line 591, in __call__\n", | |
| " return info.func(*info.args, **(info.kwargs or {}))\n", | |
| " File \"/home/sharan/anaconda3/lib/python3.10/site-packages/urllib3/connectionpool.py\", line 1129, in _close_pool_connections\n", | |
| " if conn:\n", | |
| "KeyboardInterrupt: \n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Error on idx=4. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=5. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=6. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=7. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=8. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=9. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n", | |
| "Error on idx=10. Code 429. Not Saving...\n", | |
| "Too many requests, waiting 1 second...\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "for i, api_str in enumerate(generate_api_strings(latitudes, longitudes, 1000)):\n", | |
| " # Check that if the file for this index already exists, if so, skip it. Use pathlib Path for this\n", | |
| " # check if file all_cells_{i}.csv exists in save_path\n", | |
| " save_path = Path(\"../Datasets/open-metro-cells/\")\n", | |
| " if Path(save_path/f\"all_cells_{i}.csv\").is_file():\n", | |
| " print(f\"File already exists for idx {i}. Not Saving.\")\n", | |
| " continue\n", | |
| " response = requests.get(api_str, headers = {'User-agent': 'Weather Batch Crawler 0.7'})\n", | |
| "\n", | |
| " if (response.status_code == 429): #Too many requests\n", | |
| " print(\"Too many requests, waiting 1 second...\")\n", | |
| " time.sleep(1)\n", | |
| " response = requests.get(api_str)\n", | |
| "\n", | |
| " if(response.status_code != 200):\n", | |
| " print(f\"Error on idx={i}. Code {response.status_code}. Not Saving...\")\n", | |
| "\n", | |
| " # Use pathlib for handling file paths\n", | |
| " if (response.status_code == 200):\n", | |
| " data = response.content\n", | |
| " print(f\"Writing for Idx:{i}\")\n", | |
| " output_file = Path(save_path/f'all_cells_{i}.csv')\n", | |
| " output_file.write_bytes(data)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# The api string is too long. Split the lat, long string such that we can have multiple calls. The rest of the API call string should not be changed! \n" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "base", | |
| "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.10.8" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment