cboettig commited on
Commit
656f25c
1 Parent(s): 1c76a96

so it begins, for real this time

Browse files
Files changed (3) hide show
  1. .gitignore +3 -0
  2. app.py +42 -58
  3. static-maps.ipynb +129 -57
.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ .ipynb_checkpoints
2
+ *.swp
3
+
app.py CHANGED
@@ -1,72 +1,56 @@
1
- import streamlit as st
2
- import leafmap.maplibregl as leafmap
3
-
4
- import ibis
5
- from ibis import _
6
-
7
-
8
-
9
- con = ibis.duckdb.connect()
10
-
11
-
12
-
13
  '''
14
  # LandVote Prototype
15
 
16
  '''
17
 
18
- m = leafmap.Map(style="positron")
19
-
20
- with st.sidebar:
21
-
22
- if st.toggle("Protected Areas", True):
23
-
24
- style_choice = st.radio("Color by:", style_options)
25
- alpha = st.slider("transparency", 0.0, 1.0, 0.5)
26
- style = pad_style(style_options[style_choice], alpha)
27
- m.add_pmtiles(ca_pmtiles, style=style, visible=True, opacity=alpha, tooltip=True)
28
-
29
-
30
- select_column = {
31
- "GAP Status Code": "reGAP",
32
- "Management Agency": "cpad_MNG_AG_LEV",
33
- "Easement": "Easement",
34
- "Year": "Release_Year",
35
- "Public Access": "ACCESS_TYP"}
36
-
37
-
38
-
39
 
40
- column = select_column[style_choice]
41
 
42
- select_colors = {
43
- "Management Agency": manager["stops"],
44
- "Easement": easement["stops"],
45
- "Public Access": access["stops"],
46
- "Year": year["stops"],
47
- "GAP Status Code": gap["stops"]}
48
 
49
- colors = (ibis
50
- .memtable(select_colors[style_choice], columns = [column, "color"])
51
- .to_pandas()
52
- )
53
 
54
- main = st.container()
55
-
56
- with main:
57
- map_col, stats_col = st.columns([2,1])
58
 
59
- with map_col:
60
- to_streamlit(m, height=700)
61
- df = summary_table(column, colors)
62
- total_percent = df.percent_protected.sum().round(1)
63
- with stats_col:
64
- with st.container():
65
- f"{total_percent}% CA Covered"
66
- st.altair_chart(area_plot(df, column), use_container_width=True)
 
 
 
 
 
 
 
 
 
67
 
68
 
69
 
70
- st.divider()
71
- footer = st.container()
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  '''
2
  # LandVote Prototype
3
 
4
  '''
5
 
6
+ import ibis
7
+ from ibis import _
8
+ conn = ibis.duckdb.connect(extensions=["spatial"])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
 
10
 
11
+ state_boundaries = "https://data.source.coop/cboettig/us-boundaries/us-state-territory.parquet"
12
+ county_boundaries = "https://data.source.coop/cboettig/us-boundaries/us-county.parquet"
 
 
 
 
13
 
14
+ states = conn.read_parquet(state_boundaries).rename(state_id = "STUSPS", state = "NAME")
15
+ county = conn.read_parquet(county_boundaries).rename(county = "NAMELSAD", state = "STATE_NAME")
 
 
16
 
17
+ votes = conn.read_csv("measures.csv")
 
 
 
18
 
19
+ vote = (votes
20
+ .filter(_["Jurisdiction Type"] == "County")
21
+ .rename(county = "Jurisdiction Name", state_id = "State")
22
+ .mutate(key = _.county + ibis.literal('-') + _.state_id)
23
+ .rename(amount = 'Conservation Funds at Stake', yes = '% Yes')
24
+ .mutate(amount_n=_.amount.replace('$', '').replace(',', '').cast('float'))
25
+ .select('key', 'amount_n', 'amount', 'Status', 'yes')
26
+ )
27
+ df = (county
28
+ .join(states.select("state", "state_id"), "state")
29
+ .mutate(key = _.county + ibis.literal('-') + _.state_id)
30
+ .select('key', 'geometry')
31
+ .right_join(vote, "key")
32
+ # .drop('key_right')
33
+ )
34
+ # 20 of 23 counties have matches
35
+ gdf = df.execute()
36
 
37
 
38
 
39
+ import leafmap.maplibregl as leafmap
40
+ m = leafmap.Map(style="positron")
41
 
42
+ outcome = [
43
+ 'match',
44
+ ['get', 'Status'],
45
+ "Pass", '#2E865F',
46
+ "Fail", '#FF3300',
47
+ '#ccc'
48
+ ]
49
+ paint = {"fill-extrusion-color": outcome,
50
+ "fill-extrusion-opacity": 0.7,
51
+ "fill-extrusion-height": ["*", ["get", "amount_n"], .001],
52
+ }
53
+
54
+ #m.add_geojson("vote.geojson")
55
+ m.add_gdf(gdf, "fill-extrusion", paint = paint)
56
+ m.to_streamlit()
static-maps.ipynb CHANGED
@@ -2,58 +2,132 @@
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
- "execution_count": 21,
6
  "id": "b313a218-4778-4d5b-9036-f0370d4212a0",
7
  "metadata": {},
8
  "outputs": [],
9
  "source": [
10
  "import ibis\n",
11
  "from ibis import _\n",
12
- "conn = ibis.duckdb.connect()"
13
  ]
14
  },
15
  {
16
  "cell_type": "code",
17
- "execution_count": 11,
18
  "id": "fbbd28ea-f1e3-4f3d-ab99-a2ae9b04f3d4",
19
  "metadata": {
20
  "scrolled": true
21
  },
22
- "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
23
  "source": [
24
  "state_boundaries = \"https://data.source.coop/cboettig/us-boundaries/us-state-territory.parquet\"\n",
25
  "county_boundaries = \"https://data.source.coop/cboettig/us-boundaries/us-county.parquet\"\n",
26
  "\n",
27
- "states = conn.read_parquet(state_boundaries).rename(State = \"STUSPS\")\n",
28
- "county = conn.read_parquet(county_boundaries).rename(county = \"NAMELSAD\")\n",
29
  "\n",
30
- "votes = conn.read_csv(\"measures.csv\")\n"
 
 
31
  ]
32
  },
33
  {
34
  "cell_type": "code",
35
- "execution_count": 55,
36
- "id": "0f818c94-af17-46a2-b47f-a729de75bd63",
37
  "metadata": {},
38
- "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  "source": [
40
- "gdf = (votes\n",
41
- " .filter(votes[\"Jurisdiction Type\"] == \"County\")\n",
42
- " .rename(county = \"Jurisdiction Name\")\n",
43
- " .join(county, \"county\")\n",
44
- " )"
45
  ]
46
  },
