{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b52348f6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# USES mrms-grib env"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "0547d8cf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: total: 1.73 s\n",
      "Wall time: 4.67 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "# --- Get the list of intensities from Precipitation netCDF\n",
    "# --- given a field name and value from a polygon dataset\n",
    "# --- assumes that the dataset is EPSG:5070\n",
    "# --- and netCDF is EPSG:4326\n",
    "\n",
    "import netCDF4 as nc\n",
    "import numpy as np\n",
    "from shapely.geometry import shape, Point\n",
    "from shapely.prepared import prep\n",
    "import geopandas as gpd\n",
    "\n",
    "import warnings\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "nc_path=r'E:\\texas_precip\\tx_precip_intensity.nc'\n",
    "\n",
    "fgb_path = 'https://web.corral.tacc.utexas.edu/ras2fim/huc12/huc12_texas_ar_5070.fgb'\n",
    "str_field_to_search = 'huc12'\n",
    "str_id_to_find = '120301020702'\n",
    "\n",
    "#fgb_path = 'https://web.corral.tacc.utexas.edu/ras2fim/nextgen/divides_nextgen_12.fgb'\n",
    "#str_field_to_search = 'divide_id'\n",
    "#str_id_to_find = 'cat-2402391'\n",
    "\n",
    "# ----------------------------\n",
    "def fn_get_peak_intensity_pixel(polygon, nc_path,\n",
    "                              return_period_idx=None, agg='max'):\n",
    "    \"\"\"\n",
    "    Find the pixel with the highest intensity_by_return_period value\n",
    "    that intersects a given polygon.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    polygon : shapely.geometry.Polygon or dict\n",
    "        A Shapely polygon or GeoJSON-style geometry dict defining the area of interest.\n",
    "    nc_path : str\n",
    "        Path to the NetCDF file.\n",
    "    return_period_idx : int or None\n",
    "        Index into the return_period dimension (0–9) to use.\n",
    "        If None, uses the maximum across ALL return periods.\n",
    "    agg : str\n",
    "        How to aggregate across return periods when return_period_idx is None.\n",
    "        'max' = peak across all return periods (default).\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    dict with keys:\n",
    "        lat         : float  - latitude of peak pixel\n",
    "        lon         : float  - longitude of peak pixel\n",
    "        lat_idx     : int    - row index in the grid\n",
    "        lon_idx     : int    - col index in the grid\n",
    "        intensity   : float  - intensity value (inches/hour)\n",
    "        return_period : int  - return period (years) at which peak occurs\n",
    "        return_period_idx : int - index of that return period\n",
    "        n_pixels_in_polygon : int - total pixels found inside polygon\n",
    "    \"\"\"\n",
    "    # Accept GeoJSON dict as well as Shapely geometry\n",
    "    if isinstance(polygon, dict):\n",
    "        polygon = shape(polygon)\n",
    "\n",
    "    with nc.Dataset(nc_path, 'r') as ds:\n",
    "        lats = ds.variables['lat'][:]           # (1282,)\n",
    "        lons = ds.variables['lon'][:]           # (1579,)\n",
    "        return_periods = ds.variables['return_period'][:]  # (10,)\n",
    "\n",
    "        # --- 1. Bounding-box pre-filter (fast) ---\n",
    "        minx, miny, maxx, maxy = polygon.bounds\n",
    "\n",
    "        lat_mask = (lats >= miny) & (lats <= maxy)\n",
    "        lon_mask = (lons >= minx) & (lons <= maxx)\n",
    "\n",
    "        lat_indices = np.where(lat_mask)[0]\n",
    "        lon_indices = np.where(lon_mask)[0]\n",
    "\n",
    "        if lat_indices.size == 0 or lon_indices.size == 0:\n",
    "            raise ValueError(\"Polygon does not overlap the NetCDF grid extent.\")\n",
    "\n",
    "        lat_slice = slice(lat_indices[0], lat_indices[-1] + 1)\n",
    "        lon_slice = slice(lon_indices[0], lon_indices[-1] + 1)\n",
    "\n",
    "        # Load only the bounding-box subset of the intensity grid\n",
    "        # shape: (10, n_lat_bb, n_lon_bb)\n",
    "        if return_period_idx is not None:\n",
    "            # Single return period — load one slice\n",
    "            intensity_bb = ds.variables['intensity_by_return_period'][\n",
    "                return_period_idx, lat_slice, lon_slice\n",
    "            ]                                   # (n_lat_bb, n_lon_bb)\n",
    "            intensity_bb = intensity_bb[np.newaxis, ...]  # keep 3-D for uniform code\n",
    "            rp_indices_loaded = [return_period_idx]\n",
    "        else:\n",
    "            intensity_bb = ds.variables['intensity_by_return_period'][\n",
    "                :, lat_slice, lon_slice\n",
    "            ]                                   # (10, n_lat_bb, n_lon_bb)\n",
    "            rp_indices_loaded = list(range(len(return_periods)))\n",
    "\n",
    "        lats_bb = lats[lat_slice]               # (n_lat_bb,)\n",
    "        lons_bb = lons[lon_slice]               # (n_lon_bb,)\n",
    "\n",
    "    # --- 2. Point-in-polygon test (prepared geometry for speed) ---\n",
    "    prepared_poly = prep(polygon)\n",
    "\n",
    "    # Build coordinate grids for the bounding box\n",
    "    lon_grid, lat_grid = np.meshgrid(lons_bb, lats_bb)  # both (n_lat_bb, n_lon_bb)\n",
    "\n",
    "    n_lat_bb, n_lon_bb = lat_grid.shape\n",
    "    inside = np.zeros((n_lat_bb, n_lon_bb), dtype=bool)\n",
    "\n",
    "    for i in range(n_lat_bb):\n",
    "        for j in range(n_lon_bb):\n",
    "            inside[i, j] = prepared_poly.contains(Point(lon_grid[i, j], lat_grid[i, j]))\n",
    "\n",
    "    n_pixels = int(inside.sum())\n",
    "    if n_pixels == 0:\n",
    "        raise ValueError(\"No grid pixels found inside the polygon. \"\n",
    "                         \"The polygon may be smaller than one grid cell — \"\n",
    "                         \"consider using intersects() instead of contains().\")\n",
    "\n",
    "    # --- 3. Find peak intensity across pixels inside the polygon ---\n",
    "    # Mask pixels outside polygon\n",
    "    inside_3d = np.broadcast_to(inside[np.newaxis, :, :], intensity_bb.shape)\n",
    "    intensity_masked = np.where(inside_3d, intensity_bb, np.nan)\n",
    "\n",
    "    # Max across all loaded return periods → best pixel\n",
    "    intensity_max_over_rp = np.nanmax(intensity_masked, axis=0)  # (n_lat_bb, n_lon_bb)\n",
    "\n",
    "    # Pixel with highest intensity\n",
    "    flat_idx = np.nanargmax(intensity_max_over_rp)\n",
    "    best_i, best_j = np.unravel_index(flat_idx, (n_lat_bb, n_lon_bb))\n",
    "\n",
    "    # Which return period gave that max?\n",
    "    best_rp_local = int(np.nanargmax(intensity_masked[:, best_i, best_j]))\n",
    "    best_rp_idx   = rp_indices_loaded[best_rp_local]\n",
    "\n",
    "    # Map back to global grid indices\n",
    "    global_lat_idx = int(lat_indices[0] + best_i)\n",
    "    global_lon_idx = int(lon_indices[0] + best_j)\n",
    "\n",
    "    return {\n",
    "        'lat':               float(lats_bb[best_i]),\n",
    "        'lon':               float(lons_bb[best_j]),\n",
    "        'lat_idx':           global_lat_idx,\n",
    "        'lon_idx':           global_lon_idx,\n",
    "        'intensity':         float(intensity_max_over_rp[best_i, best_j]),\n",
    "        'return_period':     int(return_periods[best_rp_idx]),\n",
    "        'return_period_idx': best_rp_idx,\n",
    "        'n_pixels_in_polygon': n_pixels,\n",
    "    }\n",
    "# ----------------------------\n",
    "\n",
    "# --------------------------\n",
    "def fn_get_polygon_by_value(str_fieldname: str, str_value: str, fgb_path):\n",
    "    \"\"\"\n",
    "    Given a field name and value, return the corresponding Shapely polygon.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    str_fieldname : str\n",
    "        The field/column name to filter on.\n",
    "    str_value : str\n",
    "        The value to match.\n",
    "    fgb_path : str\n",
    "        Path to the local FlatGeobuf file.\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    shapely.geometry.Polygon or MultiPolygon\n",
    "    \"\"\"\n",
    "    import fiona\n",
    "    from shapely.geometry import shape\n",
    "\n",
    "    with fiona.open(fgb_path) as src:\n",
    "\n",
    "        # validate field name\n",
    "        valid_fields = list(src.schema['properties'].keys())\n",
    "        if str_fieldname not in valid_fields:\n",
    "            raise KeyError(\n",
    "                f\"Field '{str_fieldname}' not found. \"\n",
    "                f\"Available fields: {valid_fields}\"\n",
    "            )\n",
    "\n",
    "        for feature in src:\n",
    "            if str(feature['properties'][str_fieldname]) == str(str_value):\n",
    "                return shape(feature['geometry'])\n",
    "\n",
    "    return None\n",
    "# --------------------------\n",
    "\n",
    "# ----------------------\n",
    "def fn_get_intensity_by_duration(lat_idx: int, lon_idx: int, nc_path):\n",
    "    with nc.Dataset(nc_path, 'r') as ds:\n",
    "        intensities = ds.variables['intensity_by_duration'][:, lat_idx, lon_idx].tolist()\n",
    "    return sorted(intensities)\n",
    "# ----------------------\n",
    "\n",
    "# ----------------------\n",
    "def fn_get_intensity_by_return_period(lat_idx: int, lon_idx: int, nc_path):\n",
    "    with nc.Dataset(nc_path, 'r') as ds:\n",
    "        intensities = ds.variables['intensity_by_return_period'][:, lat_idx, lon_idx].tolist()\n",
    "    return sorted(intensities)\n",
    "# ----------------------\n",
    "\n",
    "\n",
    "shape_poly_5070 = fn_get_polygon_by_value(str_field_to_search, str_id_to_find, fgb_path)\n",
    "\n",
    "if shape_poly_5070 is None:\n",
    "    print(f\"Field:{str_field_to_search} Value:{str_id_to_find} No feature found.\")\n",
    "else:\n",
    "    shape_poly_4326 = (gpd.GeoDataFrame(geometry=[shape_poly_5070], crs='EPSG:5070').to_crs('EPSG:4326').geometry.iloc[0])\n",
    "    with warnings.catch_warnings():\n",
    "        warnings.simplefilter(\"ignore\", RuntimeWarning)\n",
    "        dict_peak_pixel_result = fn_get_peak_intensity_pixel(shape_poly_4326, nc_path)\n",
    "\n",
    "    list_intensity_in_hr_1year = fn_get_intensity_by_duration(\n",
    "        dict_peak_pixel_result['lat_idx'],\n",
    "        dict_peak_pixel_result['lon_idx'],\n",
    "        nc_path)\n",
    "\n",
    "    list_intensity_by_return_period_in_hr_5min_duration = fn_get_intensity_by_return_period(\n",
    "        dict_peak_pixel_result['lat_idx'],\n",
    "        dict_peak_pixel_result['lon_idx'],\n",
    "        nc_path)\n",
    "\n",
    "    list_in_hr_intensities = sorted(set(list_intensity_in_hr_1year + list_intensity_by_return_period_in_hr_5min_duration))\n",
    "\n",
    "    list_mm_hr_intensities = [round(x * 25.4, 1) for x in list_in_hr_intensities]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "6ec3106f-8e07-45c4-b9cb-701fa5087c74",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[3.4,\n",
       " 5.9,\n",
       " 10.0,\n",
       " 17.0,\n",
       " 23.1,\n",
       " 37.9,\n",
       " 58.3,\n",
       " 83.8,\n",
       " 100.7,\n",
       " 125.9,\n",
       " 147.5,\n",
       " 182.6,\n",
       " 211.8,\n",
       " 252.1,\n",
       " 282.9,\n",
       " 314.2,\n",
       " 347.5,\n",
       " 392.6,\n",
       " 427.9]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list_mm_hr_intensities"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "a7aef075-9f44-4301-94d5-d4fc8d3ebbc2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
       "&lt;html&gt;\n",
       "&lt;head&gt;\n",
       "    \n",
       "    &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
       "    &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
       "    &lt;script src=&quot;https://code.jquery.com/jquery-3.7.1.min.js&quot;&gt;&lt;/script&gt;\n",
       "    &lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&gt;&lt;/script&gt;\n",
       "    &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
       "    \n",
       "            &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
       "                initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
       "            &lt;style&gt;\n",
       "                #map_17a5b0eac8740d3d23e0f36987f08c31 {\n",
       "                    position: relative;\n",
       "                    width: 100.0%;\n",
       "                    height: 100.0%;\n",
       "                    left: 0.0%;\n",
       "                    top: 0.0%;\n",
       "                }\n",
       "                .leaflet-container { font-size: 1rem; }\n",
       "            &lt;/style&gt;\n",
       "\n",
       "            &lt;style&gt;html, body {\n",
       "                width: 100%;\n",
       "                height: 100%;\n",
       "                margin: 0;\n",
       "                padding: 0;\n",
       "            }\n",
       "            &lt;/style&gt;\n",
       "\n",
       "            &lt;style&gt;#map {\n",
       "                position:absolute;\n",
       "                top:0;\n",
       "                bottom:0;\n",
       "                right:0;\n",
       "                left:0;\n",
       "                }\n",
       "            &lt;/style&gt;\n",
       "\n",
       "            &lt;script&gt;\n",
       "                L_NO_TOUCH = false;\n",
       "                L_DISABLE_3D = false;\n",
       "            &lt;/script&gt;\n",
       "\n",
       "        \n",
       "    \n",
       "                    &lt;style&gt;\n",
       "                        .foliumtooltip {\n",
       "                            \n",
       "                        }\n",
       "                       .foliumtooltip table{\n",
       "                            margin: auto;\n",
       "                        }\n",
       "                        .foliumtooltip tr{\n",
       "                            text-align: left;\n",
       "                        }\n",
       "                        .foliumtooltip th{\n",
       "                            padding: 2px; padding-right: 8px;\n",
       "                        }\n",
       "                    &lt;/style&gt;\n",
       "            \n",
       "&lt;/head&gt;\n",
       "&lt;body&gt;\n",
       "    \n",
       "    \n",
       "            &lt;div class=&quot;folium-map&quot; id=&quot;map_17a5b0eac8740d3d23e0f36987f08c31&quot; &gt;&lt;/div&gt;\n",
       "        \n",
       "&lt;/body&gt;\n",
       "&lt;script&gt;\n",
       "    \n",
       "    \n",
       "            var map_17a5b0eac8740d3d23e0f36987f08c31 = L.map(\n",
       "                &quot;map_17a5b0eac8740d3d23e0f36987f08c31&quot;,\n",
       "                {\n",
       "                    center: [32.72950472171461, -97.07319657451177],\n",
       "                    crs: L.CRS.EPSG3857,\n",
       "                    ...{\n",
       "  &quot;zoom&quot;: 10,\n",
       "  &quot;zoomControl&quot;: true,\n",
       "  &quot;preferCanvas&quot;: false,\n",
       "}\n",
       "\n",
       "                }\n",
       "            );\n",
       "            L.control.scale().addTo(map_17a5b0eac8740d3d23e0f36987f08c31);\n",
       "\n",
       "            \n",
       "\n",
       "        \n",
       "    \n",
       "            var tile_layer_305343ea073fc9833fb999510ac23e2e = L.tileLayer(\n",
       "                &quot;https://tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
       "                {\n",
       "  &quot;minZoom&quot;: 0,\n",
       "  &quot;maxZoom&quot;: 19,\n",
       "  &quot;maxNativeZoom&quot;: 19,\n",
       "  &quot;noWrap&quot;: false,\n",
       "  &quot;attribution&quot;: &quot;\\u0026copy; \\u003ca href=\\&quot;https://www.openstreetmap.org/copyright\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e contributors&quot;,\n",
       "  &quot;subdomains&quot;: &quot;abc&quot;,\n",
       "  &quot;detectRetina&quot;: false,\n",
       "  &quot;tms&quot;: false,\n",
       "  &quot;opacity&quot;: 1,\n",
       "}\n",
       "\n",
       "            );\n",
       "        \n",
       "    \n",
       "            tile_layer_305343ea073fc9833fb999510ac23e2e.addTo(map_17a5b0eac8740d3d23e0f36987f08c31);\n",
       "        \n",
       "    \n",
       "            map_17a5b0eac8740d3d23e0f36987f08c31.fitBounds(\n",
       "                [[32.67487486046275, -97.13428662892667], [32.78413458296647, -97.01210652009688]],\n",
       "                {}\n",
       "            );\n",
       "        \n",
       "    \n",
       "        function geo_json_79505a106136f95daae6bd2690f89357_styler(feature) {\n",
       "            switch(feature.id) {\n",
       "                default:\n",
       "                    return {&quot;fillOpacity&quot;: 0.5, &quot;weight&quot;: 2};\n",
       "            }\n",
       "        }\n",
       "        function geo_json_79505a106136f95daae6bd2690f89357_highlighter(feature) {\n",
       "            switch(feature.id) {\n",
       "                default:\n",
       "                    return {&quot;fillOpacity&quot;: 0.75};\n",
       "            }\n",
       "        }\n",
       "        function geo_json_79505a106136f95daae6bd2690f89357_pointToLayer(feature, latlng) {\n",
       "            var opts = {\n",
       "  &quot;stroke&quot;: true,\n",
       "  &quot;color&quot;: &quot;#3388ff&quot;,\n",
       "  &quot;weight&quot;: 3,\n",
       "  &quot;opacity&quot;: 1.0,\n",
       "  &quot;lineCap&quot;: &quot;round&quot;,\n",
       "  &quot;lineJoin&quot;: &quot;round&quot;,\n",
       "  &quot;dashArray&quot;: null,\n",
       "  &quot;dashOffset&quot;: null,\n",
       "  &quot;fill&quot;: true,\n",
       "  &quot;fillColor&quot;: &quot;#3388ff&quot;,\n",
       "  &quot;fillOpacity&quot;: 0.2,\n",
       "  &quot;fillRule&quot;: &quot;evenodd&quot;,\n",
       "  &quot;bubblingMouseEvents&quot;: true,\n",
       "  &quot;radius&quot;: 2,\n",
       "};\n",
       "            \n",
       "            let style = geo_json_79505a106136f95daae6bd2690f89357_styler(feature)\n",
       "            Object.assign(opts, style)\n",
       "            \n",
       "            return new L.CircleMarker(latlng, opts)\n",
       "        }\n",
       "\n",
       "        function geo_json_79505a106136f95daae6bd2690f89357_onEachFeature(feature, layer) {\n",
       "\n",
       "            layer.on({\n",
       "                mouseout: function(e) {\n",
       "                    if(typeof e.target.setStyle === &quot;function&quot;){\n",
       "                            geo_json_79505a106136f95daae6bd2690f89357.resetStyle(e.target);\n",
       "                    }\n",
       "                },\n",
       "                mouseover: function(e) {\n",
       "                    if(typeof e.target.setStyle === &quot;function&quot;){\n",
       "                        const highlightStyle = geo_json_79505a106136f95daae6bd2690f89357_highlighter(e.target.feature)\n",
       "                        e.target.setStyle(highlightStyle);\n",
       "                    }\n",
       "                },\n",
       "            });\n",
       "        };\n",
       "        var geo_json_79505a106136f95daae6bd2690f89357 = L.geoJson(null, {\n",
       "                onEachFeature: geo_json_79505a106136f95daae6bd2690f89357_onEachFeature,\n",
       "            \n",
       "                style: geo_json_79505a106136f95daae6bd2690f89357_styler,\n",
       "                pointToLayer: geo_json_79505a106136f95daae6bd2690f89357_pointToLayer,\n",
       "            ...{\n",
       "}\n",
       "        });\n",
       "\n",
       "        function geo_json_79505a106136f95daae6bd2690f89357_add (data) {\n",
       "            geo_json_79505a106136f95daae6bd2690f89357\n",
       "                .addData(data);\n",
       "        }\n",
       "            geo_json_79505a106136f95daae6bd2690f89357_add({&quot;bbox&quot;: [-97.13428662892667, 32.67487486046275, -97.01210652009688, 32.78413458296647], &quot;features&quot;: [{&quot;bbox&quot;: [-97.13428662892667, 32.67487486046275, -97.01210652009688, 32.78413458296647], &quot;geometry&quot;: {&quot;coordinates&quot;: [[[[-97.01248843973823, 32.77222510355922], [-97.01250303287003, 32.772194363148316], [-97.01256393235808, 32.77206633388337], [-97.01263925160308, 32.771852807600766], [-97.01261660058319, 32.771601870585506], [-97.01250999211854, 32.771313913030674], [-97.01236662549076, 32.77077470852884], [-97.01225263826437, 32.77018827346207], [-97.01210794751987, 32.76970875528383], [-97.01210652009688, 32.769227731365696], [-97.01226110847918, 32.76873893748945], [-97.01321363798903, 32.767573798839976], [-97.0134315845483, 32.76733768071866], [-97.0134424056542, 32.76729394018827], [-97.0135555808036, 32.76683857541073], [-97.01359545791738, 32.76631428672246], [-97.0136641799349, 32.765766524399424], [-97.01384360314157, 32.76491082078826], [-97.01385371368009, 32.76486277937368], [-97.0142866935622, 32.76444011986464], [-97.01497751867694, 32.76385460242343], [-97.01574517400299, 32.7632506635848], [-97.01583974773777, 32.76317623644266], [-97.01648600473632, 32.76246787542451], [-97.0168999286563, 32.76201419546825], [-97.0177877210752, 32.761405333906104], [-97.01975773547643, 32.76024691704095], [-97.01997399589791, 32.75995491366735], [-97.02045733443653, 32.759980272819426], [-97.02130206611227, 32.760089098997675], [-97.02263304237657, 32.760110114375095], [-97.02265718190489, 32.76011049662395], [-97.02361699046347, 32.76012564379837], [-97.02443948254772, 32.75997711737349], [-97.02446752615425, 32.759972036327206], [-97.02528573237628, 32.76000878665384], [-97.02558813135207, 32.75994234249341], [-97.02599519214327, 32.759852942139155], [-97.02600150999467, 32.75956669163777], [-97.02603762137078, 32.759209360887546], [-97.02610712492263, 32.75912220043483], [-97.0263570326414, 32.75880871611742], [-97.02706332225375, 32.75879599444837], [-97.02791131211903, 32.75876164819913], [-97.02816022001291, 32.75873659767664], [-97.02871500785429, 32.75868083606456], [-97.02873203811544, 32.758679088721216], [-97.02873834698369, 32.758392835957196], [-97.02877549950719, 32.75798782554256], [-97.0291145102207, 32.75744068661258], [-97.03005350571246, 32.75650033875312], [-97.03176011341112, 32.75511102379215], [-97.03255108361205, 32.754707943052885], [-97.03336464284912, 32.75310992220133], [-97.03346673188958, 32.752692659313524], [-97.03370511512159, 32.75212377931169], [-97.03381583517529, 32.75198343219801], [-97.03416992141588, 32.75153452045932], [-97.03488506482368, 32.75111620910011], [-97.03584949431608, 32.750916612535505], [-97.03591373014712, 32.75087413395165], [-97.03676639664175, 32.7503105800527], [-97.03720769222845, 32.75005447577363], [-97.03764168271525, 32.74980264322317], [-97.03776739834599, 32.749729706060215], [-97.03827655805914, 32.749689981539404], [-97.03890431694936, 32.74938961012789], [-97.03934954266543, 32.748815891782236], [-97.03939833106682, 32.748753087719315], [-97.03955509157548, 32.74822037411975], [-97.03973384553724, 32.74761292479151], [-97.04090843319541, 32.74555536131458], [-97.04095390232182, 32.74551189946221], [-97.04174469106306, 32.74475715373511], [-97.0427153000663, 32.744271244015735], [-97.04272870921855, 32.74426362185763], [-97.04357306090692, 32.74378347823085], [-97.04414419628984, 32.74326167715734], [-97.04511829704458, 32.74206411316281], [-97.04548934796932, 32.741298593711704], [-97.0455169352317, 32.74003528783425], [-97.0455557676048, 32.73825696969987], [-97.04738894792699, 32.73826178449626], [-97.04884816588464, 32.737996401326455], [-97.05014417702314, 32.737760697447456], [-97.0528675401812, 32.73762217293793], [-97.05316276970268, 32.7376071859068], [-97.05543444825778, 32.73752791720986], [-97.05735314819505, 32.737249745146805], [-97.05757561507683, 32.73721749954317], [-97.0576064102231, 32.73720875240925], [-97.0580424874963, 32.73708516202493], [-97.0595868738277, 32.73664731171109], [-97.06215412775568, 32.73637413012739], [-97.06240540091369, 32.73634738371123], [-97.06334981055168, 32.73616322191967], [-97.06374214166718, 32.736054398245635], [-97.06488228612072, 32.73607200910721], [-97.0656470803126, 32.735398914454244], [-97.06876704158375, 32.73544703599187], [-97.07051967356769, 32.73698323912161], [-97.07198105736347, 32.73741158655741], [-97.07458362226865, 32.737806649831434], [-97.07506645236082, 32.737948168577866], [-97.07558256952584, 32.73801077170631], [-97.07606352663065, 32.73770316512592], [-97.07645086490979, 32.73702185777898], [-97.0765038035278, 32.73613504804414], [-97.0765740562746, 32.735959021005016], [-97.07721983806435, 32.73434207481939], [-97.07735137208321, 32.73396410948943], [-97.0777253533124, 32.73288949702291], [-97.07802046425627, 32.73245357269517], [-97.0780302693676, 32.73243146641033], [-97.07861762023971, 32.73023376496605], [-97.07965034504988, 32.72907182396615], [-97.07984209943044, 32.72897038990337], [-97.08093873488153, 32.72838583708383], [-97.08117979329644, 32.728143232399056], [-97.08152725266518, 32.72779358129391], [-97.08163139615269, 32.727537454614826], [-97.08192063840283, 32.726825989100114], [-97.08226734139012, 32.726283765937495], [-97.08292789417808, 32.72584821890861], [-97.08441610705816, 32.724311039419995], [-97.08505383365475, 32.72115010770787], [-97.08462999053741, 32.719926152034105], [-97.08320524902206, 32.71849660242138], [-97.0833208837587, 32.713793202374035], [-97.0851098543925, 32.71151229548879], [-97.08735264761964, 32.71045585373124], [-97.08797966539976, 32.710313830272035], [-97.08830355926365, 32.71028695434506], [-97.08918319138648, 32.710041196871536], [-97.08918399987024, 32.7100409897667], [-97.09092717528918, 32.70955384997906], [-97.09181414485127, 32.70925235841121], [-97.0923299691655, 32.7088879437229], [-97.09293830917422, 32.70828769963838], [-97.0929873194595, 32.70823931929539], [-97.093115088639, 32.70701000336381], [-97.09346393770149, 32.70565069686106], [-97.09387169738199, 32.70487390341153], [-97.09444629756695, 32.703336382070844], [-97.09454303175, 32.703028315699186], [-97.09464105860876, 32.70271620182976], [-97.09505311223631, 32.70140407782832], [-97.09506385878207, 32.70137005643152], [-97.09553931280743, 32.70047663294744], [-97.09583436715745, 32.69926664928018], [-97.09613480061938, 32.698780537728574], [-97.09696679328609, 32.697876901005465], [-97.09785666530485, 32.69743222987448], [-97.09852636653568, 32.69733313431184], [-97.09890983487259, 32.697276386300274], [-97.09910578438551, 32.697341919375894], [-97.09971681125525, 32.697546341017066], [-97.10006926615529, 32.69762651310174], [-97.10039089356972, 32.69769973631667], [-97.10113693543003, 32.69765376175144], [-97.10124273720757, 32.69770775253187], [-97.10177342953807, 32.69797839613464], [-97.10230543071394, 32.698444540477624], [-97.10319430560274, 32.69874511530743], [-97.10328059597231, 32.69877429053834], [-97.10353153585535, 32.69874281343169], [-97.1036879846486, 32.6987231805834], [-97.10393163919468, 32.69841186960108], [-97.10428714926502, 32.697615521412025], [-97.10502777069088, 32.69622363523672], [-97.10555000268805, 32.69550269244546], [-97.10607417504623, 32.6947790079173], [-97.10631652164527, 32.694553144653504], [-97.10751141122886, 32.693439198266006], [-97.10752508179087, 32.693426469534124], [-97.10757560573737, 32.693385241191635], [-97.10781439321126, 32.69319040970522], [-97.10824860558193, 32.69283611278057], [-97.10856634329119, 32.692542370483665], [-97.10876668376922, 32.6923571150074], [-97.108723659857, 32.69206523016097], [-97.10864817442368, 32.69155351706407], [-97.10815305088684, 32.69094477742853], [-97.10766105618215, 32.69019281539501], [-97.10762588085056, 32.69008967461734], [-97.10740593643808, 32.68944451226832], [-97.10741862514148, 32.68884334734744], [-97.10753468118799, 32.688157835097314], [-97.10764666876457, 32.68779204143276], [-97.10795832308271, 32.68733386465794], [-97.1079820736405, 32.68716400442049], [-97.10803810425973, 32.686762346289576], [-97.10805561691619, 32.685932249462574], [-97.10804471226695, 32.68484391475823], [-97.10805920209248, 32.684156949624146], [-97.10812766809018, 32.68386792543419], [-97.10813354576709, 32.68384307615116], [-97.10825803250252, 32.68376005185348], [-97.1085113358531, 32.68359104901835], [-97.1091895576044, 32.68354400413687], [-97.1103076367396, 32.68311660696001], [-97.11048663863639, 32.68304810261111], [-97.1105250011906, 32.68297604460481], [-97.11102468547412, 32.682036641170825], [-97.11112126424864, 32.68185502944846], [-97.1116005262325, 32.680819416621716], [-97.11193717168186, 32.68009195954984], [-97.11220634467021, 32.67992746527412], [-97.1134463135114, 32.67916975923163], [-97.11349504531894, 32.679142530648406], [-97.11464537127792, 32.678500522392326], [-97.11495790594503, 32.67811900331024], [-97.11610489466274, 32.676718456335436], [-97.11631566727617, 32.67652638771527], [-97.11758909746338, 32.67536628710069], [-97.11791369111486, 32.67526669747699], [-97.11883877799107, 32.67498286954044], [-97.11919064449462, 32.67487486046275], [-97.1207463379205, 32.67495544988626], [-97.12291069295199, 32.675073765989275], [-97.12455395864335, 32.675026627395404], [-97.12513923979704, 32.676710640124824], [-97.12552329203888, 32.67777591897243], [-97.12563655971474, 32.67883706803562], [-97.12594193121579, 32.67937723636277], [-97.12609370697292, 32.679645712558354], [-97.12645340139586, 32.68025236372794], [-97.12695158369623, 32.68071798364431], [-97.12809590980743, 32.68105006597663], [-97.12948941600202, 32.681509382677305], [-97.12964277189573, 32.68155995809682], [-97.13031261775534, 32.681913495281584], [-97.13070798697314, 32.682434842540296], [-97.1306942670038, 32.683093268126115], [-97.13044299115083, 32.68377671055205], [-97.13007616679951, 32.68434849980221], [-97.1299881040539, 32.684485834588145], [-97.12901967346522, 32.68518310541683], [-97.12881924046073, 32.68532740455794], [-97.12852633488086, 32.685572861885376], [-97.12750966655805, 32.68642466996335], [-97.12739017984549, 32.687281887012006], [-97.12741088331784, 32.68791219359633], [-97.12777700788156, 32.688126587108016], [-97.12821378943394, 32.68838227277234], [-97.12932486440491, 32.68857570700759], [-97.12983325516016, 32.68866416047314], [-97.13057314805235, 32.68890428084296], [-97.13061618004942, 32.688950361223206], [-97.13087126296254, 32.68922372285592], [-97.13088666727303, 32.68951384183207], [-97.13089557047581, 32.689682265679586], [-97.13047261938554, 32.69047768971734], [-97.13023700026966, 32.69093705847744], [-97.12999781124886, 32.691992780258026], [-97.12995655881438, 32.693970749910314], [-97.130408641371, 32.69418887254199], [-97.1307608698956, 32.694519522831094], [-97.13190359880221, 32.69493745719586], [-97.13224358059453, 32.69507427901354], [-97.1330117901811, 32.69538342289931], [-97.13320363888477, 32.6955375121256], [-97.13323799495281, 32.69556506229292], [-97.13341150095667, 32.69570436956162], [-97.13342032600602, 32.69690713742396], [-97.13317910769099, 32.69729773475123], [-97.13271935082689, 32.69804215068024], [-97.13213424484468, 32.698491613793806], [-97.13141201822086, 32.69902485589432], [-97.1313816991817, 32.699055064417415], [-97.13110073939849, 32.69933521526824], [-97.13118306190945, 32.69952621279158], [-97.13126226726638, 32.69970989236411], [-97.13263481127382, 32.70047479904191], [-97.13347111405724, 32.70097406519665], [-97.13386906323653, 32.70138089571675], [-97.13426513134361, 32.701873604435015], [-97.13428662892667, 32.702392153133005], [-97.13344728714266, 32.703534757804015], [-97.1318498364291, 32.70675776724614], [-97.13185902709276, 32.70771784607535], [-97.13183194737853, 32.70778276375927], [-97.13166121716888, 32.70819171974262], [-97.13124056756237, 32.70887263288561], [-97.13113002896834, 32.70930052731902], [-97.13124860119596, 32.70994388704076], [-97.13125174170618, 32.709960972447995], [-97.13150591642257, 32.71076648853863], [-97.1322946237673, 32.71192368708035], [-97.13281016511223, 32.71319127329144], [-97.13301493158966, 32.7138895677604], [-97.1330631702221, 32.71405403876153], [-97.13306232850067, 32.71409408527488], [-97.13305481858491, 32.71445482128607], [-97.1330492580133, 32.71451645759225], [-97.13301081281408, 32.71494097820435], [-97.13303393814445, 32.71545677538727], [-97.13312121216923, 32.716145257641465], [-97.13294339874358, 32.718175688608646], [-97.13289621742823, 32.71822243106147], [-97.13245915380485, 32.71865528771505], [-97.13160667415977, 32.71892886143254], [-97.1307867844949, 32.7189935570719], [-97.13069054169031, 32.71900111261503], [-97.12936036133335, 32.719439444874794], [-97.12826831807001, 32.71982404701996], [-97.12799108629524, 32.719998608734514], [-97.12767706132306, 32.72055967135581], [-97.12703708893824, 32.721709913060565], [-97.12690279619314, 32.72195127087086], [-97.12658004408797, 32.72280544262804], [-97.12654862371429, 32.723040032028166], [-97.1264997364982, 32.723405600356735], [-97.12668120696537, 32.723767820767144], [-97.12675989040112, 32.723924853703856], [-97.12715670680484, 32.72438895954719], [-97.12765562662206, 32.72482595412915], [-97.12846304138257, 32.72509573707109], [-97.12889553437779, 32.72547446323345], [-97.12910804882455, 32.72599703197522], [-97.12915331403342, 32.72610822048673], [-97.12914493904002, 32.72650900022999], [-97.1290957733462, 32.726584601408916], [-97.12879490150641, 32.7270478598565], [-97.12887109750712, 32.72727119689564], [-97.12892259882068, 32.727421952028024], [-97.12929851502099, 32.72763659144488], [-97.12959207637101, 32.72780421106077], [-97.12974958427797, 32.72784478946249], [-97.1307714736092, 32.72810816774845], [-97.1311065694647, 32.72828498110845], [-97.13124905125191, 32.72853692888504], [-97.13143320319021, 32.728862573860525], [-97.13131974956309, 32.72943351806582], [-97.13129650385848, 32.72949608258911], [-97.13114024999965, 32.72991765423171], [-97.13100241879066, 32.73012856361588], [-97.13098011631709, 32.73119691910711], [-97.13051155326828, 32.732077731102684], [-97.12883064816651, 32.73352383027124], [-97.12728337824305, 32.73289188869722], [-97.12614323199286, 32.73287484697747], [-97.12552366663635, 32.7338041857175], [-97.1258215740357, 32.73463295538762], [-97.12583576382393, 32.73524602829632], [-97.12567590412755, 32.73584835181322], [-97.12530372671546, 32.73642616834163], [-97.12208582841707, 32.737455993869176], [-97.1208813017071, 32.73836377620972], [-97.12133617802426, 32.73943868838644], [-97.12199039319792, 32.740031401013916], [-97.12199095554327, 32.74003188384399], [-97.12218401607424, 32.740206767169795], [-97.12217500597197, 32.74063617205995], [-97.12199723656376, 32.74103432577555], [-97.12165009699525, 32.74143002657537], [-97.12148602240354, 32.74152102762762], [-97.12089598107717, 32.74184825874618], [-97.11966993971615, 32.742144861037744], [-97.11908397135126, 32.74262279359861], [-97.11907826615088, 32.74289025292076], [-97.11907193931636, 32.74319533006143], [-97.11909428131578, 32.74373974804181], [-97.1192129299002, 32.74454324990999], [-97.11946708665025, 32.744965435673706], [-97.11946687374954, 32.744975508811], [-97.12032435970568, 32.74701757890661], [-97.11990078428629, 32.74860928932245], [-97.11752392109625, 32.750298386786085], [-97.11676094239958, 32.75099097437356], [-97.11663289653897, 32.751107121085056], [-97.1161768308524, 32.75179345286376], [-97.11602051860304, 32.75202853939627], [-97.11506232162209, 32.75327880619402], [-97.11486785882096, 32.753734220679945], [-97.11461678419063, 32.75432205298434], [-97.11422814335431, 32.75536203902195], [-97.1141378941093, 32.7556033744545], [-97.1136338916242, 32.75674113472365], [-97.1135152969387, 32.756856247266484], [-97.11301712901137, 32.75790045992245], [-97.11226931028344, 32.758510274649495], [-97.11213813379406, 32.75875836126275], [-97.1118885566553, 32.75923034096693], [-97.11168101977354, 32.75962290671253], [-97.11127066486017, 32.760178015638395], [-97.1111577133913, 32.76033091264956], [-97.11094397454079, 32.76109119738606], [-97.11077130576678, 32.76177895928255], [-97.1107589530333, 32.76182815210723], [-97.11074988184555, 32.76225755098022], [-97.11075656351466, 32.76227562275278], [-97.11096362428931, 32.76283348824821], [-97.11115469415361, 32.76314657691531], [-97.11117430617288, 32.76342718663519], [-97.11117636241659, 32.763457111215835], [-97.11105895620223, 32.76367006766937], [-97.11061329390493, 32.763905362312215], [-97.11048775344565, 32.76397165847854], [-97.10992468044242, 32.764048307339635], [-97.10963522079999, 32.76408769912376], [-97.1093831373616, 32.76412201914584], [-97.10814136829657, 32.76407942222], [-97.10810788898425, 32.76406463982042], [-97.10691020294517, 32.76353588849128], [-97.1063835620166, 32.76330909495902], [-97.10581872651878, 32.76306600142591], [-97.10482688313886, 32.762861978506635], [-97.10444094443491, 32.762782649941144], [-97.1039706476376, 32.76280114161478], [-97.10363235108474, 32.76281443229044], [-97.10356470435059, 32.762817086799295], [-97.10336364072874, 32.762901373081895], [-97.1029099762389, 32.7630914307002], [-97.10254075697904, 32.76350872418188], [-97.10253320214748, 32.76351735768923], [-97.1025217585091, 32.763569417063636], [-97.10235724194627, 32.76432010327038], [-97.10228296564532, 32.76465891089524], [-97.10192565445286, 32.76567044548929], [-97.10192247621337, 32.765679547881206], [-97.10109321981504, 32.766256231989246], [-97.10093787774623, 32.76636422939909], [-97.1007471061226, 32.766496869385776], [-97.10070479008283, 32.76651471066283], [-97.10009170517277, 32.76677328678469], [-97.09939142439134, 32.766500153015016], [-97.09937284094308, 32.766046487563486], [-97.09935577834257, 32.76552129756643], [-97.09934196494842, 32.76551176609875], [-97.098826946423, 32.765155368696846], [-97.09871128204196, 32.765079292619355], [-97.0983812481931, 32.764862245311406], [-97.09770727637141, 32.76468498330992], [-97.0974565439992, 32.76473971307178], [-97.09719652125031, 32.76479655714406], [-97.0970975556521, 32.76546316148963], [-97.09680822177381, 32.76565955132245], [-97.09675376500297, 32.76569651383083], [-97.09582156526633, 32.76570619408956], [-97.09508750064373, 32.76569503252073], [-97.0943024898664, 32.765420666427424], [-97.0935001496889, 32.765055088400814], [-97.09315920580092, 32.76473515956169], [-97.09292762910381, 32.76452530428603], [-97.0924048060152, 32.7640515192962], [-97.09235576428888, 32.7640070338382], [-97.09159451395082, 32.76394773874463], [-97.09018081452696, 32.764021589627546], [-97.0900226077307, 32.76409970845134], [-97.08964909811702, 32.76428403231449], [-97.08952428259819, 32.76434563038807], [-97.08881293996235, 32.76459728659967], [-97.0879951550502, 32.764537108087175], [-97.08786027121366, 32.76451422717344], [-97.08737611161486, 32.76443217612309], [-97.08616002448551, 32.76450908217745], [-97.08557989606828, 32.76461116168225], [-97.08553638886244, 32.76461888030036], [-97.0837999139772, 32.76526043502313], [-97.08226452427338, 32.765738016941285], [-97.08055725002475, 32.76633227382436], [-97.08008841029482, 32.76655493076045], [-97.07972982169802, 32.76672527583485], [-97.07966524360889, 32.76672856625398], [-97.07865540248225, 32.766780346527625], [-97.07767137624191, 32.766574371915574], [-97.0767170141689, 32.766297215137456], [-97.07562208192361, 32.76599404137104], [-97.07528886175044, 32.76594187690543], [-97.07494661261033, 32.76588826660552], [-97.07420998689084, 32.76599618741271], [-97.07349335227967, 32.76648633034785], [-97.07339688309962, 32.76653044292103], [-97.0721812621959, 32.76708655043973], [-97.07173896229271, 32.76734023538366], [-97.07101168264542, 32.76775737827125], [-97.07056848802024, 32.76821645549333], [-97.0693142817801, 32.76868410065917], [-97.06731633516344, 32.76918652673685], [-97.06618192285971, 32.77032719827026], [-97.06539795592474, 32.7706132759465], [-97.0643889798757, 32.77126999543918], [-97.06429441602239, 32.771331602274756], [-97.06309465667164, 32.77195730783171], [-97.06264871679494, 32.77220299430267], [-97.06229419217647, 32.772398305763595], [-97.06177714974669, 32.772795902824335], [-97.06177307768353, 32.772801132693004], [-97.06142400224559, 32.774500245929595], [-97.06008117540604, 32.77623721084993], [-97.05948370231732, 32.777307028499116], [-97.05907719129506, 32.77877305169581], [-97.05906231429564, 32.77945898215586], [-97.05902915568187, 32.78098563051082], [-97.0589372858761, 32.78148973403673], [-97.05886877496262, 32.78186596907903], [-97.05817289233283, 32.78269039149785], [-97.05734366468059, 32.783154756137925], [-97.05657398545021, 32.78347686332235], [-97.05552706366525, 32.78355608961304], [-97.05496789563857, 32.78344571444043], [-97.05159369766727, 32.78223415464331], [-97.04842841010182, 32.7821848635856], [-97.04814290663991, 32.78211660224168], [-97.0468317660754, 32.78203678029021], [-97.04512166213364, 32.78246810345922], [-97.04487185322955, 32.78253111711104], [-97.04456078012137, 32.78254128115943], [-97.04388252603073, 32.782563362924435], [-97.042769383138, 32.782815607314554], [-97.04220762167506, 32.78294286814134], [-97.04113090906034, 32.783093052509486], [-97.0401600116979, 32.783077863173794], [-97.04005785528379, 32.783076260559795], [-97.03963431849195, 32.78306963561591], [-97.0392107808018, 32.783063000098196], [-97.03892230930619, 32.78293546227069], [-97.03865126872034, 32.782815666223215], [-97.03848038220384, 32.78253528151626], [-97.03846041804496, 32.782502476058085], [-97.03835756094495, 32.78242402975042], [-97.03782138350131, 32.78201515456339], [-97.03724007020622, 32.78179661313549], [-97.03709297287507, 32.7817413198729], [-97.03678500344623, 32.78178225888335], [-97.03646946391449, 32.781824185739595], [-97.03612977946452, 32.781869393372446], [-97.03591820824879, 32.78198379898733], [-97.03570162802706, 32.78210090747984], [-97.0346320947481, 32.78351933163785], [-97.0322617407506, 32.78413458296647], [-97.03113332739636, 32.78411684491186], [-97.02975953293405, 32.78351934145594], [-97.02883178434965, 32.78250805427823], [-97.02800557413843, 32.78043339595561], [-97.02794333436397, 32.78035675969384], [-97.02759573665467, 32.77946838448965], [-97.02760837056083, 32.778895963400906], [-97.02756604553791, 32.77825096697002], [-97.02715675153489, 32.777600269511744], [-97.02668618164972, 32.77716341216509], [-97.02612990440161, 32.77677281577239], [-97.02581432624228, 32.77664557255549], [-97.02520604192912, 32.77640035379143], [-97.02439294173115, 32.77603172867244], [-97.02430318027133, 32.77593718805563], [-97.0220504714401, 32.77482256496424], [-97.01886334403346, 32.77477218593363], [-97.01743776438995, 32.77431472565839], [-97.01507220020956, 32.772934680806124], [-97.01353091126926, 32.77234132227783], [-97.01284799851554, 32.772330487087686], [-97.01248843973823, 32.77222510355922]]]], &quot;type&quot;: &quot;MultiPolygon&quot;}, &quot;id&quot;: &quot;0&quot;, &quot;properties&quot;: {}, &quot;type&quot;: &quot;Feature&quot;}], &quot;type&quot;: &quot;FeatureCollection&quot;});\n",
       "\n",
       "        \n",
       "    \n",
       "    geo_json_79505a106136f95daae6bd2690f89357.bindTooltip(\n",
       "    function(layer){\n",
       "    let div = L.DomUtil.create(&#x27;div&#x27;);\n",
       "    \n",
       "    return div\n",
       "    }\n",
       "    ,{\n",
       "  &quot;sticky&quot;: true,\n",
       "  &quot;className&quot;: &quot;foliumtooltip&quot;,\n",
       "});\n",
       "                     \n",
       "    \n",
       "            geo_json_79505a106136f95daae6bd2690f89357.addTo(map_17a5b0eac8740d3d23e0f36987f08c31);\n",
       "        \n",
       "&lt;/script&gt;\n",
       "&lt;/html&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x1abecfc3010>"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gpd.GeoDataFrame(geometry=[shape_poly_4326], crs='EPSG:4326').explore()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6791fabe-633d-4181-a43a-ac51b981b332",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
