From c1b2f9f8855967b61633d5360e7c046952dd4d72 Mon Sep 17 00:00:00 2001 From: John Box Date: Thu, 31 May 2018 19:22:07 -0300 Subject: [PATCH 01/13] created auth & test method --- geojsonio/__init__.py | 2 ++ geojsonio/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 443 bytes .../__pycache__/geojsonio.cpython-35.pyc | Bin 0 -> 6539 bytes geojsonio/geojsonio.py | 20 ++++++++++++++++-- 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 geojsonio/__pycache__/__init__.cpython-35.pyc create mode 100644 geojsonio/__pycache__/geojsonio.cpython-35.pyc diff --git a/geojsonio/__init__.py b/geojsonio/__init__.py index 206c64e..051b518 100644 --- a/geojsonio/__init__.py +++ b/geojsonio/__init__.py @@ -2,6 +2,8 @@ from .geojsonio import ( main, + auth, + testauth, to_geojsonio, display, embed, diff --git a/geojsonio/__pycache__/__init__.cpython-35.pyc b/geojsonio/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3205fd52408d79ca36a6d1fd4151326e772196f0 GIT binary patch literal 443 zcmX|-y-ve06h^pL+Kp%EKr#1}+|WzT`}l4@yF~YC==&^U5;2X)BW4jr#5|&mr~m2nMKmj8-V>rZ!L&sYS4D49G$%0!4mA;C;gkp~ zBAgJzGeXXY=4la5i*QDS=*)`njCc-#XLDi+`m-XO zn6^2-@iHX5BP-cjdi?#`c!`L3=ysNIjAl;^vY^=}Lds zcqGYLlGj5ciX~T7@!O^c`p}kWhPTu}C&NE)CUeCz$JygeZWZX9_Z*RVwA-yBrr5r) z)EL4e_G8*Idq$&1Qlw`(Bf}X?~xSejZlu4cSB=6NW6GUC1VG{T} zo-}b0&a6{&6rJ_0Hu0tp$vc*L5f6|Vnt)(WA#*|O6=(}vu6PQuAt!#;>rQYTdu2`B z>&wIs{2jUBZ>V$!r|rJJ;x)=Z)!iaI@Hln=KV3FdoFX7pUp?B$>cixD|Nyo-d@IbD0k5+t)2Dn2Jgd@sc zQ8@5ha)yF<>WM!%Vh?emAmG3uTo?T!`3caUTtyW2%HkXk&;Ei{Gv$p|# zA8-Ze2{s*VlETRjJ{|yxq-uP0p8<)iNJ1yuxnsPLWoT0U$TDy`Z(6h1i9)#DajUpU zr*RPzmLS)g6^VuJ%Ba)L#w+~>1kLu1uTb+UO?b2) zQ?mQA3z)gr&3eZyu_#I7*RW1gfDpAAch;G3<{b4pp4uEe&>>JJ9A3j$e~HFoFU$v# z0;mhqLm$?+?Fe;+tgMEg+$J6I%oTf{NG^yB_Q|9$Sqdse3M#NnO90a)#J-3(v0^`y z*+3;0oCqPI0dhG2=wq~mo7UeL2S-kL7@{|$7}#sU+iLSgk@^Q&G>c0Z^i~dPWKUYd zh}dobrnhDK@%p{H2MFO;>Bg1>)@R)y^P^rrme%N6gqJNCu~eG@u&*^SN^S3`Mnen z5GB^zXi2b<4zlC>CrG=>M@gb+$|Vv1S8T9fX{Wu0?jRS4khERCeCf)S_ufA#mpEjj z6xyMZlk$jMz{)vu-44b0C-|<#J!Ma5R zL^B!!WB?QxAUc2+M;Y3qUO z2#FTc+8lfW_G~D`rch9)PY*=WPqmIvVvLcEU(3vL!^okN$Mf`z`-dg67HCc%bLQc> zhskz=q|?uK`#=!9m$?rY4viCRC87MrfAY?r@rcx%J_b&vGVf5F2K@E zDd;0kgvO&<&J@EzudhcIzYKzAEoa+eu1;i}P2-W*95wbuP;2@UUokoBc)63~$XFos62&1_ zY@NxNG{1+;n{Fc9;a?8wiu{z47V;fVvO+F2F*@==uDAAUD<8JswYqunG@2_YLXw;* zOYj4NB-0OHT_jnqQ*#w+i=#G!PlMcNsa{ZYmxY2pP#SgpqXBY$4DQDdN-vKd@f#TX z6P+B_^VPC*#!)mjtkGLmpfF-Su5S({m{&lDQ%0zu+Xx13oG^R@J`@3Z5gHICxV(W* zkTntwVnmU(@D=ZATnvUI<2k7|N5K*JK%@?^l!HH2)Z?n38I6+194pKDbKN^~>7giB z&OydZhElgx)F%iB{vipaYY^P_bc23miZq~A9Se>g+fOj|9ln|hK2ZYJP++CelkJj@ z-r6O=#Rka(2Kg=TAP+|e4U+B>$Q%!uVji9-=KoJ-xMVYx$X;vwU?ZGbjKb^m@~aJm z6F4$KZoSaN?HTfxC{&!QoMdYkLHJjE?PXULmPR9OeECC)q2h)e`5)+554M>5OpGqO zU}0P?+YpaCQhPy)tI=n`dxCFJO!D0*k^sIQMe>3xRNP}8pg3?vO7B6+aF((IT&5z8 z*+MCf1#=kjm?cW^QBc^bP#QvyuE?r{DNyXzeOmp!`~;= zQl^ITzJ*y%t<0$#H*c*zyz`)SaUn;tF<|xg0R(66ui`ZYJNt|LuyDizIw*39;m}kghHyq1L2nY!Y*bX%I2KZVp4F|FOpnysJQ#3QEDEJS*GY&n?AV8Pg+C;51 ad#+TNJA;#1togOs>FL?2=~K1yHRnIzXpjm3 literal 0 HcmV?d00001 diff --git a/geojsonio/geojsonio.py b/geojsonio/geojsonio.py index 8b255a0..9c25927 100755 --- a/geojsonio/geojsonio.py +++ b/geojsonio/geojsonio.py @@ -8,12 +8,29 @@ import webbrowser import github3 +from github3 import login +from github3 import create_gist + import six from six.moves import urllib MAX_URL_LEN = 150e3 # Size threshold above which a gist is created DEFAULT_DOMAIN = 'http://geojson.io/' +def auth (guser, gpass): + """ + auth variables + """ + global gituser + gituser = guser + global gitpass + gitpass = gpass + +def testauth(): + gh = login( gituser, password= gitpass) + testme = gh.me() + print (testme.name) + def display(contents, domain=DEFAULT_DOMAIN, force_gist=False): """ @@ -59,7 +76,6 @@ def embed(contents='', width='100%', height=512, *args, **kwargs): url=url, width=width, height=height) return HTML(html) - def make_url(contents, domain=DEFAULT_DOMAIN, force_gist=False, size_for_gist=MAX_URL_LEN): """ @@ -167,7 +183,7 @@ def _make_gist(contents, description='', filename='data.geojson'): contents """ - ghapi = github3.GitHub() + ghapi = login(gituser, gitpass) files = {filename: {'content': contents}} gist = ghapi.create_gist(description, files) From 5e92531e50a66330d1024b67c7c22af39d7b6298 Mon Sep 17 00:00:00 2001 From: John Box Date: Thu, 31 May 2018 19:34:03 -0300 Subject: [PATCH 02/13] Read_me update --- README.rst | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index d4574eb..79aaf8f 100644 --- a/README.rst +++ b/README.rst @@ -9,11 +9,38 @@ Open GeoJSON data on `geojson.io `_ from Python. .. image:: https://travis-ci.org/jwass/geojsonio.py.svg?branch=master :target: https://travis-ci.org/jwass/geojsonio.py -Usage +Basic and requirements ----- +You must have github3.py +(http://github3py.readthedocs.io) +and import geojsonio + +.. code-block:: python + + import geojsonio + +Auth +_____ + +You need to auth to the GitApi in order to create gists: +use: + +.. code-block:: python + + geojsonio.auth('YOUR-GIT-USERNAME', '') + +You can test the authentication with: + +.. code-block:: python + + geojsonio.testauth() + Send data to geojson.io and open a browser within python +Usage +_____ + .. code-block:: python from geojsonio import display From ae15ab3792b7128fc12523c1ea7a2f4dcf9811dc Mon Sep 17 00:00:00 2001 From: John Box Date: Thu, 31 May 2018 20:46:17 -0300 Subject: [PATCH 03/13] started test update --- geojsonio/geojsonio.py | 1 + tests/__pycache__/test_geojsonio.cpython-35.pyc | Bin 0 -> 4905 bytes tests/test_geojsonio.py | 6 ++++++ 3 files changed, 7 insertions(+) create mode 100644 tests/__pycache__/test_geojsonio.cpython-35.pyc diff --git a/geojsonio/geojsonio.py b/geojsonio/geojsonio.py index 9c25927..f67d84a 100755 --- a/geojsonio/geojsonio.py +++ b/geojsonio/geojsonio.py @@ -186,6 +186,7 @@ def _make_gist(contents, description='', filename='data.geojson'): ghapi = login(gituser, gitpass) files = {filename: {'content': contents}} gist = ghapi.create_gist(description, files) + print (gist.html_url) return gist diff --git a/tests/__pycache__/test_geojsonio.cpython-35.pyc b/tests/__pycache__/test_geojsonio.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..50551fc82615ecd32fd89ac891e57a77026736a3 GIT binary patch literal 4905 zcmbVQOLH7o6+Zo((P+k!99s|D2?{2G35n!K2*lWq5*w5hpmGq8(5X~ctGgxlxMzBN zZ;xZC>;)Jos#1lEf?|=%f-Qfkx2(KlofY3X{m@9Z1Efp$%(=Jk>wM=s=ib&*uh)6| zPxBu?=@I>lrXCym28up!5JmViC?y&iL$n;~ze9@inSLve=&vlL;17X6;+5q8j}&8SV$4A&v!9zC+i zJ3�qFHYA<|yh?)DwN4BD|UteSsoW7eqfv5&m8f{RN6nQFK~#D2o&=iGG@*Wr|ir zN8=fa&WgT7(K(7<6dfH*+U~#fgwg98#r$NHgjp2(X_Ch(Nc9#P-HA%mWCxm)W_!s9 z%513OAdmgMMCT!o<;OyqLAimV{{{ivF@0o-Vp9ZA1&TeB60{2prQN^>Er~@BkBtHn z7}aAKFbYTj11Lvk05AZ#SI>Y&@h9*+AbMa_ogbR?fNedsRoMCdIQCjUh6xiDd+ohA z8^*cX_ncc%I=1Ddx+Pmd8^*^a^c@EdG z4*y*8%-v8i;v&9$YyCFtSRcio?q}-GI;`R{(Ag--*2eqmuqM|c{pohq#td^P`kN4B zxrSx9#+)hAE^BAYn&TQLE$QDlU4}qxpy)RtVo(_PL&9GmJiIR)U~1bG!<)hcR5={L z2NzCh6|K!UyP1Uf!3UjHJln}|oW`qR8fd)=jPE7z$KI;XJNMzESnUR3?E9}Ro4eGUIfxe-5C&$-Wc*?>bpjWw|d9ZT0 z;4vJw03r4`3Wfls==lCHizX@SUEjYu3DW9K%lD%!^nG;#(-!TD$@_}^KeZPj6&tQ* zAugb37orO~bS-IXOg#eb8am}LRq%y>9~zXKG_V+PR3Yz}q+g@lrr!xk1bwHlnWcpj zO@?D#%v26dvZ6Z-?jXyQEG|yGt2M`6Hu{lLnd+ND#iAW%AjBxwQwE6B7MSt=I8ZwF zwM64Jw#0@Y5L}(bZ)1mp3cnGTeF6n81AkY*-W4`OSi>d>o0-I7&z`|~=b=TpK?6xK z+{dN|Hsux#pjd1Lwy7F1{cP}LXoaN zfx_9<#seMn1rUtF=Ct$et!5qO5wEq4qR&AfVPe!L zC#%WJng3$aT_g;#5+TIwMBJKd7YbwdnCV}3uBLoEWyA6H4|!5vVTKMaOd-M@YCJRp zvUWAiLY#Zoq11x~av*=yDSQ|PkuKe0mu@jLEl%)yoQC}8@$%eP?cf$~l~XbqOCTxS z@e1^i8|tSyWWR%!GTZ<+fPQ?EjFNS566(gUBccy~{t@JM-`sk_9Pc}YJKpCV6s`&q z9qXd=D?Ys>rlyQMBvO+NinCKY-wl$~A7!H&zmG6^6Ra4;Xq;q<)#G*v zF{X^;gdi!9j57wz`!4E@c^tkBt%S&9C{wnfG ziw14ZAqW~c?+?g9=)s+U1yYYh6SrbY4yt|1XE?Py5U9B2v#Ld0KaJJF+U-0aUsKPuIEZ59xtMS-zYPM$dXnZ|YaHxzG#z(KPuxyE2 zRK6NW4#$G9Jg#xC%QLm_v)3n>L6^tVoE%TCxnd~35jDWcwFC{~@6Vx>Zhj_k zWom39jB}((kKg0-X|uVc0!RRdkFxR*eg{!9YGpV38WobW~3deax6lRyUcQY z4!SkT{!V$X!Q9}ERyTssP;!R^V;<-*-e^7kh@MOVf6tQz_9NmQm^zBH?gEUvJa&I@v9c?+#Y z_h*>>gOSdIQ5ctd`9AmlN|rDbzeTSqFMuWHS!2=c8mp#aN*v({U$})Q|A6v;^W^=n z%af(@tM`#%{x`OKG0m3t*JjJBk~V9$AdK;)^bF3Zw*kY`geiS=h Date: Thu, 31 May 2018 20:52:15 -0300 Subject: [PATCH 04/13] started test update --- tests/test_geojsonio.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_geojsonio.py b/tests/test_geojsonio.py index b5b2037..ca911fe 100644 --- a/tests/test_geojsonio.py +++ b/tests/test_geojsonio.py @@ -117,11 +117,7 @@ def test_gist_url(): def test_factory_data(features): contents = json.dumps(features) size = len(contents) - global gituser - global gitpass - gituser = "gitUsername" - gitpass = "gitPassword" - + url = geojsonio.make_url(contents, size_for_gist=size+1) assert url == geojsonio.data_url(contents) @@ -129,6 +125,10 @@ def test_factory_data(features): def test_factory_gist(features): contents = json.dumps(features) size = len(contents) + global gituser + global gitpass + gituser = "gitUsername" + gitpass = "gitPassword" with mock.patch.object(github3.GitHub, 'create_gist') as MockInstance: class Dummy(object): From 664b65e1fc7fa48816f2bd82ff61a3092a16af97 Mon Sep 17 00:00:00 2001 From: Joaquim Jr Date: Fri, 2 Nov 2018 00:23:07 -0300 Subject: [PATCH 05/13] Update geojsonio.py fixed to (try) pass test --- geojsonio/geojsonio.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/geojsonio/geojsonio.py b/geojsonio/geojsonio.py index f67d84a..5cebc83 100755 --- a/geojsonio/geojsonio.py +++ b/geojsonio/geojsonio.py @@ -17,16 +17,11 @@ MAX_URL_LEN = 150e3 # Size threshold above which a gist is created DEFAULT_DOMAIN = 'http://geojson.io/' -def auth (guser, gpass): - """ - auth variables - """ - global gituser - gituser = guser - global gitpass - gitpass = gpass +def auth (guser=input("guser"), gpass=input("gpass")): + gh = login( guser, gpass) + return gh -def testauth(): +def testauth(auth): gh = login( gituser, password= gitpass) testme = gh.me() print (testme.name) @@ -183,10 +178,11 @@ def _make_gist(contents, description='', filename='data.geojson'): contents """ - ghapi = login(gituser, gitpass) + auth(); + #ghapi = login(gituser, gitpass) files = {filename: {'content': contents}} - gist = ghapi.create_gist(description, files) - print (gist.html_url) + gist = create_gist(description, files) + #print (gist.html_url) return gist From 384ef7da89570ea5cc55253b86d1556b84b11abf Mon Sep 17 00:00:00 2001 From: Joaquim Jr Date: Fri, 2 Nov 2018 00:36:17 -0300 Subject: [PATCH 06/13] Update geojsonio.py fix for test --- geojsonio/geojsonio.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geojsonio/geojsonio.py b/geojsonio/geojsonio.py index 5cebc83..0630b3b 100755 --- a/geojsonio/geojsonio.py +++ b/geojsonio/geojsonio.py @@ -17,7 +17,7 @@ MAX_URL_LEN = 150e3 # Size threshold above which a gist is created DEFAULT_DOMAIN = 'http://geojson.io/' -def auth (guser=input("guser"), gpass=input("gpass")): +def auth (guser, gpass): gh = login( guser, gpass) return gh @@ -178,7 +178,7 @@ def _make_gist(contents, description='', filename='data.geojson'): contents """ - auth(); + auth("myGitUser","myGitPass"); #ghapi = login(gituser, gitpass) files = {filename: {'content': contents}} gist = create_gist(description, files) From 9e864c1141e8ccf6a3ac63d0274092b0d55fc87d Mon Sep 17 00:00:00 2001 From: Joaquim Jr Date: Fri, 2 Nov 2018 00:42:02 -0300 Subject: [PATCH 07/13] Update .travis.yml --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e8d5030..bc9e323 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: python python: - "2.7" - - "3.3" - "3.4" - "3.6" install: From c3110ee7dbb08ad251864bac0fb17ab39c779a3f Mon Sep 17 00:00:00 2001 From: Joaquim Jr Date: Fri, 2 Nov 2018 03:05:39 -0300 Subject: [PATCH 08/13] Add files via upload --- README.rst | 19 ++--- __init__.py | 13 +++ geojsonio.py | 236 +++++++++++++++++++++++++++++++++++++++++++++++++++ gitauth.txt | 2 + map.geojson | 107 +++++++++++++++++++++++ 5 files changed, 367 insertions(+), 10 deletions(-) create mode 100644 __init__.py create mode 100644 geojsonio.py create mode 100644 gitauth.txt create mode 100644 map.geojson diff --git a/README.rst b/README.rst index 79aaf8f..a786fd4 100644 --- a/README.rst +++ b/README.rst @@ -27,14 +27,15 @@ use: .. code-block:: python - geojsonio.auth('YOUR-GIT-USERNAME', '') + myAuth = geojsonio.auth('YOUR-GIT-USERNAME', '') -You can test the authentication with: +You can test the authentication passing the authentication object to testauth: .. code-block:: python - geojsonio.testauth() + geojsonio.testauth(myAuth) +It shall return: Send data to geojson.io and open a browser within python @@ -44,11 +45,11 @@ _____ .. code-block:: python from geojsonio import display - + with open('map.geojson') as f: contents = f.read() display(contents) - + Data ---- There are two methods by which ``geojsonio.py`` gets geojson.io to render the data: @@ -60,7 +61,7 @@ There are two methods by which ``geojsonio.py`` gets geojson.io to render the da If the contents are small enough, they will be embedded in the URL. Otherwise ``geojsonio.py`` creates an anonymous Gist on Github with the GeoJSON contents. Note: when an anonymous gist is created, the data is uploaded to Github and a unique gist ID is created. If anyone else is able to obtain the gist ID, they will be able to see your data. - + Goes Great With GeoPandas ------------------------- ``geojsonio.py`` integrates nicely with `GeoPandas `_ to @@ -73,7 +74,7 @@ property called ``'Name'``. Quickly display all the states whose names start wit import geopandas as gpd import geojsonio - + states = gpd.read_file('states.geojson') m_states = states[states['Name'].str.startswith('M')] geojsonio.display(m_states.to_json()) @@ -82,7 +83,7 @@ This will open a browser to the geojson.io window with the polygons drawn on the IPython Notebook Integration ---------------------------- - + To easily embed geojson.io in an iframe in a Jupyter/IPython notebook, use the ``embed()`` method @@ -114,5 +115,3 @@ Install with ``pip`` :: $ pip install geojsonio - - diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..bef24ee --- /dev/null +++ b/__init__.py @@ -0,0 +1,13 @@ +from __future__ import absolute_import + +from .geojsonio import ( + main, + testauth, + to_geojsonio, + display, + embed, + make_geojson, + make_url, + data_url, + gist_url, +) diff --git a/geojsonio.py b/geojsonio.py new file mode 100644 index 0000000..017e923 --- /dev/null +++ b/geojsonio.py @@ -0,0 +1,236 @@ +#!/usr/bin/env python +#-*- coding: utf-8 -*- +from __future__ import unicode_literals + +import argparse +import json +import sys +import webbrowser + +import github3 +from github3 import login +from github3 import create_gist + +import six +from six.moves import urllib + +getCredentials = open('gitauth.txt').read().split("\n") + +GITUSER = getCredentials[0] +GITPASS = getCredentials[1] + +MAX_URL_LEN = 150e3 # Size threshold above which a gist is created +DEFAULT_DOMAIN = 'http://geojson.io/' + +def authToGit (): + gh = login( GITUSER, GITPASS) + return gh + +def testauth(auth): + return auth.me() + +def display(contents, domain=DEFAULT_DOMAIN, force_gist=True): + """ + Open a web browser pointing to geojson.io with the specified content. + + If the content is large, an anonymous gist will be created on github and + the URL will instruct geojson.io to download the gist data and then + display. If the content is small, this step is not needed as the data can + be included in the URL + + Parameters + ---------- + content - (see make_geojson) + domain - string, default http://geojson.io + force_gist - bool, default False + Create an anonymous gist on Github regardless of the size of the + contents + + """ + url = make_url(contents, domain, force_gist) + webbrowser.open(url) + return url +# display() used to be called to_geojsonio. Keep it around for now... +to_geojsonio = display + + +def embed(contents='', width='100%', height=512, *args, **kwargs): + """ + Embed geojson.io in an iframe in Jupyter/IPython notebook. + + Parameters + ---------- + contents - see make_url() + width - string, default '100%' - width of the iframe + height - string / int, default 512 - height of the iframe + kwargs - additional arguments are passed to `make_url()` + + """ + from IPython.display import HTML + + url = make_url(contents, *args, **kwargs) + html = ''.format( + url=url, width=width, height=height) + return HTML(html) + +def make_url(contents, domain=DEFAULT_DOMAIN, force_gist=False, + size_for_gist=MAX_URL_LEN): + """ + Returns the URL to open given the domain and contents. + + If the file contents are large, an anonymous gist will be created. + + Parameters + ---------- + contents + * string - assumed to be GeoJSON + * an object that implements __geo_interface__ + A FeatureCollection will be constructed with one feature, + the object. + * a sequence of objects that each implement __geo_interface__ + A FeatureCollection will be constructed with the objects + as the features + domain - string, default http://geojson.io + force_gist - force gist creation regardless of file size. + + For more information about __geo_interface__ see: + https://gist.github.com/sgillies/2217756 + + If the contents are large, then a gist will be created. + + """ + contents = make_geojson(contents) + if len(contents) <= size_for_gist and not force_gist: + url = data_url(contents, domain) + else: + gist = _make_gist(contents) + url = gist_url(gist.id, domain) + + return url + + +def make_geojson(contents): + """ + Return a GeoJSON string from a variety of inputs. + See the documentation for make_url for the possible contents + input. + + Returns + ------- + GeoJSON string + + """ + if isinstance(contents, six.string_types): + return contents + + if hasattr(contents, '__geo_interface__'): + features = [_geo_to_feature(contents)] + else: + try: + feature_iter = iter(contents) + except TypeError: + raise ValueError('Unknown type for input') + + features = [] + for i, f in enumerate(feature_iter): + if not hasattr(f, '__geo_interface__'): + raise ValueError('Unknown type at index {0}'.format(i)) + features.append(_geo_to_feature(f)) + + data = {'type': 'FeatureCollection', 'features': features} + return json.dumps(data) + + +def _geo_to_feature(ob): + """ + Return a GeoJSON Feature from an object that implements + __geo_interface__ + + If the object's type is a geometry, return a Feature with empty + properties and the object's mapping as the feature geometry. If the + object's type is a Feature, then return it. + + """ + mapping = ob.__geo_interface__ + if mapping['type'] == 'Feature': + return mapping + else: + return {'type': 'Feature', + 'geometry': mapping} + + +def data_url(contents, domain=DEFAULT_DOMAIN): + """ + Return the URL for embedding the GeoJSON data in the URL hash + + Parameters + ---------- + contents - string of GeoJSON + domain - string, default http://geojson.io + + """ + url = (domain + '#data=data:application/json,' + + urllib.parse.quote(contents)) + return url + + +def _make_gist(contents, description='', filename='data.geojson'): + """ + Create and return an anonymous gist with a single file and specified + contents + + """ + #ghapi = login(gituser, gitpass) + gh = login( GITUSER, GITPASS) + files = {filename: {'content': contents}} + gist = gh.create_gist(description, files) + #print (gist.html_url) + + return gist + + +def gist_url(gist_id, domain=DEFAULT_DOMAIN): + """ + Return the URL for loading GeoJSON data from a gist + + Parameters + ---------- + contents - string, gist id + domain - string, default http://geojson.io + + """ + url = (domain + '#id=gist:/{0}'.format(gist_id)) + return url + + +def main(): + parser = argparse.ArgumentParser( + description='Quickly visualize GeoJSON data on geojson.io') + + parser.add_argument('-p', '--print', + dest='do_print', + action='store_true', + help='print the URL') + + parser.add_argument('-d', '--domain', + dest='domain', + default=DEFAULT_DOMAIN, + help='Alternate URL instead of http://geojson.io/') + + parser.add_argument('filename', + nargs='?', + type=argparse.FileType('r'), + default=sys.stdin, + help="The file to send to geojson.io") + + args = parser.parse_args() + + contents = args.filename.read() + url = make_url(contents, args.domain) + if args.do_print: + print(url) + else: + webbrowser.open(url) + +if __name__ == '__main__': + main() diff --git a/gitauth.txt b/gitauth.txt new file mode 100644 index 0000000..fc0ba99 --- /dev/null +++ b/gitauth.txt @@ -0,0 +1,2 @@ +YOUR_GIT_USER +YOUT_GIT_PASS diff --git a/map.geojson b/map.geojson new file mode 100644 index 0000000..9d597b8 --- /dev/null +++ b/map.geojson @@ -0,0 +1,107 @@ +{ +"type": "FeatureCollection", +"features": [ +{ "type": "Feature", "id": 0, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3514" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.599409, 48.010274 ], [ -89.488885, 48.013439 ], [ -89.522695, 47.960535 ], [ -89.613698, 47.819252 ], [ -89.728006, 47.641976 ], [ -89.842831, 47.464726 ], [ -89.957656, 47.286907 ], [ -90.131754, 47.292747 ], [ -90.305852, 47.298018 ], [ -90.479950, 47.303857 ], [ -90.654048, 47.309128 ], [ -90.857782, 47.212829 ], [ -91.060974, 47.117047 ], [ -91.264708, 47.021265 ], [ -91.468442, 46.924966 ], [ -91.592259, 46.876260 ], [ -91.716618, 46.827607 ], [ -91.840978, 46.778385 ], [ -91.964794, 46.729706 ], [ -92.011898, 46.711723 ], [ -92.274879, 46.656145 ], [ -92.264828, 46.095223 ], [ -92.296583, 46.096282 ], [ -92.543700, 45.985695 ], [ -92.756968, 45.889912 ], [ -92.899828, 45.705763 ], [ -92.689221, 45.518436 ], [ -92.765417, 45.267082 ], [ -92.766477, 44.996143 ], [ -92.796656, 44.776027 ], [ -92.505072, 44.583920 ], [ -92.385492, 44.574928 ], [ -92.062153, 44.432585 ], [ -91.949989, 44.364838 ], [ -91.879606, 44.257428 ], [ -91.627709, 44.085449 ], [ -91.289590, 43.937293 ], [ -91.257292, 43.854739 ], [ -91.254657, 43.613979 ], [ -91.228199, 43.501247 ], [ -92.540005, 43.519773 ], [ -94.001027, 43.513417 ], [ -95.359936, 43.500187 ], [ -96.452660, 43.501789 ], [ -96.439431, 44.435763 ], [ -96.560612, 45.393018 ], [ -96.735769, 45.470817 ], [ -96.834704, 45.625329 ], [ -96.780728, 45.760799 ], [ -96.556891, 45.872446 ], [ -96.539451, 46.017967 ], [ -96.538908, 46.199480 ], [ -96.601359, 46.351357 ], [ -96.685488, 46.513285 ], [ -96.733651, 46.716477 ], [ -96.745820, 46.944525 ], [ -96.779694, 46.999044 ], [ -96.820415, 47.292204 ], [ -96.824653, 47.426614 ], [ -96.844238, 47.546194 ], [ -96.893977, 47.748869 ], [ -97.015158, 47.954205 ], [ -97.131042, 48.137295 ], [ -97.148509, 48.318782 ], [ -97.161221, 48.514584 ], [ -97.127348, 48.642122 ], [ -97.120475, 48.758523 ], [ -97.214138, 48.902442 ], [ -97.228943, 49.000885 ], [ -95.158837, 48.999826 ], [ -95.156202, 49.384014 ], [ -94.817540, 49.389285 ], [ -94.640264, 48.840017 ], [ -94.329120, 48.670673 ], [ -93.630610, 48.609281 ], [ -92.609846, 48.450015 ], [ -91.639879, 48.139930 ], [ -90.830264, 48.270103 ], [ -89.599952, 48.010274 ], [ -89.599409, 48.010274 ] ] ] } } +, +{ "type": "Feature", "id": 1, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3515" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.194189, 44.561156 ], [ -111.291548, 44.701406 ], [ -111.400016, 44.728924 ], [ -111.542385, 44.530486 ], [ -111.771492, 44.498214 ], [ -112.336135, 44.560640 ], [ -112.362593, 44.462222 ], [ -112.690144, 44.498731 ], [ -112.874810, 44.360083 ], [ -113.052086, 44.619912 ], [ -113.174844, 44.765433 ], [ -113.378578, 44.789773 ], [ -113.439427, 44.862792 ], [ -113.502937, 45.124223 ], [ -113.680213, 45.249073 ], [ -113.794496, 45.564997 ], [ -113.914101, 45.702585 ], [ -114.035799, 45.730103 ], [ -114.137937, 45.589336 ], [ -114.335315, 45.470274 ], [ -114.513651, 45.569234 ], [ -114.523702, 45.825369 ], [ -114.407275, 45.889912 ], [ -114.491430, 46.147080 ], [ -114.394046, 46.410087 ], [ -114.284517, 46.631805 ], [ -114.585610, 46.641339 ], [ -114.843320, 46.786318 ], [ -115.121650, 47.095369 ], [ -115.288332, 47.250398 ], [ -115.519067, 47.345121 ], [ -115.704792, 47.504930 ], [ -115.704276, 47.684842 ], [ -115.967800, 47.950484 ], [ -116.048234, 49.000369 ], [ -113.059502, 49.001402 ], [ -110.070769, 49.003004 ], [ -107.082037, 49.004580 ], [ -104.092762, 49.005640 ], [ -104.077414, 47.171565 ], [ -104.026616, 45.956601 ], [ -104.077957, 45.040610 ], [ -105.745891, 45.051178 ], [ -107.546634, 45.045881 ], [ -109.102379, 45.057018 ], [ -111.071406, 45.049602 ], [ -111.067194, 44.541597 ], [ -111.085178, 44.506147 ], [ -111.194189, 44.561156 ] ] ] } } +, +{ "type": "Feature", "id": 2, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3516" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.601359, 46.351357 ], [ -96.538908, 46.199480 ], [ -96.539451, 46.017967 ], [ -98.441789, 45.963448 ], [ -100.066858, 45.965567 ], [ -102.116862, 45.961355 ], [ -104.026616, 45.956601 ], [ -104.077414, 47.171565 ], [ -104.092762, 49.005640 ], [ -100.629899, 49.003004 ], [ -97.228943, 49.000885 ], [ -97.214138, 48.902442 ], [ -97.120475, 48.758523 ], [ -97.127348, 48.642122 ], [ -97.161221, 48.514584 ], [ -97.148509, 48.318782 ], [ -97.131042, 48.137295 ], [ -97.015158, 47.954205 ], [ -96.893977, 47.748869 ], [ -96.844238, 47.546194 ], [ -96.824653, 47.426614 ], [ -96.820415, 47.292204 ], [ -96.779694, 46.999044 ], [ -96.745820, 46.944525 ], [ -96.733651, 46.716477 ], [ -96.685488, 46.513285 ], [ -96.601359, 46.351357 ] ] ] } } +, +{ "type": "Feature", "id": 3, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3517" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -155.936650, 19.059390 ], [ -155.908060, 19.338880 ], [ -156.073470, 19.702940 ], [ -156.023680, 19.814220 ], [ -155.850080, 19.977290 ], [ -155.919070, 20.173950 ], [ -155.861080, 20.267210 ], [ -155.785050, 20.248700 ], [ -155.402140, 20.079750 ], [ -155.224520, 19.993020 ], [ -155.062260, 19.859100 ], [ -154.807410, 19.508710 ], [ -154.831470, 19.453280 ], [ -155.222170, 19.239720 ], [ -155.542110, 19.083480 ], [ -155.688170, 18.916190 ], [ -155.936650, 19.059390 ] ] ], [ [ [ -155.995660, 20.764040 ], [ -156.079260, 20.643970 ], [ -156.414450, 20.572410 ], [ -156.586730, 20.783000 ], [ -156.701670, 20.864300 ], [ -156.710550, 20.926760 ], [ -156.612580, 21.012490 ], [ -156.257110, 20.917450 ], [ -155.995660, 20.764040 ] ] ], [ [ [ -156.758240, 21.176840 ], [ -156.789330, 21.068730 ], [ -157.325210, 21.097770 ], [ -157.250270, 21.219580 ], [ -156.758240, 21.176840 ] ] ], [ [ [ -158.126670, 21.312440 ], [ -158.253800, 21.539190 ], [ -158.292650, 21.579120 ], [ -158.025200, 21.716960 ], [ -157.941610, 21.652720 ], [ -157.652830, 21.322170 ], [ -157.707030, 21.264420 ], [ -157.778600, 21.277290 ], [ -158.126670, 21.312440 ] ] ], [ [ [ -159.800510, 22.065330 ], [ -159.748770, 22.138200 ], [ -159.596200, 22.236180 ], [ -159.365690, 22.214940 ], [ -159.345120, 21.982000 ], [ -159.463720, 21.882990 ], [ -159.800510, 22.065330 ] ] ] ] } } +, +{ "type": "Feature", "id": 4, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3518" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.049728, 44.488163 ], [ -111.050245, 42.001597 ], [ -114.034223, 41.993122 ], [ -117.028252, 42.000021 ], [ -117.013963, 43.797069 ], [ -116.926656, 44.081211 ], [ -117.007607, 44.211410 ], [ -117.194391, 44.279132 ], [ -117.192299, 44.438942 ], [ -117.051532, 44.665956 ], [ -116.836145, 44.863851 ], [ -116.693285, 45.186648 ], [ -116.558875, 45.444358 ], [ -116.457796, 45.574531 ], [ -116.511255, 45.726408 ], [ -116.678997, 45.807359 ], [ -116.915003, 45.999983 ], [ -116.906528, 46.177776 ], [ -116.998073, 46.330170 ], [ -117.026650, 47.722927 ], [ -117.031430, 48.999309 ], [ -116.048234, 49.000369 ], [ -115.967800, 47.950484 ], [ -115.704276, 47.684842 ], [ -115.704792, 47.504930 ], [ -115.519067, 47.345121 ], [ -115.288332, 47.250398 ], [ -115.121650, 47.095369 ], [ -114.843320, 46.786318 ], [ -114.585610, 46.641339 ], [ -114.284517, 46.631805 ], [ -114.394046, 46.410087 ], [ -114.491430, 46.147080 ], [ -114.407275, 45.889912 ], [ -114.523702, 45.825369 ], [ -114.513651, 45.569234 ], [ -114.335315, 45.470274 ], [ -114.137937, 45.589336 ], [ -114.035799, 45.730103 ], [ -113.914101, 45.702585 ], [ -113.794496, 45.564997 ], [ -113.680213, 45.249073 ], [ -113.502937, 45.124223 ], [ -113.439427, 44.862792 ], [ -113.378578, 44.789773 ], [ -113.174844, 44.765433 ], [ -113.052086, 44.619912 ], [ -112.874810, 44.360083 ], [ -112.690144, 44.498731 ], [ -112.362593, 44.462222 ], [ -112.336135, 44.560640 ], [ -111.771492, 44.498214 ], [ -111.542385, 44.530486 ], [ -111.400016, 44.728924 ], [ -111.291548, 44.701406 ], [ -111.194189, 44.561156 ], [ -111.085178, 44.506147 ], [ -111.049728, 44.488163 ] ] ] } } +, +{ "type": "Feature", "id": 5, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3519" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -116.998073, 46.330170 ], [ -116.906528, 46.177776 ], [ -116.915003, 45.999983 ], [ -118.978236, 45.992568 ], [ -119.337000, 45.888336 ], [ -119.592050, 45.932235 ], [ -119.787309, 45.850768 ], [ -120.158268, 45.740671 ], [ -120.609636, 45.753900 ], [ -120.837193, 45.672949 ], [ -121.046741, 45.637499 ], [ -121.203889, 45.689899 ], [ -121.561077, 45.732764 ], [ -121.788091, 45.700983 ], [ -122.174915, 45.595150 ], [ -122.420456, 45.591998 ], [ -122.651708, 45.630083 ], [ -122.725786, 45.770333 ], [ -122.752244, 45.938075 ], [ -122.937969, 46.129097 ], [ -123.228494, 46.186251 ], [ -123.471373, 46.277253 ], [ -123.776704, 46.282033 ], [ -123.998676, 46.283069 ], [ -124.079635, 46.864750 ], [ -124.395670, 47.720170 ], [ -124.687210, 48.184433 ], [ -124.566101, 48.379715 ], [ -123.120000, 48.040000 ], [ -122.587138, 47.095885 ], [ -122.340021, 47.359952 ], [ -122.499831, 48.180160 ], [ -122.840000, 49.000000 ], [ -120.002696, 49.000885 ], [ -117.031430, 48.999309 ], [ -117.026650, 47.722927 ], [ -116.998073, 46.330170 ] ] ] } } +, +{ "type": "Feature", "id": 6, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3520" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -109.045225, 36.999912 ], [ -109.043673, 31.341899 ], [ -111.023786, 31.334651 ], [ -113.305016, 32.038975 ], [ -114.814743, 32.525276 ], [ -114.721390, 32.720830 ], [ -114.589848, 32.716298 ], [ -114.479777, 32.916337 ], [ -114.655993, 33.053900 ], [ -114.691443, 33.203684 ], [ -114.743301, 33.379875 ], [ -114.548558, 33.609525 ], [ -114.469183, 34.067275 ], [ -114.165972, 34.272585 ], [ -114.354901, 34.464667 ], [ -114.484531, 34.653053 ], [ -114.567084, 34.828210 ], [ -114.622120, 34.963680 ], [ -114.642222, 35.053106 ], [ -114.580856, 35.249425 ], [ -114.630052, 35.445227 ], [ -114.650697, 35.638910 ], [ -114.650180, 35.854272 ], [ -114.739606, 35.991318 ], [ -114.671341, 36.114618 ], [ -114.460734, 36.114618 ], [ -114.269169, 36.043692 ], [ -114.132640, 36.004004 ], [ -114.066495, 36.156424 ], [ -114.023629, 36.189755 ], [ -114.030528, 36.994099 ], [ -112.417603, 37.009421 ], [ -110.496221, 37.007328 ], [ -109.045225, 36.999912 ] ] ] } } +, +{ "type": "Feature", "id": 7, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3521" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -114.354901, 34.464667 ], [ -114.165972, 34.272585 ], [ -114.469183, 34.067275 ], [ -114.548558, 33.609525 ], [ -114.743301, 33.379875 ], [ -114.691443, 33.203684 ], [ -114.655993, 33.053900 ], [ -114.479777, 32.916337 ], [ -114.589848, 32.716298 ], [ -114.721390, 32.720830 ], [ -115.991080, 32.612583 ], [ -117.127729, 32.535327 ], [ -117.295938, 33.046225 ], [ -117.944000, 33.621236 ], [ -118.410602, 33.740909 ], [ -118.519895, 34.027782 ], [ -119.081000, 34.078000 ], [ -119.438841, 34.348477 ], [ -120.367816, 34.447226 ], [ -120.622865, 34.608611 ], [ -120.744589, 35.156821 ], [ -121.714556, 36.161721 ], [ -122.547451, 37.551817 ], [ -122.512000, 37.783611 ], [ -122.953317, 38.113798 ], [ -123.726965, 38.951473 ], [ -123.865070, 39.766927 ], [ -124.397958, 40.313018 ], [ -124.178875, 41.142244 ], [ -124.213809, 41.999478 ], [ -119.998976, 41.992605 ], [ -120.000035, 38.995398 ], [ -118.114620, 37.644421 ], [ -116.320750, 36.322047 ], [ -114.642222, 35.053106 ], [ -114.622120, 34.963680 ], [ -114.567084, 34.828210 ], [ -114.484531, 34.653053 ], [ -114.354901, 34.464667 ] ] ] } } +, +{ "type": "Feature", "id": 8, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3522" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -102.050174, 40.000815 ], [ -102.040123, 38.459875 ], [ -102.041182, 36.991980 ], [ -103.003216, 36.995158 ], [ -104.200198, 36.996192 ], [ -105.899861, 36.997277 ], [ -107.479971, 36.999912 ], [ -109.045225, 36.999912 ], [ -109.053183, 41.001994 ], [ -108.050944, 41.002536 ], [ -107.049739, 41.002536 ], [ -105.046864, 41.003596 ], [ -104.045142, 41.004112 ], [ -102.048055, 41.004112 ], [ -102.050174, 40.033086 ], [ -102.050174, 40.000815 ] ] ] } } +, +{ "type": "Feature", "id": 9, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3523" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -114.030528, 36.994099 ], [ -114.023629, 36.189755 ], [ -114.066495, 36.156424 ], [ -114.132640, 36.004004 ], [ -114.269169, 36.043692 ], [ -114.460734, 36.114618 ], [ -114.671341, 36.114618 ], [ -114.739606, 35.991318 ], [ -114.650180, 35.854272 ], [ -114.650697, 35.638910 ], [ -114.630052, 35.445227 ], [ -114.580856, 35.249425 ], [ -114.642222, 35.053106 ], [ -116.320750, 36.322047 ], [ -118.114620, 37.644421 ], [ -120.000035, 38.995398 ], [ -119.998976, 41.992605 ], [ -117.028252, 41.997359 ], [ -117.028252, 42.000021 ], [ -114.034223, 41.993122 ], [ -114.030528, 36.994099 ] ] ] } } +, +{ "type": "Feature", "id": 10, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3524" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -103.001614, 33.879948 ], [ -103.001614, 31.999287 ], [ -103.929775, 31.999287 ], [ -105.730001, 31.999287 ], [ -106.630127, 31.999287 ], [ -106.619533, 31.914099 ], [ -106.507344, 31.754289 ], [ -108.240000, 31.754854 ], [ -108.241966, 31.342067 ], [ -109.043673, 31.341899 ], [ -109.045225, 36.999912 ], [ -107.479971, 36.999912 ], [ -105.899861, 36.997277 ], [ -104.200198, 36.996192 ], [ -103.003216, 36.995158 ], [ -103.001614, 36.499323 ], [ -103.001614, 33.879948 ] ] ] } } +, +{ "type": "Feature", "id": 11, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3525" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -117.028252, 42.000021 ], [ -117.028252, 41.997359 ], [ -119.998976, 41.992605 ], [ -124.213809, 41.999478 ], [ -124.532840, 42.765990 ], [ -124.142140, 43.708380 ], [ -123.898930, 45.523410 ], [ -123.998676, 46.283069 ], [ -123.776704, 46.282033 ], [ -123.471373, 46.277253 ], [ -123.228494, 46.186251 ], [ -122.937969, 46.129097 ], [ -122.752244, 45.938075 ], [ -122.725786, 45.770333 ], [ -122.651708, 45.630083 ], [ -122.420456, 45.591998 ], [ -122.174915, 45.595150 ], [ -121.788091, 45.700983 ], [ -121.561077, 45.732764 ], [ -121.203889, 45.689899 ], [ -121.046741, 45.637499 ], [ -120.837193, 45.672949 ], [ -120.609636, 45.753900 ], [ -120.158268, 45.740671 ], [ -119.787309, 45.850768 ], [ -119.592050, 45.932235 ], [ -119.337000, 45.888336 ], [ -118.978236, 45.992568 ], [ -116.915003, 45.999983 ], [ -116.678997, 45.807359 ], [ -116.511255, 45.726408 ], [ -116.457796, 45.574531 ], [ -116.558875, 45.444358 ], [ -116.693285, 45.186648 ], [ -116.836145, 44.863851 ], [ -117.051532, 44.665956 ], [ -117.192299, 44.438942 ], [ -117.194391, 44.279132 ], [ -117.007607, 44.211410 ], [ -116.926656, 44.081211 ], [ -117.013963, 43.797069 ], [ -117.028252, 42.000021 ] ] ] } } +, +{ "type": "Feature", "id": 12, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3526" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -109.053183, 41.001994 ], [ -109.045225, 36.999912 ], [ -110.496221, 37.007328 ], [ -112.417603, 37.009421 ], [ -114.030528, 36.994099 ], [ -114.034223, 41.993122 ], [ -111.050245, 42.001597 ], [ -111.054482, 41.027935 ], [ -109.053183, 41.001994 ] ] ] } } +, +{ "type": "Feature", "id": 13, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3527" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.067194, 44.541597 ], [ -111.071406, 45.049602 ], [ -109.102379, 45.057018 ], [ -107.546634, 45.045881 ], [ -105.745891, 45.051178 ], [ -104.077957, 45.040610 ], [ -104.052558, 43.000140 ], [ -104.045142, 41.004112 ], [ -105.046864, 41.003596 ], [ -107.049739, 41.002536 ], [ -108.050944, 41.002536 ], [ -109.053183, 41.001994 ], [ -111.054482, 41.027935 ], [ -111.050245, 42.001597 ], [ -111.049728, 44.488163 ], [ -111.085178, 44.506147 ], [ -111.067194, 44.541597 ] ] ] } } +, +{ "type": "Feature", "id": 14, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3528" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.662919, 36.023073 ], [ -89.673513, 35.940003 ], [ -89.775109, 35.799236 ], [ -89.950266, 35.701878 ], [ -89.988894, 35.536229 ], [ -90.147102, 35.404997 ], [ -90.134932, 35.113955 ], [ -90.249240, 35.020834 ], [ -90.268283, 34.941459 ], [ -90.446618, 34.866838 ], [ -90.450313, 34.721860 ], [ -90.584207, 34.454099 ], [ -90.699549, 34.397461 ], [ -90.876308, 34.261475 ], [ -90.982141, 34.055105 ], [ -91.200681, 33.706393 ], [ -91.223444, 33.469327 ], [ -91.108077, 33.206836 ], [ -91.156239, 33.010001 ], [ -92.001304, 33.043875 ], [ -93.094028, 33.010518 ], [ -94.059757, 33.012120 ], [ -94.002086, 33.579914 ], [ -94.233338, 33.583609 ], [ -94.427538, 33.570380 ], [ -94.479912, 33.635983 ], [ -94.451361, 34.510710 ], [ -94.430174, 35.483312 ], [ -94.628611, 36.540586 ], [ -93.412587, 36.526298 ], [ -92.307177, 36.523662 ], [ -91.251479, 36.523146 ], [ -90.112194, 36.461754 ], [ -90.029099, 36.337937 ], [ -90.141805, 36.230502 ], [ -90.253995, 36.122550 ], [ -90.315386, 36.023073 ], [ -89.662919, 36.023073 ] ] ] } } +, +{ "type": "Feature", "id": 15, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3529" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.156636, 42.103735 ], [ -90.210070, 41.834914 ], [ -90.395278, 41.608417 ], [ -90.461966, 41.536457 ], [ -90.690557, 41.478786 ], [ -91.033999, 41.429565 ], [ -91.123425, 41.257585 ], [ -90.999065, 41.179812 ], [ -90.956742, 41.024757 ], [ -91.087432, 40.851719 ], [ -91.154120, 40.699842 ], [ -91.410229, 40.551143 ], [ -91.430331, 40.368596 ], [ -91.567403, 40.452208 ], [ -91.758425, 40.614110 ], [ -92.851665, 40.592432 ], [ -94.002086, 40.585017 ], [ -94.898491, 40.583440 ], [ -95.796499, 40.583957 ], [ -95.862102, 40.764928 ], [ -95.834067, 40.943806 ], [ -95.855746, 41.116302 ], [ -95.958427, 41.404708 ], [ -96.025089, 41.524287 ], [ -96.097049, 41.556559 ], [ -96.104464, 41.787811 ], [ -96.167432, 41.953434 ], [ -96.348945, 42.141821 ], [ -96.346827, 42.224374 ], [ -96.410311, 42.389480 ], [ -96.455296, 42.488957 ], [ -96.453719, 42.580502 ], [ -96.615648, 42.691632 ], [ -96.535213, 42.855679 ], [ -96.483356, 43.016005 ], [ -96.459533, 43.124500 ], [ -96.587070, 43.257308 ], [ -96.586011, 43.501247 ], [ -96.452660, 43.501789 ], [ -95.359936, 43.500187 ], [ -94.001027, 43.513417 ], [ -92.540005, 43.519773 ], [ -91.228199, 43.501247 ], [ -91.213910, 43.446754 ], [ -91.083737, 43.288004 ], [ -91.173163, 43.212324 ], [ -91.169985, 43.002233 ], [ -91.129238, 42.912833 ], [ -91.064694, 42.754083 ], [ -90.738177, 42.658275 ], [ -90.640818, 42.505364 ], [ -90.582605, 42.429168 ], [ -90.464602, 42.378370 ], [ -90.416982, 42.270418 ], [ -90.259808, 42.189983 ], [ -90.156636, 42.103735 ] ] ] } } +, +{ "type": "Feature", "id": 16, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3530" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -94.604814, 39.139859 ], [ -94.615382, 38.068839 ], [ -94.622798, 36.999912 ], [ -95.500160, 36.998853 ], [ -97.299844, 36.997277 ], [ -99.100070, 36.995158 ], [ -100.100215, 36.994099 ], [ -101.099792, 36.993039 ], [ -102.041182, 36.991980 ], [ -102.040123, 38.459875 ], [ -102.050174, 40.000815 ], [ -102.048055, 40.000815 ], [ -100.300229, 40.000815 ], [ -99.000076, 40.000815 ], [ -96.699777, 40.001357 ], [ -95.322884, 40.001357 ], [ -95.085302, 39.868006 ], [ -94.955103, 39.870125 ], [ -94.926552, 39.725121 ], [ -95.067292, 39.539912 ], [ -94.991096, 39.444673 ], [ -94.867796, 39.234582 ], [ -94.604814, 39.139859 ] ] ] } } +, +{ "type": "Feature", "id": 17, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3531" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -94.617501, 36.999912 ], [ -94.622798, 36.999912 ], [ -94.615382, 38.068839 ], [ -94.604814, 39.139859 ], [ -94.867796, 39.234582 ], [ -94.991096, 39.444673 ], [ -95.067292, 39.539912 ], [ -94.926552, 39.725121 ], [ -94.955103, 39.870125 ], [ -95.085302, 39.868006 ], [ -95.322884, 40.001357 ], [ -95.452540, 40.215143 ], [ -95.608112, 40.343171 ], [ -95.776371, 40.501404 ], [ -95.796499, 40.583957 ], [ -94.898491, 40.583440 ], [ -94.002086, 40.585017 ], [ -92.851665, 40.592432 ], [ -91.758425, 40.614110 ], [ -91.567403, 40.452208 ], [ -91.430331, 40.368596 ], [ -91.517638, 40.119877 ], [ -91.428212, 39.820903 ], [ -91.262589, 39.615050 ], [ -91.071567, 39.445190 ], [ -90.841375, 39.310779 ], [ -90.749287, 39.265278 ], [ -90.665701, 39.074773 ], [ -90.649810, 38.907548 ], [ -90.535528, 38.865768 ], [ -90.346599, 38.930311 ], [ -90.156094, 38.769443 ], [ -90.212731, 38.584777 ], [ -90.305335, 38.439256 ], [ -90.369879, 38.263556 ], [ -90.228079, 38.113281 ], [ -90.030158, 37.971998 ], [ -89.916909, 37.968277 ], [ -89.654987, 37.748678 ], [ -89.553908, 37.719042 ], [ -89.479287, 37.477222 ], [ -89.516339, 37.326921 ], [ -89.388285, 37.081406 ], [ -89.280333, 37.107348 ], [ -89.103057, 36.952293 ], [ -89.134270, 36.851756 ], [ -89.115227, 36.694582 ], [ -89.273977, 36.611512 ], [ -89.498356, 36.506196 ], [ -89.524272, 36.409354 ], [ -89.585121, 36.267011 ], [ -89.662919, 36.023073 ], [ -90.315386, 36.023073 ], [ -90.253995, 36.122550 ], [ -90.141805, 36.230502 ], [ -90.029099, 36.337937 ], [ -90.112194, 36.461754 ], [ -91.251479, 36.523146 ], [ -92.307177, 36.523662 ], [ -93.412587, 36.526298 ], [ -94.628611, 36.540586 ], [ -94.617501, 36.999912 ] ] ] } } +, +{ "type": "Feature", "id": 18, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3532" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -95.452540, 40.215143 ], [ -95.322884, 40.001357 ], [ -96.699777, 40.001357 ], [ -99.000076, 40.000815 ], [ -100.300229, 40.000815 ], [ -102.048055, 40.000815 ], [ -102.050174, 40.000815 ], [ -102.050174, 40.033086 ], [ -102.048055, 41.004112 ], [ -104.045142, 41.004112 ], [ -104.052558, 43.000140 ], [ -102.099912, 43.000140 ], [ -100.599745, 43.000140 ], [ -98.594183, 43.000140 ], [ -98.335956, 42.873662 ], [ -97.968201, 42.794287 ], [ -97.881927, 42.839789 ], [ -97.644344, 42.836094 ], [ -97.287157, 42.846145 ], [ -97.028387, 42.717548 ], [ -96.754270, 42.633961 ], [ -96.708768, 42.550866 ], [ -96.623037, 42.502729 ], [ -96.455296, 42.488957 ], [ -96.410311, 42.389480 ], [ -96.346827, 42.224374 ], [ -96.348945, 42.141821 ], [ -96.167432, 41.953434 ], [ -96.104464, 41.787811 ], [ -96.097049, 41.556559 ], [ -96.025089, 41.524287 ], [ -95.958427, 41.404708 ], [ -95.855746, 41.116302 ], [ -95.834067, 40.943806 ], [ -95.862102, 40.764928 ], [ -95.796499, 40.583957 ], [ -95.776371, 40.501404 ], [ -95.608112, 40.343171 ], [ -95.452540, 40.215143 ] ] ] } } +, +{ "type": "Feature", "id": 19, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3533" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -94.628611, 36.540586 ], [ -94.430174, 35.483312 ], [ -94.451361, 34.510710 ], [ -94.479912, 33.635983 ], [ -94.910144, 33.831785 ], [ -95.190592, 33.938161 ], [ -95.418124, 33.870414 ], [ -95.769498, 33.881007 ], [ -95.977469, 33.879431 ], [ -96.148906, 33.797937 ], [ -96.316131, 33.756131 ], [ -96.462711, 33.805327 ], [ -96.796618, 33.751351 ], [ -96.947953, 33.918059 ], [ -97.104067, 33.773598 ], [ -97.376583, 33.838142 ], [ -97.657031, 33.993713 ], [ -97.957090, 33.893694 ], [ -98.088323, 34.134480 ], [ -98.553979, 34.110657 ], [ -98.851893, 34.164633 ], [ -99.187403, 34.235559 ], [ -99.336076, 34.442963 ], [ -99.599083, 34.376300 ], [ -99.761528, 34.457794 ], [ -100.000195, 34.565229 ], [ -100.000195, 35.519848 ], [ -100.000195, 36.499323 ], [ -101.000832, 36.499323 ], [ -102.001495, 36.499323 ], [ -103.001614, 36.499323 ], [ -103.003216, 36.995158 ], [ -102.041182, 36.991980 ], [ -101.099792, 36.993039 ], [ -100.100215, 36.994099 ], [ -99.100070, 36.995158 ], [ -97.299844, 36.997277 ], [ -95.500160, 36.998853 ], [ -94.622798, 36.999912 ], [ -94.617501, 36.999912 ], [ -94.628611, 36.540586 ] ] ] } } +, +{ "type": "Feature", "id": 20, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3534" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.754270, 42.633961 ], [ -97.028387, 42.717548 ], [ -97.287157, 42.846145 ], [ -97.644344, 42.836094 ], [ -97.881927, 42.839789 ], [ -97.968201, 42.794287 ], [ -98.335956, 42.873662 ], [ -98.594183, 43.000140 ], [ -100.599745, 43.000140 ], [ -102.099912, 43.000140 ], [ -104.052558, 43.000140 ], [ -104.077957, 45.040610 ], [ -104.026616, 45.956601 ], [ -102.116862, 45.961355 ], [ -100.066858, 45.965567 ], [ -98.441789, 45.963448 ], [ -96.539451, 46.017967 ], [ -96.556891, 45.872446 ], [ -96.780728, 45.760799 ], [ -96.834704, 45.625329 ], [ -96.735769, 45.470817 ], [ -96.560612, 45.393018 ], [ -96.439431, 44.435763 ], [ -96.452660, 43.501789 ], [ -96.586011, 43.501247 ], [ -96.587070, 43.257308 ], [ -96.459533, 43.124500 ], [ -96.483356, 43.016005 ], [ -96.535213, 42.855679 ], [ -96.615648, 42.691632 ], [ -96.453719, 42.580502 ], [ -96.455296, 42.488957 ], [ -96.623037, 42.502729 ], [ -96.708768, 42.550866 ], [ -96.754270, 42.633961 ] ] ] } } +, +{ "type": "Feature", "id": 21, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3535" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.217670, 29.291080 ], [ -89.408387, 29.159771 ], [ -89.779280, 29.307140 ], [ -90.154630, 29.117430 ], [ -90.880225, 29.148535 ], [ -91.626785, 29.677000 ], [ -92.499060, 29.552300 ], [ -93.226370, 29.783750 ], [ -93.848420, 29.713630 ], [ -93.918474, 29.821772 ], [ -93.816878, 29.968352 ], [ -93.667120, 30.100644 ], [ -93.664484, 30.300140 ], [ -93.737503, 30.366803 ], [ -93.650195, 30.605471 ], [ -93.586168, 30.713940 ], [ -93.489844, 31.079602 ], [ -93.578236, 31.216131 ], [ -93.694120, 31.443662 ], [ -93.779309, 31.675431 ], [ -93.834861, 31.829944 ], [ -93.998908, 31.942650 ], [ -94.059757, 33.012120 ], [ -93.094028, 33.010518 ], [ -92.001304, 33.043875 ], [ -91.156239, 33.010001 ], [ -91.084797, 32.952847 ], [ -91.175799, 32.808385 ], [ -91.030820, 32.602532 ], [ -91.072084, 32.478716 ], [ -90.942971, 32.306736 ], [ -91.081618, 32.204598 ], [ -91.128179, 32.015695 ], [ -91.321320, 31.859580 ], [ -91.411288, 31.650032 ], [ -91.502290, 31.408729 ], [ -91.624531, 31.297082 ], [ -91.583784, 31.047330 ], [ -90.701667, 31.015575 ], [ -89.759219, 31.013456 ], [ -89.787796, 30.847291 ], [ -89.853941, 30.683244 ], [ -89.790457, 30.556791 ], [ -89.658682, 30.440881 ], [ -89.623232, 30.275258 ], [ -89.604706, 30.176298 ], [ -89.413735, 29.894190 ], [ -89.430000, 29.488640 ], [ -89.217670, 29.291080 ] ] ] } } +, +{ "type": "Feature", "id": 22, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3536" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -93.578236, 31.216131 ], [ -93.489844, 31.079602 ], [ -93.586168, 30.713940 ], [ -93.650195, 30.605471 ], [ -93.737503, 30.366803 ], [ -93.664484, 30.300140 ], [ -93.667120, 30.100644 ], [ -93.816878, 29.968352 ], [ -93.918474, 29.821772 ], [ -93.848420, 29.713630 ], [ -94.690003, 29.479932 ], [ -95.600180, 28.738556 ], [ -96.593943, 28.307291 ], [ -97.140034, 27.829981 ], [ -97.370227, 27.380190 ], [ -97.379761, 26.690154 ], [ -97.330023, 26.210209 ], [ -97.140034, 25.869946 ], [ -97.530036, 25.839793 ], [ -98.240174, 26.059934 ], [ -99.020178, 26.370019 ], [ -99.300109, 26.839912 ], [ -99.520225, 27.539999 ], [ -100.110266, 28.109912 ], [ -100.455801, 28.696233 ], [ -100.957450, 29.380972 ], [ -101.662290, 29.779423 ], [ -102.479863, 29.759863 ], [ -103.110109, 28.969808 ], [ -103.939826, 29.269842 ], [ -104.456823, 29.571994 ], [ -104.705541, 30.121805 ], [ -105.037330, 30.644099 ], [ -105.631583, 31.083839 ], [ -106.142766, 31.399737 ], [ -106.507344, 31.754289 ], [ -106.619533, 31.914099 ], [ -106.630127, 31.999287 ], [ -105.730001, 31.999287 ], [ -103.929775, 31.999287 ], [ -103.001614, 31.999287 ], [ -103.001614, 33.879948 ], [ -103.001614, 36.499323 ], [ -102.001495, 36.499323 ], [ -101.000832, 36.499323 ], [ -100.000195, 36.499323 ], [ -100.000195, 35.519848 ], [ -100.000195, 34.565229 ], [ -99.761528, 34.457794 ], [ -99.599083, 34.376300 ], [ -99.336076, 34.442963 ], [ -99.187403, 34.235559 ], [ -98.851893, 34.164633 ], [ -98.553979, 34.110657 ], [ -98.088323, 34.134480 ], [ -97.957090, 33.893694 ], [ -97.657031, 33.993713 ], [ -97.376583, 33.838142 ], [ -97.104067, 33.773598 ], [ -96.947953, 33.918059 ], [ -96.796618, 33.751351 ], [ -96.462711, 33.805327 ], [ -96.316131, 33.756131 ], [ -96.148906, 33.797937 ], [ -95.977469, 33.879431 ], [ -95.769498, 33.881007 ], [ -95.418124, 33.870414 ], [ -95.190592, 33.938161 ], [ -94.910144, 33.831785 ], [ -94.479912, 33.635983 ], [ -94.427538, 33.570380 ], [ -94.233338, 33.583609 ], [ -94.002086, 33.579914 ], [ -94.059757, 33.012120 ], [ -93.998908, 31.942650 ], [ -93.834861, 31.829944 ], [ -93.779309, 31.675431 ], [ -93.694120, 31.443662 ], [ -93.578236, 31.216131 ] ] ] } } +, +{ "type": "Feature", "id": 23, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3537" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -72.876166, 41.220559 ], [ -73.647887, 40.953239 ], [ -73.656687, 40.985070 ], [ -73.692680, 41.107310 ], [ -73.475174, 41.204669 ], [ -73.553489, 41.289857 ], [ -73.497937, 42.054513 ], [ -72.732222, 42.035987 ], [ -71.800909, 42.013250 ], [ -71.792951, 41.466617 ], [ -71.853826, 41.320036 ], [ -72.295142, 41.269755 ], [ -72.876166, 41.220559 ] ] ] } } +, +{ "type": "Feature", "id": 24, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3513" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -69.884799, 41.922764 ], [ -69.965207, 41.636994 ], [ -70.639895, 41.475066 ], [ -71.120382, 41.494651 ], [ -71.147900, 41.647587 ], [ -71.305074, 41.762412 ], [ -71.379152, 42.024360 ], [ -71.800909, 42.013250 ], [ -72.732222, 42.035987 ], [ -73.497937, 42.054513 ], [ -73.282033, 42.743489 ], [ -72.457070, 42.727082 ], [ -71.248979, 42.718091 ], [ -71.145781, 42.816508 ], [ -70.933598, 42.884256 ], [ -70.815052, 42.865187 ], [ -70.825103, 42.334961 ], [ -70.494916, 41.804735 ], [ -70.080058, 41.779879 ], [ -70.184832, 42.144999 ], [ -69.884799, 41.922764 ] ] ] } } +, +{ "type": "Feature", "id": 25, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3538" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.503511, 45.007796 ], [ -71.505087, 45.008312 ], [ -71.405093, 45.254912 ], [ -71.084820, 45.305240 ], [ -70.944165, 43.466339 ], [ -70.981760, 43.367896 ], [ -70.797611, 43.219739 ], [ -70.751025, 43.080032 ], [ -70.645734, 43.090083 ], [ -70.815052, 42.865187 ], [ -70.933598, 42.884256 ], [ -71.145781, 42.816508 ], [ -71.248979, 42.718091 ], [ -72.457070, 42.727082 ], [ -72.537505, 42.830797 ], [ -72.458647, 42.960453 ], [ -72.434307, 43.222918 ], [ -72.403611, 43.285369 ], [ -72.369763, 43.521892 ], [ -72.260209, 43.721388 ], [ -72.178199, 43.808696 ], [ -72.059136, 44.045761 ], [ -72.036373, 44.206630 ], [ -72.003041, 44.304014 ], [ -71.809901, 44.352151 ], [ -71.585522, 44.468035 ], [ -71.546377, 44.592395 ], [ -71.620455, 44.735797 ], [ -71.503511, 45.007796 ] ] ] } } +, +{ "type": "Feature", "id": 26, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3539" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.147900, 41.647587 ], [ -71.120382, 41.494651 ], [ -71.853826, 41.320036 ], [ -71.792951, 41.466617 ], [ -71.800909, 42.013250 ], [ -71.379152, 42.024360 ], [ -71.305074, 41.762412 ], [ -71.147900, 41.647587 ] ] ] } } +, +{ "type": "Feature", "id": 27, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3540" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.503511, 45.007796 ], [ -71.620455, 44.735797 ], [ -71.546377, 44.592395 ], [ -71.585522, 44.468035 ], [ -71.809901, 44.352151 ], [ -72.003041, 44.304014 ], [ -72.036373, 44.206630 ], [ -72.059136, 44.045761 ], [ -72.178199, 43.808696 ], [ -72.260209, 43.721388 ], [ -72.369763, 43.521892 ], [ -72.403611, 43.285369 ], [ -72.434307, 43.222918 ], [ -72.458647, 42.960453 ], [ -72.537505, 42.830797 ], [ -72.457070, 42.727082 ], [ -73.282033, 42.743489 ], [ -73.239710, 43.567935 ], [ -73.383112, 43.575351 ], [ -73.401638, 43.613436 ], [ -73.338128, 43.758440 ], [ -73.429673, 44.019846 ], [ -73.329136, 44.226732 ], [ -73.384172, 44.379152 ], [ -73.407969, 44.676007 ], [ -73.368281, 44.804604 ], [ -73.347662, 45.007253 ], [ -71.505087, 45.008312 ], [ -71.503511, 45.007796 ] ] ] } } +, +{ "type": "Feature", "id": 28, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3541" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -85.054415, 31.108696 ], [ -85.005193, 30.990693 ], [ -87.045663, 30.984879 ], [ -87.617153, 30.927725 ], [ -87.633043, 30.851528 ], [ -87.404969, 30.608649 ], [ -87.457886, 30.411271 ], [ -87.530388, 30.274199 ], [ -88.417802, 30.384812 ], [ -88.449531, 31.911980 ], [ -88.273340, 33.510048 ], [ -88.095522, 34.805989 ], [ -88.166964, 34.999673 ], [ -86.909677, 34.999130 ], [ -85.625388, 34.985901 ], [ -85.365559, 33.744478 ], [ -85.129553, 32.750714 ], [ -84.986151, 32.437969 ], [ -84.898843, 32.259117 ], [ -85.063924, 32.083417 ], [ -85.119502, 31.765400 ], [ -85.065526, 31.577013 ], [ -85.090382, 31.400280 ], [ -85.117900, 31.236233 ], [ -85.054415, 31.108696 ] ] ] } } +, +{ "type": "Feature", "id": 29, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3542" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.056539, 26.880000 ], [ -80.088015, 26.205765 ], [ -80.131560, 25.816775 ], [ -80.381030, 25.206160 ], [ -80.679799, 25.079916 ], [ -81.171913, 25.201098 ], [ -81.330121, 25.639753 ], [ -81.710072, 25.869946 ], [ -82.239781, 26.729842 ], [ -82.705150, 27.495040 ], [ -82.855260, 27.886240 ], [ -82.649885, 28.550170 ], [ -82.930000, 29.100000 ], [ -83.709590, 29.936560 ], [ -84.099797, 30.090050 ], [ -85.108820, 29.636150 ], [ -85.287840, 29.686120 ], [ -85.773100, 30.152610 ], [ -86.400070, 30.400160 ], [ -87.530388, 30.274199 ], [ -87.457886, 30.411271 ], [ -87.404969, 30.608649 ], [ -87.633043, 30.851528 ], [ -87.617153, 30.927725 ], [ -87.045663, 30.984879 ], [ -85.005193, 30.990693 ], [ -84.853316, 30.721355 ], [ -83.847900, 30.675311 ], [ -82.226009, 30.525553 ], [ -82.151931, 30.350938 ], [ -82.022817, 30.440364 ], [ -82.020156, 30.788018 ], [ -81.899517, 30.821892 ], [ -81.701597, 30.748330 ], [ -81.490473, 30.729830 ], [ -81.313710, 30.035520 ], [ -80.979832, 29.179899 ], [ -80.535585, 28.472130 ], [ -80.530040, 28.040072 ], [ -80.056539, 26.880000 ] ] ] } } +, +{ "type": "Feature", "id": 30, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3543" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.865007, 32.033161 ], [ -81.336290, 31.440490 ], [ -81.490473, 30.729830 ], [ -81.701597, 30.748330 ], [ -81.899517, 30.821892 ], [ -82.020156, 30.788018 ], [ -82.022817, 30.440364 ], [ -82.151931, 30.350938 ], [ -82.226009, 30.525553 ], [ -83.847900, 30.675311 ], [ -84.853316, 30.721355 ], [ -85.005193, 30.990693 ], [ -85.054415, 31.108696 ], [ -85.117900, 31.236233 ], [ -85.090382, 31.400280 ], [ -85.065526, 31.577013 ], [ -85.119502, 31.765400 ], [ -85.063924, 32.083417 ], [ -84.898843, 32.259117 ], [ -84.986151, 32.437969 ], [ -85.129553, 32.750714 ], [ -85.365559, 33.744478 ], [ -85.625388, 34.985901 ], [ -84.854376, 34.976909 ], [ -84.320972, 34.986960 ], [ -83.076371, 34.979028 ], [ -83.185925, 34.895958 ], [ -83.346251, 34.706512 ], [ -83.076371, 34.540347 ], [ -82.902815, 34.479498 ], [ -82.716548, 34.163057 ], [ -82.597485, 33.985781 ], [ -82.249289, 33.748716 ], [ -82.180508, 33.624356 ], [ -81.943442, 33.461369 ], [ -81.827015, 33.223244 ], [ -81.507397, 33.021628 ], [ -81.435954, 32.793037 ], [ -81.376707, 32.682450 ], [ -81.411098, 32.608888 ], [ -81.224830, 32.499360 ], [ -81.126412, 32.312033 ], [ -81.127988, 32.121528 ], [ -81.036443, 32.084476 ], [ -80.865007, 32.033161 ] ] ] } } +, +{ "type": "Feature", "id": 31, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3544" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -88.166964, 34.999673 ], [ -88.095522, 34.805989 ], [ -88.273340, 33.510048 ], [ -88.449531, 31.911980 ], [ -88.417802, 30.384812 ], [ -89.180490, 30.315980 ], [ -89.593831, 30.159994 ], [ -89.623232, 30.275258 ], [ -89.658682, 30.440881 ], [ -89.790457, 30.556791 ], [ -89.853941, 30.683244 ], [ -89.787796, 30.847291 ], [ -89.759219, 31.013456 ], [ -90.701667, 31.015575 ], [ -91.583784, 31.047330 ], [ -91.624531, 31.297082 ], [ -91.502290, 31.408729 ], [ -91.411288, 31.650032 ], [ -91.321320, 31.859580 ], [ -91.128179, 32.015695 ], [ -91.081618, 32.204598 ], [ -90.942971, 32.306736 ], [ -91.072084, 32.478716 ], [ -91.030820, 32.602532 ], [ -91.175799, 32.808385 ], [ -91.084797, 32.952847 ], [ -91.156239, 33.010001 ], [ -91.108077, 33.206836 ], [ -91.223444, 33.469327 ], [ -91.200681, 33.706393 ], [ -90.982141, 34.055105 ], [ -90.876308, 34.261475 ], [ -90.699549, 34.397461 ], [ -90.584207, 34.454099 ], [ -90.450313, 34.721860 ], [ -90.446618, 34.866838 ], [ -90.268283, 34.941459 ], [ -90.249240, 35.020834 ], [ -89.263926, 35.021351 ], [ -88.166964, 34.999673 ] ] ] } } +, +{ "type": "Feature", "id": 32, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3545" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -78.554114, 33.861422 ], [ -79.060670, 33.493950 ], [ -79.203570, 33.158390 ], [ -80.301325, 32.509355 ], [ -80.865007, 32.033161 ], [ -81.036443, 32.084476 ], [ -81.127988, 32.121528 ], [ -81.126412, 32.312033 ], [ -81.224830, 32.499360 ], [ -81.411098, 32.608888 ], [ -81.376707, 32.682450 ], [ -81.435954, 32.793037 ], [ -81.507397, 33.021628 ], [ -81.827015, 33.223244 ], [ -81.943442, 33.461369 ], [ -82.180508, 33.624356 ], [ -82.249289, 33.748716 ], [ -82.597485, 33.985781 ], [ -82.716548, 34.163057 ], [ -82.902815, 34.479498 ], [ -83.076371, 34.540347 ], [ -83.346251, 34.706512 ], [ -83.185925, 34.895958 ], [ -83.076371, 34.979028 ], [ -82.976377, 35.008664 ], [ -82.436616, 35.180101 ], [ -81.514270, 35.171652 ], [ -81.045978, 35.125608 ], [ -81.038020, 35.037242 ], [ -80.937483, 35.103387 ], [ -80.780852, 34.934044 ], [ -80.783513, 34.817643 ], [ -79.672780, 34.807566 ], [ -78.554114, 33.861422 ] ] ] } } +, +{ "type": "Feature", "id": 33, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3546" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.640818, 42.505364 ], [ -89.620054, 42.505364 ], [ -88.576552, 42.503246 ], [ -87.806599, 42.494254 ], [ -87.806599, 42.496890 ], [ -87.489641, 42.495313 ], [ -87.039307, 42.492652 ], [ -87.084808, 42.309562 ], [ -87.130335, 42.127015 ], [ -87.175836, 41.943900 ], [ -87.221337, 41.760836 ], [ -87.371638, 41.760836 ], [ -87.520854, 41.760836 ], [ -87.521371, 41.708436 ], [ -87.526151, 41.708436 ], [ -87.527210, 40.550083 ], [ -87.528269, 39.392273 ], [ -87.642035, 39.113944 ], [ -87.559999, 39.040382 ], [ -87.507082, 38.869462 ], [ -87.515040, 38.735052 ], [ -87.598653, 38.674203 ], [ -87.671129, 38.508580 ], [ -87.878558, 38.290557 ], [ -88.018808, 38.021736 ], [ -88.051080, 37.819604 ], [ -88.044207, 37.744983 ], [ -88.157430, 37.605819 ], [ -88.071725, 37.511612 ], [ -88.247399, 37.438594 ], [ -88.473871, 37.354981 ], [ -88.435242, 37.136442 ], [ -88.566475, 37.053888 ], [ -88.807778, 37.146493 ], [ -89.073963, 37.200469 ], [ -89.141685, 37.103627 ], [ -89.103057, 36.952293 ], [ -89.280333, 37.107348 ], [ -89.388285, 37.081406 ], [ -89.516339, 37.326921 ], [ -89.479287, 37.477222 ], [ -89.553908, 37.719042 ], [ -89.654987, 37.748678 ], [ -89.916909, 37.968277 ], [ -90.030158, 37.971998 ], [ -90.228079, 38.113281 ], [ -90.369879, 38.263556 ], [ -90.305335, 38.439256 ], [ -90.212731, 38.584777 ], [ -90.156094, 38.769443 ], [ -90.346599, 38.930311 ], [ -90.535528, 38.865768 ], [ -90.649810, 38.907548 ], [ -90.665701, 39.074773 ], [ -90.749287, 39.265278 ], [ -90.841375, 39.310779 ], [ -91.071567, 39.445190 ], [ -91.262589, 39.615050 ], [ -91.428212, 39.820903 ], [ -91.517638, 40.119877 ], [ -91.430331, 40.368596 ], [ -91.410229, 40.551143 ], [ -91.154120, 40.699842 ], [ -91.087432, 40.851719 ], [ -90.956742, 41.024757 ], [ -90.999065, 41.179812 ], [ -91.123425, 41.257585 ], [ -91.033999, 41.429565 ], [ -90.690557, 41.478786 ], [ -90.461966, 41.536457 ], [ -90.395278, 41.608417 ], [ -90.210070, 41.834914 ], [ -90.156636, 42.103735 ], [ -90.259808, 42.189983 ], [ -90.416982, 42.270418 ], [ -90.464602, 42.378370 ], [ -90.582605, 42.429168 ], [ -90.640818, 42.505364 ] ] ] } } +, +{ "type": "Feature", "id": 34, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3547" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.806756, 41.677741 ], [ -84.809934, 40.772860 ], [ -84.817866, 39.799742 ], [ -84.823680, 39.106528 ], [ -84.881377, 39.059425 ], [ -84.799883, 38.855174 ], [ -84.843265, 38.781096 ], [ -85.011550, 38.779494 ], [ -85.167638, 38.691127 ], [ -85.404187, 38.727120 ], [ -85.425891, 38.535038 ], [ -85.566632, 38.461994 ], [ -85.698407, 38.290015 ], [ -85.839690, 38.258802 ], [ -86.059832, 37.960887 ], [ -86.262507, 38.046619 ], [ -86.325475, 38.169376 ], [ -86.499573, 37.969879 ], [ -86.610160, 37.858749 ], [ -86.825522, 37.976235 ], [ -87.055714, 37.880970 ], [ -87.131394, 37.783611 ], [ -87.439360, 37.936005 ], [ -87.653662, 37.826477 ], [ -87.911373, 37.904250 ], [ -87.921424, 37.793662 ], [ -88.051080, 37.819604 ], [ -88.018808, 38.021736 ], [ -87.878558, 38.290557 ], [ -87.671129, 38.508580 ], [ -87.598653, 38.674203 ], [ -87.515040, 38.735052 ], [ -87.507082, 38.869462 ], [ -87.559999, 39.040382 ], [ -87.642035, 39.113944 ], [ -87.528269, 39.392273 ], [ -87.527210, 40.550083 ], [ -87.526151, 41.708436 ], [ -87.521371, 41.760836 ], [ -87.221337, 41.760836 ], [ -86.918126, 41.760836 ], [ -86.824462, 41.760836 ], [ -86.824462, 41.756056 ], [ -85.748146, 41.751302 ], [ -84.807299, 41.756056 ], [ -84.806756, 41.677741 ] ] ] } } +, +{ "type": "Feature", "id": 35, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3548" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.972536, 37.535952 ], [ -82.372589, 37.238037 ], [ -82.684792, 37.121094 ], [ -82.709132, 37.040143 ], [ -82.815508, 36.934826 ], [ -83.089083, 36.815763 ], [ -83.178509, 36.718379 ], [ -83.384362, 36.656497 ], [ -83.673285, 36.599859 ], [ -84.350091, 36.567045 ], [ -85.231149, 36.609910 ], [ -85.519012, 36.597741 ], [ -86.092621, 36.625775 ], [ -86.677882, 36.633733 ], [ -87.216583, 36.639004 ], [ -87.842049, 36.610970 ], [ -87.874346, 36.656497 ], [ -88.072784, 36.654378 ], [ -88.069606, 36.497204 ], [ -89.498356, 36.506196 ], [ -89.273977, 36.611512 ], [ -89.115227, 36.694582 ], [ -89.134270, 36.851756 ], [ -89.103057, 36.952293 ], [ -89.141685, 37.103627 ], [ -89.073963, 37.200469 ], [ -88.807778, 37.146493 ], [ -88.566475, 37.053888 ], [ -88.435242, 37.136442 ], [ -88.473871, 37.354981 ], [ -88.247399, 37.438594 ], [ -88.071725, 37.511612 ], [ -88.157430, 37.605819 ], [ -88.044207, 37.744983 ], [ -88.051080, 37.819604 ], [ -87.921424, 37.793662 ], [ -87.911373, 37.904250 ], [ -87.653662, 37.826477 ], [ -87.439360, 37.936005 ], [ -87.131394, 37.783611 ], [ -87.055714, 37.880970 ], [ -86.825522, 37.976235 ], [ -86.610160, 37.858749 ], [ -86.499573, 37.969879 ], [ -86.325475, 38.169376 ], [ -86.262507, 38.046619 ], [ -86.059832, 37.960887 ], [ -85.839690, 38.258802 ], [ -85.698407, 38.290015 ], [ -85.566632, 38.461994 ], [ -85.425891, 38.535038 ], [ -85.404187, 38.727120 ], [ -85.167638, 38.691127 ], [ -85.011550, 38.779494 ], [ -84.843265, 38.781096 ], [ -84.799883, 38.855174 ], [ -84.881377, 39.059425 ], [ -84.823680, 39.106528 ], [ -84.481324, 39.083248 ], [ -84.304590, 38.986923 ], [ -84.038948, 38.760994 ], [ -83.826738, 38.690068 ], [ -83.672742, 38.609117 ], [ -83.434617, 38.637151 ], [ -83.258943, 38.579480 ], [ -83.044641, 38.634515 ], [ -82.855195, 38.651440 ], [ -82.775278, 38.511216 ], [ -82.589010, 38.415433 ], [ -82.569967, 38.320194 ], [ -82.580561, 38.113281 ], [ -82.461499, 37.957167 ], [ -82.413336, 37.805315 ], [ -82.267299, 37.675659 ], [ -82.167279, 37.554478 ], [ -81.972536, 37.535952 ] ] ] } } +, +{ "type": "Feature", "id": 36, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3549" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -75.868077, 36.551180 ], [ -75.727310, 35.550518 ], [ -76.363370, 34.808625 ], [ -77.397635, 34.512010 ], [ -78.054960, 33.925470 ], [ -78.554114, 33.861422 ], [ -79.672780, 34.807566 ], [ -80.783513, 34.817643 ], [ -80.780852, 34.934044 ], [ -80.937483, 35.103387 ], [ -81.038020, 35.037242 ], [ -81.045978, 35.125608 ], [ -81.514270, 35.171652 ], [ -82.436616, 35.180101 ], [ -82.976377, 35.008664 ], [ -83.076371, 34.979028 ], [ -84.320972, 34.986960 ], [ -84.298751, 35.198627 ], [ -84.087084, 35.261595 ], [ -84.017760, 35.369004 ], [ -83.875960, 35.490211 ], [ -83.673285, 35.516670 ], [ -83.438338, 35.562687 ], [ -83.209722, 35.648961 ], [ -83.110787, 35.737328 ], [ -82.920282, 35.817220 ], [ -82.925579, 35.889722 ], [ -82.674225, 36.025192 ], [ -82.593248, 35.937342 ], [ -82.223890, 36.125728 ], [ -82.051394, 36.106143 ], [ -81.897399, 36.273910 ], [ -81.693664, 36.317293 ], [ -81.704775, 36.460152 ], [ -81.679376, 36.585571 ], [ -79.992399, 36.542188 ], [ -77.999549, 36.537434 ], [ -76.941215, 36.545883 ], [ -75.868077, 36.551180 ] ] ] } } +, +{ "type": "Feature", "id": 37, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3550" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -82.210661, 38.579480 ], [ -82.340834, 38.440832 ], [ -82.589010, 38.415433 ], [ -82.775278, 38.511216 ], [ -82.855195, 38.651440 ], [ -83.044641, 38.634515 ], [ -83.258943, 38.579480 ], [ -83.434617, 38.637151 ], [ -83.672742, 38.609117 ], [ -83.826738, 38.690068 ], [ -84.038948, 38.760994 ], [ -84.304590, 38.986923 ], [ -84.481324, 39.083248 ], [ -84.823680, 39.106528 ], [ -84.817866, 39.799742 ], [ -84.809934, 40.772860 ], [ -84.806756, 41.677741 ], [ -84.295056, 41.685156 ], [ -83.839967, 41.685156 ], [ -83.462678, 41.694148 ], [ -83.142000, 41.975681 ], [ -83.121898, 41.949739 ], [ -83.029810, 41.832796 ], [ -82.866306, 41.752878 ], [ -82.690089, 41.675105 ], [ -82.439278, 41.675105 ], [ -82.213323, 41.778820 ], [ -81.974138, 41.888890 ], [ -81.760870, 41.986791 ], [ -81.507397, 42.103735 ], [ -81.277747, 42.209026 ], [ -81.027969, 42.247137 ], [ -80.682434, 42.299511 ], [ -80.520506, 42.324394 ], [ -80.516268, 42.324910 ], [ -80.516268, 42.324394 ], [ -80.518930, 40.641111 ], [ -80.657552, 40.590830 ], [ -80.615229, 40.463835 ], [ -80.661789, 40.233643 ], [ -80.764987, 39.973297 ], [ -80.861829, 39.757393 ], [ -80.878753, 39.654221 ], [ -81.150752, 39.426147 ], [ -81.266094, 39.377442 ], [ -81.401047, 39.349407 ], [ -81.522228, 39.371628 ], [ -81.745005, 39.199649 ], [ -81.785752, 39.019221 ], [ -81.816964, 38.921836 ], [ -81.905874, 38.882149 ], [ -81.918560, 38.993796 ], [ -82.054030, 39.018161 ], [ -82.194797, 38.801198 ], [ -82.210661, 38.579480 ] ] ] } } +, +{ "type": "Feature", "id": 38, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3551" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.679376, 36.585571 ], [ -81.704775, 36.460152 ], [ -81.693664, 36.317293 ], [ -81.897399, 36.273910 ], [ -82.051394, 36.106143 ], [ -82.223890, 36.125728 ], [ -82.593248, 35.937342 ], [ -82.674225, 36.025192 ], [ -82.925579, 35.889722 ], [ -82.920282, 35.817220 ], [ -83.110787, 35.737328 ], [ -83.209722, 35.648961 ], [ -83.438338, 35.562687 ], [ -83.673285, 35.516670 ], [ -83.875960, 35.490211 ], [ -84.017760, 35.369004 ], [ -84.087084, 35.261595 ], [ -84.298751, 35.198627 ], [ -84.320972, 34.986960 ], [ -84.854376, 34.976909 ], [ -85.625388, 34.985901 ], [ -86.909677, 34.999130 ], [ -88.166964, 34.999673 ], [ -89.263926, 35.021351 ], [ -90.249240, 35.020834 ], [ -90.134932, 35.113955 ], [ -90.147102, 35.404997 ], [ -89.988894, 35.536229 ], [ -89.950266, 35.701878 ], [ -89.775109, 35.799236 ], [ -89.673513, 35.940003 ], [ -89.662919, 36.023073 ], [ -89.585121, 36.267011 ], [ -89.524272, 36.409354 ], [ -89.498356, 36.506196 ], [ -88.069606, 36.497204 ], [ -88.072784, 36.654378 ], [ -87.874346, 36.656497 ], [ -87.842049, 36.610970 ], [ -87.216583, 36.639004 ], [ -86.677882, 36.633733 ], [ -86.092621, 36.625775 ], [ -85.519012, 36.597741 ], [ -85.231149, 36.609910 ], [ -84.350091, 36.567045 ], [ -83.673285, 36.599859 ], [ -82.186322, 36.565985 ], [ -81.679376, 36.585571 ] ] ] } } +, +{ "type": "Feature", "id": 39, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3552" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -75.377539, 38.015383 ], [ -75.940035, 37.216875 ], [ -76.031063, 37.256563 ], [ -75.722050, 37.937052 ], [ -75.609850, 38.000032 ], [ -75.377539, 38.015383 ] ] ], [ [ [ -78.345625, 39.405504 ], [ -77.834984, 39.134562 ], [ -77.722795, 39.322432 ], [ -77.576216, 39.288561 ], [ -77.443407, 39.213423 ], [ -77.516968, 39.105986 ], [ -77.305819, 39.045679 ], [ -77.119551, 38.934008 ], [ -77.036480, 38.848276 ], [ -77.041235, 38.789545 ], [ -77.059217, 38.708593 ], [ -77.229622, 38.614416 ], [ -77.343388, 38.391611 ], [ -77.210579, 38.337118 ], [ -77.048107, 38.380503 ], [ -76.989895, 38.239733 ], [ -76.301619, 37.917948 ], [ -76.258739, 36.966402 ], [ -75.971800, 36.897261 ], [ -75.868076, 36.551180 ], [ -76.941216, 36.545885 ], [ -77.999548, 36.537436 ], [ -79.992397, 36.542189 ], [ -81.679375, 36.585573 ], [ -82.186321, 36.565985 ], [ -83.673285, 36.599859 ], [ -83.384361, 36.656496 ], [ -83.178509, 36.718382 ], [ -83.089083, 36.815763 ], [ -82.815508, 36.934828 ], [ -82.709131, 37.040144 ], [ -82.684792, 37.121096 ], [ -82.372589, 37.238039 ], [ -81.972536, 37.535952 ], [ -81.928095, 37.366091 ], [ -81.815388, 37.275606 ], [ -81.663511, 37.195173 ], [ -81.348129, 37.315836 ], [ -81.228008, 37.245455 ], [ -80.854929, 37.329065 ], [ -80.833252, 37.418493 ], [ -80.720003, 37.383043 ], [ -80.596186, 37.456060 ], [ -80.456995, 37.441774 ], [ -80.298244, 37.519030 ], [ -80.276567, 37.610575 ], [ -80.292974, 37.728060 ], [ -80.157505, 37.901098 ], [ -79.964363, 38.031790 ], [ -79.915142, 38.179426 ], [ -79.743679, 38.357222 ], [ -79.647923, 38.574728 ], [ -79.515089, 38.497446 ], [ -79.366390, 38.426027 ], [ -79.222988, 38.464632 ], [ -79.174826, 38.555658 ], [ -79.076408, 38.680017 ], [ -78.965277, 38.821817 ], [ -78.892801, 38.780039 ], [ -78.744619, 38.909151 ], [ -78.548843, 39.039839 ], [ -78.424484, 39.139318 ], [ -78.345625, 39.405504 ] ] ] ] } } +, +{ "type": "Feature", "id": 40, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3553" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -86.481563, 45.323177 ], [ -86.264600, 45.226878 ], [ -86.401672, 45.133214 ], [ -86.536082, 45.041670 ], [ -86.714934, 44.846410 ], [ -86.822344, 44.591335 ], [ -86.918668, 44.361685 ], [ -87.032434, 44.091288 ], [ -87.083232, 43.890190 ], [ -87.141962, 43.657878 ], [ -87.145140, 43.571088 ], [ -87.155191, 43.326632 ], [ -87.113928, 43.030294 ], [ -87.079537, 42.782118 ], [ -87.039307, 42.492652 ], [ -87.489641, 42.495313 ], [ -87.806599, 42.496890 ], [ -87.806599, 42.494254 ], [ -88.576552, 42.503246 ], [ -89.620054, 42.505364 ], [ -90.640818, 42.505364 ], [ -90.738177, 42.658275 ], [ -91.064694, 42.754083 ], [ -91.129238, 42.912833 ], [ -91.169985, 43.002233 ], [ -91.173163, 43.212324 ], [ -91.083737, 43.288004 ], [ -91.213910, 43.446754 ], [ -91.228199, 43.501247 ], [ -91.254657, 43.613979 ], [ -91.257292, 43.854739 ], [ -91.289590, 43.937293 ], [ -91.627709, 44.085449 ], [ -91.879606, 44.257428 ], [ -91.949989, 44.364838 ], [ -92.062153, 44.432585 ], [ -92.385492, 44.574928 ], [ -92.505072, 44.583920 ], [ -92.796656, 44.776027 ], [ -92.766477, 44.996143 ], [ -92.765417, 45.267082 ], [ -92.689221, 45.518436 ], [ -92.899828, 45.705763 ], [ -92.756968, 45.889912 ], [ -92.543700, 45.985695 ], [ -92.296583, 46.096282 ], [ -92.264828, 46.095223 ], [ -92.274879, 46.656145 ], [ -92.011898, 46.711723 ], [ -91.964794, 46.729706 ], [ -91.840978, 46.778385 ], [ -91.716618, 46.827607 ], [ -91.592259, 46.876260 ], [ -91.468442, 46.924966 ], [ -91.264708, 47.021265 ], [ -91.060974, 47.117047 ], [ -90.857782, 47.212829 ], [ -90.654048, 47.309128 ], [ -90.479950, 47.303857 ], [ -90.305852, 47.298018 ], [ -90.131754, 47.292747 ], [ -89.957656, 47.286907 ], [ -90.014810, 47.199600 ], [ -90.071448, 47.111750 ], [ -90.128059, 47.023900 ], [ -90.185213, 46.936076 ], [ -90.241825, 46.848226 ], [ -90.298979, 46.760919 ], [ -90.355590, 46.673069 ], [ -90.395278, 46.611677 ], [ -90.410626, 46.584185 ], [ -90.396880, 46.576253 ], [ -90.334971, 46.596872 ], [ -90.333912, 46.593694 ], [ -90.176738, 46.560879 ], [ -90.096304, 46.380994 ], [ -89.221060, 46.202116 ], [ -88.644274, 46.022204 ], [ -88.361707, 46.020628 ], [ -88.166964, 46.007916 ], [ -88.111929, 45.843352 ], [ -87.875406, 45.779842 ], [ -87.787013, 45.639618 ], [ -87.847888, 45.559183 ], [ -87.893389, 45.396713 ], [ -87.673248, 45.387747 ], [ -87.747326, 45.226878 ], [ -87.613975, 45.108875 ], [ -87.612915, 45.110451 ], [ -87.459462, 45.068128 ], [ -87.419775, 45.184012 ], [ -87.244617, 45.289846 ], [ -87.115504, 45.452291 ], [ -86.942465, 45.452291 ], [ -86.774207, 45.452291 ], [ -86.481563, 45.323177 ] ] ] } } +, +{ "type": "Feature", "id": 41, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3554" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -77.722796, 39.322432 ], [ -77.834985, 39.134562 ], [ -78.345626, 39.405502 ], [ -78.424484, 39.139317 ], [ -78.548843, 39.039840 ], [ -78.744620, 38.909150 ], [ -78.892802, 38.780036 ], [ -78.965278, 38.821817 ], [ -79.076408, 38.680017 ], [ -79.174826, 38.555657 ], [ -79.222988, 38.464629 ], [ -79.366390, 38.426027 ], [ -79.515089, 38.497444 ], [ -79.647924, 38.574726 ], [ -79.743680, 38.357220 ], [ -79.915142, 38.179427 ], [ -79.964364, 38.031787 ], [ -80.157505, 37.901098 ], [ -80.292975, 37.728059 ], [ -80.276567, 37.610573 ], [ -80.298246, 37.519028 ], [ -80.456996, 37.441772 ], [ -80.596186, 37.456060 ], [ -80.720003, 37.383041 ], [ -80.833252, 37.418492 ], [ -80.854930, 37.329065 ], [ -81.228008, 37.245453 ], [ -81.348130, 37.315836 ], [ -81.663511, 37.195172 ], [ -81.815388, 37.275606 ], [ -81.928094, 37.366092 ], [ -81.972536, 37.535952 ], [ -82.167279, 37.554478 ], [ -82.267299, 37.675659 ], [ -82.413336, 37.805315 ], [ -82.461499, 37.957167 ], [ -82.580561, 38.113281 ], [ -82.569967, 38.320194 ], [ -82.589010, 38.415433 ], [ -82.340834, 38.440832 ], [ -82.210661, 38.579480 ], [ -82.194797, 38.801198 ], [ -82.054030, 39.018161 ], [ -81.918560, 38.993796 ], [ -81.905874, 38.882149 ], [ -81.816964, 38.921836 ], [ -81.785752, 39.019221 ], [ -81.745005, 39.199649 ], [ -81.522228, 39.371628 ], [ -81.401047, 39.349407 ], [ -81.266094, 39.377442 ], [ -81.150752, 39.426147 ], [ -80.878753, 39.654221 ], [ -80.861829, 39.757393 ], [ -80.764987, 39.973297 ], [ -80.661789, 40.233643 ], [ -80.615229, 40.463835 ], [ -80.657552, 40.590830 ], [ -80.518930, 40.641111 ], [ -80.518930, 39.720883 ], [ -79.477521, 39.720883 ], [ -79.485995, 39.213421 ], [ -79.332516, 39.302847 ], [ -79.161080, 39.418214 ], [ -78.963159, 39.457902 ], [ -78.829291, 39.562650 ], [ -78.534012, 39.522446 ], [ -78.425001, 39.596524 ], [ -78.232403, 39.672204 ], [ -77.923352, 39.592829 ], [ -77.801654, 39.449944 ], [ -77.722796, 39.322432 ] ] ] } } +, +{ "type": "Feature", "id": 42, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3555" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -75.319867, 38.959948 ], [ -75.071835, 38.782032 ], [ -75.048385, 38.448765 ], [ -75.714624, 38.449307 ], [ -75.787642, 39.723545 ], [ -75.710903, 39.802377 ], [ -75.620960, 39.847361 ], [ -75.405573, 39.795504 ], [ -75.554272, 39.691247 ], [ -75.527813, 39.498649 ], [ -75.319867, 38.959948 ] ] ] } } +, +{ "type": "Feature", "id": 43, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3556" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.911579, 38.878454 ], [ -77.041235, 38.789545 ], [ -77.036481, 38.848275 ], [ -77.119551, 38.934006 ], [ -77.038600, 38.982169 ], [ -76.911579, 38.878454 ] ] ] } } +, +{ "type": "Feature", "id": 44, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3557" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -75.048385, 38.448765 ], [ -75.056730, 38.404120 ], [ -75.377538, 38.015380 ], [ -75.609850, 38.000032 ], [ -75.722050, 37.937050 ], [ -76.232870, 38.319215 ], [ -76.350000, 39.150000 ], [ -76.542725, 38.717615 ], [ -76.329330, 38.083260 ], [ -76.989895, 38.239733 ], [ -77.048108, 38.380500 ], [ -77.210579, 38.337118 ], [ -77.343387, 38.391610 ], [ -77.229622, 38.614413 ], [ -77.059219, 38.708594 ], [ -77.041235, 38.789545 ], [ -76.911579, 38.878454 ], [ -77.038600, 38.982169 ], [ -77.119551, 38.934006 ], [ -77.305818, 39.045679 ], [ -77.516968, 39.105985 ], [ -77.443407, 39.213421 ], [ -77.576215, 39.288558 ], [ -77.722796, 39.322432 ], [ -77.801654, 39.449944 ], [ -77.923352, 39.592829 ], [ -78.232403, 39.672204 ], [ -78.425001, 39.596524 ], [ -78.534012, 39.522446 ], [ -78.829291, 39.562650 ], [ -78.963159, 39.457902 ], [ -79.161080, 39.418214 ], [ -79.332516, 39.302847 ], [ -79.485995, 39.213421 ], [ -79.477521, 39.720883 ], [ -78.549903, 39.719824 ], [ -78.232919, 39.721400 ], [ -77.523299, 39.725663 ], [ -76.668183, 39.720883 ], [ -75.787642, 39.723545 ], [ -75.714624, 38.449307 ], [ -75.048385, 38.448765 ] ] ] } } +, +{ "type": "Feature", "id": 45, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3558" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -73.912796, 40.960187 ], [ -73.952325, 40.750750 ], [ -74.256754, 40.473370 ], [ -73.962440, 40.427630 ], [ -74.178438, 39.709256 ], [ -74.906042, 38.939303 ], [ -74.980663, 39.196497 ], [ -75.200262, 39.248354 ], [ -75.527813, 39.498649 ], [ -75.554272, 39.691247 ], [ -75.405573, 39.795504 ], [ -75.200805, 39.887049 ], [ -75.128820, 39.949500 ], [ -74.891754, 40.081791 ], [ -74.763183, 40.190777 ], [ -75.078022, 40.449547 ], [ -75.095488, 40.555380 ], [ -75.203957, 40.586619 ], [ -75.199203, 40.747461 ], [ -75.082259, 40.869702 ], [ -75.135718, 40.999875 ], [ -74.975909, 41.087725 ], [ -74.801268, 41.311561 ], [ -74.679028, 41.355486 ], [ -73.912796, 40.960187 ] ] ] } } +, +{ "type": "Feature", "id": 46, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3559" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -74.679028, 41.355486 ], [ -74.840439, 41.426386 ], [ -75.010816, 41.495710 ], [ -75.075386, 41.641231 ], [ -75.048928, 41.751302 ], [ -75.167990, 41.841787 ], [ -75.385471, 41.998961 ], [ -76.743837, 42.000537 ], [ -78.200648, 42.000021 ], [ -79.760087, 42.000021 ], [ -79.760087, 42.500068 ], [ -79.773257, 42.546894 ], [ -78.939362, 42.863611 ], [ -78.919777, 42.965207 ], [ -79.010000, 43.270000 ], [ -79.171674, 43.466339 ], [ -79.002330, 43.527188 ], [ -78.845699, 43.583283 ], [ -78.720280, 43.625089 ], [ -76.820034, 43.628784 ], [ -76.696760, 43.784899 ], [ -76.586147, 43.924063 ], [ -76.500000, 44.018459 ], [ -76.375000, 44.096310 ], [ -75.318265, 44.816231 ], [ -74.866898, 45.000380 ], [ -73.347662, 45.007253 ], [ -73.368281, 44.804604 ], [ -73.407969, 44.676007 ], [ -73.384172, 44.379152 ], [ -73.329136, 44.226732 ], [ -73.429673, 44.019846 ], [ -73.338128, 43.758440 ], [ -73.401638, 43.613436 ], [ -73.383112, 43.575351 ], [ -73.239710, 43.567935 ], [ -73.282033, 42.743489 ], [ -73.497937, 42.054513 ], [ -73.553489, 41.289857 ], [ -73.475174, 41.204669 ], [ -73.692680, 41.107310 ], [ -73.656687, 40.985070 ], [ -73.647887, 40.954769 ], [ -73.710000, 40.931102 ], [ -72.241166, 41.119480 ], [ -71.944828, 40.930034 ], [ -73.345001, 40.630001 ], [ -73.982120, 40.627882 ], [ -73.952325, 40.750750 ], [ -73.912796, 40.960187 ], [ -74.679028, 41.355486 ] ] ] } } +, +{ "type": "Feature", "id": 47, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3560" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -74.891754, 40.081791 ], [ -75.128820, 39.949500 ], [ -75.200805, 39.887049 ], [ -75.405573, 39.795504 ], [ -75.620960, 39.847361 ], [ -75.710903, 39.802377 ], [ -75.787642, 39.723545 ], [ -76.668183, 39.720883 ], [ -77.523299, 39.725663 ], [ -78.232919, 39.721400 ], [ -78.549903, 39.719824 ], [ -79.477521, 39.720883 ], [ -80.518930, 39.720883 ], [ -80.518930, 40.641111 ], [ -80.516268, 42.324394 ], [ -80.516268, 42.324910 ], [ -80.247448, 42.366200 ], [ -79.772638, 42.546275 ], [ -79.760087, 42.500068 ], [ -79.760087, 42.000021 ], [ -78.200648, 42.000021 ], [ -76.743837, 42.000537 ], [ -75.385471, 41.998961 ], [ -75.167990, 41.841787 ], [ -75.048928, 41.751302 ], [ -75.075386, 41.641231 ], [ -75.010816, 41.495710 ], [ -74.840439, 41.426386 ], [ -74.679028, 41.355486 ], [ -74.801268, 41.311561 ], [ -74.975909, 41.087725 ], [ -75.135718, 40.999875 ], [ -75.082259, 40.869702 ], [ -75.199203, 40.747461 ], [ -75.203957, 40.586619 ], [ -75.095488, 40.555380 ], [ -75.078022, 40.449547 ], [ -74.763183, 40.190777 ], [ -74.891754, 40.081791 ] ] ] } } +, +{ "type": "Feature", "id": 48, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3561" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -67.137344, 45.137452 ], [ -66.964660, 44.809700 ], [ -68.032520, 44.325200 ], [ -69.060000, 43.980000 ], [ -70.116170, 43.684050 ], [ -70.645734, 43.090083 ], [ -70.751025, 43.080032 ], [ -70.797611, 43.219739 ], [ -70.981760, 43.367896 ], [ -70.944165, 43.466339 ], [ -71.084820, 45.305240 ], [ -70.660023, 45.460223 ], [ -70.304954, 45.914795 ], [ -70.000140, 46.693171 ], [ -69.237086, 47.447776 ], [ -68.904781, 47.184795 ], [ -68.234305, 47.354629 ], [ -67.790353, 47.066249 ], [ -67.791412, 45.702585 ], [ -67.137344, 45.137452 ] ] ] } } +, +{ "type": "Feature", "id": 49, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3562" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.395278, 46.611677 ], [ -90.355590, 46.673069 ], [ -90.298979, 46.760919 ], [ -90.241825, 46.848226 ], [ -90.185213, 46.936076 ], [ -90.128059, 47.023900 ], [ -90.071448, 47.111750 ], [ -90.014810, 47.199600 ], [ -89.957656, 47.286907 ], [ -89.842831, 47.464726 ], [ -89.728006, 47.641976 ], [ -89.613698, 47.819252 ], [ -89.522695, 47.960535 ], [ -89.488885, 48.015263 ], [ -89.272917, 48.019808 ], [ -89.185610, 48.047326 ], [ -88.378114, 48.302918 ], [ -87.494396, 47.961595 ], [ -87.208108, 47.848372 ], [ -86.921846, 47.735123 ], [ -86.672068, 47.636162 ], [ -86.495335, 47.566838 ], [ -86.428647, 47.539838 ], [ -86.234447, 47.459946 ], [ -86.040247, 47.380054 ], [ -85.846563, 47.300136 ], [ -85.652363, 47.220219 ], [ -85.458163, 47.139810 ], [ -85.263963, 47.059893 ], [ -85.070280, 46.980001 ], [ -84.876080, 46.900083 ], [ -84.826858, 46.766732 ], [ -84.779238, 46.637102 ], [ -84.543749, 46.538684 ], [ -84.543232, 46.538684 ], [ -84.604900, 46.439600 ], [ -84.336700, 46.408770 ], [ -84.142120, 46.512226 ], [ -84.128374, 46.483649 ], [ -84.115144, 46.370917 ], [ -84.091851, 46.275419 ], [ -83.890765, 46.116927 ], [ -83.763228, 46.108969 ], [ -83.669048, 46.122741 ], [ -83.616131, 46.116927 ], [ -83.469551, 45.994686 ], [ -83.592851, 45.816894 ], [ -83.397049, 45.729044 ], [ -83.179052, 45.632719 ], [ -82.919223, 45.517920 ], [ -82.760473, 45.447510 ], [ -82.550925, 45.347517 ], [ -82.515475, 45.204114 ], [ -82.485296, 45.083993 ], [ -82.446667, 44.915708 ], [ -82.407523, 44.743729 ], [ -82.368352, 44.572809 ], [ -82.326546, 44.391296 ], [ -82.281044, 44.192342 ], [ -82.240840, 44.015608 ], [ -82.196373, 43.822442 ], [ -82.137642, 43.571088 ], [ -82.190559, 43.474272 ], [ -82.417031, 43.017607 ], [ -82.429743, 42.980038 ], [ -82.900180, 42.430227 ], [ -83.119779, 42.079912 ], [ -83.128771, 42.068802 ], [ -83.142000, 41.975681 ], [ -83.462678, 41.694148 ], [ -83.839967, 41.685156 ], [ -84.295056, 41.685156 ], [ -84.806756, 41.677741 ], [ -84.807299, 41.756056 ], [ -85.748146, 41.751302 ], [ -86.824462, 41.756056 ], [ -86.824462, 41.760836 ], [ -86.918126, 41.760836 ], [ -87.221337, 41.760836 ], [ -87.175836, 41.943900 ], [ -87.130335, 42.127015 ], [ -87.084808, 42.309562 ], [ -87.039307, 42.492652 ], [ -87.079537, 42.782118 ], [ -87.113928, 43.030294 ], [ -87.155191, 43.326632 ], [ -87.145140, 43.571088 ], [ -87.141962, 43.657878 ], [ -87.083232, 43.890190 ], [ -87.032434, 44.091288 ], [ -86.918668, 44.361685 ], [ -86.822344, 44.591335 ], [ -86.714934, 44.846410 ], [ -86.536082, 45.041670 ], [ -86.401672, 45.133214 ], [ -86.264600, 45.226878 ], [ -86.481563, 45.323177 ], [ -86.774207, 45.452291 ], [ -86.942465, 45.452291 ], [ -87.115504, 45.452291 ], [ -87.244617, 45.289846 ], [ -87.419775, 45.184012 ], [ -87.459462, 45.068128 ], [ -87.612915, 45.110451 ], [ -87.613975, 45.108875 ], [ -87.747326, 45.226878 ], [ -87.673248, 45.387747 ], [ -87.893389, 45.396713 ], [ -87.847888, 45.559183 ], [ -87.787013, 45.639618 ], [ -87.875406, 45.779842 ], [ -88.111929, 45.843352 ], [ -88.166964, 46.007916 ], [ -88.361707, 46.020628 ], [ -88.644274, 46.022204 ], [ -89.221060, 46.202116 ], [ -90.096304, 46.380994 ], [ -90.176738, 46.560879 ], [ -90.333912, 46.593694 ], [ -90.334971, 46.596872 ], [ -90.396880, 46.576253 ], [ -90.410626, 46.584185 ], [ -90.395278, 46.611677 ] ] ] } } +, +{ "type": "Feature", "id": 50, "properties": { "scalerank": 2, "featurecla": "Admin-1 scale rank", "adm1_code": "USA-3563" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -153.228729, 57.968968 ], [ -152.564791, 57.901427 ], [ -152.141147, 57.591059 ], [ -153.006314, 57.115842 ], [ -154.005090, 56.734677 ], [ -154.516403, 56.992749 ], [ -154.670993, 57.461196 ], [ -153.762780, 57.816575 ], [ -153.228729, 57.968968 ] ] ], [ [ [ -166.467792, 60.384170 ], [ -165.674430, 60.293607 ], [ -165.579164, 59.909987 ], [ -166.192770, 59.754441 ], [ -166.848337, 59.941406 ], [ -167.455277, 60.213069 ], [ -166.467792, 60.384170 ] ] ], [ [ [ -171.731657, 63.782515 ], [ -171.114434, 63.592191 ], [ -170.491112, 63.694975 ], [ -169.682505, 63.431116 ], [ -168.689439, 63.297506 ], [ -168.771941, 63.188598 ], [ -169.529440, 62.976931 ], [ -170.290556, 63.194438 ], [ -170.671386, 63.375822 ], [ -171.553063, 63.317789 ], [ -171.791111, 63.405846 ], [ -171.731657, 63.782515 ] ] ], [ [ [ -140.985988, 69.711998 ], [ -140.985988, 69.711998 ], [ -140.992499, 66.000029 ], [ -140.997770, 60.306397 ], [ -140.012998, 60.276838 ], [ -139.039000, 60.000007 ], [ -138.340878, 59.562101 ], [ -137.452508, 58.904984 ], [ -136.479725, 59.463864 ], [ -135.475833, 59.787772 ], [ -134.944987, 59.270543 ], [ -134.271100, 58.861110 ], [ -133.355549, 58.410285 ], [ -132.730421, 57.692887 ], [ -131.707822, 56.552104 ], [ -130.007770, 55.915812 ], [ -129.979994, 55.284998 ], [ -130.536110, 54.802753 ], [ -131.085818, 55.178906 ], [ -131.967211, 55.497776 ], [ -132.250011, 56.369996 ], [ -133.539181, 57.178887 ], [ -134.078063, 58.123068 ], [ -135.038211, 58.187715 ], [ -136.628062, 58.212209 ], [ -137.800006, 58.499995 ], [ -139.867787, 59.537762 ], [ -140.825274, 59.727517 ], [ -142.574444, 60.084447 ], [ -143.958881, 59.999180 ], [ -145.925557, 60.458610 ], [ -147.114374, 60.884656 ], [ -148.224306, 60.672989 ], [ -148.018066, 59.978329 ], [ -148.570823, 59.914173 ], [ -149.727858, 59.705658 ], [ -150.608243, 59.368211 ], [ -151.716393, 59.155821 ], [ -151.859433, 59.744984 ], [ -151.409719, 60.725803 ], [ -150.346941, 61.033588 ], [ -150.621111, 61.284425 ], [ -151.895839, 60.727198 ], [ -152.578330, 60.061657 ], [ -154.019172, 59.350279 ], [ -153.287511, 58.864728 ], [ -154.232492, 58.146374 ], [ -155.307491, 57.727795 ], [ -156.308335, 57.422774 ], [ -156.556097, 56.979985 ], [ -158.117217, 56.463608 ], [ -158.433321, 55.994154 ], [ -159.603327, 55.566686 ], [ -160.289720, 55.643581 ], [ -161.223048, 55.364735 ], [ -162.237766, 55.024187 ], [ -163.069447, 54.689737 ], [ -164.785569, 54.404173 ], [ -164.942226, 54.572225 ], [ -163.848340, 55.039431 ], [ -162.870001, 55.348043 ], [ -161.804175, 55.894986 ], [ -160.563605, 56.008055 ], [ -160.070560, 56.418055 ], [ -158.684443, 57.016675 ], [ -158.461097, 57.216921 ], [ -157.722770, 57.570001 ], [ -157.550274, 58.328326 ], [ -157.041675, 58.918885 ], [ -158.194731, 58.615802 ], [ -158.517218, 58.787781 ], [ -159.058606, 58.424186 ], [ -159.711667, 58.931390 ], [ -159.981289, 58.572549 ], [ -160.355271, 59.071123 ], [ -161.355003, 58.670838 ], [ -161.968894, 58.671665 ], [ -162.054987, 59.266925 ], [ -161.874171, 59.633621 ], [ -162.518059, 59.989724 ], [ -163.818341, 59.798056 ], [ -164.662218, 60.267484 ], [ -165.346388, 60.507496 ], [ -165.350832, 61.073895 ], [ -166.121379, 61.500019 ], [ -165.734452, 62.074997 ], [ -164.919179, 62.633076 ], [ -164.562508, 63.146378 ], [ -163.753332, 63.219449 ], [ -163.067224, 63.059459 ], [ -162.260555, 63.541936 ], [ -161.534450, 63.455817 ], [ -160.772507, 63.766108 ], [ -160.958335, 64.222799 ], [ -161.518068, 64.402788 ], [ -160.777778, 64.788604 ], [ -161.391926, 64.777235 ], [ -162.453050, 64.559445 ], [ -162.757786, 64.338605 ], [ -163.546394, 64.559160 ], [ -164.960830, 64.446945 ], [ -166.425288, 64.686672 ], [ -166.845004, 65.088896 ], [ -168.110560, 65.669997 ], [ -166.705271, 66.088318 ], [ -164.474710, 66.576660 ], [ -163.652512, 66.576660 ], [ -163.788602, 66.077207 ], [ -161.677774, 66.116120 ], [ -162.489715, 66.735565 ], [ -163.719717, 67.116395 ], [ -164.430991, 67.616338 ], [ -165.390287, 68.042772 ], [ -166.764441, 68.358877 ], [ -166.204707, 68.883031 ], [ -164.430811, 68.915535 ], [ -163.168614, 69.371115 ], [ -162.930566, 69.858062 ], [ -161.908897, 70.333330 ], [ -160.934797, 70.447690 ], [ -159.039176, 70.891642 ], [ -158.119723, 70.824721 ], [ -156.580825, 71.357764 ], [ -155.067790, 71.147776 ], [ -154.344165, 70.696409 ], [ -153.900006, 70.889989 ], [ -152.210006, 70.829992 ], [ -152.270002, 70.600006 ], [ -150.739992, 70.430017 ], [ -149.720003, 70.530010 ], [ -147.613362, 70.214035 ], [ -145.689990, 70.120010 ], [ -144.920011, 69.989992 ], [ -143.589446, 70.152514 ], [ -142.072510, 69.851938 ], [ -140.985988, 69.711998 ] ] ] ] } } + +] +} From 9a1688c4ed9613fdaadeea0ad93aa7f7cc854602 Mon Sep 17 00:00:00 2001 From: Joaquim Jr Date: Fri, 2 Nov 2018 03:12:09 -0300 Subject: [PATCH 09/13] Delete geojsonio.py --- geojsonio.py | 236 --------------------------------------------------- 1 file changed, 236 deletions(-) delete mode 100644 geojsonio.py diff --git a/geojsonio.py b/geojsonio.py deleted file mode 100644 index 017e923..0000000 --- a/geojsonio.py +++ /dev/null @@ -1,236 +0,0 @@ -#!/usr/bin/env python -#-*- coding: utf-8 -*- -from __future__ import unicode_literals - -import argparse -import json -import sys -import webbrowser - -import github3 -from github3 import login -from github3 import create_gist - -import six -from six.moves import urllib - -getCredentials = open('gitauth.txt').read().split("\n") - -GITUSER = getCredentials[0] -GITPASS = getCredentials[1] - -MAX_URL_LEN = 150e3 # Size threshold above which a gist is created -DEFAULT_DOMAIN = 'http://geojson.io/' - -def authToGit (): - gh = login( GITUSER, GITPASS) - return gh - -def testauth(auth): - return auth.me() - -def display(contents, domain=DEFAULT_DOMAIN, force_gist=True): - """ - Open a web browser pointing to geojson.io with the specified content. - - If the content is large, an anonymous gist will be created on github and - the URL will instruct geojson.io to download the gist data and then - display. If the content is small, this step is not needed as the data can - be included in the URL - - Parameters - ---------- - content - (see make_geojson) - domain - string, default http://geojson.io - force_gist - bool, default False - Create an anonymous gist on Github regardless of the size of the - contents - - """ - url = make_url(contents, domain, force_gist) - webbrowser.open(url) - return url -# display() used to be called to_geojsonio. Keep it around for now... -to_geojsonio = display - - -def embed(contents='', width='100%', height=512, *args, **kwargs): - """ - Embed geojson.io in an iframe in Jupyter/IPython notebook. - - Parameters - ---------- - contents - see make_url() - width - string, default '100%' - width of the iframe - height - string / int, default 512 - height of the iframe - kwargs - additional arguments are passed to `make_url()` - - """ - from IPython.display import HTML - - url = make_url(contents, *args, **kwargs) - html = ''.format( - url=url, width=width, height=height) - return HTML(html) - -def make_url(contents, domain=DEFAULT_DOMAIN, force_gist=False, - size_for_gist=MAX_URL_LEN): - """ - Returns the URL to open given the domain and contents. - - If the file contents are large, an anonymous gist will be created. - - Parameters - ---------- - contents - * string - assumed to be GeoJSON - * an object that implements __geo_interface__ - A FeatureCollection will be constructed with one feature, - the object. - * a sequence of objects that each implement __geo_interface__ - A FeatureCollection will be constructed with the objects - as the features - domain - string, default http://geojson.io - force_gist - force gist creation regardless of file size. - - For more information about __geo_interface__ see: - https://gist.github.com/sgillies/2217756 - - If the contents are large, then a gist will be created. - - """ - contents = make_geojson(contents) - if len(contents) <= size_for_gist and not force_gist: - url = data_url(contents, domain) - else: - gist = _make_gist(contents) - url = gist_url(gist.id, domain) - - return url - - -def make_geojson(contents): - """ - Return a GeoJSON string from a variety of inputs. - See the documentation for make_url for the possible contents - input. - - Returns - ------- - GeoJSON string - - """ - if isinstance(contents, six.string_types): - return contents - - if hasattr(contents, '__geo_interface__'): - features = [_geo_to_feature(contents)] - else: - try: - feature_iter = iter(contents) - except TypeError: - raise ValueError('Unknown type for input') - - features = [] - for i, f in enumerate(feature_iter): - if not hasattr(f, '__geo_interface__'): - raise ValueError('Unknown type at index {0}'.format(i)) - features.append(_geo_to_feature(f)) - - data = {'type': 'FeatureCollection', 'features': features} - return json.dumps(data) - - -def _geo_to_feature(ob): - """ - Return a GeoJSON Feature from an object that implements - __geo_interface__ - - If the object's type is a geometry, return a Feature with empty - properties and the object's mapping as the feature geometry. If the - object's type is a Feature, then return it. - - """ - mapping = ob.__geo_interface__ - if mapping['type'] == 'Feature': - return mapping - else: - return {'type': 'Feature', - 'geometry': mapping} - - -def data_url(contents, domain=DEFAULT_DOMAIN): - """ - Return the URL for embedding the GeoJSON data in the URL hash - - Parameters - ---------- - contents - string of GeoJSON - domain - string, default http://geojson.io - - """ - url = (domain + '#data=data:application/json,' + - urllib.parse.quote(contents)) - return url - - -def _make_gist(contents, description='', filename='data.geojson'): - """ - Create and return an anonymous gist with a single file and specified - contents - - """ - #ghapi = login(gituser, gitpass) - gh = login( GITUSER, GITPASS) - files = {filename: {'content': contents}} - gist = gh.create_gist(description, files) - #print (gist.html_url) - - return gist - - -def gist_url(gist_id, domain=DEFAULT_DOMAIN): - """ - Return the URL for loading GeoJSON data from a gist - - Parameters - ---------- - contents - string, gist id - domain - string, default http://geojson.io - - """ - url = (domain + '#id=gist:/{0}'.format(gist_id)) - return url - - -def main(): - parser = argparse.ArgumentParser( - description='Quickly visualize GeoJSON data on geojson.io') - - parser.add_argument('-p', '--print', - dest='do_print', - action='store_true', - help='print the URL') - - parser.add_argument('-d', '--domain', - dest='domain', - default=DEFAULT_DOMAIN, - help='Alternate URL instead of http://geojson.io/') - - parser.add_argument('filename', - nargs='?', - type=argparse.FileType('r'), - default=sys.stdin, - help="The file to send to geojson.io") - - args = parser.parse_args() - - contents = args.filename.read() - url = make_url(contents, args.domain) - if args.do_print: - print(url) - else: - webbrowser.open(url) - -if __name__ == '__main__': - main() From 14b6ea32e07205db55711470e4b98809000efe96 Mon Sep 17 00:00:00 2001 From: Joaquim Jr Date: Fri, 2 Nov 2018 03:12:11 -0300 Subject: [PATCH 10/13] Delete __init__.py --- __init__.py | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 __init__.py diff --git a/__init__.py b/__init__.py deleted file mode 100644 index bef24ee..0000000 --- a/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from __future__ import absolute_import - -from .geojsonio import ( - main, - testauth, - to_geojsonio, - display, - embed, - make_geojson, - make_url, - data_url, - gist_url, -) From c0564ccbb8481f9ef464f8229e58c8448aeb1f41 Mon Sep 17 00:00:00 2001 From: Joaquim Jr Date: Fri, 2 Nov 2018 03:12:33 -0300 Subject: [PATCH 11/13] Add files via upload --- geojsonio/__init__.py | 2 -- geojsonio/geojsonio.py | 19 +++---------------- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/geojsonio/__init__.py b/geojsonio/__init__.py index 051b518..206c64e 100644 --- a/geojsonio/__init__.py +++ b/geojsonio/__init__.py @@ -2,8 +2,6 @@ from .geojsonio import ( main, - auth, - testauth, to_geojsonio, display, embed, diff --git a/geojsonio/geojsonio.py b/geojsonio/geojsonio.py index 0630b3b..8b255a0 100755 --- a/geojsonio/geojsonio.py +++ b/geojsonio/geojsonio.py @@ -8,24 +8,12 @@ import webbrowser import github3 -from github3 import login -from github3 import create_gist - import six from six.moves import urllib MAX_URL_LEN = 150e3 # Size threshold above which a gist is created DEFAULT_DOMAIN = 'http://geojson.io/' -def auth (guser, gpass): - gh = login( guser, gpass) - return gh - -def testauth(auth): - gh = login( gituser, password= gitpass) - testme = gh.me() - print (testme.name) - def display(contents, domain=DEFAULT_DOMAIN, force_gist=False): """ @@ -71,6 +59,7 @@ def embed(contents='', width='100%', height=512, *args, **kwargs): url=url, width=width, height=height) return HTML(html) + def make_url(contents, domain=DEFAULT_DOMAIN, force_gist=False, size_for_gist=MAX_URL_LEN): """ @@ -178,11 +167,9 @@ def _make_gist(contents, description='', filename='data.geojson'): contents """ - auth("myGitUser","myGitPass"); - #ghapi = login(gituser, gitpass) + ghapi = github3.GitHub() files = {filename: {'content': contents}} - gist = create_gist(description, files) - #print (gist.html_url) + gist = ghapi.create_gist(description, files) return gist From 4b7cd51785d4fc61cb4845e3a77a7424bc9fe123 Mon Sep 17 00:00:00 2001 From: Joaquim Jr Date: Fri, 2 Nov 2018 03:17:43 -0300 Subject: [PATCH 12/13] Update README.rst --- README.rst | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/README.rst b/README.rst index a786fd4..3f6c92b 100644 --- a/README.rst +++ b/README.rst @@ -22,22 +22,8 @@ and import geojsonio Auth _____ -You need to auth to the GitApi in order to create gists: -use: - -.. code-block:: python - - myAuth = geojsonio.auth('YOUR-GIT-USERNAME', '') - -You can test the authentication passing the authentication object to testauth: - -.. code-block:: python - - geojsonio.testauth(myAuth) - -It shall return: - -Send data to geojson.io and open a browser within python + Edit the __gitauth.txt__ file. In the first line put your github *username*, in the + second your password. It allows the gitHub3 to authenticate and create the gist. Usage _____ From 78ef0a5bfd6c1371c17bb5149fa1a8c4656ae39f Mon Sep 17 00:00:00 2001 From: Joaquim Jr Date: Fri, 2 Nov 2018 03:18:16 -0300 Subject: [PATCH 13/13] Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index bc9e323..6b98004 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: python python: - "2.7" - "3.4" + - "3.5" - "3.6" install: - "pip install -e .[test]"