47
  {
48
  "cell_type": "code",
49
- "execution_count": 56,
50
- "id": "7729130e-7d0f-4b0e-b676-073643556134",
51
  "metadata": {},
52
  "outputs": [
53
  {
54
  "data": {
55
  "application/vnd.jupyter.widget-view+json": {
56
- "model_id": "afb9c4f5e69440e18ee15b7e73ae7dad",
57
  "version_major": 2,
58
  "version_minor": 0
59
  },
@@ -66,19 +140,37 @@
66
  }
67
  ],
68
  "source": [
69
- "polygons = gdf.head().execute().set_crs(\"epsg:4326\")\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  ]
71
  },
72
  {
73
  "cell_type": "code",
74
- "execution_count": 57,
75
  "id": "fa397626-6e94-4ab9-a3bb-2bcbd14e8d40",
76
- "metadata": {},
 
 
77
  "outputs": [
78
  {
79
  "data": {
80
  "application/vnd.jupyter.widget-view+json": {
81
- "model_id": "3ccfd3dc22e74b078af4df85f4a7ead0",
82
  "version_major": 2,
83
  "version_minor": 1
84
  },
@@ -86,51 +178,31 @@
86
  "Map(height='600px', map_options={'bearing': 0, 'center': (0, 20), 'pitch': 0, 'style': 'https://tiles.openfree…"
87
  ]
88
  },
89
- "execution_count": 57,
90
  "metadata": {},
91
  "output_type": "execute_result"
92
  }
93
  ],
94
  "source": [
95
  "import leafmap.maplibregl as leafmap\n",
96
- "outcome = {\n",
97
- " 'fill-color': [\n",
 
98
  " 'match',\n",
99
- " ['get', 'Pass?'], \n",
100
- " \"True\", '#00FF00',\n",
101
- " \"False\", '#FFA07A', \n",
102
  " '#ccc'\n",
103
- " ],\n",
104
- "}\n",
105
- "paint = {\"fill-color\": \"#00FF00\", \"fill-opacity\": 0.5 }\n",
106
- "m = leafmap.Map(style=\"positron\")\n",
107
- "m.add_gdf(polygons,\"fill\")\n",
 
 
 
108
  "m"
109
  ]
110
- },
111
- {
112
- "cell_type": "code",
113
- "execution_count": 58,
114
- "id": "3b9f4c6b-c1d5-4750-80e0-d94ea047b8da",
115
- "metadata": {},
116
- "outputs": [
117
- {
118
- "data": {
119
- "image/svg+xml": [
120
- "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"-98.73116219507635 43.172934225308445 0.6456015209543011 0.35030333527400614\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,86.6961717858909)\"><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.012912030419086023\" opacity=\"0.6\" d=\"M -98.3516879450329,43.4986114180016 L -98.3520879450659,43.4986104177497 L -98.3600639472348,43.4985894183215 L -98.3713019495925,43.4985584170112 L -98.3797229520003,43.4985404157175 L -98.3822509531436,43.498534416154 L -98.3859199539367,43.4985264160834 L -98.3895969551256,43.4985234159751 L -98.3909929550434,43.4985224150702 L -98.4008639568974,43.4985144149979 L -98.4164899617201,43.4984784136823 L -98.4190579621481,43.4984804128871 L -98.421015963379,43.4984824127435 L -98.4255089636293,43.4984844132514 L -98.4305189649869,43.4984844132514 L -98.4339249660142,43.4984844119482 L -98.436028966835,43.4984844119482 L -98.43815996742,43.4984844119482 L -98.4390289679814,43.4984844119482 L -98.4404369675948,43.4984854122021 L -98.4425929682942,43.4984864118044 L -98.4449979694138,43.4984884123122 L -98.4501179703763,43.4984914111189 L -98.4502089697146,43.4984914111189 L -98.4543009719035,43.49850141105 L -98.4585669732714,43.4985124112329 L -98.4648179738379,43.4985264102187 L -98.4649169735721,43.4985344102893 L -98.4689729748777,43.4985164102918 L -98.4697489755527,43.4985194097487 L -98.4702959758989,43.4985214102554 L -98.4709269759107,43.4985244097121 L -98.4717339756495,43.4985274098203 L -98.4745989770767,43.4985384086952 L -98.4786419779636,43.4985544088322 L -98.4794389776567,43.4985574089389 L -98.4888009805959,43.4985834076851 L -98.4895399805627,43.4985854081897 L -98.4916499812313,43.4985914077482 L -98.4983179833458,43.4986094077234 L -98.4996559844356,43.4986134080792 L -98.5101269863392,43.4986434071551 L -98.5111359866428,43.4986494067078 L -98.5144659866038,43.4986674060141 L -98.5169789876785,43.4986814062672 L -98.5181509881886,43.4986884060668 L -98.5195029886238,43.4986964061159 L -98.5199649885812,43.4986984059652 L -98.5206119893848,43.498702406315 L -98.5295359908595,43.4987524051273 L -98.5298489908539,43.4987534047252 L -98.5378999942641,43.4987784050928 L -98.5496809967701,43.49881640412 L -98.5578119987497,43.4988414031583 L -98.5692800021595,43.4988784018985 L -98.569513001788,43.4988794021459 L -98.5774580039947,43.4988974020352 L -98.5890980069337,43.4989234012867 L -98.5971480087224,43.4989413998596 L -98.597936009093,43.4989433997007 L -98.5995200102301,43.4989463997881 L -98.6047820105844,43.4989803996816 L -98.6064040122547,43.4989913997772 L -98.6080050122119,43.4989913997772 L -98.6091050118537,43.4989913997772 L -98.6094830121455,43.4989924000228 L -98.6168380143483,43.4990153991495 L -98.6282980173623,43.499048398108 L -98.628831018363,43.4990423979433 L -98.6289150180286,43.4990423979433 L -98.6301160179528,43.4990453980257 L -98.6365530200887,43.4990633978656 L -98.6481620230655,43.4990943969617 L -98.6563020252659,43.4991123961353 L -98.6680840275968,43.4990863950104 L -98.668117028107,43.4990863950104 L -98.6760130299099,43.499108395161 L -98.6763390303232,43.499109394753 L -98.6857680332095,43.4991363941563 L -98.6872420329452,43.4991563938031 L -98.6989280359149,43.4993143928649 L -98.6995260363147,43.4993153931051 L -98.7057910380231,43.4993263931397 L -98.7058450375515,43.4988593919813 L -98.7058710383891,43.4986243919509 L -98.7062200356736,43.4871953912484 L -98.7063950355758,43.4814733899149 L -98.7065450353636,43.4765353892569 L -98.7067010341009,43.4714463890649 L -98.7067050342988,43.4712993887324 L -98.706902033044,43.4644403882131 L -98.7071200317056,43.4568323867474 L -98.7071100316598,43.4533233858584 L -98.7071100316598,43.4531653858362 L -98.7071130320329,43.4525343858947 L -98.7071230311803,43.4500083860027 L -98.7071280312032,43.44998638623 L -98.7071320314012,43.4499653862024 L -98.7071380312489,43.4499013863218 L -98.7071720297875,43.4423923841135 L -98.7072250285926,43.4325313829926 L -98.7072510276336,43.4278163822434 L -98.7072460276107,43.4269603818988 L -98.7072350277401,43.4250493822346 L -98.7072120272755,43.4211893818083 L -98.707196027382,43.4184853812724 L -98.7071700256461,43.4140453807405 L -98.7071660263464,43.4132263797675 L -98.7071050253488,43.4039573790669 L -98.7070720239402,43.398946377795 L -98.7070220228132,43.3919923772286 L -98.7069680223865,43.3844813762353 L -98.7069580223407,43.3836763758814 L -98.7069650220134,43.3807023758298 L -98.7069610218155,43.3795393763183 L -98.7069360208028,43.3773623747526 L -98.7069000208178,43.374032374761 L -98.7068640199345,43.3700823738164 L -98.704828019784,43.3701593747234 L -98.6973430178849,43.3704423748764 L -98.6858620149546,43.3708823763174 L -98.680675014045,43.3710693762571 L -98.6806860139156,43.3721143772139 L -98.6806970137863,43.373164377027 L -98.6731990123666,43.3708653772441 L -98.6703490110081,43.3699913767147 L -98.6638570086206,43.3680143767925 L -98.6439060028787,43.3619383778828 L -98.6333609986604,43.3587273779371 L -98.6330039991833,43.3586243780542 L -98.6276769976333,43.3570893782326 L -98.6252709966887,43.3563963779088 L -98.6251729967794,43.3563683781252 L -98.6243629966675,43.356139378104 L -98.6242369971691,43.3560253777684 L -98.6235389963119,43.3559053778713 L -98.6230459963924,43.3558203778006 L -98.6229829957449,43.3557513783088 L -98.6224189956803,43.3556373792038 L -98.6038699906023,43.3498793790178 L -98.5845089848643,43.3438693801541 L -98.5822019836539,43.3434833800659 L -98.5761569820535,43.3415673800944 L -98.5447769723615,43.3316173808679 L -98.5445579720785,43.331548381306 L -98.5442519717567,43.3314513808424 L -98.5439019719523,43.3313403810919 L -98.5371769699364,43.3292083809534 L -98.5284859680902,43.3267263811281 L -98.5284379684096,43.326713380757 L -98.5270189671289,43.3261433809514 L -98.5251629660053,43.325398380869 L -98.5250889663854,43.3253683808102 L -98.5053509601805,43.3192363818357 L -98.5003669587622,43.3176883823126 L -98.4898099557466,43.3144473817738 L -98.489621956324,43.3143983822715 L -98.4890639552088,43.3142183817867 L -98.4874519553809,43.3137193821142 L -98.4855959542572,43.3131253820507 L -98.4825559529278,43.3121853828558 L -98.4824129528127,43.3121633826921 L -98.4815109526393,43.31189538309 L -98.4763469521942,43.3103583832575 L -98.4657949483032,43.3069963827208 L -98.464149947965,43.3064703828267 L -98.4428069407066,43.2997253836894 L -98.4420309409299,43.2994803839711 L -98.4417639409662,43.2994303838939 L -98.4415549407288,43.2993803837756 L -98.4393259402346,43.2986683841414 L -98.4360889392617,43.2976533843059 L -98.4355069387554,43.2974703843002 L -98.4348709387208,43.2973293837487 L -98.4237929361966,43.2939293842456 L -98.4175379336356,43.2920093841416 L -98.4062999303795,43.2885293849171 L -98.4034639292646,43.2876513850579 L -98.4027599285596,43.2874083847226 L -98.4019049291402,43.2871133846793 L -98.400916928753,43.2867723851187 L -98.4000219282523,43.2864633849436 L -98.3984309283408,43.285914384919 L -98.3980689279426,43.2857893852084 L -98.3968869273867,43.2853813847943 L -98.3966329269435,43.2853053847482 L -98.3910219257113,43.2836253848477 L -98.390844925261,43.2835723851628 L -98.3869339237203,43.2823243850761 L -98.3753649209265,43.2786323856976 L -98.3671129176748,43.2758033859865 L -98.3669529178412,43.275748386004 L -98.3651689175859,43.2755653861442 L -98.3650279180189,43.2755203861051 L -98.3509339126581,43.2709853862898 L -98.3506789132883,43.2709423863164 L -98.3504819127465,43.2708953859457 L -98.3473729118201,43.2699093862367 L -98.3472999120252,43.2698873858195 L -98.3456329119457,43.269416385952 L -98.3425939113395,43.2684763873196 L -98.3299249071072,43.2645583869539 L -98.3273139061232,43.2637233870787 L -98.3255909059672,43.2631983872822 L -98.3065398998506,43.257392387828 L -98.3065098997134,43.2573833882759 L -98.2947278955859,43.2537923881971 L -98.2876448942679,43.2516333878245 L -98.2822728916138,43.2499973882646 L -98.2816948922038,43.2497723880972 L -98.2674548881514,43.2453923887387 L -98.2670868879054,43.2452793891582 L -98.2530368829256,43.2409573891927 L -98.2506628826663,43.2402273887523 L -98.2503638829156,43.2401363888041 L -98.2477818822439,43.2393773889977 L -98.2474818817699,43.239288389002 L -98.2474648820515,43.239283389219 L -98.2474158816477,43.2392703891268 L -98.2462658808789,43.2389373888399 L -98.2381468785949,43.2365493901338 L -98.2275508761195,43.2334333901765 L -98.2082378700621,43.2274163902948 L -98.2082118701228,43.2274083897377 L -98.2001008673365,43.2249733910857 L -98.1884428639558,43.2214733909295 L -98.1687958579876,43.2155733920654 L -98.1686448583748,43.2155283922055 L -98.1593458551848,43.2122113922393 L -98.1592408547045,43.2121833921397 L -98.1588278551509,43.2120733917648 L -98.155880853708,43.2112903919281 L -98.1552038536654,43.2111113918514 L -98.1547808531678,43.2109983922092 L -98.1543258528832,43.2108493921929 L -98.1486178515667,43.2089873922762 L -98.13140884633,43.2037293931537 L -98.1289698457735,43.2029853928729 L -98.1253488437627,43.2017793927884 L -98.1095008400804,43.1968453927512 L -98.1095008400804,43.1968823933197 L -98.1094898411081,43.2035363940615 L -98.1094838412603,43.203577394052 L -98.1094798410624,43.2036063940607 L -98.1094768406893,43.2050163941517 L -98.1094978406057,43.2060393938263 L -98.1094888412832,43.2082893950379 L -98.109494841131,43.2094563950535 L -98.1094818416105,43.2110933947847 L -98.1094808417856,43.2112103952653 L -98.1094758417627,43.2123843952111 L -98.1094758417627,43.2124123952182 L -98.1094758417627,43.212434394794 L -98.1094758417627,43.2124743949546 L -98.1094718415648,43.2135193957473 L -98.1094808417856,43.2139913962156 L -98.1094818416105,43.214017396052 L -98.1094818416105,43.2140393957035 L -98.1094818416105,43.2140583961996 L -98.1094818416105,43.2140743962337 L -98.1094818416105,43.2140873958083 L -98.1094818416105,43.2140983959497 L -98.1094938422044,43.2148283957833 L -98.1094958418542,43.2163593961772 L -98.1095158419457,43.217396395957 L -98.1095148421208,43.218263395813 L -98.1094978433006,43.218723395969 L -98.1094858427068,43.2190303957689 L -98.1095068426232,43.2216713966831 L -98.1095278434379,43.2226903969214 L -98.1095208428669,43.2251993972813 L -98.1095048429733,43.2256363972516 L -98.1095418436816,43.2315143976837 L -98.1095498440775,43.2326973980332 L -98.1095748450902,43.2365583993091 L -98.1095728454404,43.2390843988304 L -98.1095728454404,43.2391433990543 L -98.1095728454404,43.2396723992524 L -98.1095778445649,43.2399473986965 L -98.1095928464302,43.2405953987057 L -98.1095858458591,43.2417784001133 L -98.1095858458591,43.2418053997944 L -98.1095858458591,43.2418263999743 L -98.1095858458591,43.2418653999153 L -98.1095858458591,43.2419394000702 L -98.1095868456841,43.242047399746 L -98.1095868456841,43.2420673999315 L -98.1095868456841,43.2420864001998 L -98.1095868456841,43.2421014001664 L -98.1095868456841,43.2421113999239 L -98.1095878464073,43.242182400053 L -98.1095878464073,43.2422143997523 L -98.1096028455776,43.2443894002032 L -98.1095988462779,43.2447524000785 L -98.109590845882,43.2452263999204 L -98.109590845882,43.2452524001778 L -98.10959484608,43.2456533997718 L -98.1096098461486,43.2473133999202 L -98.1096098461486,43.2473564002257 L -98.1096098461486,43.2473674002533 L -98.1096108459735,43.2474054000955 L -98.1096108459735,43.2474354000229 L -98.1096588465524,43.252539400896 L -98.1096588465524,43.2525584011696 L -98.1096698473214,43.2537484012215 L -98.1096728467961,43.2540474009348 L -98.1097148484255,43.2582454020783 L -98.1097148484255,43.2582564021019 L -98.1097958477181,43.2602334019724 L -98.1097958477181,43.2602444022911 L -98.1098188481826,43.2607864018545 L -98.1098638492868,43.2623574020322 L -98.1098918488758,43.2627714031498 L -98.1099448485793,43.263052402998 L -98.1099308492339,43.264780403218 L -98.1099768492647,43.26702940286 L -98.1099638488459,43.268306403316 L -98.1099488487772,43.268615402826 L -98.1101378507198,43.2831924047263 L -98.1102158523342,43.2884624059952 L -98.1103578526244,43.2974324072058 L -98.110589855123,43.3118584091953 L -98.1106488555725,43.3146974101926 L -98.1106908563036,43.3167264100884 L -98.1107298557634,43.3185014097454 L -98.1107928573092,43.3220504111037 L -98.1108478566625,43.3262314109778 L -98.1108958581397,43.3290114122351 L -98.1109168580561,43.3296764118911 L -98.1110118593889,43.3357184131228 L -98.1110018593432,43.3359144126844 L -98.1109358592209,43.3372274129681 L -98.110971859206,43.3381114127767 L -98.111075858963,43.3406334128068 L -98.1111018598006,43.3424334139859 L -98.1112838611721,43.3550114162378 L -98.1113558620405,43.3567984158325 L -98.1113738615838,43.3572374156793 L -98.1114778631375,43.3634044170661 L -98.1115428634348,43.3694754178431 L -98.1115858639909,43.3709104177254 L -98.1116218639759,43.3721244182934 L -98.1116288636486,43.3726434177957 L -98.1116548635878,43.374593418151 L -98.1116558643111,43.3746454177897 L -98.1117938653016,43.3838844200506 L -98.1118398662307,43.3856114198466 L -98.1118888657362,43.3874114200631 L -98.1119008663301,43.3886614201192 L -98.111901866155,43.3887504203173 L -98.1120228674271,43.3963294208022 L -98.1120538682876,43.3983234216862 L -98.1122148688444,43.4071364228026 L -98.1123168698499,43.4127364238464 L -98.1124368703989,43.4193344252596 L -98.1124458706197,43.4198294249678 L -98.1124538710156,43.4202454248805 L -98.1125778717625,43.4270454257836 L -98.1125788715874,43.4270904258273 L -98.1126608733998,43.4348754269388 L -98.1127288740702,43.4414474278999 L -98.11273087372,43.4415304281626 L -98.1127338740931,43.4417644279839 L -98.1127338740931,43.4417914282311 L -98.1127338740931,43.4418244277923 L -98.1127348739179,43.4418894282785 L -98.1127368735678,43.4420174279681 L -98.1127408737657,43.4423054279102 L -98.1127648740552,43.4440474279924 L -98.1127728735528,43.4450844281559 L -98.1127828735985,43.4463914282465 L -98.1127868737965,43.4466134278704 L -98.1127868737965,43.4466234279106 L -98.1128158750071,43.4480984291137 L -98.1128198752051,43.4489624292819 L -98.1128198752051,43.4489784288546 L -98.112823875403,43.4499774288886 L -98.1128628748628,43.4531364290872 L -98.1128668759591,43.4557824300834 L -98.1128668759591,43.4558144301809 L -98.1128668759591,43.4558324298615 L -98.112867875784,43.4558684298588 L -98.1128688756089,43.4559424297496 L -98.1128938757232,43.4585644301191 L -98.1129738769875,43.4669374310351 L -98.1129758766373,43.4671244311962 L -98.1129768773605,43.4672564307698 L -98.113188877971,43.4701124317373 L -98.1131998787399,43.4802704328734 L -98.1132048796611,43.484446433727 L -98.1135258800515,43.4873084338005 L -98.1135358800972,43.4874064337348 L -98.1136228801359,43.488276433948 L -98.1142328811296,43.4936494351788 L -98.1142348807794,43.4936674353239 L -98.1142358806043,43.4936764350685 L -98.1142418813504,43.493721435075 L -98.1142478811982,43.4937764351098 L -98.1142618814419,43.4939004350875 L -98.1142668805664,43.4939404352362 L -98.1144718806058,43.4957104348407 L -98.1145058818393,43.4960774349639 L -98.1147648823054,43.4982864362782 L -98.1147668819552,43.4983044356927 L -98.1151288823535,43.4983044356927 L -98.1153768820506,43.4983034347841 L -98.1156268822959,43.4983024351788 L -98.1158758818179,43.4983004353164 L -98.1161248822382,43.4982984348024 L -98.1163728819354,43.4982964349399 L -98.1166198818076,43.4982954346828 L -98.1171178826482,43.4982914349576 L -98.1173668830686,43.4982904347005 L -98.1176148827657,43.4982884348377 L -98.1178638831861,43.4982874352321 L -98.1183618831284,43.4982834348548 L -98.1186098828256,43.4982814349918 L -98.1188588832459,43.4982804347345 L -98.119106882943,43.4982784348714 L -98.1193568831883,43.4982774352657 L -98.1196048828854,43.4982754347509 L -98.1198538833057,43.4982744351451 L -98.1201028828278,43.4982724352818 L -98.1203518832481,43.498269435161 L -98.1205988831203,43.4982684349035 L -98.1208478826423,43.49826643504 L -98.121096883961,43.4982654347824 L -98.1213468842062,43.4982634349188 L -98.1215948839034,43.4982624353129 L -98.1218438843237,43.4982604347975 L -98.1220918840208,43.4982594351915 L -98.1223398837179,43.49825643507 L -98.1228368838354,43.4982534349484 L -98.1230858842558,43.4982524346906 L -98.1231238838906,43.4982504348266 L -98.1233368843259,43.4982494352204 L -98.123584884023,43.4982484349625 L -98.1238328837202,43.4982474347047 L -98.1240818841405,43.4982464350985 L -98.1243308836625,43.4982444352342 L -98.1248278846783,43.4982424347183 L -98.1250778849236,43.498241435112 L -98.1253268853439,43.498240434854 L -98.125574885041,43.4982394352476 L -98.1258228847381,43.4982384349896 L -98.1263208846805,43.4982354348671 L -98.126568885276,43.4982344352607 L -98.1268168849731,43.4982334350025 L -98.1270668852183,43.4982324347444 L -98.1273158847404,43.4982314351379 L -98.1275638853358,43.4982304348798 L -98.1278118850329,43.4982294352732 L -98.1280608845549,43.4982274347568 L -98.1285588862939,43.498225434892 L -98.128807885816,43.4982244339821 L -98.1290558864114,43.4982234337238 L -98.1293048859334,43.4982224341172 L -98.1295538863538,43.4982214338589 L -98.1298018860509,43.4982194339939 L -98.1300508855729,43.4982184337356 L -98.1302998859932,43.4982174341288 L -98.1305478856904,43.4982164338704 L -98.1307968861107,43.4982154342636 L -98.1310458856327,43.4982144340052 L -98.1315438855751,43.4982114338815 L -98.1317928859955,43.4982104342747 L -98.1320408856926,43.4982094340161 L -98.1322888871863,43.4982084337576 L -98.1325388874316,43.4982074341507 L -98.1330358866507,43.4982054342852 L -98.1332848870711,43.4982034337681 L -98.1335338865931,43.4982024341611 L -98.1337818871885,43.4982014339025 L -98.1340298868857,43.4982004342954 L -98.1342808869558,43.4981994340368 L -98.1344868868201,43.4981984337781 L -98.1347358872405,43.4981964339123 L -98.1349848867625,43.4981954343052 L -98.1352338871829,43.4981934337877 L -98.1357308873003,43.4981914339217 L -98.1359798868223,43.4981894340557 L -98.1362278883161,43.4981884337968 L -98.1364768878381,43.4981864339308 L -98.1367258882585,43.4981854343235 L -98.1369748877805,43.4981834338056 L -98.1372238882008,43.4981824341983 L -98.1374728877229,43.4981804336804 L -98.1377198875951,43.498179434073 L -98.1379688880154,43.498178433814 L -98.1382188882607,43.4981764339475 L -98.1384678877827,43.4981754336885 L -98.1387158883781,43.4981734338219 L -98.1392138883205,43.4981704336962 L -98.1394618880176,43.4981694340887 L -98.1397098877147,43.4981674342219 L -98.1399588890334,43.4981664339627 L -98.1402088892787,43.4981654337035 L -98.1404578888007,43.4981634338366 L -98.1407058893961,43.498162434229 L -98.1409538890932,43.4981604337103 L -98.1412028886153,43.4981594341027 L -98.1417008885576,43.4981564339762 L -98.141949888978,43.498154434109 L -98.1423358887673,43.4981524342418 L -98.1424468890954,43.498151432679 L -98.1426958886175,43.4981504330712 L -98.1429438892129,43.4981484332038 L -98.1434418891553,43.4981464326848 L -98.1436908895756,43.4981444328172 L -98.143762890444,43.4981444328172 L -98.143938890171,43.4981434332093 L -98.1441878896931,43.49814143269 L -98.1444368901134,43.498140433082 L -98.1446858896354,43.4981384332143 L -98.1449338902309,43.4981374329547 L -98.145181889928,43.4981354330868 L -98.1454308903483,43.4981344328271 L -98.1456808896953,43.4981324329592 L -98.1460548897891,43.4981304330912 L -98.1463038902094,43.4981294328314 L -98.1468008903269,43.4981264327034 L -98.147048890024,43.4981244328353 L -98.1472978904444,43.498123433227 L -98.1475468908647,43.4981214327071 L -98.1480448908071,43.4981184332304 L -98.1482938912274,43.4981174329704 L -98.1485418909245,43.4981154331019 L -98.1487898906217,43.4981144328418 L -98.149038891042,43.4981124329732 L -98.149287890564,43.4981114327131 L -98.1495378908093,43.4981094328445 L -98.1497858914047,43.4981084332359 L -98.1500338911018,43.4981064327155 L -98.1502828906239,43.4981054331069 L -98.1507798907413,43.4981024329778 L -98.151241891597,43.4981014327175 L -98.151284892153,43.4981014327175 L -98.1513428918793,43.4981014327175 L -98.1514188920473,43.4981014327175 L -98.1515098922839,43.4981014327175 L -98.151609891843,43.4981014327175 L -98.1517168919732,43.4981014327175 L -98.1518448920197,43.4981004331088 L -98.1519958916324,43.4981004331088 L -98.1521638918619,43.4981004331088 L -98.1523408923122,43.4981004331088 L -98.1523668922515,43.4981004331088 L -98.1525258922602,43.4980994328485 L -98.1527188917057,43.4980994328485 L -98.1529218920953,43.4980994328485 L -98.1531298916094,43.4980984332398 L -98.1533448916946,43.4980984332398 L -98.1535628921528,43.4980984332398 L -98.1541448917607,43.4980974329794 L -98.1545518923648,43.4980954331103 L -98.154799892062,43.4980944328499 L -98.1550478926574,43.4980934332411 L -98.1552978929026,43.4980924329807 L -98.155795892845,43.4980904331114 L -98.1560438934404,43.4980894328509 L -98.1562918931376,43.4980884319387 L -98.1567898930799,43.4980864320693 L -98.157038892602,43.4980864320693 L -98.1575368934426,43.4980844321998 L -98.1577858929647,43.4980834319393 L -98.1580338926618,43.4980824316786 L -98.1582818932572,43.4980814320697 L -98.1585308927793,43.498080431809 L -98.1587798931996,43.4980794322 L -98.1590288936199,43.4980784319393 L -98.1595268935623,43.4980764320696 L -98.1597758939827,43.4980754318088 L -98.1600228938549,43.4980744321997 L -98.1602718942752,43.498073431939 L -98.1605208937972,43.4980724316782 L -98.1607698942176,43.498071432069 L -98.1610188937396,43.4980704318082 L -98.16126789416,43.4980694321991 L -98.161516893682,43.4980684319382 L -98.1617648942774,43.4980674316774 L -98.1620128939745,43.4980664320682 L -98.1622618943949,43.4980654318073 L -98.1625108939169,43.498064432198 L -98.1626638949761,43.4980634319371 L -98.1627608950605,43.4980634319371 L -98.1630088947576,43.4980624316762 L -98.1632578951779,43.4980614320668 L -98.1635058948751,43.4980604318059 L -98.1640028949925,43.4980584319355 L -98.1642518954129,43.4980574316745 L -98.1645008949349,43.4980564320651 L -98.1647508951801,43.498055431804 L -98.1649988948773,43.4980544321946 L -98.1652478952976,43.4980534319335 L -98.1654958949947,43.498052432324 L -98.1657448954151,43.4980514320629 L -98.1659928951122,43.4980504318018 L -98.1662418946342,43.4980494321923 L -98.1664908959529,43.4980484319311 L -98.1667398963732,43.4980474323215 L -98.1669888958953,43.4980464320603 L -98.1672368955924,43.4980454317991 L -98.167734896433,43.4980434319283 L -98.1679828961302,43.4980424323187 L -98.1682318956522,43.4980414320573 L -98.1684818958975,43.4980404317961 L -98.1687298955946,43.4980394321864 L -98.1689788960149,43.498038431925 L -98.169226895712,43.4980374323153 L -98.1694758961324,43.498036432054 L -98.1697238958295,43.4980354317926 L -98.1702218966702,43.4980334312698 L -98.1704718969154,43.4980324310083 L -98.1707188967876,43.4980314307468 L -98.17121689673,43.4980294308756 L -98.1714658971504,43.4980284312657 L -98.1722118967898,43.4980254311327 L -98.1724608972102,43.4980244308712 L -98.1729578973277,43.4980224309996 L -98.1732068968497,43.498021430738 L -98.17345589727,43.498020431128 L -98.1739498979128,43.4980184312563 L -98.1743418984482,43.4980174309947 L -98.1745908979703,43.4980164307329 L -98.1748398983906,43.4980154311229 L -98.1750878980877,43.4980144308612 L -98.1755848982052,43.4980124309893 L -98.1758338977272,43.4980124309893 L -98.1760828981476,43.4980114307275 L -98.1763318976696,43.4980104311173 L -98.1765808980899,43.4980094308555 L -98.176829897612,43.4980084312453 L -98.1770778982074,43.4980074309834 L -98.1773258979045,43.4980064307216 L -98.1775748983248,43.4980064307216 L -98.1778238987452,43.4980054311113 L -98.1780728991655,43.4980044308494 L -98.1783218986876,43.4980034312392 L -98.1785708991079,43.4980024309772 L -98.17881989863,43.4980014307153 L -98.1790668994005,43.4980014307153 L -98.1793158989225,43.498000431105 L -98.1795648993429,43.497999430843 L -98.1798138988649,43.4979984312326 L -98.1800628992852,43.4979974309706 L -98.1803118988072,43.4979964307086 L -98.1805608992276,43.4979964307086 L -98.1808098987496,43.4979954310982 L -98.1810568986218,43.4979944308361 L -98.1813058990422,43.4979934312257 L -98.1815549003608,43.4979924309636 L -98.1818048997078,43.4979914307015 L -98.1822079001139,43.4979904310909 L -98.1823018998252,43.4979904310909 L -98.1825509002456,43.4979894308288 L -98.1827988999427,43.4979884312183 L -98.1830468996398,43.4979874309561 L -98.1832959000602,43.4979864306939 L -98.1835448995822,43.4979854297801 L -98.1837939000025,43.4979844301695 L -98.1840429004229,43.4979844301695 L -98.1842918999449,43.4979834299072 L -98.1845409003652,43.4979824302966 L -98.1847889000624,43.4979814300343 L -98.1850368997595,43.497980429772 L -98.1852859001798,43.4979794301614 L -98.1855349006002,43.497978429899 L -98.1857839010205,43.497978429899 L -98.1862819009629,43.497976430026 L -98.1865309013832,43.4979754297636 L -98.1867779012554,43.4979744301528 L -98.1870269007774,43.4979734298904 L -98.1872759011978,43.4979724302796 L -98.1875259014431,43.4979724302796 L -98.1877739011402,43.4979714300172 L -98.1882719010825,43.4979694301439 L -98.1885199007797,43.4979684298814 L -98.1887679013751,43.4979674302705 L -98.1890169008971,43.497966430008 L -98.1892659022158,43.4979654297454 L -98.1895149017378,43.4979654297454 L -98.1897639021581,43.4979644301345 L -98.1900119018553,43.497963429872 L -98.1902609022756,43.497962430261 L -98.1905089019727,43.4979614299984 L -98.1907579023931,43.4979604297358 L -98.1910069019151,43.4979594301247 L -98.1912549016122,43.4979594301247 L -98.1915039020326,43.4979584298621 L -98.1917529015546,43.497957430251 L -98.1918689019056,43.4979564299883 L -98.1920019019749,43.4979564299883 L -98.1922509023953,43.4979554297256 L -98.1924989020924,43.4979544301145 L -98.1927479016144,43.4979534298518 L -98.1929959031082,43.4979524302407 L -98.1932459033534,43.4979524302407 L -98.1934949028755,43.4979514299779 L -98.193737903448,43.4979504297151 L -98.194131902735,43.497949430104 L -98.1943809031554,43.4979484298411 L -98.1946299026774,43.4979474302299 L -98.1948779032728,43.4979464299671 L -98.1951259029699,43.4979454297042 L -98.1953759032152,43.4979454297042 L -98.1956249027372,43.4979444300929 L -98.1958729033326,43.49794342983 L -98.1961219028547,43.4979424302187 L -98.196370903275,43.4979414299558 L -98.196619902797,43.4979414299558 L -98.1968679042908,43.4979404296928 L -98.1971169038128,43.4979394287782 L -98.1976149037552,43.4979374289038 L -98.1978629043506,43.4979374289038 L -98.1981119038726,43.4979364292925 L -98.198360904293,43.4979354290294 L -98.198609903815,43.4979344287664 L -98.1988579044105,43.4979344287664 L -98.1993559043528,43.4979324288918 L -98.19960390405,43.4979314292804 L -98.199852903572,43.4979304290173 L -98.2001019039923,43.4979304290173 L -98.2003509044127,43.4979294287541 L -98.2005989050081,43.4979284291426 L -98.2010969049505,43.4979264292678 L -98.2013459053708,43.4979264292678 L -98.2015939050679,43.4979254290047 L -98.20184290459,43.4979244287414 L -98.2020919050103,43.4979234291298 L -98.2021089047287,43.4979234291298 L -98.2023409054306,43.4979224288666 L -98.2025889051278,43.497921429255 L -98.2028379046498,43.497921429255 L -98.2030869050701,43.4979204289916 L -98.2033359045922,43.4979194287283 L -98.2035839051876,43.4979184291167 L -98.2038329047096,43.4979174288533 L -98.2038769050906,43.4979174288533 L -98.2040809053051,43.4979174288533 L -98.2043299057254,43.4979164292416 L -98.2045779063208,43.4979154289783 L -98.2048279056678,43.4979144287148 L -98.2050769060881,43.4979134291031 L -98.2053249057852,43.4979134291031 L -98.2055729063807,43.4979124288397 L -98.2058219059027,43.4979114292278 L -98.206070906323,43.4979104289644 L -98.2063189060202,43.4979094287009 L -98.2065679064405,43.4979084290891 L -98.2068179057874,43.4979084290891 L -98.2070659063829,43.4979074288256 L -98.2073649061336,43.4979064292137 L -98.2076129058307,43.4979054289501 L -98.2078619062511,43.4979044286866 L -98.2081109066714,43.4979034290746 L -98.2083589072669,43.4979014291991 L -98.2086089066138,43.4979004289355 L -98.2088579070342,43.4978994293235 L -98.2091059067313,43.4978984290598 L -98.2093539073267,43.4978974287962 L -98.2096029068487,43.4978964291841 L -98.2098519072691,43.4978954289204 L -98.2100999069662,43.4978944293083 L -98.2103489073865,43.4978934290446 L -98.2105989067335,43.4978924287808 L -98.2108469073289,43.4978914278654 L -98.211094907026,43.4978904282533 L -98.2113439074464,43.4978894279895 L -98.2118419082871,43.4978874281134 L -98.2120899079842,43.4978864278496 L -98.2125879079265,43.4978844279735 L -98.2128369083469,43.4978834277096 L -98.213333907566,43.4978804282211 L -98.2135719081157,43.4978814278333 L -98.2136679083752,43.4978814278333 L -98.2137639077364,43.4978814278333 L -98.213857908346,43.4978814278333 L -98.2139569080802,43.4978824280973 L -98.2140579083625,43.4978824280973 L -98.2141669081425,43.4978824280973 L -98.2143819082276,43.4978824280973 L -98.2145609083278,43.4978834277096 L -98.2152959080966,43.4978864278496 L -98.2155449076186,43.4978864278496 L -98.2157929091124,43.4978874281134 L -98.2160409088095,43.4978884277257 L -98.2162899092299,43.4978894279895 L -98.2165399085768,43.4978904282533 L -98.2167879091722,43.4978914278654 L -98.2170369086943,43.4978924281292 L -98.2172859091146,43.4978934277413 L -98.2175349086366,43.4978944280051 L -98.2177829092321,43.4978954282688 L -98.2180319087541,43.4978964278809 L -98.2182809091744,43.4978974281445 L -98.2187779092919,43.4978984277565 L -98.2190269088139,43.4978994280202 L -98.21977291025,43.4979024281594 L -98.2200209099472,43.4979034277714 L -98.2202699103675,43.4979044280349 L -98.2205199097144,43.4979054282985 L -98.2212659102522,43.4979074281739 L -98.2215139099494,43.4979084277858 L -98.2217629103697,43.4979094280493 L -98.2219319104241,43.4979104283127 L -98.2220109100668,43.4979104283127 L -98.2225079101843,43.497912428188 L -98.2227579104295,43.4979134277998 L -98.2230059101267,43.4979144280632 L -98.2232549114453,43.497915427675 L -98.2240009110848,43.4979174282017 L -98.2242499106068,43.4979184278134 L -98.2245649111494,43.4979214273 L -98.2248139106714,43.4979234271749 L -98.2250629110918,43.4979254270498 L -98.2253109107889,43.4979274269245 L -98.2255599112092,43.4979294267992 L -98.2258089107313,43.4979314273255 L -98.2260569113267,43.4979334272 L -98.2263059108487,43.4979354270745 L -98.2265549112691,43.497937426949 L -98.2268029109662,43.4979394268233 L -98.2270529121098,43.4979414266976 L -98.2273019116318,43.4979444268347 L -98.2275499122272,43.4979464267089 L -98.2277989117493,43.4979484272345 L -98.2280469123447,43.4979504271086 L -98.2282959118667,43.4979524269825 L -98.2285449122871,43.4979544268564 L -98.2287929119842,43.4979564267301 L -98.2290429122295,43.4979584272555 L -98.2292919117515,43.4979604271292 L -98.2295399123469,43.4979624270028 L -98.2297889118689,43.4979644268763 L -98.2300379122893,43.4979664267498 L -98.2302859119864,43.4979684272748 L -98.2305349124068,43.4979704271482 L -98.2307839128271,43.4979724270215 L -98.2310309126993,43.4979744268946 L -98.2312809129445,43.4979764267678 L -98.2315289126417,43.4979784272925 L -98.231777913062,43.4979814267761 L -98.2320259127591,43.4979834273007 L -98.2322739133546,43.4979854271735 L -98.2325229128766,43.4979874270463 L -98.2327709125737,43.497989426919 L -98.2332669128663,43.4979934273159 L -98.233641912785,43.4980014268055 L -98.2338679127408,43.4980064268118 L -98.2343199126524,43.4980164268231 L -98.2345459144048,43.4980214268282 L -98.2347719143606,43.4980264268328 L -98.2349979143165,43.4980314268371 L -98.2352239142723,43.4980364268408 L -98.2354499142281,43.4980414268443 L -98.235674914359,43.4980464268473 L -98.2359009143148,43.4980514268498 L -98.2361269142706,43.498056426852 L -98.2363529142264,43.4980614268537 L -98.2365789141822,43.4980664268551 L -98.236804914138,43.498071426856 L -98.2370309140938,43.4980764268565 L -98.2372569140496,43.4980814268566 L -98.2374829140055,43.4980864268562 L -98.2377089139613,43.4980914268555 L -98.2379349139171,43.4980964268544 L -98.2381609138729,43.4981014268528 L -98.238386914727,43.4981064268508 L -98.238613915406,43.4981114268484 L -98.2388399153619,43.4981154259339 L -98.2390659153177,43.4981204259307 L -98.2392919152735,43.4981254259272 L -98.2395179152293,43.4981304259233 L -98.2397439151851,43.4981354259188 L -98.2399699151409,43.498140425914 L -98.2401949152718,43.4981454259089 L -98.2404209152276,43.4981504259032 L -98.2406469151834,43.4981554258972 L -98.2408729151392,43.4981604258907 L -98.2410999149199,43.4981654258838 L -98.2413259148758,43.4981704258766 L -98.2415519148316,43.4981754258689 L -98.2417879148331,43.4981804258608 L -98.2420039156415,43.4981854258522 L -98.2422299155973,43.4981904258433 L -98.2424559155531,43.498195425834 L -98.2426819164072,43.4982004258242 L -98.2429079163631,43.498205425814 L -98.2431339163189,43.4982104258034 L -98.2433599162747,43.4982154257924 L -98.2435869160554,43.498220425781 L -98.2438129160112,43.4982254257691 L -98.244038915967,43.4982304257569 L -98.2442639160979,43.4982354257442 L -98.2444899160537,43.4982404257311 L -98.2447159160095,43.4982454257177 L -98.2451679159212,43.4982554256894 L -98.245393915877,43.4982594260686 L -98.2456199158328,43.4982644260536 L -98.2458459166869,43.4982694260381 L -98.2460729173659,43.4982744260222 L -98.2462989173217,43.4982794260059 L -98.2465249172775,43.4982844259892 L -98.2467509172334,43.498289425972 L -98.2469769171892,43.4982944259545 L -98.247202917145,43.4982994259365 L -98.2474289171008,43.4983044259181 L -98.2476549170566,43.4983094258994 L -98.2478809170124,43.4983144258802 L -98.2481069169682,43.4983194258605 L -98.248332916924,43.4983244258405 L -98.2485589168798,43.4983294258201 L -98.2487849168356,43.4983344257992 L -98.2490109167914,43.4983394257779 L -98.2492369167473,43.4983444257562 L -98.2494629176014,43.4983494257341 L -98.2496889175572,43.4983544257116 L -98.2499149184113,43.4983594256887 L -98.2501409183671,43.498364426317 L -98.2503669183229,43.4983684260373 L -98.2505929182787,43.4983734260133 L -98.2508189182345,43.4983784259887 L -98.2510449181904,43.4983834259638 L -98.2512719179711,43.4983884259385 L -98.2514979179269,43.4983934259127 L -98.2517239178827,43.4983984258866 L -98.2519489180136,43.49840342586 L -98.2521749179694,43.498408425833 L -98.2523999181003,43.4984134258056 L -98.2526259180561,43.4984184257778 L -98.252915917586,43.4984244260045 L -98.2532569189662,43.4984324247854 L -98.253482918922,43.498437424756 L -98.2537099187027,43.4984424247262 L -98.2539359186585,43.4984484249505 L -98.2541619186143,43.4984534249198 L -98.2543879185701,43.4984584248887 L -98.2546139194243,43.4984634248571 L -98.2548399193801,43.4984684248252 L -98.2550659193359,43.4984734247928 L -98.2552919192917,43.4984794250141 L -98.2555179192475,43.4984844249808 L -98.2557439192033,43.4984894249471 L -98.2559699191591,43.498494424913 L -98.2561959191149,43.4984994248784 L -98.2564229188957,43.4985044248435 L -98.2566489188515,43.4985094248082 L -98.2568739189824,43.4985154250259 L -98.2570999198365,43.4985204249896 L -98.2573259197923,43.4985254249529 L -98.2577779197039,43.4985354248783 L -98.2580039196597,43.4985404248404 L -98.2582299196155,43.498546425055 L -98.2584559195714,43.4985514250162 L -98.2586819204255,43.4985564249769 L -98.2589089202062,43.4985614249372 L -98.259134920162,43.4985664248972 L -98.2593609201178,43.4985714248567 L -98.2595869200736,43.4985764248158 L -98.2598129200294,43.4985824250268 L -98.2600389199852,43.498587424985 L -98.2602649199411,43.4985924249428 L -98.2603629198503,43.4985944247954 L -98.2604909198969,43.4985974249001 L -98.260716920751,43.4986024248571 L -98.2609429207068,43.4986074248136 L -98.2613049211051,43.4986154248735 L -98.2613939207935,43.4986184249772 L -98.2616209205742,43.4986234249324 L -98.2616729213511,43.498624425184 L -98.2619869211704,43.4986314249902 L -98.2620729213842,43.4986334248416 L -98.26229892134,43.4986384247955 L -98.2625239205725,43.4986434247491 L -98.2627499214267,43.4986494249534 L -98.2629759213825,43.4986544249061 L -98.2632019213383,43.4986594248583 L -98.263536921074,43.4986594248583 L -98.2637629210299,43.4986604251094 L -98.2639909206355,43.4986604251094 L -98.2642169205913,43.4986604251094 L -98.2644429223437,43.4986614247087 L -98.2646689222995,43.4986614247087 L -98.2648949222554,43.4986614247087 L -98.2651209222112,43.4986624249597 L -98.265346922167,43.4986624249597 L -98.2655729221228,43.4986624249597 L -98.2657979222537,43.4986634252107 L -98.2660249220344,43.4986634252107 L -98.2662509219902,43.4986634252107 L -98.2664779217709,43.4986644248101 L -98.2667039217268,43.4986644248101 L -98.2669299216826,43.4986644248101 L -98.2671559216384,43.4986654250611 L -98.2673819215942,43.4986654237578 L -98.2676079224483,43.4986654237578 L -98.2678339224041,43.4986664240088 L -98.2680599223599,43.4986664240088 L -98.268285923214,43.4986664240088 L -98.2685119231698,43.4986674242597 L -98.2687379231257,43.4986674242597 L -98.2689649229064,43.4986674242597 L -98.2691909228622,43.4986674242597 L -98.269416922818,43.498668423859 L -98.2694819231153,43.4986764239108 L -98.2695189229252,43.4986744240609 L -98.2695569225601,43.4986744240609 L -98.2695949230932,43.4986674242597 L -98.2696319229031,43.4986674242597 L -98.2696699234363,43.4986674242597 L -98.2697079230711,43.4986674242597 L -98.269745922706,43.4986674242597 L -98.2697829234142,43.4986674242597 L -98.269820923049,43.4986674242597 L -98.2698589226839,43.4986664240088 L -98.2698729229276,43.4986664240088 L -98.2699109225624,43.4986664240088 L -98.2699489230956,43.4986664240088 L -98.2699859229055,43.4986664240088 L -98.2700229227154,43.4986664240088 L -98.2700609232486,43.4986664240088 L -98.2700989228834,43.4986664240088 L -98.2701479232872,43.4986664240088 L -98.2702609232651,43.498668423859 L -98.2704489226878,43.4986694241099 L -98.2706379228336,43.498668423859 L -98.2708639227894,43.498668423859 L -98.2712039234464,43.4986704237091 L -98.2713159227011,43.49867142396 L -98.2715419226569,43.49867142396 L -98.2718059231458,43.49867342381 L -98.2718809225906,43.49867342381 L -98.2719939243651,43.49867142396 L -98.2720699236348,43.4986704237091 L -98.2723329242989,43.4986744240609 L -98.2724459242767,43.4986744240609 L -98.2726719242325,43.49867342381 L -98.2728989240133,43.49867142396 L -98.2733229243358,43.49867142396 L -98.2735499241165,43.49867142396 L -98.2737759240723,43.49867142396 L -98.2740029238531,43.4986724242109 L -98.2742289238088,43.4986724242109 L -98.2744549237647,43.4986724242109 L -98.2746809237205,43.4986724242109 L -98.2749059238514,43.4986724242109 L -98.2751319238072,43.4986724242109 L -98.275357923763,43.4986724242109 L -98.2755839237188,43.4986724242109 L -98.2758109252962,43.4986724242109 L -98.2760379250769,43.4986724242109 L -98.2762639250327,43.49867342381 L -98.2764899249885,43.49867342381 L -98.2767159249443,43.49867342381 L -98.2769419249001,43.49867342381 L -98.2771679248559,43.49867342381 L -98.2773939248117,43.49867342381 L -98.2776199247675,43.49867342381 L -98.2778449248984,43.49867342381 L -98.2780719246792,43.49867342381 L -98.2782989253582,43.49867342381 L -98.278524925314,43.4986744240609 L -98.2787509252698,43.4986744240609 L -98.2789769252256,43.4986744240609 L -98.2792029251814,43.4986744240609 L -98.2794289251373,43.4986744240609 L -98.2796549259914,43.4986744240609 L -98.2798809259472,43.4986744240609 L -98.2801079257279,43.4986744240609 L -98.2803339256837,43.4986744240609 L -98.2805599256395,43.4986754243117 L -98.2807859255953,43.4986754243117 L -98.2810119255511,43.4986754230084 L -98.2811429259707,43.4986754230084 L -98.2812379264053,43.4986754230084 L -98.2814639263611,43.4986754230084 L -98.2816899263169,43.4986754230084 L -98.2819159262727,43.4986754230084 L -98.2821429260534,43.4986754230084 L -98.2823689260092,43.4986754230084 L -98.282594925965,43.4986754230084 L -98.2828209259208,43.4986754230084 L -98.2830479257016,43.4986764232592 L -98.2832739256574,43.4986764232592 L -98.2834999274098,43.4986764232592 L -98.2837249266424,43.4986764232592 L -98.2839519273214,43.4986764232592 L -98.2841779272772,43.4986764232592 L -98.284403927233,43.4986764232592 L -98.2848559271447,43.4986764232592 L -98.2850819271005,43.4986764232592 L -98.2853079270563,43.4986764232592 L -98.285534926837,43.4986774228583 L -98.2857609267928,43.4986774228583 L -98.2859879265735,43.4986774228583 L -98.2862129267044,43.4986774228583 L -98.2864389266602,43.4986774228583 L -98.2866649266161,43.4986774228583 L -98.2868909265719,43.4986774228583 L -98.2871169283243,43.4986774228583 L -98.2873429282801,43.4986774228583 L -98.2875689282359,43.4986774228583 L -98.2877959280166,43.4986774228583 L -98.2880229277974,43.4986774228583 L -98.2882489277532,43.4986784231091 L -98.288474927709,43.4986784231091 L -98.2887009276648,43.4986784231091 L -98.2889259277957,43.4986784231091 L -98.2891519277515,43.4986784231091 L -98.2893779277073,43.4986784231091 L -98.2896039276631,43.4986784231091 L -98.2898299276189,43.4986784231091 L -98.290056928298,43.4986784231091 L -98.2902839280787,43.4986784231091 L -98.2907359279903,43.4986784231091 L -98.2909619288444,43.4986784231091 L -98.291413928756,43.4986794227082 L -98.2916399287118,43.4986794227082 L -98.2920919286235,43.4986794227082 L -98.2923179285793,43.4986794227082 L -98.2925989287867,43.4986794227082 L -98.2929829289262,43.4986794227082 L -98.293208928882,43.4986794227082 L -98.2936609287937,43.4986794227082 L -98.2938869287495,43.4986794227082 L -98.2941139294285,43.4986794227082 L -98.2943399293843,43.4986794227082 L -98.2945659293401,43.4986784231091 L -98.2947919301943,43.4986784218058 L -98.2950179301501,43.4986784218058 L -98.2952449299308,43.4986784218058 L -98.2954709298866,43.4986784218058 L -98.2956959300175,43.4986784218058 L -98.2959219299733,43.4986784218058 L -98.296148929754,43.4986784218058 L -98.2963749297098,43.4986784218058 L -98.2968269296214,43.4986784218058 L -98.2970529295772,43.4986784218058 L -98.2977319301679,43.4986784218058 L -98.2979589299486,43.4986774222067 L -98.2981849299045,43.4986774222067 L -98.2984099300353,43.4986774222067 L -98.2988619308453,43.4986774222067 L -98.2990879308011,43.4986774222067 L -98.2993139307569,43.4986774222067 L -98.2995399307127,43.4986774222067 L -98.2997669313917,43.4986774222067 L -98.2999939311725,43.4986774222067 L -98.3004459310841,43.4986774222067 L -98.3006719310399,43.4986774222067 L -98.3008969311708,43.4986764219559 L -98.3009259305848,43.4986764219559 L -98.3011229311266,43.4986764219559 L -98.3013489310824,43.4986764219559 L -98.3018019308189,43.4986764219559 L -98.3020289305997,43.4986764219559 L -98.3022549305555,43.4986764219559 L -98.3024809323079,43.4986764219559 L -98.3027069322637,43.4986764219559 L -98.3031589321753,43.4986764219559 L -98.3033849321311,43.4986764219559 L -98.303609932262,43.4986754217052 L -98.3038359322179,43.4986754217052 L -98.3040629319986,43.4986754217052 L -98.3042899317793,43.4986754217052 L -98.3045159317351,43.4986754217052 L -98.3047419316909,43.4986754217052 L -98.3049679316467,43.4986754217052 L -98.3051939316025,43.4986754217052 L -98.3054199315583,43.4986754217052 L -98.3056459324125,43.4986754217052 L -98.3058719323683,43.4986754217052 L -98.3060989330473,43.4986754217052 L -98.3063239331782,43.498674422106 L -98.3065509329589,43.498674422106 L -98.3067769329147,43.498674422106 L -98.3070029328705,43.498674422106 L -98.3074549327822,43.498674422106 L -98.307680932738,43.498674422106 L -98.307907933417,43.498674422106 L -98.3081339333728,43.498674422106 L -98.3083599333286,43.498674422106 L -98.3085859332844,43.4986744208027 L -98.3088119332402,43.4986734212035 L -98.309037933196,43.4986734212035 L -98.3092629333269,43.4986734212035 L -98.3094889332828,43.4986734212035 L -98.3097149332386,43.4986734212035 L -98.3099419339176,43.4986734212035 L -98.3101679338734,43.4986734212035 L -98.3103939338292,43.4986734212035 L -98.310619933785,43.4986734212035 L -98.3110729344199,43.4986724209527 L -98.3112979336525,43.4986724209527 L -98.3115239336083,43.4986724209527 L -98.3117499335641,43.4986724209527 L -98.3119769342431,43.4986724209527 L -98.312375933553,43.4986724209527 L -98.3126289341713,43.4986714207019 L -98.3128549341271,43.4986714207019 L -98.3133069340387,43.4986704211026 L -98.3135329339945,43.4986704211026 L -98.3137589348486,43.4986694208517 L -98.3139869353526,43.4986694208517 L -98.3142129353084,43.4986694208517 L -98.3144389352642,43.4986684212525 L -98.31466493522,43.4986684212525 L -98.3148899353509,43.4986674210015 L -98.3151159353067,43.4986674210015 L -98.3153419352625,43.4986674210015 L -98.3155679352183,43.4986664207506 L -98.3157949349991,43.4986664207506 L -98.3160219347798,43.4986654211513 L -98.3162479347356,43.4986654211513 L -98.3164739346914,43.4986654211513 L -98.3166999346472,43.4986644209003 L -98.316925934603,43.4986644209003 L -98.3170479348017,43.4986644209003 L -98.3171509347339,43.4986644209003 L -98.3173749350399,43.4986644209003 L -98.317600935894,43.4986644209003 L -98.3178269358498,43.498663421301 L -98.3180529358056,43.498663421301 L -98.3182789357615,43.49866242105 L -98.3187289360233,43.49866242105 L -98.3189549359791,43.498661420799 L -98.3194049362408,43.4986604211996 L -98.3196309361967,43.4986604211996 L -98.3198559363276,43.4986594209485 L -98.3200819362834,43.4986594209485 L -98.3203069364143,43.4986594209485 L -98.3205329363701,43.4986584206974 L -98.3206039356169,43.4986584206974 L -98.3227419367729,43.498654419693 L -98.331396938634,43.4986374199827 L -98.3318509390938,43.4986364197313 L -98.340446942302,43.4986254189194 L -98.3483819435647,43.4986154190089 L -98.3494839437546,43.4986134178536 L -98.3516879450329,43.4986114180016 z\" /></g></svg>"
121
- ],
122
- "text/plain": [
123
- "<POLYGON ((-98.352 43.499, -98.352 43.499, -98.36 43.499, -98.371 43.499, -9...>"
124
- ]
125
- },
126
- "execution_count": 58,
127
- "metadata": {},
128
- "output_type": "execute_result"
129
- }
130
- ],
131
- "source": [
132
- "polygons.geometry.iloc[1]"
133
- ]
134
  }
