diff --git a/DISP/Landslides/OPERA-DISP-S1_Landslides.ipynb b/DISP/Landslides/OPERA-DISP-S1_Landslides.ipynb new file mode 100644 index 0000000..c5fb3a5 --- /dev/null +++ b/DISP/Landslides/OPERA-DISP-S1_Landslides.ipynb @@ -0,0 +1,1899 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# OPERA DISP-S1 Time Series Data for Landslides\n", + "---\n", + "\n", + "Welcome! This notebook demonstrates how to download and visualize surface displacement time series data from the **OPERA DISP-S1** product. We use a real-world example of a slow-moving landslide to show how these products can track cm-scale movements over time.\n", + "\n", + "### What is OPERA DISP-S1?\n", + "The **OPERA Level-3 Surface Displacement from Sentinel-1 (DISP-S1)** product provides geocoded displacement measurements over North America. Generated using advanced Interferometric Synthetic Aperture Radar (InSAR) processing, it helps track both natural (e.g., landslides, volcanoes, tectonics) and anthropogenic (e.g., subsidence from groundwater pumping) surface motion.\n", + "\n", + "### Notebook Workflow\n", + "1. **Environment Setup**: Install necessary Python packages and helper tools.\n", + "2. **Area Selection (AOI)**: Choose your target location and frame.\n", + "3. **Data Download**: Pull cropped displacement data directly from NASA Earthdata.\n", + "4. **Interactive Analysis**: Select a reference point on a map to adjust measurements.\n", + "5. **Quality Review**: Inspect coherence and other metrics to verify data reliability.\n", + "6. **Export**: Save results as GeoTIFFs for GIS or GIFs for animations.\n", + "\n", + "---\n", + "\n", + "### Data Architecture: The \"Ministack\"\n", + "To keep the data manageable and accurate, DISP-S1 uses a **ministack** structure:\n", + "\n", + "- **Cumulative Displacement**: Each file in a ministack measures the motion between a *fixed reference date* and a *secondary date*.\n", + "- **Stack Size**: A ministack contains up to **15 acquisitions** (approx. 3-6 months of data).\n", + "- **The Chain**: The last date of one ministack becomes the reference date for the next. This notebook automatically \"rebases\" these stacks into a single, continuous time series for your analysis.\n", + "\n", + "- **Layers Included**:\n", + " - `Displacement`: Surface displacement from the reference date to the secondary date, spatially referenced to an arbitrary high coherence/persistent scatterer pixel within the scene.\n", + " - `Short wavelength displacement`, spatially filtered to remove large scale (> 35 km) signals such as atmospheric noise.\n", + " - `Recommended mask`: A derived “recommended” mask for users who wish to remove possible low-quality results, where 0 indicates a bad pixel, 1 is a good pixel. Pixels are set to 0 for three reasons: 1. the pixel is marked as water in /water_mask, 2. the pixel is 0 in /connected_component_labels, 3. the pixel has low /temporal_coherence and low /phase_similarity.\n", + " - `Temporal coherence`: A measure of the average misfit between the optimized phase linking results and the original multi-looked interferograms.\n", + " - `Phase similarity`: a quality metric describing the median cosine similarity between the pixel and its neighbors.\n", + " - `Estimated phase quality` – an alternate quality metric computed using a normalized Gaussian filter on the displacement image after re-wrapping and converting back to a complex image with unit magnitudes.\n", + " - `Connected component labels`: integer labels produced by the phase unwrapper after recomputing costs on the output Displacement raster. Used to find reliable, spatially contiguous areas within the displacement image. Different labels may indicate the there are phase jumps between labels.\n", + " - `Persistent scatterer mask`: A binary image indicating where the phase from a persistent scatterer (PS) was used instead of a multi-looked phase linking result.\n", + " - `SHP Counts`: Counts of statistically homogeneous pixels (SHP) used during adaptive multi-looking.\n", + " - `Time series residuals`: The resulting misfit from solving the inversion problem after unwrapping a network of interferograms. The units are in radians to make it easer to find 2pi offsets that may be corrected.\n", + " - `Water mask`: The binary water mask used during processing, where 0 indicates water and 1 indicates land.\n", + "\n", + "---\n", + "\n", + "*For technical details, see the [OPERA Product Specification](https://d2pn8kiwq2w21t.cloudfront.net/documents/OPERA_DISP_S1_Final_Product_Spec.pdf). \n", + "\n", + "Notebook Contributors: A. Handwerger, B. Raimbault, M. G. Bato, S. Sangha, M. Govorcin, S. Staniewicz." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup your conda environment\n", + "\n", + "The following environment setup only needs to be performed **once**. To run this notebook, you need a specific environment with InSAR analysis tools.\n", + "\n", + "Open your terminal and run:\n", + "```bash\n", + "# 1. Create the environment\n", + "> conda create -n opera_disp-s1\n", + "\n", + "# 2. Activate it (required every time you open a new terminal)\n", + "> conda activate opera_disp-s1\n", + "\n", + "# 3. Install core dependencies\n", + "> conda install -c conda-forge python==3.12 jupyter ipyleaflet\n", + "```\n", + "\n", + "---\n", + "> [!TIP]\n", + "> The code cell below will automatically check for and install the remaining library dependencies (MintPy and disp-xr) if they are missing." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "### Automated Environment Check\n", + "# This cell ensures all required libraries are installed and ready to go.\n", + "\n", + "import os\n", + "import subprocess\n", + "import sys\n", + "import importlib.util\n", + "\n", + "def run(cmd):\n", + " \"\"\"Run a shell command silently.\"\"\"\n", + " subprocess.run(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)\n", + "\n", + "def install_dependencies():\n", + " \"\"\"Clone and install MintPy and disp-xr if not already present.\"\"\"\n", + " # Check for MintPy\n", + " if not os.path.exists(\"MintPy\"):\n", + " print(\"Cloning MintPy...\")\n", + " run(\"git clone https://github.com/insarlab/MintPy.git\")\n", + " run(\"pip install -e ./MintPy\")\n", + " \n", + " # Check for disp-xr\n", + " if not os.path.exists(\"disp-xr\"):\n", + " print(\"Cloning disp-xr...\")\n", + " run(\"git clone https://github.com/opera-adt/disp-xr.git\")\n", + " run(\"pip install -e ./disp-xr\")\n", + " \n", + " # Add to path regardless of installation to ensure they are available\n", + " sys.path.insert(0, os.path.abspath(\"disp-xr/src\"))\n", + " sys.path.insert(0, os.path.abspath(\"MintPy/src\"))\n", + " \n", + " # Check if a core package is missing before running bulk pip install\n", + " if importlib.util.find_spec(\"opera_utils\") is None:\n", + " print(\"Installing additional pip dependencies...\")\n", + " run(\"pip install matplotlib ipykernel pandas rasterio rioxarray asf_search opera_utils zarr s3fs dem_stitcher tile_mate contextily h5netcdf h5py ipyleaflet ipywidgets jupyter-leaflet fiona geopandas\")\n", + " \n", + " print(\"Dependencies check complete.\")\n", + "\n", + "install_dependencies()\n", + "\n", + "\n", + "### STABLE PATCH\n", + "# NOTE: This patch optimizes NetCDF encoding to ensure exported files are fully \n", + "# compatible with GIS software like QGIS and ArcGIS Pro.\n", + "import opera_utils.disp._utils as ut\n", + "import opera_utils.disp._download as dl\n", + "import opera_utils.disp._reformat as rf\n", + "from importlib import reload\n", + "\n", + "# 1. Store a clean copy of the ORIGINAL function \n", + "if not hasattr(ut, '_true_original_func'):\n", + " ut._true_original_func = ut._get_netcdf_encoding\n", + "\n", + "def patched_get_netcdf_encoding(ds, chunks=None):\n", + " encoding = ut._true_original_func(ds, chunks)\n", + " if 'y' in ds.dims and 'x' in ds.dims:\n", + " for var in ds.data_vars:\n", + " if var in encoding and 'chunksizes' in encoding[var]:\n", + " c_y, c_x = encoding[var]['chunksizes'][-2:]\n", + " if ds.y.size < c_y or ds.x.size < c_x:\n", + " del encoding[var]['chunksizes']\n", + " return encoding\n", + "\n", + "# 2. Apply the patch globally\n", + "ut._get_netcdf_encoding = patched_get_netcdf_encoding\n", + "dl._get_netcdf_encoding = patched_get_netcdf_encoding\n", + "rf._get_netcdf_encoding = patched_get_netcdf_encoding\n", + "\n", + "# 3. Restore metadata-copying logic\n", + "reload(dl)\n", + "dl._get_netcdf_encoding = patched_get_netcdf_encoding\n", + "\n", + "print(\"Global optimization patch applied.\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import base64\n", + "import glob\n", + "import os\n", + "import subprocess\n", + "import sys\n", + "from getpass import getpass\n", + "from io import BytesIO\n", + "from netrc import netrc, NetrcParseError\n", + "from platform import system\n", + "\n", + "import contextily as cx\n", + "import matplotlib.dates as mdates\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import pyproj\n", + "import rasterio as rasterio\n", + "import xarray as xr\n", + "from IPython.display import Markdown, display\n", + "from ipyleaflet import Map, ImageOverlay, LayersControl, basemaps, TileLayer, basemap_to_tiles, Rectangle, WidgetControl\n", + "from ipywidgets import Layout, VBox, Image as IPyImage, HTML, link\n", + "from matplotlib import cm, colorbar, ticker\n", + "from skimage import exposure\n", + "from skimage.color import rgb2gray\n", + "### Third party library import -- https://github.com/opera-adt/disp-xr\n", + "from disp_xr import product, stack as disp_stack, quality_metrics\n", + "import geopandas as gpd\n", + "\n", + "def plot_landslide_overlay(ax, crs_raster, color='black', linewidth=2):\n", + " \"\"\"\n", + " Optional helper to plot a landslide polygon (KML/GeoJSON) on the provided axes.\n", + " \"\"\"\n", + " if 'landslide_polygon' in globals() and landslide_polygon and os.path.exists(landslide_polygon):\n", + " try:\n", + " ext = os.path.splitext(landslide_polygon)[1].lower()\n", + " gdf_ls = gpd.read_file(landslide_polygon, driver='KML' if ext=='.kml' else None).to_crs(crs_raster)\n", + " gdf_ls.plot(ax=ax, facecolor='none', edgecolor=color, linewidth=linewidth)\n", + " return True\n", + " except Exception as e:\n", + " return False\n", + " return False\n", + "\n", + "def get_landslide_geojson():\n", + " \"\"\"Returns a GeoJSON layer for ipyleaflet if it exists.\"\"\"\n", + " if 'landslide_polygon' in globals() and landslide_polygon and os.path.exists(landslide_polygon):\n", + " try:\n", + " from ipyleaflet import GeoJSON\n", + " import json\n", + " ext = os.path.splitext(landslide_polygon)[1].lower()\n", + " gdf_ls = gpd.read_file(landslide_polygon, driver='KML' if ext=='.kml' else None).to_crs(\"EPSG:4326\")\n", + " return GeoJSON(data=json.loads(gdf_ls.to_json()), style={'color': 'black', 'fillOpacity': 0, 'weight': 2}, name='Landslide Polygon')\n", + " except:\n", + " pass\n", + " return None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Select Your Area of Interest (AOI)\n", + "\n", + "InSAR data is organized into \"frames.\" A single landslide might be visible from multiple Sentinel-1 orbits (Ascending and Descending). For the best results, you should identify which frame best covers your feature.\n", + "\n", + "1. **Go to ASF Search**: [ASF Search Portal](https://search.asf.alaska.edu/#/?zoom=8.420¢er=-122.524,39.621&polygon=POLYGON((-123.5182%2040.0462,-123.4253%2040.0462,-123.4253%2040.0878,-123.5182%2040.0878,-123.5182%2040.0462))&dataset=OPERA-S1&productTypes=DISP-S1&resultsLoaded=true&granule=OPERA_L3_DISP-S1_IW_F09158_VV_20240605T020832Z_20241226T020828Z_v1.0_20250417T234243Z)\n", + "2. **Find your Frame**: Draw a box over your landslide, select the **OPERA-S1** dataset, and product type **DISP-S1**.\n", + "3. **Copy the WKT**: Select a product and copy the \"WKT\" (Well-Known Text) geometry. Paste it into the `BBOX` variable below.\n", + "\n", + "> [!NOTE]\n", + "> Large features may span across multiple frames. This notebook allows you to easily switch between them by changing the `FRAME_ID`. Each frame's data will be stored in its own dedicated folder (e.g., `subset-ncs_FXXXXX/`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# For this example there are actually 5 frames that cover the landslide. Its important to consider all of the frames and pick the best one. This example will go through one at a time.\n", + "FRAME_ID = 30713 #DESC\n", + "# FRAME_ID = 3327 #DESC\n", + "# FRAME_ID = 28758 #ASC\n", + "# FRAME_ID = 9158 #ASC\n", + "# FRAME_ID = 9159 #ASC\n", + "\n", + "\n", + "BBOX = \"POLYGON((-123.5182 40.0462,-123.4253 40.0462,-123.4253 40.0878,-123.5182 40.0878,-123.5182 40.0462))\"\n", + "start_date = '2023-04-06'\n", + "end_date = '2024-12-31'\n", + "\n", + "# Configure paths for this frame\n", + "SUBSET_DIR = f\"subset-ncs_F{FRAME_ID}\"\n", + "EXPORT_DIR = f\"export_F{FRAME_ID}\"\n", + "\n", + "# Optional: Path to a landslide polygon (KML or GeoJSON)\n", + "# If you have a polygon of the landslide area, define it here to see it on all maps.\n", + "# landslide_polygon = None\n", + "landslide_polygon = \"landslide_polygon/BoulderCreek.kml\" #Mapped by Mackey and Roering(2011)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## NASA Earthdata Authentication\n", + "\n", + "To download OPERA products, you need a free NASA Earthdata account. The code below will securely handle your credentials.\n", + "\n", + "1. **Login**: Enter your username and password when prompted.\n", + "2. **Persistence**: Your credentials will be saved in a hidden `.netrc` file in your home directory, so you won't need to re-enter them in the future.\n", + "\n", + "🔐 Register here: [https://urs.earthdata.nasa.gov/](https://urs.earthdata.nasa.gov/)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "urs = 'urs.earthdata.nasa.gov'\n", + "prompts = ['Enter NASA Earthdata Login Username: ',\n", + " 'Enter NASA Earthdata Login Password: ']\n", + "\n", + "netrc_name = \"_netrc\" if system() == \"Windows\" else \".netrc\"\n", + "netrc_path = os.path.expanduser(f\"~/{netrc_name}\")\n", + "\n", + "def write_netrc():\n", + " username = getpass(prompt=prompts[0])\n", + " password = getpass(prompt=prompts[1])\n", + " with open(netrc_path, 'a') as f:\n", + " f.write(f\"\\nmachine {urs}\\n\")\n", + " f.write(f\"login {username}\\n\")\n", + " f.write(f\"password {password}\\n\")\n", + " os.chmod(netrc_path, 0o600)\n", + "\n", + "def has_urs_credentials():\n", + " try:\n", + " creds = netrc(netrc_path).authenticators(urs)\n", + " return creds is not None\n", + " except (FileNotFoundError, NetrcParseError):\n", + " return False\n", + "\n", + "if not has_urs_credentials():\n", + " if not os.path.exists(netrc_path):\n", + " open(netrc_path, 'w').close()\n", + " write_netrc()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download Cropped DISP-S1 Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Run twice to ensure download success\n", + "\n", + "from opera_utils.disp._download import run_download\n", + "from dateutil.parser import parse\n", + "from pathlib import Path\n", + "\n", + "# Convert types for the library\n", + "start_dt = parse(start_date)\n", + "end_dt = parse(end_date)\n", + "out_path = Path(SUBSET_DIR)\n", + "\n", + "\n", + "# Optimize download speed: Use 1 worker for small areas (<0.1°) to avoid overhead, \n", + "# and 4 workers for larger regions to enable parallel downloading.\n", + "NUM_DOWNLOAD_WORKERS = 1 if abs(eval(BBOX.split(\"((\")[1].split(\",\")[0].split()[0]) - eval(BBOX.split(\"((\")[1].split(\",\")[1].split()[0])) < 0.1 else 4\n", + "\n", + "# This runs the download directly in the notebook's memory, ensuring our patch is used\n", + "print(\"Starting download...\")\n", + "run_download(\n", + " output_dir=out_path, # Now passing a Path object\n", + " wkt=BBOX, # Your WKT string\n", + " frame_id=FRAME_ID,\n", + " start_datetime=start_dt, # Datetime object\n", + " end_datetime=end_dt, # Datetime object\n", + " num_workers=NUM_DOWNLOAD_WORKERS # Single worker\n", + ")\n", + "print(\"Finished!\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## Search for failed dowloads and remove. Then go back and repeat download step as needed\n", + "\n", + "import os\n", + "import glob\n", + "import numpy as np\n", + "\n", + "files = glob.glob(f\"{SUBSET_DIR}/*.nc\")\n", + "\n", + "if files:\n", + " # Calculate the median file size (the \"standard\" size)\n", + " sizes = [os.path.getsize(f) for f in files]\n", + " median_size = np.median(sizes)\n", + " print(f\"Median file size is: {median_size / 1024:.2f} KB\")\n", + "\n", + " # Delete files that are drastically smaller (e.g., < 50% of the median)\n", + " threshold = median_size * 0.5\n", + " deleted_count = 0\n", + "\n", + " for f, size in zip(files, sizes):\n", + " if size < threshold:\n", + " print(f\"Deleting outlier ({size/1024:.2f} KB): {f}\")\n", + " os.remove(f)\n", + " deleted_count += 1\n", + "\n", + " print(f\"Cleanup complete! Removed {deleted_count} outliers.\")\n", + "else:\n", + " print(\"No files found to check.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ministack Structure and Layers\n", + "\n", + "This step sets up the workspace for your selected DISP-S1 frame. It then displays a scatter plot of available acquisition pairs, based on the downloaded granules.\n", + "\n", + "In DISP-S1:\n", + "- A ministack consists of up to 15 acquisition dates\n", + "- All displacements are measured **relative to a fixed reference date**\n", + "- The plot shows:\n", + " - **x-axis**: reference date (the same across the stack)\n", + " - **y-axis**: each secondary date paired with that reference\n", + "- This results in a vertical alignment of dots in the scatter plot with one column per ministack\n", + "\n", + "Each point represents a pair of dates over which cumulative displacement is measured from the reference." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load displacement info from the directory\n", + "nc_dir = SUBSET_DIR\n", + "disp_df = product.get_disp_info(nc_dir)\n", + "\n", + "# Group by version\n", + "versions = {}\n", + "for version in disp_df[\"version\"].unique():\n", + " df = disp_df[disp_df[\"version\"] == version].copy()\n", + " versions[version] = df\n", + " print(f\"{version}, size: {df.shape[0]}\")\n", + "\n", + "# Plot Date1 vs Date2 for each version\n", + "for version, df in versions.items():\n", + " df[\"date1\"] = pd.to_datetime(df[\"date1\"], format=\"%Y%m%d\")\n", + " df[\"date2\"] = pd.to_datetime(df[\"date2\"], format=\"%Y%m%d\")\n", + "\n", + " fig, ax = plt.subplots(figsize=(8, 6))\n", + " ax.scatter(df[\"date1\"], df[\"date2\"], alpha=0.7, marker=\"o\", color=\"b\")\n", + " ax.set_xlabel(\"Reference (Start Date)\")\n", + " ax.set_ylabel(\"Secondary (End Date)\")\n", + " ax.set_title(\"Ministacking Structure from the downloaded OPERA DISP-S1 NetCDF files\")\n", + " ax.grid(True)\n", + " plt.tight_layout()\n", + " plt.show()\n", + " \n", + "print('Files information:')\n", + "disp_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualize the displacement contained in one file\n", + "\n", + "What you'll see on the following maps is the displacement value for the last file in the stack, meaning it shows the cumulative deformation between the two dates.\n", + "\n", + "- The left panel shows the displacement in **UTM coordinates**, which maintains the original projection of the dataset.\n", + "- The right panel shows the same displacement data but **reprojected to geographic coordinates (EPSG:4326)**, using latitude and longitude.\n", + "\n", + "- Colors represent motion in the satellite's line-of-sight (LOS) direction \n", + " - **Negative** indicates motion **away** from the satellite \n", + " - **Positive** indicates motion **toward** the satellite" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "row = disp_df.iloc[-1]\n", + "# (Assuming 'row' is already defined from your dataframe)\n", + "ds = xr.open_dataset(row.path, chunks={\"time\": 1})\n", + "\n", + "# 2. Format Dates\n", + "d1 = pd.to_datetime(row.date1, format=\"%Y%m%d\").date()\n", + "d2 = pd.to_datetime(row.date2, format=\"%Y%m%d\").date()\n", + "\n", + "# 3. Mask and Select Data\n", + "da = ds.where(ds.recommended_mask == 1).isel(time=-1).displacement\n", + "\n", + "\n", + "# vmin, vmax = da.quantile([0.02, 0.98]).values\n", + "\n", + "# limit = abs(da).max().values\n", + "# 2. Set vmin and vmax symmetrically\n", + "# vmin, vmax = -limit, limit\n", + "# print(f\"Color scale limits set to: {vmin:.3f} to {vmax:.3f}\")\n", + "# ---------------------------------------------------------------\n", + "\n", + "# 4. Reproject to Lat/Lon\n", + "da.rio.write_crs(pyproj.CRS(ds.spatial_ref.attrs['crs_wkt']).to_epsg(), inplace=True)\n", + "da.rio.set_spatial_dims(x_dim=\"x\", y_dim=\"y\", inplace=True)\n", + "da_4326 = da.rio.reproject(\"EPSG:4326\", resampling=rasterio.enums.Resampling.bilinear)\n", + "\n", + "# 5. Plotting\n", + "# constrained_layout=True is generally better than tight_layout for \n", + "# handling shared colorbars and keeping subplot sizes consistent.\n", + "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6), constrained_layout=True)\n", + "\n", + "# --- Left Plot: UTM ---\n", + "# Note: add_colorbar=False is crucial here to keep the plot size consistent\n", + "da.plot.imshow(\n", + " ax=ax1, \n", + " cmap=\"RdBu_r\", \n", + " # vmin=vmin, \n", + " # vmax=vmax, \n", + " add_colorbar=False\n", + ")\n", + "# Assuming 'plot_landslide_overlay' is your custom function defined elsewhere\n", + "plot_landslide_overlay(ax1, da.rio.crs)\n", + "ax1.set_title(\"UTM coordinates\")\n", + "\n", + "# --- Right Plot: Lat/Lon ---\n", + "# Note: We use the same vmin/vmax so the colors mean the same thing\n", + "im = da_4326.plot.imshow(\n", + " ax=ax2, \n", + " cmap=\"RdBu_r\", \n", + " # vmin=vmin, \n", + " # vmax=vmax, \n", + " add_colorbar=False\n", + ")\n", + "plot_landslide_overlay(ax2, \"EPSG:4326\")\n", + "\n", + "# Format Lat/Lon ticks\n", + "ax2.xaxis.set_major_formatter(ticker.FuncFormatter(lambda x, _: f\"{x:.2f}°E\"))\n", + "ax2.yaxis.set_major_formatter(ticker.FuncFormatter(lambda y, _: f\"{y:.2f}°N\"))\n", + "ax2.set_xlabel(\"Longitude\")\n", + "ax2.set_ylabel(\"Latitude\")\n", + "ax2.set_title(\"Reprojected to EPSG:4326\")\n", + "\n", + "# 6. Shared Colorbar\n", + "# We attach the colorbar to the figure, referencing the mappable 'im'\n", + "cbar = fig.colorbar(im, ax=[ax1, ax2], label=\"Line-of-sight displacement [meters]\", aspect=30)\n", + "\n", + "# fig.suptitle(title, fontsize=14)\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stacking the OPERA DISP-S1 Files\n", + "\n", + "The `stack_prod` object is an `xarray.Dataset` that represents the full stack of DISP-S1 data loaded from the downloaded DISP-S1 NetCDF files.\n", + "\n", + "As shown below, the dataset includes:\n", + "- **Coordinates**: spatial (x, y) and temporal (time) axes\n", + "- **Data variables**: multiple layers beyond just displacement\n", + "- **Attributes**: metadata describing the product version, projection, mission, and contact info\n", + "\n", + "While the **`displacement`** variable is the main product of interest (cumulative surface motion in the LOS from the reference date), DISP-S1 products also include a variety of **supporting layers**.\n", + "\n", + "> [!IMPORTANT]\n", + "> **Reference Date Context**: \n", + "> - The **first time value** in the `time` coordinate is the **reference date**.\n", + "> - **All displacement values are cumulative from this reference date**.\n", + "> - Displacement at time index 0 should be ~0 as it represents the reference point in time.\n", + "> - Each subsequent time step shows cumulative displacement relative to the first reference date.\n", + "> - After you select a **spatial reference point** below, all pixels will be adjusted relative to that location, but the temporal reference remains unchanged.\n", + "\n", + "📌 A more detailed explanation of each layer will be provided later in the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the full ministack time series with ALL time steps preserved\n", + "stack_prod = disp_stack.combine_disp_product(disp_df)\n", + "\n", + "# IMPORTANT: Do NOT remove the first time step or recompute differences!\n", + "# The displacement values are ALREADY cumulative from the reference date (first date in stack_prod[\"time\"]).\n", + "# Time index 0 = reference date (zero displacement), Time indices 1+ = cumulative displacements.\n", + "\n", + "reference_date = pd.to_datetime(stack_prod.time.values[0]).strftime(\"%Y-%m-%d\")\n", + "epsg = pyproj.CRS(stack_prod.spatial_ref.attrs['crs_wkt']).to_epsg()\n", + "print(f'Stack information (displacement is cumulative from reference date {reference_date}):')\n", + "print(stack_prod)\n", + "print(f'\\nTime coordinate (first={reference_date} = reference date with zero displacement):')\n", + "print(stack_prod.time.values)\n", + "\n", + "n_ministacks = int(disp_df[\"date1\"].nunique())\n", + "print(n_ministacks)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a Reference Point for Spatial Referencing\n", + "\n", + "InSAR displacement measurements are **relative in both space and time**. The displacement values in your stack are **cumulative from the temporal reference date**, but to properly visualize and analyze them, you should choose a **local spatial reference point** to remove non-local noise.\n", + "\n", + "The spatial reference point should be:\n", + "- Not moving during the observed time period (e.g., solid bedrock, stable infrastructure) \n", + "- Located near your area of interest (to capture differential motion relative to it)\n", + "- High Coherence\n", + "\n", + "Once selected, all pixel values in the stack will have this point's displacement subtracted from them, creating a **relative displacement map** where your reference point has ~0 displacement and all other pixels show motion relative to that point.\n", + "\n", + "> [!IMPORTANT]\n", + "> **Temporal vs. Spatial Reference**:\n", + "> - **Temporal Reference**: The first date in the stack — all values are cumulative from this date\n", + "> - **Spatial Reference**: The point you select below — all pixel values will be relative to this location\n", + "> - These are independent: the temporal reference stays fixed, only the spatial reference changes\n", + "\n", + "💡 Choosing a good reference is important: a stable or nearby point helps isolate the motion you're investigating. We recommend picking a point using the interactive map below or in another map viewer such as Google Earth. Please ensure the pixel is not masked out." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from ipyleaflet import FullScreenControl, ImageOverlay, Marker\n", + "import base64\n", + "from io import BytesIO\n", + "from PIL import Image\n", + "from ipywidgets import Output, VBox\n", + "\n", + "# Define Tile Layers\n", + "mapnik = basemap_to_tiles(basemaps.OpenStreetMap.Mapnik)\n", + "mapnik.name = 'OpenStreetMap'\n", + "\n", + "topo = basemap_to_tiles(basemaps.OpenTopoMap)\n", + "topo.name = 'OpenTopoMap'\n", + "\n", + "Esritopo = basemap_to_tiles(basemaps.Esri.WorldTopoMap)\n", + "Esritopo.name = 'Esri World Topo Map'\n", + "\n", + "Esri = basemap_to_tiles(basemaps.Esri.WorldImagery)\n", + "Esri.name = 'Esri World Imagery'\n", + "\n", + "# 1. Create InSAR Displacement Overlay (Transparent NaNs)\n", + "# Use 2nd and 98th percentile for robust scaling\n", + "vmin, vmax = np.nanpercentile(da_4326.values, [2, 98])\n", + "\n", + "cmap = plt.get_cmap('RdBu_r')\n", + "norm = plt.Normalize(vmin, vmax)\n", + "data = da_4326.values\n", + "rgba_data = cmap(norm(data))\n", + "\n", + "# Set alpha channel to 0 for NaNs (this makes the background transparent)\n", + "rgba_data[np.isnan(data), 3] = 0\n", + "\n", + "img = Image.fromarray((rgba_data * 255).astype(np.uint8))\n", + "output_img = BytesIO()\n", + "img.save(output_img, format='PNG')\n", + "url = \"data:image/png;base64,\" + base64.b64encode(output_img.getvalue()).decode()\n", + "\n", + "bounds = [[float(da_4326.y.min()), float(da_4326.x.min())], [float(da_4326.y.max()), float(da_4326.x.max())]]\n", + "insar_layer = ImageOverlay(url=url, bounds=bounds, name='InSAR Displacement', opacity=0.8)\n", + "\n", + "# 2. Map initialization\n", + "center_lat = da_4326.y.values[len(da_4326.y)//2]\n", + "center_lon = da_4326.x.values[len(da_4326.x)//2]\n", + "\n", + "ls_layer = get_landslide_geojson()\n", + "m = Map(\n", + " center=(center_lat, center_lon),\n", + " zoom=12,\n", + " scroll_wheel_zoom=True,\n", + " layers = [mapnik, topo, Esritopo, Esri, insar_layer] + ([ls_layer] if ls_layer else []),\n", + " layout=Layout(width='100%', height='600px')\n", + ")\n", + "\n", + "m.add_control(LayersControl())\n", + "m.add_control(FullScreenControl())\n", + "\n", + "# 3. Click handler with Marker feedback and Output widget\n", + "out = Output()\n", + "click_marker = Marker(location=(center_lat, center_lon), draggable=False, name=\"Last Click\")\n", + "processing = [False] # Lock to prevent concurrent processing\n", + "\n", + "def handle_interaction(**kwargs):\n", + " if kwargs.get('type') == 'click':\n", + " # If already processing a click, ignore this event\n", + " if processing[0]:\n", + " return\n", + " \n", + " processing[0] = True # Set lock\n", + " \n", + " try:\n", + " lat, lon = kwargs.get('coordinates')\n", + " click_marker.location = (lat, lon)\n", + " if click_marker not in m.layers:\n", + " m.add_layer(click_marker)\n", + " with out:\n", + " out.clear_output()\n", + " print(f\"Selected Coordinates: {lat:.6f}, {lon:.6f}\")\n", + " finally:\n", + " # Release lock after a short delay to ignore rapid-fire events\n", + " import time\n", + " time.sleep(0.3)\n", + " processing[0] = False\n", + "\n", + "m.on_interaction(handle_interaction)\n", + "\n", + "display(VBox([m, out]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 📍 Interactive Point Selection\n", + "\n", + "Use the map above to select two points for analysis:\n", + "1. **Reference Point**: This point defines the \"zero\" for your displacement measurements. Choose a location that you believe is stable (e.g., solid bedrock away from the landslide).\n", + "2. **Target Point (Red)**: This is the location where you want to inspect the displacement time series (e.g., the middle of the landslide).\n", + "\n", + "> [!TIP]\n", + "> After clicking, the coordinates will be printed below the map. Copy and paste them into the code cell below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# -------------------------------------------------------------------------\n", + "# PASTE YOUR COORDINATES HERE\n", + "# -------------------------------------------------------------------------\n", + "lat_ref, lon_ref = 40.080838, -123.440602 # Blue Marker (Stable Area)\n", + "lat_4ts, lon_4ts = 40.062997, -123.486564 # Red Marker (Landslide Analysis)\n", + "\n", + "# -------------------------------------------------------------------------\n", + "\n", + "import pyproj\n", + "import xarray as xr\n", + "\n", + "# Convert to UTM for precise spatial selection\n", + "epsg = pyproj.CRS(stack_prod.spatial_ref.attrs[\"crs_wkt\"]).to_epsg()\n", + "proj = pyproj.Transformer.from_crs(\"EPSG:4326\", f\"EPSG:{epsg}\", always_xy=True)\n", + "ref_x, ref_y = proj.transform(lon_ref, lat_ref)\n", + "ts_x, ts_y = proj.transform(lon_4ts, lat_4ts)\n", + "\n", + "# Calibrate the stack: All displacement is now relative to your reference point\n", + "# NOTE: Displacement values remain CUMULATIVE from the temporal reference date (first date in stack_prod[\"time\"])\n", + "reference_date = pd.to_datetime(stack_prod[\"time\"].values[0]).strftime(\"%Y-%m-%d\")\n", + "ref_disp = stack_prod.sel(x=ref_x, y=ref_y, method='nearest').displacement\n", + "stack_prod['displacement'] = stack_prod.displacement - ref_disp\n", + "\n", + "print(f\"Reference point (stable): ({lat_ref:.4f}, {lon_ref:.4f})\")\n", + "print(f\"Target point (analysis): ({lat_4ts:.4f}, {lon_4ts:.4f})\")\n", + "print(f\"\\nApplied spatial calibration. All displacements are now relative to the reference point, cumulative from {reference_date}.\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Interpreting Quality Metrics and Results\n", + "\n", + "Now that we've referenced our data, let's look at the movement. However, not all pixels are equally reliable. InSAR measurements can be affected by vegetation, steep terrain, or water.\n", + "\n", + "### How to Read the Map:\n", + "- **Color Spectrum (RdBu)**: \n", + " - **Red (Negative Values)**: The ground is moving **away** from the satellite (e.g., downslope movement).\n", + " - **Blue (Positive Values)**: The ground is moving **toward** the satellite.\n", + "- **Intensity**: Darker colors represent more significant displacement.\n", + "\n", + "### Quality Layers:\n", + "- **Temporal Coherence**: A value from 0 to 1. Areas with coherence **> 0.7** are generally considered highly reliable. Low coherence usually indicates dense vegetation or significant surface changesthat decorrelate the signal.\n", + "- **Recommended Mask**: This layer automatically flags pixels that are likely unreliable (water, low coherence). In the visualization below, we apply this mask to focus only on trustworthy data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# NOTE: These are cumulative displacement values from the reference date (first date in stack_prod[\"time\"]) through the last date.\n", + "# The displacement represents ground motion in the Line-of-Sight (LOS) direction.\n", + "def get_baseimage_from_bounds(bounds, source, grayscale=False, gamma=None, log=None, zoom='auto'):\n", + " xmin, ymin, xmax, ymax = bounds\n", + " left, right, bottom, top = cx.plotting._reproj_bb(xmin, xmax, ymin, ymax, 'EPSG:4326', \"epsg:3857\")\n", + " image, extent = cx.tile.bounds2img(left, bottom, right, top, zoom=zoom, source=source, ll=False)\n", + " image, extent = cx.tile.warp_tiles(image, extent, t_crs='EPSG:4326', resampling=rasterio.enums.Resampling.bilinear)\n", + " if grayscale:\n", + " image = rgb2gray(image[:, :, :3])\n", + " if gamma is not None:\n", + " image = exposure.adjust_gamma(image, gamma)\n", + " if log is not None:\n", + " image = exposure.adjust_log(image, log)\n", + " return image, extent\n", + "\n", + "# Preprocess displacement\n", + "buffer_fraction = 0.015\n", + "da = stack_prod.isel(time=-1).displacement * 100 # cm\n", + "mask = stack_prod.isel(time=-1).recommended_mask\n", + "water = stack_prod.isel(time=-1).water_mask\n", + "da = da.where((mask == 1) & (water == 1))\n", + "\n", + "# Set CRS and reproject\n", + "da.rio.write_crs(epsg, inplace=True)\n", + "da.rio.set_spatial_dims(x_dim=\"x\", y_dim=\"y\", inplace=True)\n", + "da_4326 = da.rio.reproject(\"EPSG:4326\", resampling=rasterio.enums.Resampling.bilinear)\n", + "\n", + "# Buffer bounds\n", + "xmin, ymin, xmax, ymax = da_4326.rio.bounds()\n", + "x_pad = (xmax - xmin) * buffer_fraction\n", + "y_pad = (ymax - ymin) * buffer_fraction\n", + "buffered_bounds = [xmin - x_pad, ymin - y_pad, xmax + x_pad, ymax + y_pad]\n", + "extent = [buffered_bounds[0], buffered_bounds[2], buffered_bounds[1], buffered_bounds[3]]\n", + "\n", + "# Normalize\n", + "v = np.nanpercentile(da_4326.values, [2, 98])\n", + "vmax = max(abs(v[0]), abs(v[1]))\n", + "vmin = -vmax\n", + "\n", + "# Plot setup\n", + "fig, ax = plt.subplots(figsize=(10, 8))\n", + "ax.set_xlim(extent[0], extent[1])\n", + "ax.set_ylim(extent[2], extent[3])\n", + "\n", + "# Add basemap\n", + "bg, bg_extent = get_baseimage_from_bounds(buffered_bounds, source=cx.providers.Esri.WorldImagery, grayscale=True, gamma=0.9)\n", + "ax.imshow(bg, extent=bg_extent, cmap=\"gray\", origin=\"upper\", zorder=1)\n", + "\n", + "# Displacement overlay\n", + "ax.imshow(da_4326.values, extent=[xmin, xmax, ymin, ymax], cmap=plt.get_cmap(\"RdBu_r\"), vmin=vmin, vmax=vmax, alpha=0.6, origin=\"upper\", zorder=2)\n", + "\n", + "# Reference point\n", + "ax.scatter(lon_ref, lat_ref, color=\"yellow\", s=30, label=\"Reference Point\", zorder=3)\n", + "ax.scatter(lon_4ts, lat_4ts, color=\"magenta\", s=30, label=\"TS Point\", zorder=3)\n", + "\n", + "# Colorbar\n", + "cbar = plt.colorbar(ax.images[1], ax=ax, shrink=0.6, pad=0.04)\n", + "cbar.set_label(f\"Displacement [cm] (relative to {pd.to_datetime(stack_prod['time'].values[0]).strftime('%Y-%m-%d')})\")\n", + "\n", + "# Add ticks\n", + "ax.set_xticks(np.linspace(extent[0], extent[1], 5))\n", + "ax.set_yticks(np.linspace(extent[2], extent[3], 5))\n", + "ax.xaxis.set_major_formatter(ticker.FuncFormatter(lambda x, _: f\"{x:.2f}°E\"))\n", + "ax.yaxis.set_major_formatter(ticker.FuncFormatter(lambda y, _: f\"{y:.2f}°N\"))\n", + "ax.tick_params(left=True, bottom=True, labelleft=True, labelbottom=True)\n", + "plot_landslide_overlay(ax, \"EPSG:4326\")\n", + "\n", + "# Attribution\n", + "ax.annotate(\n", + " \"Tiles © Esri — Sources: Esri, DigitalGlobe, GeoEye, i-cubed, USDA FSA, USGS, AEX, \"\n", + " \"Getmapping, Aerogrid, IGN, IGP, swisstopo, and the GIS User Community\",\n", + " xy=(0.5, -0.12), xycoords='axes fraction',\n", + " ha='center', va='top', fontsize=6, color='gray'\n", + ")\n", + "\n", + "\n", + "ax.legend()\n", + "ax.set_title(f\"OPERA DISP-S1 Cumulative Displacement [cm] (relative to {pd.to_datetime(stack_prod['time'].values[0]).strftime('%Y-%m-%d')})\")\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot a time series\n", + "\n", + "\n", + "**Note**:\n", + "- If you select the reference point, the plot should display only zeros, because **all displacement is measured relative to this reference point**.\n", + "- As you move farther away from the reference point, the data may appear noisier, due to spatial decorrelation and atmospheric effects.\n", + "- The **first date** in the time series serves as the **temporal reference**, meaning all displacement values are relative to this initial timestamp.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define the target point\n", + "\n", + "# Get EPSG from dataset\n", + "proj = pyproj.Transformer.from_crs(\"EPSG:4326\", f\"EPSG:{epsg}\", always_xy=True)\n", + "x_click, y_click = proj.transform(lon_4ts, lat_4ts)\n", + "\n", + "# Find nearest grid point\n", + "x_coords = stack_prod.x.values\n", + "y_coords = stack_prod.y.values\n", + "x_nearest = x_coords[np.argmin(np.abs(x_coords - x_click))]\n", + "y_nearest = y_coords[np.argmin(np.abs(y_coords - y_click))]\n", + "distance = np.sqrt((x_click - x_nearest)**2 + (y_click - y_nearest)**2)\n", + "\n", + "# Check distance threshold\n", + "if distance > 100:\n", + " print(f\"Point too far from valid pixel (distance = {distance:.1f} m)\")\n", + "else:\n", + " # Check masks\n", + " mask_val = stack_prod.sel(x=x_nearest, y=y_nearest, method=\"nearest\").isel(time=-1).recommended_mask.values\n", + " water_val = stack_prod.sel(x=x_nearest, y=y_nearest, method=\"nearest\").isel(time=-1).water_mask.values\n", + "\n", + " if mask_val != 1 or water_val != 1:\n", + " print(\"Selected point is masked out or on water.\")\n", + " else:\n", + " # Get displacement\n", + " disp = stack_prod.sel(x=x_nearest, y=y_nearest, method=\"nearest\").displacement\n", + " # Plot time series\n", + " dates = pd.to_datetime(stack_prod.time.values)\n", + " reference_date = dates[0].strftime(\"%Y-%m-%d\")\n", + " plt.figure(figsize=(10, 4))\n", + " plt.scatter(dates, disp.values * 100, s=10, color='black')\n", + " plt.title(f\"Displacement Time Series (cm)\\nLat={lat_4ts:.4f}, Lon={lon_4ts:.4f}\\nRelative to {reference_date}\")\n", + " plt.xlabel(\"Time\")\n", + " plt.ylabel(f\"LOS Displacement (cm)\\n[relative to {reference_date}]\")\n", + " plt.grid(True)\n", + " plt.gca().xaxis.set_major_locator(mdates.AutoDateLocator())\n", + " plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + " plt.tight_layout()\n", + " plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inspect DISP-S1 Data Layers and their Attributes\n", + "\n", + "This step prints detailed information about the variables contained in the DISP-S1 data stack.\n", + "\n", + "For each variable (e.g., displacement, coherence, phase similarity), the function will display:\n", + "- The **data type**, and **description** of what the layer represents\n", + "- Units, if available\n", + "- Any relevant metadata or processing notes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "variables = list(stack_prod.data_vars.items())\n", + "\n", + "output_lines = []\n", + "\n", + "for var_name, da in variables[3:]:\n", + " output_lines.append(f\"### Layer: `{var_name}`\")\n", + " for attr_name, attr_val in da.attrs.items():\n", + " output_lines.append(f\"- **{attr_name}**: {attr_val}\")\n", + " output_lines.append(\"\") # empty line between variables\n", + "\n", + "# Display once, in one cell\n", + "display(Markdown(\"\\n\".join(output_lines)))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from mpl_toolkits.axes_grid1 import ImageGrid\n", + "import pyproj\n", + "\n", + "\n", + "variables = list(ds.data_vars.keys())\n", + "plot_vars = variables[2:] \n", + "num_vars = len(plot_vars)\n", + "\n", + "# Determine grid layout\n", + "grid_cols = 4 \n", + "grid_rows = int(np.ceil(num_vars / grid_cols))\n", + "\n", + "fig = plt.figure(figsize=(20, 5 * grid_rows))\n", + "\n", + "grid = ImageGrid(fig, 111, \n", + " nrows_ncols=(grid_rows, grid_cols),\n", + " axes_pad=0.7, \n", + " share_all=False,\n", + " cbar_location=\"right\",\n", + " cbar_mode=\"each\",\n", + " cbar_size=\"5%\",\n", + " cbar_pad=0.1,\n", + " )\n", + "\n", + "epsg = pyproj.CRS(ds.spatial_ref.attrs[\"crs_wkt\"]).to_epsg()\n", + "\n", + "for i, ax in enumerate(grid):\n", + " if i < len(plot_vars):\n", + " var_name = plot_vars[i]\n", + " data_ = ds[var_name]\n", + "\n", + " # make it 2D and give it spatial metadata\n", + " if \"time\" in data_.dims:\n", + " data_ = data_.isel(time=-1)\n", + " data_ = data_.rio.write_crs(epsg)\n", + " data_ = data_.rio.set_spatial_dims(x_dim=\"x\", y_dim=\"y\")\n", + "\n", + " cmap = \"viridis\"\n", + " vmin = vmax = None\n", + " if var_name in [\"displacement\", \"short_wavelength_displacement\"]:\n", + " cmap = \"RdBu_r\"\n", + " vals = data_.values.ravel()\n", + " vals = vals[~np.isnan(vals)]\n", + " if len(vals) > 0:\n", + " p2, p98 = np.percentile(vals, [2, 98])\n", + " max_val = max(abs(p2), abs(p98))\n", + " vmin, vmax = -max_val, max_val\n", + "\n", + " im = data_.plot(ax=ax, cmap=cmap, vmin=vmin, vmax=vmax, add_colorbar=False)\n", + " ax.cax.colorbar(im).set_label(var_name)\n", + " ax.ticklabel_format(style=\"sci\", axis=\"both\", scilimits=(0, 0))\n", + " ax.set_title(var_name)\n", + " plot_landslide_overlay(ax, data_.rio.crs)\n", + " else:\n", + " ax.set_visible(False)\n", + " ax.cax.set_visible(False)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quality Metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Spatial Quality Metrics Overview\n", + "\n", + "The following step summarizes the **spatial quality** of the stack. These percentages help you decide if the data quality is sufficient for your analysis or if you need to adjust your approach (e.g., choosing a different Reference Point or being cautious about noise).\n", + "\n", + "- **% Persistent Scatterers (PS)**\n", + " - **Definition:** The fraction of pixels that consistently reflect radar signals (e.g., buildings, rocks).\n", + " - **Interpretation:**\n", + " - **High (>10%):** Excellent for long-term monitoring; you have many reliable points.\n", + " - **Low (<1%):** Common in vegetated or snowy areas. You may need to rely more on the \"Recommended Mask\" or spatial filtering, as point-by-point analysis might be noisy.\n", + "\n", + "- **% Valid Time Series Pixels**\n", + " - **Definition:** The proportion of pixels flagged as \"good\" by the standard OPERA quality mask (combines coherence, water masking, etc.).\n", + " - **Interpretation:**\n", + " - **High (>50%):** You have broad coverage of the landslide.\n", + " - **Low (<10%):** The area is likely decorrelated (dense vegetation, snow, or rapid motion).\n", + " - **Action:** Be skeptical of \"isolated\" pixels. Ensure your Reference Point is within the valid area, otherwise your entire time series may drift.\n", + "\n", + "- **% Connected Component Valid**\n", + " - **Definition:** The average percentage of time steps in the ministacks where pixels were part of a valid connected component (i.e., successfully unwrapped relative to their neighbors).\n", + " - **Interpretation:**\n", + " - **High (close to 100%):** The phase unwrapping is **temporally stable**. These pixels were reliably connected to the rest of the image throughout the entire time period.\n", + " - **Low (< 50%):** The phase unwrapping is unstable or frequently fails (breaks) at these locations.\n", + " - **Action:** If this number is low for your area of interest, the displacement time series might have \"phase jumps\" or unphysical discontinuities. You should inspect the time series plot carefully for sudden jumps that don't match the expected landslide motion." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pyproj\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Percent of ones helper (drop the ref time step)\n", + "def pct_of_ones(arr):\n", + " arr = arr.isel(time=slice(1, None))\n", + " return (arr == 1).sum(dim=\"time\") / arr.sizes[\"time\"] * 100\n", + "\n", + "pct_ps = pct_of_ones(stack_prod.persistent_scatterer_mask)\n", + "pct_mask = pct_of_ones(stack_prod.recommended_mask)\n", + "pct_conn = pct_of_ones(stack_prod.connected_component_labels)\n", + "\n", + "# CRS and extent (UTM)\n", + "crs_raster = pyproj.CRS(stack_prod.spatial_ref.attrs[\"crs_wkt\"])\n", + "extent = [float(stack_prod.x.min()), float(stack_prod.x.max()),\n", + " float(stack_prod.y.min()), float(stack_prod.y.max())]\n", + "\n", + "cmap_pct = \"cividis\" # or \"Greys\", \"YlGnBu\", \"magma\"\n", + "\n", + "fig, ax = plt.subplots(1, 3, figsize=(15, 5))\n", + "im1 = ax[0].imshow(np.ma.masked_equal(pct_ps, 0), extent=extent, cmap=cmap_pct,\n", + " clim=[0, 30], interpolation=\"nearest\", origin=\"upper\")\n", + "im2 = ax[1].imshow(np.ma.masked_equal(pct_mask, 0), extent=extent, cmap=cmap_pct,\n", + " clim=[0, 100], interpolation=\"nearest\", origin=\"upper\")\n", + "im3 = ax[2].imshow(np.ma.masked_equal(pct_conn, 0), extent=extent, cmap=cmap_pct,\n", + " clim=[0, 100], interpolation=\"nearest\", origin=\"upper\")\n", + "\n", + "titles = [\n", + " \"Persistent Scatterers (% of stack)\",\n", + " \"Valid Pixels (% of stack)\",\n", + " \"Valid Conncomp (% of stack)\",\n", + "]\n", + "\n", + "for a, im, lbl, title in zip(ax, [im1, im2, im3], [\"% PS\", \"% Valid\", \"% Valid Conn\"], titles):\n", + " fig.colorbar(im, ax=a, orientation=\"horizontal\", label=lbl, pad=0.15)\n", + " a.set_aspect(\"equal\")\n", + " a.set_title(title)\n", + " a.set_xlabel(\"Easting (m)\")\n", + " a.set_ylabel(\"Northing (m)\")\n", + " a.ticklabel_format(style=\"sci\", axis=\"both\", scilimits=(0, 0))\n", + " plot_landslide_overlay(a, crs_raster)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This following step computes and displays quality indicators for the displacement stack based on metrics derived from the data:\n", + "\n", + "- **Median Temporal Coherence**: Indicates the overall stability of the interferometric signal over time. Higher values suggest more reliable measurements.\n", + "\n", + "- **Median Phase Similarity**: Reflects how consistent the phase is within local neighborhoods. Useful for identifying noisy or unstable areas.\n", + "\n", + "- **Total Number of 2π Phase Jumps**: A diagnostic for phase unwrapping issues. A high count may indicate discontinuities or noise artifacts.\n", + "\n", + "These metrics provide a summary of the stack’s integrity and can help you decide whether to proceed with or filter out unreliable areas.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pyproj\n", + "\n", + "# Stats\n", + "median_tcoh = quality_metrics.get_stack_stat(stack_prod.temporal_coherence.isel(time=slice(1, None)), mode=\"median\")\n", + "median_psim = quality_metrics.get_stack_stat(stack_prod.phase_similarity.isel(time=slice(1, None)), mode=\"median\")\n", + "inv_res_sum = quality_metrics.get_stack_stat(stack_prod.timeseries_inversion_residuals.isel(time=slice(1, None)), mode=\"sum\")\n", + "num_2pi_jump = inv_res_sum / (2 * np.pi)\n", + "\n", + "# CRS + extent (UTM)\n", + "crs_raster = pyproj.CRS(stack_prod.spatial_ref.attrs[\"crs_wkt\"])\n", + "xmin, xmax = float(stack_prod.x.min()), float(stack_prod.x.max())\n", + "ymin, ymax = float(stack_prod.y.min()), float(stack_prod.y.max())\n", + "extent = [xmin, xmax, ymin, ymax]\n", + "\n", + "fig, ax = plt.subplots(1, 3, figsize=(14, 4.5))\n", + "im1 = ax[0].imshow(np.ma.masked_equal(median_tcoh, 0), extent=extent, origin=\"upper\",\n", + " cmap=\"afmhot\", clim=[0, 1], interpolation=\"nearest\")\n", + "im2 = ax[1].imshow(np.ma.masked_equal(median_psim, 0), extent=extent, origin=\"upper\",\n", + " cmap=\"afmhot\", clim=[0, 1], interpolation=\"nearest\")\n", + "im3 = ax[2].imshow(np.ma.masked_equal(num_2pi_jump, 0), extent=extent, origin=\"upper\",\n", + " cmap=\"plasma\", interpolation=\"nearest\")\n", + "\n", + "titles = [\"Median temporal coherence\", \"Median phase similarity\", \"Number of 2π jumps\"]\n", + "cbar_labels = [\"Temporal coherence (median)\", \"Phase similarity (median)\", \"Count of 2π jumps\"]\n", + "\n", + "for a, im, t, clbl in zip(ax, [im1, im2, im3], titles, cbar_labels):\n", + " fig.colorbar(im, ax=a, location=\"bottom\", label=clbl, pad=0.12)\n", + " a.set_title(t)\n", + " a.set_xlabel(\"Easting (m)\")\n", + " a.set_ylabel(\"Northing (m)\")\n", + " a.ticklabel_format(style=\"sci\", axis=\"both\", scilimits=(0, 0))\n", + " a.set_aspect(\"equal\")\n", + " plot_landslide_overlay(a, crs_raster) # landslide polygon in UTM\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following step computes and plots statistics related to **`shp_counts`**, which represent the number of statistically homogeneous pixels (SHPs) used in the multilooking process at each pixel.\n", + "\n", + "For the selected ministack, this function reports:\n", + "- The median number of SHPs per pixel\n", + "- The standard deviation of SHP counts across the scene\n", + "\n", + "These metrics help assess the robustness of the distributed scatterer (DS) processing:\n", + "- A higher median indicates more reliable local statistics\n", + "- High variability (standard deviation) may point to inconsistent signal quality across the scene" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pyproj\n", + "import matplotlib.pyplot as plt\n", + "\n", + "if n_ministacks < 2:\n", + " print(\"Not enough time steps to compute shp stats.\")\n", + "else:\n", + " shp_median = quality_metrics.get_stack_stat(stack_prod.shp_counts, mode=\"median\")\n", + " shp_std = quality_metrics.get_stack_stat(stack_prod.shp_counts, mode=\"std\")\n", + "\n", + " # CRS + extent (UTM)\n", + " crs_raster = pyproj.CRS(stack_prod.spatial_ref.attrs[\"crs_wkt\"])\n", + " xmin, xmax = float(stack_prod.x.min()), float(stack_prod.x.max())\n", + " ymin, ymax = float(stack_prod.y.min()), float(stack_prod.y.max())\n", + " extent = [xmin, xmax, ymin, ymax]\n", + "\n", + " fig, ax = plt.subplots(1, 2, figsize=(14, 6))\n", + " im1 = ax[0].imshow(np.ma.masked_equal(shp_median, 0), extent=extent, origin=\"upper\",\n", + " cmap=\"cividis\", interpolation=\"nearest\")\n", + " im2 = ax[1].imshow(np.ma.masked_equal(shp_std, 0), extent=extent, origin=\"upper\",\n", + " cmap=\"magma\", interpolation=\"nearest\")\n", + "\n", + " for a, im, title, clbl in zip(\n", + " ax,\n", + " [im1, im2],\n", + " [\"SHP Median\", \"SHP Std Dev\"],\n", + " [\"SHP (median)\", \"SHP (std dev)\"],\n", + " ):\n", + " fig.colorbar(im, ax=a, orientation=\"horizontal\", pad=0.12, label=clbl)\n", + " a.set_title(title)\n", + " a.set_xlabel(\"Easting (m)\")\n", + " a.set_ylabel(\"Northing (m)\")\n", + " a.ticklabel_format(style=\"sci\", axis=\"both\", scilimits=(0, 0))\n", + " a.set_aspect(\"equal\")\n", + " plot_landslide_overlay(a, crs_raster)\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Velocity Estimation\n", + "\n", + "This cell computes a linear velocity map (in cm/year) from the displacement time series using least squares fitting.\n", + "- Fits a linear model: *displacement = velocity × time + intercept*.\n", + "- Colors represent motion in the satellite's line-of-sight (LOS) direction \n", + " - **Negative values** indicates motion **away** from the satellite \n", + " - **Positive values** indicates motion **toward** the satellite" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract the displacement time series from stack_prod\n", + "# NOTE: Velocity is calculated from displacement values that are cumulative from reference date.\n", + "# Velocity (cm/year) = cumulative displacement / time span.\n", + "disp = stack_prod['displacement'].values # shape: (nt, ny, nx)\n", + "times = stack_prod['time'].values # datetime64 array\n", + "ny, nx = disp.shape[1:] # spatial dimensions\n", + "nt = disp.shape[0] # number of time steps\n", + "\n", + "# Convert time to decimal years\n", + "def _decimal_year(dates):\n", + " \"\"\"Convert datetime64 array to decimal years.\"\"\"\n", + " import pandas as pd\n", + " dates = pd.to_datetime(dates)\n", + " return dates.year + (dates.dayofyear - 1) / 365.25\n", + "\n", + "tdecimal = _decimal_year(times) # shape (nt,)\n", + "A = np.vstack([tdecimal, np.ones_like(tdecimal)]).T # shape: (nt, 2)\n", + "\n", + "# Reshape displacement to (nt, ny*nx)\n", + "y = disp.reshape(nt, -1)\n", + "\n", + "# Solve least squares for linear fit: displacement = velocity * time + intercept\n", + "coef, *_ = np.linalg.lstsq(A, y, rcond=None) # shape: (2, ny*nx)\n", + "\n", + "# Extract velocity (slope) and reshape back to (ny, nx)\n", + "vel = coef[0].reshape(ny, nx).astype(np.float32)\n", + "\n", + "# Create new DataArray in xarray\n", + "vel_da = xr.DataArray(vel, dims=(\"y\", \"x\"), coords={\"y\": stack_prod.y, \"x\": stack_prod.x},\n", + " attrs={\n", + " \"long_name\": \"Velocity\",\n", + " \"units\": \"m/year\",\n", + " \"description\": \"Linear velocity estimated from displacement time series\",\n", + " \"start_date\": str(times[0]),\n", + " \"end_date\": str(times[-1]),\n", + " \"ref_date\": str(times[0]),\n", + " },\n", + ")\n", + "\n", + "# Add it to a new dataset (or optionally merge with stack_prod)\n", + "velocity_ds = xr.Dataset({\"velocity\": vel_da})\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convert velocity to cm/year and apply mask\n", + "vel_masked = (vel_da * 100).where((stack_prod.isel(time=-1).recommended_mask == 1) & (stack_prod.isel(time=-1).water_mask == 1))\n", + "\n", + "# Reproject to EPSG:4326\n", + "vel_masked.rio.write_crs(epsg, inplace=True)\n", + "vel_masked.rio.set_spatial_dims(x_dim=\"x\", y_dim=\"y\", inplace=True)\n", + "vel_4326 = vel_masked.rio.reproject(\"EPSG:4326\", resampling=rasterio.enums.Resampling.bilinear)\n", + "\n", + "# Buffer bounds\n", + "buffer_fraction = 0.015\n", + "xmin, ymin, xmax, ymax = vel_4326.rio.bounds()\n", + "x_pad = (xmax - xmin) * buffer_fraction\n", + "y_pad = (ymax - ymin) * buffer_fraction\n", + "buffered_bounds = [xmin - x_pad, ymin - y_pad, xmax + x_pad, ymax + y_pad]\n", + "extent = [buffered_bounds[0], buffered_bounds[2], buffered_bounds[1], buffered_bounds[3]]\n", + "\n", + "# Normalize values\n", + "v = np.nanpercentile(vel_4326.values, [2, 98])\n", + "vmax = max(abs(v[0]), abs(v[1]))\n", + "vmin = -vmax\n", + "\n", + "# Use the true reference date for all labels\n", + "reference_date = pd.to_datetime(stack_prod['time'].values[0]).strftime('%Y-%m-%d')\n", + "\n", + "# Plot\n", + "fig, ax = plt.subplots(figsize=(10, 8))\n", + "ax.set_xlim(extent[0], extent[1])\n", + "ax.set_ylim(extent[2], extent[3])\n", + "\n", + "# Basemap\n", + "bg, bg_extent = get_baseimage_from_bounds(buffered_bounds, source=cx.providers.Esri.WorldImagery, grayscale=True, gamma=0.9)\n", + "ax.imshow(bg, extent=bg_extent, cmap=\"gray\", origin=\"upper\", zorder=1)\n", + "\n", + "# Velocity overlay\n", + "im = ax.imshow( vel_4326.values, extent=[xmin, xmax, ymin, ymax], cmap=\"RdBu_r\", vmin=vmin, vmax=vmax, alpha=0.6, origin=\"upper\", zorder=2)\n", + "\n", + "# Colorbar\n", + "cbar = plt.colorbar(im, ax=ax, shrink=0.6, pad=0.04)\n", + "cbar.set_label(f\"Velocity [cm/year] (relative to {reference_date})\")\n", + "\n", + "# Ticks and formatting\n", + "ax.set_xticks(np.linspace(extent[0], extent[1], 5))\n", + "ax.set_yticks(np.linspace(extent[2], extent[3], 5))\n", + "ax.xaxis.set_major_formatter(ticker.FuncFormatter(lambda x, _: f\"{x:.2f}°E\"))\n", + "ax.yaxis.set_major_formatter(ticker.FuncFormatter(lambda y, _: f\"{y:.2f}°N\"))\n", + "ax.tick_params(left=True, bottom=True, labelleft=True, labelbottom=True)\n", + "\n", + "# Attribution\n", + "ax.annotate(\n", + " \"Tiles © Esri — Sources: Esri, DigitalGlobe, GeoEye, i-cubed, USDA FSA, USGS, AEX, \"\n", + " \"Getmapping, Aerogrid, IGN, IGP, swisstopo, and the GIS User Community\",\n", + " xy=(0.5, -0.12), xycoords='axes fraction',\n", + " ha='center', va='top', fontsize=6, color='gray'\n", + ")\n", + "\n", + "ax.set_title(f\"OPERA DISP-S1 Estimated Velocity [cm/year] (relative to {reference_date})\")\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Export DISP-S1 Stack for External Use\n", + "This final step prepares your displacement time series for export and use in other tools such as **MintPy** and **GIS**.\n", + "\n", + "The process involves two main actions:\n", + "\n", + "1. **Reformat DISP-S1 Files into a Single NetCDF Stack** \n", + " - Combines multiple DISP-S1 granules (from a ministack) into a single NetCDF file \n", + " - Uses a defined reference method (`NONE / MEDIAN / BORDER / POINT / HIGH COHERENCE`) to re-reference all dates consistently \n", + " - Drops unnecessary variables like `connected_component_labels`, `shp_counts`, etc. to reduce file size \n", + " - Output: a single file named `disp-output-.nc`.\n", + "\n", + "2. **Convert to MintPy Format** \n", + " - Uses the exported NetCDF to generate a MintPy-compatible displacement time series \n", + " - Produces outputs in the `export/` directory " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# -----------------------------\n", + "# DISP-S1 Stack Reformat Script with useful commands\n", + "# -----------------------------\n", + "# --input-files [PATH [PATH ...]] │\n", + "# │ Input DISP-S1 NetCDF files. (required) │\n", + "# │ --output-name STR │\n", + "# │ Name of the output file. │\n", + "# │ Must end in \".nc\" or \".zarr\". (required) │\n", + "# │ --out-chunks INT INT INT │\n", + "# │ Chunking configuration for output DataArray. │\n", + "# │ Defaults to (4, 256, 256). (default: 4 256 256) │\n", + "# │ --shard-factors INT INT INT │\n", + "# │ For Zarr outputs, sharding configuration for output DataArray. │\n", + "# │ The factors are applied respectively to the chunks sizes in `out_chunks` to │\n", + "# │ create fewer output files in the Zarr store. │\n", + "# │ Defaults to (1, 4, 4). (default: 1 4 4) │\n", + "# │ --drop-vars {None}|{[STR [STR ...]]} │\n", + "# │ list of variable names to drop from the dataset before saving. │\n", + "# │ Example: [\"estimated_phase_quality\"] (default: None) │\n", + "# │ --apply-solid-earth-corrections, --no-apply-solid-earth-corrections │\n", + "# │ Apply solid earth tide correction to the data. │\n", + "# │ Default is True. (default: True) │\n", + "# │ --apply-ionospheric-corrections, --no-apply-ionospheric-corrections │\n", + "# │ Apply ionospheric delay correction to the data. │\n", + "# │ Default is False. (default: False) │\n", + "# │ --quality-datasets {None}|{[{TEMPORAL_COHERENCE,PHASE_SIMILARITY,PERSISTENT_SCATTERER_MASK,TIMESERIES_INVERSION_RESIDUALS,CONNECTED_COMPONENT_LABELS, │\n", + "# │ RECOMMENDED_MASK,ESTIMATED_PHASE_QUALITY,SHP_COUNTS,WATER_MASK} [...]]} │\n", + "# │ Name of the quality datasets to use as a mask when accumulating │\n", + "# │ displacement for re-referencing. │\n", + "# │ If None, no masking is performed. │\n", + "# │ Must be same length as `quality_thresholds`. │\n", + "# │ Default is [QualityDataset.RECOMMENDED_MASK], which uses the built-in │\n", + "# │ recommended mask. (default: RECOMMENDED_MASK) │\n", + "# │ --quality-thresholds {None}|{[FLOAT [FLOAT ...]]} │\n", + "# │ Thresholds for the quality datasets to use as a mask. │\n", + "# │ Must be same length as `quality_datasets`. │\n", + "# │ Default is [0.5]. (default: 0.5) │\n", + "# │ --reference-method {NONE,POINT,MEDIAN,BORDER,HIGH_COHERENCE} │\n", + "# │ Reference method to use. │\n", + "# │ Default is ReferenceMethod.NONE. │\n", + "# │ Options are: │\n", + "# │ - ReferenceMethod.NONE: No reference method. │\n", + "# │ - ReferenceMethod.POINT: Reference point. │\n", + "# │ - ReferenceMethod.MEDIAN: Full-scene median per date. Excludes water pixels. │\n", + "# │ - ReferenceMethod.BORDER: Median of border pixels. Excludes water pixels. │\n", + "# │ - ReferenceMethod.HIGH_COHERENCE: Median of high-coherence mask. (default: HIGH_COHERENCE) │\n", + "# │ --reference-row {None}|INT │\n", + "# │ For ReferenceMethod.POINT, row index for point reference. (default: None) │\n", + "# │ --reference-col {None}|INT │\n", + "# │ For ReferenceMethod.POINT, column index for point reference. (default: None) │\n", + "# │ --reference-lon {None}|FLOAT │\n", + "# │ For ReferenceMethod.POINT, longitude (in degrees) for point reference. (default: None) │\n", + "# │ --reference-lat {None}|FLOAT │\n", + "# │ For ReferenceMethod.POINT, latitude (in degrees) for point reference. (default: None) │\n", + "# │ --reference-border-pixels INT │\n", + "# │ For ReferenceMethod.BORDER, number of pixels to use for border median. │\n", + "# │ Defaults to 3. (default: 3) │\n", + "# │ --reference-coherence-threshold FLOAT │\n", + "# │ For ReferenceMethod.HIGH_COHERENCE, threshold for coherence to use as a mask. │\n", + "# │ Defaults to 0.7. (default: 0.7) │\n", + "# │ --process-chunk-size INT INT │\n", + "# │ Chunking configuration for processing DataArray. │\n", + "# │ Defaults to (2048, 2048). (default: 2048 2048) │\n", + "# │ --do-round, --no-do-round │\n", + "# # │ If True, rounds mantissa bits of floating point rasters to compress the data. (default: True) \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from opera_utils.disp._reformat import reformat_stack\n", + "from opera_utils.disp._enums import ReferenceMethod, QualityDataset\n", + "\n", + "# 1. Prepare files\n", + "output_dir = EXPORT_DIR\n", + "os.makedirs(output_dir, exist_ok=True)\n", + "files = sorted(list(Path(SUBSET_DIR).glob(\"*.nc\")))\n", + "\n", + "# 2. Extract Reference point (fallback to high coherence method if not set)\n", + "ref_lat = lat_ref if 'lat_ref' in globals() and lat_ref is not None else None\n", + "ref_lon = lon_ref if 'lon_ref' in globals() and lon_ref is not None else None\n", + "\n", + "# 3. SELECT METHOD BASED ON AVAILABILITY\n", + "if ref_lat and ref_lon:\n", + " method = ReferenceMethod.POINT\n", + " print(f\"Using manual Reference Point: {ref_lat}, {ref_lon}\")\n", + "else:\n", + " method = ReferenceMethod.HIGH_COHERENCE\n", + " print(\"WARNING: No map point selected. Falling back to HIGH_COHERENCE (automatic).\")\n", + " \n", + "# 4. Run Reformat\n", + "reformat_stack(\n", + " input_files=files,\n", + " output_name=f\"{EXPORT_DIR}/disp-output.nc\",\n", + " drop_vars=[\n", + " \"connected_component_labels\", \n", + " \"shp_counts\", \n", + " \"timeseries_inversion_residuals\"\n", + " ],\n", + " reference_method=method, # <--- Dynamically selected method\n", + " quality_datasets=[QualityDataset.WATER_MASK],\n", + " reference_border_pixels=3,\n", + " reference_lat=ref_lat,\n", + " reference_lon=ref_lon\n", + ")\n", + "\n", + "print(f\"\\nReformat complete using method: {method.name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convert to MintPy\n", + "SAMPLE_FILE = sorted(glob.glob(f\"{SUBSET_DIR}/*.nc\"))[0]\n", + "OUTPUT_NAME = \"disp-output.nc\"\n", + "\n", + "print(f\"Converting {OUTPUT_NAME} to MintPy using sample metadata from {SAMPLE_FILE}...\")\n", + "\n", + "!python -m opera_utils.disp.mintpy {EXPORT_DIR}/{OUTPUT_NAME} \\\n", + " --sample-disp-nc {SAMPLE_FILE} \\\n", + " --outdir {EXPORT_DIR}\n", + "\n", + "print(\"MintPy conversion successful! Files are in the f'{EXPORT_DIR}/' directory.\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import h5py\n", + "import numpy as np\n", + "from pathlib import Path\n", + "import pyproj\n", + "\n", + "if 'lat_ref' in globals() and 'lon_ref' in globals() and lat_ref is not None and lon_ref is not None:\n", + " epsg = pyproj.CRS(stack_prod.spatial_ref.attrs[\"crs_wkt\"]).to_epsg()\n", + " proj = pyproj.Transformer.from_crs(\"EPSG:4326\", f\"EPSG:{epsg}\", always_xy=True)\n", + " ref_easting, ref_northing = proj.transform(lon_ref, lat_ref)\n", + "\n", + " ref_ix = int(np.argmin(np.abs(stack_prod.x.values - ref_easting))) # column\n", + " ref_iy = int(np.argmin(np.abs(stack_prod.y.values - ref_northing))) # row\n", + "\n", + " attrs = {\n", + " \"REF_LON\": float(ref_easting), \n", + " \"REF_LAT\": float(ref_northing),\n", + " \"REF_X\": ref_ix,\n", + " \"REF_Y\": ref_iy,\n", + " }\n", + "\n", + " files = [\n", + " \"timeseries.h5\",\n", + " \"velocity.h5\",\n", + " \"avgSpatialCoh.h5\",\n", + " \"timeseries_density.h5\",\n", + " \"recommended_mask_90thresh.h5\", # adjust name if different\n", + " ]\n", + "\n", + " for fname in files:\n", + " fpath = Path(EXPORT_DIR) / fname\n", + " if not fpath.exists():\n", + " continue\n", + " with h5py.File(fpath, \"r+\") as hf:\n", + " for k, v in attrs.items():\n", + " hf.attrs[k] = v\n", + " print(f\"Stamped ref metadata into {fpath.name}\")\n", + "else:\n", + " print(\"No reference point set; skipping metadata stamp.\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Build masks for MintPy (currently only water mask is applied)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os, xarray as xr, numpy as np, h5py\n", + "\n", + "# --- PARAMETERS ---\n", + "output_dir = EXPORT_DIR\n", + "TEMP_COH_THRESHOLD = 0.5 # Mask pixels below this coherence ---\n", + "VALID_PCT_THRESHOLD = 0.8 # fraction (e.g., 0.8 = 80%) for recommended mask via mini stacks\n", + "STRICT_MASK = False # True = check every date | False = check average\n", + "\n", + "nc_path = os.path.join(output_dir, \"disp-output.nc\")\n", + "ts_path = os.path.join(output_dir, \"timeseries.h5\")\n", + "\n", + "# 1. Load geometry and open dataset\n", + "with h5py.File(ts_path, \"r\") as f:\n", + " ts_attrs = dict(f.attrs)\n", + "ds = xr.open_dataset(nc_path)\n", + "\n", + "def save_mintpy_h5(filename, dataset_name, data, file_type=\"mask\", unit=\"1\"):\n", + " path = os.path.join(output_dir, filename)\n", + " data_val = data.values.squeeze()\n", + " is_mask = file_type in [\"mask\", \"water_mask\"]\n", + " dtype = np.int8 if is_mask else np.float32\n", + " \n", + " with h5py.File(path, \"w\") as f:\n", + " f.attrs.update(ts_attrs)\n", + " f.attrs.update({\"FILE_TYPE\": file_type, \"UNIT\": unit})\n", + " f.create_dataset(dataset_name, data=data_val.astype(dtype), compression=\"gzip\")\n", + " print(f\"Created 2D Layer: {path} (Type: {file_type})\")\n", + "\n", + "# --- STEP 1: Export Standard Science Layers ---\n", + "if \"average_temporal_coherence\" in ds:\n", + " save_mintpy_h5(\"temporalCoherence.h5\", \"temporalCoherence\", ds[\"average_temporal_coherence\"], file_type=\"temporalCoherence\")\n", + "elif \"temporal_coherence\" in ds:\n", + " save_mintpy_h5(\"temporalCoherence.h5\", \"temporalCoherence\", ds[\"temporal_coherence\"].mean(\"time\"), file_type=\"temporalCoherence\")\n", + "\n", + "if \"phase_similarity\" in ds:\n", + " psim = ds[\"phase_similarity\"].mean(\"time\") if \"time\" in ds[\"phase_similarity\"].dims else ds[\"phase_similarity\"]\n", + " save_mintpy_h5(\"phaseSimilarity.h5\", \"phaseSimilarity\", psim, file_type=\"phaseSimilarity\")\n", + "\n", + "if \"water_mask\" in ds:\n", + " save_mintpy_h5(\"water_mask.h5\", \"mask\", ds[\"water_mask\"])\n", + "\n", + "if \"persistent_scatterer_mask\" in ds:\n", + " save_mintpy_h5(\"maskPS.h5\", \"mask\", ds[\"persistent_scatterer_mask\"])\n", + "\n", + "# --- STEP 2: Generate Custom Coherence Mask ---\n", + "if STRICT_MASK:\n", + " mask_2d = (ds.temporal_coherence >= TEMP_COH_THRESHOLD).all(dim=\"time\")\n", + " mode_str = \"strict\"\n", + "else:\n", + " avg_coh = ds.average_temporal_coherence if \"average_temporal_coherence\" in ds else ds.temporal_coherence.mean(dim=\"time\")\n", + " mask_2d = avg_coh >= TEMP_COH_THRESHOLD\n", + " mode_str = \"avg\"\n", + "\n", + "mask_filename = f\"tcoh{str(TEMP_COH_THRESHOLD).replace('.','')}_{mode_str}_mask.h5\"\n", + "save_mintpy_h5(mask_filename, \"mask\", mask_2d, file_type=\"mask\")\n", + "\n", + "\n", + "\n", + "if \"recommended_mask\" in ds and \"reference_time\" in ds:\n", + " # Collapse to one mask per ministack (group by calendar date of reference_time)\n", + " ref_date = pd.to_datetime(ds.reference_time.values).normalize()\n", + " rm = ds.recommended_mask.fillna(0).astype(np.int8)\n", + " rm = rm.assign_coords(reference_date=(\"time\", ref_date))\n", + " per_ms = rm.groupby(\"reference_date\").max(\"time\") # (n_ms, y, x)\n", + "\n", + " # Percent of ministacks where pixel is recommended\n", + " ms_pct = per_ms.mean(\"reference_date\") * 100\n", + " save_mintpy_h5(\"recommended_mask_ministack_pct.h5\", \"recommendedMaskPct\",\n", + " ms_pct, file_type=\"percent\", unit=\"%\")\n", + "\n", + " # Thresholded mask\n", + " pct_thresh = int(VALID_PCT_THRESHOLD * 100)\n", + " ms_mask_thresh = ms_pct >= pct_thresh\n", + " save_mintpy_h5(f\"recommended_mask_{pct_thresh}thresh.h5\", \"recommendedMask\",\n", + " ms_mask_thresh, file_type=\"mask\", unit=\"1\")\n", + "\n", + " print(f\"Ministacks (unique reference dates): {per_ms.sizes['reference_date']}\")\n", + "else:\n", + " print(\"No recommended_mask/reference_time found; skipping ministack-based mask.\")\n", + "\n", + "\n", + "print(f\"\\nSuccess! All supplementary layers and your custom {mode_str} mask are ready in /{output_dir}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import pyproj\n", + "from mpl_toolkits.axes_grid1 import ImageGrid\n", + "import numpy as np\n", + "\n", + "# Build a date-only coord (drops time-of-day)\n", + "ref_date = pd.to_datetime(stack_prod.reference_time.values).normalize()\n", + "rm = stack_prod.recommended_mask.fillna(0).astype(np.int8)\n", + "rm = rm.assign_coords(reference_date=(\"time\", ref_date))\n", + "\n", + "# One mask per reference date\n", + "per_ms = rm.groupby(\"reference_date\").max(\"time\") # dims: reference_date, y, x\n", + "\n", + "# Spatial extent/CRS\n", + "crs_raster = pyproj.CRS(stack_prod.spatial_ref.attrs[\"crs_wkt\"])\n", + "extent = [float(stack_prod.x.min()), float(stack_prod.x.max()),\n", + " float(stack_prod.y.min()), float(stack_prod.y.max())]\n", + "\n", + "n_ms = per_ms.sizes[\"reference_date\"]\n", + "fig = plt.figure(figsize=(6 * n_ms, 6))\n", + "grid = ImageGrid(fig, 111, nrows_ncols=(1, n_ms), axes_pad=0.5,\n", + " share_all=False, cbar_location=\"right\", cbar_mode=\"each\",\n", + " cbar_size=\"5%\", cbar_pad=0.1)\n", + "\n", + "for i, ax in enumerate(grid):\n", + " da = per_ms.isel(reference_date=i)\n", + " im = ax.imshow(da, extent=extent, origin=\"upper\", cmap=\"Greys\",\n", + " vmin=0, vmax=1, interpolation=\"nearest\")\n", + " ax.set_title(f\"Recommended Mask\\n{str(per_ms.reference_date.values[i])[:10]}\")\n", + " ax.set_xlabel(\"Easting (m)\")\n", + " ax.set_ylabel(\"Northing (m)\")\n", + " ax.ticklabel_format(style=\"sci\", axis=\"both\", scilimits=(0, 0))\n", + " ax.set_aspect(\"equal\")\n", + " ax.cax.colorbar(im).set_label(\"Mask (0/1)\")\n", + " plot_landslide_overlay(ax, crs_raster)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 📂 GIS Export & Data Visualization\n", + "\n", + "Your analysis is complete! Now, let's export the data for use in professional GIS tools or for presentations.\n", + "\n", + "### 🌍 1. GeoTIFF for QGIS/ArcGIS\n", + "The code below generates two GeoTIFFs:\n", + "- **Basic Mask**: Only removes water.\n", + "- **Quality Mask (Recommended)**: Removes unreliable pixels based on quality metrics.\n", + "\n", + "> [!TIP]\n", + "> When loading into GIS, set the **Symbology** to specialized colormaps like `RdBu` (Red-White-Blue) to clearly see motion towards/away from the satellite.\n", + "\n", + "### 🎬 2. Time Series Animation (GIF)\n", + "To see how the landslide evolved over months, we stitch all acquisition dates into a single animation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Ensure EXPORT_DIR exists\n", + "os.makedirs(EXPORT_DIR, exist_ok=True)\n", + "\n", + "# Define output filenames using FRAME_ID for uniqueness\n", + "velocity_tif_basic = os.path.join(EXPORT_DIR, f\"velocity_F{FRAME_ID}_waterMsk.tif\")\n", + "velocity_tif_cleaned = os.path.join(EXPORT_DIR, f\"velocity_F{FRAME_ID}_recommendedMsk.tif\")\n", + "\n", + "print(f\"Exporting GeoTIFFs to: {EXPORT_DIR}\")\n", + "\n", + "# 1. Basic Mask (Water only)\n", + "# Scale velocity to cm/year (multiply by 100)\n", + "vel_basic = (vel_da * 100).where(stack_prod.isel(time=-1).water_mask == 1)\n", + "vel_basic.rio.write_crs(epsg, inplace=True)\n", + "vel_basic.rio.set_spatial_dims(x_dim=\"x\", y_dim=\"y\", inplace=True)\n", + "vel_basic.rio.to_raster(velocity_tif_basic)\n", + "print(f\"Saved Basic Mask GeoTIFF: {velocity_tif_basic}\")\n", + "\n", + "# 2. Quality Mask (Recommended Mask)\n", + "# Scale velocity to cm/year\n", + "vel_cleaned = (vel_da * 100).where(\n", + " (stack_prod.isel(time=-1).recommended_mask == 1) & \n", + " (stack_prod.isel(time=-1).water_mask == 1)\n", + ")\n", + "vel_cleaned.rio.write_crs(epsg, inplace=True)\n", + "vel_cleaned.rio.set_spatial_dims(x_dim=\"x\", y_dim=\"y\", inplace=True)\n", + "vel_cleaned.rio.to_raster(velocity_tif_cleaned)\n", + "print(f\"Saved Cleaned Mask GeoTIFF: {velocity_tif_cleaned}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Export PNGs and Create GIF Animation\n", + "import os\n", + "import glob\n", + "import h5py\n", + "from PIL import Image # Standard library for GIF creation\n", + "\n", + "# --- CONFIG ---\n", + "output_dir = EXPORT_DIR\n", + "pictures_dir = os.path.join(output_dir, \"pics\")\n", + "os.makedirs(pictures_dir, exist_ok=True)\n", + "\n", + "# Ensure ds_full is loaded\n", + "if 'ds_full' not in locals():\n", + " input_nc = os.path.join(output_dir, \"disp-output.nc\")\n", + " import xarray as xr\n", + " ds_full = xr.open_dataset(input_nc)\n", + "\n", + "# 1. Load Data & Apply Mask (only if not already defined)\n", + "if 'mask_da' not in locals():\n", + " mask_path = os.path.join(output_dir, \"tcoh05_avg_mask.h5\")\n", + " with h5py.File(mask_path, \"r\") as f:\n", + " mask = f[\"mask\"][...]\n", + " mask_da = xr.DataArray(mask, dims=(\"y\", \"x\"), coords={\"y\": ds_full.y, \"x\": ds_full.x})\n", + "if 'disp_masked_raw' not in locals():\n", + " disp_masked_raw = ds_full[\"displacement\"].where(mask_da == 1)\n", + "\n", + "# 2. Timing & Color Limits\n", + "# Use the true reference date (first date in ds_full[\"time\"]) for all labels and outputs\n", + "dates_f = ds_full[\"time\"].dt.strftime(\"%Y%m%d\").values\n", + "dates_t = ds_full[\"time\"].dt.strftime(\"%Y-%m-%d\").values\n", + "v = np.nanpercentile(disp_masked_raw[-1], [1, 99])\n", + "max_abs = max(abs(v[0]), abs(v[1]))\n", + "vmin, vmax = -max_abs, max_abs\n", + "extent = [float(ds_full.x.min()), float(ds_full.x.max()), float(ds_full.y.min()), float(ds_full.y.max())]\n", + "\n", + "# 3. Polygon Loader (only if not already loaded)\n", + "plot_polygon = False\n", + "if 'gdf_ls' in locals() and gdf_ls is not None:\n", + " plot_polygon = True\n", + "elif 'landslide_polygon' in locals() and landslide_polygon and os.path.exists(landslide_polygon):\n", + " try:\n", + " import geopandas as gpd\n", + " import fiona\n", + " fiona.drvsupport.supported_drivers['KML'] = 'rw'\n", + " from pyproj import CRS\n", + " crs_raster = CRS.from_wkt(ds_full.spatial_ref.crs_wkt)\n", + " ext = os.path.splitext(landslide_polygon)[1].lower()\n", + " gdf_ls = gpd.read_file(landslide_polygon, driver='KML' if ext=='.kml' else None).to_crs(crs_raster)\n", + " plot_polygon = True\n", + " print(f\"Loaded polygon: {landslide_polygon}\")\n", + " except Exception as e:\n", + " print(f\"Polygon skipped: {e}\")\n", + "\n", + "# 4. Generate PNGs\n", + "png_files = []\n", + "print(\"Generating PNG frames...\")\n", + "png_files = []\n", + "for i in range(len(dates_f)):\n", + " fig, ax = plt.subplots(figsize=(8, 6), dpi=100, constrained_layout=True)\n", + " im = ax.imshow(disp_masked_raw[i].values, cmap=\"RdBu\", origin=\"upper\",\n", + " vmin=vmin, vmax=vmax, extent=extent)\n", + " if plot_polygon:\n", + " gdf_ls.boundary.plot(ax=ax, edgecolor=\"black\", linewidth=1.5, zorder=5)\n", + "\n", + " ax.set_title(f\"Cumulative Displacement (m) from {reference_date} (ref) to {dates_t[i]}\",\n", + " pad=10)\n", + " cbar = fig.colorbar(im, ax=ax, location=\"right\", fraction=0.05, pad=0.04)\n", + " cbar.set_label(f\"LOS Displacement (m)\\n[relative to {reference_date}]\")\n", + "\n", + " p = os.path.join(pictures_dir, f\"frame_{i:03d}.png\")\n", + " fig.savefig(p, dpi=100) # no bbox_inches=\"tight\" → fixed canvas\n", + " plt.close(fig)\n", + " png_files.append(p)\n", + "\n", + "\n", + "# 5. Stitch into GIF\n", + "gif_path = os.path.join(output_dir, f\"OPERA-DISP-S1_Frame_{FRAME_ID}_TimeSeries.gif\")\n", + "print(f\"Stitching {len(png_files)} frames into GIF...\")\n", + "images = [Image.open(f) for f in png_files]\n", + "images[0].save(gif_path, save_all=True, append_images=images[1:], duration=250, loop=0)\n", + "print(f\"Success! View your animation at: {gif_path}\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ✅ Conclusion and Next Steps\n", + "\n", + "Congratulations! You've successfully processed OPERA DISP-S1 data to track ground displacement. \n", + "\n", + "**Key Takeaways:**\n", + "- **Referencing is Key**: Selecting a stable reference point is essential for accurate results.\n", + "- **Quality Matters**: Always check the `quality metrics` before relying on high-magnitude movement signals.\n", + "- **Multi-Frame Ready**: If your landslide is covered by more than one frame, you can now change the `FRAME_ID` at the top and re-run to append more data.\n", + "\n", + "**Explore Further**:\n", + "- Check out the [OPERA Project Website](https://www.jpl.nasa.gov/go/opera) for more datasets.\n", + "\n", + "---\n", + "*End of workflow.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "opera_disp-s1", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/DISP/Landslides/README.md b/DISP/Landslides/README.md new file mode 100644 index 0000000..ec3f79f --- /dev/null +++ b/DISP/Landslides/README.md @@ -0,0 +1,52 @@ +# OPERA DISP-S1 Time Series Data for Landslides + +This repository contains a Jupyter Notebook designed to demonstrate how to download and visualize surface displacement time series data from the **OPERA DISP-S1** product. + +## Overview + +The **OPERA Level-3 Surface Displacement from Sentinel-1 (DISP-S1)** product provides geocoded displacement measurements over North America. This notebook focuses on tracking cm-scale surface motion for slow-moving landslides. + +### Workflow +1. **Environment Setup**: Install necessary Python packages and helper tools. +2. **Area Selection (AOI)**: Choose your target location and frame. +3. **Data Download**: Pull cropped displacement data directly from NASA Earthdata. +4. **Interactive Analysis**: Select a reference point on a map to adjust measurements. +5. **Quality Review**: Inspect coherence and other metrics to verify data reliability. +6. **Export**: Save results as GeoTIFFs for GIS or GIFs for animations. + +--- + +## Getting Started + +### 1. Conda Environment Setup +To run this notebook, you need a specific environment with InSAR analysis tools. Run the following commands in your terminal: + +```bash +# 1. Create the environment +conda create -n opera_disp-s1 + +# 2. Activate it +conda activate opera_disp-s1 + +# 3. Install core dependencies +conda install -c conda-forge python==3.12 jupyter ipyleaflet +``` + +### 2. Automatic Dependency Check +The first code cell in the notebook will automatically check for and install remaining libraries, including: +- [MintPy](https://github.com/insarlab/MintPy) +- [disp-xr](https://github.com/opera-adt/disp-xr) +- Other required Python packages via `pip`. + +### 3. Usage +Open the notebook in Jupyter: +```bash +jupyter-notebook OPERA-DISP-S1_Landslides.ipynb +``` +Follow the step-by-step instructions provided directly within the notebook cells. + +--- + +## Contributors +A. Handwerger, B. Raimbault, M. G. Bato, S. Sangha, M. Govorcin, S. Staniewicz. + diff --git a/DISP/Landslides/landslide_polygon/BoulderCreek.kml b/DISP/Landslides/landslide_polygon/BoulderCreek.kml new file mode 100644 index 0000000..d831714 --- /dev/null +++ b/DISP/Landslides/landslide_polygon/BoulderCreek.kml @@ -0,0 +1,248 @@ + + + + BoulderCreek.kml + + + normal + #PolyStyle000 + + + highlight + #PolyStyle001 + + + + + + BoulderCreek + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FID9
Mapped_byBM
Name
Area3107283.13375
Centroid_x459747.403181
Centroid_y4435337.21361
Centroid_z562.760986
Min_z109.968145
Max_z1076.098313
Depth35.119496
Width614.63
Velocity1.26125
Inferred_v0
Connected1
Flux2722
Erosion_ra7.36
Mack_erosi4.2
Orig_FID0
+ +
+ + + +]]>
+ #PolyStyle00 + + + + + + -123.470413262923,40.06090372612304,643.1178687950946 -123.4704949281296,40.06094695964456,640.3389208643365 -123.4705765934391,40.06099019310759,637.3731685877391 -123.4706582588516,40.06103342651213,634.5864947885968 -123.4707240634258,40.06106675034418,632.8383995547044 -123.4707898680639,40.06110007413833,630.7293700016967 -123.4708556727658,40.06113339789452,627.8011750305058 -123.4709144228327,40.06120034146269,625.0639019827232 -123.470973173015,40.06126728499966,622.9607257813252 -123.4710319233125,40.06133422850537,621.1717509716386 -123.4711014870147,40.06138433242406,619.5213578037291 -123.4711710508187,40.06143443629997,617.4857191751787 -123.4712406147245,40.06148454013309,615.2792489312836 -123.4713028541701,40.06152907519107,613.4016290080843 -123.4713650936967,40.06157361021484,611.5198831140631 -123.4714273333043,40.06161814520432,610.28929943255 -123.4714859492867,40.06166549417089,609.0584133927493 -123.4715445653503,40.06171284310692,607.8450222642734 -123.471603181495,40.06176019201244,606.5729859872733 -123.4716581354108,40.06180475653275,605.1447720240906 -123.4717130893982,40.06184932102626,603.6395280532372 -123.4717680434573,40.06189388549294,601.9283655675138 -123.4718286165814,40.06196082116257,599.9077535752955 -123.4718891898243,40.06202775679908,597.3941644042657 -123.4719115693755,40.06210324577413,595.1453227012794 -123.4719339489768,40.06217873474356,592.2289004120297 -123.4719344800927,40.06225571234053,590.2659972287393 -123.4719350112106,40.06233268993645,588.5320006884576 -123.4719355423305,40.06240966753134,587.2356643446313 -123.4719578158324,40.06246976097278,585.5817875485185 -123.4719800893739,40.06252985440908,584.2297003441586 -123.472002362955,40.06258994784026,583.1394578324706 -123.4720793306707,40.06265681657579,580.0875624851691 -123.472156298537,40.06272368525855,576.7602769861869 -123.4722357741842,40.06275800222645,573.3427207274842 -123.4723152499109,40.06279231913917,569.5708992152872 -123.4723947257169,40.06282663599671,565.5558617757188 -123.4724742016023,40.06286095279908,562.5331135346356 -123.4725329039826,40.06292054764879,560.7507032389109 -123.4725916064655,40.06298014246752,559.4129220837542 -123.4726503090509,40.06303973725535,557.9472078792494 -123.4727090117389,40.06309933201221,555.9402061966082 -123.4727785494448,40.0631452361143,553.453898122938 -123.4728480872439,40.06319114017374,551.0228736737785 -123.472916815975,40.06325174362666,546.862861799882 -123.472985544828,40.06331234703746,541.6995309914784 -123.4730387664667,40.06336951464463,537.9023876712839 -123.4730919881947,40.06342668222629,535.4969852286157 -123.4731452100118,40.06348384978241,533.4854959292927 -123.4731840289653,40.06356556969323,531.2277656322611 -123.4732228480124,40.06364728958935,529.0105823710038 -123.4732960490989,40.06369597767461,527.0073236203167 -123.4733692502896,40.06374466571257,525.0787356746516 -123.4734424515843,40.06379335370331,522.9548559893854 -123.473530176997,40.06383498412633,519.6626134432811 -123.4736179025161,40.06387661448199,515.7521301503036 -123.4737056281415,40.06391824477032,512.342035398072 -123.4737606045544,40.06396560744251,510.2805991295443 -123.4738155810435,40.0640129700878,507.6745709649064 -123.4738705576088,40.06406033270617,504.8689367551725 -123.4739365121308,40.06411464854742,501.6676123542824 -123.4740024667576,40.06416896434998,499.7178429169358 -123.4740520079768,40.06422054801269,498.1802218941127 -123.4741015492708,40.0642721316533,496.275796846681 -123.4741510906397,40.06432371527185,494.1044525625375 -123.474211629443,40.06438505127468,491.2438881116333 -123.4742721683551,40.06444638724462,489.075246260619 -123.474332707376,40.06450772318163,487.2647992476451 -123.4743876895519,40.06455578534196,485.936003628397 -123.4744426718051,40.06460384747534,484.5287986432724 -123.4744758388778,40.0646582972682,483.3528784815376 -123.4745090060037,40.06471274705071,482.1504092011822 -123.4745421731827,40.06476719682291,481.1383944241712 -123.474589874237,40.06481598852361,480.1227626626522 -123.4746375753595,40.06486478020388,479.5171376692136 -123.4746852765502,40.06491357186369,479.2773377229166 -123.4747429771098,40.06495952326623,478.9549744797303 -123.4748006777469,40.06500547463919,478.6775184839182 -123.4748636974674,40.06503040971274,477.9178051993712 -123.4749267172335,40.06505534475166,477.104429840033 -123.4750069255089,40.06506341370913,476.0432284268151 -123.4750871338027,40.06507148261095,474.5707719372795 -123.4751673421149,40.06507955145712,472.900186424593 -123.4752475115437,40.06508202188241,471.0858403706325 -123.4753276809778,40.06508449225219,469.47758343842 -123.4754078504171,40.06508696256645,468.0186759990986 -123.4755008391102,40.0650991776301,466.4857626311416 -123.4755938278358,40.06511139261887,465.3119456409578 -123.4757040251277,40.06511809484329,463.9506179732928 -123.4758142224401,40.06512479696276,462.3984685782382 -123.4759244197731,40.06513149897728,460.5548420057562 -123.4760346171267,40.06513820088685,458.1544694624814 -123.475941456134,40.06517513054379,461.005444438433 -123.4758482950401,40.06521206012616,463.0604383354715 -123.4757551338451,40.06524898963396,463.9273447503326 -123.4756619725489,40.06528591906721,464.4769081991618 -123.4755719641369,40.06530938249407,465.2774960197328 -123.4754819556626,40.06533284585127,466.2050602181388 -123.4753919471258,40.06535630913879,466.863387880627 -123.4752937267443,40.06537770659934,467.3512539818544 -123.4751955063005,40.06539910397687,467.8297949263598 -123.4750972857945,40.06542050127142,468.3699186710996 -123.475009994827,40.06544185367125,468.9033246038806 -123.4749227038044,40.06546320600553,469.5418783357582 -123.4748354127267,40.06548455827429,470.1860410116018 -123.4747310076449,40.06550073198948,471.2695801418799 -123.4746266025128,40.06551690561081,472.6116086056979 -123.4745221973305,40.06553307913832,474.1149272741146 -123.4744177920978,40.06554925257197,475.4978993024503 -123.4743222161725,40.06555804170002,476.5963707279556 -123.4742266402217,40.06556683074936,477.8415201055933 -123.4741310642457,40.06557561971997,479.578983473323 -123.4740492492266,40.06559862854308,480.8455735641671 -123.4739674341521,40.06562163730862,482.2275173695883 -123.473891144936,40.0656534410894,483.498776304196 -123.4738148556485,40.06568524482015,484.5265208686245 -123.4737385662898,40.06571704850092,485.6484377093469 -123.4736538906064,40.06572159361176,487.6979057382271 -123.4735692149112,40.06572613866076,489.3644544762157 -123.4734845392042,40.06573068364794,490.8699205036714 -123.4733863467361,40.06575627827108,492.1617754507926 -123.4732881541939,40.06578187281133,493.9864980346625 -123.4732008912394,40.06580742262727,495.8511137761802 -123.4731136282191,40.06583297237775,497.8056868779851 -123.4730263651331,40.06585852206277,499.3703115480686 -123.4729158764228,40.06588416649174,500.2850760290958 -123.4728053876286,40.06590981081569,500.7274626732677 -123.472711206211,40.06592279181752,501.6973121341856 -123.4726170247569,40.06593577274293,503.3276854363213 -123.4725270724444,40.06596763136231,505.1239301157839 -123.4724371200474,40.06599948991214,507.6774384976571 -123.4723390572879,40.06604397813835,509.8555341957149 -123.4722409944004,40.06608846628193,510.5880817884591 -123.4721477367072,40.06611655907603,511.4962603528915 -123.4720544789367,40.06614465179538,512.8185103689775 -123.471961221089,40.06617274443997,514.7110603909309 -123.4718679631641,40.06620083700977,517.7043954377611 -123.4717747051619,40.06622892950482,520.1869673708916 -123.471676482368,40.06625032390917,522.315600742268 -123.4715782595118,40.06627171823052,524.1796138575876 -123.4714800365934,40.06629311246888,526.2585398087748 -123.4713778307182,40.06633131840215,528.2502381436688 -123.4712756247281,40.06636952424566,529.5713707258168 -123.471185475946,40.06637304009382,531.1973539959797 -123.4710953271541,40.06637655587189,532.8351477525811 -123.4710051783522,40.06638007157986,534.4744345022195 -123.4709150295403,40.06638358721772,536.0301376435993 -123.47081939416,40.0663839759128,537.3294127995619 -123.4707237587777,40.06638436452889,539.0299856878283 -123.4706281233936,40.06638475306607,541.3337645646117 -123.4705134042608,40.06639151737023,543.8435859789785 -123.4703986851042,40.06639828156092,545.4826663285002 -123.4703084423906,40.06638815070531,546.8837560986724 -123.4702181997032,40.06637801977921,548.2514875556756 -123.4701279570418,40.06636788878267,549.6306084314991 -123.4700416687745,40.06633674720576,551.7169738852009 -123.4699553805853,40.06630560556398,554.0792636119722 -123.4699084819904,40.06624071295101,557.8992492184772 -123.4698615834849,40.06617582031782,561.7813806933963 -123.4698146850687,40.0661109276644,564.7675565178088 -123.4697623218893,40.06604605714977,567.5918965144151 -123.4697099588096,40.06598118661015,570.3968286300338 -123.4696575958296,40.0659163160456,573.3171044107424 -123.4695726601405,40.06588306918559,576.0660164797029 -123.4694877245335,40.06584982226266,579.1343806201057 -123.4694027890087,40.06581657527679,582.421757617082 -123.4693001937033,40.06579809589395,584.7545261416474 -123.4691975984524,40.06577961641987,586.4456341222171 -123.4691530104387,40.06585222790562,584.8722429815055 -123.4691084223309,40.06592483937387,583.6304139713566 -123.4690801638804,40.06598793719748,582.5863588480822 -123.4690519053781,40.06605103501378,581.4621714508512 -123.4689662226192,40.06610806694579,581.7046895179487 -123.4688805397172,40.06616509881469,581.5773745901106 -123.4687815359289,40.06619226740549,582.625142386487 -123.4686825320612,40.066219435912,583.154623061198 -123.4686452236892,40.06627784648303,581.0151787644701 -123.4686079152539,40.06633625704182,578.8963626348975 -123.4686043776068,40.06641814977164,575.6749278207699 -123.4686008399521,40.06650004250025,573.9927309416418 -123.4685711677668,40.06658511752886,574.2195964617596 -123.4685414955087,40.06667019254907,574.7796395077849 -123.4684615711612,40.06667566760938,575.6260140953674 -123.4683816468005,40.06668114261461,576.4985766134603 -123.4683017224264,40.06668661756476,577.3997973342789 -123.4681931074366,40.06668705655797,578.6493668716467 -123.4680844924445,40.06668749544934,579.7742734802432 -123.4679758774499,40.06668793423887,580.7370694219296 -123.467867262453,40.0666883729266,581.6158371354391 -123.4677688510736,40.06668247197488,582.3967142676344 -123.4676704397104,40.06667657093946,582.982323829987 -123.4675843889901,40.0666800674432,583.3670856539011 -123.4674983382603,40.06668356388308,583.7156140516606 -123.4674123520892,40.06669650750844,583.9709971410252 -123.4673263658849,40.06670945107012,584.1975766445415 -123.4672403796475,40.06672239456814,584.4191843950429 -123.467132576757,40.06674172431155,584.6721624059664 -123.4670247738048,40.06676105395494,584.9891557279217 -123.4669169707906,40.06678038349831,585.3363585320301 -123.4668218812921,40.06678076669416,585.7476019485364 -123.4667267917917,40.06678114981197,586.3808259502288 -123.4666317022894,40.06678153285171,587.7120014111781 -123.4665366127854,40.06678191581344,589.5969806199464 -123.4664415232796,40.06678229869711,591.676884813804 -123.4663621674931,40.066765822595,593.4778579769883 -123.4662828117445,40.06674934643826,594.6318510908512 -123.4662034560335,40.06673287022691,595.6589083003067 -123.4661321975599,40.06670166525545,596.6387494845637 -123.466060939151,40.06667046023964,597.6875006185829 -123.4659896808068,40.06663925517946,599.2873782780568 -123.4658803827435,40.06663969475167,601.8632157958264 -123.4657710846778,40.06664013422077,605.1653832825157 -123.4656617866098,40.06664057358675,607.7761966777221 -123.4655674312733,40.06662835612119,609.4913205471362 -123.4654730759699,40.0666161385786,611.1972385718467 -123.4653855803977,40.06660809229704,612.6864624672837 -123.4652980848456,40.06660004594926,614.1332427435016 -123.4652105893134,40.06659199953528,615.7210211234908 -123.4651021314012,40.06659065564152,617.4572080642848 -123.4649936734922,40.06658931164617,619.0013380315778 -123.4648852155866,40.06658796754928,620.4505599194425 -123.4648041044646,40.06658547882454,621.8140332643674 -123.4647229933481,40.06658299004295,623.6569312693384 -123.4646418822369,40.06658050120456,626.6526484449718 -123.4645422273441,40.06654232350326,631.3588699021894 -123.4644425725619,40.06650414571532,634.7366525814795 -123.4643828460459,40.06646082161446,636.8850258687052 -123.4643231196055,40.06641749748201,639.1452456778743 -123.4642633932407,40.06637417331805,641.6299711921869 -123.464222128734,40.06633339945662,644.0632515917755 -123.4641808642765,40.06629262557993,646.2350347839472 -123.4641422824377,40.06624449287651,648.2078649413633 -123.4641037006533,40.06619636015953,649.9064502198893 -123.4640086061132,40.06617574659514,649.9176616059641 -123.4639135116298,40.0661551329523,649.9706009625264 -123.4638395721949,40.0661312853647,650.3978144024758 -123.4637656328113,40.06610743772954,650.9490108488018 -123.4636916934788,40.06608359004678,651.7337742300349 -123.463619582928,40.0660271935688,653.2016399894125 -123.4635474724961,40.06597079704473,654.0597992460532 -123.4634814461129,40.06590492862348,654.8610121728932 -123.4634154198571,40.06583906016309,655.5032930645 -123.4633555096664,40.065768443447,656.1411616326493 -123.4632955995998,40.06569782669837,656.632761053821 -123.4632610675686,40.06564232943453,657.024515787951 -123.4632265355938,40.06558683215953,657.3023166858528 -123.4631920036753,40.06553133487341,657.6148205151396 -123.4631177915056,40.06546707355111,658.4953684733132 -123.4630435794754,40.06540281217978,659.6687305536323 -123.4630105134885,40.06536200510975,660.8676070248259 -123.4629774475411,40.06532119802979,662.1255156697883 -123.46292386733,40.06527732374065,664.6233832129451 -123.4628702871877,40.06523344942602,666.971537119722 -123.4628167071142,40.06518957508587,668.8155136559875 -123.4627406061725,40.06514893984592,669.9100949603524 -123.462664505321,40.06510830455516,671.0648260701857 -123.4625964206823,40.0650408692509,673.25788287649 -123.4625283361782,40.06497343390506,677.0210353781944 -123.4624787983202,40.06492114547793,679.3024364320706 -123.4624292605382,40.06486885702874,681.1808263877251 -123.462379722832,40.06481656855747,682.6945389167624 -123.4623342057151,40.06475271705797,684.8325981064722 -123.4622886886835,40.0646888655394,687.6081487285699 -123.4622431717374,40.06462501400177,690.6599423281684 -123.4621792823129,40.06457173297863,693.3065634315121 -123.462115392988,40.06451845191919,695.4854148015047 -123.4620166980021,40.06447003338796,697.0741856474497 -123.4619180031555,40.06442161477145,697.486778141339 -123.4618460978364,40.06439513348028,697.3901969370643 -123.4617741925726,40.06436865214405,697.0361424454195 -123.4617799800042,40.06431525061676,699.4931546201783 -123.4617857674272,40.06426184908875,702.6459496451212 -123.4617996137044,40.06418794582118,706.4034143865383 -123.4618134599523,40.06411404255121,710.220430086235 -123.4618047844884,40.06404322076702,713.3441467727157 -123.4617961090433,40.06397239898121,716.6589281696957 -123.4618284223175,40.06390193867136,721.06859426655 -123.4618607355259,40.06383147835201,724.4334805329324 -123.4618767751444,40.06377892820934,726.649540967248 -123.4618928147386,40.0637263780641,729.3742018216943 -123.4619033187501,40.06366335274612,731.9164595582698 -123.4619138227427,40.06360032742663,734.0031188677615 -123.4619243267165,40.0635373021056,735.5661073971171 -123.4619567318231,40.0634804878016,737.322352681929 -123.4619891368761,40.06342367348829,739.3552711142373 -123.4620091187967,40.06334801367412,742.2096307598777 -123.4620291006739,40.0632723538558,744.6215248474967 -123.4620107875472,40.06319054840844,746.4937530985942 -123.4619924744653,40.06310874295681,748.1197486240355 -123.4620671769321,40.06304388701221,750.2480300673689 -123.4621418792573,40.06297903101953,752.5296590684217 -123.4621660018958,40.06290965300068,754.5353776099402 -123.4621901244859,40.06284027497629,756.5178365575152 -123.4621813814234,40.0627594810953,758.3929436337917 -123.4621726383825,40.06267868721243,760.2581807519576 -123.4621638953631,40.06259789332765,762.262250815643 -123.4621429776369,40.06253499331738,763.9278464896546 -123.4621220599498,40.06247209330245,765.590837926404 -123.462068482533,40.06242821858039,766.0258470189034 -123.4620149051852,40.06238434383283,766.2721652382578 -123.4619376715929,40.06232717939975,766.5677483921196 -123.4618604381298,40.06227001491386,766.9139273009125 -123.4617816764602,40.06229001120025,766.3758303572029 -123.4617029147441,40.06231000743327,766.3156126810608 -123.4616294194672,40.06235123954479,765.4418002554853 -123.4615559241015,40.0623924716099,763.4780964080719 -123.4615092277861,40.06245721567338,759.7062909612484 -123.4614625313826,40.06252195971779,756.7084325623222 -123.4614485798982,40.06258027498078,755.0006857796054 -123.4614346283904,40.06263859024163,753.2693482145901 -123.4614513620741,40.06268891035442,751.5742767303703 -123.4614680957829,40.06273923046421,749.96528712705 -123.4614665033478,40.06280694401652,747.6686923871281 -123.4614649109102,40.062874657568,745.7337820674944 -123.4614161437105,40.06293626066536,743.5474944985735 -123.4613673764233,40.06299786374203,741.6449426612767 -123.4613246399288,40.06304212233568,740.0753087073159 -123.4612819033792,40.06308638091355,738.6169357685549 -123.46122258178,40.06310236295064,738.6397830512482 -123.4611632601528,40.06311834495748,738.8742995453323 -123.4611122203577,40.06314689066146,739.3097656707019 -123.4610611805198,40.06317543634306,739.6192798686038 -123.461032887436,40.06323433348554,737.5935896457125 -123.4610045943039,40.06329323062076,736.0978138573437 -123.4610418697795,40.06335081711549,732.8523007017106 -123.4610791453181,40.06340840359731,730.8514012170901 -123.4611082487083,40.06346969662635,729.1602023624506 -123.461137352151,40.06353098964713,727.3534520055617 -123.4611623359163,40.06358914988626,725.5495746962974 -123.4611873197245,40.06364731011915,723.8747311917514 -123.461216476403,40.06371647583617,721.8426712320565 -123.4612456331409,40.06378564154468,719.57220911739 -123.4612522587343,40.06385647153604,716.9811461327527 -123.4612588843421,40.06392730152608,714.5016376264637 -123.4612436370236,40.06399611914983,712.6814405867996 -123.4612283896751,40.06406493677091,711.1693848599102 -123.461218189363,40.06413933282477,709.8965500079249 -123.4612079890295,40.06421372887691,708.6920816206383 -123.4611977886745,40.06428812492732,707.2555918722901 -123.4611083110639,40.06423888163257,709.9674317050062 -123.4610188335818,40.06418963826754,712.1364094433247 -123.4609435381671,40.06416684393798,713.7120078479004 -123.4608682428022,40.0641440495591,715.2986507225961 -123.4608196506018,40.06409665536192,717.6347206063922 -123.4607710584689,40.0640492611436,719.7706899150681 -123.4607224664035,40.0640018669041,721.665412533573 -123.4606686977796,40.06392964975947,723.8408522369837 -123.4606149292698,40.06385743258835,726.7903749622212 -123.4605981181481,40.06379556570801,729.8045029847888 -123.4605813070572,40.06373369882439,732.2701124512382 -123.4605644959973,40.0636718319375,734.0917588156044 -123.4605313793206,40.06362315141499,735.349229992866 -123.4604982626913,40.06357447088234,736.895423416856 -123.4604548892744,40.06352425651867,738.5426901578093 -123.4604115159215,40.06347404213795,740.3456609116926 -123.4603633045415,40.06341544917222,742.3492792893751 -123.4603150932443,40.06335685618537,744.1844518002233 -123.46026688203,40.06329826317741,745.8576979671193 -123.460225544072,40.06324594119021,747.3837611882468 -123.4601842061774,40.06319361918744,748.8979923039931 -123.4601428683463,40.06314129716909,750.560739046255 -123.4600925411195,40.06307274011054,752.9964828393219 -123.460042213994,40.06300418302875,754.8802507123063 -123.4599918869699,40.06293562592372,756.4875221688252 -123.4599136175805,40.06290712172794,757.9031775269502 -123.4598353482559,40.06287861747877,759.4652271555225 -123.4597634982777,40.06286000759575,760.8033782250416 -123.4596916483382,40.06284139766792,761.9594514601667 -123.4596325793619,40.0627933447123,763.4654806760338 -123.4595735104685,40.06274529172571,765.0208119157098 -123.4595109875017,40.06269147892485,766.7462327476896 -123.4594484646334,40.0626376660892,768.4969519384135 -123.4594069831708,40.06256382502391,770.5283059629396 -123.4593655017984,40.06248998394232,772.6394103769154 -123.4593219290082,40.06240985279066,775.2791987479305 -123.4592783563209,40.06232972162092,777.985508188325 -123.4592452200717,40.06227789162155,779.6770551417326 -123.4592120838729,40.06222606161193,781.0080000302552 -123.4591216333452,40.06218390625399,782.3337344352555 -123.4590311829285,40.06214175082451,783.751232621556 -123.4589855721166,40.06206320220182,785.4477893291677 -123.4589399614101,40.06198465355954,786.9343406844447 -123.4589312152606,40.06190280970262,788.2018279165503 -123.4589224691329,40.06182096584379,789.3695225450373 -123.4588893439659,40.06177071027996,789.8886416878066 -123.4588562188477,40.06172045470595,790.414986089014 -123.4588353994916,40.06167172497387,791.0846632831247 -123.4588145801655,40.06162299523745,791.7808915179694 -123.4587651567062,40.06158697545952,792.5785491531749 -123.4587157332989,40.06155095566,793.4986429502012 -123.4586470856583,40.06150031580182,795.1081275706094 -123.4585784381193,40.06144967590195,796.7982684921469 -123.4585376026849,40.06137005846568,799.2184914842862 -123.4584967673463,40.06129044101338,801.5722234785134 -123.4584415003611,40.0612385933795,803.2325135320669 -123.4583862334598,40.06118674571833,804.9840809354275 -123.4583309666424,40.06113489802984,807.4397626329135 -123.458276943992,40.06118717806886,806.4697788247834 -123.4582229212592,40.06123945808268,805.8044692018551 -123.458168898444,40.06129173807128,805.0681268326879 -123.4580623269874,40.06129006002185,806.5364797608486 -123.4579557555351,40.06128838187439,808.5589578845002 -123.4578491840871,40.06128670362884,811.4723667590923 -123.4577691606681,40.06127127397374,814.225280515434 -123.4576891372847,40.0612558442631,816.6705871392375 -123.4576254652355,40.06123405156449,818.6913123444882 -123.4575617932267,40.06121225883058,820.7154773964592 -123.4575100793233,40.06114003206123,823.9160799259023 -123.4574583655297,40.06106780526726,827.2529917491602 -123.4573762511663,40.06104608524805,829.3542179752474 -123.4572941368546,40.06102436517027,831.0689879556101 -123.4572183700777,40.06103253713556,831.7313963985609 -123.4571426032823,40.0610407090514,832.5444079299047 -123.4570999389029,40.06109598792767,831.928002704411 -123.4570572744549,40.06115126678809,831.4434246111446 -123.4570494249309,40.06120325912089,830.5132094330529 -123.4570415753954,40.06125525145277,829.7741223147623 -123.4570787447124,40.061297618663,828.3875549138553 -123.4571159140755,40.06133998586071,827.2875704403194 -123.4571859230438,40.06139009639551,825.5020176651968 -123.4572559321145,40.06144020688699,823.7125867883778 -123.457297326357,40.06150145239189,822.3088080714598 -123.4573387206739,40.06156269788094,820.8385228998612 -123.4574047474721,40.06163014445435,818.5442314336416 -123.4574707744008,40.06169759098862,816.0189489493722 -123.4574944128141,40.06175943139125,814.3329519547203 -123.4575180512707,40.06182127178818,812.5189252362737 -123.4574580327619,40.06183515520389,813.6886048311462 -123.4573980142285,40.06184903858863,814.7594781995748 -123.4573221307525,40.06183989062939,816.5414842964265 -123.4572462472963,40.06183074262036,818.2791963394441 -123.4571496719495,40.06179175906285,821.1995340754203 -123.4570530967122,40.06175277542396,824.4982187952969 -123.4569669568951,40.06174209310567,827.3320335739808 -123.4568808171043,40.06173141072319,830.1698605169782 -123.456807046111,40.06173170161583,832.5237508726603 -123.4567332751165,40.06173199246149,835.0258097191349 -123.4566616163872,40.06174172245486,837.3499855151339 -123.4565899576371,40.06175145240401,839.5416249584779 -123.4564815394679,40.06173928293461,843.1066588799908 -123.4563731213362,40.06172711336352,845.5823802561124 -123.4563035750331,40.06166440382373,849.0660299092314 -123.4562340288577,40.0616016942408,852.4638603190318 -123.4561202095356,40.06158875840822,855.5750839226889 -123.4560063902555,40.06157582246354,858.1878830367516 -123.4560088558228,40.06163827136849,857.085950509117 -123.4560113213952,40.0617007202727,855.6890915987581 -123.4560137869726,40.06176316917616,854.1091520638269 -123.4560018381949,40.06181517756863,853.1268603417386 -123.4559898893995,40.06186718595952,853.0067506239436 -123.455993055526,40.06193225641558,852.7670909991175 -123.4559962216591,40.06199732687079,852.8359692903636 -123.4560875679612,40.06203755665271,849.0083280136539 -123.4561789143702,40.06207778636175,845.8784608452428 -123.4562702608862,40.06211801599787,843.4437216655822 -123.4563659045059,40.06211973873953,840.9475972446442 -123.4564615481296,40.06212146140221,837.7742486752026 -123.4565571917575,40.0621231839859,833.7842589114764 -123.4566324974965,40.06214808058866,832.0425536388271 -123.4567078032899,40.06217297714205,830.1217737767956 -123.4567831091378,40.06219787364609,828.4458723938303 -123.4568711725069,40.06218965347478,825.230278069324 -123.4569592358541,40.06218143323664,821.875310906648 -123.457045271014,40.06217637010587,819.3149971429873 -123.4571313061607,40.06217130691125,817.6177192426588 -123.4572296260118,40.06216462058494,815.6215709133562 -123.4573279458428,40.06215793417531,812.784976403316 -123.4574140757086,40.06216704167615,809.2737124444665 -123.4575002055967,40.06217614911279,806.2721681372572 -123.4574760258133,40.06223765346915,807.7007124350137 -123.4574518459869,40.06229915782004,809.72416231702 -123.4573685745727,40.06230893410204,813.946987550733 -123.457285303134,40.06231871032431,817.7328286943015 -123.4572020316711,40.06232848648683,819.9070114266793 -123.4571427097544,40.0623444664386,821.3711923994987 -123.4570833878097,40.0623604463601,822.8047558521362 -123.4570043198936,40.0623859516618,824.925720850108 -123.4569252519181,40.06241145690979,827.2308078524326 -123.4568990933136,40.06248359740749,828.5758547393006 -123.4568729346546,40.0625557378987,829.7830240824255 -123.4569622310056,40.06260419790941,827.8039701358831 -123.4570515274826,40.06265265785019,825.3537152504289 -123.4571452478086,40.06264756432638,821.4262455879863 -123.4572389681199,40.06264247072683,817.8336852455454 -123.4573321024169,40.06262635725948,814.7079985327604 -123.4574252366693,40.06261024371749,811.784918536797 -123.4575393490499,40.06259011078936,807.7430475156262 -123.4576534613623,40.06256997774914,804.1409723700008 -123.4577594610331,40.06256247334253,801.214197462675 -123.4578654606796,40.06255496883903,798.5535882707229 -123.457949927696,40.062545187474,796.697751653076 -123.4580343946876,40.06253540604753,794.801156390304 -123.4581450524586,40.06253496851145,791.9754841981822 -123.4582557102271,40.06253453086971,788.0717942684413 -123.4583219715878,40.06256024943763,785.8138062006741 -123.4583882329981,40.06258596796726,784.026417708129 -123.4584712580456,40.06259036320532,781.948044769339 -123.4585542831033,40.0625947583838,780.1091155712065 -123.4586373081711,40.06259915350272,777.8697121749115 -123.458691385283,40.06264145324899,776.0531796526133 -123.4587454624619,40.06268375296936,774.1042102713845 -123.4587642856491,40.06274036354505,773.3420011646542 -123.4587831088679,40.06279697411694,772.7115324517246 -123.458826570376,40.06286057275072,770.4478252222201 -123.4588700319655,40.06292417136702,769.3615622400816 -123.458934947176,40.06297823746689,767.456194758526 -123.4589998624893,40.06303230352933,766.4400594428024 -123.4590756156453,40.0630981360075,765.513757137687 -123.4591513689473,40.06316396843459,764.8763792048647 -123.4592359950988,40.06317780429495,763.6413032665898 -123.4593206212841,40.06319164009326,762.0663538181952 -123.4593898782203,40.06320553677277,760.4422586682953 -123.4594591351843,40.06321943341069,758.9711752537512 -123.4595346509678,40.06324983833721,757.2870235982385 -123.459610166818,40.06328024321401,756.1848536057576 -123.4596871720456,40.06330355649399,754.6516662601513 -123.4597641773254,40.06332686972237,752.8062765930713 -123.4598290354029,40.06337227531852,751.120185299658 -123.4598938935664,40.06341768087753,749.5058497233883 -123.4599582050737,40.06347320528592,747.7416523869884 -123.4600225166855,40.06352872965749,745.7102684512513 -123.4600806224027,40.06357561841391,743.374394290016 -123.4601387281995,40.06362250714034,740.0687169389789 -123.460197489374,40.0636754160256,735.869926298084 -123.4602562506394,40.06372832488005,731.8954748670172 -123.4602936617145,40.06380611826057,730.4373688596655 -123.4603310728755,40.06388391162749,728.6607292434533 -123.4603838297261,40.06395810118312,725.3334133696856 -123.4604365866917,40.06403229071313,721.7875080028762 -123.4604955074671,40.06410881759736,719.2053092568153 -123.4605544283749,40.06418534444988,717.213987260395 -123.4605857240459,40.06426788579692,714.5082793955301 -123.4606170197934,40.06435042713392,711.5062191644736 -123.4606358847654,40.06441294191678,710.2360559753708 -123.4606547497725,40.06447545669568,709.0328515951438 -123.4607022702261,40.06453274012041,706.5431206205551 -123.4607497907597,40.06459002352464,704.3315295951934 -123.4607973113731,40.06464730690837,701.9586679836582 -123.4608550254292,40.06469667679524,699.2599128892161 -123.4609127395687,40.0647460466525,696.9510716200697 -123.4609704537916,40.06479541648008,694.7884563065005 -123.4610005451844,40.06485119453959,693.2191444114144 -123.4610306366267,40.06490697259047,691.2694705136157 -123.4609424827454,40.06490220595282,696.0448192247317 -123.4608543288758,40.06489743924801,698.697151730112 -123.4607389848292,40.06488726956137,701.9776954515252 -123.4606236408158,40.06487709975967,705.7795283730223 -123.4605543978441,40.06486556564806,707.8571479630148 -123.4604851548955,40.06485403149493,709.8341367100132 -123.4603887677568,40.06484391732541,713.2831497313732 -123.4602923806459,40.06483380307552,717.4335442752423 -123.4601959935628,40.06482368874524,721.4497525197875 -123.4600821257933,40.0648044586719,726.2097129804226 -123.4599682580868,40.06478522848621,729.973670313615 -123.4598774740064,40.0647702366725,731.5914163699209 -123.4597866899652,40.06475524478739,733.0526507505003 -123.4596773830418,40.06472851693249,737.6273073281434 -123.4595680762029,40.06470178897387,742.7914396893352 -123.459468070549,40.06468683341826,745.6613297730814 -123.459368064938,40.06467187777604,748.4318507403957 -123.459287897119,40.06463558649629,752.149835218382 -123.4592077293848,40.06459929516037,755.5388726807704 -123.4591564917632,40.06452234352975,760.0000886491497 -123.4591052542577,40.06444539187478,764.6462764944109 -123.4590424678028,40.06440338927728,767.4585993294418 -123.4589796814251,40.06436138664505,770.3611412748972 -123.4589168951243,40.06431938397804,773.4843472803456 -123.45884295235,40.06429448347684,776.044568498917 -123.4587690096291,40.06426958292804,778.9404061656739 -123.4586950669618,40.06424468233165,781.5897400972484 -123.4585914416294,40.06422462294331,784.3589566530652 -123.4584878163571,40.06420456346187,786.623240260019 -123.4583841911447,40.06418450388735,788.5861477508859 -123.4582929407211,40.0641762046641,789.985182777947 -123.4582016903189,40.06416790536884,791.3222860803189 -123.4581104399383,40.0641596060016,792.6342231051524 -123.4580119723347,40.06414464310405,794.1498567799653 -123.4579135047734,40.06412968012253,795.5578416792043 -123.4578133738328,40.06409582859769,797.7487479901802 -123.4577132429907,40.06406197698559,800.0599391074629 -123.457620841756,40.06403478674609,801.8871307784586 -123.4575284405943,40.06400759643236,803.3924847672405 -123.4574399940775,40.06402014872903,804.1562033277164 -123.4573515475275,40.06403270095834,805.0471560466851 -123.4572837718341,40.06401053063946,805.9920089256583 -123.4572159961843,40.06398836028061,807.0363886249919 -123.4571358776545,40.06395915294713,808.5105291079735 -123.4570557591928,40.06392994555771,809.8172058100861 -123.4569694220123,40.06389013418499,811.0904180541581 -123.4568830849318,40.06385032274711,812.2742833866137 -123.4568274789124,40.06380920913351,813.1296518330331 -123.4567718729598,40.06376809549254,813.9396683032306 -123.4567346709317,40.06372100457418,814.5650703206411 -123.4566974689549,40.06367391364319,815.2270333163633 -123.4566555221797,40.06360676542768,816.0623535137222 -123.4566135754872,40.06353961719575,817.0837016719033 -123.4565925416826,40.06345860890092,818.7374724611167 -123.4565715079286,40.06337760060087,820.291404780387 -123.4565504742253,40.06329659229557,821.6477314884653 -123.4565377373701,40.06323050986138,822.6884184635257 -123.45652500054,40.06316442742491,823.7275423246122 -123.4564983289366,40.06308304767619,825.0221756438488 -123.4564716573975,40.06300166791984,826.3479286459398 -123.4564204188034,40.06292392776144,827.64850822156 -123.4563691803263,40.06284618757872,828.7684207050307 -123.4562905452702,40.06280870722963,830.3718523731037 -123.4562119102999,40.06277122682644,833.1162784975617 -123.4561332045392,40.06272311818943,836.8726520000247 -123.456054498889,40.06267500949793,840.3313816309693 -123.455994244214,40.06262800907306,842.3022162820359 -123.4559339896219,40.06258100861604,843.8628430878366 -123.4558865164925,40.06253002136722,845.1799923055386 -123.4558390434342,40.06247903409812,846.2554835078055 -123.4557915704467,40.06242804680869,847.5933881827325 -123.4557313476427,40.06238576987882,848.6022069783794 -123.4556711249131,40.06234349291694,849.5144520891251 -123.4556171521525,40.06231654356429,850.0693536048443 -123.4555631794343,40.06228959418615,850.6127041077085 -123.4554831265067,40.06226983295851,851.0801645585219 -123.4554030736248,40.06225007167522,851.5134783419186 -123.455328932584,40.06219485890271,852.4717019645151 -123.455254791663,40.06213964608156,853.5475785028839 -123.4551577073155,40.06210105651116,855.1278803264066 -123.4550606230771,40.06206246685856,857.199800887465 -123.4549714564896,40.06205888058592,858.6166620478175 -123.4548822899108,40.0620552942446,860.0438249830989 -123.4547931233406,40.06205170783459,861.3986288493136 -123.4547596752419,40.06210655601811,861.0662710821642 -123.4547262270897,40.06216140419173,861.3169805941302 -123.4546927788843,40.06221625235549,861.9104239662414 -123.4547474676361,40.06227390376953,860.9551594506922 -123.4548021564803,40.06233155515669,859.9456133615004 -123.454856845417,40.06238920651693,858.9333374277301 -123.4549186203078,40.06243383968778,857.6257548071652 -123.4549803952792,40.06247847282488,856.0984805888454 -123.4550421703312,40.06252310592827,854.6084285503887 -123.4551254308409,40.06256293083771,852.6151211446095 -123.4552086914472,40.06260275568648,850.5736811336416 -123.4552812880597,40.06265679366078,847.6928187255726 -123.4553538847867,40.06271083158844,844.7629218275379 -123.4554064649865,40.06275943709988,842.8417339937158 -123.4554590452611,40.06280804258662,841.7547014796393 -123.4555116256105,40.06285664804869,841.0350039289463 -123.4555736058543,40.06293198449371,840.4949198211037 -123.4556355862351,40.0630073209038,840.6567133098227 -123.4557004045724,40.06304721792276,840.3007773677468 -123.4557652229852,40.06308711490477,839.8354345299326 -123.4558423762428,40.06313286801738,838.9509045849838 -123.4559195296034,40.06317862107766,837.4857813531714 -123.455993643324,40.06322950345538,834.3052598791317 -123.4560677571548,40.0632803857846,831.4471752820421 -123.4561418710958,40.06333126806537,828.7776117536732 -123.4561669818141,40.06340911121985,826.7565537968054 -123.4561920925903,40.06348695436751,824.2021556418821 -123.456146283804,40.0635320104438,825.0585164153144 -123.4561004749575,40.06357706650195,825.9824120234831 -123.4560220124188,40.06356556597061,827.9301191524797 -123.455943549906,40.06355406538594,829.2475976954441 -123.4558527840558,40.0635414322186,831.457873044468 -123.4557620182384,40.06352879897995,834.7628947572557 -123.4556796313219,40.06346653324646,839.3885968681253 -123.4555972445554,40.0634042674529,842.3786578723289 -123.4555098999874,40.06336682082736,844.1113239346586 -123.4554225555146,40.06332937413519,845.5617257041707 -123.4553536909985,40.06329736579766,847.3908647556292 -123.4552848265466,40.06326535741869,849.5536340204466 -123.4552011182696,40.06323537555437,852.2327673835159 -123.4551174100656,40.06320539362901,854.7190364638967 -123.4550587186765,40.06316232304651,856.5934053644949 -123.4550000273612,40.06311925243356,858.3655601421874 -123.4549413361199,40.06307618179011,860.5068228764567 -123.4548917774949,40.06301969127406,862.9731752283196 -123.454842218952,40.06296320073579,865.4452848097112 -123.4547880418716,40.06290554736579,867.6953100763359 -123.4547338648827,40.06284789396936,869.5874313625472 -123.4546383167364,40.06280929794001,873.5891171271079 -123.4545427686975,40.06277070183099,877.6936123715543 -123.4544519649058,40.06275216301161,880.9008975313235 -123.4543611611629,40.06273362412074,883.6712009876893 -123.4542904001536,40.06272445408875,886.5081253117164 -123.4542196391629,40.06271528401343,888.9546801993278 -123.4541522029372,40.06274389093925,891.027049561624 -123.4540847666549,40.06277249782599,891.8083367510238 -123.454125087229,40.06282666302241,890.420082537537 -123.4541654078672,40.0628808282039,887.282311269375 -123.4542179298503,40.06292077425701,883.931977993795 -123.4542704518947,40.06296072028569,880.8472505544651 -123.4542912840942,40.06301181266142,878.6762018405052 -123.4543121163251,40.06306290503277,876.6972268045538 -123.45422430246,40.06310891235667,878.211121557324 -123.4541364884765,40.06315491961429,880.1895103524091 -123.4540521455657,40.06318359275088,882.1545923080041 -123.4539678025838,40.06321226582634,883.992871253415 -123.4539048511651,40.06322195999624,885.5100257127791 -123.4538418997282,40.06323165413202,886.8098205891341 -123.4537773094929,40.06322600243463,888.37346887464 -123.4537127192679,40.06322035070117,889.8935974425151 -123.4536297328892,40.06322185660181,891.6663289104965 -123.4535467465062,40.06322336244304,893.3550267962306 -123.453457839443,40.06325913865361,894.6551556140683 -123.4533689322863,40.06329491479626,896.122620746542 -123.4532737364395,40.06330945855787,897.941358397917 -123.4531785405516,40.06332400224147,899.7719225257072 -123.4530678814277,40.06332443504094,902.0026449421334 -123.4529572223014,40.06332486773473,903.8912817474708 -123.4528465631727,40.06332530032282,905.3868476672512 -123.4527359040416,40.06332573280521,906.874935047191 -123.4526589714527,40.06331304307566,908.0105505053709 -123.452582038892,40.06330035329486,909.1051155833504 -123.4525003315004,40.06326288237525,910.3052350748077 -123.4524186241981,40.06322541139728,911.5621442784644 -123.4523615937666,40.06320083435102,912.4640026739281 -123.452304563376,40.06317625727631,913.4428533194532 -123.4522428519676,40.06314106998686,914.5979438290805 -123.4521811406225,40.06310588266398,915.9926366669075 -123.4520933328072,40.06307552090437,918.041764624394 -123.4520055250694,40.06304515907763,920.3476684274743 -123.4519101186066,40.06302781716319,922.9883322448695 -123.4518147121915,40.06301047516988,925.2943156910993 -123.4517418135952,40.06298792793177,927.0553689018269 -123.4516689150467,40.06296538064746,928.6995010766857 -123.4515960165458,40.06294283331692,930.380914822154 -123.4515006648932,40.0629337574306,932.498059209618 -123.4514053132652,40.06292468146564,934.5519446384236 -123.4513255282988,40.06294546192761,936.0594483903741 -123.4512457432836,40.06296624233482,937.4372938484137 -123.4511617801275,40.06297496712694,939.3044883942556 -123.4510778169495,40.06298369185831,941.6613950806189 -123.4509938537495,40.06299241652893,945.060084166709 -123.4509168984931,40.062976182909,947.9187904287123 -123.4508399432727,40.06295994923775,950.6356072204297 -123.4507722096338,40.06294367963627,953.0088825431517 -123.4507044760268,40.06292740999495,955.8795473242438 -123.4506380160378,40.06294892543926,958.1192968044833 -123.4505715560067,40.06297044084559,960.512363580889 -123.4505525628027,40.06304255204768,961.1513097425352 -123.4505335695593,40.063114663246,962.0627751966867 -123.4505031498972,40.0631632000738,963.2175044988028 -123.450472730192,40.06321173689342,964.1768732708509 -123.4505109470827,40.06325803859472,962.7282331241593 -123.4505491640253,40.06330434028276,961.3236779054075 -123.4506602096516,40.06331073159409,957.964587760453 -123.4507712552975,40.06331712279885,954.942110834804 -123.4508823009632,40.06332351389706,952.5909117647556 -123.4509664782697,40.06334719871276,950.6106074344625 -123.4510506556339,40.06337088346687,947.8570768419386 -123.451134833056,40.0633945681594,945.1105617697747 -123.4511286572195,40.06346800730226,945.3143249499044 -123.4511224813704,40.06354144644391,945.1649579533037 -123.451204835695,40.06359938543833,942.2337984154218 -123.451287190159,40.06365732437287,939.551484422457 -123.4513794325451,40.06366090149366,936.9800189094946 -123.45147167494,40.06366447854098,934.4115257571843 -123.4515639173439,40.06366805551478,931.8074276431134 -123.4516509222512,40.06365433238272,929.789259176988 -123.451737927123,40.06364060918549,927.7883560147055 -123.4518249319594,40.06362688592308,925.7373757959778 -123.4519219932184,40.06366193554651,923.8214428857744 -123.4520190545764,40.06369698508787,920.9327707421421 -123.4521267965623,40.063720183469,918.3882208112727 -123.4522345386204,40.06374338174943,916.6139833950272 -123.4523116199976,40.06377850903375,915.6720356448625 -123.4523887014536,40.06381363626612,914.5833442347675 -123.4524609768546,40.06381925872303,912.5050734454891 -123.452533252267,40.06382488113479,910.3150756966464 -123.4526146086888,40.06380921110944,907.8480530511462 -123.4526959650728,40.06379354102711,906.2371444362275 -123.4527645630739,40.06378540003344,904.8564905016307 -123.4528331610584,40.0637772589992,903.4675683218597 -123.4529236629436,40.06377585550287,901.5560691964019 -123.4530141648245,40.0637744519359,899.4984422258663 -123.453104666701,40.06377304829822,897.3191079444617 -123.4531857062262,40.06378690260465,895.3242329376338 -123.4532667457838,40.06380075685422,893.4948875706708 -123.4533477853736,40.06381461104685,891.748725432911 -123.4534509641279,40.06384491168933,889.6058089254201 -123.4535541429728,40.06387521223922,887.7175702774166 -123.4536328091079,40.06391741807638,885.9845640035002 -123.4537114753397,40.06395962385926,884.4367325057697 -123.4538022648717,40.06397580142939,882.5705112536476 -123.453893054446,40.06399197892805,880.9101529243333 -123.4539621857138,40.06398698430866,879.2057769081243 -123.4540313169711,40.06398198964804,877.336210697007 -123.4541204128439,40.0639745548127,873.6168991042177 -123.4542095086968,40.06396711990894,869.6268761921649 -123.4542801768609,40.06396211907439,866.7551473202892 -123.4543508450143,40.06395711819682,864.9964647930919 -123.4544246027412,40.06395446703709,863.5815157007382 -123.4544983604619,40.06395181583044,862.4166218397417 -123.454587550427,40.06395855154271,860.9583200797679 -123.4546767404089,40.06396528718623,859.2542816826178 -123.4547548112663,40.06399489790621,857.5894210007393 -123.454832882191,40.06402450857306,855.7029704042585 -123.4549109531829,40.06405411918674,853.7961641370442 -123.4549828554978,40.06408060480089,852.1429868857588 -123.4550547578681,40.06410709036997,850.6610280714344 -123.4551266602937,40.06413357589401,849.1451313758452 -123.4552007011159,40.0641734369534,847.5411991305136 -123.4552747420242,40.06421329796473,845.8810104681838 -123.4553287790487,40.06424969472987,844.5300097557725 -123.4553828161306,40.06428609146929,842.8963246093807 -123.4554476565108,40.06432913770465,840.470636654858 -123.4555124969725,40.06437218390294,837.3814591814929 -123.4555773375157,40.06441523006417,834.3323498300656 -123.4556350318969,40.06446224075848,831.6949609306582 -123.4556927263574,40.06450925142322,829.0455691595904 -123.4557504208972,40.06455626205841,826.4083206570102 -123.455796797254,40.0645962315561,824.2444406290442 -123.455843173665,40.06463620103465,822.0206814576561 -123.4559120555051,40.06467057088201,819.2425475344337 -123.4559809374142,40.06470494068783,817.5022172389818 -123.4560498193923,40.06473931045208,816.3677616418325 -123.4561108365859,40.06478512688641,815.6368852774642 -123.4561718538612,40.06483094328778,815.0030012845177 -123.4560976181645,40.06487729220157,816.8518757591382 -123.4560233823669,40.06492364106798,819.0545427265221 -123.4559496236668,40.06492629325059,820.5907203704885 -123.4558758649605,40.0649289453863,822.182339850328 -123.4558035723853,40.06492096325208,823.6356233425397 -123.4557312798265,40.06491298107262,825.0784678140678 -123.4556712358156,40.06489786503686,826.2860822664593 -123.455611191831,40.06488274896978,827.4440366658771 -123.4555617571861,40.06484515330462,828.7289809364954 -123.4555123225956,40.0648075576178,830.1573197856168 -123.4554183632757,40.06477722257942,832.6937464568282 -123.4553244040387,40.06474688746422,835.6567521005454 -123.4552457437721,40.06470586370146,838.2831340181493 -123.4551670835996,40.06466483988448,840.9830162024493 -123.4550755421765,40.06461284450968,844.4543001496377 -123.4549840008923,40.06456084906132,848.8439921285027 -123.4549152819532,40.06455088410448,851.2348003267271 -123.4548465630338,40.06454091910675,853.5075600827494 -123.4547802284438,40.06458133146192,853.7833973928196 -123.4547138937754,40.06462174377926,854.3046063817899 -123.4546487171207,40.06468222748571,854.6272344555525 -123.4545835403509,40.06474271115551,855.0842089720687 -123.4546279741509,40.06479882824911,853.1496545808039 -123.4546724080241,40.06485494532474,851.9032037298532 -123.4547722971063,40.06487817205494,849.3064271640072 -123.4548721862556,40.06490139869855,845.9335637207021 -123.454972075472,40.06492462525555,842.6047200143364 -123.4550588745031,40.06495682579681,841.0231468112398 -123.4551456736154,40.06498902627241,839.5246090618772 -123.455232472809,40.06502122668235,838.0462179253482 -123.4553150780611,40.06507758715961,836.7933345518539 -123.4553976834492,40.06513394757666,835.9375495415962 -123.4554721908818,40.0651513687712,834.3567723726169 -123.4555466983518,40.06516878991754,832.8760847048342 -123.4556204179965,40.06516023344781,831.0415484799532 -123.4556941376224,40.06515167693124,829.4183704166163 -123.4557963404097,40.0651503891833,827.744246730509 -123.4558985431923,40.06514910134523,825.8772482205177 -123.4560007459701,40.06514781341704,823.7835449347183 -123.4561029487433,40.06514652539871,821.3587949495295 -123.4561942028388,40.06515521997585,819.1590339592968 -123.456285456957,40.06516391448098,816.8779317870678 -123.4563767110976,40.0651726089141,814.7164404678613 -123.4564629497307,40.06519746254085,813.0057796068373 -123.4565491884259,40.06522231610295,811.0803665412976 -123.4566354271832,40.06524716960038,808.9851641998221 -123.4567093123713,40.06526341151138,807.2895944007058 -123.456783197594,40.06527965337504,805.9408881845891 -123.4568600621421,40.06528171217097,804.4221735247095 -123.4569369266943,40.06528377091588,803.1052161696579 -123.4570399356175,40.06528808835287,800.9028527192638 -123.4571429445529,40.06529240569818,798.2929588060864 -123.4572214408354,40.0653086290874,796.4889628737787 -123.4572999371546,40.06532485242317,795.1392673893673 -123.4573923610722,40.06535519199181,793.9802507830753 -123.4574847850712,40.06538553148607,792.4666665902323 -123.4575688170505,40.06538677421563,789.8256184571522 -123.4576528490322,40.06538801688421,785.6930113118362 -123.4577368810164,40.06538925949184,782.351549203124 -123.4578139749528,40.06542556398704,780.5271552150525 -123.4578910689708,40.06546186843025,779.9795534202229 -123.4579743584369,40.06550523396664,778.7953710724879 -123.4580576480084,40.06554859944223,777.318269877627 -123.4581409297745,40.06559078394908,774.9864690023852 -123.4582242116431,40.06563296839518,771.8901497948223 -123.4583002155104,40.0656594357158,769.1109781783765 -123.4583762194361,40.0656859029861,765.881983069318 -123.4584522234202,40.0657123702061,762.6174543016795 -123.4585051208359,40.06575666915607,758.9373591238649 -123.4585580183202,40.06580096808116,756.3034799309567 -123.4586109158731,40.06584526698138,753.8404232660157 -123.4586632176812,40.06590258478924,751.2066980812426 -123.4587155195773,40.06595990257243,748.0719714857411 -123.4587678215612,40.06601722033094,744.5700459422028 -123.4588173644412,40.06607056004224,741.1247872826532 -123.4588669073986,40.06612389973143,737.4423645451307 -123.4589164504335,40.06617723939851,734.1878619558661 -123.4589261637133,40.06625041914458,731.7397679523694 -123.4589358770147,40.06632359888882,730.1867385624226 -123.4589146918522,40.06637328224867,729.7024820985362 -123.4588935066592,40.0664229656044,729.2600706520624 -123.4588831676086,40.06648559632512,728.8204573672833 -123.4588728285397,40.06654822704437,728.6819829486104 -123.4588224797886,40.06660393058845,729.2955837335376 -123.4587721309558,40.06665963411057,730.2657926346435 -123.4587200786945,40.06669054463658,731.529432549569 -123.4586680263861,40.06672145513929,733.4980118342592 -123.4586034879112,40.06672407251016,735.9999040784174 -123.4585389494311,40.06672668984511,739.6362637614707 -123.4584558401921,40.06671048561034,743.3976580962922 -123.4583727309919,40.0666942813157,746.2964458846374 -123.4582849633305,40.06667100975509,748.3303968729298 -123.4581971957283,40.06664773812759,750.6357264128042 -123.4581261928528,40.0666031432384,752.9617488215525 -123.4580551900697,40.06655854830486,755.1172913678322 -123.4579705283273,40.06653998798105,756.311851726852 -123.4578858666303,40.06652142759508,757.3855855767335 -123.4578272312538,40.06648741209201,758.986161955218 -123.4577685959355,40.06645339655874,760.4500535835584 -123.4577099606754,40.06641938099524,761.6619706722959 -123.4576513254736,40.06638536540154,762.9288813901142 -123.45760496262,40.0663477584872,764.3545667107004 -123.4575585998175,40.06631015155377,765.6308052692405 -123.4575030150803,40.06627258101904,767.2795897719236 -123.4574474304042,40.0662350104571,768.9795489414901 -123.4574056076697,40.06618675708277,771.7890740812581 -123.4573637849944,40.06613850369264,774.8025119331514 -123.4573152994409,40.06608988294147,778.3461608651876 -123.4572668139563,40.06604126216923,781.3350852693085 -123.4572183285409,40.06599264137589,783.7469888149749 -123.457151472985,40.06595511514961,785.8082763525522 -123.4570846175022,40.06591758888413,787.6597433375302 -123.4570177620927,40.0658800625794,789.4894192125865 -123.4569606015624,40.06583659330069,791.3021533935298 -123.4569034411049,40.06579312399305,793.3568538314802 -123.4568296026266,40.06578396765949,794.9621078157629 -123.4567557641675,40.06577481127873,796.7361002427122 -123.4566820203536,40.06577982574853,798.0063256550247 -123.4566082765283,40.06578484017144,799.2965156466316 -123.456542146679,40.06577919609039,800.8698239955679 -123.4564760168403,40.06577355197155,802.5231747424561 -123.4563966032384,40.06577347119575,804.5064061770673 -123.4563171896362,40.0657733903655,806.9843089177793 -123.4563223933509,40.06583661572591,804.7126222064038 -123.4563275970757,40.06589984108535,802.5837756823194 -123.4563328008107,40.0659630664438,800.3070467678464 -123.4563700615854,40.0660188174608,797.3824803159904 -123.4564073224211,40.06607456846493,794.7120773979157 -123.4564445833178,40.06613031945621,792.6746398823908 -123.4565064887599,40.06619384625634,790.037167128745 -123.4565683943172,40.06625737302203,787.512817737188 -123.4566291701945,40.06630515835145,785.150397967975 -123.4566899461566,40.06635294364811,782.8015458028214 -123.4567507222038,40.066400728912,780.4772969952173 -123.4567958473553,40.06648321673391,777.8566451051206 -123.4568409726165,40.06656570453648,775.2348603674585 -123.4568167749484,40.06662484690475,774.1804311267289 -123.4567925772389,40.0666839892676,773.0100800847677 -123.456768379488,40.06674313162503,771.8358593515052 -123.4566641310253,40.06678369452023,771.9074778020981 -123.4565598824383,40.06682425732203,772.2481831674099 -123.4564802889634,40.06687417039942,772.4631874358711 -123.4564006953722,40.06692408342233,774.4278645281917 -123.4563363824959,40.06696055222644,775.8919067467126 -123.4562720695508,40.066997020995,777.8192157098674 -123.456207756537,40.06703348972801,778.9936742191989 -123.4561096553597,40.06707402791645,781.0126695767264 -123.4560115540655,40.06711456602218,783.9942005627995 -123.4559163849826,40.06713383560417,787.1707370403802 -123.4558212158454,40.06715310510821,789.2901213371613 -123.4557121741445,40.06716652440839,790.7249989974871 -123.4556031323999,40.06717994360615,792.0942336248863 -123.455515860577,40.06723106715429,794.1585034768447 -123.4554285886233,40.06728219063695,797.0609517056567 -123.4553287687626,40.0672955733241,800.628852810048 -123.4552289488621,40.06730895592543,802.9966835540304 -123.4551243528175,40.06729755748568,804.4579456619823 -123.4550197568069,40.06728615895126,805.7510974877299 -123.4549346088102,40.06727153478428,807.3522556116363 -123.4548494608494,40.06725691055446,809.3875751543795 -123.4547643129244,40.06724228626183,811.8535073916855 -123.4546791231617,40.06722136372945,814.1341969634353 -123.4545939334507,40.06720044113406,816.101297992711 -123.4545087437912,40.06717951847565,817.987211233223 -123.4544020071585,40.06715435015897,820.8491024663228 -123.4542952706035,40.06712918174341,824.156465877708 -123.4542112835792,40.06713502210099,825.7605300125767 -123.4541272965399,40.06714086239774,827.3623829748032 -123.4540712005782,40.06718044690653,827.3893159897405 -123.4540151045515,40.06722003138826,827.3890077071173 -123.4539566016898,40.06719034351838,829.3847527686725 -123.4538980988787,40.06716065561854,831.406636321121 -123.4538240359661,40.06711784149009,834.5882707587098 -123.4537499731461,40.06707502731349,838.0531339200668 -123.453671713436,40.06706890424221,839.8807033799251 -123.4535934537395,40.06706278111795,841.3881425771361 -123.4535151940565,40.06705665794079,842.8729135776708 -123.4534386885548,40.06703176403551,845.4637839991703 -123.4533621831085,40.06700687007926,848.6199512327528 -123.4532990246007,40.06698586031398,851.2812955189828 -123.4532358661314,40.06696485051396,853.8439054607951 -123.4531363473608,40.06694634477941,857.7016495038039 -123.4530368286435,40.06692783895902,861.5028105602419 -123.4529468240514,40.06695338424927,862.2930852469761 -123.4528568193916,40.06697892946988,863.3548029976541 -123.4529129197273,40.06701728750966,861.3447523610942 -123.4529690201258,40.06705564552168,858.9145187651235 -123.4530352369862,40.06707428162913,856.3856508818827 -123.4531014538823,40.06709291769844,853.9889877199749 -123.4531847345145,40.06713510576348,850.3965260184435 -123.4532680152491,40.06717729376777,846.0531121150746 -123.453323645386,40.06722195178781,842.772773713997 -123.4533792755957,40.06726660978038,840.0360142934732 -123.4534409913258,40.06730179641551,837.5876180405443 -123.4535027071193,40.06733698301716,835.030115890616 -123.4535567366854,40.06738747315464,832.3161878635852 -123.4536107663314,40.06743796326602,829.7227943958068 -123.4536647960573,40.06748845335133,827.530251851345 -123.4535833586317,40.06750798216216,829.1785053552338 -123.453501921159,40.06752751091593,831.4487467985058 -123.4533983445178,40.0675153196352,834.9530615648563 -123.4532947679126,40.06750312826162,838.4008009724276 -123.4532193205859,40.06748334747601,841.0966311758261 -123.4531438733025,40.06746356664092,844.1546971254527 -123.4530674669767,40.06742791243842,848.431661798531 -123.4529910607303,40.06739225818487,852.9853672764186 -123.4529146545632,40.06735660388029,856.1999548921119 -123.4528321181418,40.06734944723825,858.2053400456796 -123.452749581737,40.0673422905373,860.1019910861745 -123.4528253024509,40.0674034034266,856.8129873432049 -123.4529010233002,40.06746451626501,852.9419779460411 -123.4529813397209,40.06752324920663,847.8832070986646 -123.4530616562796,40.06758198209119,843.2127471091745 -123.4531224152606,40.06762740743971,840.6580885694774 -123.4531831743224,40.06767283275553,839.1354141114783 -123.4532439334649,40.06771825803871,837.4885626244062 -123.4533129215035,40.06776837484709,835.3970691033912 -123.4533819096432,40.0678184916134,833.0905305463208 -123.4534508978839,40.06786860833763,830.7910006420148 -123.4535235613992,40.06793209460675,828.1764350666721 -123.4535962250494,40.06799558082883,825.2291566443884 -123.4536596352676,40.06805437948438,822.5592471670913 -123.453723045595,40.06811317810406,819.6691710229634 -123.4537920082624,40.06815935825912,817.5348535265775 -123.4538609710229,40.06820553837225,816.1314432945944 -123.4539299338764,40.06825171844341,815.3272252844613 -123.4540406009597,40.06825128477659,813.8650134159918 -123.4541512680407,40.06825085100409,812.2168528526169 -123.4542356642021,40.06822926323411,810.4829291319113 -123.4543200603097,40.06820767540286,808.7965094854894 -123.4543875724491,40.06818969654895,807.5042464886667 -123.4544550845528,40.06817171765584,806.5550648134957 -123.4545440680924,40.06814656884975,805.6512120352022 -123.454633051566,40.06812141997553,805.2230686242875 -123.4547139081005,40.06810693138038,804.6604198675188 -123.4547947646003,40.0680924427289,804.0829464868771 -123.4548756210653,40.06807795402118,803.4653269780775 -123.4549536821327,40.06805402872416,802.5763081425288 -123.455031743145,40.06803010337474,801.5139281611889 -123.4551098041024,40.06800617797293,800.228989976372 -123.455195836728,40.06797395462551,798.7586367310566 -123.455281869272,40.06794173121448,797.3723250486664 -123.4553679017345,40.06790950773985,796.1370327461427 -123.455445132121,40.06788912819312,795.1160536385648 -123.455522362461,40.06786874859508,793.8740124471983 -123.4555995927546,40.06784836894577,792.6136176743122 -123.4556563056241,40.06782452712687,791.6590499048333 -123.4557130184539,40.06780068528033,790.6088241387952 -123.4557889362704,40.06777558691206,789.1589676299681 -123.4558648540309,40.06775048849426,787.9729061070306 -123.4559422457799,40.06771593671497,786.5465105957544 -123.4560196374503,40.06768138488418,785.0565268903858 -123.4561316988312,40.06765968683354,783.2858229466967 -123.45624376014,40.06763798867483,781.7064572851905 -123.4563329393152,40.06764236119563,780.0717532893023 -123.4564221185011,40.06764673364773,778.289493577082 -123.4565233495473,40.06761444943624,776.1641921773283 -123.4566245804971,40.06758216513668,773.9404028756605 -123.4567213580043,40.06757351708261,771.9793859914452 -123.4568181354862,40.06756486894781,770.2536374039871 -123.456901103373,40.06755981801211,768.8595545173566 -123.456984071247,40.06755476701704,767.4217072530505 -123.45706716539,40.06756861048603,765.4744318376738 -123.4571502595662,40.0675824538952,764.0939304562918 -123.4572279073262,40.06760930906709,763.7387693410784 -123.4573055551469,40.06763616418646,763.4517668087213 -123.4574135960659,40.06761093794984,760.6642848372763 -123.4575216369044,40.0675857116128,758.329825452331 -123.4575993549074,40.06756178588827,757.0775035597901 -123.4576770728557,40.0675378601118,755.9486377228679 -123.4577547907491,40.06751393428341,754.9467903855732 -123.4578273746305,40.06748845410648,754.120800478119 -123.4578999584575,40.06746297388427,753.4793980457703 -123.45797254223,40.06743749361676,752.6857966231864 -123.4580646133634,40.06741469177921,751.4862675535267 -123.4581566844348,40.06739188986872,749.6793707814985 -123.4582564168152,40.06736551476437,747.2488119470406 -123.458356149118,40.06733913957447,744.8284904236394 -123.4584328022831,40.0673093128093,742.7743283610923 -123.4585094553811,40.06727948599363,741.02546423386 -123.4585983227369,40.06723740774319,738.364257821354 -123.4586871899831,40.06719532942486,735.7027876876732 -123.4587853795697,40.0671681726807,733.3628978293658 -123.4588835690776,40.06714101585363,731.1875117951926 -123.4589398259793,40.06712583445178,729.8070059535612 -123.4589960828558,40.06711065302273,728.4198609116677 -123.4590759125668,40.06709616545215,726.4280141688348 -123.4591557422434,40.0670816778267,724.4137477598729 -123.4592355718857,40.0670671901464,722.6658648357973 -123.4593406382633,40.06707228466853,720.7029268103969 -123.4594457046557,40.06707737909529,719.4688428337508 -123.4595503010462,40.06708877363175,718.2953631340345 -123.4596548974708,40.06710016807359,717.5962231740384 -123.4597374025045,40.0671025962233,717.1385378169016 -123.4598199075435,40.06710502431423,716.7262178881017 -123.4599024125878,40.06710745234637,716.3456705138889 -123.459983686446,40.06707918079761,715.105350966646 -123.4600649602366,40.06705090919207,713.7865521330247 -123.4601462339595,40.06702263752975,712.6308791796046 -123.4602260394756,40.06700460644644,711.7045056310799 -123.4603058449492,40.06698657530833,710.71915662181 -123.4603842246638,40.06698508292532,709.8674186346752 -123.4604626043745,40.06698359048931,708.9407141964813 -123.4605304078931,40.06700930163643,708.0498631229551 -123.4605982114624,40.0670350127435,706.6143528118181 -123.4606814806873,40.06707483357972,705.3176893648498 -123.4607647500089,40.06711465435527,704.1426718123871 -123.4608479875959,40.06714975144146,702.7252028658231 -123.4609312252679,40.06718484846714,700.6805738845372 -123.4610082088115,40.0672042244688,698.9398772263534 -123.4610851923982,40.06722360041902,697.7107433745588 -123.4611651031869,40.06722118290578,696.0913082694622 -123.4612450139695,40.06721876533744,694.1818623605687 -123.4613249247458,40.06721634771403,691.9463053579507 -123.4614307957244,40.06718876449568,686.9622126090939 -123.4615366666169,40.06716118118095,682.5898587543716 -123.4616287813342,40.0671450683251,678.7049167054149 -123.4617208960074,40.06712895539624,674.4505037299534 -123.4618130106366,40.06711284239432,670.9000252686421 -123.4619190567321,40.06711123868555,668.1816053911538 -123.4620251028219,40.06710963487973,664.4621700961454 -123.4620898649295,40.06714008099678,662.651705754773 -123.4621546270946,40.06717052707715,661.5824129231178 -123.4622284677522,40.06717968000206,660.5101241101029 -123.4623023084292,40.06718883287979,659.771478076535 -123.4624037355909,40.06718606621985,658.7464717396092 -123.4625051627435,40.06718329947115,657.8091546521501 -123.4626114725384,40.06722066505495,657.8125666908288 -123.4627177824488,40.06725803054033,657.3727740203806 -123.4628193855138,40.06728124346624,655.2538718914165 -123.462920988647,40.06730445630255,651.7710639954889 -123.4629980155164,40.06733012914713,649.9571524820184 -123.4630750424432,40.06735580194007,648.3126852308319 -123.4631662336742,40.06735465011084,645.6078840920962 -123.4632574249015,40.06735349820985,643.1577809088237 -123.4633486161249,40.06735234623708,640.6618414453751 -123.4634326025721,40.06734649925839,638.0584910658786 -123.4635165890044,40.0673406522189,635.8467697710585 -123.4636005754217,40.0673348051186,634.3272541029985 -123.4636930528531,40.0673722250588,631.9826298121249 -123.4637855303851,40.06740964492437,630.3086017731408 -123.4638901920531,40.06743048278781,627.9678258446465 -123.463994853784,40.06745132055625,625.2415647881089 -123.4640564789301,40.06747233062438,623.9395901439625 -123.4641181041137,40.06749334065941,622.607354086208 -123.4641706033738,40.06752855848937,620.8484648963138 -123.4642231026879,40.06756377629501,619.1391670122142 -123.4642941185241,40.06760954831837,617.243588269833 -123.4643651344553,40.06765532029731,614.9049912212988 -123.4644146000084,40.06769645486818,613.3120599577369 -123.4644640656211,40.06773758941731,611.3130000288344 -123.4645165652465,40.06777280708695,609.8848960036012 -123.464569064926,40.06780802473228,609.0874441420647 -123.4645756462553,40.06787176902419,607.9750345166754 -123.4645822275973,40.06793551331497,606.9861268817569 -123.4646113307355,40.06799601811638,606.1500237006921 -123.4646404339256,40.06805652290958,605.1538982748331 -123.4646695371677,40.06811702769453,603.6574199514214 -123.4646506216637,40.06819858831834,603.1208283444812 -123.4646317061154,40.06828014893816,603.4317798920159 -123.4646257952132,40.06835280036068,603.4074756784804 -123.4646198842993,40.06842545178205,603.5411122086741 -123.4646139733735,40.06849810320227,603.8439848020073 -123.4646080624358,40.06857075462138,604.3320064920201 -123.4645567670822,40.06863748652113,606.6494006673098 -123.4645054716289,40.06870421839798,609.1484244382611 -123.4644382290407,40.06876156667604,612.7678080964704 -123.4643709863398,40.06881891491511,616.01850895696 -123.4643016620484,40.06887154770372,618.8873412914364 -123.4642323376502,40.06892418045097,621.1320143793216 -123.4641659572725,40.06895785993419,623.1802975070815 -123.4640995768292,40.06899153937956,624.9369346178551 -123.4640485906828,40.06895362946867,627.8289938674909 -123.4639976045928,40.06891571953474,630.9318241790821 -123.463928085815,40.06887260939291,634.7676654374486 -123.4638585671248,40.06882949920854,637.6122156164888 -123.463789048522,40.06878638898162,640.0736008300387 -123.4637105828916,40.06876710824665,641.9667331769303 -123.4636321173049,40.0687478274582,643.6780039416922 -123.463553651762,40.06872854661631,645.1988208090946 -123.4634496446598,40.06870376937669,646.8495081721609 -123.4633456376321,40.06867899204314,648.2571632451421 -123.463241630679,40.06865421461571,649.5289440849772 -123.4631485728872,40.06863219258448,650.8602338360211 -123.4630555151547,40.06861017047808,652.4315437991 -123.4629624574815,40.06858814829653,654.1486852272249 -123.4628556898537,40.0685591826614,655.9627929215818 -123.4627489223155,40.06853021692722,657.2684602435227 -123.4626668233652,40.06851234962684,658.0173961775622 -123.4625847244572,40.06849448226797,658.7454397016862 -123.4625026255917,40.06847661485062,659.5001286474683 -123.4624458410492,40.06843065371383,661.4955828539014 -123.462389056583,40.06838469254839,663.7949350127277 -123.4623322721933,40.06833873135432,666.7971751309815 -123.4622918167645,40.06828290755841,669.8176728468463 -123.462251361402,40.06822708374746,672.3159729668591 -123.462210906106,40.06817125992146,674.819134957193 -123.462166722398,40.06810285427611,677.8130683592982 -123.4621225387789,40.06803444861259,680.6358330397862 -123.4620783552487,40.06796604293091,683.0115673141213 -123.4619746902029,40.06799164971152,681.926652486512 -123.4618710250786,40.06801725639969,681.0222023194311 -123.4618131568875,40.06808047048282,679.3479264742641 -123.4617552885899,40.06814368453698,677.8492895979393 -123.4616974201854,40.06820689856214,676.0170619697094 -123.4616541251058,40.06827005448609,673.7760239190773 -123.4616108299465,40.06833321039367,671.9108015627198 -123.4616203918375,40.06840035457648,669.1995677342372 -123.4616299537479,40.0684674987576,667.0887562227011 -123.4616395156777,40.06853464293705,663.8935193246572 -123.4616618672357,40.06860733467308,660.5953005439573 -123.4616842188418,40.06868002640358,658.506861644738 -123.4617065704962,40.0687527181286,657.7408437581489 -123.4616934464181,40.06883254938597,656.9847636472412 -123.4616803223102,40.06891238064092,656.5236417940723 -123.4616533370168,40.06896287488377,656.4968058452048 -123.4616263516839,40.06901336912012,656.5253187157725 -123.4615664340077,40.06904300010013,657.0063595877023 -123.4615065162795,40.06907263104931,657.4785141590585 -123.4614027926804,40.0690898397654,658.1554393394462 -123.4612990690281,40.06910704838885,659.2568802361321 -123.461191626406,40.0691130746786,662.3881866635024 -123.4610841837641,40.06911910086879,667.388130641928 -123.4609767411022,40.06912512695944,670.8658026543224 -123.4608801531707,40.06911991272286,674.774587113754 -123.4607835652531,40.0691146984057,678.9103092460947 -123.4606869773495,40.06910948400791,682.215729258492 -123.4606034789564,40.06908672210458,685.4327236475933 -123.4605199806184,40.06906396014066,688.9820708688803 -123.4604364823354,40.06904119811617,692.3031276837239 -123.4603529841075,40.06901843603107,695.2735549688433 -123.4602416909014,40.06899368486349,699.0813395243142 -123.4601303977749,40.06896893358842,702.8972583361813 -123.4600191047279,40.06894418220587,706.0577105490336 -123.4599206201158,40.06892777765339,708.4178503014215 -123.4598221355501,40.06891137301687,710.6241228897331 -123.4597236510309,40.06889496829631,712.9535993365461 -123.4596578253725,40.0688588390862,714.9607717544582 -123.4595919997834,40.06882270983805,716.7096935961174 -123.4595261742637,40.06878658055189,717.9655142160324 -123.4594893830397,40.06873354050583,719.3048893430603 -123.4594525918731,40.06868050044727,720.7539550905666 -123.4594158007638,40.06862746037623,722.7461852821252 -123.4593225561969,40.06857744339183,725.246107386489 -123.459229311766,40.06852742633121,728.471811131154 -123.4591635055166,40.06849409602183,730.725093350525 -123.4590976993311,40.06846076567453,732.6966367092309 -123.4590318932096,40.06842743528929,735.5672060342233 -123.4589695802231,40.0683716969322,740.3879231088247 -123.4589072673382,40.06831595854046,745.3664001776192 -123.4588449545551,40.06826022011411,749.4671936068637 -123.4587489924708,40.06821231287287,754.3499955579574 -123.4586530305205,40.06816440555101,758.8176735913009 -123.4585462231125,40.06812913775565,763.5158119747998 -123.4584394158139,40.06809386986099,767.7083030563974 -123.458368286057,40.06808155462761,769.5632407789722 -123.4582971563254,40.06806923935038,770.6097122556562 -123.4582208241805,40.06809613427617,771.0675845377395 -123.4581444919752,40.06812302915188,771.5650515862426 -123.4580681597094,40.06814992397752,771.8681443233996 -123.4579826627574,40.06816845719638,772.6155906441047 -123.4578971657585,40.06818699035232,773.865735314524 -123.4578116687127,40.06820552344541,775.845401352252 -123.4577655812991,40.06826029117028,777.4277261112881 -123.457719493812,40.06831505887669,779.2234068071587 -123.4576405597669,40.06836155853395,781.586158879961 -123.4575616256143,40.06840805813767,784.4847243468497 -123.4575036781844,40.06846007333595,787.8185647260742 -123.4574457306663,40.06851208850529,791.5850857092291 -123.4573877830602,40.06856410364567,793.6856234162448 -123.4574373758846,40.06862479178787,792.3795747965332 -123.4574869687974,40.06868547990774,789.7313349138286 -123.4575546054802,40.0687202035711,785.9281018870309 -123.4576222422316,40.0687549271944,782.2707748673154 -123.4576898790514,40.06878965077762,778.8627690201124 -123.4577739392992,40.0688285083197,774.0120444789193 -123.4578579996421,40.0688673658,770.1700683921881 -123.4579420600803,40.06890622321848,767.2213378271517 -123.4580406426359,40.06893732519086,763.437362788778 -123.4581392252806,40.06896842707864,758.8019056118519 -123.4582187645767,40.06901220088214,755.2575992511702 -123.4582983039743,40.0690559746301,751.8404233178908 -123.4583778434735,40.06909974832254,747.8322163939501 -123.4584573830743,40.06914352195941,744.791651269102 -123.4585557831917,40.06914733141261,740.1332250671857 -123.4586541833191,40.06915114078215,735.3292068513703 -123.4587363712113,40.06918230706512,731.0381076085541 -123.458818559178,40.06921347328917,726.3142420972788 -123.45891159292,40.06923199981586,721.6736319111214 -123.4590046267118,40.06925052626747,718.6623683420751 -123.4590976605533,40.06926905264405,717.5257536767108 -123.4591906944446,40.06928757894555,716.2516802126421 -123.4592637225063,40.06931108318965,715.1894316420437 -123.4593367506178,40.06933458738735,713.9157941692963 -123.4594097787791,40.06935809153863,712.1472499572169 -123.4594865585583,40.06939767651731,710.0342304205865 -123.4595633384262,40.06943726144434,708.0724941212383 -123.4596347096923,40.06948526556271,706.4187650988058 -123.4597060810586,40.06953326963613,704.9094966814603 -123.4597829600151,40.0695875501449,703.0754963423353 -123.4598598390935,40.06964183060146,701.0377690628694 -123.4599475073899,40.06967507371248,698.8902575838782 -123.4600351757711,40.06970831675648,696.491907930201 -123.4600546710335,40.06976282493442,695.0103499357459 -123.4600741663273,40.06981733310842,693.3893022837468 -123.4599622434829,40.069834573096,695.8448839418936 -123.4598503205812,40.0698518129757,698.6047032956357 -123.459755553421,40.06984659057642,701.331902788737 -123.4596607862745,40.06984136809953,703.9482890498913 -123.4595660191419,40.06983614554505,706.4752008211027 -123.4594785765245,40.06983649238575,709.2769498560319 -123.4593911339055,40.0698368391605,713.3712476700163 -123.4593036912851,40.06983718586922,717.262176091873 -123.4592296295962,40.06979549055264,721.0256220657707 -123.4591555679973,40.0697537951879,724.8282145548982 -123.4590733275496,40.0697149314466,728.5062398607331 -123.4589910871951,40.06967606764614,732.4580463422833 -123.4589088469336,40.06963720378649,735.0578767672017 -123.4588246254056,40.06957455399313,737.6568317593926 -123.458740404032,40.069511904137,741.5132109478104 -123.4586561828127,40.06944925421809,745.277316644021 -123.4585647312226,40.0693950306411,747.3461495510538 -123.4584732797772,40.0693408069906,748.8612335427599 -123.4583818284767,40.06928658326657,751.5806224258665 -123.4582996828279,40.06926171490398,754.9334655050202 -123.4582175372384,40.06923684648272,757.8821663997609 -123.4581353917082,40.06921197800276,760.8106845244505 -123.4580532462373,40.0691871094641,763.6589060249237 -123.4579519167004,40.06915391891681,768.0199552470983 -123.4578505872611,40.06912072828013,772.0711061646361 -123.4577687043362,40.06913504816475,774.5544486042448 -123.4576868213765,40.06914936799164,777.5067526762081 -123.4576049383819,40.06916368776083,780.582456452475 -123.4575246710462,40.06914720921323,783.2683724528852 -123.4574444037488,40.06913073060976,785.8605815833979 -123.4573641364895,40.06911425195041,788.4678979472054 -123.4572493785885,40.06911610457123,791.8913791429868 -123.4571346206802,40.0691179570784,795.2855451804307 -123.4570198627646,40.06911980947194,799.1303852197852 -123.4569135035636,40.06915172069138,802.7544305922313 -123.4568071442626,40.06918363181356,805.8907855446229 -123.4567479156953,40.06922585426456,807.3156928863389 -123.4566886870547,40.06926807668541,808.4118516424979 -123.456629458341,40.06931029907607,809.6709160720412 -123.4566375534753,40.06938584723287,808.4651007748627 -123.4566456486281,40.069461395388,807.4198929096812 -123.4566537437996,40.06953694354147,806.9068698510356 -123.4567368280941,40.0695660082622,804.7008428086932 -123.4568199124587,40.0695950729228,802.7227588764893 -123.4569029968936,40.06962413752328,800.7416794293142 -123.456986954844,40.06964760009529,798.4991266093818 -123.4570709128516,40.06967106260606,796.0099754161741 -123.4571548709162,40.06969452505553,793.527203830381 -123.4572315047303,40.06971241782812,791.3197035935229 -123.4573081385841,40.06973031054974,789.0417603742279 -123.4573847724775,40.06974820322039,786.5834030454727 -123.457463321761,40.06978008458379,783.8632176112503 -123.4575418711173,40.06981196589332,781.318274092656 -123.4576204205466,40.06984384714902,778.7835833817151 -123.4576863116663,40.0698897746669,776.7800092077887 -123.4577522028745,40.06993570214642,774.3148762244718 -123.4578180941711,40.06998162958762,771.9004961969068 -123.4578786328357,40.07004437371351,770.3775798474662 -123.4579391716117,40.07010711780646,769.6049975143566 -123.4580050772606,40.0701551445286,769.1143741098108 -123.458070983002,40.07020317121233,767.9698278512145 -123.458085039776,40.07026190011465,768.8189526166594 -123.4580990965747,40.07032062901455,769.1761686908006 -123.4581677492123,40.07037074422538,765.422207395593 -123.4582364019505,40.07042085939451,760.586729690397 -123.4581820874449,40.07047146091588,763.0483505566046 -123.458127772859,40.07052206241178,766.5825654023905 -123.458040423098,40.07053640410602,771.5815568803137 -123.4579530732998,40.07055074573456,776.7820425825403 -123.4578657234644,40.07056508729742,780.0702618990241 -123.4577510099932,40.07057393839553,782.7872140744346 -123.4576362964913,40.0705827893802,784.2179793785357 -123.4575486843242,40.07055794208664,785.5377130059363 -123.4574610722203,40.07053309472634,787.2150596641758 -123.4573480307119,40.07051954473519,789.6974343919921 -123.4572349892474,40.07050599463347,791.828473924548 -123.4571482527978,40.07052126632173,792.5147742202101 -123.457061516309,40.0705365379452,793.2428351462549 -123.4569747797808,40.07055180950393,794.0146251766158 -123.456867362524,40.0705620305774,795.2396359942503 -123.4567599452342,40.07057225155143,796.5575785771006 -123.4566525279113,40.07058247242603,797.9361069240198 -123.4565706149448,40.07059259269035,799.2406196694037 -123.4564887019535,40.07060271289688,800.4409214104146 -123.4564067889374,40.07061283304558,801.5740773121399 -123.456322189982,40.07062996186862,802.6158295172407 -123.4562375909837,40.07064709063008,803.6695090272686 -123.4561611001937,40.07067123804274,804.5801598129055 -123.4560846093494,40.0706953854051,805.6639258680705 -123.4560081184505,40.07071953271716,807.1327527971198 -123.4559344323066,40.07074083468869,808.6745727411909 -123.4558607461163,40.07076213661355,810.4017380645932 -123.4557870598798,40.0707834384917,811.7331637298744 -123.4556886645345,40.07078067639554,813.6313829345291 -123.4555902691963,40.07077791421577,815.2935812795531 -123.4555070221527,40.07079293768143,816.3266042939106 -123.4554237750719,40.07080796108745,817.3697945011936 -123.4553405279541,40.07082298443382,818.4548586627295 -123.4552279540146,40.07084547102251,819.9324476319478 -123.4551153800001,40.07086795750212,821.5434418836674 -123.4550295537888,40.0709060846602,822.9328259047686 -123.4549437274813,40.07094421175497,824.4128447781287 -123.4548866146351,40.07098537521464,825.5433423067597 -123.4548295017201,40.07102653864628,826.8171642739158 -123.4547462681638,40.07104366095815,828.8466147080145 -123.4546630345652,40.07106078321044,831.0694672098247 -123.4545798009245,40.07107790540307,834.263835465942 -123.4544936950668,40.07107404434692,837.6465023266099 -123.4544075892184,40.07107018322674,840.9573149655541 -123.454321483379,40.07106632204248,843.3971263101926 -123.4542270192729,40.07103834993981,845.8372286698426 -123.4541325552435,40.07101037775951,848.5826596777576 -123.4540546264742,40.0710033351537,850.9975744730381 -123.4539766977205,40.07099629249537,853.3521299408999 -123.4538987689822,40.07098924978453,855.5148571527291 -123.453819613278,40.07100320628535,857.5717440548519 -123.4537404575409,40.07101716273227,859.5310621527176 -123.453661301771,40.07103111912522,861.5869720238969 -123.4535812887349,40.07101883574837,863.9398053360399 -123.4535012757271,40.07100655231605,866.4636098692903 -123.4534273276381,40.07098164841626,869.4243135326444 -123.4533533796028,40.07095674446885,872.6733803344058 -123.4532527780614,40.07093037017194,877.3452698481863 -123.4531521765969,40.07090399578714,880.5805970501169 -123.4530796603628,40.07094049485465,882.8420889689211 -123.4530071440511,40.07097699387698,885.0013503533731 -123.4530536118797,40.07103034803347,883.0591506490932 -123.4531000797811,40.07108370217045,880.7847772616971 -123.453183606,40.07111066825708,877.4898792286307 -123.4532671322843,40.07113763428299,873.7056313804432 -123.4533506586341,40.07116460024818,869.901617273953 -123.4534586117256,40.07116627719606,866.2064396361216 -123.4535665648215,40.0711679540433,862.750622165453 -123.4536745179218,40.07116963078992,859.7032923437606 -123.4537565527661,40.07117770729142,857.5943900746502 -123.4538385876293,40.07118578373471,855.7296360243563 -123.4539206225113,40.07119386011979,853.5984423048685 -123.4540163763623,40.07121028046566,850.8606072663206 -123.4541121302587,40.07122670073209,847.968857199486 -123.4542173926578,40.07123468585667,844.9850172972308 -123.4543226550806,40.07124267088546,842.0580631053078 -123.4543940176189,40.07128962853207,839.3996195967883 -123.4544653802552,40.07133658613379,836.5783392331853 -123.4545367429893,40.07138354369064,833.5969859831989 -123.4545904378246,40.07144474179005,831.2724263622442 -123.4546441327562,40.07150593986342,829.075219808562 -123.4546691977484,40.07157669778179,827.6969788018171 -123.4546942627931,40.07164745569358,826.4958826714551 -123.4546989062426,40.07172931584223,825.9639745383466 -123.4547035497041,40.07181117598947,825.8629277363699 -123.4546506850514,40.07187489169233,826.6292391885891 -123.4545978203004,40.07193860737094,827.7468606556856 -123.4545405459262,40.07195562766657,828.8160036234914 -123.4544832715231,40.07197264793401,830.0579334117887 -123.4544176874646,40.0719729052048,831.5300970624464 -123.4543521034052,40.07197316243845,833.1514000377542 -123.4542754770858,40.07195666737181,835.1338172365862 -123.4541988508029,40.07194017225423,837.1976784659889 -123.4541222245566,40.07192367708571,838.8900993297087 -123.4540332734662,40.07190303127926,840.7668441704255 -123.453944322429,40.07188238540411,842.4971198046403 -123.4538553714449,40.0718617394603,844.5085802344921 -123.4537590032109,40.07185581861835,846.8382874987363 -123.4536626349927,40.07184989769612,848.8745017509113 -123.453571442759,40.07185182934951,850.4287685591476 -123.4534802505195,40.07185376093112,851.5995407229371 -123.4533890582742,40.07185569244098,852.5957569984985 -123.453297866023,40.07185762387908,853.6357925448292 -123.4532180399375,40.07187368203717,855.0392449100739 -123.453138213814,40.07188974014044,856.6727564879347 -123.4530316189635,40.07188700786189,859.6560756929766 -123.4529250241205,40.07188427548521,862.3007194210169 -123.4528265647187,40.07187206370664,863.752956882351 -123.4527281053512,40.07185985184414,864.8880100086207 -123.4526447312652,40.07185597874013,866.0445456397862 -123.4525613571881,40.07185210557604,867.7818768213702 -123.4524779831199,40.0718482323519,871.296168718473 -123.4524076300437,40.0718848975001,873.335605466923 -123.4523372768918,40.07192156260576,875.1660963415103 -123.4522669236643,40.07195822766888,876.5692667058892 -123.4522646735358,40.07203119218396,876.9922474629293 -123.4522624234031,40.0721041566981,879.0572919009519 -123.4523336882253,40.07213641987128,876.9380188430138 -123.4524049531145,40.07216868300004,874.9926084796172 -123.4524762180707,40.07220094608445,873.5015987140933 -123.4525910531191,40.07220994501749,871.0997286546142 -123.4527058881966,40.07221894383652,869.5697786608459 -123.4528116846052,40.07222482870268,868.4603922072193 -123.452917481031,40.07223071347211,867.4325009758371 -123.4530232774741,40.07223659814481,866.12915561899 -123.4531290739346,40.0722424827208,864.4196776288828 -123.4532348704123,40.07224836720007,862.2540235620982 -123.4533375129627,40.0722731589326,860.1279146711398 -123.4534401555868,40.07229795057366,857.8253669706563 -123.4535427982846,40.07232274212326,855.2532149029046 -123.453653367496,40.07230656335923,852.1869193661984 -123.4537639366541,40.0722903844899,848.6808896260025 -123.4538389460647,40.07226909621231,846.4543227510195 -123.4539139554282,40.07224780788634,844.7645931840882 -123.4539889647445,40.07222651951196,843.1013981096019 -123.4540906129822,40.07223871780155,840.5562627331749 -123.4541922612553,40.07225091600172,837.640839105112 -123.4542939095638,40.07226311411249,834.9052665506382 -123.4542569255585,40.07231784471372,836.044017919827 -123.4542199414942,40.07237257530297,837.05781419204 -123.4541829573711,40.07242730588025,837.8979498075336 -123.4541300673588,40.07248734741063,838.8574678461647 -123.4540771772538,40.07254738891673,839.7296546446562 -123.4539893615636,40.07259497059879,841.0593939157061 -123.4539015457509,40.07264255221457,842.3205865998883 -123.4538348037156,40.07267430537092,844.0313816232003 -123.453768061618,40.07270605848903,846.7810535466824 -123.4537013194583,40.07273781156884,849.0193351717388 -123.4536052842634,40.07278227598115,851.5448173628458 -123.4535092489431,40.07282674031423,853.0383990895131 -123.4534507742737,40.07286895811028,854.2565798534215 -123.453392299532,40.07291117587695,855.2140390104416 -123.4533338247181,40.07295339361416,857.4567769180098 -123.4532643494039,40.07298515713679,860.0457777816134 -123.453194874025,40.07301692061791,862.0852448764107 -123.4531253985812,40.07304868405757,863.7549833412141 -123.4530334825095,40.07309628105099,865.1949201497944 -123.4529415663095,40.07314387797179,868.3429075418205 -123.4528472945422,40.07314529623648,872.670888347832 -123.4527530227704,40.07314671442448,876.9003911638233 -123.452658750994,40.07314813253579,880.7626171276347 -123.4525746886866,40.07314373721263,884.5696111303232 -123.4524906263895,40.07313934182842,888.0523989168393 -123.4523901365511,40.07313028678257,891.5786358339468 -123.4522896467384,40.0731212316494,894.6533623580292 -123.4522156759616,40.07309317790914,897.4382917990361 -123.4521417052451,40.07306512412121,900.0591943507741 -123.452067734589,40.07303707028552,902.5685820132095 -123.4519970966124,40.07299640672881,905.6939382688367 -123.4519264587197,40.07295574312828,909.0629001297502 -123.4518558209109,40.07291507948391,912.3106133254166 -123.4517906555341,40.07287544417725,915.165830320584 -123.4517254902328,40.07283580883325,917.695625274727 -123.4516603250069,40.07279617345189,920.4721052347587 -123.4515616842629,40.07275666852073,924.1889718467996 -123.4514630436322,40.07271716350467,927.0594926073643 -123.451364403115,40.07267765840373,929.0805143747145 -123.4512910955834,40.07264645231751,930.3961071780827 -123.4512177881185,40.07261524618436,931.4234200017361 -123.4511444807202,40.07258404000429,932.9072469450125 -123.4510435106457,40.07257970940994,934.555658083147 -123.4509425405831,40.07257537872751,935.9838186792083 -123.4508415705325,40.072571047957,937.1173541814768 -123.4507406004939,40.07256671709843,938.1469460420623 -123.4506565078788,40.07255759674735,939.2861074276365 -123.4505724152856,40.07254847633509,940.7147079486174 -123.4504957615445,40.07252777998535,943.2870735943878 -123.4504191078494,40.07250708358456,945.977032326256 -123.4503424542003,40.07248638713271,948.5642930604686 -123.4502683293688,40.07243471398133,951.940894507732 -123.4501942046492,40.07238304078144,955.0906193698561 -123.4501241790692,40.07233135160662,958.7854129498927 -123.450054153595,40.07227966238843,962.2663999427062 -123.4500331299458,40.07219944026876,966.293377649279 -123.4500121063467,40.07211921814388,970.3194236081708 -123.449972637252,40.07203906765985,974.3337201877675 -123.4499331682507,40.07195891716074,978.3470598400526 -123.4498936993426,40.07187876664655,982.000763488885 -123.4498091695005,40.07187227168274,982.394132600578 -123.4497246396739,40.07186577665716,983.2196810935777 -123.4496401098628,40.0718592815698,984.7323517645237 -123.4496342099226,40.07193173534389,981.6380256348343 -123.4496283099705,40.07200418911683,978.8549243091825 -123.4496224100067,40.07207664288865,976.4906948009403 -123.4496501164182,40.07213427010776,973.8278931601633 -123.4496778228768,40.0721918973194,970.7635974377242 -123.4497055293825,40.07224952452359,967.4288222490042 -123.4497429073483,40.07232338487764,963.4692133364329 -123.4497802853956,40.07239724521822,961.2164040848811 -123.4498012466636,40.07246802011918,960.0370953061438 -123.4498222079756,40.07253879501523,959.4118960103651 -123.4498675978451,40.07258428170301,958.1557602670858 -123.449912987775,40.0726297683723,956.9836706878557 -123.4499972565486,40.07266565650717,954.0892460407342 -123.4500815254104,40.07270154458001,951.6501518898564 -123.4501608497263,40.07271278332197,949.538214895587 -123.4502401740679,40.07272402200944,947.5034893838385 -123.450319498435,40.07273526064243,945.2119004441582 -123.4504071868854,40.07277166004648,942.7290560373315 -123.4504948754287,40.07280805938338,940.5216169361106 -123.4505825640649,40.07284445865321,938.37396021094 -123.4506789126861,40.07284723304316,936.6752486063676 -123.4507752613145,40.07285000735298,934.8709695371516 -123.4508587887965,40.07287697510072,932.8699773780501 -123.4509423163439,40.07290394278776,930.7281541066079 -123.4510258439567,40.07293091041407,928.8166061839333 -123.4511265411063,40.07297145751522,927.0602878740208 -123.4512272383747,40.07301200452788,924.8529558242478 -123.4513093028731,40.07302428153155,922.2752941280499 -123.4513913674006,40.07303655847694,919.351345412371 -123.4514572643973,40.07308353921414,916.3811784444579 -123.4515231614846,40.07313051991297,912.7639149207138 -123.4515809229029,40.07318697978998,908.676743034031 -123.4516386844167,40.07324343963714,904.7786309763723 -123.4516718723201,40.07330314443277,901.8928891464757 -123.4517050602818,40.07336284921799,899.5450334266352 -123.4517158489296,40.07344468550684,896.7872329176881 -123.451726637604,40.07352652179338,894.0396238467052 -123.4516791150221,40.07359283960386,893.06907345011 -123.4516315923484,40.0736591573946,892.2805173340942 -123.4515532321048,40.07366996007773,894.8378416507098 -123.4514748718359,40.07368076270796,897.3061465672419 -123.4513965115418,40.0736915652853,899.6816042921711 -123.4513202304351,40.07372755304863,901.1038297720531 -123.4512439492478,40.07376354076196,902.7058108596711 -123.4511676679799,40.07379952842526,904.2559885755197 -123.4510775567009,40.0738103765502,907.4007114268894 -123.4509874453928,40.07382122460515,910.3821356643128 -123.4508973340553,40.07383207259016,912.8118599536645 -123.4508111903042,40.07382296033921,914.7542441911256 -123.4507250465755,40.07381384802407,918.2651336764454 -123.4506389028691,40.07380473564469,921.9716512529008 -123.4505240135033,40.07378786207565,926.2842784313887 -123.4504091241932,40.07377098839229,929.4031421959272 -123.4503248227268,40.07373037694234,933.086434594916 -123.4502405213602,40.07368976543022,936.8229743646091 -123.4501990740957,40.07362064482125,940.3541604155459 -123.4501576269155,40.07355152419614,942.9678427569846 -123.4501203618421,40.07349498397645,944.9590596753321 -123.4500830968305,40.07343844374388,947.1706211737703 -123.450045831881,40.07338190349842,949.3860505772834 -123.4499473604497,40.07336811474139,950.2402169381531 -123.4498488890573,40.07335432590035,951.1940634534318 -123.4497395731093,40.07335370060808,952.3525223172827 -123.4496302571623,40.07335307521267,954.5425692921606 -123.4495209412164,40.07335244971405,956.8307016931517 -123.4494251578063,40.07333182688585,958.8992492648734 -123.4493293744533,40.07331120397807,960.7497785642934 -123.4492281532969,40.07329480096764,962.4446344383937 -123.4491269321883,40.07327839786846,964.1820980418523 -123.4490450125342,40.0732881629322,964.8421228945158 -123.4489630928561,40.07329792793814,965.9714138173257 -123.4488648595008,40.07332035276698,967.5761181069923 -123.4487666260803,40.07334277751279,969.4533313938283 -123.448672491685,40.07336518630021,971.3742986859083 -123.4485783572274,40.0733875950114,973.3093954545618 -123.4484904126599,40.07341627801856,975.1947199124447 -123.4484024680182,40.07344496095924,976.8859668294738 -123.4483110316781,40.07346211039696,978.3791754295281 -123.4482195952915,40.07347925976272,979.5377614474695 -123.4481281588585,40.07349640905651,980.4433345367656 -123.4480235158421,40.07349996295947,981.3590906994442 -123.447918872814,40.07350351676799,982.1274353577012 -123.4478142297742,40.07350707048203,982.8956978860415 -123.4477095867226,40.07351062410162,983.787223589193 -123.4476049436592,40.07351417762672,984.9013068073044 -123.4475003005842,40.07351773105737,986.3108603381081 -123.4474037965746,40.07349133586706,988.0482861443544 -123.4473072926388,40.07346494059585,991.5631402666889 -123.4472127971298,40.07343223915516,995.9522216985877 -123.4471183017106,40.0733995376367,1000.367542224801 -123.4470138571829,40.07341253736504,1003.711012355259 -123.4469094126147,40.0734255369994,1007.359047331919 -123.4468154009583,40.07346683881221,1010.898319596895 -123.4467213891879,40.07350814054903,1014.326429897447 -123.4466334848155,40.07354312032798,1017.751754474062 -123.4465455803526,40.07357810004051,1021.096186812091 -123.4464622661685,40.07358366976336,1024.396433041163 -123.4463789519703,40.07358923942639,1026.810206980743 -123.4462956377579,40.07359480902952,1029.143953323882 -123.4462074967134,40.07359357396717,1031.612860170788 -123.4461193556714,40.07359233883775,1034.037374432076 -123.4460312146319,40.07359110364122,1035.941721064319 -123.4459430735951,40.07358986837763,1037.506974190077 -123.4458637626171,40.07358072614362,1038.812584984705 -123.4457844516598,40.07357158385521,1039.910733370163 -123.4457051407232,40.07356244151234,1041.016824641208 -123.445614878341,40.07355019207282,1042.422567595134 -123.4455246159905,40.07353794256277,1044.015776978563 -123.4454425929074,40.07353195963809,1045.398423519037 -123.4453605698382,40.07352597665526,1046.723632826094 -123.4452582973655,40.0735578614587,1047.678538389053 -123.4451560247967,40.07358974617218,1048.504428919454 -123.445074124676,40.07360265752165,1049.447754026013 -123.4449922245237,40.07361556881337,1050.583219334408 -123.4449047427448,40.07361065619821,1052.380875609445 -123.4448172609779,40.07360574351695,1054.443056881341 -123.444729779223,40.07360083076952,1056.632393210649 -123.444664019433,40.07357431526793,1058.845622096214 -123.4445982596937,40.07354779972859,1060.957612830607 -123.4445262285092,40.07350241320831,1063.477398123935 -123.4444541974202,40.07345702664236,1066.233722286242 -123.4443617118811,40.07341801682632,1069.389563517308 -123.4442692264471,40.07337900693559,1072.502558929945 -123.4441805627737,40.07340244081798,1073.757538819152 -123.444091899039,40.07342587463276,1074.717664290344 -123.444003235243,40.0734493083799,1075.463730267831 -123.4439194695281,40.073490568576,1075.755522307216 -123.4438357037119,40.0735318287118,1076.025967246139 -123.4437908588574,40.07356979052763,1076.098313193751 -123.4437460139531,40.07360775232612,1076.076448837766 -123.4437033922603,40.07367247351989,1075.886168279604 -123.4436607704871,40.07373719469769,1075.892754605162 -123.4436489158684,40.07380547206775,1075.699090162279 -123.4436370612266,40.07387374943595,1075.497894648638 -123.4436252065618,40.07394202680222,1075.421458010501 -123.4436843966811,40.07400898237314,1074.902459277747 -123.4437435869168,40.07407593791245,1074.119762955353 -123.4438027772686,40.0741428934201,1073.033054154245 -123.4438993319512,40.07417716433312,1071.411044223263 -123.44399588673,40.07421143516494,1069.667893155466 -123.4440655517201,40.07420801898057,1068.297684324662 -123.4441352167028,40.07420460275432,1066.847898270719 -123.4442272837409,40.0741790564127,1064.634673975996 -123.4443193507097,40.07415350999818,1062.67330884491 -123.4444123464271,40.0741657499595,1061.257828281673 -123.4445053421771,40.07417798984596,1059.8813664564 -123.4445983379598,40.07419022965758,1058.418493114582 -123.4447037404435,40.07421921733032,1056.853282019837 -123.4448091430159,40.07424820490652,1055.318449347862 -123.4449145456769,40.0742771923862,1053.836760404487 -123.4450061752822,40.07428943711664,1052.454564992888 -123.4450978049198,40.07430168177442,1051.11399114188 -123.4451894345895,40.07431392635952,1049.828087435407 -123.4452972694651,40.07429671635354,1047.720665717108 -123.4454051042856,40.07427950624744,1045.735943616855 -123.4455129390509,40.07426229604121,1043.575033730716 -123.4456153971741,40.07425875280881,1041.315689363753 -123.4457178552858,40.07425520948585,1039.004028204182 -123.4457931910789,40.07428326211927,1037.741796257945 -123.4458685269335,40.07431131470324,1036.477693179674 -123.4459438628496,40.07433936723773,1035.301725341022 -123.4460201182665,40.07440363160804,1034.568411757515 -123.4460963738269,40.07446789592665,1033.942289834242 -123.4461133252446,40.07455285816843,1035.230205102209 -123.4461302767054,40.07463782040627,1036.513836698098 -123.4461402387115,40.07469866594214,1037.426247011234 -123.4461502007357,40.07475951147644,1038.282834750477 -123.4461601627782,40.07482035700915,1038.93691758573 -123.4461748798177,40.0748769853376,1039.478706650899 -123.446189596882,40.07493361366349,1040.05769933705 -123.4462881006768,40.07495212923464,1038.734606107081 -123.4463866045242,40.0749706447217,1037.736257814606 -123.4464765604462,40.07493565722885,1035.869471155615 -123.4465665162756,40.07490066966643,1035.016408892787 -123.4466564720125,40.07486568203448,1034.50155490218 -123.4467044060562,40.07481266118651,1033.038770614588 -123.4467523400258,40.07475964031863,1031.140841725221 -123.4468002739212,40.07470661943085,1029.11585573066 -123.446904195083,40.07471776552863,1029.018739390189 -123.4470081162778,40.07472891153299,1028.645275132298 -123.4470932306513,40.07478946697866,1030.580234056267 -123.4471694053407,40.0747366868526,1026.373745141441 -123.4472455799124,40.07468390667664,1020.795158388018 -123.4472492567811,40.07461933455456,1016.767509309827 -123.4472529336435,40.0745547624317,1012.581189555942 -123.447305800403,40.074490000389,1006.240277277323 -123.4473586670625,40.07442523832204,999.9764768617908 -123.4474053642891,40.07435735088961,994.2091425538428 -123.4474520614234,40.07428946343807,988.4715248252734 -123.4475086390334,40.07423500923849,983.5822185225499 -123.4475652165535,40.07418055501129,979.6235889477439 -123.4476217939835,40.07412610075641,976.7340235461484 -123.4477352103024,40.07412671219787,974.9336751653232 -123.4478486266222,40.0741273235283,973.807129763397 -123.4479307744012,40.07415219926948,973.092451510009 -123.4480129222395,40.07417707495199,972.2556656280268 -123.4480950701372,40.07420195057578,971.1964892347637 -123.4481528502953,40.07426156124968,970.2001228794276 -123.4482106305543,40.07432117189358,968.9240283052286 -123.4482357002834,40.07439350574416,967.797946087944 -123.4482607700661,40.07446583958814,966.9657130047007 -123.4483349885336,40.07453168489478,964.8351183198438 -123.4484092071442,40.07459753015233,963.3777079694066 -123.448450534438,40.07464854414579,962.8180289790681 -123.4484918617937,40.07469955812372,962.3278163437931 -123.448500478454,40.07476329539738,962.690581436435 -123.4485090951309,40.0748270326696,962.9710802275832 -123.4485300042054,40.07488993505663,962.7272078184844 -123.4485509133189,40.07495283743896,962.850726132338 -123.4485431488054,40.07501900000691,964.0453724199244 -123.4485353842774,40.07508516257366,966.0579841202722 -123.4484804996199,40.07515465673183,968.8818151595366 -123.4484256148512,40.07522415086378,971.4659321148225 -123.4483877686912,40.07528728068881,973.0232028831388 -123.4483499224618,40.07535041050118,974.625118092946 -123.4483120761628,40.07541354030087,977.0020195323274 -123.4482366846057,40.07548153911403,980.9637675821918 -123.4481612928988,40.07554953787811,984.7788166121688 -123.4480877236218,40.07558288871105,987.4476096205682 -123.4480141542727,40.07561623949745,989.8614367847848 -123.4479295607329,40.07563546161364,993.8308039143186 -123.4478449671451,40.07565468366825,998.2710360584695 -123.4477603735091,40.0756739056613,1003.177654543641 -123.4476785126454,40.07569311703212,1009.276588694003 -123.4475966517352,40.07571232834528,1016.054613074048 -123.4475147907786,40.0757315396008,1022.594332042358 -123.4474124336047,40.07575082995862,1029.02240426987 -123.4473100763724,40.07577012022624,1034.120227283534 -123.4472529960931,40.07581757810953,1036.468308644218 -123.4471959157347,40.07586503596475,1038.642883071389 -123.447171691041,40.07592181447216,1038.810639971465 -123.4471474663074,40.07597859297414,1038.8004079841 -123.4471110776455,40.07605588799969,1038.70508884665 -123.4470746889021,40.07613318301321,1038.50955226057 -123.4470424096348,40.07621203673958,1038.214698629965 -123.4470101302938,40.07629089045627,1038.446005748546 -123.4470734662243,40.07636412659507,1035.471641373833 -123.4471368022908,40.0764373626976,1032.990847519317 -123.4472001384935,40.07651059876381,1031.349987287475 -123.4472865633207,40.07656222634886,1027.315049144912 -123.4473729882782,40.07661385386828,1024.532074381057 -123.447459011448,40.07660407413589,1019.05903787272 -123.4475450345926,40.07659429433979,1014.09419081609 -123.4476020122229,40.07653109088417,1010.461953015953 -123.4476589897481,40.07646788740044,1007.837619702048 -123.44771054959,40.07641205288036,1005.819679756862 -123.4477621093479,40.07635621833726,1003.740878153748 -123.4478136690219,40.07630038377112,1001.839466511312 -123.4478817494479,40.0762633803085,999.502337283502 -123.4479498298,40.07622637680606,997.3838649571603 -123.4480179100782,40.07618937326375,995.2997411878139 -123.4481058068021,40.07615281789225,992.867551250339 -123.4481937034316,40.07611626245434,990.6227787756517 -123.4482734634048,40.07608918593398,988.6034496810064 -123.4483532233144,40.07606210935892,986.33503672166 -123.4484434068636,40.0760617602932,984.0036334640935 -123.4485335904112,40.07606141115731,981.55318801801 -123.4486237739572,40.07606106195122,979.0878444309259 -123.4487139575017,40.07606071267492,976.7425888988998 -123.4488085297174,40.07610443465399,976.3666896965681 -123.4489031020536,40.07614815655486,977.8570206583322 -123.4489933270724,40.07615410523263,978.6169213031606 -123.4490835521064,40.07616005384003,979.4271411474308 -123.4491818411852,40.07614550152967,979.4209848915912 -123.4492801302215,40.07613094913607,979.2593168900725 -123.4493500142011,40.07616059516793,980.3820735934017 -123.4494198982411,40.07619024115715,981.0784585559845 -123.4493916795229,40.07626278144803,983.7961117514561 -123.4493634607454,40.07633532173145,986.5853402121514 -123.4493159808925,40.07638799199528,988.7227892565145 -123.4492685009666,40.07644066223957,990.0948382969846 -123.4492210209678,40.07649333246432,991.1906341469603 -123.4491497180767,40.07655974142172,992.9104304907361 -123.4490784150473,40.07662615033519,995.3890138004471 -123.4490685391688,40.07668287360569,997.5148905137686 -123.4490586632743,40.07673959687488,999.3934640864553 -123.449030375005,40.07680164012191,1001.211820482184 -123.4490020866848,40.07686368336165,1002.586121001548 -123.4489737983138,40.0769257265941,1003.938092029528 -123.4489236469188,40.07698785454405,1005.477563687883 -123.448873495433,40.07704998247213,1007.616449667847 -123.4488233438563,40.07711211037832,1010.394300954148 -123.4487925983871,40.07717458297262,1013.987555287126 -123.4487618528622,40.07723705555836,1019.370634827503 -123.4488396360499,40.07728336186878,1017.41849787193 -123.4489174193428,40.07732966812602,1015.340436470865 -123.4490037534233,40.07736712352551,1012.750606272501 -123.449090087598,40.07740457885988,1010.86496947434 -123.4491478299727,40.07745789081429,1009.733824494255 -123.4492055724377,40.07751120273893,1008.041610598462 -123.4493082214797,40.07753599798359,1004.862954243776 -123.4494108705954,40.07756079313676,1002.848644594256 -123.4494966875929,40.07751952103675,1001.449622199174 -123.4495825044865,40.07747824887343,999.0667626774954 -123.4496560647,40.07744332255236,996.8720519949958 -123.4497296248381,40.07740839618479,993.7195027295026 -123.4498088095273,40.07739759153358,991.8287969077334 -123.4498879941909,40.07738678682836,990.6501296795979 -123.449967178829,40.07737598206913,990.1368564114513 -123.4500594448536,40.07738034740208,989.6578581342243 -123.4501517108894,40.07738471266142,988.7686300829549 -123.4502560053014,40.07734809194631,986.6234938140386 -123.450360299601,40.07731147113768,982.7054839680054 -123.4504420993799,40.07728281061617,979.9232512468818 -123.4505238990897,40.07725415003711,978.1494021248309 -123.4505522311507,40.07719892945377,976.7452759933112 -123.4505805631662,40.07714370886324,975.3788089448033 -123.4506047231764,40.07707748241357,973.6006067041184 -123.4506288831403,40.07701125595838,970.8263967989368 -123.4507084251827,40.07695111237385,967.5025247613846 -123.4507879670851,40.07689096873481,964.679659149909 -123.4508573990575,40.07685185882575,963.8491355235038 -123.4509268309503,40.07681274887526,963.532364306773 -123.4509962627636,40.07677363888332,963.5681565313107 -123.4510479863067,40.07674299557353,963.6562778461326 -123.4510997098033,40.07671235224071,963.7489899955899 -123.4511412557615,40.07665795482261,962.8426965086194 -123.4511828016538,40.07660355738943,961.0883676560637 -123.4512243474803,40.07654915994123,957.7994157681753 -123.4512322030893,40.07649716810654,955.4700331313877 -123.4512400586865,40.07644517627091,953.265426723825 -123.4512929646723,40.07638671061249,951.2424489039312 -123.4513458705679,40.07632824492983,949.5542291477223 -123.4513865097718,40.07627455076829,948.0993279905724 -123.4514271489122,40.07622085659234,946.525824925875 -123.4514677879889,40.07616716240197,944.9912969293745 -123.4514795762572,40.07608996189285,943.793977211613 -123.4514913644997,40.07601276138164,942.4620424121397 -123.4515046196495,40.07595077612083,941.6626423669854 -123.4515178747758,40.07588879085795,941.1163561478371 -123.4515311298786,40.07582680559304,940.5949546512832 -123.4515634869774,40.07576054698098,939.6050516044324 -123.451595844014,40.07569428835947,938.0742879606458 -123.4515994232129,40.07561554524943,935.3553567222895 -123.4516030024044,40.07553680213823,932.2218734851813 -123.4516065815886,40.07545805902593,930.7534894808966 -123.4516101607653,40.07537931591249,930.0266970006832 -123.4516548151961,40.07531300933065,929.0714431775693 -123.4516994695407,40.07524670273134,927.4575721315136 -123.4517132965936,40.07516791965418,924.4002310359446 -123.4517271236154,40.0750891365745,919.7417201256143 -123.4517608881936,40.07502917074478,916.3103415211554 -123.451794652713,40.07496920490495,913.2209769492641 -123.4518284171735,40.07490923905498,910.3323606828592 -123.4519183597829,40.07487267280914,906.8561007814666 -123.4520083022957,40.07483610649378,903.2128692200864 -123.4520874558705,40.07482110151805,901.0144786436545 -123.4521666094101,40.07480609648839,898.8281369418683 -123.4522457629145,40.07479109140481,896.4287403704368 -123.4523480026577,40.0747544768191,892.4573086187878 -123.4524502422908,40.07471786214355,889.0420360338408 -123.4525201400722,40.07474960566083,888.1893318376746 -123.4525900379183,40.07478134913541,887.3505352668908 -123.4525672655471,40.07485036985921,889.5794250705771 -123.4525444931307,40.07491939057795,891.8267190326782 -123.4525217206688,40.07498841129167,894.0457465550261 -123.4524771089733,40.07506101637584,896.7873405544144 -123.4524324971836,40.07513362144247,899.3092293269159 -123.4523878852997,40.07520622649153,901.4137348219816 -123.4523323351686,40.07527782451001,903.4706220842521 -123.4522767849216,40.07534942250162,905.6641118101613 -123.4522212345587,40.07542102046635,907.7915263059934 -123.4521869327894,40.07550303268707,909.5915619693338 -123.4521526309387,40.07558504489695,911.5107199902527 -123.4521346738477,40.07565912038985,912.7241150427263 -123.4521167167186,40.07573319587925,913.8246913051665 -123.4520946811405,40.07581043644743,915.594083306287 -123.4520726455133,40.07588767701067,918.6466580496162 -123.4520895838944,40.07596948922932,920.538815714665 -123.4521065223169,40.07605130144412,922.3967253837397 -123.4521138889122,40.0761321012895,923.8548508481483 -123.4521212555257,40.07621290113316,924.7671655745805 -123.4521286221576,40.07629370097515,925.5573012097906 -123.4520731125279,40.07637159703151,927.893058178782 -123.4520176027722,40.07644949306095,931.1404350068475 -123.4519620928906,40.07652738906342,935.6304586028061 -123.451896899935,40.07658747753817,938.4506655297899 -123.4518317068649,40.07664756597625,940.5468195673801 -123.4517665136804,40.07670765437763,942.182370404858 -123.4517025966498,40.0767540913813,943.9919154347413 -123.4516386795322,40.07680052834982,945.6096370336946 -123.4515747623279,40.07684696528319,947.3358486566004 -123.4514950339981,40.07687876769752,949.4667928066768 -123.4514153055938,40.07691057005724,951.4476396983276 -123.4513273577186,40.07693925521909,955.6486920499816 -123.451239409769,40.07696794031445,959.6284759271653 -123.4512657461956,40.07702452270762,957.8875171011141 -123.4512920826662,40.077081105094,956.7321498350249 -123.4513184191808,40.07713768747363,957.0412494871725 -123.4514005441027,40.07715836193514,954.8045385289774 -123.4514826690738,40.07717903633807,953.4021212423095 -123.4515647940941,40.07719971068244,952.4203274706863 -123.4516551871529,40.07723084995181,951.8984641564394 -123.4517455802935,40.07726198915002,952.1482543742345 -123.4518274002362,40.07723647673785,949.9304996902155 -123.4519092201175,40.07721096426814,948.0953625104472 -123.4519745802081,40.0771760684635,946.0892529358377 -123.4520399402318,40.07714117262216,944.1343565302636 -123.4521053001886,40.0771062767441,942.376910214712 -123.4521912295348,40.07708232261996,940.892763234968 -123.4522771588202,40.0770583684323,939.2132957100873 -123.4523879235376,40.07707053260238,937.9171692168649 -123.4524986882934,40.07708269666628,936.3265858282263 -123.4525641209212,40.07705882232477,933.9571482572221 -123.452629553503,40.07703494794645,931.5744745918016 -123.4526839259662,40.07699169689666,928.7176213868039 -123.4527382983606,40.07694844582142,926.3729915864199 -123.4527926706863,40.07690519472071,924.3124401751948 -123.4528999709182,40.07693587329028,923.9364582001476 -123.4530072712457,40.07696655175973,924.0383676217216 -123.4531145716687,40.07699723012914,924.5128168741203 -123.4532218721871,40.07702790839845,925.3473477714056 -123.4533148025518,40.07697794543622,923.883855627146 -123.4534077327803,40.07692798239979,922.8482909413202 -123.4534648201224,40.07688209605333,921.8785183903892 -123.453521907388,40.07683620967879,920.6267797853787 -123.4536176574534,40.07685088080395,921.9347605915959 -123.4537134075592,40.0768655518497,923.4795859202168 -123.4538091577053,40.07688022281603,924.9335193631761 -123.4538676471741,40.07683975434134,923.2086929192454 -123.4539261365735,40.07679928583719,921.4580221820408 -123.4539846259036,40.07675881730364,919.7667984969571 -123.4540770586503,40.07678837210865,921.5275346752118 -123.4541694914763,40.0768179268393,923.1137946257666 -123.4542352684958,40.07684601143421,924.3901117944697 -123.454301045569,40.07687409599134,925.6902544948649 -123.4543742596439,40.07682867081471,924.818163650354 -123.4544474736214,40.07678324559198,924.4408428024276 -123.4544414888419,40.07671888613026,922.3543367387949 -123.4544355040742,40.07665452666743,919.9974284059554 -123.4544295193183,40.07659016720353,917.6281256769942 -123.4544058435318,40.07652307787441,915.0195142721657 -123.4543821677922,40.07645598853942,913.1075746861361 -123.4543584920998,40.07638889919853,911.2090953669222 -123.4543361131168,40.07631130754733,909.001691843454 -123.4543137341854,40.07623371589047,906.8102404981951 -123.4542913553056,40.07615612422799,904.8295261537831 -123.454290950746,40.07609524194147,903.3644306459959 -123.4542905461876,40.07603435965431,901.8414623125276 -123.4542901416305,40.07597347736653,900.2837208655601 -123.454301999918,40.07590729837916,898.5628640390601 -123.4543138581832,40.07584111938996,896.7651302510301 -123.4543318024922,40.07576546903246,894.6678797829539 -123.4543497467622,40.07568981867143,892.633920724091 -123.4543697545568,40.07561625965732,890.8503377388835 -123.454389762309,40.07554270063906,889.0213558173032 -123.4544097700189,40.07546914161666,887.338661710419 -123.4544324686294,40.07538927370194,885.4505691855561 -123.4544551671878,40.07530940578199,883.6373035297486 -123.4544778656939,40.07522953785676,881.902184586183 -123.4545494132435,40.07520091465128,881.396012846933 -123.4546209607329,40.07517229140181,880.9247653506868 -123.4547317437324,40.07518760243358,881.3988177438216 -123.4548425267805,40.07520291335909,881.7918176337666 -123.4549366616308,40.07518049956227,881.2492483111141 -123.4550307964188,40.07515808568921,880.7474806635065 -123.4550713691475,40.07509494299207,879.0272863502231 -123.4551119418016,40.07503180028046,877.475038809756 -123.4551400910502,40.07494981136518,875.5272480016041 -123.4551682402322,40.07486782244229,873.804462495754 -123.4551566483445,40.07478913882453,871.4126285826767 -123.4551450564842,40.07471045520438,868.9416220638899 -123.4551220603654,40.07464283846863,867.0334319261025 -123.4550990642926,40.0745752217273,865.6335830154259 -123.4551051156713,40.074498988122,864.6797852286635 -123.4551111670374,40.07442275451546,863.6260885096118 -123.4551172183908,40.07434652090766,861.9443762350775 -123.4551232697314,40.07427028729863,859.2175183418437 -123.4551293210594,40.07419405368839,856.4424456127438 -123.4551905041062,40.07414815038474,855.1932687095821 -123.4552516870708,40.07410224704888,854.3062543916238 -123.4552923009175,40.0740454024365,854.0966378176299 -123.455332914697,40.07398855780971,853.9446501032319 -123.4553939296261,40.07391746172272,853.4976124168846 -123.4554549444287,40.07384636560343,853.4552947747828 -123.4554830823012,40.07376280205077,852.6973011481076 -123.4555112201058,40.07367923849046,851.9872453930421 -123.4555599057993,40.07360346703976,851.5079868917612 -123.4556085913855,40.0735276955682,850.5289051511133 -123.4556616907558,40.07349914422257,850.1294641269435 -123.4557147900816,40.0734705928527,849.6379865437204 -123.45580215342,40.07345765248876,849.3887381953602 -123.4558895167247,40.07344471205909,849.0443230414444 -123.4559768799957,40.07343177156372,848.5734607559535 -123.4560422273924,40.0733958237782,847.5063386206028 -123.4561075747202,40.07335987595599,846.4608217928941 -123.4561729219791,40.0733239280971,845.4653192859487 -123.45624100189,40.07328796943938,844.5299167794184 -123.4563090817292,40.07325201074183,843.6036308082931 -123.4563771614966,40.07321605200445,842.2740341526481 -123.4564382797638,40.07316070079025,840.1888331501534 -123.4564993979321,40.07310534954381,837.2271030368129 -123.4565632872641,40.07305576081701,833.9012660158168 -123.4566271765033,40.07300617205507,830.6741663870783 -123.4566910656499,40.07295658325797,828.5475755787561 -123.4567769215363,40.0729226536525,826.855863522296 -123.4568627773371,40.07288872398365,825.4615079631087 -123.4569486330522,40.07285479425146,824.0906283121119 -123.4570591601851,40.0728323140692,822.6234717760497 -123.4571696872443,40.0728098337818,821.1058518470303 -123.4572556831033,40.07279689771845,819.8979149157257 -123.4573416789292,40.07278396159142,818.3581428480684 -123.4574460045704,40.07275363260336,815.8890828425539 -123.4575503301183,40.07272330352167,813.3432932141537 -123.4576299453807,40.07267575153889,810.6340313683022 -123.4577095605323,40.07262819950162,808.0312959885991 -123.4577748429947,40.07258280349059,805.1706779896573 -123.4578401253704,40.0725374074429,801.9390887240165 -123.4579054076593,40.07249201135856,797.6573127155599 -123.4579624566483,40.07244139917192,793.2986495367852 -123.4580195055529,40.07239078695719,790.331997283651 -123.4580765543732,40.07234017471442,787.3520364440029 -123.4581529077092,40.07231572916417,784.9890361598336 -123.4582292609902,40.0722912835638,782.0633814008777 -123.4583056142162,40.07226683791331,778.0556879353041 -123.4583871462093,40.07223586344173,772.3505123333023 -123.4584686781282,40.07220488891301,768.3751184186426 -123.4585502099727,40.07217391432716,765.9614616303213 -123.458628478199,40.07213623437967,763.5344265957403 -123.4587067463387,40.07209855437953,760.7172635927302 -123.458790642205,40.07211221846357,758.2917840383939 -123.4588745381043,40.07212588248662,756.5102998870639 -123.4589584340365,40.07213954644869,754.832445777678 -123.4590460017565,40.07215739469091,752.5136066217641 -123.4591335695217,40.07217524286662,749.3945818323502 -123.459221137332,40.07219309097584,746.2284577651967 -123.4592843978313,40.07225372410358,745.7009172934463 -123.4593476584429,40.0723143571955,744.9393575481282 -123.459426061123,40.07232384370877,741.8020758458763 -123.4595044638243,40.07233333016884,738.5029701632296 -123.459582866547,40.07234281657572,734.9717457298484 -123.4596650351839,40.07237048317705,732.616413094237 -123.459747203887,40.07239814971958,730.9210561130512 -123.4597641458312,40.07247926102235,733.0343733600201 -123.4597810878165,40.07256037232127,734.9723506885146 -123.4597541561677,40.07261926366139,737.0220108594418 -123.4597272244729,40.0726781549949,738.5754204693825 -123.4596675568152,40.07274557399595,741.0115046353407 -123.4596078890402,40.07281299296614,743.7593654096777 -123.4595535172311,40.07285519755928,746.4587162561779 -123.4594991453549,40.07289740212696,749.5423396448774 -123.459573323472,40.07295589233947,746.8114565570793 -123.4596475017161,40.07301438250318,742.3762015014878 -123.4596725195159,40.07307726658065,740.1722597326819 -123.4596975373622,40.07314015065177,738.5432953251293 -123.4597116243899,40.07320307809302,738.715410608349 -123.4597257114442,40.07326600553175,739.9753837378028 -123.4598324286661,40.07328657643964,734.5968614829632 -123.4599391459513,40.07330714724876,732.0222297076702 -123.4600267625021,40.07333199269798,730.5229026144275 -123.460114379116,40.07335683808047,728.7896303304225 -123.4601720347445,40.0733964985231,727.7423039427449 -123.4602296904397,40.07343615893639,726.4940416548063 -123.4603200541202,40.07346309269379,724.4005690488907 -123.4604104178714,40.07349002638017,722.8238725344869 -123.4604870614934,40.07350861675484,721.8503641331029 -123.4605637051567,40.07352720707849,721.0157210497553 -123.4605914142933,40.07358378191712,722.110624247086 -123.4606191234761,40.07364035674831,723.3487034620296 -123.4606658911302,40.07368635856636,723.9675032830842 -123.4607126588474,40.07373236036483,724.4260505498543 -123.4607808357888,40.07371109477005,721.6943737034837 -123.4608490126875,40.07368982913532,718.7977339785106 -123.4609444461204,40.07365795779144,714.3596668503867 -123.4610398794637,40.07362608636926,709.5076673179169 -123.4610694061382,40.07368195404382,709.4733119865498 -123.4610989328614,40.07373782171005,709.9367994087065 -123.4611284596331,40.07379368936795,710.8959603501332 -123.4611426189146,40.07386711355991,715.273034838126 -123.4611567782272,40.07394053774905,719.6907639854281 -123.4611846862772,40.07402650386916,724.5286500744119 -123.4612125943985,40.0741124699809,729.3213248362418 -123.461250689424,40.07417810089795,733.226685813604 -123.4612887845231,40.0742437318013,736.3816121822855 -123.4613268796958,40.07430936269097,739.9319372543913 -123.4613734674253,40.07437356011581,743.2801948426211 -123.4614200552426,40.07443775752072,745.898039640487 -123.4614666431478,40.07450195490568,748.1864036997825 -123.4614725621245,40.07456911353931,751.156884438884 -123.4614784811134,40.07463627217181,754.3835959199937 -123.4614680318012,40.07470769489401,758.5772327828357 -123.4614575824679,40.07477911761453,763.733959753962 -123.4615017037154,40.0748377262893,766.5642930035715 -123.461545825039,40.07489633494627,768.8351196448974 -123.4616459325865,40.07488193977316,765.2936865414866 -123.461746040091,40.07486754451373,762.0599541060531 -123.4618461475525,40.07485314916801,759.8802565426672 -123.4618975881681,40.07478156298421,756.9937664714598 -123.4619490286764,40.07470997677733,755.360832734605 -123.4619158098563,40.07464712591361,753.3712459968674 -123.4618825910977,40.07458427503936,751.2356816800136 -123.4618601474717,40.0744982873121,747.7069768185473 -123.4618377039032,40.0744122995789,743.8732283643416 -123.4618298587489,40.07432975271762,741.1560234507729 -123.4618220136144,40.07424720585451,737.80649963109 -123.4618141684999,40.07416465898958,734.7421703366905 -123.4617918810787,40.07410176450659,730.8264789736065 -123.461769593699,40.07403887001838,726.420518493455 -123.4617089628492,40.07396353168242,721.5090151955145 -123.4616483321335,40.07388819331301,718.217050441148 -123.4616738324742,40.07381985975169,713.0667695894979 -123.4616993327645,40.07375152618424,708.147317416202 -123.4617248330045,40.07368319261065,703.2315360278291 -123.461750333194,40.07361485903094,698.0067357500225 -123.4617971995366,40.07354049185072,691.8159421267807 -123.4618440657778,40.07346612465117,684.8223286176814 -123.4618909319177,40.07339175743228,677.6202205781801 -123.4619446506673,40.07334292943792,672.5692751246477 -123.4619983693403,40.07329410141868,670.5184499397687 -123.4620520879366,40.07324527337455,668.7554898763788 -123.4621589675359,40.07324484704517,667.7561137070741 -123.4622658471329,40.07324442061721,666.6845280842406 -123.4623727267276,40.07324399409063,665.4436328273591 -123.46247960632,40.07324356746545,663.8513504898792 -123.4625864859101,40.07324314074167,661.9576230582799 -123.462693365498,40.07324271391929,660.1712820692052 -123.4627879859979,40.07322554041509,658.5484660745192 -123.4628826064495,40.07320836683381,656.9825457373734 -123.4629772268529,40.07319119317547,654.7337417527292 -123.4630376378993,40.07314429741043,651.7309052870614 -123.4630980488629,40.07309740161399,649.0593593884948 -123.4631584597436,40.07305050578614,647.1039086739927 -123.4632605314477,40.07305756235432,645.4879541361393 -123.4633626031721,40.07306461883245,644.5624985259376 -123.4634646749166,40.0730716752205,643.8139163079298 -123.4635567773431,40.07304144795189,642.6741857282989 -123.4636488796875,40.07301122061033,641.476082976688 -123.4637409819499,40.07298099319587,640.3243606996202 -123.4637902869873,40.07303151967777,642.0016138017364 -123.4638395920976,40.07308204613783,643.7188279245499 -123.4638668235364,40.0731685391896,646.4000484391474 -123.463894055045,40.0732550322333,649.3067382152242 -123.4639223060517,40.07334073389489,652.4515899000914 -123.4639505571303,40.07342643554792,655.4525292285696 -123.4639788082806,40.0735121371924,658.2684772627354 -123.4640059706157,40.07358839569017,660.1819491465188 -123.4640331330121,40.07366465418021,662.0620244208731 -123.4640602954699,40.07374091266257,664.0012063682391 -123.4640873778329,40.07380536208451,665.6289094377394 -123.4641144602474,40.07386981149912,666.9717334113776 -123.4641415427136,40.07393426090636,667.5235199401324 -123.4641532695667,40.07400113370555,667.9784788113191 -123.4641649964433,40.07406800650262,668.2837934772441 -123.4641767233435,40.07413487929762,668.7696511938831 -123.4641742182199,40.07421873588366,669.7670992341381 -123.4641717130912,40.07430259246846,670.9979771340018 -123.4641753566715,40.0743864244157,672.7536142802327 -123.4641790002616,40.07447025636157,674.9350806757303 -123.4641845411056,40.07453164289675,676.4616840374472 -123.4641900819601,40.07459302943097,677.877747668745 -123.464195622825,40.0746544159642,679.0732628106489 -123.4641991141192,40.0747158107091,680.2211285130536 -123.4642026054201,40.07477720545321,681.3974673452444 -123.4642060967279,40.07483860019654,683.1344118457475 -123.4642127506216,40.07491297257505,686.8452730391004 -123.4642194045306,40.07498734495214,691.2931056239615 -123.4642321398745,40.07505177308619,694.8655431917012 -123.4642448752429,40.07511620121801,697.5789762958607 -123.4642247962654,40.07517769041002,701.1813345628898 -123.4642047172523,40.07523917959809,704.6837356749284 -123.4641846382035,40.07530066878226,707.782350061945 -123.4641512928351,40.07537047767512,711.6205544074868 -123.4641179473992,40.07544028655796,715.5235796300706 -123.4640906625334,40.07549708084422,718.5690061384771 -123.4640633776226,40.07555387512375,720.8373979437465 -123.4640654919606,40.07563889411942,722.6973959599818 -123.4640676063048,40.07572391311377,724.0055364544085 -123.4640701529,40.07579712100551,725.0610559262689 -123.4640726995014,40.07587032889624,726.2243703617251 -123.4640752461091,40.07594353678596,727.4641519036363 -123.4640726472962,40.07601361612181,728.9497728348025 -123.4640700484788,40.07608369545678,730.5432439138331 -123.4640674496566,40.07615377479088,732.3077677347845 -123.4640309571829,40.07621296781464,735.1346448570968 -123.4639944646462,40.07627216082668,738.0923564796647 -123.4639579720468,40.07633135382697,740.9382709686242 -123.4639378764368,40.07639048115031,742.8597049065532 -123.4639177807926,40.07644960846976,744.3959669513695 -123.4638976851141,40.07650873578532,745.7400242781295 -123.4638859001295,40.07658436293396,746.8725251574897 -123.4638741151197,40.07665999008056,747.7160616895686 -123.4638500722949,40.07674157099019,748.8766372414325 -123.4638260294136,40.076823151894,750.3775145723054 -123.4637937104442,40.07689335020363,751.642841968345 -123.4637613914089,40.07696354850378,752.7891939062864 -123.4637290723079,40.0770337467944,754.064218586649 -123.4637312015134,40.07712100949539,755.5684410537584 -123.4637333307255,40.077208272195,758.0124903420955 -123.4636979631605,40.07728234040381,762.0329786931089 -123.4636625955197,40.0773564086013,765.9589536055759 -123.4636272278028,40.07743047678747,769.592075469063 -123.4635568827799,40.07748508138083,773.729252162036 -123.4634865376445,40.07753968593159,778.2023248227074 -123.4634469320763,40.0775933801769,781.0876194038181 -123.4634073264461,40.0776470744085,783.5544709096807 -123.4633677207539,40.07770076862644,785.8219316041718 -123.4632928595188,40.07776956236116,788.9144307503576 -123.4632179981332,40.07783835604752,792.0106392011961 -123.4632042371844,40.07792501308691,795.1209866820943 -123.4631904762018,40.07801167012358,797.7689887700571 -123.463143666908,40.07806106296383,799.6604970809605 -123.4630968575467,40.07811045578514,801.6430427697087 -123.4630881139463,40.07818134692953,803.5097160984653 -123.4630793703286,40.07825223807247,806.0766513234219 -123.4630337082821,40.07831973397361,809.5041527466076 -123.4629880461459,40.07838722985648,813.5495887740846 -123.4629377998582,40.07843361839856,816.6998727647318 -123.4628875535025,40.07848000691885,819.7565761678071 -123.4628373070786,40.07852639541735,823.4089073760288 -123.462844976735,40.0785995828344,827.8879227986475 -123.4628526464086,40.0786727702499,831.6597500874823 -123.4628726569596,40.07875220668259,834.5712335400893 -123.4628926675579,40.07883164311047,838.209316461315 -123.4629186940447,40.07889137322121,841.0888136095004 -123.4629447205774,40.0789511033252,843.5298728539181 -123.4630301141008,40.07899957407575,843.6687237526382 -123.463115507745,40.07904804476227,842.7502999089861 -123.4632049502574,40.07908901993244,840.9907815059652 -123.4632943928765,40.07912999503265,839.414945880967 -123.4633821904938,40.0791701893525,839.5507381912749 -123.4634699882139,40.07921038360499,842.0327003716461 -123.4635633917771,40.07923087308667,844.1803720647446 -123.4636567953956,40.07925136249267,845.9663255541136 -123.4636901110842,40.0791768301583,841.9356496617253 -123.4637234267009,40.07910229781377,838.3002076012084 -123.4636706303676,40.07902456734692,833.9320814948574 -123.463617834155,40.07894683685428,829.5808736010871 -123.4635957836523,40.07886898330001,825.1237940261331 -123.4635737332007,40.07879112974022,820.8573661815522 -123.4635999629003,40.07872961608208,816.9990335806422 -123.4636261925531,40.07866810241763,813.2514771292083 -123.4636524221592,40.07860658874687,809.7385841491815 -123.4637383172143,40.07857790245834,806.4085554443013 -123.4638242121967,40.0785492161064,802.9280130180975 -123.4639039259652,40.07851583069802,798.8588262826974 -123.4639836396555,40.078482445235,794.1930383489519 -123.4640554424594,40.07841602518665,787.966605237611 -123.464127245124,40.07834960509381,781.4668579142096 -123.4641921356847,40.07832178991087,777.361811938702 -123.4642570261923,40.07829397469174,773.7202668534734 -123.4643548453409,40.07828570972379,771.5561176759999 -123.4644526644651,40.07827744467336,771.3015959529821 -123.4644968439804,40.07821822071453,768.8883565323254 -123.4645410234195,40.07815899673871,767.0843252878003 -123.4646097989734,40.07809967410274,765.7396793632912 -123.4646785744081,40.07804035142604,764.3958092500536 -123.4647387456285,40.07799680904626,763.4555458894263 -123.4647989167722,40.07795326663536,762.4588621146521 -123.4648590878392,40.07790972419331,761.7825411758427 -123.4649398972581,40.07790199936105,762.1549144802299 -123.4650207066581,40.07789427447252,762.3691967169484 -123.4651015160393,40.0778865495277,762.552546273447 -123.4651464037066,40.07794281806734,763.5401698040952 -123.465191291448,40.0779990865886,764.6559497766091 -123.4651871738715,40.07807173071736,765.7020020876203 -123.465183056287,40.07814437484512,766.7719475649734 -123.4651892850948,40.07821254891347,767.9886187403505 -123.4651955139158,40.07828072298062,769.4513829541611 -123.4651820762949,40.07833923329444,771.4142012411614 -123.4651686386514,40.07839774360625,773.5260298091625 -123.4651908641579,40.07844459658133,775.5220348612823 -123.4652130896952,40.07849144955159,777.2641727730756 -123.4652515771717,40.07855595125353,779.2360277045001 -123.4652900647213,40.07862045294157,781.5861239187724 -123.4652644936842,40.07870322118993,785.2122494229217 -123.465238922586,40.07878598943184,789.3231536317553 -123.4651663217807,40.0788479849014,792.4154454033471 -123.4650937208439,40.07890998032556,795.2452868633283 -123.4650642198938,40.07898006923874,798.7673219161343 -123.4650347188839,40.0790501581439,802.7103569476566 -123.4650237917561,40.07913877222919,808.7164364281419 -123.4650128646011,40.07922738631227,814.7314311044106 -123.4649810514764,40.07929659877991,818.9294199069577 -123.4649492382879,40.0793658112384,822.0730553983346 -123.4648734736853,40.07941482891936,825.1948135957743 -123.4647977089738,40.07946384655099,828.1435613913926 -123.4647596720796,40.07952216026701,831.4990271074042 -123.4647216351209,40.0795804739703,834.9186797068652 -123.4648203462213,40.07962775823624,835.7431812275138 -123.4649190574578,40.07967504241689,836.627979956333 -123.46491147155,40.07974637188188,840.8726404391828 -123.4649038856271,40.07981770134556,844.8086404453052 -123.4649721822745,40.07985728383252,844.7285811264421 -123.4650404790008,40.07989686627852,844.1461668179735 -123.4651304473411,40.07990181928994,841.3903515729689 -123.4652204156938,40.07990677223141,839.0137235015038 -123.4652848618254,40.07988879936109,836.7130600005361 -123.4653493079228,40.07987082645509,834.708753836414 -123.4653961397603,40.07980598206798,832.1635002844092 -123.4654429715094,40.07974113766175,829.4859782435175 -123.4654597414442,40.07966401419817,826.2931926802527 -123.4654765113421,40.07958689073139,822.8400674454615 -123.4654885909185,40.07949827198029,819.1619738411172 -123.4655006704647,40.07940965322676,815.5521228363156 -123.4655071620637,40.07934703752212,812.697828398456 -123.4655136536513,40.0792844218165,809.5684281090191 -123.4655201452277,40.0792218061099,806.5633186221874 -123.4655670404031,40.07916634983618,804.3899953461018 -123.4656139355028,40.07911089354335,802.9710949220654 -123.4656897897389,40.07907516054964,802.8867194707695 -123.4657656438954,40.07903942750648,802.9277840005147 -123.4657951743242,40.07897376680908,801.3448218051302 -123.4658247046968,40.07890810610373,799.7271805112222 -123.4657758579546,40.07884630335593,795.9421174001571 -123.4657270113011,40.07878450058639,792.6085249697269 -123.4656587092656,40.0787440328555,790.1176351109606 -123.4655904073108,40.07870356508359,787.8408425494424 -123.46561157375,40.07862872674088,786.139482342322 -123.4656327401436,40.07855388839361,784.4553140187649 -123.4657083907478,40.07857862014605,786.5301238690874 -123.4657840414064,40.0786033518487,788.6782108387761 -123.4658596921193,40.07862808350151,790.9287383772173 -123.4659279993856,40.07865804076021,793.2605620337545 -123.4659963067115,40.07868799797815,795.7469621971378 -123.466064614097,40.07871795515531,798.2785145303485 -123.4660460591819,40.07863459665148,794.0371339551313 -123.466027504313,40.07855123814325,790.7920824725237 -123.465997062629,40.0784831615265,788.1084545979733 -123.4659666210063,40.07841508490059,785.2663520679348 -123.4659304992045,40.07835943094394,782.7699740211738 -123.4658943774618,40.07830377697513,780.2437360840228 -123.465906715843,40.07825324232121,778.7831927146352 -123.4659190542062,40.07820270766563,777.3713584339019 -123.465934766881,40.07813975960401,775.0421520526547 -123.4659504795273,40.07807681153974,772.5819252445618 -123.4659442197911,40.07800420912459,769.1862555218436 -123.4659379600689,40.07793160670813,767.3887575691898 -123.4659696810459,40.07784910879906,766.0458189898329 -123.4660014019472,40.07776661088055,764.0374053631479 -123.4660240582499,40.07770747291441,762.0701562841106 -123.466046714514,40.07764833494344,759.7467080747329 -123.4660693707392,40.07758919696767,758.1571856608957 -123.4660788975126,40.07752090050588,756.3272876963863 -123.4660884242676,40.07745260404261,754.908947423458 -123.4660979510041,40.07738430757787,753.7894728091237 -123.4661205877755,40.07732233542002,752.9643440084795 -123.4661432245064,40.07726036325732,752.2873381204281 -123.4661658611967,40.07719839108977,751.7724931486094 -123.4661669797084,40.07713697788363,750.9967155358243 -123.4661680982186,40.07707556467685,750.1928957602934 -123.4661692167273,40.07701415146943,749.3528738572431 -123.4661733936012,40.07695036408091,748.1467125286347 -123.4661775704678,40.07688657669158,746.746747199262 -123.4661817473271,40.07682278930145,745.2409308812039 -123.4662028055396,40.07675480069705,743.7824582091175 -123.4662238637109,40.07668681208828,742.7102226735512 -123.4662449218409,40.07661882347513,741.4710628614113 -123.4662506157159,40.07655207763227,739.98749785076 -123.4662563095804,40.07648533178842,738.2850152093042 -123.4662620034344,40.0764185859436,736.3588876080508 -123.4662453129251,40.07633805418249,733.8251910714273 -123.4662286224559,40.07625752241766,731.4152011955389 -123.4662153814492,40.0761943955855,729.6293750766948 -123.4662021404674,40.07613126875101,727.7968956723865 -123.4661888995107,40.07606814191417,725.8580286312163 -123.4661704821912,40.0759973598154,723.5544743998809 -123.4661520649105,40.07592657771261,721.1717550317549 -123.4661336476687,40.07585579560583,719.2320342757042 -123.466119338145,40.07578623695123,717.5565277533459 -123.4661050286511,40.07571667829388,715.7962503850861 -123.4661369295837,40.07566075066695,714.6767297537275 -123.4661688304644,40.075604823031,713.1283416259272 -123.4661568847392,40.07554375761225,711.2728463001383 -123.4661449390358,40.0754826921915,709.6202394568827 -123.466150731558,40.07543041242175,708.3145709290491 -123.4661565240718,40.07537813265126,706.8415017063073 -123.4661268100334,40.07530385318197,704.5673896973669 -123.4660970960604,40.07522957370373,701.9552393264245 -123.4660713640082,40.07517564936106,700.2806399442076 -123.466045631997,40.07512172501193,698.622326799975 -123.4660130309516,40.07507491391088,697.7075049077575 -123.465980429951,40.07502810280003,696.7771419967341 -123.4659535089577,40.07496886899446,695.3570387667321 -123.4659265880114,40.07490963518178,693.7965026433346 -123.4659857874903,40.07483304948809,690.812716539811 -123.4660449868371,40.07475646376387,687.2100723674249 -123.4661171506579,40.07482277828599,689.0344190153116 -123.4661893146188,40.0748890927616,690.9422948052118 -123.4662274065885,40.07495211960137,692.7574019248041 -123.4662654986289,40.07501514642755,693.6797003686706 -123.46630359074,40.07507817324009,694.6235820053721 -123.4663040860775,40.07515079887497,696.6806191833382 -123.4663045814168,40.07522342450893,699.595389626969 -123.4662911392813,40.07528104929498,702.2200708179553 -123.4662776971237,40.07533867407904,704.5312507395206 -123.4662171106154,40.07535840338092,705.698115244443 -123.4661565240718,40.07537813265126,706.8415017063073 -123.466150731558,40.07543041242175,708.3145709290491 -123.4661449390358,40.0754826921915,709.6202394568827 -123.4661568847392,40.07554375761225,711.2728463001383 -123.4661688304644,40.075604823031,713.1283416259272 -123.4662545500602,40.07566382014458,715.8550348804015 -123.4663402698038,40.07572281719331,718.5257293877869 -123.4664446972292,40.07570733982884,719.1905643030634 -123.4665491246064,40.07569186237046,719.6426818827365 -123.4666535519354,40.07567638481815,720.0906718270392 -123.4666806926627,40.07559877650053,716.5554002143386 -123.4667078333292,40.07552116817585,712.9318203955481 -123.4667074342923,40.07546271340373,710.184976842785 -123.4667070352567,40.07540425863101,707.6522758246616 -123.4666813449772,40.0753565341773,705.6476044742806 -123.4666556547338,40.07530880971729,703.7099092195352 -123.4666321615133,40.0752451337519,701.0264440605737 -123.4666086683371,40.07518145778077,698.4602289587534 -123.4665951750284,40.07511892246534,696.2008699744822 -123.466581681745,40.07505638714751,694.5217216472367 -123.4665681884868,40.07499385182729,693.0812473458102 -123.466578201877,40.0749406693302,692.0627940249703 -123.466588215252,40.07488748683183,690.9456783870135 -123.4665900979309,40.07482548005159,689.6777870628509 -123.466591980607,40.0747634732707,688.5144010722428 -123.4665591738688,40.07468654925246,687.0311491368074 -123.4665263672052,40.0746096252235,685.7736814148244 -123.4664958240867,40.07452649214916,684.6028484492538 -123.4664652810434,40.07444335906519,683.2853189069392 -123.4664301507116,40.07436378725299,681.5597478224948 -123.4663950204624,40.07428421542861,679.2926140159293 -123.4663627662209,40.07419807781293,676.6779895402208 -123.4663305120617,40.07411194018651,674.5618955127928 -123.4664046789379,40.07407196212197,674.0620979605585 -123.4664788457272,40.07403198401021,673.080940266859 -123.4665662251806,40.07405288900182,673.8758209182078 -123.4666536046868,40.07407379392714,675.0391226689211 -123.4667409842459,40.07409469878617,676.6127351722937 -123.4668261286513,40.07412594578687,678.6736945714235 -123.4669112731341,40.07415719272437,680.1882378785319 -123.4669964176942,40.07418843959868,680.9751175792626 -123.467058517274,40.07424974560347,682.2137599531213 -123.4671206169654,40.07431105157369,683.080745393645 -123.467184237301,40.07434179462788,684.9728801395587 -123.4672478576936,40.07437253764669,686.7808194211896 -123.4673354768134,40.07437218421997,688.8084228952887 -123.4674230959316,40.07437183072698,690.6623235063148 -123.467479363141,40.07433883267954,691.1902646180554 -123.4675356302959,40.07430583460489,691.5173752265143 -123.4675431614345,40.07422697665334,689.6460728657487 -123.4675506925565,40.07414811870032,688.1670031539107 -123.467460489416,40.07410774038218,687.1262778932301 -123.4673702863816,40.0740673619929,685.7084353514431 -123.4672940430827,40.07404523175187,684.3621279168053 -123.4672177998327,40.07402310146027,682.8643173337775 -123.4671415566317,40.07400097111815,681.1103271795162 -123.4670596176663,40.07398890165592,679.2135104394229 -123.4669776787294,40.07397683213552,677.1473232112155 -123.4669094775641,40.07395053594249,674.8374080264475 -123.4668412764511,40.07392423970887,673.0885824027973 -123.4667685422711,40.07389067925275,671.3145686158068 -123.4666958081623,40.07385711875038,669.809630602188 -123.4666230741246,40.07382355820171,668.4682016256588 -123.4666021487707,40.07376065916149,667.4053294995495 -123.4665812234559,40.07369776011655,665.3969668310782 -123.46656029818,40.07363486106694,662.8492767641941 -123.4665713615122,40.07356661737858,660.7647882675141 -123.466582424823,40.07349837368846,658.6875759557186 -123.4666108586919,40.07344142655551,657.2562253513707 -123.4666392925137,40.07338447941529,655.2572373439558 -123.4666677262886,40.07332753226779,652.6729904575734 -123.4667499865674,40.07327420630664,650.7461443584111 -123.4668322467178,40.07322088028732,649.136611912686 -123.4669145067397,40.07316755420982,647.3906413989001 -123.4669857261435,40.07312947714843,645.7320902786596 -123.4670569454678,40.07309140004345,643.9927395106383 -123.4671281647126,40.07305332289487,642.3105477598486 -123.4671754370676,40.07299762821211,639.3961970289515 -123.4672227093459,40.07294193350996,636.3573404005506 -123.4672699815474,40.07288623878841,633.6159201833291 -123.4673525756712,40.07282567780835,630.5931908597074 -123.4674351696485,40.07276511676961,627.9266666013698 -123.4675155001607,40.07271076472788,626.1740785164802 -123.4675958305451,40.07265641263071,624.4222292787349 -123.4676623265628,40.07260211632526,622.2535248877348 -123.4677288224748,40.07254781998174,619.1733815762266 -123.4678138669185,40.07250850565342,616.387580911546 -123.4678989112639,40.07246919126296,613.5299640315629 -123.4679967076819,40.07244433114548,611.1025981936343 -123.4680945040281,40.07241947094573,608.9827316082286 -123.4681041061431,40.07249770862401,611.2616175466683 -123.468113708281,40.07257594630028,613.9789994405194 -123.4681086812767,40.07263999966892,616.1838364025682 -123.4681036542635,40.07270405303669,618.1261807005267 -123.4680986272415,40.07276810640359,619.6891263696198 -123.4681237173844,40.07284043585308,621.9462311038835 -123.4681488075811,40.07291276529592,624.852672257148 -123.4682025480987,40.07297868061259,627.5998832589573 -123.4682562887204,40.07304459590299,630.4810733788171 -123.4682854350627,40.07311061058566,633.2018003228874 -123.468314581462,40.07317662525989,636.6047853056098 -123.4682904831211,40.07324915350026,640.7213697887737 -123.4682663847297,40.073321681735,644.9419531977105 -123.4682946034903,40.07340187140944,647.8622852904203 -123.468322822318,40.07348206107552,650.9314478165736 -123.4684095395695,40.0734250254924,646.4119305850793 -123.468496256676,40.07336798984463,641.1317628369012 -123.4685286069364,40.07330330110579,637.2984527313306 -123.468560957136,40.07323861235756,633.5497837294932 -123.4685973164166,40.07316078585692,628.7023574371876 -123.4686336756152,40.0730829593443,624.1871080649031 -123.468703816595,40.07314933294182,625.8442643193285 -123.4687739577112,40.07321570649533,628.3271412506047 -123.4687580040194,40.07328032895883,630.1952549056576 -123.4687420502981,40.0733449514196,632.5105307480303 -123.4687548980661,40.07342520317324,635.3477140931392 -123.4687677458652,40.07350545492418,638.7720348597063 -123.4687703459652,40.07358574813946,641.577954996528 -123.4687729460722,40.07366604135352,644.2894827045191 -123.4687652120704,40.07373377971844,646.2791522276387 -123.468757478054,40.07380151808214,648.3512391774441 -123.4687557847364,40.07385348617247,650.019910871107 -123.4687540914165,40.0739054542623,651.6360540832652 -123.4687668313573,40.07396996061348,653.6685515776873 -123.4687795713226,40.07403446696242,655.5876489329557 -123.4688170140148,40.07411461917315,657.955012897253 -123.4688544567954,40.07419477137016,660.2362768582428 -123.4688426344844,40.07426410086289,663.2942981052918 -123.4688308121499,40.07433343035372,666.2403805084707 -123.468798332144,40.07437922469686,667.8495567029395 -123.4687658520948,40.07442501903075,669.4393546483187 -123.4687088454943,40.07448088494785,673.6166427568024 -123.4686518388008,40.07453675083684,677.9837396585581 -123.4685948320144,40.07459261669781,682.2359460534061 -123.4685186166149,40.07463701327637,686.702404268126 -123.4684424011163,40.074681409805,690.8040832993349 -123.4683661855185,40.07472580628372,694.43156358719 -123.4682989376208,40.07478276312367,697.3712412404293 -123.4682316896112,40.07483971992468,699.3858542414894 -123.4681808381737,40.07489661042298,701.6052385953469 -123.4681299866518,40.07495350089888,703.8987094161129 -123.4681754010328,40.07500055485504,704.4434331474899 -123.4682208154764,40.07504760879265,704.573795162537 -123.4683068227608,40.07503623906561,701.9440368815332 -123.4683928300159,40.07502486927488,698.7700353596147 -123.4684601859573,40.07498365777253,695.7102712851582 -123.4685275418173,40.07494244623118,692.6811510463244 -123.468604868825,40.07496050359901,690.1839808243742 -123.468682195873,40.07497856091493,688.4726599197836 -123.4686927221986,40.07505234876005,690.434445273371 -123.4687032485476,40.07512613660317,692.3447956151803 -123.4687137749202,40.07519992444424,694.2436263642099 -123.4686992338994,40.07527136435414,696.4649577543655 -123.4686846928488,40.07534280426153,698.5575757806894 -123.4686701517686,40.07541424416637,700.5183146610696 -123.4686337878001,40.0754915458197,702.9412001459145 -123.46859742375,40.07556884746106,705.3850225231948 -123.468558902099,40.07563041199182,707.3740865595516 -123.468520380379,40.07569197650953,709.0595216573651 -123.4684920419077,40.07574405233769,710.3803158611615 -123.4684637033935,40.0757961281587,711.9523880461118 -123.468455860976,40.07584812109295,712.9938929844241 -123.4684480185469,40.07590011402633,714.100002833796 -123.4685302945131,40.07594229502423,713.2478266911506 -123.4686125705805,40.07598447596281,714.2129669887906 -123.4686874425894,40.07594323393017,713.3944222206833 -123.4687623145077,40.07590199184936,712.9704746307624 -123.4688221990204,40.07586710870356,712.6289699102122 -123.4688820834718,40.07583222552695,712.3615839487201 -123.4689225681575,40.07575805628559,710.8597961743978 -123.468963052756,40.07568388702964,709.4888285216574 -123.4690228289568,40.07563325839286,708.92270893006 -123.4690826050692,40.07558262972533,708.1028612460597 -123.4691423810931,40.075532001027,707.0036884084211 -123.4691883705468,40.07546358286631,705.0905437023793 -123.469234359909,40.07539516468708,703.2810757916644 -123.4692803491796,40.07532674648933,701.3978123177033 -123.4693168528393,40.07526991363982,699.9604124695092 -123.4693533564388,40.07521308077862,698.6985771368504 -123.4693733875662,40.07514529256925,696.9717136339652 -123.4693934186545,40.07507750435584,695.1189267469657 -123.4694052729704,40.07501289843554,693.214098062702 -123.4694171272645,40.07494829251344,691.126565128775 -123.4694228544039,40.07488686058269,689.1770417788412 -123.4694285815337,40.07482542865108,687.2570889013335 -123.4694260887074,40.07476088086154,685.3513530415419 -123.4694235958864,40.0746963330712,683.6190142801834 -123.4694394411551,40.07461596514415,681.4208693003986 -123.4694552863874,40.07453559721404,679.2079131668097 -123.4694957264461,40.07445512960783,677.0929758383862 -123.4695361664103,40.07437466198692,675.3607641760477 -123.4695767252351,40.07431151428033,674.1277872622587 -123.4696172839854,40.07424836655927,672.7470301036328 -123.4696250063805,40.07417905360898,671.0254821445203 -123.4696327287606,40.07410974065742,669.0840682707142 -123.469636265484,40.07402784800971,666.6432417722774 -123.4696398022,40.07394595536076,663.9335650731745 -123.4696161773474,40.07388831642439,662.2669400201164 -123.469592552535,40.0738306774824,660.6018867265319 -123.4695689277629,40.07377303853479,659.1733582015887 -123.4695003210585,40.07373132771959,657.4525432156884 -123.4694317144377,40.07368961686294,655.7886415536512 -123.4693631079004,40.07364790596491,653.8652397157537 -123.4693121849264,40.07359457644716,651.764850459492 -123.4692612620319,40.07354124690609,649.5486235107048 -123.4692103392171,40.07348791734169,647.283355062988 -123.4691954845818,40.07341397210068,645.0079661261753 -123.4691806299793,40.07334002685663,642.8661074511847 -123.4691575124402,40.07325666757408,640.388244870054 -123.4691343949584,40.0731733082854,637.958918718683 -123.4690950541257,40.0731152080144,635.5973035011169 -123.4690557133603,40.07305710772909,632.8185178306552 -123.4689856189363,40.07299755734945,628.8450040964386 -123.4689155246345,40.07293800692609,624.8172202857434 -123.4688392710839,40.07287690680283,620.7222961212877 -123.4687630176696,40.07281580662794,616.8373197362973 -123.4687401059126,40.07276236350312,614.8493491197514 -123.4687171941917,40.0727089203731,613.1077701258185 -123.4687065580292,40.07265227840696,611.628284526025 -123.4686959218848,40.07259563643921,610.4136398856435 -123.4687077440728,40.07252630694229,609.3266396098023 -123.4687195662374,40.07245697744348,608.2022905226818 -123.4687128672332,40.07237670079513,606.4796693099167 -123.4687061682458,40.07229642414517,604.5438478707308 -123.4686936353654,40.07222700073105,602.6916985901696 -123.4686811025113,40.07215757731461,601.4505437508803 -123.4686685696832,40.07208815389583,600.8391395267784 -123.4687223200688,40.07201296001974,601.0640394922405 -123.4687760703367,40.07193776611845,601.2900310202062 -123.468855021611,40.0719067422427,601.3411651852057 -123.4689339728131,40.07187571831343,600.9449664693926 -123.4690129239433,40.07184469433058,600.5001716779732 -123.4690806377194,40.07180013501219,600.1715927930049 -123.4691483514072,40.07175557565439,599.3244079265123 -123.4692080194511,40.07171459165611,598.2956963537999 -123.4692676874235,40.07167360762723,596.2062469364998 -123.4693657188206,40.07165667736621,593.2693891957963 -123.4694637501683,40.07163974702249,589.8947412195839 -123.4695617814668,40.07162281659603,586.7846728764296 -123.4696748260494,40.07161527272239,585.532879269589 -123.4697878706061,40.07160772873858,585.1808869224117 -123.4698637224624,40.07157317393062,584.3228768447498 -123.4699395742418,40.07153861907322,583.6157998926724 -123.4700154259441,40.07150406416643,582.7402466851075 -123.4700866702938,40.07147011837419,581.3619912852516 -123.4701579145725,40.07143617253836,579.4432097395351 -123.4702211498584,40.07141111619918,577.367946531139 -123.4702843850978,40.07138605982566,575.8054820195929 -123.4703624974406,40.07134500035697,574.0583171411222 -123.4704406096893,40.07130394083587,572.7540148744822 -123.470533806151,40.07127699124968,571.2340519127342 -123.4706270025387,40.0712500415888,569.3998744547018 -123.4707383289505,40.07123305615633,567.1531654274821 -123.4708496553059,40.07121607061713,564.806608928067 -123.4709340903936,40.07120037522583,563.2212030188098 -123.471018525442,40.07118467977318,561.6354881189613 -123.4711222678278,40.07118248652789,559.3921549861707 -123.471226010206,40.07118029318973,556.7425376821997 -123.4713043944164,40.07117879339327,554.4322231471217 -123.4713827786229,40.07117729354378,552.2006311388286 -123.4714611628254,40.07117579364128,550.3415668247483 -123.4715279413767,40.07116312201506,549.1753814408438 -123.4715947199029,40.07115045035044,548.3172365959072 -123.4716790569818,40.07112058356293,547.5077074626014 -123.4717633939866,40.07109071671427,546.6936855104352 -123.4718477309173,40.07106084980453,545.7135837988396 -123.4719236707672,40.0710392836038,544.633392725607 -123.4719996105688,40.07101771735348,543.222387176603 -123.4720755503221,40.07099615105359,541.6565872708879 -123.4721698945421,40.07098294894415,540.365834309988 -123.4722642387248,40.07096974675804,540.0148658139836 -123.4723558847885,40.0709553745585,540.9316658831168 -123.4724475308129,40.07094100228668,540.9197225129755 -123.4725329070809,40.07093802977659,540.471998945208 -123.4726182833409,40.07093505720361,539.6669178412942 -123.4727036595928,40.07093208456774,539.3225761451621 -123.4727978043541,40.07091280538661,539.095865900385 -123.4728919490615,40.07089352612917,538.8621465019189 -123.4729820383529,40.07088056168693,538.4391493166492 -123.4730721276094,40.07086759717476,537.7325598822258 -123.4731744990809,40.07085248298331,536.8769497497167 -123.4732768705063,40.07083736870161,536.6006644818964 -123.4733792418856,40.07082225432968,536.3784827020212 -123.4734760316948,40.07079036712048,536.166428543905 -123.4735728214131,40.07075847983079,535.9149663787607 -123.4736696110404,40.07072659246055,535.4048468066658 -123.4737569382568,40.0707094398193,535.0644738876724 -123.4738442654289,40.07069228711245,534.7335050830069 -123.4739315925565,40.07067513433999,534.4194233869644 -123.4740161870307,40.07065799268273,534.1337702618935 -123.4741007814619,40.07064085096388,533.7844782028538 -123.4741853758502,40.07062370918349,533.3799038743016 -123.4742645341034,40.07061078848548,532.9788007730032 -123.4743436923263,40.07059786773352,532.5464714522491 -123.4744228505187,40.0705849469276,532.1052621060055 -123.474508883899,40.07057829624246,531.7695361912256 -123.4745949172619,40.07057164549352,531.4552277873286 -123.4746824043518,40.07057758539334,531.0810823159457 -123.4747698914562,40.07058352522701,530.6121581514143 -123.4748573785752,40.07058946499451,530.1768224390821 -123.4749599242066,40.07059954185003,529.7250730747345 -123.4750624698675,40.07060961861458,529.4328232141418 -123.4751650155576,40.07061969528817,529.3160469581154 -123.4752633237469,40.07060984452927,528.995022315635 -123.475361631907,40.07059999368707,528.6750706588149 -123.475459940038,40.07059014276161,528.3211337409313 -123.4755767041762,40.07058179057409,527.8128305801893 -123.4756934682847,40.07057343826901,527.3867829844279 -123.4757753149676,40.07055420716572,527.079642118435 -123.475857161604,40.07053497600482,526.8044972679646 -123.4759430632606,40.07050942979267,526.2926968137452 -123.4760289648525,40.07048388351708,525.5291248878502 -123.4761355362993,40.07048344556591,523.8816765326505 -123.4762421077437,40.0704830075167,521.7203657734423 -123.4763322397067,40.0704763386291,521.8733391965214 -123.4764223716515,40.0704696696715,522.1064720884447 -123.4764889105362,40.07043018888648,520.2211763275269 -123.4765554493438,40.07039070806343,517.619069725651 -123.4766258102847,40.0703441861128,514.0018108475809 -123.4766961711298,40.07029766411966,510.3097934549832 -123.476757288554,40.07024492649902,506.8513299891297 -123.4768184058841,40.07019218884621,503.8027637321471 -123.4768795231199,40.07013945116121,500.4689561565648 -123.4769597976432,40.07009083346401,497.8743482137218 -123.477040072052,40.07004221571144,495.7559903658467 -123.4771203463465,40.0699935979035,492.9691484540784 -123.4772083182552,40.06997119139396,490.7710111926862 -123.4772962901057,40.06994878481788,488.7452446412743 -123.477398465032,40.0699058500595,487.263589189379 -123.4775006398293,40.06986291521142,485.7225985023923 -123.4775494963152,40.06981547631816,483.0435686112859 -123.4775983527334,40.0697680374043,479.9375805890343 -123.4776472090839,40.06972059846986,476.7783586417772 -123.4777125047743,40.06967939006291,474.2064827952713 -123.4777778003859,40.06963818161933,471.653577159418 -123.4778409474717,40.06958281074662,467.3555092232425 -123.4779040944554,40.06952743983959,465.2470841155053 -123.4779838348017,40.06950034294565,463.5988015462191 -123.4780635750844,40.06947324599708,462.7001189420903 -123.4781413649692,40.06946032829755,461.5440032843467 -123.4782191548242,40.06944741054593,459.733133739345 -123.4782969446491,40.0694344927422,459.4675928175168 -123.4783719431412,40.06941318863199,459.4900960654625 -123.4784469415862,40.0693918844734,460.821880051709 -123.478521939984,40.06937058026647,460.7673479755934 -123.4785832020964,40.06933883553127,459.483586474659 -123.4786444641519,40.06930709076384,457.4709662021938 -123.4786768139217,40.0692439737514,455.35257938916 -123.4787091636323,40.0691808567296,453.6556365092924 -123.4787168321932,40.06910524501654,451.5430941556165 -123.478724500738,40.06902963330207,447.6937854695425 -123.4787732345182,40.06896487397247,442.9099356997269 -123.4788219682066,40.06890011462218,439.8680615507454 -123.4789012056843,40.06885989764136,436.9451647989898 -123.4789804430686,40.06881968060662,435.1395722856503 -123.4790596803593,40.06877946351795,432.791900590445 -123.4791459333154,40.06874604055649,430.7587095606878 -123.4792321861866,40.06871261753112,429.5591264076851 -123.479328507839,40.06871221904612,427.7766751016542 -123.4794248294894,40.06871182048108,426.2411168339665 -123.479521151138,40.06871142183593,424.8932826057393 -123.4796174727846,40.06871102311069,423.7930667978387 -123.4797075799681,40.06870120253416,423.2790921117489 -123.4797976871249,40.06869138188769,423.3163057380995 -123.4798792430997,40.06863120990571,422.1897593085844 -123.4799607989309,40.06857103786655,421.1746047827392 -123.479998612182,40.06850789784497,419.532122156378 -123.4800364253638,40.0684447578108,418.1479034212583 -123.4800742384762,40.068381617764,416.4839019022409 -123.4801434311991,40.06831204932072,415.1757717548031 -123.4802126237815,40.06824248083611,413.7160760476124 -123.4802422390983,40.06817937471281,412.4851613001467 -123.4802718543609,40.06811626858156,411.1253220815573 -123.4803014695693,40.0680531624424,410.2698863930445 -123.4803666514621,40.06799620716384,409.19252694624 -123.4804318332464,40.06793925184869,408.0335677782808 -123.4805304539467,40.06797453340537,405.834486785939 -123.480629074748,40.06800981487726,403.9376544283689 -123.4807276956504,40.06804509626441,403.4670792865119 -123.4808341857272,40.06803363224618,402.940641368291 -123.4809406757673,40.06802216813028,402.7040181172167 -123.4809840118718,40.06796740263766,401.6494325816868 -123.4810273479071,40.06791263712873,400.5602092210866 -123.4810706838732,40.06785787160349,399.7704909711189 -123.4811303777973,40.0677977895149,398.6169563368171 -123.4811900716168,40.06773770739554,397.6150069650716 -123.4812497653315,40.0676776252454,395.8451146859768 -123.4813231435285,40.06762063537927,394.6355277844144 -123.4813965216031,40.06756364546682,392.5934758473136 -123.4814659560285,40.06752871607561,391.2443002893585 -123.4815353903826,40.06749378664298,389.9668122559962 -123.4815924398092,40.0674463119792,388.8805103022323 -123.4816494891565,40.06739883728739,387.5645713465634 -123.4817162129922,40.06736706818323,386.4050425149567 -123.4817829367657,40.06733529904085,385.3611323930176 -123.4818496604769,40.06730352986023,383.7648488301892 -123.4819252036288,40.06726306374082,382.0262487370667 -123.4820007466909,40.06722259757239,379.1799345425922 -123.4820762896635,40.06718213135494,377.7991679116031 -123.4821518325464,40.06714166508847,376.5725151188199 -123.4822562049979,40.06712076107159,374.5458535771121 -123.4823605773847,40.06709985696096,372.7528208012225 -123.4824753852826,40.06710567723004,370.5924420898656 -123.482590193199,40.06711149738523,367.9890579868551 -123.4827008579836,40.06711103635205,365.9168630960684 -123.4828115227658,40.06711057521319,365.1685045386657 -123.482897373012,40.06707872571833,364.0964569566783 -123.4829832231778,40.06704687616015,363.1319086739928 -123.4830565992476,40.06698988520242,361.6992446334795 -123.4831299751951,40.06693289419838,359.1857814863843 -123.4832075164521,40.06688533328033,357.5780912274828 -123.483285057601,40.06683777231061,355.9704499834162 -123.4833544235466,40.06679339456588,355.1667732672026 -123.483423789402,40.06674901677982,354.219213421875 -123.4835138043703,40.06672659695505,354.271113963114 -123.4836038192789,40.06670417706061,353.4577030738803 -123.4836895016007,40.06664870891393,348.4370488421449 -123.4837751837833,40.06659324070417,343.7430076276208 -123.4838664012616,40.06654772168005,341.3378621553446 -123.4839576186181,40.06650220258445,339.5568016708267 -123.4840488358527,40.06645668341741,338.0995899571294 -123.4841529442518,40.06643351565487,336.2823490865185 -123.4842570525795,40.06641034779912,334.541988276453 -123.4843395945978,40.066417531394,333.5530169924866 -123.4844221366329,40.06642471492999,332.6605660504263 -123.4845286520321,40.06642238926102,331.1122167095372 -123.4846351674229,40.06642006349416,329.7483209464046 -123.4847044099386,40.0663805759722,328.2573969642465 -123.4847736523741,40.06634108840908,326.4631032700108 -123.4848621944014,40.06629949984327,324.049971977865 -123.4849507363206,40.06625791121014,321.8425596640663 -123.4850392781317,40.06621632250968,319.1444907020821 -123.4851516973515,40.06619161860316,317.3441483637796 -123.485264116489,40.06616691458794,316.291282806034 -123.4853498973499,40.06612561605863,314.9821167700769 -123.4854356781068,40.06608431746614,314.0264716696623 -123.4855214364037,40.06603986973526,312.4770104870629 -123.4856071945887,40.06599542194122,310.6488267731916 -123.4856970289223,40.06594780782611,308.2384727756763 -123.4857868631304,40.06590019364169,306.7398878621574 -123.4858356662888,40.06584645312213,305.1957345463302 -123.4858844693707,40.065792712582,304.2165707460911 -123.4859455682106,40.06573892044722,303.1827132238662 -123.4860066669545,40.06568512828028,302.2781402014883 -123.486102107164,40.06565743507006,301.6932057510058 -123.4861975472956,40.06562974178153,301.2290454546171 -123.4862929873491,40.06560204841469,300.8895210930921 -123.486360367962,40.0655671247068,300.7002960820921 -123.4864277485059,40.06553220095992,300.5778238771006 -123.4864949497774,40.06547208457386,300.063729094235 -123.4865621509309,40.06541196814892,299.5933281472107 -123.4866069441659,40.06537084081896,299.2666745846858 -123.4866517373471,40.06532971347174,298.8895852940543 -123.4866758433466,40.06526138021153,297.6893048173668 -123.4866999492985,40.06519304694579,296.4484745102521 -123.4867240552029,40.06512471367452,295.1633584283153 -123.4867234613212,40.06504126318347,293.4165498312879 -123.4867228674421,40.06495781269124,291.1593652132 -123.4868397213522,40.0649636200472,290.8559698101709 -123.4869565752809,40.06496942728516,290.7617861794669 -123.4870650078357,40.06494377811683,290.1197442589516 -123.4871734403083,40.06491812884741,290.6287027636506 -123.4872551647541,40.06488314429929,290.6181714099325 -123.4873368891159,40.06484815969384,291.5002366003715 -123.4874132309414,40.06482474463019,292.3885178144474 -123.4874895727143,40.06480132951646,293.3061144767884 -123.4875659144344,40.06477791435263,294.3445528719824 -123.4876408300444,40.06474610735611,293.5109145431075 -123.4877157455844,40.06471430031136,291.297915244368 -123.4877906610544,40.06468249321843,288.232011676007 -123.4878738296364,40.0646202093514,283.4443776414366 -123.4879569980668,40.06455792542489,281.0544612832058 -123.4880401663457,40.06449564143892,279.6572036852433 -123.4881352381673,40.06446453650396,279.269057309231 -123.4882303099016,40.0644334314913,278.5839814572114 -123.4883253815489,40.064402326401,277.2732220466381 -123.4884204531091,40.06437122123303,276.6350431296268 -123.4885049311,40.06433937336334,275.9925313339425 -123.4885894090118,40.06430752543236,275.3548556016656 -123.4886738868444,40.06427567744007,274.9932467892521 -123.4887806884688,40.06430881804343,273.0791098238269 -123.4888874901959,40.06434195854752,271.4866413904609 -123.4889942920257,40.06437509895233,270.5764516156881 -123.4890789348855,40.06436634387827,269.3479510055092 -123.489163577723,40.06435758874248,267.5313064231092 -123.4892482205382,40.06434883354497,265.3184975553389 -123.4893340192243,40.06431068115509,261.6704267594245 -123.4894198178143,40.06427252870197,258.6202833781247 -123.4894960080216,40.06422811844293,255.8310716323913 -123.4895721981297,40.06418370813404,252.8361498125677 -123.4896483881386,40.06413929777529,249.0714061307635 -123.4897341863369,40.06410114509057,245.7121273551569 -123.4898199844389,40.06406299234262,243.0724884958694 -123.4899183035326,40.0640562782797,239.5279976358382 -123.4900166226062,40.06404956413346,236.1907456419778 -123.4901132083281,40.06408694561044,233.4734280609226 -123.490209794155,40.06412432700598,231.4933751103185 -123.4903014630391,40.06414283411242,230.4238113273194 -123.4903931319722,40.06416134114598,229.3333417869288 -123.4904848009541,40.06417984810665,228.3751155505515 -123.4905902299019,40.06420048898685,227.4012074693847 -123.4906956589124,40.06422112977067,226.5655304379286 -123.4908010879857,40.0642417704581,226.1602811134369 -123.490895103033,40.06423725538735,225.3703121317986 -123.4909891180672,40.06423274024039,224.4010036187357 -123.4910831330882,40.06422822501721,222.9456358022143 -123.4911467640903,40.06426397563693,222.5820360904364 -123.4912103951588,40.06429972622109,222.0445679212469 -123.4912740262937,40.06433547676968,222.061131111893 -123.4913556869483,40.06432766972774,220.9063114508755 -123.4914373475836,40.06431986262834,219.9948066310963 -123.4915190081997,40.06431205547145,219.2275662120852 -123.4916255616021,40.06428267276493,218.1649201672062 -123.491732114912,40.06425328996082,217.2703640886385 -123.4918149061201,40.06422459600847,216.4571044250766 -123.4918976972581,40.06419590199725,215.923150634321 -123.4919820762359,40.06417428681503,215.867205253181 -123.4920664551597,40.06415267157158,216.1351595867607 -123.4921448052249,40.06414761501632,216.2784404658214 -123.492223155278,40.0641425584081,216.5958482291014 -123.4923032797355,40.06418096305856,214.5364340846572 -123.4923834042827,40.06421936765282,212.9952033864014 -123.4924630331863,40.06424040341224,212.2597276655789 -123.4925426621384,40.06426143911654,211.3216215257092 -123.4926581328795,40.06427544799129,209.7017078606269 -123.4927736036668,40.06428945675066,207.8258015951874 -123.4928531254065,40.06428919541375,207.0449285334408 -123.492932647145,40.06428893402224,206.3829821745468 -123.4930121688823,40.06428867257616,205.7561260419182 -123.4930868302334,40.06428529509736,205.2234543365845 -123.4931614915766,40.06428191757053,204.6483326314029 -123.4932172248574,40.06424448812603,204.3728889123077 -123.4932729580771,40.06420705865486,203.8872825467562 -123.4933523057066,40.06414178506236,205.0039900588747 -123.4934316531847,40.06407651141571,206.5752095790762 -123.4935070293339,40.06405946427429,206.6382267550964 -123.4935824054451,40.064042417084,206.7971170571476 -123.4936577815182,40.06402536984481,207.0303476629362 -123.4937650141091,40.06405797902004,203.6003514393555 -123.4938722468014,40.06409058809518,199.7470828106079 -123.4939510517878,40.0641125279418,197.5438893359615 -123.4940298568242,40.06413446773441,196.2575182575221 -123.4941125293559,40.0641560678705,195.3985289518399 -123.4941952019393,40.06417766794719,195.2808364296211 -123.4942754889211,40.06418813796909,195.4245726755745 -123.494355775927,40.06419860793521,195.8817383178047 -123.4944479737886,40.06419313877699,196.3004290990062 -123.4945401716348,40.06418766954548,197.040071504521 -123.4945977470919,40.06411913548309,195.6102070769521 -123.4946553224339,40.064050601392,194.2755420188085 -123.4946714852673,40.06398384571116,192.4028741549788 -123.4946876480698,40.06391709002747,190.6008211520386 -123.4947038108415,40.06385033434096,188.8642285993207 -123.4947144260425,40.06378630999245,187.7877951403499 -123.4947250412242,40.06372228564239,187.3447289313894 -123.4947985667604,40.06369530871123,186.548780380255 -123.4948720922382,40.06366833173365,185.4366864576673 -123.4949456176577,40.06364135470962,184.3185247071497 -123.4950064436563,40.06360081329272,184.0040384189634 -123.4950672695826,40.06356027184403,183.149301645424 -123.4951280954367,40.06351973036358,183.1875756712876 -123.4951939383984,40.06346065216888,182.3099452739387 -123.4952597812464,40.06340157393684,181.9156051214604 -123.4953347407575,40.06337743157489,181.9459613023784 -123.4954097002154,40.06335328916465,182.2939212186433 -123.4954846596199,40.06332914670614,183.1039917660966 -123.4955675865241,40.063298950151,183.6728187344974 -123.4956505133545,40.06326875353679,184.1173741266247 -123.4957102400113,40.06321479289097,182.8052386633031 -123.4957699665739,40.06316083221442,181.5502894761335 -123.4958489572823,40.06311047944866,180.9819877539481 -123.4959279478741,40.06306012662932,180.6249315263456 -123.4960032099632,40.0630170637654,180.2859034424317 -123.4960784719573,40.06297400085286,180.642463497313 -123.4961537338565,40.06293093789169,180.9608413488493 -123.496225702958,40.06288928759211,181.2223704045436 -123.4962976719717,40.06284763724808,181.1614097458925 -123.4963696408976,40.06280598685957,180.3001477199789 -123.4964462383491,40.06274200613414,177.6845166129597 -123.4965228356573,40.0626780253582,176.0692626882713 -123.4965489720398,40.06261300655169,174.4405332762884 -123.4965751083731,40.06254798773885,173.1109990755821 -123.4966012446573,40.06248296891967,171.9464757111218 -123.4966529024553,40.06240939814162,170.0876574714117 -123.4967045601429,40.06233582734028,167.6926290187641 -123.4967562177199,40.06226225651567,165.1334982989953 -123.4968412261945,40.06220532739679,163.2621680582201 -123.4969262345275,40.06214839821582,161.5968785086 -123.4970112427188,40.06209146897279,159.6497176462593 -123.4970874408476,40.06203424248058,157.4440574350844 -123.4971636388488,40.0619770159385,154.9998280884517 -123.4972398367225,40.0619197893465,152.4983633789631 -123.4973100520489,40.06187548372931,150.6236502235151 -123.4973802672842,40.06183117806975,148.9364208695957 -123.4974504824284,40.06178687236788,147.7286964855298 -123.4975053870646,40.06174184670238,146.9917898298312 -123.4975602916286,40.06169682101097,147.1441752833649 -123.4976151961203,40.06165179529361,147.2951688139762 -123.4976924739463,40.06160112709141,147.3401235645063 -123.4977697516575,40.06155045883794,146.4578357652691 -123.4978470292542,40.06149979053316,143.0768282856652 -123.4979359289366,40.06149362009078,138.2351929911278 -123.4980248286024,40.06148744958027,133.5622127685516 -123.4981137282513,40.0614812790016,129.5480431049787 -123.4982175929858,40.06145433612301,125.2291741614556 -123.4983214576376,40.06142739315169,122.1011562983547 -123.4983965582177,40.06140801561756,120.1862502179266 -123.4984716587548,40.06138863803497,118.162133177164 -123.4985467592488,40.06136926040388,116.4665554287534 -123.4986597629417,40.06136768112717,113.773901828118 -123.4987727666282,40.06136610174026,111.8489523845798 -123.4988225509579,40.06128713419823,110.4192353244945 -123.4988723351733,40.06120816663442,110.3177969008699 -123.4989221192746,40.06112919904883,110.1553229782793 -123.4989051454426,40.06104967686039,110.2626437604436 -123.498888171651,40.06097015466812,110.2228750699927 -123.4988711978998,40.06089063247204,110.1014471335496 -123.4988736859857,40.06081031790878,110.0129534194219 -123.4988761740668,40.06073000334438,109.9753668627506 -123.4988848784917,40.06065910952315,110.0165993913959 -123.4988935828993,40.06058821570052,110.0476423258597 -123.4989022356124,40.06051023646479,110.0695148206095 -123.4989108883067,40.06043225722748,110.0891238578588 -123.4989042413318,40.0603637913856,110.103610921722 -123.498897594371,40.06029532554246,110.1138857976103 -123.4988325642534,40.06022947296473,110.0741775587222 -123.4987675342614,40.06016362034897,110.0675450983316 -123.4987465377898,40.06009442897583,110.1434910787218 -123.4987255413614,40.06002523759783,110.1265311491499 -123.4987045449761,40.05995604621491,110.0775553479575 -123.4987254237127,40.05986856684312,110.0154200958684 -123.498746302397,40.0597810874666,110.0046850795521 -123.4987765398393,40.05971246282238,110.0331850732683 -123.4988067772216,40.05964383816981,110.0604788778116 -123.4988000012734,40.05955765877923,110.0570455028377 -123.4987932253434,40.05947147938686,110.0545308111026 -123.498788650663,40.05940615377631,110.0533345052025 -123.4987840759921,40.05934082816481,110.044620804418 -123.4987795013305,40.05927550255233,110.0416846237992 -123.4987646180066,40.05920156109636,110.0328816736429 -123.4987497347157,40.05912761963732,110.0060580278509 -123.4987348514578,40.05905367817523,110.0530525952434 -123.4987077769455,40.05899396046005,110.0710592702486 -123.4986807024809,40.05893424273764,110.0820237968789 -123.4986536280641,40.05887452500799,110.0864296175156 -123.498628470806,40.05879669128299,110.0608581578638 -123.4986033136059,40.05871885755114,110.0311129596858 -123.4985843668481,40.05864965730925,110.031184691161 -123.4985654201294,40.0585804570632,110.0455934987441 -123.4985464734497,40.05851125681298,110.059478770707 -123.4985106405173,40.0584446879197,110.0803695588089 -123.4984748076551,40.05837811901412,110.0653638013644 -123.4984389748633,40.05831155009628,110.0428231491437 -123.4984031421417,40.05824498116618,110.0580706729809 -123.4983687525249,40.05816553377574,110.0748423920113 -123.4983343629888,40.05808608637351,110.0730215478049 -123.4982999735335,40.0580066389595,110.0797408888251 -123.4982640757414,40.05793109512143,110.0917689136487 -123.4982281780294,40.05785555127077,110.0966951541647 -123.4981769476789,40.05778491518955,110.0706242804114 -123.4981257174346,40.05771427908419,110.0820568816783 -123.4980873225783,40.05764752424084,110.0600885215872 -123.4980489277974,40.05758076938353,110.0542714505354 -123.498010533092,40.05751401451229,110.0615439839558 -123.4979854229263,40.05744247876979,110.0661137087892 -123.4979603128138,40.05737094302065,110.07058641573 -123.4979352027546,40.05729940726489,110.0812645151984 -123.4978609385352,40.05723123190714,110.0687732979301 -123.497786674464,40.05716305650012,110.1075174050246 -123.4977208415464,40.0571271238454,110.1298507870306 -123.4976550086977,40.05709119115258,110.1286201770362 -123.497589175918,40.05705525842175,110.1305003997835 -123.4975058290317,40.05700601687668,110.0682889303438 -123.4974224822653,40.05695677527051,110.0612847519548 -123.4973268757308,40.05691230998877,110.0562937182952 -123.49723126932,40.05686784462702,110.0601293751095 -123.4971613961169,40.05683980192329,110.0456633082556 -123.4970915229708,40.05681175917692,110.0636995444505 -123.4970216498816,40.05678371638793,110.0577937806614 -123.4969497220975,40.05675489507643,110.0246763871548 -123.4968777943737,40.05672607371976,110.0436650312502 -123.4968058667101,40.05669725231792,109.9919759500754 -123.4967481794275,40.05665419853779,110.0641253775182 -123.4966904922175,40.05661114472815,110.0103047745293 -123.4966328050801,40.05656809088903,110.0949729016863 -123.4965699668778,40.05652112263174,110.049249265359 -123.4965071287618,40.05647415433943,110.1110901971273 -123.496444290732,40.05642718601217,110.0660207102653 -123.4963712419493,40.05638498515587,110.0963901137713 -123.4962981932566,40.05634278425264,110.0657050700658 -123.4962251446537,40.05630058330252,110.0681803904971 -123.4961492053127,40.05628358807125,110.095921957038 -123.4960732660089,40.05626659278991,110.0972643273557 -123.4959973267424,40.05624959745851,110.1061851275797 -123.4959262931997,40.05620266393223,110.119828339723 -123.4958552597543,40.05615573036142,110.0689308284181 -123.4957597865617,40.05612937095284,110.1197720003204 -123.4956643134419,40.05610301146498,110.1354902985316 -123.495568840395,40.0560766518979,110.0923433336517 -123.4954642266846,40.05606135344848,110.1732137066434 -123.4953596130201,40.05604605490428,110.2783553106063 -123.4952549994014,40.05603075626528,110.4127425364391 -123.4951809229914,40.05598796857613,110.2587998221381 -123.4951068466738,40.05594518083876,110.3909382553581 -123.4950327704487,40.05590239305312,110.1988356581612 -123.494958694316,40.05585960521925,110.371153287296 -123.4948861193829,40.05579771906015,110.0663558229768 -123.4948135445811,40.05573583285413,110.0479175692027 -123.4947409699108,40.05567394660118,110.0248771114276 -123.494628172375,40.05567442820887,110.1895083723987 -123.4945153748365,40.05567490970677,110.6006450822713 -123.4944392204012,40.05562799711808,110.0451678956901 -123.4943630660701,40.05558108447833,110.2010815763091 -123.4942869118434,40.0555341717875,109.9681447719233 -123.4942107008518,40.05547938635351,110.0351883272666 -123.4941344899822,40.05542460086814,109.9864081518102 -123.4940582792346,40.05536981533135,110.0263890574409 -123.4939741341159,40.05535127907301,110.0049045856919 -123.4938899890422,40.05533274275322,110.8901529221232 -123.4938058440135,40.05531420637199,112.1414650243946 -123.4937057170943,40.05528156674967,113.9137155016743 -123.4936055902699,40.05524892704007,115.3095720453972 -123.4935061007197,40.05523360498647,116.2382214918709 -123.4934066112133,40.05521828284712,116.7823668679078 -123.4933071217506,40.05520296062203,117.2493966258252 -123.4932262661863,40.05521432696703,118.3183989953973 -123.4931454105945,40.05522569325573,119.2866328279448 -123.4930645549754,40.05523705948816,120.410735591847 -123.4929962315259,40.05528143866735,121.4927238122483 -123.4929279079878,40.05532581780646,123.1799887501331 -123.4928595843608,40.05537019690544,125.4821400040835 -123.4928293768677,40.05544354369737,129.1739566272441 -123.4927991693106,40.05551689048085,131.9518697256648 -123.4927606352754,40.05557216491881,134.1385091975097 -123.4927221011782,40.0556274393438,137.0314882653635 -123.4926835670191,40.05568271375581,140.5912773675131 -123.4926163750836,40.05574204647304,145.0821071414608 -123.4925491830317,40.0558013791514,147.0404141912971 -123.4924896066366,40.05585123189715,147.2428467593738 -123.4924300301547,40.05590108461235,147.0263742081727 -123.4923736120899,40.0559627332759,146.1853143266585 -123.4923171939236,40.05602438191194,145.5885894328459 -123.4922715584739,40.05608952752683,146.3058881956269 -123.4922259229379,40.05615467312354,146.711607123815 -123.4921804062529,40.05623635135837,147.3264507405654 -123.49213488946,40.05631802957481,148.3740456641351 -123.4920582719783,40.05634905943801,149.0118164320086 -123.4919816544267,40.05638008925076,149.961318027459 -123.4918987368987,40.05638988883884,151.6790505420328 -123.4918158193462,40.05639968836772,153.7752155619289 -123.4917414125191,40.05643897521784,155.3889954543925 -123.4916670056062,40.05647826202043,157.8330253976259 -123.4915862896754,40.05650930896358,159.9933056079792 -123.4915055736708,40.05654035585076,161.454073922184 -123.4914248575926,40.05657140268199,163.3167212859478 -123.4913308227431,40.05660250593915,164.678804149946 -123.4912367878074,40.05663360912034,165.5011709669107 -123.4911427527857,40.05666471222556,168.1719627980268 -123.4910713248561,40.05670516695681,169.0562173199032 -123.4909998968417,40.05674562164425,170.2117346125624 -123.4909284687428,40.05678607628787,172.320686398857 -123.4908611555795,40.05682887533377,174.3478934219782 -123.4907938423319,40.05687167434074,177.3669976929322 -123.4907100237423,40.05689879734924,179.2499116081131 -123.4906262050858,40.05692592029739,180.8223023749968 -123.4905423863622,40.05695304318514,182.7493079562892 -123.4904565636818,40.05698647284216,185.1090875038053 -123.490370740917,40.05701990243591,187.9457979021695 -123.4903081898656,40.05708393792423,188.6127703543158 -123.4902456386974,40.05714797337876,188.8806023861774 -123.4901830874123,40.0572120087995,189.9878290007763 -123.4901205360103,40.05727604418649,192.390914661848 -123.49005832757,40.05731645928948,193.9730784357372 -123.489996119056,40.0573568743592,194.3693062548512 -123.4899339104684,40.0573972893957,196.3210869115884 -123.4898481912173,40.05744528308954,198.8883683037803 -123.4897624718455,40.05749327672028,201.3363476174515 -123.4896767523532,40.05754127028792,202.4226851055374 -123.4896124858967,40.05758051290879,204.2050192327694 -123.4895482193664,40.05761975549418,206.3290340789299 -123.4894839527623,40.0576589980441,208.4896862702332 -123.4893959669721,40.05767669018725,211.4102549707384 -123.4893079811357,40.05769438226378,214.5499117029277 -123.4892199952532,40.05771207427372,217.3968859090834 -123.4891361524859,40.05773604707157,220.0208476335513 -123.4890523096593,40.057760019809,222.6835178227836 -123.4889684667734,40.05778399248602,224.3965814543809 -123.4889206850589,40.05783615548831,224.4942671971841 -123.4888729032718,40.05788831847089,224.5443060324056 -123.488825121412,40.05794048143372,225.1424798801518 -123.4887502905069,40.05800692976435,226.2682814537473 -123.4886754594567,40.05807337804678,227.9293156450869 -123.4885805148142,40.05812101606456,230.3125846778347 -123.488485570039,40.05816865400493,232.4324121105523 -123.4884090387444,40.05821227777955,234.0412575079786 -123.4883325073519,40.05825590150388,235.6899646803374 -123.4882559758616,40.05829952517791,238.267402632984 -123.4882122970306,40.05835245788757,239.2625828586797 -123.4881686181323,40.05840539058074,240.2088054678941 -123.4881249391667,40.05845832325732,241.5289801110471 -123.4880761374124,40.05851127749796,242.4770619944647 -123.4880273355827,40.05856423171799,243.6786350589698 -123.4879785336776,40.05861718591743,244.5739414603326 -123.4879338411145,40.05867169737601,245.5482349952343 -123.4878891484805,40.05872620881726,246.664097410556 -123.4878444557755,40.05878072024115,248.6202200871279 -123.4878141908975,40.05884698029797,250.2782484490364 -123.4877839259615,40.05891324034647,251.8962857835898 -123.4877536609673,40.05897950038666,253.2097339012738 -123.4877111293994,40.059059336002,254.4253692322924 -123.487668597733,40.05913917160122,255.0970608792089 -123.4876260659681,40.05921900718431,255.6411845662348 -123.4875599846462,40.05928512048838,256.4317695377463 -123.4874939031968,40.05935123375475,257.7095857555568 -123.4874278216199,40.05941734698347,259.9735853919547 -123.487384585794,40.05948471121574,262.1283211580472 -123.4873413498834,40.05955207543158,264.0654487484459 -123.4872871254183,40.0596110880556,265.7158272800381 -123.4872329008599,40.05967010065418,267.3380509654846 -123.4871896048765,40.059729067272,269.0779638931095 -123.4871463088188,40.05978803387348,271.5087738888292 -123.4871030126868,40.05984700045862,274.1033946269102 -123.4870597164805,40.05990596702742,276.6931110512273 -123.487049296005,40.05997739206713,279.2740879185291 -123.4870388755084,40.06004881710513,281.1987635256156 -123.4870503423485,40.06012434902759,282.5390298984426 -123.4870618092149,40.06019988094776,283.4881042556372 -123.4870051818569,40.06026546431102,284.8548561328377 -123.4869485543908,40.06033104764645,285.9171857344313 -123.4868658834728,40.0603762707821,287.3579637387016 -123.4867832124452,40.06042149385904,288.9613297242491 -123.4867067055552,40.06046905286075,289.9199926418331 -123.4866301985587,40.06051661181217,289.7897257800404 -123.4865473760122,40.06054057844739,290.6247339867584 -123.4864645534072,40.06056454502369,291.8119779177881 -123.4863612504257,40.06059017210391,293.0869909871658 -123.486257947366,40.06061579909236,294.1922274704393 -123.486154644228,40.06064142598905,295.3305365832973 -123.486063535239,40.06065283036244,296.5810102876694 -123.4859724262189,40.06066423466437,298.2949406383136 -123.4858813171678,40.06067563889479,300.5358187944301 -123.4857892058725,40.06069019642775,303.4036024943079 -123.4856970945372,40.06070475388769,305.4175605739455 -123.4855959463934,40.06074532981788,306.2614994443632 -123.4854947981288,40.06078590566021,306.6622835467791 -123.485384311215,40.06080998738754,307.0954890815106 -123.4852738242225,40.06083406900984,307.4879750443637 -123.4851816790756,40.06084390244421,308.0569616991304 -123.4850895339014,40.06085373580542,308.8493169621523 -123.4850159818583,40.06088474816669,309.3831320953231 -123.484942429748,40.06091576048148,309.9636773330475 -123.4848334960371,40.06094219706116,310.9510465426789 -123.4847245622411,40.0609686335388,311.9165333132648 -123.4846280237432,40.06100918933772,312.8336604621256 -123.4845314851301,40.06104974505659,313.7857048764743 -123.4844426475049,40.061092630373,314.426309295437 -123.4843538097678,40.06113551562163,315.1619554590615 -123.4842760751404,40.06115473560499,315.8219264426512 -123.484198340469,40.06117395553643,316.5791796325526 -123.4841206057533,40.06119317541589,317.5934251153819 -123.4840163654719,40.06123140100858,319.1920345244156 -123.4839121250732,40.06126962650792,321.1155157033008 -123.4838078845573,40.06130785191392,323.430488289556 -123.4837436195356,40.06134827219923,324.9866067928989 -123.4836793544379,40.06138869244904,326.5417037197039 -123.4835812834038,40.0614300410658,328.8260613411762 -123.4834832122506,40.06147138959995,331.0659394706178 -123.4833851409782,40.06151273805149,333.3804707662594 -123.4832786169961,40.0615179062075,335.8203790810396 -123.4831720929969,40.06152307426562,338.4364449724734 -123.4830655689806,40.0615282422259,340.7845884031003 -123.4829881608163,40.06153944131569,342.2194794416752 -123.4829107526261,40.06155064035385,343.4138430787037 -123.4828545231593,40.06159898765179,344.87577211547 -123.482798293613,40.06164733492251,346.3476235964829 -123.4827420639873,40.061695682166,347.6068605439426 -123.4826620533952,40.06173981488337,349.2449451135469 -123.4825820426995,40.06178394754575,350.8497207062782 -123.4825020319004,40.06182808015316,352.5052231696868 -123.4824264463644,40.06185676495787,353.9031020263288 -123.4823508607647,40.0618854497135,355.1704464575116 -123.4822811152995,40.06191560326889,356.2323800094966 -123.4822113697727,40.06194575678249,357.2083973905803 -123.482141624184,40.06197591025431,358.149436882796 -123.4820564589975,40.06202404576364,359.3760441148816 -123.4819712936908,40.06207218121066,360.6206538487987 -123.4819017161782,40.06212622439869,361.5319823991629 -123.4818321385557,40.06218026754507,362.3191437397284 -123.4817508067802,40.06222092108612,363.3077871206933 -123.4816694749078,40.06226157457036,364.3739039841043 -123.4815823657968,40.06230971781179,365.7689531688268 -123.4814952565629,40.06235786098807,367.2465726260849 -123.4814242217504,40.06238901482512,368.2846071694214 -123.4813531868729,40.06242016861881,369.3242049955008 -123.4812821519304,40.06245132236919,370.3691427098963 -123.4811852945892,40.06249502632677,371.8103954657971 -123.4810884371236,40.06253873020381,373.5893351869328 -123.4810149159491,40.0625848257133,374.9851513759521 -123.4809413946754,40.06263092117631,376.5307201773777 -123.4808678733025,40.06267701659291,378.146989119418 -123.4807814318347,40.06272814277928,379.9791488044696 -123.4806949902374,40.06277926890145,381.6716510138209 -123.4806085485106,40.06283039495943,383.2101407266985 -123.4805310422901,40.06286257053316,384.5244149651512 -123.4804535359964,40.06289474605531,385.6283847669732 -123.4803760296294,40.06292692152584,386.6431603557437 -123.4802700538309,40.06294527880727,388.0043592399271 -123.4801640779746,40.06296363599203,389.2442799463416 -123.4800992437434,40.06293702780258,390.3886691771756 -123.4800344095625,40.06291041957643,391.6715484209616 -123.4799788296191,40.06298239716656,391.6495214733068 -123.4799232495593,40.06305437472983,391.9327991121431 -123.4798676693829,40.06312635226623,392.9975585583995 -123.4797856560309,40.06312039359109,395.0513575343488 -123.4797036426926,40.06311443485782,397.6639832514562 -123.479621629368,40.06310847606639,399.5048170488407 -123.4795272427214,40.06313826786538,400.7676716914457 -123.479432855992,40.06316805958779,401.5909768704632 -123.4794188307238,40.06310734240542,402.5378517169876 -123.479404805481,40.06304662522056,403.4976187687342 -123.4793788723811,40.06298514873942,404.6799888062998 -123.4793529393284,40.06292367225154,405.8987454878198 -123.4793270063228,40.06286219575692,407.1594358785861 -123.4792854481654,40.06278048923851,409.3631818418813 -123.4792438901082,40.06269878270346,411.8783018633069 -123.4792306883456,40.06263445425704,413.2818275879121 -123.4792174866084,40.06257012580828,414.6004533342236 -123.4792042848967,40.06250579735713,415.9601316585436 -123.4792152182654,40.06242874756893,416.8180912890895 -123.4792261516104,40.06235169777882,417.4814416065814 -123.4792370849316,40.0622746479868,417.9618118612442 -123.4791420405093,40.06226906845801,420.4177998982917 -123.4790469961017,40.06226348885115,422.7236371146393 -123.4789519517089,40.06225790916624,424.8641191218764 -123.478859916202,40.0622503260868,426.9480201576591 -123.4787678807148,40.06224274293412,429.4465149249737 -123.4786758452472,40.06223515970819,432.2068410060477 -123.4785629914375,40.0622147216838,435.6506894189174 -123.4784501376941,40.06219428354899,438.9881145328589 -123.4783622745358,40.06213491995884,441.798238807555 -123.4782744115298,40.06207555630055,445.0705559816701 -123.4781866113063,40.06202515127664,448.69304941542 -123.4780988112119,40.06197474618498,451.7687766625635 -123.4780160571321,40.06195119709026,453.8479781879518 -123.4779333031087,40.06192764793597,455.5921696601628 -123.4778505491418,40.06190409872215,457.4287435927155 -123.4777677952314,40.06188054944879,459.2768187239282 -123.477658745303,40.06184814957245,461.6948682946987 -123.4775496954769,40.06181574959265,463.9948835906212 -123.4774729702375,40.06177425733504,465.7211541115786 -123.4773962450909,40.06173276502575,467.3066948586451 -123.4773195200372,40.06169127266485,468.8799734768077 -123.4772454832646,40.06166370534167,470.3733566696013 -123.4771714465513,40.06163613797072,471.9881314105602 -123.4770974098974,40.06160857055195,473.6554283314252 -123.477001921574,40.06157014156565,475.8833235288047 -123.4769064333574,40.06153171249977,478.6186324581553 -123.4768194005323,40.06149822575714,481.7356380567322 -123.4767323677919,40.06146473894847,485.2453060809765 -123.4766453351362,40.06143125207375,488.3934827879443 -123.4765750743702,40.06138774174082,490.258723332084 -123.4765048136934,40.06134423136446,491.5122473167937 -123.4764345531058,40.06130072094463,492.7360867956795 -123.4763682483432,40.06126714861952,493.8212646835152 -123.4763019436454,40.06123357625586,494.8667503440411 -123.4762356390125,40.06120000385369,495.9354961281032 -123.4761301695449,40.06116190877419,497.2056317230191 -123.476024700194,40.06112381359773,498.6031450559439 -123.4760090069937,40.06119368893551,498.0830289698094 -123.4759933137619,40.0612635642705,497.7733407109654 -123.4760301331389,40.06131939827692,496.8313973997791 -123.4760669525763,40.06137523227074,495.5507334014513 -123.4761037720742,40.06143106625197,493.6968364134223 -123.476158928363,40.06150432026031,490.3492343314638 -123.4762140847704,40.06157757424077,488.1996326557547 -123.4762982342184,40.06162901470805,485.6904184798051 -123.4763823837927,40.06168045511299,482.3115845480362 -123.4764665334934,40.06173189545561,478.3665041725496 -123.4765024915098,40.06179473100846,476.2143696996307 -123.4765384495926,40.06185756654907,474.6390936822044 -123.4765525204178,40.0619162932131,474.8093717459939 -123.4765665912677,40.06197501987472,475.547251806134 -123.4766489102084,40.06202506798019,473.3216670228509 -123.4767312292694,40.0620751160261,470.5934051057615 -123.4768026193827,40.06212520899115,467.4962535816127 -123.4768740096006,40.06217530191118,464.0392620716623 -123.4769290794888,40.06223595921022,462.2891373452193 -123.4769841494751,40.06229661648185,460.138812339181 -123.4770556132161,40.06235720622372,456.2422731184331 -123.4771270770838,40.06241779592013,452.022285308897 -123.4771748271364,40.06247358453283,449.8126438184017 -123.477222577267,40.06252937312487,446.5004715983443 -123.4772703274758,40.06258516169623,442.9030910956532 -123.4773145128481,40.06265216198784,439.3991904606414 -123.4773586983074,40.06271916226129,437.0032828664413 -123.4773809668989,40.06277785503706,433.8877616932415 -123.4774032355291,40.0628365478077,430.2488125718163 -123.4774254748902,40.06289104179908,427.9514068654182 -123.4774477142871,40.06294553578545,426.5221263464264 -123.4774955431383,40.06301252098805,425.7711831814595 -123.4775433720836,40.0630795061696,425.0214528388282 -123.477591201123,40.06314649133008,422.6665520990238 -123.4776390009354,40.06320927769568,419.9452729702271 -123.477686800836,40.06327206404034,416.5300875451457 -123.4777346008247,40.06333485036411,414.9976170132219 -123.477818616696,40.06336669541527,414.3048911761289 -123.477902632645,40.06339854040483,414.6031500171123 -123.4779866486718,40.06343038533285,414.6775329965432 -123.4780986737344,40.0634299230939,414.942805803364 -123.4782106987945,40.06342946074664,414.7022196043902 -123.478295341944,40.06342071354854,414.329188215848 -123.4783799850713,40.06341196628874,413.9316273192312 -123.4784904296318,40.06343021521628,413.1384380304127 -123.4786008742503,40.06344846403809,412.2996903532988 -123.4785528002837,40.06350988144797,412.962444633543 -123.4785047262311,40.06357129883772,413.6655975868706 -123.4784704550823,40.06363018968133,414.3805551266772 -123.4784361838748,40.06368908051454,415.2259335651734 -123.4784019126087,40.06374797133738,415.9608002394149 -123.478315647615,40.06375243439334,415.9691236988692 -123.4782293826093,40.06375689738514,416.0330317474304 -123.4781421241138,40.06378245090603,416.5679477300175 -123.4780548655526,40.06380800436145,417.3770408045007 -123.4779457482475,40.06383364792887,419.0854535679607 -123.4778366308598,40.06385929139391,421.0010802525367 -123.4777494307416,40.06389324216665,423.8011615874179 -123.4776622305365,40.06392719287405,426.1260193429379 -123.4775747957003,40.0639275533295,427.0287289933621 -123.4774873608624,40.06392791371898,427.910900970635 -123.4773999260231,40.06392827404249,428.8900591866529 -123.4773125302513,40.06393423266468,430.5582243753309 -123.4772251344637,40.06394019122101,432.7334539890092 -123.4771377386601,40.0639461497115,435.3883705173188 -123.4770491133376,40.0639717080385,437.2245384299296 -123.4769604879482,40.063997266298,438.7403804873073 -123.476871862492,40.06402282448996,440.8476753409776 -123.476783236969,40.0640483826144,443.7735096462234 -123.4766941754978,40.06407674172758,446.6763306110041 -123.4766051139521,40.06410510077259,448.5762452799035 -123.476516052332,40.06413345974941,449.6126755391015 -123.4764122231334,40.06413388675755,450.6949901960862 -123.4763083939325,40.06413431367264,452.0269773286763 -123.4762100099348,40.06413191885001,453.8826384680069 -123.4761116259431,40.06412952394379,456.4205200227571 -123.4760132419575,40.06412712895397,458.8491787020583 -123.4759294304963,40.06412467401778,460.4965757202101 -123.4758456190406,40.06412221902092,461.571300733009 -123.4757618075903,40.06411976396339,462.3390231911161 -123.4756661754423,40.06412015664106,463.3019992969088 -123.4755705432926,40.06412054923978,464.5351996657677 -123.4754749111409,40.06412094175956,466.2905871782177 -123.4753792789874,40.06412133420043,469.4652310395965 -123.4752990717765,40.06411326549326,472.0731540877774 -123.475218864584,40.06410519673045,474.175003511634 -123.4751386574099,40.06409712791196,475.6875038372292 -123.4750510765083,40.06407649259037,478.973484981069 -123.4749634956589,40.06405585720218,482.5844303985144 -123.4748867762141,40.06402537980713,485.7633790779025 -123.4748100568372,40.0639949023607,488.3041743157409 -123.4747333375285,40.06396442486292,490.9905375204568 -123.4746583912827,40.06392694189233,493.8105344656159 -123.4745834451189,40.0638894588725,496.5347634318488 -123.474508499037,40.0638519758035,498.9606704324057 -123.4744342745025,40.0637871969158,501.9716343416276 -123.4743600501088,40.063722417979,505.4005191512505 -123.4742960530639,40.06368768920352,507.7819335319367 -123.4742320560837,40.06365296039209,509.7013315546299 -123.4741680591684,40.06361823154474,511.6058243915167 -123.4741075890006,40.06356669265019,513.9399554405112 -123.4740471189239,40.0635151537231,516.5194981108111 -123.4739866489385,40.06346361476346,519.0558699070177 -123.4739496942755,40.06338818583759,522.0947849453149 -123.4739127396948,40.06331275689847,525.111292975539 -123.4738757851963,40.06323732794611,528.3780186369618 -123.4738588386276,40.06315761825317,531.752308975067 -123.4738418920993,40.06307790855644,534.9343161341009 -123.4738068853817,40.06302066682514,537.3886033885241 -123.4737718787231,40.06296342508234,539.9618767414181 -123.4737368721235,40.06290618332807,542.5406469686786 -123.4736817705815,40.06284062593278,545.7580077618214 -123.4736266691456,40.06277506850991,548.8554545707716 -123.4735715678157,40.06270951105947,551.6366349274979 -123.4735256420472,40.06265371350284,553.8711542301146 -123.4734797163539,40.06259791592704,556.1926837340842 -123.4734337907359,40.06254211833206,558.2200892943411 -123.4733951028472,40.06247929298513,560.2773998465397 -123.4733564150299,40.0624164676242,562.8131539684616 -123.473339585504,40.06235355294762,565.9777379635983 -123.4733227560095,40.06229063826773,569.5615029350037 -123.473300403894,40.06221934835433,573.4660795716115 -123.4732780518257,40.06214805843544,576.4109378250542 -123.4732556417029,40.06206837095648,579.4504857382165 -123.4732332316332,40.06198868347178,582.3391749571781 -123.4732108216166,40.06190899598133,585.1937800198149 -123.4731503246447,40.06185325778148,586.7476229914599 -123.4730898277715,40.0617975195489,588.4028928942789 -123.473029330997,40.06174178128362,590.1239349831382 -123.4729670031431,40.06168465082908,592.2673344062441 -123.4729046753934,40.06162752033983,594.4362789181702 -123.4728423477479,40.06157038981591,596.4869409679427 -123.4728063061345,40.0614949567704,598.9519314452069 -123.4727702646013,40.06141952371222,600.8944080266155 -123.4727334671659,40.06136648784108,602.1083010042908 -123.4726966697877,40.06131345195744,603.2950416838553 -123.472659872467,40.06126041606128,604.4652234742614 -123.4725957625537,40.06120889120016,605.5994956547881 -123.4725316527371,40.06115736630255,606.5823516381533 -123.4724675430171,40.06110584136841,607.6531555470057 -123.472432557804,40.06105139837555,608.554861542908 -123.4723975726469,40.06099695537127,609.7061686199365 -123.4723625875459,40.06094251235562,611.2233888999219 -123.4723074792513,40.06087555467477,614.0703064368058 -123.4722523710649,40.06080859696632,617.9669203722004 -123.4722409494157,40.06073726227269,620.8470520828413 -123.4722295277912,40.06066592757692,622.3793476815435 -123.4722852799629,40.06060260058092,620.6235850027059 -123.4723410320317,40.06053927355799,616.9932019538251 -123.472254087455,40.06054499450949,618.6370046056961 -123.4721671428631,40.06055071539583,619.9598620993112 -123.472080198256,40.06055643621699,620.172880085476 -123.4719942971883,40.06056910478029,620.7003887630624 -123.4719083960881,40.06058177328006,623.9497787776054 -123.4718327507684,40.06060223904364,630.2966548747939 -123.471757105403,40.06062270475802,630.563252054164 -123.471674602199,40.0606349859584,630.6510586872569 -123.4715920989648,40.0606472671002,630.4380988891295 -123.4715095957004,40.06065954818339,631.8377755084441 -123.4714309633529,40.06066957371571,632.854909838768 -123.4713523309819,40.06067959919477,633.6242952773063 -123.4712736985873,40.06068962462057,634.1221192321283 -123.4711645637378,40.06071470565134,634.4555539867456 -123.4710554288074,40.06073978657961,634.686698472304 -123.4709506814027,40.06076708931139,635.0059543343039 -123.4708459339136,40.06079439194879,635.4382759639275 -123.4707397058236,40.06081834089567,636.096270804926 -123.4706334776584,40.06084228974547,637.3105261404795 -123.470572344009,40.06085373677162,638.5913008804799 -123.4705112103389,40.06086518376561,640.1129731311695 -123.470413262923,40.06090372612304,643.1178687950946 + + + + + + + -123.4610393663465,40.06599701533751,700.0096160721826 -123.4610177649926,40.06602219216235,701.1624451917689 -123.4609816311646,40.06604463893494,703.0766325841889 -123.4609382592663,40.06606990236782,704.6111758803156 -123.4609094573773,40.0661034714416,705.3438122410652 -123.4608697889817,40.06613987160972,706.550481651044 -123.4608117905847,40.06614846593636,708.013532910101 -123.4607899824847,40.06614297692939,708.5109805909377 -123.460742568843,40.06610692314135,709.5066586680998 -123.4606952867059,40.06609038392722,710.09790238891 -123.4606079042323,40.06604612539259,710.9429297662912 -123.460560584622,40.06602401052452,711.3906841803782 -123.4604914570124,40.06599640657314,712.2304390932107 -123.4604332897711,40.06597991051682,713.4930111604926 -123.4603751225577,40.06596341443108,714.9369960470945 -123.460316955372,40.06594691831591,716.3582401849006 -123.4602443120917,40.0659360554284,718.0003813529568 -123.4601644120125,40.06592522131919,719.3600773641645 -123.460113501729,40.06590869627735,720.3943075337446 -123.4600662011256,40.0658893690049,721.4805706456725 -123.4599933141887,40.06584226456597,723.7175021546958 -123.459934978464,40.06580067806175,725.7950037649941 -123.4598584445651,40.0657508001412,728.8090802749434 -123.4597783198617,40.06570651216806,731.6900060988892 -123.4596910134199,40.06567340413163,733.9206773481008 -123.4596218865121,40.06564579965572,735.736721935917 -123.4595272110458,40.06559599348515,738.6646885434857 -123.4594690069161,40.06557392134064,740.4529439677793 -123.4593925485124,40.06553519430651,742.7456801907622 -123.459315996582,40.0654825282215,744.8088154531526 -123.4592576802951,40.06544372916964,746.2223339005293 -123.4591993079209,40.06539656668765,747.8255686334178 -123.4591990833075,40.06536311308713,747.9360135434977 -123.4592281103589,40.06536299803189,747.1162820779944 -123.4593152102346,40.06536544062251,744.6633022793372 -123.4593768927198,40.06536519605957,743.1725095070461 -123.4594385752042,40.06536495146382,741.6722326392821 -123.4595002576878,40.0653647068352,740.0906894724642 -123.4595619401706,40.06536446217376,738.4798918205909 -123.4596417645591,40.06536414550433,736.2471425903931 -123.4597070379445,40.06535831077056,734.6586945467644 -123.4598195364949,40.06536065219768,732.3199030997223 -123.4598776655721,40.06537157296815,731.3280595146121 -123.4599430701799,40.06538525269979,729.6160727316142 -123.4600120844455,40.06539613018779,727.2538568367694 -123.4601138104477,40.06541524134713,723.1552863735943 -123.4602118143258,40.06542042783185,719.054340596527 -123.4602753298064,40.06542296338332,716.4239118953482 -123.4603388452914,40.06542549889994,713.7206683927652 -123.4604259265106,40.06542515285525,710.3349164602873 -123.4604930610013,40.06542627996755,707.9772457795012 -123.4605601954939,40.06542740704094,706.1355412650942 -123.4606690470173,40.06542697426688,702.7974673533554 -123.4607706605522,40.06542935805158,699.4146696754497 -123.4608613889407,40.06543178504819,696.2220296175519 -123.4609267186447,40.06543431302553,693.8260884295291 -123.4610029522978,40.06543958545198,690.9583341739886 -123.4610610064507,40.06543935442996,688.6976252639907 -123.4611336493275,40.06545021680852,686.090588781538 -123.4611845219132,40.06546116580537,684.2887846599853 -123.4612499456626,40.06547763259628,681.844964160324 -123.4613226074134,40.06549128265506,679.1726601690741 -123.4613662232838,40.0655022604675,677.7393861644546 -123.461435237886,40.06551313710552,675.3829567163149 -123.4614824633659,40.06552131262333,673.8461975203978 -123.4615225073291,40.06554066822671,672.6239380554564 -123.4615407809708,40.06556011054727,672.1300256441099 -123.4615845474406,40.06559339066909,670.3340562924035 -123.4616173723209,40.06561835074928,668.7541052950949 -123.4616574916515,40.065648857501,666.8128072009487 -123.4617084962088,40.06567932085864,664.319768058883 -123.4617522063702,40.06570423751884,662.3461371886185 -123.461792344635,40.06573753202169,660.8302902801663 -123.4618215789089,40.065768082103,660.1111895236822 -123.4618581641475,40.06581254224113,659.3263210751827 -123.4618656468765,40.06584596689653,659.2768160457399 -123.4618695953404,40.06589334501025,659.9123596202717 -123.4618626774046,40.06594355431786,661.3090345418216 -123.4618083641883,40.06596049807315,664.2307003563628 -123.4617539756556,40.06596629060807,666.8633543031453 -123.461699474193,40.06595535632487,669.0903866249237 -123.4616413067012,40.0659388608764,671.1865646411629 -123.4615758447873,40.06591681871323,673.1115241114603 -123.4615140865738,40.06590591325413,675.3322884006734 -123.4614778024831,40.06590605778958,676.7959747255913 -123.4614016058919,40.06590636127707,679.9618933944946 -123.461354436573,40.06590654912515,682.0220026243587 -123.4612564695245,40.06590693920983,687.2509221643145 -123.4612093754044,40.06591827819484,690.2308633290995 -123.4611731852987,40.06593236162986,692.4894827719781 -123.4611008238379,40.06596331626533,696.8417564764765 -123.4610393663465,40.06599701533751,700.0096160721826 + + + + + +
+
+