{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Use this to read the ALL jarkus transects and make json" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import io\n", "import re\n", "import itertools\n", "\n", "import geojson\n", "import netCDF4\n", "import pandas\n", "import numpy as np\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "ds = netCDF4.Dataset('../data/transect.nc')\n", "\n", "ids = ds.variables['id'][:]\n", "\n", "id_ = 7003900\n", "\n", "def transect2features(id_):\n", " transect_idx = np.searchsorted(ids, id_)\n", " \n", " variables = {\n", " 'lat': {\"var\": 'lat', \"slice\": np.s_[transect_idx, :]},\n", " 'lon': {\"var\": 'lon', \"slice\": np.s_[transect_idx, :]}\n", "\n", " }\n", " data = {}\n", " for var, props in variables.items():\n", " data[var] = ds.variables[props['var']][props['slice']]\n", "\n", " #for t, row in zip(data['t'], data['z']):\n", " coords = pandas.DataFrame(data=dict(\n", " lon0=data['lon'][:1], \n", " lat0=data['lat'][:1],\n", " lon1=data['lon'][-1:],\n", " lat1=data['lat'][-1:]\n", " ))\n", " coordinates = [coords.dropna().values[0][0:2].tolist(),coords.dropna().values[0][2:4].tolist()]\n", " geometry = geojson.LineString(coordinates=coordinates)\n", " properties = {\n", " \"id\": \"{}\".format(id_)\n", " }\n", " yield geojson.Feature(id=\"{}\".format(id_), geometry=geometry, properties=properties)\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import itertools\n", "import more_itertools" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "038867a44be14233a3481d72da01a1c3", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(IntProgress(value=0, max=2285), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "import tqdm\n", "\n", "features = []\n", "\n", "for id_ in tqdm.tqdm_notebook(ids):\n", " features.extend(transect2features(id_))\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "for i, chunk in enumerate(more_itertools.chunked(features, 10000)):\n", " collection = geojson.FeatureCollection(chunk)\n", " with open('jarkus4mapbox.json'.format(i), 'w') as f:\n", " geojson.dump(collection, f)\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Automatic pdb calling has been turned OFF\n" ] } ], "source": [ "%pdb off\n" ] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 2 }