135
  ],
136
  "metadata": {
 
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
+ "execution_count": 1,
6
  "id": "b313a218-4778-4d5b-9036-f0370d4212a0",
7
  "metadata": {},
8
  "outputs": [],
9
  "source": [
10
  "import ibis\n",
11
  "from ibis import _\n",
12
+ "conn = ibis.duckdb.connect(extensions=[\"spatial\"])"
13
  ]
14
  },
15
  {
16
  "cell_type": "code",
17
+ "execution_count": 73,
18
  "id": "fbbd28ea-f1e3-4f3d-ab99-a2ae9b04f3d4",
19
  "metadata": {
20
  "scrolled": true
21
  },
22
+ "outputs": [
23
+ {
24
+ "data": {
25
+ "text/plain": [
26
+ "74"
27
+ ]
28
+ },
29
+ "execution_count": 73,
30
+ "metadata": {},
31
+ "output_type": "execute_result"
32
+ }
33
+ ],
34
  "source": [
35
  "state_boundaries = \"https://data.source.coop/cboettig/us-boundaries/us-state-territory.parquet\"\n",
36
  "county_boundaries = \"https://data.source.coop/cboettig/us-boundaries/us-county.parquet\"\n",
37
  "\n",
38
+ "states = conn.read_parquet(state_boundaries).rename(state_id = \"STUSPS\", state = \"NAME\")\n",
39
+ "county = conn.read_parquet(county_boundaries).rename(county = \"NAMELSAD\", state = \"STATE_NAME\")\n",
40
  "\n",
41
+ "votes = conn.read_csv(\"measures.csv\")\n",
42
+ "#votes.execute()\n",
43
+ "votes.count().execute()"
44
  ]
45
  },
46
  {
47
  "cell_type": "code",
48
+ "execution_count": 74,
49
+ "id": "f766d5ea-1a1b-4113-b985-f2014c8935c9",
50
  "metadata": {},
51
+ "outputs": [
52
+ {
53
+ "data": {
54
+ "text/html": [
55
+ "<div>\n",
56
+ "<style scoped>\n",
57
+ " .dataframe tbody tr th:only-of-type {\n",
58
+ " vertical-align: middle;\n",
59
+ " }\n",
60
+ "\n",
61
+ " .dataframe tbody tr th {\n",
62
+ " vertical-align: top;\n",
63
+ " }\n",
64
+ "\n",
65
+ " .dataframe thead th {\n",
66
+ " text-align: right;\n",
67
+ " }\n",
68
+ "</style>\n",
69
+ "<table border=\"1\" class=\"dataframe\">\n",
70
+ " <thead>\n",
71
+ " <tr style=\"text-align: right;\">\n",
72
+ " <th></th>\n",
73
+ " <th>Jurisdiction Type</th>\n",
74
+ " <th>n</th>\n",
75
+ " </tr>\n",
76
+ " </thead>\n",
77
+ " <tbody>\n",
78
+ " <tr>\n",
79
+ " <th>0</th>\n",
80
+ " <td>County</td>\n",
81
+ " <td>23</td>\n",
82
+ " </tr>\n",
83
+ " <tr>\n",
84
+ " <th>1</th>\n",
85
+ " <td>Municipal</td>\n",
86
+ " <td>48</td>\n",
87
+ " </tr>\n",
88
+ " <tr>\n",
89
+ " <th>2</th>\n",
90
+ " <td>Special District</td>\n",
91
+ " <td>1</td>\n",
92
+ " </tr>\n",
93
+ " <tr>\n",
94
+ " <th>3</th>\n",
95
+ " <td>State</td>\n",
96
+ " <td>2</td>\n",
97
+ " </tr>\n",
98
+ " </tbody>\n",
99
+ "</table>\n",
100
+ "</div>"
101
+ ],
102
+ "text/plain": [
103
+ " Jurisdiction Type n\n",
104
+ "0 County 23\n",
105
+ "1 Municipal 48\n",
106
+ "2 Special District 1\n",
107
+ "3 State 2"
108
+ ]
109
+ },
110
+ "execution_count": 74,
111
+ "metadata": {},
112
+ "output_type": "execute_result"
113
+ }
114
+ ],
115
  "source": [
116
+ "#votes.group_by(_.State).agg(n= _.count()).execute()\n",
117
+ "votes.group_by(_[\"Jurisdiction Type\"]).agg(n= _.count()).execute()\n",
118
+ "#states.head().execute()"
 
 
119
  ]
120
  },
121
  {
122
  "cell_type": "code",
123
+ "execution_count": 95,
124
+ "id": "295b0b78-9c2a-436d-aa9c-34899858e637",
125
  "metadata": {},
126
  "outputs": [
127
  {
128
  "data": {
129
  "application/vnd.jupyter.widget-view+json": {
130
+ "model_id": "f05ac36b0a714711bf4dfaffa490e77a",
131
  "version_major": 2,
132
  "version_minor": 0
133
  },
 
140
  }
141
  ],
142
  "source": [
143
+ "vote = (votes\n",
144
+ " .filter(_[\"Jurisdiction Type\"] == \"County\")\n",
145
+ " .rename(county = \"Jurisdiction Name\", state_id = \"State\")\n",
146
+ " .mutate(key = _.county + ibis.literal('-') + _.state_id)\n",
147
+ " .rename(amount = 'Conservation Funds at Stake', yes = '% Yes')\n",
148
+ " .mutate(amount_n=_.amount.replace('$', '').replace(',', '').cast('float'))\n",
149
+ " .select('key', 'amount_n', 'amount', 'Status', 'yes')\n",
150
+ " )\n",
151
+ "df = (county\n",
152
+ " .join(states.select(\"state\", \"state_id\"), \"state\")\n",
153
+ " .mutate(key = _.county + ibis.literal('-') + _.state_id)\n",
154
+ " .select('key', 'geometry')\n",
155
+ " .right_join(vote, \"key\")\n",
156
+ " # .drop('key_right')\n",
157
+ " )\n",
158
+ "# 20 of 23 counties have matches\n",
159
+ "gdf = df.execute()"
160
  ]
161
  },
162
  {
163
  "cell_type": "code",
164
+ "execution_count": 105,
165
  "id": "fa397626-6e94-4ab9-a3bb-2bcbd14e8d40",
166
+ "metadata": {
167
+ "scrolled": true
168
+ },
169
  "outputs": [
170
  {
171
  "data": {
172
  "application/vnd.jupyter.widget-view+json": {
173
+ "model_id": "88b0a65f5667445aae3f92aee70c9109",
174
  "version_major": 2,
175
  "version_minor": 1
176
  },
 
178
  "Map(height='600px', map_options={'bearing': 0, 'center': (0, 20), 'pitch': 0, 'style': 'https://tiles.openfree…"
179
  ]
180
  },
181
+ "execution_count": 105,
182
  "metadata": {},
183
  "output_type": "execute_result"
184
  }
185
  ],
186
  "source": [
187
  "import leafmap.maplibregl as leafmap\n",
188
+ "m = leafmap.Map(style=\"positron\")\n",
189
+ "\n",
190
+ "outcome = [\n",
191
  " 'match',\n",
192
+ " ['get', 'Status'], \n",
193
+ " \"Pass\", '#2E865F',\n",
194
+ " \"Fail\", '#FF3300', \n",
195
  " '#ccc'\n",
196
+ " ]\n",
197
+ "paint = {\"fill-extrusion-color\": outcome, \n",
198
+ " \"fill-extrusion-opacity\": 0.7,\n",
199
+ " \"fill-extrusion-height\": [\"*\", [\"get\", \"amount_n\"], .001],\n",
200
+ " }\n",
201
+ "\n",
202
+ "#m.add_geojson(\"vote.geojson\")\n",
203
+ "m.add_gdf(gdf, \"fill-extrusion\", paint = paint)\n",
204
  "m"
205
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  }
207
  ],
208
  "metadata": {