diff --git a/VERSION b/VERSION
index 8600f97a95..1a9214dc02 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-vita-0.5.5-devel-1171-gaae8282 (2012-06-19 14:06:04)
+319f091 (2012-06-19 19:54:58)
\ No newline at end of file
diff --git a/controllers/climate.py b/controllers/climate.py
index 194b304e50..b1897c6fb3 100644
--- a/controllers/climate.py
+++ b/controllers/climate.py
@@ -40,13 +40,14 @@ def index():
else:
print_tool = {}
- if request.vars.get("zoom", None) is not None:
- zoom = int(request.vars["zoom"])
+ vars = request.vars
+ if vars.get("zoom", None) is not None:
+ zoom = int(vars["zoom"])
else:
zoom = 7
- if request.vars.get("coords", None) is not None:
- lon, lat = map(float, request.vars["coords"].split(","))
+ if vars.get("coords", None) is not None:
+ lon, lat = map(float, vars["coords"].split(","))
else:
lon = 84.1
lat = 28.5
@@ -55,12 +56,12 @@ def index():
lon = lon,
lat = lat,
zoom = zoom,
- toolbar = request.vars.get("display_mode", None) != "print",
+ toolbar = vars.get("display_mode", None) != "print",
googleEarth = True,
wms_browser = wms_browser, # dict
plugins = [
_map_plugin(
- **request.vars
+ **vars
)
]
)
@@ -331,13 +332,13 @@ def prep(r):
def rheader(r):
record = r.record
if record and record.paid:
- # these are the parameters to download the data export file
+ # These are the parameters to download the data export file
# see models/climate.py for more details
return A("Download this data",
- _href=URL(c="download_purchased_data"
+ _href=URL(c="download_purchased_data",
vars={"purchase_id": record.id}),
_style="border:1px solid black; padding:0.5em; background-color:#0F0; color:black; text-decoration:none;"
- )
+ )
else:
return None
diff --git a/controllers/default.py b/controllers/default.py
index 488717a056..ffc9e41eaf 100755
--- a/controllers/default.py
+++ b/controllers/default.py
@@ -31,10 +31,10 @@ def register_validation(form):
regex = re.compile(single_phone_number_pattern)
if not regex.match(form.vars.mobile):
form.errors.mobile = T("Invalid phone number")
- elif deployment_settings.get_auth_registration_mobile_phone_mandatory():
+ elif settings.get_auth_registration_mobile_phone_mandatory():
form.errors.mobile = T("Phone number is required")
- org = deployment_settings.get_auth_registration_organisation_id_default()
+ org = settings.get_auth_registration_organisation_id_default()
if org:
# Add to default organisation
form.vars.organisation_id = org
@@ -49,15 +49,15 @@ def register_onaccept(form):
# If Organisation is provided, then: add HRM record & add to 'Org_X_Access' role
person_id = auth.s3_register(form)
- if form.vars.organisation_id and not deployment_settings.get_hrm_show_staff():
+ if form.vars.organisation_id and not settings.get_hrm_show_staff():
# Convert HRM record to a volunteer
htable = s3db.hrm_human_resource
query = (htable.person_id == person_id)
db(query).update(type=2)
# Add to required roles:
- roles = deployment_settings.get_auth_registration_roles()
- if roles or deployment_settings.has_module("delphi"):
+ roles = settings.get_auth_registration_roles()
+ if roles or settings.has_module("delphi"):
utable = auth.settings.table_user
ptable = s3db.pr_person
ltable = s3db.pr_person_user
@@ -77,7 +77,7 @@ def register_onaccept(form):
mtable.insert(user_id=user[ltable._tablename].user_id,
group_id=role.id)
- if deployment_settings.has_module("delphi"):
+ if settings.has_module("delphi"):
# Add user as a participant of the default problem group
table = s3db.delphi_group
query = (table.uuid == "DEFAULT")
@@ -97,7 +97,7 @@ def register_onaccept(form):
_table_user.first_name.label = T("First Name")
_table_user.first_name.comment = SPAN("*", _class="req")
_table_user.last_name.label = T("Last Name")
-if deployment_settings.get_L10n_mandatory_lastname():
+if settings.get_L10n_mandatory_lastname():
_table_user.last_name.comment = SPAN("*", _class="req")
_table_user.email.label = T("E-mail")
_table_user.email.comment = SPAN("*", _class="req")
@@ -115,7 +115,7 @@ def register_onaccept(form):
organisation_represent,
orderby="org_organisation.name",
sort=True)
-if deployment_settings.get_auth_registration_organisation_mandatory():
+if settings.get_auth_registration_organisation_mandatory():
_table_user.organisation_id.requires = org_widget
else:
_table_user.organisation_id.requires = IS_NULL_OR(org_widget)
@@ -141,11 +141,11 @@ def register_onaccept(form):
def index():
""" Main Home Page """
- title = deployment_settings.get_system_name()
+ title = settings.get_system_name()
response.title = title
item = ""
- if deployment_settings.has_module("cms"):
+ if settings.has_module("cms"):
table = s3db.cms_post
item = db(table.module == module).select(table.body,
limitby=(0, 1)).first()
@@ -154,8 +154,8 @@ def index():
else:
item = ""
- if deployment_settings.has_module("cr"):
- s3mgr.load("cr_shelter")
+ if settings.has_module("cr"):
+ table = s3db.cr_shelter
SHELTERS = s3.crud_strings["cr_shelter"].title_list
else:
SHELTERS = ""
@@ -194,7 +194,7 @@ def index():
}
for div, label, app, function in menu_btns:
- if deployment_settings.has_module(app):
+ if settings.has_module(app):
# @ToDo: Also check permissions (e.g. for anonymous users)
menu_divs[div].append(A(DIV(label,
_class = "menu-btn-r"),
@@ -230,7 +230,7 @@ def index():
org_items = organisation()
datatable_ajax_source = "/%s/default/organisation.aaData" % \
appname
- response.s3.actions = None
+ s3.actions = None
response.view = "default/index.html"
auth.permission.controller = "org"
auth.permission.function = "site"
@@ -256,7 +256,7 @@ def index():
),
_id = "manage_facility_box",
_class = "menu_box fleft")
- response.s3.jquery_ready.append( """
+ s3.jquery_ready.append( """
$('#manage_facility_select').change(function() {
$('#manage_facility_btn').attr('href', S3.Ap.concat('/default/site/', $('#manage_facility_select').val()));
})""" )
@@ -291,7 +291,7 @@ def index():
# admin_tel = T("Not Set").xml(),
# Login/Registration forms
- self_registration = deployment_settings.get_security_self_registration()
+ self_registration = settings.get_security_self_registration()
registered = False
login_form = None
login_div = None
@@ -306,7 +306,7 @@ def index():
if self_registration:
# Provide a Registration box on front page
request.args = ["register"]
- if deployment_settings.get_terms_of_service():
+ if settings.get_terms_of_service():
auth.messages.submit_button = T("I accept. Create my account.")
else:
auth.messages.submit_button = T("Register")
@@ -319,9 +319,9 @@ def index():
s3_register_validation()
if session.s3.debug:
- response.s3.scripts.append( "%s/jquery.validate.js" % s3_script_dir )
+ s3.scripts.append( "%s/jquery.validate.js" % s3_script_dir )
else:
- response.s3.scripts.append( "%s/jquery.validate.min.js" % s3_script_dir )
+ s3.scripts.append( "%s/jquery.validate.min.js" % s3_script_dir )
if request.env.request_method == "POST":
post_script = """// Unhide register form
$('#register_form').removeClass('hide');
@@ -349,7 +349,7 @@ def index():
// Unhide login form
$('#login_form').removeClass('hide');
});""" % post_script
- response.s3.jquery_ready.append(register_script)
+ s3.jquery_ready.append(register_script)
# Provide a login box on front page
request.args = ["login"]
@@ -359,19 +359,19 @@ def index():
P(XML(T("Registered users can %(login)s to access the system" % \
dict(login=B(T("login")))))))
- if deployment_settings.frontpage.rss:
- response.s3.external_stylesheets.append( "http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.css" )
- response.s3.scripts.append( "http://www.google.com/jsapi?key=notsupplied-wizard" )
- response.s3.scripts.append( "http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.js" )
+ if settings.frontpage.rss:
+ s3.external_stylesheets.append( "http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.css" )
+ s3.scripts.append( "http://www.google.com/jsapi?key=notsupplied-wizard" )
+ s3.scripts.append( "http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.js" )
counter = 0
feeds = ""
- for feed in deployment_settings.frontpage.rss:
+ for feed in settings.frontpage.rss:
counter += 1
feeds = "".join((feeds,
"{title: '%s',\n" % feed["title"],
"url: '%s'}" % feed["url"]))
# Don't add a trailing comma for old IEs
- if counter != len(deployment_settings.frontpage.rss):
+ if counter != len(settings.frontpage.rss):
feeds += ",\n"
feed_control = "".join(("""
function LoadDynamicFeedControl() {
@@ -391,7 +391,7 @@ def index():
// Load the feeds API and set the onload callback.
google.load('feeds', '1');
google.setOnLoadCallback(LoadDynamicFeedControl);"""))
- response.s3.js_global.append( feed_control )
+ s3.js_global.append( feed_control )
return dict(title = title,
item = item,
@@ -424,9 +424,9 @@ def organisation():
table.id.label = T("Organization")
table.id.represent = organisation_represent
- response.s3.dataTable_sPaginationType = "two_button"
- response.s3.dataTable_sDom = "rtip" #"frtip" - filter broken
- response.s3.dataTable_iDisplayLength = 25
+ s3.dataTable_sPaginationType = "two_button"
+ s3.dataTable_sDom = "rtip" #"frtip" - filter broken
+ s3.dataTable_iDisplayLength = 25
s3mgr.configure("org_organisation",
listadd = False,
@@ -463,7 +463,7 @@ def message():
#if "verify_email_sent" in request.args:
title = T("Account Registered - Please Check Your Email")
message = T( "%(system_name)s has sent an email to %(email)s to verify your email address.\nPlease check your email to verify this address. If you do not receive this email please check you junk email or spam filters." )\
- % {"system_name": deployment_settings.get_system_name(),
+ % {"system_name": settings.get_system_name(),
"email": request.vars.email}
image = "email_icon.png"
return dict(title = title,
@@ -506,8 +506,8 @@ def user():
_table_user.utc_offset.writable = True
# If we have an opt_in and some post_vars then update the opt_in value
- if deployment_settings.get_auth_opt_in_to_email() and request.post_vars:
- opt_list = deployment_settings.get_auth_opt_in_team_list()
+ if settings.get_auth_opt_in_to_email() and request.post_vars:
+ opt_list = settings.get_auth_opt_in_team_list()
removed = []
selected = []
for opt_in in opt_list:
@@ -551,7 +551,7 @@ def user():
auth.settings.profile_onaccept = user_profile_onaccept
- self_registration = deployment_settings.get_security_self_registration()
+ self_registration = settings.get_security_self_registration()
login_form = register_form = None
if request.args and request.args(0) == "login":
@@ -564,7 +564,7 @@ def user():
if not self_registration:
session.error = T("Registration not permitted")
redirect(URL(f="index"))
- if deployment_settings.get_terms_of_service():
+ if settings.get_terms_of_service():
auth.messages.submit_button = T("I accept. Create my account.")
else:
auth.messages.submit_button = T("Register")
@@ -577,15 +577,15 @@ def user():
elif request.args and request.args(0) == "change_password":
form = auth()
elif request.args and request.args(0) == "profile":
- if deployment_settings.get_auth_openid():
+ if settings.get_auth_openid():
form = DIV(form, openid_login_form.list_user_openids())
else:
form = auth()
# add an opt in clause to receive emails depending on the deployment settings
- if deployment_settings.get_auth_opt_in_to_email():
+ if settings.get_auth_opt_in_to_email():
ptable = s3db.pr_person
ltable = s3db.pr_person_user
- opt_list = deployment_settings.get_auth_opt_in_team_list()
+ opt_list = settings.get_auth_opt_in_team_list()
query = (ltable.user_id == form.record.id) & \
(ltable.pe_id == ptable.pe_id)
db_opt_in_list = db(query).select(ptable.opt_in, limitby=(0, 1)).first().opt_in
@@ -650,7 +650,7 @@ def source():
# About Sahana
def apath(path=""):
""" Application path """
- import os
+
from gluon.fileutils import up
opath = up(request.folder)
#TODO: This path manipulation is very OS specific.
@@ -665,9 +665,11 @@ def about():
@ToDo: Avoid relying on Command Line tools which may not be in path
- pull back info from Python modules instead?
"""
+
import sys
import subprocess
import string
+
python_version = sys.version
web2py_version = open(apath("../VERSION"), "r").read()[8:]
sahana_version = open(os.path.join(request.folder, "VERSION"), "r").read()
@@ -746,7 +748,7 @@ def contact():
Custom View
"""
- if auth.is_logged_in() and deployment_settings.has_module("support"):
+ if auth.is_logged_in() and settings.has_module("support"):
# Provide an internal Support Requests ticketing system.
prefix = "support"
resourcename = "req"
@@ -768,7 +770,7 @@ def prep(r):
actions.readable = False
actions.writable = False
return True
- response.s3.prep = prep
+ s3.prep = prep
output = s3_rest_controller(prefix, resourcename)
return output
diff --git a/controllers/gis.py b/controllers/gis.py
index 00bcc83935..f4b0e1bd4c 100644
--- a/controllers/gis.py
+++ b/controllers/gis.py
@@ -13,7 +13,7 @@ def index():
Module's Home Page
"""
- module_name = deployment_settings.modules[module].name_nice
+ module_name = settings.modules[module].name_nice
response.title = module_name
# Include an embedded Map on the index page
@@ -23,7 +23,7 @@ def index():
maximizable=False)
# Code to go fullscreen
- response.s3.jquery_ready.append("""
+ s3.jquery_ready.append("""
$('#gis_fullscreen_map-btn').click( function(evt) {
if (navigator.appVersion.indexOf("MSIE") != -1) {
// IE (even 9) doesn't like the dynamic full-screen, so simply do a page refresh for now
@@ -82,10 +82,10 @@ def define_map(window=False, toolbar=False, closable=True, maximizable=True, con
wms_browser = None
# 'normal', 'mgrs' or 'off'
- mouse_position = deployment_settings.get_gis_mouse_position()
+ mouse_position = settings.get_gis_mouse_position()
# http://eden.sahanafoundation.org/wiki/BluePrintGISPrinting
- print_service = deployment_settings.get_gis_print_service()
+ print_service = settings.get_gis_print_service()
if print_service:
print_tool = {"url": print_service}
else:
@@ -197,55 +197,18 @@ def get_location_info():
limitby=(0, 1)).first()
# Restrict access to Polygons to just MapAdmins
- if deployment_settings.get_security_map() and not s3_has_role(MAP_ADMIN):
- table.code.writable = False
- if r.method == "create":
- table.code.readable = False
+ if settings.get_security_map() and not s3_has_role(MAP_ADMIN):
table.gis_feature_type.writable = table.gis_feature_type.readable = False
table.wkt.writable = table.wkt.readable = False
elif r.interactive:
- table.code.comment = DIV(_class="tooltip",
- _title="%s|%s" % (T("Code"),
- T("For a country this would be the ISO2 code, for a Town, it would be the Airport Locode.")))
table.wkt.comment = DIV(_class="stickytip",
_title="WKT|%s %s%s %s%s" % (T("The"),
"",
T("Well-Known Text"),
"",
T("representation of the Polygon/Line.")))
- table.members.comment = DIV(_class="tooltip",
- _title="%s|%s|%s|%s|%s" % (T("Members"),
- T("A location group is a set of locations (often, a set of administrative regions representing a combined area)."),
- T("Location groups may be used to filter what is shown on the map and in search results to only entities covered by locations in the group."),
- T("A location group can be used to define the extent of an affected area, if it does not fall within one administrative region."),
- T("Location groups can be used in the Regions menu.")))
-
-
-
- if r.method == "update" and r.id:
- # We don't allow converting a location group to non-group and
- # vice versa. We also don't allow taking away all the members of
- # a group -- setting "notnull" gets the "required" * displayed.
- # Groups don't have parents. (This is all checked in onvalidation.)
- # NB r.id is None for update.url
- location = get_location_info()
- if location.level == "GR":
- table.level.writable = False
- table.parent.readable = table.parent.writable = False
- table.members.notnull = True
- # Record that this is a group location. Since we're setting
- # level to not writable, it won't be in either form.vars or
- # request.vars. Saving it while we have it avoids another
- # db access.
- response.s3.location_is_group = True
- else:
- table.members.writable = table.members.readable = False
- response.s3.location_is_group = False
if r.interactive:
- if not "group" in r.vars:
- # Hide the Members List (a big download when many records are entered)
- table.members.writable = table.members.readable = False
# Don't show street address, postcode for hierarchy on read or update.
if r.method != "create" and r.id:
try:
@@ -268,18 +231,10 @@ def get_location_info():
else:
# Include 'Add Location' button
table.parent.comment = DIV(S3AddResourceLink(c="gis",
- f="location",
- vars=dict(child="parent")),
+ f="location",
+ vars=dict(child="parent")),
parent_comment)
- table.osm_id.comment = DIV(_class="stickytip",
- _title="OpenStreetMap ID|%s%s%s" % (T("The"),
- " OpenStreetMap ID. ",
- T("If you know what the OSM ID of this location is then you can enter it here.")))
- table.geonames_id.comment = DIV(_class="stickytip",
- _title="Geonames ID|%s%s%s" % (T("The"),
- " Geonames ID. ",
- T("If you know what the Geonames ID of this location is then you can enter it here.")))
table.comments.comment = DIV(_class="tooltip",
_title="%s|%s" % (T("Comments"),
T("Please use this field to record any additional information, such as Ushahidi instance IDs. Include a history of the record if it is updated.")))
@@ -347,7 +302,7 @@ def get_location_info():
# Path field should be visible
table.path.readable = True
return True
- response.s3.prep = lambda r, vars=vars: prep(r, vars)
+ s3.prep = lambda r, vars=vars: prep(r, vars)
# Options
_vars = request.vars
@@ -369,7 +324,7 @@ def get_location_info():
if filters:
from operator import __and__
- response.s3.filter = reduce(__and__, filters)
+ s3.filter = reduce(__and__, filters)
caller = _vars.get("caller", None)
if caller:
@@ -473,13 +428,16 @@ def l0():
raise HTTP(400, body=item)
table = s3db.gis_location
+ ttable = s3db.gis_location_tag
query = (table.id == record_id) & \
(table.deleted == False) & \
- (table.level == "L0")
+ (table.level == "L0") & \
+ (ttable.tag == "ISO2") & \
+ (ttable.location_id == table.id)
record = db(query).select(table.id,
table.name,
# Code for the Geocoder lookup filter
- table.code,
+ ttable.value,
# LatLon for Centering the Map
table.lon,
table.lat,
@@ -495,6 +453,12 @@ def l0():
raise HTTP(400, body=item)
result = record.as_dict()
+ location_part = result["gis_location"]
+ for key in location_part:
+ result[key] = location_part[key]
+ del result["gis_location"]
+ result["code"] = result["gis_location_tag"]["value"]
+ del result["gis_location_tag"]
# Provide the Location Hierarchy for this country
location_hierarchy = gis.get_location_hierarchy(location=record_id)
@@ -758,7 +722,7 @@ def prep(r):
# - if each field was readable & you clicked on it to make it editable (like RHoK pr_contact), that would solve this
pe_id = auth.user.pe_id
# For Lists
- response.s3.filter = (s3db.gis_config.pe_id == pe_id)
+ s3.filter = (s3db.gis_config.pe_id == pe_id)
# For Create forms
field = r.table.pe_id
field.default = pe_id
@@ -838,7 +802,7 @@ def prep(r):
r.table.pe_type.default = 1
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -851,7 +815,7 @@ def postp(r, output):
ltable.enabled)
# Show the enable button if the layer is not currently enabled
restrict = [str(row.layer_id) for row in rows if not row.enabled]
- response.s3.actions.append(dict(label=str(T("Enable")),
+ s3.actions.append(dict(label=str(T("Enable")),
_class="action-btn",
url=URL(args=[r.id, "layer_entity", "[id]", "enable"]),
restrict = restrict
@@ -859,7 +823,7 @@ def postp(r, output):
)
# Show the disable button if the layer is not currently disabled
restrict = [str(row.layer_id) for row in rows if row.enabled]
- response.s3.actions.append(dict(label=str(T("Disable")),
+ s3.actions.append(dict(label=str(T("Disable")),
_class="action-btn",
url=URL(args=[r.id, "layer_entity", "[id]", "disable"]),
restrict = restrict
@@ -903,7 +867,7 @@ def postp(r, output):
s3db.gis_layer_config_onaccept(form)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
return output
@@ -997,7 +961,7 @@ def prep(r):
)
return True
- response.s3.prep = prep
+ s3.prep = prep
output = s3_rest_controller(rheader=s3db.gis_rheader)
return output
@@ -1014,7 +978,7 @@ def prep(r):
table.height.readable = False
table.width.readable = False
return True
- response.s3.prep = prep
+ s3.prep = prep
return s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1022,7 +986,7 @@ def prep(r):
def projection():
""" RESTful CRUD controller """
- if deployment_settings.get_security_map() and not s3_has_role(MAP_ADMIN):
+ if settings.get_security_map() and not s3_has_role(MAP_ADMIN):
auth.permission.fail()
return s3_rest_controller()
@@ -1078,7 +1042,7 @@ def inject_enable(output):
def layer_config():
""" RESTful CRUD controller """
- if deployment_settings.get_security_map() and not s3_has_role(MAP_ADMIN):
+ if settings.get_security_map() and not s3_has_role(MAP_ADMIN):
auth.permission.fail()
layer = request.get_vars.get("layer", None)
@@ -1095,7 +1059,7 @@ def layer_config():
def layer_entity():
""" RESTful CRUD controller """
- if deployment_settings.get_security_map() and not s3_has_role(MAP_ADMIN):
+ if settings.get_security_map() and not s3_has_role(MAP_ADMIN):
auth.permission.fail()
# Custom Method
@@ -1173,7 +1137,7 @@ def prep(r):
not_filter_opts=[row.id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
output = s3_rest_controller(rheader=s3db.gis_rheader)
return output
@@ -1225,7 +1189,7 @@ def prep(r):
not_filter_opts=[row.symbology_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -1235,7 +1199,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
return output
@@ -1288,7 +1252,7 @@ def prep(r):
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -1297,7 +1261,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1347,7 +1311,7 @@ def prep(r):
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -1356,7 +1320,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1406,7 +1370,7 @@ def prep(r):
)
return True
- response.s3.prep = prep
+ s3.prep = prep
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1455,7 +1419,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -1464,7 +1428,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1522,7 +1486,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1584,7 +1548,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -1594,7 +1558,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1671,7 +1635,7 @@ def prep(r):
not_filter_opts=[row.symbology_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -1681,7 +1645,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1762,7 +1726,7 @@ def prep(r):
not_filter_opts=[row.symbology_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -1772,7 +1736,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1833,7 +1797,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -1842,7 +1806,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1922,7 +1886,7 @@ def prep(r):
not_filter_opts=[row.symbology_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -1932,7 +1896,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -1998,7 +1962,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -2008,7 +1972,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -2082,7 +2046,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -2092,7 +2056,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -2150,7 +2114,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -2160,7 +2124,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -2220,7 +2184,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -2230,7 +2194,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -2293,7 +2257,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -2303,7 +2267,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -2313,7 +2277,7 @@ def postp(r, output):
def layer_js():
""" RESTful CRUD controller """
- if deployment_settings.get_security_map() and not s3_has_role(MAP_ADMIN):
+ if settings.get_security_map() and not s3_has_role(MAP_ADMIN):
auth.permission.fail()
tablename = "%s_%s" % (module, resourcename)
@@ -2361,7 +2325,7 @@ def prep(r):
not_filter_opts=[row.config_id for row in rows]
)
return True
- response.s3.prep = prep
+ s3.prep = prep
# Post-processor
def postp(r, output):
@@ -2370,7 +2334,7 @@ def postp(r, output):
# Inject checkbox to enable layer in default config
inject_enable(output)
return output
- response.s3.postp = postp
+ s3.postp = postp
output = s3_rest_controller(rheader=s3db.gis_rheader)
@@ -2452,7 +2416,7 @@ def feature_query():
table = s3db.gis_feature_query
# Filter out any records without LatLon
- response.s3.filter = (table.lat != None) & (table.lon != None)
+ s3.filter = (table.lat != None) & (table.lon != None)
# Parse the Request
r = s3mgr.parse_request()
@@ -2639,28 +2603,18 @@ def geocode_manual():
# - Normal users do the Lat/Lons
# - Special users do the Codes
_filter = (table.lat == None)
- response.s3.filter = (query & _filter)
+ s3.filter = (query & _filter)
# Hide unnecessary fields
- table.code.readable = table.code.writable = False # @ToDo: Role-dependent
table.level.readable = table.level.writable = False
- table.members.readable = table.members.writable = False
table.gis_feature_type.readable = table.gis_feature_type.writable = False
table.wkt.readable = table.wkt.writable = False
- table.url.readable = table.url.writable = False
- table.geonames_id.readable = table.geonames_id.writable = False
- table.osm_id.readable = table.osm_id.writable = False
- table.source.readable = table.source.writable = False
table.comments.readable = table.comments.writable = False
# Customise Labels for specific use-cases
#table.name.label = T("Building Name") # Building Assessments-specific
#table.parent.label = T("Suburb") # Christchurch-specific
- # For Special users doing codes
- #table.code.label = T("Property reference in the council system") # Christchurch-specific 'prupi'
- #table.code2.label = T("Polygon reference of the rating unit") # Christchurch-specific 'gisratingid'
-
# Allow prep to pass vars back to the controller
vars = {}
@@ -2725,7 +2679,7 @@ def get_location_info():
# Pass the map back to the main controller
vars.update(_map=_map)
return True
- response.s3.prep = lambda r, vars=vars: prep(r, vars)
+ s3.prep = lambda r, vars=vars: prep(r, vars)
s3mgr.configure(table._tablename,
listadd=False,
@@ -2764,14 +2718,14 @@ def geoexplorer():
"""
# @ToDo: Optimise to a single query of table
- bing_key = deployment_settings.get_gis_api_bing()
- google_key = deployment_settings.get_gis_api_google()
- yahoo_key = deployment_settings.get_gis_api_yahoo()
+ bing_key = settings.get_gis_api_bing()
+ google_key = settings.get_gis_api_google()
+ yahoo_key = settings.get_gis_api_yahoo()
# http://eden.sahanafoundation.org/wiki/BluePrintGISPrinting
- print_service = deployment_settings.get_gis_print_service()
+ print_service = settings.get_gis_print_service()
- geoserver_url = deployment_settings.get_gis_geoserver_url()
+ geoserver_url = settings.get_gis_geoserver_url()
response.title = "GeoExplorer"
return dict(
@@ -3069,7 +3023,7 @@ def potlatch2():
#zoom = config.zoom
zoom = 14
- site_name = deployment_settings.get_system_name_short()
+ site_name = settings.get_system_name_short()
return dict(lat=lat, lon=lon, zoom=zoom,
gpx_url=gpx_url,
diff --git a/controllers/vol.py b/controllers/vol.py
index c87917ff3f..ddc4cfaf57 100644
--- a/controllers/vol.py
+++ b/controllers/vol.py
@@ -59,20 +59,22 @@ def human_resource():
"person_id",
"job_role_id",
"organisation_id",
- "location_id",
- (T("Email"), "email"),
- (deployment_settings.get_ui_label_mobile_phone(), "phone"),
- (T("Trainings"), "course"),
- (T("Certificates"), "certificate")
]
- if deployment_settings.get_hrm_experience() == "programme":
+ append = list_fields.append
+ if settings.get_hrm_experience() == "programme":
# Add Programme Virtual Fields
table.virtualfields.append(s3db.hrm_programme_virtual_fields())
# Add VF to List Fields
- list_fields.append((T("Programme"), "programme"))
- list_fields.append((T("Active?"), "active"))
+ append((T("Status"), "active"))
+ append("location_id")
+ append((T("Email"), "email"))
+ append((deployment_settings.get_ui_label_mobile_phone(), "phone"))
+ append((T("Trainings"), "course"))
+ append((T("Certificates"), "certificate"))
+ if settings.get_hrm_experience() == "programme":
+ append((T("Programme"), "programme"))
else:
- list_fields.append("status")
+ append("status")
s3mgr.configure(tablename,
list_fields = list_fields)
table.job_role_id.label = T("Volunteer Role")
@@ -165,11 +167,11 @@ def volunteer():
"person_id",
"job_role_id",
"organisation_id",
+ (settings.get_ui_label_mobile_phone(), "phone"),
"location_id",
- (T("Email"), "email"),
- (deployment_settings.get_ui_label_mobile_phone(), "phone"),
(T("Trainings"), "course"),
- (T("Certificates"), "certificate")
+ (T("Certificates"), "certificate"),
+ (T("Email"), "email"),
]
report_options = s3mgr.model.get_config(tablename,
"report_options")
@@ -178,12 +180,12 @@ def volunteer():
"search_method")
# Remove Facility
human_resource_search.advanced.pop(5)
- if deployment_settings.get_hrm_experience() == "programme":
+ if settings.get_hrm_experience() == "programme":
# Add Programme Virtual Fields
table.virtualfields.append(s3db.hrm_programme_virtual_fields())
# Add VF to List Fields
- list_fields.append((T("Programme"), "programme"))
- list_fields.append((T("Active?"), "active"))
+ list_fields.insert(4, (T("Active?"), "active"))
+ list_fields.insert(6, (T("Programme"), "programme"))
# Add VF to Report Options
report_fields = report_options.rows
report_fields.append((T("Programme"), "programme"))
diff --git a/models/zzz_1st_run.py b/models/zzz_1st_run.py
index efee53e498..ff3bef6abe 100644
--- a/models/zzz_1st_run.py
+++ b/models/zzz_1st_run.py
@@ -118,12 +118,12 @@
system=True, protected=True)
# MapAdmin
- create_role("MapAdmin",
- "MapAdmin - allowed access to edit the MapService Catalogue",
- dict(c="gis", uacl=acl.ALL, oacl=acl.ALL),
- dict(c="gis", f="location", uacl=acl.ALL, oacl=acl.ALL),
- uid=sysroles.MAP_ADMIN,
- system=True, protected=True)
+ map_admin = create_role("MapAdmin",
+ "MapAdmin - allowed access to edit the MapService Catalogue",
+ dict(c="gis", uacl=acl.ALL, oacl=acl.ALL),
+ dict(c="gis", f="location", uacl=acl.ALL, oacl=acl.ALL),
+ uid=sysroles.MAP_ADMIN,
+ system=True, protected=True)
# OrgAdmin (policies 6, 7 and 8)
create_role("OrgAdmin",
@@ -166,6 +166,9 @@
# Import PrePopulate data
#
+ # Override authorization
+ auth.override = True
+
# Load all Models to ensure all DB tables present
s3db.load_all_models()
@@ -175,13 +178,10 @@
table.insert(name = team, group_type = 5)
# Synchronisation
- table = db.sync_config
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert()
+ db.sync_config.insert() # Defaults are fine
# Person Registry
tablename = "pr_person"
- table = db[tablename]
# Add extra indexes on search fields
# Should work for our 3 supported databases: sqlite, MySQL & PostgreSQL
field = "first_name"
@@ -191,23 +191,18 @@
field = "last_name"
db.executesql("CREATE INDEX %s__idx on %s(%s);" % (field, tablename, field))
- # GIS Locations
- tablename = "gis_location"
- table = db[tablename]
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- # L0 Countries
- import_file = os.path.join(request.folder,
- "private",
- "templates",
- "default",
- "countries.csv")
- table.import_from_csv_file(open(import_file, "r")) #, id_map=True)
- query = (db.auth_group.uuid == sysroles.MAP_ADMIN)
- map_admin = db(query).select(db.auth_group.id,
- limitby=(0, 1)).first().id
- db(table.level == "L0").update(owned_by_group=map_admin)
+ # GIS
+ # L0 Countries
+ resource = s3mgr.define_resource("gis", "location")
+ stylesheet = os.path.join(request.folder, "static", "formats", "s3csv", "gis", "location.xsl")
+ import_file = os.path.join(request.folder, "private", "templates", "default", "countries.csv")
+ File = open(import_file, "r")
+ resource.import_xml(File, format="csv", stylesheet=stylesheet)
+ db(db.gis_location.level == "L0").update(owned_by_group=map_admin)
+ db.commit()
# Add extra index on search field
# Should work for our 3 supported databases: sqlite, MySQL & PostgreSQL
+ tablename = "gis_location"
field = "name"
db.executesql("CREATE INDEX %s__idx on %s(%s);" % (field, tablename, field))
@@ -215,41 +210,25 @@
if settings.has_module("msg"):
# To read inbound email, set username (email address), password, etc.
# here. Insert multiple records for multiple email sources.
- table = db.msg_inbound_email_settings
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert(server = "imap.gmail.com",
- protocol = "imap",
- use_ssl = True,
- port = 993,
- username = "example-username",
- password = "password",
- delete_from_server = False
- )
+ db.msg_inbound_email_settings.insert(server = "imap.gmail.com",
+ protocol = "imap",
+ use_ssl = True,
+ port = 993,
+ username = "example-username",
+ password = "password",
+ delete_from_server = False
+ )
# Need entries for the Settings/1/Update URLs to work
- table = db.msg_setting
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert( outgoing_sms_handler = "WEB_API" )
- table = db.msg_modem_settings
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert( modem_baud = 115200 )
- table = db.msg_api_settings
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert( to_variable = "to" )
- table = db.msg_smtp_to_sms_settings
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert( address="changeme" )
- table = db.msg_tropo_settings
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert( token_messaging = "" )
- table = db.msg_twitter_settings
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert( pin = "" )
+ db.msg_setting.insert( outgoing_sms_handler = "WEB_API" )
+ db.msg_modem_settings.insert( modem_baud = 115200 )
+ db.msg_api_settings.insert( to_variable = "to" )
+ db.msg_smtp_to_sms_settings.insert( address="changeme" )
+ db.msg_tropo_settings.insert( token_messaging = "" )
+ db.msg_twitter_settings.insert( pin = "" )
# Budget Module
if settings.has_module("budget"):
- table = db.budget_parameter
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert() # Defaults are fine
+ db.budget_parameter.insert() # Defaults are fine
# Climate Module
if settings.has_module("climate"):
@@ -259,21 +238,17 @@
if settings.has_module("irs"):
# Categories visible to ends-users by default
table = db.irs_icategory
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert(code = "flood")
- table.insert(code = "geophysical.landslide")
- table.insert(code = "roadway.bridgeClosure")
- table.insert(code = "roadway.roadwayClosure")
- table.insert(code = "other.buildingCollapsed")
- table.insert(code = "other.peopleTrapped")
- table.insert(code = "other.powerFailure")
+ table.insert(code = "flood")
+ table.insert(code = "geophysical.landslide")
+ table.insert(code = "roadway.bridgeClosure")
+ table.insert(code = "roadway.roadwayClosure")
+ table.insert(code = "other.buildingCollapsed")
+ table.insert(code = "other.peopleTrapped")
+ table.insert(code = "other.powerFailure")
# Supply Module
if settings.has_module("supply"):
- tablename = "supply_catalog"
- table = db[tablename]
- if not db(table.id > 0).select(table.id, limitby=(0, 1)).first():
- table.insert(name = settings.get_supply_catalog_default() )
+ db.supply_catalog.insert(name = settings.get_supply_catalog_default() )
# Ensure DB population committed when running through shell
db.commit()
@@ -287,9 +262,6 @@
s3.import_role = bi.import_role
- # Override authorization
- auth.override = True
-
# Disable table protection
protected = s3mgr.PROTECTED
s3mgr.PROTECTED = []
diff --git a/modules/eden/gis.py b/modules/eden/gis.py
index 005c085fa5..0effac9add 100644
--- a/modules/eden/gis.py
+++ b/modules/eden/gis.py
@@ -28,6 +28,7 @@
"""
__all__ = ["S3LocationModel",
+ "S3LocationGroupModel",
"S3LocationHierarchyModel",
"S3GISConfigModel",
"S3LayerEntityModel",
@@ -55,7 +56,9 @@ class S3LocationModel(S3Model):
"""
names = ["gis_location",
+ "gis_location_tag",
"gis_location_name",
+ #"gis_location_error",
"gis_location_id",
"gis_country_id",
"gis_countries_id",
@@ -68,16 +71,13 @@ def model(self):
db = current.db
gis = current.gis
s3 = current.response.s3
- session = current.session
messages = current.messages
- NONE = messages.NONE
UNKNOWN_OPT = messages.UNKNOWN_OPT
- system_roles = session.s3.system_roles
- AUTHENTICATED = system_roles.AUTHENTICATED
-
# Shortcuts
+ add_component = self.add_component
+ comments = s3.comments
define_table = self.define_table
meta_fields = s3.meta_fields
@@ -96,14 +96,6 @@ def model(self):
6:"MultiPolygon",
7:"GeometryCollection",
}
- gis_source_opts = {
- "gps":T("GPS"),
- "imagery":T("Imagery"),
- "geonames":"Geonames",
- "osm":"OpenStreetMap",
- "wikipedia":"Wikipedia",
- "yahoo":"Yahoo! GeoPlanet",
- }
hierarchy_level_keys = gis.hierarchy_level_keys
@@ -121,44 +113,18 @@ def model(self):
# Waypoints don't need to have a name at all.
#requires = IS_NOT_EMPTY()
label = T("Name")),
- #Field("name_short"), # Secondary name
- # @ToDo: Fixme by providing a way to add Names
- #Field("name_local", "list:reference gis_location_name",
- # label = T("Local Names"),
- # comment = DIV(_class="tooltip",
- # _title="%s|%s" % (T("Local Names"),
- # T("Names can be added in multiple languages")))),
- # L0: ISO2
- # Others can be flexible as you need, e.g.
- # Christchurch: 'prupi', label=T("Property reference in the council system")
- Field("code", label = T("Code")),
- # L0: ISO3
- # Others can be flexible as you need, e.g.
- # Christchurch: 'gisratingid', label=T("Polygon reference of the rating unit")
- Field("code2",
- #label="ISO3",
- #label="P-Code",
- # Make these readable if you need them
- readable=False,
- writable=False),
- Field("level", length=2, label = T("Level"),
+ Field("level", length=2,
+ label = T("Level"),
requires = IS_NULL_OR(IS_IN_SET(hierarchy_level_keys)),
represent = self.gis_level_represent),
- # @ToDo: If level is known, filter on higher than that?
- # If strict, filter on next higher level?
- Field("parent", "reference gis_location", # This form of hierarchy may not work on all Databases
+ Field("parent", "reference gis_location", # This form of hierarchy may not work on all Databases
label = T("Parent"),
represent = self.gis_location_represent,
widget=S3LocationAutocompleteWidget(level=hierarchy_level_keys),
ondelete = "RESTRICT"),
+ # Materialised Path
Field("path", length=256,
- label = T("Path"),
- readable=False, writable=False), # Materialised Path
- Field("members", "list:reference gis_location"),
- # Street Address (other address fields come from hierarchy)
- Field("addr_street", "text", label = T("Street Address")),
- Field("addr_postcode", length=128,
- label = T("Postcode")),
+ readable=False, writable=False),
Field("gis_feature_type", "integer",
default=1, notnull=True,
requires = IS_IN_SET(gis_feature_type_opts,
@@ -166,43 +132,52 @@ def model(self):
represent = lambda opt: gis_feature_type_opts.get(opt,
UNKNOWN_OPT),
label = T("Feature Type")),
- Field("lat", "double", label = T("Latitude"), # Points or Centroid for Polygons
- requires = IS_NULL_OR(IS_LAT())),
- Field("lon", "double", label = T("Longitude"), # Points or Centroid for Polygons
- requires = IS_NULL_OR(IS_LON())),
- Field("wkt", "text", # WKT is auto-calculated from lat/lon for Points
- requires = IS_LENGTH(2 ** 24), # Full WKT validation is done in the onvalidation callback - all we do here is allow longer fields than the default (2 ** 16)
+ # Points or Centroid for Polygons
+ Field("lat", "double",
+ label = T("Latitude"),
+ requires = IS_NULL_OR(IS_LAT()),
+ comment = DIV(_class="tooltip",
+ _id="gis_location_lat_tooltip",
+ _title="%s|%s|%s|%s|%s|%s" % \
+ (T("Latitude & Longitude"),
+ T("Latitude is North-South (Up-Down)."),
+ T("Longitude is West-East (sideways)."),
+ T("Latitude is zero on the equator and positive in the northern hemisphere and negative in the southern hemisphere."),
+ T("Longitude is zero on the prime meridian (Greenwich Mean Time) and is positive to the east, across Europe and Asia. Longitude is negative to the west, across the Atlantic and the Americas."),
+ T("These need to be added in Decimal Degrees."))),
+ ),
+ Field("lon", "double",
+ label = T("Longitude"),
+ requires = IS_NULL_OR(IS_LON()),
+ comment = A(T("Conversion Tool"),
+ _style="cursor:pointer;",
+ _title=T("You can use the Conversion Tool to convert from either GPS coordinates or Degrees/Minutes/Seconds."),
+ _id="gis_location_converter-btn"),
+ ),
+ Field("wkt", "text",
+ # Full WKT validation is done in the onvalidation callback
+ # - all we do here is allow longer fields than the default (2 ** 16)
+ requires = IS_LENGTH(2 ** 24),
represent = gis.abbreviate_wkt,
label = "WKT (Well-Known Text)"),
- Field("population", "integer",
- label = T("Population"),
- represent = lambda v, row=None: IS_INT_AMOUNT.represent(v)),
- Field("url", label = "URL",
- requires = IS_NULL_OR(IS_URL())),
- Field("source", length=32,
- requires=IS_NULL_OR(IS_IN_SET(gis_source_opts))),
- Field("geonames_id", "integer", unique=True, # Geonames ID (for cross-correlation. OSM cannot take data from Geonames as 'polluted' with unclear sources, so can't use them as UUIDs)
- requires = IS_EMPTY_OR([IS_INT_IN_RANGE(0, 999999999),
- IS_NOT_ONE_OF(db, "%s.geonames_id" % tablename)]),
- label = "Geonames ID"),
- Field("osm_id", "integer", unique=True, # OpenStreetMap ID (for cross-correlation. OSM IDs can change over time, so they also have UUID fields they can store our IDs in)
- requires = IS_EMPTY_OR([IS_INT_IN_RANGE(0, 999999999999),
- IS_NOT_ONE_OF(db, "%s.osm_id" % tablename)]),
- label = "OpenStreetMap ID"),
- Field("lat_min", "double", writable=False,
- readable=False), # bounding-box
- Field("lat_max", "double", writable=False,
- readable=False), # bounding-box
- Field("lon_min", "double", writable=False,
- readable=False), # bounding-box
- Field("lon_max", "double", writable=False,
- readable=False), # bounding-box
- Field("elevation", "double", writable=False,
- readable=False), # m in height above WGS84 ellipsoid (approximately sea-level). not displayed currently
- #Field("ce", "integer", writable=False, readable=False), # Circular 'Error' around Lat/Lon (in m). Needed for CoT.
- #Field("le", "integer", writable=False, readable=False), # Linear 'Error' for the Elevation (in m). Needed for CoT.
- Field("area", "double", writable=False, readable=False), # Area of the Polygon (in km2).
- s3.comments(),
+ # Bounding box
+ Field("lat_min", "double",
+ readable=False, writable=False),
+ Field("lat_max", "double",
+ readable=False, writable=False),
+ Field("lon_min", "double",
+ readable=False, writable=False),
+ Field("lon_max", "double",
+ readable=False, writable=False),
+ # m in height above WGS84 ellipsoid (approximately sea-level).
+ Field("elevation", "double",
+ readable=False, writable=False),
+ # Street Address (other address fields come from hierarchy)
+ Field("addr_street", "text",
+ label = T("Street Address")),
+ Field("addr_postcode", length=128,
+ label = T("Postcode")),
+ comments(),
format=gis_location_represent,
*meta_spatial_fields)
@@ -212,50 +187,17 @@ def model(self):
# privileges from generic Authenticated users for particular locations (like
# hierarchy or region locations) by changing the owner on those locations, e.g.
# to MapAdmin.
- table.owned_by_group.default = AUTHENTICATED
-
- # Although the filter_opts here includes all allowed Ln keys, not just the
- # ones that are within the current hierarchy depth limit, this should not
- # let in any illegal parents, as the parent level was validated using the
- # current hierarchy limit.
- table.parent.requires = IS_NULL_OR(IS_ONE_OF(db, "gis_location.id",
- gis_location_represent_row,
- filterby="level",
- filter_opts=hierarchy_level_keys,
- orderby="gis_location.name"))
-
- # We want these visible from forms which reference the Location
- table.lat.comment = DIV(_class="tooltip",
- _id="gis_location_lat_tooltip",
- _title="%s|%s|%s|%s|%s|%s" % (T("Latitude & Longitude"),
- T("Latitude is North-South (Up-Down)."),
- T("Longitude is West-East (sideways)."),
- T("Latitude is zero on the equator and positive in the northern hemisphere and negative in the southern hemisphere."),
- T("Longitude is zero on the prime meridian (Greenwich Mean Time) and is positive to the east, across Europe and Asia. Longitude is negative to the west, across the Atlantic and the Americas."),
- T("These need to be added in Decimal Degrees.")))
- table.lon.comment = A(T("Conversion Tool"),
- _style="cursor:pointer;",
- _title=T("You can use the Conversion Tool to convert from either GPS coordinates or Degrees/Minutes/Seconds."),
- _id="gis_location_converter-btn")
-
- members = table.members
- # Can't be put in-line into table as db.gis_location not yet defined
- members.requires = IS_NULL_OR(IS_ONE_OF(db, "gis_location.id",
- gis_location_represent_row,
- multiple=True))
- # Location represent strings can be long, so show group members one per line
- # on read-only views.
- members.represent = lambda id: \
- id and s3_represent_multiref(db.gis_location, id,
- represent=lambda mbr_row: \
- gis_location_represent_row(mbr_row),
- separator=BR()) or NONE
- # FYI, this is how one would show plain text rather than links:
- #members.represent = lambda id: \
- # id and s3_represent_multiref(db.gis_location, id,
- # represent=lambda mbr_row: \
- # gis_location_represent_row(mbr_row, showlink=False),
- # separator=", ") or NONE
+ table.owned_by_group.default = current.session.s3.system_roles.AUTHENTICATED
+
+ # Can't be defined in-line as otherwise get a circular reference
+ table.parent.requires = IS_NULL_OR(IS_ONE_OF(db,
+ "gis_location.id",
+ gis_location_represent_row,
+ # @ToDo: If level is known, filter on higher than that?
+ # If strict, filter on next higher level?
+ filterby="level",
+ filter_opts=hierarchy_level_keys,
+ orderby="gis_location.name"))
# CRUD Strings
ADD_LOCATION = messages.ADD_LOCATION
@@ -325,27 +267,100 @@ def model(self):
]
)
+ # Tags as component of Locations
+ add_component("gis_location_tag", gis_location="location_id")
+
# Names as component of Locations
- self.add_component("gis_location_name", gis_location="location_id")
+ add_component("gis_location_name", gis_location="location_id")
- # ---------------------------------------------------------------------
# Locations as component of Locations ('Parent')
- #self.add_component(table, joinby=dict(gis_location="parent"),
- # multiple=False)
+ #add_component(table, joinby=dict(gis_location="parent"),
+ # multiple=False)
+
+ # ---------------------------------------------------------------------
+ # Location Tags
+ # - Key-Value extensions
+ # - can be used to identify a Source (GPS, Imagery, Wikipedia, etc)
+ # - can be used to add extra attributes (e.g. Area, Population)
+ # - can link Locations to other Systems, such as:
+ # * ISO2
+ # * ISO3
+ # * OpenStreetMap (although their IDs can change over time)
+ # * UN P-Codes
+ # * GeoNames
+ # * Wikipedia URL
+ # * Christchurch 'prupi'(Property reference in the council system) &
+ # 'gisratingid' (Polygon reference of the rating unit)
+ # - can be a Triple Store for Semantic Web support
+ #
+ tablename = "gis_location_tag"
+ table = define_table(tablename,
+ location_id(),
+ # key is a reserved word in MySQL
+ Field("tag", label=T("Key")),
+ Field("value", label=("Value")),
+ comments(),
+ *meta_fields())
# ---------------------------------------------------------------------
# Local Names
+ #
tablename = "gis_location_name"
table = define_table(tablename,
location_id(),
- Field("language", label = T("Language"),
+ Field("language",
+ label = T("Language"),
requires = IS_IN_SET(s3.l10n_languages),
represent = lambda opt: \
s3.l10n_languages.get(opt,
UNKNOWN_OPT)),
- Field("name_l10n", label = T("Name")),
+ Field("name_l10n",
+ label = T("Name")),
+ comments(),
*meta_fields())
+ # ---------------------------------------------------------------------
+ # Groups
+ #
+ tablename = "gis_location_group"
+ table = define_table(tablename,
+ Field("name",
+ label = T("Name")),
+ # Optional Polygon for the overall Group
+ location_id(),
+ comments(),
+ *meta_fields())
+
+ add_component("gis_location_group_member", gis_group="location_group_id")
+
+ tablename = "gis_location_group_member"
+ table = define_table(tablename,
+ Field("location_group_id",
+ db.gis_location_group,
+ label = T("Location Group"),
+ represent = gis_location_represent,
+ ondelete = "RESTRICT"),
+ location_id(),
+ *meta_fields())
+
+ # ---------------------------------------------------------------------
+ # Error
+ # - needed for COT support
+ #
+ # tablename = "gis_location_error"
+ # table = define_table(tablename,
+ # location_id(),
+ ##Circular 'Error' around Lat/Lon (in m).
+ # Field("ce", "integer",
+ # writable=False,
+ # readable=False),
+ ##Linear 'Error' for the Elevation (in m).
+ # Field("le", "integer",
+ # writable=False,
+ # readable=False),
+ # comments(),
+ # *meta_fields())
+
# ---------------------------------------------------------------------
# Pass variables back to global scope (response.s3.*)
#
@@ -421,7 +436,6 @@ def gis_location_onvalidation(form):
s3 = response.s3
MAP_ADMIN = current.auth.s3_has_role(current.session.s3.system_roles.MAP_ADMIN)
- edit_GR = MAP_ADMIN or current.deployment_settings.get_gis_edit_group()
table = s3db.gis_location
@@ -444,70 +458,8 @@ def get_location_info():
parent = "parent" in vars and vars.parent
lat = "lat" in vars and vars.lat
lon = "lon" in vars and vars.lon
- members = "members" in vars and vars.members
id = "id" in request.vars and request.vars.id
- # For a new location, set the level to "GR" if members are present.
- # Existing locations cannot be converted to Groups or vice-versa.
- # Existing Groups cannot have all Members removed.
- # Note: We can't rely on checking form.vars.level to tell
- # if an existing location was a group, because it might not be available
- # in either form.vars or request.vars -- for an interactive form, that
- # field was set to not writable, so it's just plain text in the page.
- # Note also that many of the errors "available" here are not accessible
- # via the interactive form.
- if id:
- # Existing location
- # Is this a location group?
- # Use the breadcrumb set in prep if available to avoid a db read
- # and detect attempt to change level away from group.
- if "location_is_group" in s3:
- location_is_group = s3.location_is_group
- else:
- old_location = get_location_info()
- if old_location:
- location_is_group = old_location.level == "GR"
- else:
- location_is_group = False
- if location_is_group:
- if not edit_GR:
- response.error = record_error
- form.errors["members"] = record_error
- return
- # Make sure no-one takes away all members.
- if "members" in vars and not vars.members:
- error = T("A location group must have at least one member.")
- response.error = error
- form.errors["members"] = error
- return
- else:
- # Don't allow changing non-group to group.
- error = T("Existing location cannot be converted into a group.")
- if members:
- response.error = error
- form.errors["members"] = error
- return
- if level == "GR":
- response.error = error
- form.errors["level"] = error
- return
- else:
- # New location -- if the location has members, and if permitted to
- # make a group, set "group" level. Don't allow also setting a parent.
- if members:
- if edit_GR:
- if "parent" in vars and vars.parent:
- error = T("Location group cannot have a parent.")
- response.error = error
- form.errors["parent"] = error
- return
- vars.level = "GR"
- else:
- error = T("Sorry, only users with the MapAdmin role are allowed to create location groups.")
- response.error = error
- form.errors["members"] = error
- return
-
# 'MapAdmin' has permission to edit hierarchy locations, no matter what
# 000_config or the ancestor country's gis_config has.
if not MAP_ADMIN:
@@ -528,12 +480,6 @@ def get_location_info():
limitby=(0, 1),
cache=cache).first()
- # Don't allow a group as parent
- # (Check not needed here -- enforced in requires validator.)
- #if _parent and _parent.level == "GR":
- # form.errors["parent"] = T("Location group cannot be a parent.")
- # return
-
# Check Parents are in sane order
if level and parent and _parent:
# Check that parent is of a higher level
@@ -664,25 +610,22 @@ def gis_location_deduplicate(job):
If the record is a duplicate then it will set the job method to update
Rules for finding a duplicate:
- - If code is present in the import,
- Look for a record with the same code, ignoring case
- - If code2 is present instead,
- Look for a record with the same code2, ignoring case
- - Else, Look for a record with the same name, ignoring case
+ - Look for a record with the same name, ignoring case
and, if level exists in the import, the same level
and, if parent exists in the import, the same parent
+ @ToDo: Use codes that we know are unique
+
@ToDo: Check soundex? (only good in English)
http://eden.sahanafoundation.org/ticket/481
"""
if job.tablename == "gis_location":
table = job.table
- name = "name" in job.data and job.data.name or None
- level = "level" in job.data and job.data.level or None
- parent = "parent" in job.data and job.data.parent or None
- code = "code" in job.data and job.data.code or None
- code2 = "code2" in job.data and job.data.code2 or None
+ data = job.data
+ name = "name" in data and data.name or None
+ level = "level" in data and data.level or None
+ parent = "parent" in data and data.parent or None
if not name:
return
@@ -693,32 +636,16 @@ def gis_location_deduplicate(job):
return
# @ToDo: check the the lat and lon if they exist?
- #lat = "lat" in job.data and job.data.lat
- #lon = "lon" in job.data and job.data.lon
+ #lat = "lat" in data and data.lat
+ #lon = "lon" in data and data.lon
_duplicate = None
db = current.db
- # In our current data these are not guaranteed unique, especially across countries
- # if code:
- # query = (table.code.lower().like('%%%s%%' % code.lower()))
- # if parent:
- # query = query & (table.parent == parent)
- # if level:
- # query = query & (table.level == level)
- # _duplicate = db(query).select(table.id,
- # limitby=(0, 1)).first()
- # elif code2:
- # query = (table.code2.lower().like('%%%s%%' % code2.lower()))
- # if parent:
- # query = query & (table.parent == parent)
- # if level:
- # query = query & (table.level == level)
- # _duplicate = db(query).select(table.id,
- # limitby=(0, 1)).first()
if not _duplicate:
# Try the Name
- query = (table.name.lower().like('%%%s%%' % name.lower()))
+ #query = (table.name.lower().like('%%%s%%' % name.lower()))
+ query = (table.name.lower() == name.lower())
if parent:
query = query & (table.parent == parent)
if level:
@@ -728,7 +655,6 @@ def gis_location_deduplicate(job):
limitby=(0, 1)).first()
if _duplicate:
job.id = _duplicate.id
- job.data.id = _duplicate.id
job.method = job.METHOD.UPDATE
# -------------------------------------------------------------------------
@@ -751,6 +677,64 @@ def gis_level_represent(level):
# however we have no way of knowing the country here, so safest not to give a wrong answer.
return level
+# =============================================================================
+class S3LocationGroupModel(S3Model):
+ """
+ Location Groups model
+ - currently unused
+ """
+
+ names = ["gis_location_group",
+ "gis_location_group_member",
+ ]
+
+ def model(self):
+
+ T = current.T
+ db = current.db
+ gis = current.gis
+ s3 = current.response.s3
+
+ location_id = self.gis_location_id
+
+ comments = s3.comments
+ define_table = self.define_table
+ meta_fields = s3.meta_fields
+
+ # ---------------------------------------------------------------------
+ # Location Groups
+ #
+ tablename = "gis_location_group"
+ table = define_table(tablename,
+ Field("name",
+ label = T("Name")),
+ # Optional Polygon for the overall Group
+ location_id(),
+ comments(),
+ *meta_fields())
+
+ self.add_component("gis_location_group_member",
+ gis_location_group="location_group_id")
+
+ # ---------------------------------------------------------------------
+ # Location Group Membership
+ #
+ tablename = "gis_location_group_member"
+ table = define_table(tablename,
+ Field("location_group_id",
+ db.gis_location_group,
+ label = T("Location Group"),
+ ondelete = "RESTRICT"),
+ location_id(),
+ comments(),
+ *meta_fields())
+
+ # ---------------------------------------------------------------------
+ # Pass variables back to global scope (response.s3.*)
+ #
+ return Storage(
+ )
+
# =============================================================================
class S3LocationHierarchyModel(S3Model):
"""
diff --git a/modules/eden/hrm.py b/modules/eden/hrm.py
index e6d5967882..1b41750a8d 100644
--- a/modules/eden/hrm.py
+++ b/modules/eden/hrm.py
@@ -3566,6 +3566,14 @@ def active(self):
if person_id:
active = hrm_active(person_id)
return active
+ # If we do this then it can't be used in reports
+ #T = current.T
+ #if active:
+ # _active = DIV(T("Yes"),
+ # _style="color:green;")
+ #else:
+ # _active = DIV(T("No"),
+ # _style="color:red;")
return current.messages.NONE
diff --git a/modules/s3/s3gis.py b/modules/s3/s3gis.py
index 4b4e188042..d8ba5362f0 100644
--- a/modules/s3/s3gis.py
+++ b/modules/s3/s3gis.py
@@ -2416,6 +2416,7 @@ def import_gadm1_L0(ogr, countries=[]):
db = current.db
s3db = current.s3db
table = s3db.gis_location
+ ttable = s3db.gis_location_tag
layer = {
"url" : "http://gadm.org/data/gadm_v1_lev0_shp.zip",
@@ -2500,7 +2501,9 @@ def import_gadm1_L0(ogr, countries=[]):
if geom.GetGeometryType() == ogr.wkbPoint:
pass
else:
- query = (table.code == code)
+ query = (table.id == ttable.location_id) & \
+ (ttable.tag == "ISO2") & \
+ (ttable.value == code)
wkt = geom.ExportToWkt()
if wkt.startswith("LINESTRING"):
gis_feature_type = 2
@@ -2515,12 +2518,18 @@ def import_gadm1_L0(ogr, countries=[]):
elif wkt.startswith("GEOMETRYCOLLECTION"):
gis_feature_type = 7
code2 = feat.GetField(code2Field)
- area = feat.GetField("Shape_Area")
+ #area = feat.GetField("Shape_Area")
try:
db(query).update(gis_feature_type=gis_feature_type,
- wkt=wkt,
- code2=code2,
- area=area)
+ wkt=wkt)
+ id = db(query).select(table.id,
+ limitby=(0, 1)).first().id
+ ttable.insert(location_id = id,
+ tag = "ISO3",
+ value = code2)
+ #ttable.insert(location_id = location_id,
+ # tag = "area",
+ # value = area)
except db._adapter.driver.OperationalError, exception:
s3_debug(exception)
@@ -2561,10 +2570,13 @@ def import_gadm1(self, ogr, level="L1", countries=[]):
"zipfile" : "gadm_v1_lev1_shp.zip",
"shapefile" : "gadm1_lev1",
"namefield" : "NAME_1",
- "codefield" : "ID_1", # This field is used to uniquely identify the L1 for updates
- "code2field" : "ISO", # This field is used to uniquely identify the L0 for parenting the L1s
+ # Uniquely identify the L1 for updates
+ "sourceCodeField" : "ID_1",
+ "edenCodeField" : "GADM1",
+ # Uniquely identify the L0 for parenting the L1s
"parent" : "L0",
- "parentCode" : "code2"
+ "parentSourceCodeField" : "ISO",
+ "parentEdenCodeField" : "ISO3",
}
elif level == "L2":
layer = {
@@ -2572,10 +2584,13 @@ def import_gadm1(self, ogr, level="L1", countries=[]):
"zipfile" : "gadm_v1_lev2_shp.zip",
"shapefile" : "gadm_v1_lev2",
"namefield" : "NAME_2",
- "codefield" : "ID_2", # This field is used to uniquely identify the L2 for updates
- "code2field" : "ID_1", # This field is used to uniquely identify the L1 for parenting the L2s
+ # Uniquely identify the L2 for updates
+ "sourceCodeField" : "ID_2",
+ "edenCodeField" : "GADM2",
+ # Uniquely identify the L0 for parenting the L1s
"parent" : "L1",
- "parentCode" : "code"
+ "parentSourceCodeField" : "ID_1",
+ "parentEdenCodeField" : "GADM1",
}
else:
s3_debug("Level %s not supported!" % level)
@@ -2668,30 +2683,29 @@ def latin_dict_reader(data, dialect=csv.excel, **kwargs):
nGroupTransactions = 200
nFIDToFetch = ogr.NullFID
inputFileName = "%s.shp" % layerName
- inputDS = ogr.Open( inputFileName, False )
+ inputDS = ogr.Open(inputFileName, False)
outputFileName = "CSV"
outputDriver = ogr.GetDriverByName("CSV")
- outputDS = outputDriver.CreateDataSource( outputFileName, options = [] )
+ outputDS = outputDriver.CreateDataSource(outputFileName, options=[])
# GADM only has 1 layer/source
inputLayer = inputDS.GetLayer(0)
inputFDefn = inputLayer.GetLayerDefn()
# Create the output Layer
- outputLayer = outputDS.CreateLayer( layerName )
+ outputLayer = outputDS.CreateLayer(layerName)
# Copy all Fields
papszFieldTypesToString = []
inputFieldCount = inputFDefn.GetFieldCount()
- panMap = [ -1 for i in range(inputFieldCount) ]
+ panMap = [-1 for i in range(inputFieldCount)]
outputFDefn = outputLayer.GetLayerDefn()
nDstFieldCount = 0
if outputFDefn is not None:
nDstFieldCount = outputFDefn.GetFieldCount()
for iField in range(inputFieldCount):
inputFieldDefn = inputFDefn.GetFieldDefn(iField)
- oFieldDefn = ogr.FieldDefn( inputFieldDefn.GetNameRef(),
- inputFieldDefn.GetType() )
- oFieldDefn.SetWidth( inputFieldDefn.GetWidth() )
- oFieldDefn.SetPrecision( inputFieldDefn.GetPrecision() )
-
+ oFieldDefn = ogr.FieldDefn(inputFieldDefn.GetNameRef(),
+ inputFieldDefn.GetType())
+ oFieldDefn.SetWidth(inputFieldDefn.GetWidth())
+ oFieldDefn.SetPrecision(inputFieldDefn.GetPrecision())
# The field may have been already created at layer creation
iDstField = -1;
if outputFDefn is not None:
@@ -2702,77 +2716,57 @@ def latin_dict_reader(data, dialect=csv.excel, **kwargs):
# now that we've created a field, GetLayerDefn() won't return NULL
if outputFDefn is None:
outputFDefn = outputLayer.GetLayerDefn()
-
panMap[iField] = nDstFieldCount
nDstFieldCount = nDstFieldCount + 1
-
# Transfer features
nFeaturesInTransaction = 0
iSrcZField = -1
-
inputLayer.ResetReading()
-
if nGroupTransactions > 0:
outputLayer.StartTransaction()
-
while True:
poDstFeature = None
-
if nFIDToFetch != ogr.NullFID:
-
# Only fetch feature on first pass.
if nFeaturesInTransaction == 0:
poFeature = inputLayer.GetFeature(nFIDToFetch)
else:
poFeature = None
-
else:
poFeature = inputLayer.GetNextFeature()
-
if poFeature is None:
break
-
nParts = 0
nIters = 1
-
for iPart in range(nIters):
nFeaturesInTransaction = nFeaturesInTransaction + 1
if nFeaturesInTransaction == nGroupTransactions:
outputLayer.CommitTransaction()
outputLayer.StartTransaction()
nFeaturesInTransaction = 0
-
- poDstFeature = ogr.Feature( outputLayer.GetLayerDefn() )
-
- if poDstFeature.SetFromWithMap( poFeature, 1, panMap ) != 0:
-
+ poDstFeature = ogr.Feature(outputLayer.GetLayerDefn())
+ if poDstFeature.SetFromWithMap(poFeature, 1, panMap) != 0:
if nGroupTransactions > 0:
outputLayer.CommitTransaction()
-
s3_debug("Unable to translate feature %d from layer %s" % (poFeature.GetFID() , inputFDefn.GetName() ))
# Revert back to the working directory as before.
os.chdir(old_working_directory)
return
-
poDstGeometry = poDstFeature.GetGeometryRef()
if poDstGeometry is not None:
-
if nParts > 0:
# For -explodecollections, extract the iPart(th) of the geometry
poPart = poDstGeometry.GetGeometryRef(iPart).Clone()
poDstFeature.SetGeometryDirectly(poPart)
poDstGeometry = poPart
-
if outputLayer.CreateFeature( poDstFeature ) != 0 and not bSkipFailures:
if nGroupTransactions > 0:
outputLayer.RollbackTransaction()
# Revert back to the working directory as before.
os.chdir(old_working_directory)
return
-
if nGroupTransactions > 0:
outputLayer.CommitTransaction()
-
# Cleanup
outputDS.Destroy()
inputDS.Destroy()
@@ -2791,7 +2785,7 @@ def latin_dict_reader(data, dialect=csv.excel, **kwargs):
os.chdir(old_working_directory)
return
- lyr = ds.GetLayerByName( layerName )
+ lyr = ds.GetLayerByName(layerName)
lyr.ResetReading()
@@ -2800,25 +2794,28 @@ def latin_dict_reader(data, dialect=csv.excel, **kwargs):
rows = latin_dict_reader(open("%s.csv" % layerName))
nameField = layer["namefield"]
- codeField = layer["codefield"]
- code2Field = layer["code2field"]
+ sourceCodeField = layer["sourceCodeField"]
+ edenCodeField = layer["edenCodeField"]
+ parentSourceCodeField = layer["parentSourceCodeField"]
parentLevel = layer["parent"]
- parentCodeField = table[layer["parentCode"]]
+ parentEdenCodeField = layer["parentEdenCodeField"]
+ parentCodeQuery = (ttable.tag == parentEdenCodeField)
count = 0
for row in rows:
# Read Attributes
feat = lyr[count]
- code2 = feat.GetField(code2Field)
+ parentCode = feat.GetField(parentSourceCodeField)
query = (table.level == parentLevel) & \
- (parentCodeField == code2)
+ parentCodeQuery & \
+ (ttable.value == parentCode)
parent = db(query).select(table.id,
table.code,
limitby=(0, 1),
cache=cache).first()
if not parent:
# Skip locations for which we don't have a valid parent
- #s3_debug("Skipping - cannot find parent with code2: %s" % code2)
+ s3_debug("Skipping - cannot find parent with key: %s, value: %s" % (parentEdenCodeField, parentCode))
count += 1
continue
@@ -2840,7 +2837,7 @@ def latin_dict_reader(data, dialect=csv.excel, **kwargs):
name = row.pop(nameField)
name.encode("utf8")
- code = feat.GetField(codeField)
+ code = feat.GetField(sourceCodeField)
area = feat.GetField("Shape_Area")
geom = feat.GetGeometryRef()
@@ -2848,14 +2845,18 @@ def latin_dict_reader(data, dialect=csv.excel, **kwargs):
if geom.GetGeometryType() == ogr.wkbPoint:
lat = geom.GetX()
lon = geom.GetY()
- table.insert(name=name,
- level=level,
- gis_feature_type=1,
- lat=lat,
- lon=lon,
- parent=parent.id,
- code=code,
- area=area)
+ id = table.insert(name=name,
+ level=level,
+ gis_feature_type=1,
+ lat=lat,
+ lon=lon,
+ parent=parent.id)
+ ttable.insert(location_id = id,
+ tag = edenCodeField,
+ value = code)
+ # ttable.insert(location_id = id,
+ # tag = "area",
+ # value = area)
else:
wkt = geom.ExportToWkt()
if wkt.startswith("LINESTRING"):
@@ -2870,13 +2871,17 @@ def latin_dict_reader(data, dialect=csv.excel, **kwargs):
gis_feature_type = 6
elif wkt.startswith("GEOMETRYCOLLECTION"):
gis_feature_type = 7
- table.insert(name=name,
- level=level,
- gis_feature_type=gis_feature_type,
- wkt=wkt,
- parent=parent.id,
- code=code,
- area=area)
+ id = table.insert(name=name,
+ level=level,
+ gis_feature_type=gis_feature_type,
+ wkt=wkt,
+ parent=parent.id)
+ ttable.insert(location_id = id,
+ tag = edenCodeField,
+ value = code)
+ # ttable.insert(location_id = id,
+ # tag = "area",
+ # value = area)
else:
s3_debug("No geometry\n")
@@ -2891,7 +2896,8 @@ def latin_dict_reader(data, dialect=csv.excel, **kwargs):
try:
self.update_location_tree()
except MemoryError:
- # If doing all L2s, it can break memory limits - how can we avoid this?
+ # If doing all L2s, it can break memory limits
+ # @ToDo: Amend function to do in chunks
s3_debug("Memory error when trying to update_location_tree()!")
db.commit()
@@ -3080,6 +3086,7 @@ def import_geonames(self, country, level=None):
request = current.request
settings = current.deployment_settings
table = s3db.gis_location
+ ttable = s3db.gis_location_tag
url = "http://download.geonames.org/export/dump/" + country + ".zip"
@@ -3200,11 +3207,6 @@ def import_geonames(self, country, level=None):
modification_date = line.split("\t")
if feature_code == fc:
- # @ToDo: Agree on a global repository for UUIDs:
- # http://eden.sahanafoundation.org/wiki/UserGuidelinesGISData#UUIDs
- import uuid
- uuid = "geo.sahanafoundation.org/" + uuid.uuid4()
-
# Add WKT
lat = float(lat)
lon = float(lon)
@@ -3238,20 +3240,19 @@ def in_bbox(row):
s3_debug("Error reading wkt of location with id", row.id)
# Add entry to database
- table.insert(uuid=uuid,
- geonames_id=geonames_id,
- source="geonames",
- name=name,
- level=level,
- parent=parent,
- lat=lat,
- lon=lon,
- wkt=wkt,
- lon_min=lon_min,
- lon_max=lon_max,
- lat_min=lat_min,
- lat_max=lat_max)
-
+ new_id = table.insert(name=name,
+ level=level,
+ parent=parent,
+ lat=lat,
+ lon=lon,
+ wkt=wkt,
+ lon_min=lon_min,
+ lon_max=lon_max,
+ lat_min=lat_min,
+ lat_max=lat_max)
+ ttable.insert(location_id=new_id,
+ tag="geonames",
+ value=geonames_id)
else:
continue
diff --git a/modules/s3/s3model.py b/modules/s3/s3model.py
index 5c5bee043c..556d93aa14 100644
--- a/modules/s3/s3model.py
+++ b/modules/s3/s3model.py
@@ -138,17 +138,17 @@ def __getattr__(self, name):
def __getitem__(self, key):
""" Model auto-loader """
- s3 = current.response.s3
- db = current.db
if str(key) in self.__dict__:
return dict.__getitem__(self, str(key))
- elif key in db:
- return db[key]
- elif key in s3:
- return s3[key]
else:
- return self.table(key,
- AttributeError("undefined table: %s" % key))
+ db = current.db
+ if key in db:
+ return db[key]
+ elif key in current.response.s3:
+ return current.response.s3[key]
+ else:
+ return self.table(key,
+ AttributeError("undefined table: %s" % key))
# -------------------------------------------------------------------------
def model(self):
diff --git a/private/templates/IFRC/TL_L0.csv b/private/templates/IFRC/TL_L0.csv
index cd4eb052d0..1a4f0acdfd 100644
--- a/private/templates/IFRC/TL_L0.csv
+++ b/private/templates/IFRC/TL_L0.csv
@@ -1,2 +1,2 @@
-WKT,FIPS,ISO2,ISO3,UN,NAME0,AREA,POP2005,REGION,SUBREGION,LON,LAT
-"MULTIPOLYGON (((124.44572729730143 -9.184801455158606,124.34309325995272 -9.463379556533425,124.04616116616907 -9.339979205869994,124.44572729730143 -9.184801455158606)),((127.25305200000011 -8.477499000000023,125.1279887712715 -9.435955217796249,125.16404989666458 -9.066142474253581,124.94544874451074 -8.954039319302851,125.84414699999999 -8.481667000000016,127.25305200000011 -8.477499000000023)))",TT,TL,TLS,626,Timor-Leste,1487,1067285,142,35, 125.878, -8.822
+L0,L0 KV:ISO3,L0 KV:FIPS,L0 KV:UN,Lon,Lat,WKT,L0 KV:Area,L0 KV:POP2005,L0 KV:REGION,L0 KV:SUBREGION
+Timor-Leste,TLS,TT,626,125.878,-8.822,"MULTIPOLYGON (((124.44572729730143 -9.184801455158606,124.34309325995272 -9.463379556533425,124.04616116616907 -9.339979205869994,124.44572729730143 -9.184801455158606)),((127.25305200000011 -8.477499000000023,125.1279887712715 -9.435955217796249,125.16404989666458 -9.066142474253581,124.94544874451074 -8.954039319302851,125.84414699999999 -8.481667000000016,127.25305200000011 -8.477499000000023)))",1487,1067285,142,35
diff --git a/private/templates/IFRC_Train/tasks.cfg b/private/templates/IFRC_Train/tasks.cfg
index 1cdb7edcec..57da68cc63 100644
--- a/private/templates/IFRC_Train/tasks.cfg
+++ b/private/templates/IFRC_Train/tasks.cfg
@@ -108,7 +108,6 @@ project,organisation,project_organisation.csv,organisation.xsl
irs,ireport,ireport.csv,ireport.xsl
# -----------------------------------------------------------------------------
# ADAT
-#auth,user,ADAT/survey_users.csv,user.xsl
# Add the survey templates
survey,question_list,ADAT/24B.xls.Question.csv,question_list.xsl,"{'Template Description':'Rapid field assessment form (B)','Complete Question':'Name of assessment team leader','Date Question':'Date of Assessment','Time Question':'Time of Assessment','Location Detail':['L0', 'L1', 'L2', 'L3', 'Lat', 'Lon'],'Priority Question':'24H-11'}"
survey,question_list,ADAT/72B.xls.Question.csv,question_list.xsl
diff --git a/private/templates/Standard/USA_L0.csv b/private/templates/Standard/USA_L0.csv
index c8eeb595eb..13ff97f23a 100644
--- a/private/templates/Standard/USA_L0.csv
+++ b/private/templates/Standard/USA_L0.csv
@@ -1,2 +1,2 @@
-"WKT","ISO2"
-"MULTIPOLYGON (((-75.1702880859375 19.931390762329102,-75.223724365234375 19.901556015014648,-75.1591796875 19.960695266723633,-75.1702880859375 19.931390762329102)),((-75.12139892578125 19.88749885559082,-75.139739990234375 19.962873458862305,-75.085281372070312 19.893041610717773,-75.12139892578125 19.88749885559082)),((-155.00558471679687 19.328882217407227,-155.85946655273437 19.032777786254883,-155.86444091796875 20.269163131713867,-155.15863037109375 19.962495803833008,-154.79281616210937 19.538610458374023,-155.00558471679687 19.328882217407227)),((-156.5472412109375 20.525274276733398,-156.69863891601562 20.534719467163086,-156.58529663085937 20.607221603393555,-156.5472412109375 20.525274276733398)),((-156.89199829101562 20.744161605834961,-157.04837036132812 20.918054580688477,-156.812255859375 20.843610763549805,-156.89199829101562 20.744161605834961)),((-156.47335815429687 20.898050308227539,-155.98861694335937 20.748052597045898,-156.42001342773437 20.58860969543457,-156.70223999023437 20.924436569213867,-156.47335815429687 20.898050308227539)),((-156.89447021484375 21.161104202270508,-156.70391845703125 21.158052444458008,-157.30474853515625 21.100553512573242,-156.89447021484375 21.161104202270508)),((-160.53060913085937 21.643888473510742,-160.53778076171875 21.63221549987793,-160.5411376953125 21.641382217407227,-160.53060913085937 21.643888473510742)),((-157.73031616210937 21.411661148071289,-158.1036376953125 21.295278549194336,-158.27337646484375 21.580549240112305,-157.971923828125 21.699438095092773,-157.73031616210937 21.411661148071289)),((-160.114990234375 21.88749885559082,-160.24777221679687 21.813608169555664,-160.0614013671875 22.013883590698242,-160.114990234375 21.88749885559082)),((-159.43362426757813 21.881387710571289,-159.78530883789062 22.061384201049805,-159.35165405273437 22.221380233764648,-159.43362426757813 21.881387710571289)),((-161.94168090820312 23.039438247680664,-161.94833374023437 23.047216415405273,-161.93832397460937 23.046388626098633,-161.94168090820312 23.039438247680664)),((-164.69613647460937 23.564718246459961,-164.70751953125 23.576665878295898,-164.69668579101562 23.578054428100586,-164.69613647460937 23.564718246459961)),((-81.773895263671875 24.544721603393555,-81.813499450683594 24.54387092590332,-81.729171752929688 24.560556411743164,-81.773895263671875 24.544721603393555)),((-82.11444091796875 24.545831680297852,-82.137222290039063 24.593889236450195,-82.099990844726563 24.58305549621582,-82.11444091796875 24.545831680297852)),((-81.715118408203125 24.553117752075195,-81.710739135742187 24.595720291137695,-81.646224975585938 24.577550888061523,-81.715118408203125 24.553117752075195)),((-81.477218627929688 24.636384963989258,-81.51777458190918 24.684995651245117,-81.478607177734375 24.677774429321289,-81.477218627929688 24.636384963989258)),((-81.588333129882813 24.589998245239258,-81.553054809570313 24.687219619750977,-81.508346557617188 24.629999160766602,-81.588333129882813 24.589998245239258)),((-81.108612060546875 24.706106185913086,-81.137771606445312 24.701681137084961,-81.05267333984375 24.716531753540039,-81.108612060546875 24.706106185913086)),((-81.349441528320313 24.629720687866211,-81.428054809570312 24.748605728149414,-81.360824584960937 24.700830459594727,-81.349441528320313 24.629720687866211)),((-80.968887329101563 24.742773056030273,-81.026687622070313 24.718587875366211,-80.9234619140625 24.769208908081055,-80.968887329101563 24.742773056030273)),((-80.846115112304688 24.79749870300293,-80.824172973632813 24.821111679077148,-80.786170959472656 24.822931289672852,-80.846115112304688 24.79749870300293)),((-80.6986083984375 24.866666793823242,-80.745834350585937 24.842496871948242,-80.702499389648437 24.880830764770508,-80.6986083984375 24.866666793823242)),((-80.646665573120117 24.902219772338867,-80.664443969726563 24.894998550415039,-80.623886108398438 24.932775497436523,-80.646665573120117 24.902219772338867)),((-167.99057006835937 25.002500534057617,-168.00115966796875 25.003885269165039,-168.00588989257812 25.017496109008789,-167.99057006835937 25.002500534057617)),((-80.577224731445313 24.945550918579102,-80.25750732421875 25.34638786315918,-80.371932983398438 25.143888473510742,-80.577224731445313 24.945550918579102)),((-80.225006103515625 25.40110969543457,-80.234161376953125 25.402219772338867,-80.1885986328125 25.494161605834961,-80.225006103515625 25.40110969543457)),((-80.162216186523438 25.669443130493164,-80.185546875 25.68943977355957,-80.156387329101563 25.733331680297852,-80.162216186523438 25.669443130493164)),((-171.72360229492187 25.76249885559082,-171.73138427734375 25.760831832885742,-171.72470092773437 25.791662216186523,-171.72360229492187 25.76249885559082)),((-81.684158325195313 25.844720840454102,-81.7147216796875 25.888608932495117,-81.664169311523438 25.888608932495117,-81.684158325195313 25.844720840454102)),((-173.94613647460937 26.063333511352539,-173.96084594726562 26.079439163208008,-173.94473266601562 26.080831527709961,-173.94613647460937 26.063333511352539)),((-82.126388549804688 26.44999885559082,-82.206390380859375 26.545831680297852,-82.028884887695312 26.444997787475586,-82.126388549804688 26.44999885559082)),((-82.221664428710938 26.612497329711914,-82.2449951171875 26.63499641418457,-82.2550048828125 26.698606491088867,-82.221664428710938 26.612497329711914)),((-82.079452514648438 26.487775802612305,-82.179718017578125 26.699163436889648,-82.133331298828125 26.691106796264648,-82.079452514648438 26.487775802612305)),((-82.263626098632813 26.716386795043945,-82.281387329101563 26.808889389038086,-82.255279541015625 26.759443283081055,-82.263626098632813 26.716386795043945)),((-97.177780151367188 26.084722518920898,-97.385757446289063 26.838224411010742,-97.383621215820313 27.207220077514648,-97.177780151367188 26.084722518920898)),((-82.587509155273438 27.321111679077148,-82.680557250976563 27.42582893371582,-82.6541748046875 27.418607711791992,-82.587509155273438 27.321111679077148)),((-97.382217407226563 27.21888542175293,-97.317230224609375 27.495828628540039,-97.04554557800293 27.843889236450195,-97.382217407226563 27.21888542175293)),((-96.887786865234375 28.030553817749023,-97.03582763671875 27.875276565551758,-96.867767333984375 28.13499641418457,-96.887786865234375 28.030553817749023)),((-96.55194091796875 28.266668319702148,-96.813613891601563 28.092496871948242,-96.40472412109375 28.392221450805664,-96.55194091796875 28.266668319702148)),((-96.360824584960938 28.402498245239258,-96.31304931640625 28.45527458190918,-96.229995727539063 28.485551834106445,-96.360824584960938 28.402498245239258)),((-80.663894653320312 28.258333206176758,-80.740280151367188 28.478330612182617,-80.625274658203125 28.590555191040039,-80.663894653320312 28.258333206176758)),((-90.872650146484375 29.046133041381836,-90.950393676757813 29.060003280639648,-90.923614501953125 29.060556411743164,-90.872650146484375 29.046133041381836)),((-90.739166259765625 29.045000076293945,-90.758346557617188 29.048608779907227,-90.642501831054688 29.073331832885742,-90.739166259765625 29.045000076293945)),((-90.335556030273438 29.057222366333008,-90.2852783203125 29.08305549621582,-90.29833984375 29.06694221496582,-90.335556030273438 29.057222366333008)),((-89.97528076171875 29.242773056030273,-90.031112670898438 29.211942672729492,-89.955001831054688 29.268056869506836,-89.97528076171875 29.242773056030273)),((-89.928329467773438 29.27861213684082,-89.935272216796875 29.287500381469727,-89.907501220703125 29.302221298217773,-89.928329467773438 29.27861213684082)),((-89.860000610351563 29.310277938842773,-89.893890380859375 29.323053359985352,-89.869720458984375 29.335275650024414,-89.860000610351563 29.310277938842773)),((-95.111114501953125 29.098054885864258,-94.821395874023438 29.33860969543457,-94.78472900390625 29.308053970336914,-95.111114501953125 29.098054885864258)),((-89.17054557800293 29.473051071166992,-89.219161987304688 29.464719772338867,-89.156951904296875 29.492494583129883,-89.17054557800293 29.473051071166992)),((-89.601104736328125 29.513887405395508,-89.618331909179688 29.538331985473633,-89.590286254882813 29.560556411743164,-89.565826416015625 29.554719924926758,-89.562210083007813 29.521112442016602,-89.601104736328125 29.513887405395508)),((-89.080291748046875 29.521387100219727,-89.078887939453125 29.545553207397461,-89.037216186523438 29.573610305786133,-89.080291748046875 29.521387100219727)),((-91.786666870117188 29.486108779907227,-92.034439086914062 29.591665267944336,-91.85638427734375 29.63499641418457,-91.786666870117188 29.486108779907227)),((-85.111114501953125 29.632219314575195,-85.198043823242188 29.685274124145508,-85.081680297851562 29.679162979125977,-85.111114501953125 29.632219314575195)),((-89.428604125976563 29.692773818969727,-89.468612670898437 29.728609085083008,-89.422500610351563 29.722772598266602,-89.428604125976563 29.692773818969727)),((-84.9727783203125 29.608888626098633,-85.095001220703125 29.62388801574707,-84.692214965820313 29.758333206176758,-84.9727783203125 29.608888626098633)),((-89.424163818359375 29.74083137512207,-89.4888916015625 29.73805046081543,-89.491104125976563 29.793054580688477,-89.424163818359375 29.74083137512207)),((-89.2852783203125 29.771387100219727,-89.3416748046875 29.803888320922852,-89.275558471679688 29.809164047241211,-89.2852783203125 29.771387100219727)),((-84.638900756835938 29.77833366394043,-84.667221069335937 29.776945114135742,-84.57342529296875 29.819997787475586,-84.638900756835938 29.77833366394043)),((-88.845840454101563 29.776388168334961,-88.868743896484375 30.060606002807617,-88.805831909179688 29.90638542175293,-88.845840454101563 29.776388168334961)),((-89.317779541015625 30.040834426879883,-89.346389770507813 30.059442520141602,-89.18499755859375 30.166666030883789,-89.317779541015625 30.040834426879883)),((-88.437774658203125 30.206106185913086,-88.500564575195313 30.21888542175293,-88.428054809570313 30.212774276733398,-88.437774658203125 30.206106185913086)),((-88.552215576171875 30.214719772338867,-88.754180908203125 30.244718551635742,-88.526397705078125 30.223051071166992,-88.552215576171875 30.214719772338867)),((-89.08111572265625 30.19972038269043,-89.0916748046875 30.216665267944336,-89.060516357421875 30.246675491333008,-89.08111572265625 30.19972038269043)),((-88.0947265625 30.241106033325195,-88.3125 30.23277473449707,-88.107772827148438 30.273611068725586,-88.0947265625 30.241106033325195)),((-86.5291748046875 30.40083122253418,-87.292221069335937 30.33277702331543,-86.7630615234375 30.404996871948242,-86.5291748046875 30.40083122253418)),((-118.40695190429687 32.816667556762695,-118.59249877929687 33.046945571899414,-118.36916351318359 32.854715347290039,-118.40695190429687 32.816667556762695)),((-79.36500358581543 33.003053665161133,-79.361114501953125 33.049997329711914,-79.33612060546875 33.067216873168945,-79.36500358581543 33.003053665161133)),((-119.44415283203125 33.21666145324707,-119.56667327880859 33.282770156860352,-119.48056030273438 33.274438858032227,-119.44415283203125 33.21666145324707)),((-118.30194091796875 33.30943489074707,-118.44888305664062 33.327493667602539,-118.59221458435059 33.486658096313477,-118.30194091796875 33.30943489074707)),((-77.960830688476563 33.850000381469727,-78.016403198242188 33.874162673950195,-77.949722290039062 33.913049697875977,-77.960830688476563 33.850000381469727)),((-120.0352783203125 34.023881912231445,-120.10749816894531 33.905550003051758,-120.22609710693359 34.006105422973633,-120.0352783203125 34.023881912231445)),((-120.29778289794922 34.028604507446289,-120.43804931640625 34.036943435668945,-120.3638916015625 34.065546035766602,-120.29778289794922 34.028604507446289)),((-119.86805725097656 34.084161758422852,-119.51363372802734 34.04277229309082,-119.788330078125 33.96721076965332,-119.86805725097656 34.084161758422852)),((-76.5352783203125 34.635553359985352,-76.65472412109375 34.686105728149414,-76.559158325195313 34.664995193481445,-76.5352783203125 34.635553359985352)),((-76.6824951171875 34.702219009399414,-77.098052978515625 34.650545120239258,-76.931106567382812 34.691377639770508,-76.6824951171875 34.702219009399414)),((-76.531951904296875 34.585824966430664,-76.42083740234375 34.775827407836914,-76.199722290039063 34.941659927368164,-76.531951904296875 34.585824966430664)),((-76.067779541015625 35.039438247680664,-76.131103515625 35.00193977355957,-76.039443969726563 35.061105728149414,-76.067779541015625 35.039438247680664)),((-76.010833740234375 35.074167251586914,-75.981109619140625 35.114999771118164,-75.766952514648437 35.193880081176758,-76.010833740234375 35.074167251586914)),((-75.5272216796875 35.235551834106445,-75.653610229492188 35.225549697875977,-75.51251220703125 35.777215957641602,-75.5272216796875 35.235551834106445)),((-75.61944580078125 35.821382522583008,-75.72332763671875 35.941659927368164,-75.66583251953125 35.926942825317383,-75.61944580078125 35.821382522583008)),((-75.906112670898437 37.112497329711914,-75.898895263671875 37.136941909790039,-75.87249755859375 37.149164199829102,-75.906112670898437 37.112497329711914)),((-75.788330078125 37.238046646118164,-75.837509155273438 37.22776985168457,-75.7852783203125 37.298608779907227,-75.788330078125 37.238046646118164)),((-75.6966552734375 37.402772903442383,-75.710830688476563 37.390275955200195,-75.6683349609375 37.460275650024414,-75.6966552734375 37.402772903442383)),((-121.8013916015625 38.055269241333008,-121.82000732421875 38.068056106567383,-121.79638671875 38.066667556762695,-121.8013916015625 38.055269241333008)),((-75.354171752929688 37.866662979125977,-75.384170532226562 37.872217178344727,-75.121109008789063 38.263055801391602,-75.354171752929688 37.866662979125977)),((-74.329452514648438 39.421663284301758,-74.394454956054687 39.38249397277832,-74.44415283203125 39.406938552856445,-74.376251220703125 39.420743942260742,-74.348052978515625 39.474435806274414,-74.329452514648438 39.421663284301758)),((-74.2469482421875 39.525552749633789,-74.099990844726563 39.750833511352539,-74.138336181640625 39.659433364868164,-74.2469482421875 39.525552749633789)),((-74.220001220703125 40.511667251586914,-74.17694091796875 40.641939163208008,-74.062774658203125 40.639436721801758,-74.220001220703125 40.511667251586914)),((-73.22332763671875 40.635271072387695,-73.294723510742188 40.633882522583008,-72.76666259765625 40.766107559204102,-73.22332763671875 40.635271072387695)),((-72.262222290039063 41.125268936157227,-72.621109008789063 40.913049697875977,-71.856109619140625 41.069162368774414,-73.582778930664063 40.596101760864258,-74.032501220703125 40.625825881958008,-72.262222290039063 41.125268936157227)),((-69.9949951171875 41.32805061340332,-69.993881225585937 41.250276565551758,-70.234161376953125 41.283609390258789,-69.9949951171875 41.32805061340332)),((-70.506393432617187 41.357217788696289,-70.838058471679688 41.359994888305664,-70.617218017578125 41.473878860473633,-70.506393432617187 41.357217788696289)),((-71.297500610351563 41.45860481262207,-71.35833740234375 41.459161758422852,-71.222503662109375 41.65416145324707,-71.297500610351563 41.45860481262207)),((-68.803329467773437 44.048051834106445,-68.898056030273437 44.123880386352539,-68.764450073242188 44.094995498657227,-68.803329467773437 44.048051834106445)),((-68.650833129882812 44.168886184692383,-68.721389770507813 44.228876113891602,-68.668060302734375 44.285272598266602,-68.650833129882812 44.168886184692383)),((-68.320846557617188 44.237215042114258,-68.428329467773437 44.31999397277832,-68.2630615234375 44.452775955200195,-68.1683349609375 44.345544815063477,-68.320846557617188 44.237215042114258)),((-123.93804931640625 46.431108474731445,-123.94915771484375 46.431108474731445,-123.98306274414062 46.469156265258789,-123.97250366210937 46.515275955200195,-123.93804931640625 46.431108474731445)),((-122.84306335449219 47.206941604614258,-122.9022216796875 47.297494888305664,-122.84555053710937 47.312494277954102,-122.84306335449219 47.206941604614258)),((-122.48222351074219 47.34971809387207,-122.4505615234375 47.518327713012695,-122.381103515625 47.394716262817383,-122.48222351074219 47.34971809387207)),((-122.50473022460937 48.309717178344727,-122.37222290039062 47.919443130493164,-122.75778198242187 48.233880996704102,-122.50473022460937 48.309717178344727)),((-122.81667327880859 48.416940689086914,-122.93611145019531 48.457773208618164,-122.87666320800781 48.564157485961914,-122.81667327880859 48.416940689086914)),((-123.0 48.446100234985352,-123.17832946777344 48.592218399047852,-122.99500274658203 48.529718399047852,-123.0 48.446100234985352)),((-122.92250061035156 48.711664199829102,-122.74916076660156 48.651384353637695,-123.01027679443359 48.603609085083008,-122.92250061035156 48.711664199829102)),((-123.05332946777344 48.973878860473633,-123.09375 48.99943733215332,-123.03431701660156 48.99943733215332,-123.05332946777344 48.973878860473633)),((-95.07806396484375 49.359163284301758,-94.6058349609375 48.724435806274414,-92.95306396484375 48.623323440551758,-91.4183349609375 48.041109085083008,-90.868606567382813 48.237497329711914,-89.356658935546875 47.979715347290039,-88.368057250976563 48.312211990356445,-84.856948852539063 46.902215957641602,-84.56500244140625 46.466386795043945,-84.126388549804687 46.531938552856445,-83.958892822265625 46.071664810180664,-83.577499389648438 46.10527229309082,-83.5977783203125 45.827219009399414,-82.543060302734375 45.355829238891602,-82.130279541015625 43.585268020629883,-82.521392822265625 42.61888313293457,-83.168609619140625 42.046106338500977,-82.6966552734375 41.683877944946289,-78.9869384765625 42.81999397277832,-79.184722900390625 43.465547561645508,-78.724716186523438 43.629434585571289,-76.80194091796875 43.633607864379883,-74.990829467773438 44.986658096313477,-70.87860107421875 45.238603591918945,-69.232498168945313 47.471376419067383,-67.794998168945312 47.06999397277832,-67.799163818359375 45.701105117797852,-67.20654296875 45.183038711547852,-66.968887329101563 44.831110000610352,-67.186935424804687 44.661935806274414,-67.551101684570313 44.666101455688477,-67.565277099609375 44.550271987915039,-67.775283813476562 44.546945571899414,-68.047500610351563 44.346940994262695,-68.108612060546875 44.460275650024414,-68.321151733398437 44.465883255004883,-68.559158325195313 44.418886184692383,-68.547500610351563 44.317773818969727,-68.615829467773437 44.30638313293457,-68.795272827148438 44.579721450805664,-69.0675048828125 44.063325881958008,-69.721939086914063 43.785829544067383,-69.773330688476562 44.079164505004883,-69.823898315429688 43.714441299438477,-70.172500610351563 43.780550003051758,-70.729171752929687 43.122766494750977,-70.58056640625 42.651933670043945,-71.044448852539062 42.311105728149414,-70.324722290039062 41.711381912231445,-70.011123657226563 41.797220230102539,-70.078887939453125 42.062211990356445,-69.936386108398437 41.669443130493164,-71.185821533203125 41.46666145324707,-71.111114501953125 41.795000076293945,-71.391387939453125 41.81193733215332,-71.505279541015625 41.366937637329102,-72.906387329101563 41.286111831665039,-73.997489929199219 40.713460922241211,-73.9566650390625 41.305269241333008,-74.2691650390625 40.474710464477539,-73.952224731445312 40.299997329711914,-74.076400756835938 39.776941299438477,-74.053878784179687 40.057497024536133,-74.150283813476562 39.704996109008789,-74.405563354492188 39.516107559204102,-74.462593078613281 39.42106819152832,-74.415557861328125 39.35527229309082,-74.955001831054687 38.924165725708008,-74.89277458190918 39.16777229309082,-75.5574951171875 39.618051528930664,-75.028518676757812 40.012308120727539,-75.588607788085938 39.648881912231445,-75.04388427734375 38.421663284301758,-75.960830688476562 37.152215957641602,-75.64404296875 37.961175918579102,-75.880828857421875 37.949434280395508,-75.838058471679688 38.398881912231445,-76.24249267578125 38.366937637329102,-75.9566650390625 38.64860725402832,-76.360000610351563 38.857217788696289,-75.831680297851563 39.577493667602539,-76.618606567382812 39.254167556762695,-76.3760986328125 38.363611221313477,-76.666107177734375 38.480546951293945,-76.30999755859375 38.046388626098633,-77.24444580078125 38.398332595825195,-77.061111450195313 38.905267715454102,-77.32000732421875 38.345270156860352,-76.241668701171875 37.904993057250977,-76.353607177734375 37.618600845336914,-77.133895874023438 38.172769546508789,-76.286666870117188 37.567499160766602,-76.381103515625 37.273881912231445,-76.682769775390625 37.429719924926758,-76.26806640625 37.078882217407227,-77.232223510742188 37.296388626098633,-75.989990234375 36.913881301879883,-75.5291748046875 35.80388069152832,-75.938888549804688 36.71666145324707,-75.785552978515625 36.06999397277832,-76.195541381835938 36.31999397277832,-76.06304931640625 36.153322219848633,-76.656661987304688 36.031106948852539,-76.70611572265625 36.264162063598633,-76.730560302734375 35.939432144165039,-76.070846557617188 35.991937637329102,-76.0352783203125 35.649995803833008,-75.853607177734375 35.974992752075195,-75.72027587890625 35.81443977355957,-76.149169921875 35.336938858032227,-77.050827026367188 35.530275344848633,-76.468887329101563 35.271661758422852,-76.761398315429688 34.987771987915039,-77.076400756835938 35.156099319458008,-76.944442749023438 34.977487564086914,-76.335830688476562 34.886941909790039,-77.428878784179688 34.741937637329102,-77.930831909179688 33.927774429321289,-77.961669921875 34.158601760864258,-78.013626098632812 33.891939163208008,-78.827499389648437 33.73027229309082,-79.196441650390625 33.278940200805664,-79.1885986328125 33.436380386352539,-79.271392822265625 33.373323440551758,-79.205841064453125 33.165544509887695,-79.371719360351563 33.05894660949707,-79.381942749023438 33.009721755981445,-80.671661376953125 32.521661758422852,-80.46722412109375 32.315828323364258,-80.836944580078125 32.516664505004883,-80.669998168945313 32.21415901184082,-81.4969482421875 31.125555038452148,-81.255279541015625 29.796667098999023,-80.552490234375 28.524999618530273,-80.4466552734375 27.864442825317383,-80.602218627929688 28.607500076293945,-80.844161987304688 28.790555953979492,-80.755569458007813 28.415830612182617,-80.0333251953125 26.786664962768555,-80.39862060546875 25.184720993041992,-81.088058471679688 25.11555290222168,-80.915283203125 25.25139045715332,-81.336669921875 25.804998397827148,-81.736587524414063 25.959444046020508,-81.970054626464844 26.482831954956055,-81.777786254882813 26.710554122924805,-82.064163208007812 26.545000076293945,-82.017227172851563 26.964719772338867,-82.302780151367188 26.837221145629883,-82.6552734375 27.461664199829102,-82.422500610351563 27.917497634887695,-82.691375732421875 28.032220840454102,-82.722503662109375 27.656942367553711,-82.85333251953125 27.855276107788086,-82.631103515625 28.88499641418457,-83.669448852539063 29.906106948852539,-84.207504272460938 30.105554580688477,-85.354171752929688 29.676664352416992,-85.633941650390625 30.104440689086914,-85.392227172851562 30.049444198608398,-86.263336181640625 30.496664047241211,-88.02362060546875 30.219442367553711,-87.756393432617188 30.285276412963867,-88.020278930664063 30.701108932495117,-88.132766723632812 30.314443588256836,-90.419723510742188 30.198331832885742,-89.667221069335938 30.167776107788086,-89.658050537109375 29.87388801574707,-89.399444580078125 30.050832748413086,-89.753341674804688 29.630830764770508,-89.6763916015625 29.523889541625977,-89.187210083007813 29.339719772338867,-89.008346557617188 29.176942825317383,-89.404998779296875 28.926664352416992,-89.272781372070313 29.155832290649414,-90.178329467773438 29.572500228881836,-90.2066650390625 29.091943740844727,-91.2469482421875 29.24083137512207,-91.8416748046875 29.830278396606445,-92.308334350585937 29.53972053527832,-93.840286254882813 29.704164505004883,-93.84527587890625 29.98805046081543,-93.857498168945313 29.676107406616211,-94.772506713867188 29.363885879516602,-94.475830078125 29.56138801574707,-95.059432983398438 29.71888542175293,-94.8880615234375 29.375555038452148,-94.902786254882813 29.314443588256836,-95.093887329101563 29.177774429321289,-95.140838623046875 29.057500839233398,-96.212783813476562 28.485551834106445,-95.985824584960938 28.649164199829102,-96.641677856445313 28.719717025756836,-96.398345947265625 28.43610954284668,-96.803604125976563 28.473051071166992,-97.184722900390625 27.827497482299805,-97.520553588867187 27.866388320922852,-97.411117553710938 27.327497482299805,-97.773895263671875 27.458887100219727,-97.42388916015625 27.267499923706055,-97.559432983398438 26.836111068725586,-97.140739440917969 25.966428756713867,-99.104736328125 26.434999465942383,-99.5050048828125 27.570276260375977,-101.40501403808594 29.77277946472168,-102.30584716796875 29.889444351196289,-103.375 29.023611068725586,-104.54000854492187 29.671110153198242,-104.90055847167969 30.572778701782227,-106.40084838867187 31.750276565551758,-108.2086181640625 31.783334732055664,-108.20834350585937 31.33305549621582,-111.04583740234375 31.33305549621582,-113.05288696289062 31.971071243286133,-114.80982971191406 32.506990432739258,-114.71909332275391 32.71845817565918,-117.12237358093262 32.535333633422852,-117.48082733154297 33.327493667602539,-118.53472900390625 34.05082893371582,-120.62026977539062 34.570833206176758,-120.61416625976562 35.135828018188477,-121.86749267578125 36.312494277954102,-121.79638671875 36.879434585571289,-122.48805236816406 37.518327713012695,-122.38694763183594 37.816667556762695,-122.00583457946777 37.471376419067383,-122.39334106445312 37.957773208618164,-122.24054718017578 38.059160232543945,-121.41999816894531 38.012773513793945,-121.57668304443359 38.11583137512207,-121.73610687255859 38.044717788696289,-122.01862335205078 38.148115158081055,-122.10973358154297 38.061380386352539,-122.36528015136719 38.155550003051758,-122.49137878417969 37.827775955200195,-122.9970703125 38.005109786987305,-122.96456146240234 38.239614486694336,-122.8035945892334 38.088045120239258,-123.10472106933594 38.46110725402832,-123.70361328125 38.932497024536133,-123.77583312988281 39.71721076965332,-124.33222961425781 40.266107559204102,-124.03999328613281 41.431108474731445,-124.52443695068359 42.866106033325195,-124.13834381103516 43.371103286743164,-123.95195007324219 46.181108474731445,-123.16357421875 46.195192337036133,-124.0 46.323610305786133,-124.04277038574219 46.658044815063477,-124.01583862304688 46.654436111450195,-123.989990234375 46.397775650024414,-123.94167327880859 46.391107559204102,-123.7525634765625 46.693071365356445,-124.09750366210937 46.861383438110352,-123.79666137695312 46.976099014282227,-124.16194152832031 46.941102981567383,-124.71584320068359 48.395273208618164,-122.75110626220703 48.161104202270508,-122.63027954101562 47.915826797485352,-123.14750671386719 47.368600845336914,-122.83640289306641 47.439157485961914,-123.10249328613281 47.399721145629883,-122.5655517578125 47.938043594360352,-122.45472717285156 47.774438858032227,-122.54998779296875 47.282770156860352,-122.61916351318359 47.420549392700195,-122.75862121582031 47.189714431762695,-122.79750061035156 47.395273208618164,-123.06861877441406 47.15165901184082,-122.87860107421875 47.064157485961914,-122.30972290039062 47.401102066040039,-122.37917327880859 48.291666030883789,-122.70445251464844 48.486108779907227,-122.4375 48.598047256469727,-122.76029968261719 48.99943733215332,-95.1541748046875 48.99943733215332,-95.07806396484375 49.359163284301758),(-122.49582672119141 47.595544815063477,-122.50334167480469 47.715272903442383,-122.58168029785156 47.671663284301758,-122.49582672119141 47.595544815063477),(-123.9385986328125 45.536661148071289,-123.91694641113281 45.56443977355957,-123.93443298339844 45.558328628540039,-123.9385986328125 45.536661148071289),(-77.851669311523438 34.111108779907227,-77.820846557617188 34.175271987915039,-77.8558349609375 34.149164199829102,-77.851669311523438 34.111108779907227)),((-179.10528564453125 51.213052749633789,-179.14199829101563 51.268594741821289,-179.08724975585937 51.290834426879883,-179.10528564453125 51.213052749633789)),((-178.96249389648437 51.311662673950195,-178.94998168945312 51.396936416625977,-178.90032958984375 51.354997634887695,-178.96249389648437 51.311662673950195)),((178.99301338195801 51.57499885559082,179.47134590148926 51.367494583129883,178.63638496398926 51.637773513793945,178.99301338195801 51.57499885559082)),((-178.7769775390625 51.745538711547852,-178.842529296875 51.819154739379883,-178.7427978515625 51.807771682739258,-178.7769775390625 51.745538711547852)),((178.39221382141113 51.763055801391602,178.22302436828613 51.830827713012695,178.32995796203613 51.814996719360352,178.39221382141113 51.763055801391602)),((-176.0128173828125 51.830270767211914,-176.14334106445312 51.774438858032227,-176.21945190429687 51.831384658813477,-176.0128173828125 51.830270767211914)),((-176.33642578125 51.721658706665039,-176.41448974609375 51.854997634887695,-176.2769775390625 51.860269546508789,-176.33642578125 51.721658706665039)),((-177.81390380859375 51.719705581665039,-177.94998168945312 51.606378555297852,-178.21807861328125 51.87193489074707,-177.81390380859375 51.719705581665039)),((-176.55059814453125 51.905824661254883,-176.42974853515625 51.730264663696289,-176.97503662109375 51.595819473266602,-176.55059814453125 51.905824661254883)),((-175.95111083984375 51.868875503540039,-176.09307861328125 51.885263442993164,-176.001953125 51.908876419067383,-175.95111083984375 51.868875503540039)),((-177.12222290039062 51.784433364868164,-177.7044677734375 51.700830459594727,-177.15725708007812 51.938325881958008,-177.12222290039062 51.784433364868164)),((-175.72503662109375 51.930551528930664,-175.72918701171875 51.966104507446289,-175.65750122070313 51.956941604614258,-175.72503662109375 51.930551528930664)),((-175.864990234375 51.96360969543457,-175.94668579101562 51.97886848449707,-175.80194091796875 51.982202529907227,-175.864990234375 51.96360969543457)),((178.53692817687988 51.893610000610352,178.46829414367676 51.984720230102539,178.60608100891113 51.947771072387695,178.53692817687988 51.893610000610352)),((179.73745918273926 51.903047561645508,179.48608589172363 51.97221565246582,179.65860176086426 52.024713516235352,179.73745918273926 51.903047561645508)),((177.68469429016113 52.079996109008789,177.60495185852051 51.92027473449707,177.24106025695801 51.87693977355957,177.68469429016113 52.079996109008789)),((-176.0372314453125 51.964433670043945,-176.19085693359375 52.059991836547852,-176.04611206054687 52.10222053527832,-176.0372314453125 51.964433670043945)),((-173.515869140625 52.106935501098633,-172.95559692382812 52.085542678833008,-174.05697631835937 52.120271682739258,-173.515869140625 52.106935501098633)),((175.96109199523926 52.335550308227539,175.88189888000488 52.372491836547852,175.98773384094238 52.353609085083008,175.96109199523926 52.335550308227539)),((-172.38836669921875 52.28972053527832,-172.6280517578125 52.258325576782227,-172.43832397460938 52.391931533813477,-172.38836669921875 52.28972053527832)),((-173.99530029296875 52.291101455688477,-175.33584594726562 52.014154434204102,-174.18447875976562 52.416940689086914,-173.99530029296875 52.291101455688477)),((173.78775215148926 52.501108169555664,173.73550605773926 52.353326797485352,173.37524604797363 52.399438858032227,173.78775215148926 52.501108169555664)),((-171.23526000976562 52.450830459594727,-171.30804443359375 52.499429702758789,-171.21722412109375 52.51054573059082,-171.23526000976562 52.450830459594727)),((-170.60556030273438 52.590829849243164,-170.8416748046875 52.554155349731445,-170.6761474609375 52.694154739379883,-170.60556030273438 52.590829849243164)),((174.17776679992676 52.70555305480957,174.07412910461426 52.711381912231445,174.10217475891113 52.741106033325195,174.17776679992676 52.70555305480957)),((-170.11474609375 52.718324661254883,-170.17999267578125 52.783876419067383,-170.05499267578125 52.765268325805664,-170.11474609375 52.718324661254883)),((-169.675048828125 52.817773818969727,-170.0130615234375 52.818330764770508,-169.78115844726562 52.885263442993164,-169.675048828125 52.817773818969727)),((-170.04083251953125 52.853044509887695,-170.12747192382812 52.88859748840332,-169.99389457702637 52.901933670043945,-170.04083251953125 52.853044509887695)),((173.29998970031738 52.882211685180664,172.92859077453613 52.74388313293457,172.47635078430176 52.924440383911133,173.29998970031738 52.882211685180664)),((-169.72445678710937 52.943315505981445,-169.75250244140625 53.026376724243164,-169.67669677734375 53.03166389465332,-169.72445678710937 52.943315505981445)),((-168.24359130859375 53.251100540161133,-169.08670043945312 52.82805061340332,-168.35195922851563 53.475549697875977,-167.79531860351562 53.495538711547852,-168.24359130859375 53.251100540161133)),((-166.20999145507812 53.705270767211914,-166.2933349609375 53.793054580688477,-166.09002685546875 53.839433670043945,-166.20999145507812 53.705270767211914)),((-166.60748291015625 53.829721450805664,-166.21502685546875 53.928323745727539,-166.75283813476562 53.446382522583008,-167.84637451171875 53.308595657348633,-166.80389404296875 53.648874282836914,-167.02420043945312 53.955545425415039,-166.60748291015625 53.829721450805664)),((-165.251708984375 54.07609748840332,-165.29779052734375 54.037492752075195,-165.48193359375 54.074434280395508,-165.251708984375 54.07609748840332)),((-164.939208984375 54.12693977355957,-164.965576171875 54.075273513793945,-165.221923828125 54.089990615844727,-164.939208984375 54.12693977355957)),((-165.69696044921875 54.084718704223633,-166.12307739257812 54.11638069152832,-165.93832397460937 54.220544815063477,-165.69696044921875 54.084718704223633)),((-165.56057739257812 54.110269546508789,-165.68197631835937 54.238046646118164,-165.48641967773437 54.288049697875977,-165.56057739257812 54.110269546508789)),((-162.40057373046875 54.369440078735352,-162.48971557617187 54.40971565246582,-162.36831665039062 54.388330459594727,-162.40057373046875 54.369440078735352)),((-162.54388427734375 54.381380081176758,-162.78640747070312 54.414712905883789,-162.83111572265625 54.494157791137695,-162.54388427734375 54.381380081176758)),((-132.61944580078125 54.75444221496582,-132.7811279296875 54.925271987915039,-132.61886596679687 54.89610481262207,-132.61944580078125 54.75444221496582)),((-159.29501342773437 54.866937637329102,-159.33612060546875 54.927217483520508,-159.20693969726562 54.924440383911133,-159.29501342773437 54.866937637329102)),((-163.41363525390625 54.891107559204102,-163.3699951171875 54.784997940063477,-163.14501953125 54.766107559204102,-163.04861450195312 54.668329238891602,-164.95220947265625 54.575830459594727,-164.43276977539062 54.930551528930664,-163.41363525390625 54.891107559204102)),((-162.29306030273437 54.834161758422852,-162.4344482421875 54.931108474731445,-162.23275756835937 54.965272903442383,-162.29306030273437 54.834161758422852)),((-131.32583618164062 54.856943130493164,-131.48275756835937 54.930826187133789,-131.23638916015625 54.995271682739258,-131.32583618164062 54.856943130493164)),((-159.43417358398437 54.940546035766602,-159.47915458679199 55.014162063598633,-159.34942626953125 55.049165725708008,-159.43417358398437 54.940546035766602)),((-161.73971557617187 55.056100845336914,-161.90695190429687 55.151384353637695,-161.64138793945312 55.11332893371582,-161.73971557617187 55.056100845336914)),((-132.67471313476562 55.033052444458008,-132.86471557617187 55.029993057250977,-132.85333251953125 55.159433364868164,-132.67471313476562 55.033052444458008)),((-131.42584228515625 55.21110725402832,-131.37222290039062 55.013612747192383,-131.61749267578125 55.011110305786133,-131.42584228515625 55.21110725402832)),((-132.8358154296875 54.889162063598633,-132.67999267578125 54.666101455688477,-133.195556640625 55.23027229309082,-132.8358154296875 54.889162063598633)),((-159.51947021484375 55.064157485961914,-159.65557861328125 55.054994583129883,-159.5352783203125 55.247491836547852,-159.51947021484375 55.064157485961914)),((-161.56195068359375 55.218050003051758,-161.70611572265625 55.204713821411133,-161.53363037109375 55.252779006958008,-161.56195068359375 55.218050003051758)),((-159.84332275390625 55.13249397277832,-160.24472045898437 54.901384353637695,-159.8822021484375 55.290834426879883,-159.84332275390625 55.13249397277832)),((-133.24972534179687 55.209161758422852,-133.439453125 55.301935195922852,-133.29666137695312 55.33055305480957,-133.24972534179687 55.209161758422852)),((-160.33306884765625 55.248048782348633,-160.528076171875 55.320550918579102,-160.34695434570312 55.368600845336914,-160.33306884765625 55.248048782348633)),((-160.695556640625 55.399995803833008,-160.461669921875 55.187211990356445,-160.81640625 55.118326187133789,-160.695556640625 55.399995803833008)),((-133.59832763671875 55.233880996704102,-133.65362358093262 55.369440078735352,-133.44696044921875 55.410272598266602,-133.59832763671875 55.233880996704102)),((-131.72500610351562 55.134721755981445,-131.84609985351562 55.419992446899414,-131.61663818359375 55.283609390258789,-131.72500610351562 55.134721755981445)),((-163.14639282226562 55.393327713012695,-163.19473266601562 55.421937942504883,-163.136962890625 55.436105728149414,-163.14639282226562 55.393327713012695)),((-160.17889404296875 55.39610481262207,-160.34194946289062 55.416940689086914,-160.24972534179687 55.463052749633789,-160.17889404296875 55.39610481262207)),((-133.5050048828125 55.427217483520508,-133.60165405273437 55.447488784790039,-133.42138671875 55.483606338500977,-133.5050048828125 55.427217483520508)),((-133.57806396484375 55.497774124145508,-133.758056640625 55.487215042114258,-133.70248413085937 55.551385879516602,-133.57806396484375 55.497774124145508)),((-133.28945922851563 55.475824356079102,-133.43667602539062 55.527490615844727,-133.308349609375 55.554712295532227,-133.28945922851563 55.475824356079102)),((-133.50558471679687 55.693323135375977,-133.67779541015625 55.78416633605957,-133.29974365234375 55.793611526489258,-133.50558471679687 55.693323135375977)),((-133.24221801757812 55.77665901184082,-133.32916259765625 55.87748908996582,-133.21554565429687 55.861940383911133,-133.24221801757812 55.77665901184082)),((-158.86416625976562 55.80388069152832,-158.832763671875 55.893884658813477,-158.709716796875 55.831384658813477,-158.86416625976562 55.80388069152832)),((-134.24972534179687 55.81944465637207,-134.33889770507812 55.918054580688477,-134.09664916992187 55.918329238891602,-134.24972534179687 55.81944465637207)),((-155.58029174804687 55.774438858032227,-155.739990234375 55.828607559204102,-155.56390380859375 55.918603897094727,-155.58029174804687 55.774438858032227)),((-133.8477783203125 55.847490310668945,-133.92721557617187 55.911935806274414,-133.8477783203125 55.935266494750977,-133.8477783203125 55.847490310668945)),((-131.05056762695312 55.799722671508789,-131.14279174804687 55.196939468383789,-131.461669921875 55.286111831665039,-131.348876953125 55.644998550415039,-131.52194213867187 55.293054580688477,-131.82223510742187 55.450273513793945,-131.68389892578125 55.833330154418945,-131.2650146484375 55.960824966430664,-131.05056762695312 55.799722671508789)),((-131.51947021484375 55.915544509887695,-131.57693481445312 55.931940078735352,-131.39944458007812 55.963884353637695,-131.51947021484375 55.915544509887695)),((-133.69528198242187 55.896387100219727,-133.67971801757813 56.066385269165039,-133.278076171875 56.139719009399414,-133.69528198242187 55.896387100219727)),((-133.93112182617187 56.288331985473633,-133.94805908203125 56.301935195922852,-133.92556762695312 56.298051834106445,-133.93112182617187 56.288331985473633)),((-133.48858642578125 56.336938858032227,-132.1441650390625 55.480546951293945,-132.5625 55.567773818969727,-131.98858642578125 55.264162063598633,-132.21859741210937 54.992494583129883,-131.96304321289062 55.025827407836914,-132.00390625 54.690546035766602,-132.64138793945312 55.250276565551758,-133.22250366210937 55.283052444458008,-132.86749267578125 55.353883743286133,-133.12860107421875 55.494714736938477,-132.90835571289062 55.628046035766602,-133.37222290039062 55.620546340942383,-133.135009765625 55.881105422973633,-133.25836181640625 56.152490615844727,-133.61721801757812 56.207498550415039,-133.48858642578125 56.336938858032227)),((-132.09445190429687 56.093324661254883,-132.31887817382812 55.912210464477539,-132.71694946289062 56.151384353637695,-132.41778564453125 56.350831985473633,-132.09445190429687 56.093324661254883)),((-132.81723022460938 56.233880996704102,-133.05776977539062 56.347490310668945,-132.63555908203125 56.434160232543945,-132.81723022460938 56.233880996704102)),((-132.50085258483887 56.353326797485352,-132.49386596679687 56.435823440551758,-132.38668823242187 56.39860725402832,-132.50085258483887 56.353326797485352)),((-132.13247680664062 56.345270156860352,-132.05612182617187 56.111383438110352,-132.37387084960937 56.484437942504883,-132.13247680664062 56.345270156860352)),((-153.95889282226562 56.502779006958008,-154.13446044921875 56.505556106567383,-153.87387084960937 56.553323745727539,-153.95889282226562 56.502779006958008)),((-156.99664306640625 56.555551528930664,-157.3297119140625 56.535829544067383,-157.25167846679687 56.581666946411133,-156.99664306640625 56.555551528930664)),((-132.3980712890625 56.58360481262207,-132.43499755859375 56.589715957641602,-132.37942504882813 56.600549697875977,-132.3980712890625 56.58360481262207)),((-154.48138427734375 56.60169792175293,-154.40280151367187 56.546663284301758,-154.7874755859375 56.414968490600586,-154.48138427734375 56.60169792175293)),((-154.21194458007812 56.498880386352539,-154.35247802734375 56.541666030883789,-154.08499145507812 56.608049392700195,-154.21194458007812 56.498880386352539)),((-169.67337036132812 56.608598709106445,-169.47137451171875 56.59221076965332,-169.7861328125 56.613885879516602,-169.67337036132812 56.608598709106445)),((-132.7730712890625 56.494714736938477,-132.87359619140625 56.796106338500977,-132.52890014648437 56.595270156860352,-132.7730712890625 56.494714736938477)),((-133.98748779296875 56.870828628540039,-133.90280151367187 56.753053665161133,-134.02471923828125 56.647218704223633,-133.83056640625 56.796106338500977,-133.69137573242187 56.59971809387207,-133.92056274414062 56.614160537719727,-133.84609985351562 56.290834426879883,-133.97320556640625 56.356103897094727,-133.97332763671875 56.081666946411133,-134.0655517578125 56.305826187133789,-134.123046875 55.995828628540039,-134.06527709960937 56.550546646118164,-134.40890502929687 56.829439163208008,-133.98748779296875 56.870828628540039)),((-133.31777954101563 56.99388313293457,-132.92501831054687 56.643327713012695,-133.3519287109375 56.838602066040039,-133.08193969726562 56.523881912231445,-133.5755615234375 56.433603286743164,-133.69696044921875 56.831941604614258,-133.89056396484375 56.896944046020508,-133.73611450195312 56.89305305480957,-134.01806640625 57.014719009399414,-133.31777954101563 56.99388313293457)),((-153.25335693359375 56.998331069946289,-153.40750122070312 57.072771072387695,-153.23416137695312 57.205827713012695,-152.883056640625 57.150270462036133,-153.25335693359375 56.998331069946289)),((-170.1661376953125 57.16331672668457,-170.4139404296875 57.174165725708008,-170.15057373046875 57.228326797485352,-170.1661376953125 57.16331672668457)),((-135.79583740234375 56.986383438110352,-135.71054077148437 57.323610305786133,-135.54611206054687 57.129434585571289,-135.79583740234375 56.986383438110352)),((-134.9375 57.358888626098633,-134.65362358093262 56.163049697875977,-135.67279052734375 57.351938247680664,-134.9375 57.358888626098633)),((-134.79251098632812 57.300271987915039,-134.97470092773437 57.41526985168457,-134.81362915039062 57.416940689086914,-134.79251098632812 57.300271987915039)),((-153.20889282226562 57.812494277954102,-153.53640747070312 57.934717178344727,-153.35333251953125 57.936380386352539,-153.26974487304687 57.899164199829102,-153.20889282226562 57.812494277954102)),((-152.35443115234375 57.890275955200195,-152.50335693359375 57.933053970336914,-152.417236328125 57.976381301879883,-152.35443115234375 57.890275955200195)),((-153.116943359375 57.94999885559082,-152.15139770507812 57.604440689086914,-153.02279663085937 57.473604202270508,-152.5958251953125 57.369989395141602,-153.16946411132812 57.345544815063477,-152.95611572265625 57.253885269165039,-153.26028442382812 57.22776985168457,-153.5 57.063882827758789,-153.73165893554687 57.059717178344727,-153.54998779296875 56.983049392700195,-153.97970581054687 56.738603591918945,-153.73776245117187 57.130823135375977,-154.47943115234375 57.120271682739258,-154.10110473632812 57.116388320922852,-154.29779052734375 56.848878860473633,-154.80111694335937 57.286111831665039,-154.20721435546875 57.666666030883789,-153.6280517578125 57.269441604614258,-153.88027954101562 57.64305305480957,-153.58111572265625 57.612497329711914,-153.9283447265625 57.811105728149414,-153.4969482421875 57.627214431762695,-153.31527709960937 57.725824356079102,-153.47915458679199 57.839433670043945,-153.21304321289062 57.788331985473633,-153.15057373046875 57.863885879516602,-153.04806518554687 57.827493667602539,-153.292236328125 58.001665115356445,-153.116943359375 57.94999885559082)),((-153.18527221679687 58.092493057250977,-152.88778686523437 57.991106033325195,-153.41806030273437 58.05888557434082,-153.18527221679687 58.092493057250977)),((-136.43722534179687 57.846384048461914,-136.48443603515625 58.093324661254883,-136.33056640625 58.010278701782227,-136.43722534179687 57.846384048461914)),((-135.74276733398437 58.256105422973633,-135.48248291015625 58.155550003051758,-135.707763671875 57.978326797485352,-134.9302978515625 58.028047561645508,-135.2047119140625 57.942216873168945,-135.01055908203125 57.776941299438477,-135.88751220703125 57.988603591918945,-135.29696655273437 57.731660842895508,-134.92166137695312 57.75694465637207,-134.84332275390625 57.462770462036133,-135.80416870117187 57.763330459594727,-135.54278564453125 57.47221565246582,-135.83084106445312 57.385828018188477,-136.4122314453125 57.815828323364258,-136.02972412109375 57.849161148071289,-136.35220336914063 58.219438552856445,-135.74276733398437 58.256105422973633)),((-151.84722900390625 58.169717788696289,-151.89666557312012 58.194154739379883,-151.83554077148437 58.26860237121582,-151.84722900390625 58.169717788696289)),((-134.45443725585937 58.313325881958008,-134.25973510742187 58.19499397277832,-134.68389892578125 58.298334121704102,-134.56695556640625 58.340829849243164,-134.45443725585937 58.313325881958008)),((-152.4091796875 58.365549087524414,-151.9727783203125 58.233049392700195,-153.23138427734375 58.169160842895508,-152.4091796875 58.365549087524414)),((-134.67471313476562 58.160547256469727,-134.16915893554687 58.15971565246582,-133.87582397460937 57.672769546508789,-134.28860473632812 58.077219009399414,-133.86026000976562 57.360551834106445,-134.48666381835937 57.025552749633789,-134.61331176757812 57.224992752075195,-134.31027221679687 57.33610725402832,-134.572509765625 57.489717483520508,-134.3497314453125 57.54277229309082,-134.65444946289062 57.598329544067383,-134.9566650390625 58.407770156860352,-134.67471313476562 58.160547256469727)),((-152.49386596679687 58.47221565246582,-152.66055297851562 58.543329238891602,-152.3458251953125 58.627214431762695,-152.49386596679687 58.47221565246582)),((-160.95693969726562 58.556940078735352,-161.11309814453125 58.655275344848633,-160.68722534179687 58.818330764770508,-160.95693969726562 58.556940078735352)),((-152.31332397460937 58.908327102661133,-152.36026000976562 58.916383743286133,-152.16140747070312 58.942216873168945,-152.31332397460937 58.908327102661133)),((-150.69168090820313 59.306657791137695,-150.77667236328125 59.328882217407227,-150.61663818359375 59.389719009399414,-150.69168090820313 59.306657791137695)),((-153.41140747070312 59.330278396606445,-153.55221557617187 59.364717483520508,-153.403076171875 59.406938552856445,-153.41140747070312 59.330278396606445)),((-150.3114013671875 59.420549392700195,-150.44027709960937 59.401102066040039,-150.29278564453125 59.463052749633789,-150.3114013671875 59.420549392700195)),((-144.58499145507812 59.810274124145508,-144.50390625 59.894441604614258,-144.20889282226562 60.005556106567383,-144.58499145507812 59.810274124145508)),((-148.1611328125 59.941102981567383,-148.24581909179687 59.94249153137207,-147.99221801757812 60.040277481079102,-148.1611328125 59.941102981567383)),((-148.02780151367187 59.946657180786133,-147.88333129882812 60.067216873168945,-147.81723022460937 60.068887710571289,-148.02780151367187 59.946657180786133)),((-148.11553955078125 59.99638557434082,-147.96722412109375 60.153047561645508,-147.87664794921875 60.103883743286133,-148.11553955078125 59.99638557434082)),((-148.03390502929687 60.189432144165039,-148.15139770507812 60.041940689086914,-148.30972290039062 60.029718399047852,-148.03390502929687 60.189432144165039)),((-147.8499755859375 59.776941299438477,-147.193603515625 60.353326797485352,-146.92333984375 60.309160232543945,-147.8499755859375 59.776941299438477)),((-147.71194458007812 60.376100540161133,-147.75973510742187 60.165544509887695,-147.90972900390625 60.234720230102539,-147.71194458007812 60.376100540161133)),((-148.07943725585937 60.282770156860352,-148.14251708984375 60.320550918579102,-147.98330688476562 60.383882522583008,-148.07943725585937 60.282770156860352)),((-166.10971069335937 60.39915657043457,-165.68142700195312 60.294717788696289,-165.55972290039062 59.923608779907227,-166.19305419921875 59.754434585571289,-167.41806030273437 60.189424514770508,-166.10971069335937 60.39915657043457)),((-146.3538818359375 60.407495498657227,-146.07888793945312 60.405267715454102,-146.72415161132812 60.374711990356445,-146.3538818359375 60.407495498657227)),((-145.12277221679687 60.307214736938477,-145.28195190429688 60.329996109008789,-145.08694458007813 60.416666030883789,-145.12277221679687 60.307214736938477)),((-172.52029418945312 60.388330459594727,-172.20697021484375 60.313043594360352,-173.05364990234375 60.497209548950195,-172.52029418945312 60.388330459594727)),((-151.95556640625 60.422769546508789,-151.95111083984375 60.512216567993164,-151.85638427734375 60.489717483520508,-151.95556640625 60.422769546508789)),((-146.2469482421875 60.454996109008789,-146.320556640625 60.494157791137695,-145.74972534179687 60.59471321105957,-146.2469482421875 60.454996109008789)),((-147.37277221679687 60.661661148071289,-147.47555541992187 60.688882827758789,-147.31390380859375 60.677492141723633,-147.37277221679687 60.661661148071289)),((-147.92556762695312 60.662210464477539,-148.00418090820312 60.726938247680664,-147.84609985351562 60.69999885559082,-147.92556762695312 60.662210464477539)),((-148.14083862304688 60.642221450805664,-148.21417236328125 60.75444221496582,-148.10861206054687 60.736383438110352,-148.14083862304688 60.642221450805664)),((-164.98831176757813 60.82249641418457,-165.01751708984375 60.87443733215332,-164.90362358093262 60.853609085083008,-164.98831176757813 60.82249641418457)),((-146.75335693359375 60.807214736938477,-146.83193969726562 60.836381912231445,-146.744140625 60.881380081176758,-146.75335693359375 60.807214736938477)),((-147.15084838867187 60.86027717590332,-147.31777954101562 60.884164810180664,-147.07528686523438 60.899164199829102,-147.15084838867187 60.86027717590332)),((-147.92889404296875 60.806940078735352,-148.133056640625 60.799722671508789,-148.10665893554687 60.912492752075195,-147.92889404296875 60.806940078735352)),((-170.31890869140625 63.254716873168945,-170.31585693359375 63.253877639770508,-170.29611206054687 63.238046646118164,-170.31890869140625 63.254716873168945)),((-170.31890869140625 63.254716873168945,-170.36221313476562 63.282495498657227,-170.34188842773437 63.271127700805664,-170.31890869140625 63.254716873168945)),((-170.46676635742187 63.334184646606445,-170.40390014648437 63.304437637329102,-170.48583984375 63.341104507446289,-170.46676635742187 63.334184646606445)),((-170.54364013671875 63.359712600708008,-170.49026489257812 63.341928482055664,-170.5511474609375 63.360551834106445,-170.54364013671875 63.359712600708008)),((-170.59500122070312 63.37193489074707,-170.58197021484375 63.368051528930664,-170.86325073242187 63.418512344360352,-170.59500122070312 63.37193489074707)),((-162.37747192382812 63.544443130493164,-162.70361328125 63.571664810180664,-162.4202880859375 63.63749885559082,-162.37747192382812 63.544443130493164)),((-171.465576171875 63.606660842895508,-170.30001831054687 63.694154739379883,-168.70086669921875 63.290544509887695,-169.6661376953125 62.943315505981445,-170.51889038085937 63.37803840637207,-170.856689453125 63.461938858032227,-171.46112060546875 63.314714431762695,-171.850830078125 63.508607864379883,-171.72695922851562 63.792215347290039,-171.465576171875 63.606660842895508)),((-166.6591796875 66.10331916809082,-166.443603515625 66.180818557739258,-166.16946411132812 66.221376419067383,-166.6591796875 66.10331916809082)),((-165.36444091796875 66.42637825012207,-165.4708251953125 66.414155960083008,-164.76223754882812 66.53831672668457,-165.36444091796875 66.42637825012207)),((-156.44696044921875 71.263612747192383,-155.58694458007812 71.16276741027832,-156.1824951171875 70.91832160949707,-155.97360229492187 70.755830764770508,-155.08749389648437 71.151384353637695,-154.24386596679687 70.779436111450195,-152.25250244140625 70.835268020629883,-152.49859619140625 70.649431228637695,-152.07611083984375 70.57499885559082,-152.62942504882812 70.55748176574707,-151.73248291015625 70.557207107543945,-151.96609497070313 70.44359016418457,-149.17471313476562 70.490816116333008,-144.95220947265625 69.968324661254883,-143.28057861328125 70.118318557739258,-141.00299072265625 69.642366409301758,-140.99554443359375 60.307214736938477,-139.06805419921875 60.35222053527832,-139.18890380859375 60.088884353637695,-137.5908203125 59.238603591918945,-137.47805786132812 58.90721321105957,-135.47360229492187 59.801935195922852,-133.42999267578125 58.459161758422852,-131.82415771484375 56.596940994262695,-130.01507568359375 55.909181594848633,-130.17471313476562 55.75444221496582,-129.99053955078125 55.28166389465332,-130.68612670898437 54.761941909790039,-131.00863647460938 55.004167556762695,-130.461669921875 55.327775955200195,-131.05612182617187 55.122766494750977,-130.6138916015625 55.296106338500977,-130.86416625976562 55.308603286743164,-131.01028442382812 56.106386184692383,-131.90057373046875 55.85527229309082,-131.75250244140625 55.807771682739258,-131.95498657226562 55.501108169555664,-132.1602783203125 55.578607559204102,-131.76974487304687 56.196939468383789,-132.7913818359375 57.088045120239258,-133.50836181640625 57.193605422973633,-133.06304931640625 57.348878860473633,-133.64056396484375 57.696382522583008,-133.00057983398437 57.51500129699707,-133.55694580078125 57.902490615844727,-133.12136840820312 57.857500076293945,-134.05499267578125 58.071939468383789,-133.7691650390625 58.518327713012695,-134.1541748046875 58.197771072387695,-134.510009765625 58.353883743286133,-134.76141357421875 58.382211685180664,-135.33526611328125 59.468324661254883,-135.30471801757812 59.08360481262207,-135.55056762695312 59.228876113891602,-135.08554077148437 58.233049392700195,-135.91555786132813 58.383050918579102,-136.06832885742187 58.817773818969727,-135.76947021484375 58.900270462036133,-136.1622314453125 59.033609390258789,-136.23471069335938 58.750833511352539,-137.05667114257812 59.068605422973633,-137.12554931640625 58.821939468383789,-136.5736083984375 58.838602066040039,-136.02749633789063 58.387216567993164,-136.6541748046875 58.215272903442383,-138.443603515625 59.191659927368164,-139.71054077148437 59.495828628540039,-139.49386596679687 59.982210159301758,-139.28555297851562 59.571382522583008,-138.89279174804687 59.806657791137695,-139.5 60.033052444458008,-140.40335083007813 59.69804573059082,-141.37664794921875 59.866388320922852,-141.39083862304687 60.138605117797852,-143.92333984375 59.994157791137695,-144.9364013671875 60.301660537719727,-144.61138916015625 60.715547561645508,-145.29415893554687 60.350275039672852,-145.85943603515625 60.491662979125977,-145.62582397460937 60.671937942504883,-146.26113891601562 60.648050308227539,-146.04083251953125 60.798608779907227,-146.65335083007812 60.699716567993164,-146.1241455078125 60.843324661254883,-146.75668334960937 60.955270767211914,-146.30084228515625 61.130823135375977,-147.366943359375 60.887773513793945,-147.54666137695312 61.154436111450195,-147.86526489257812 60.832498550415039,-148.05221557617188 60.949716567993164,-147.7197265625 61.278047561645508,-148.69973754882812 60.78972053527832,-148.197509765625 60.626100540161133,-148.68417358398437 60.448328018188477,-147.93695068359375 60.462213516235352,-148.43112182617187 60.192766189575195,-148.0977783203125 60.207498550415039,-148.31777954101562 60.168886184692383,-148.43582153320312 59.948877334594727,-149.2861328125 59.86888313293457,-149.41696166992187 60.118326187133789,-149.52584838867187 59.71666145324707,-149.73193359375 59.960550308227539,-149.74359130859375 59.658601760864258,-150.0341796875 59.796388626098633,-149.91583251953125 59.714715957641602,-150.01364135742187 59.62748908996582,-150.34942626953125 59.465547561645508,-150.213623046875 59.71666145324707,-150.47360229492187 59.464441299438477,-150.54168701171875 59.59166145324707,-150.90750122070312 59.243326187133789,-151.98056030273438 59.280550003051758,-150.99276733398437 59.777215957641602,-151.87664794921875 59.753885269165039,-151.30389404296875 60.385553359985352,-151.40890502929687 60.727487564086914,-150.399169921875 61.03721809387207,-149.028076171875 60.847772598266602,-150.06417846679687 61.154436111450195,-149.41696166992187 61.508607864379883,-151.5836181640625 60.976938247680664,-152.4302978515625 60.288888931274414,-153.10305786132812 60.289438247680664,-152.57720947265625 60.064714431762695,-154.26083374023437 59.142221450805664,-153.26779174804687 58.848604202270508,-154.10333251953125 58.481935501098633,-154.23361206054687 58.131105422973633,-156.489990234375 57.331110000610352,-156.54861450195312 56.977487564086914,-158.42306518554687 56.443880081176758,-158.64999389648437 56.264444351196289,-158.12054443359375 56.233606338500977,-158.50527954101562 55.988885879516602,-158.60110473632812 56.188043594360352,-159.667236328125 55.577219009399414,-159.84109497070312 55.851106643676758,-161.25418090820312 55.346940994262695,-161.48553466796875 55.481103897094727,-161.14169311523437 55.538888931274414,-161.5625 55.622766494750977,-161.9677734375 55.101938247680664,-162.45416259765625 55.038331985473633,-162.62664794921875 55.299440383911133,-162.5625 54.955270767211914,-163.1844482421875 55.139719009399414,-163.04446411132812 54.937494277954102,-163.36026000976562 54.81193733215332,-163.25863647460937 54.973321914672852,-163.32305908203125 55.121660232543945,-161.79998779296875 55.886659622192383,-160.24972534179687 55.770547866821289,-160.57470703125 55.986658096313477,-160.34695434570312 56.285554885864258,-158.64056396484375 56.761110305786133,-158.64889526367187 57.053323745727539,-157.93804931640625 57.491937637329102,-157.39666557312012 57.490549087524414,-157.7066650390625 57.643327713012695,-157.6099853515625 58.089715957641602,-157.13861083984375 58.162492752075195,-157.55361938476562 58.38249397277832,-156.7791748046875 59.151384353637695,-158.18832397460938 58.606386184692383,-158.49249267578125 58.99943733215332,-157.99276733398437 58.904993057250977,-158.53695678710937 59.175271987915039,-158.89752197265625 58.395547866821289,-160.32666015625 59.059717178344727,-162.17138671875 58.649721145629883,-161.56582641601562 59.103609085083008,-161.99221801757812 59.144159317016602,-161.70526123046875 59.496660232543945,-162.15139770507812 60.245546340942383,-162.37222290039062 60.176103591918945,-161.87942504882812 60.702219009399414,-162.5694580078125 60.316385269165039,-162.52166557312012 59.992769241333008,-164.06527709960937 59.824167251586914,-165.42529296875 60.555269241333008,-164.66500854492187 60.911661148071289,-164.26446533203125 60.778879165649414,-164.42916870117187 60.553323745727539,-163.957763671875 60.780275344848633,-163.66946411132812 60.587213516235352,-163.40972900390625 60.756662368774414,-163.89561462402344 60.85688591003418,-163.5513916015625 60.903879165649414,-165.15029907226562 60.928049087524414,-164.82223510742187 61.111108779907227,-165.12054443359375 61.083879470825195,-165.13861083984375 61.256662368774414,-165.16372680664062 61.170045852661133,-165.3699951171875 61.200830459594727,-165.15057373046875 61.416940689086914,-165.05967712402344 61.416841506958008,-164.99842834472656 61.469770431518555,-164.84527587890625 61.494440078735352,-164.71609497070313 61.625551223754883,-165.01724243164062 61.500001907348633,-165.0755615234375 61.432214736938477,-165.1611328125 61.432497024536133,-165.28750610351562 61.333879470825195,-165.40750122070312 61.208330154418945,-165.34136962890625 61.15721321105957,-165.38668823242187 61.068605422973633,-166.19778442382812 61.59471321105957,-165.24722290039063 62.446100234985352,-164.63641357421875 62.417497634887695,-164.852783203125 62.570276260375977,-164.47915458679199 62.745828628540039,-164.87777709960937 62.835550308227539,-164.31832885742187 63.00694465637207,-164.41055297851563 63.211938858032227,-163.11166381835937 63.051935195922852,-162.31195068359375 63.541109085083008,-161.15167236328125 63.51249885559082,-160.77749633789062 63.868600845336914,-161.5291748046875 64.41887092590332,-160.78390502929687 64.721925735473633,-161.1824951171875 64.93748664855957,-162.790283203125 64.33610725402832,-163.17001342773437 64.65526008605957,-163.17584228515625 64.407487869262695,-166.12136840820312 64.574708938598633,-166.96194458007812 65.188875198364258,-166.05889892578125 65.256105422973633,-168.131103515625 65.665544509887695,-164.35360717773437 66.59471321105957,-163.625 66.567216873168945,-164.18832397460937 66.19609260559082,-163.65640258789062 66.07054328918457,-161.00335693359375 66.204164505004883,-161.91000366210937 66.274431228637695,-161.9061279296875 66.53526496887207,-162.63613891601562 66.868867874145508,-162.33694458007812 66.958330154418945,-161.60055541992187 66.447755813598633,-160.23056030273438 66.399721145629883,-160.26419067382812 66.647493362426758,-161.50668334960937 66.533876419067383,-161.89779663085937 66.72831916809082,-161.50112915039062 66.979158401489258,-162.46112060546875 66.99247932434082,-162.35055541992187 67.161378860473633,-163.73248291015625 67.113603591918945,-164.1241455078125 67.609987258911133,-166.82778930664062 68.35081672668457,-166.37260437011719 68.416765213012695,-166.2158203125 68.88304328918457,-163.64529418945312 69.106935501098633,-161.94223022460937 70.307207107543945,-162.11886596679687 70.15165901184082,-159.9375 70.593324661254883,-160.1986083984375 70.471651077270508,-159.83612060546875 70.268327713012695,-159.28555297851562 70.530550003051758,-160.12442016601562 70.615266799926758,-159.66806030273438 70.798036575317383,-157.97943115234375 70.837495803833008,-156.44696044921875 71.263612747192383),(-135.55416870117187 58.329996109008789,-135.62527465820313 58.383050918579102,-135.72610473632812 58.359437942504883,-135.55416870117187 58.329996109008789)))","US"
+"L0","WKT"
+"US","MULTIPOLYGON (((-75.1702880859375 19.931390762329102,-75.223724365234375 19.901556015014648,-75.1591796875 19.960695266723633,-75.1702880859375 19.931390762329102)),((-75.12139892578125 19.88749885559082,-75.139739990234375 19.962873458862305,-75.085281372070312 19.893041610717773,-75.12139892578125 19.88749885559082)),((-155.00558471679687 19.328882217407227,-155.85946655273437 19.032777786254883,-155.86444091796875 20.269163131713867,-155.15863037109375 19.962495803833008,-154.79281616210937 19.538610458374023,-155.00558471679687 19.328882217407227)),((-156.5472412109375 20.525274276733398,-156.69863891601562 20.534719467163086,-156.58529663085937 20.607221603393555,-156.5472412109375 20.525274276733398)),((-156.89199829101562 20.744161605834961,-157.04837036132812 20.918054580688477,-156.812255859375 20.843610763549805,-156.89199829101562 20.744161605834961)),((-156.47335815429687 20.898050308227539,-155.98861694335937 20.748052597045898,-156.42001342773437 20.58860969543457,-156.70223999023437 20.924436569213867,-156.47335815429687 20.898050308227539)),((-156.89447021484375 21.161104202270508,-156.70391845703125 21.158052444458008,-157.30474853515625 21.100553512573242,-156.89447021484375 21.161104202270508)),((-160.53060913085937 21.643888473510742,-160.53778076171875 21.63221549987793,-160.5411376953125 21.641382217407227,-160.53060913085937 21.643888473510742)),((-157.73031616210937 21.411661148071289,-158.1036376953125 21.295278549194336,-158.27337646484375 21.580549240112305,-157.971923828125 21.699438095092773,-157.73031616210937 21.411661148071289)),((-160.114990234375 21.88749885559082,-160.24777221679687 21.813608169555664,-160.0614013671875 22.013883590698242,-160.114990234375 21.88749885559082)),((-159.43362426757813 21.881387710571289,-159.78530883789062 22.061384201049805,-159.35165405273437 22.221380233764648,-159.43362426757813 21.881387710571289)),((-161.94168090820312 23.039438247680664,-161.94833374023437 23.047216415405273,-161.93832397460937 23.046388626098633,-161.94168090820312 23.039438247680664)),((-164.69613647460937 23.564718246459961,-164.70751953125 23.576665878295898,-164.69668579101562 23.578054428100586,-164.69613647460937 23.564718246459961)),((-81.773895263671875 24.544721603393555,-81.813499450683594 24.54387092590332,-81.729171752929688 24.560556411743164,-81.773895263671875 24.544721603393555)),((-82.11444091796875 24.545831680297852,-82.137222290039063 24.593889236450195,-82.099990844726563 24.58305549621582,-82.11444091796875 24.545831680297852)),((-81.715118408203125 24.553117752075195,-81.710739135742187 24.595720291137695,-81.646224975585938 24.577550888061523,-81.715118408203125 24.553117752075195)),((-81.477218627929688 24.636384963989258,-81.51777458190918 24.684995651245117,-81.478607177734375 24.677774429321289,-81.477218627929688 24.636384963989258)),((-81.588333129882813 24.589998245239258,-81.553054809570313 24.687219619750977,-81.508346557617188 24.629999160766602,-81.588333129882813 24.589998245239258)),((-81.108612060546875 24.706106185913086,-81.137771606445312 24.701681137084961,-81.05267333984375 24.716531753540039,-81.108612060546875 24.706106185913086)),((-81.349441528320313 24.629720687866211,-81.428054809570312 24.748605728149414,-81.360824584960937 24.700830459594727,-81.349441528320313 24.629720687866211)),((-80.968887329101563 24.742773056030273,-81.026687622070313 24.718587875366211,-80.9234619140625 24.769208908081055,-80.968887329101563 24.742773056030273)),((-80.846115112304688 24.79749870300293,-80.824172973632813 24.821111679077148,-80.786170959472656 24.822931289672852,-80.846115112304688 24.79749870300293)),((-80.6986083984375 24.866666793823242,-80.745834350585937 24.842496871948242,-80.702499389648437 24.880830764770508,-80.6986083984375 24.866666793823242)),((-80.646665573120117 24.902219772338867,-80.664443969726563 24.894998550415039,-80.623886108398438 24.932775497436523,-80.646665573120117 24.902219772338867)),((-167.99057006835937 25.002500534057617,-168.00115966796875 25.003885269165039,-168.00588989257812 25.017496109008789,-167.99057006835937 25.002500534057617)),((-80.577224731445313 24.945550918579102,-80.25750732421875 25.34638786315918,-80.371932983398438 25.143888473510742,-80.577224731445313 24.945550918579102)),((-80.225006103515625 25.40110969543457,-80.234161376953125 25.402219772338867,-80.1885986328125 25.494161605834961,-80.225006103515625 25.40110969543457)),((-80.162216186523438 25.669443130493164,-80.185546875 25.68943977355957,-80.156387329101563 25.733331680297852,-80.162216186523438 25.669443130493164)),((-171.72360229492187 25.76249885559082,-171.73138427734375 25.760831832885742,-171.72470092773437 25.791662216186523,-171.72360229492187 25.76249885559082)),((-81.684158325195313 25.844720840454102,-81.7147216796875 25.888608932495117,-81.664169311523438 25.888608932495117,-81.684158325195313 25.844720840454102)),((-173.94613647460937 26.063333511352539,-173.96084594726562 26.079439163208008,-173.94473266601562 26.080831527709961,-173.94613647460937 26.063333511352539)),((-82.126388549804688 26.44999885559082,-82.206390380859375 26.545831680297852,-82.028884887695312 26.444997787475586,-82.126388549804688 26.44999885559082)),((-82.221664428710938 26.612497329711914,-82.2449951171875 26.63499641418457,-82.2550048828125 26.698606491088867,-82.221664428710938 26.612497329711914)),((-82.079452514648438 26.487775802612305,-82.179718017578125 26.699163436889648,-82.133331298828125 26.691106796264648,-82.079452514648438 26.487775802612305)),((-82.263626098632813 26.716386795043945,-82.281387329101563 26.808889389038086,-82.255279541015625 26.759443283081055,-82.263626098632813 26.716386795043945)),((-97.177780151367188 26.084722518920898,-97.385757446289063 26.838224411010742,-97.383621215820313 27.207220077514648,-97.177780151367188 26.084722518920898)),((-82.587509155273438 27.321111679077148,-82.680557250976563 27.42582893371582,-82.6541748046875 27.418607711791992,-82.587509155273438 27.321111679077148)),((-97.382217407226563 27.21888542175293,-97.317230224609375 27.495828628540039,-97.04554557800293 27.843889236450195,-97.382217407226563 27.21888542175293)),((-96.887786865234375 28.030553817749023,-97.03582763671875 27.875276565551758,-96.867767333984375 28.13499641418457,-96.887786865234375 28.030553817749023)),((-96.55194091796875 28.266668319702148,-96.813613891601563 28.092496871948242,-96.40472412109375 28.392221450805664,-96.55194091796875 28.266668319702148)),((-96.360824584960938 28.402498245239258,-96.31304931640625 28.45527458190918,-96.229995727539063 28.485551834106445,-96.360824584960938 28.402498245239258)),((-80.663894653320312 28.258333206176758,-80.740280151367188 28.478330612182617,-80.625274658203125 28.590555191040039,-80.663894653320312 28.258333206176758)),((-90.872650146484375 29.046133041381836,-90.950393676757813 29.060003280639648,-90.923614501953125 29.060556411743164,-90.872650146484375 29.046133041381836)),((-90.739166259765625 29.045000076293945,-90.758346557617188 29.048608779907227,-90.642501831054688 29.073331832885742,-90.739166259765625 29.045000076293945)),((-90.335556030273438 29.057222366333008,-90.2852783203125 29.08305549621582,-90.29833984375 29.06694221496582,-90.335556030273438 29.057222366333008)),((-89.97528076171875 29.242773056030273,-90.031112670898438 29.211942672729492,-89.955001831054688 29.268056869506836,-89.97528076171875 29.242773056030273)),((-89.928329467773438 29.27861213684082,-89.935272216796875 29.287500381469727,-89.907501220703125 29.302221298217773,-89.928329467773438 29.27861213684082)),((-89.860000610351563 29.310277938842773,-89.893890380859375 29.323053359985352,-89.869720458984375 29.335275650024414,-89.860000610351563 29.310277938842773)),((-95.111114501953125 29.098054885864258,-94.821395874023438 29.33860969543457,-94.78472900390625 29.308053970336914,-95.111114501953125 29.098054885864258)),((-89.17054557800293 29.473051071166992,-89.219161987304688 29.464719772338867,-89.156951904296875 29.492494583129883,-89.17054557800293 29.473051071166992)),((-89.601104736328125 29.513887405395508,-89.618331909179688 29.538331985473633,-89.590286254882813 29.560556411743164,-89.565826416015625 29.554719924926758,-89.562210083007813 29.521112442016602,-89.601104736328125 29.513887405395508)),((-89.080291748046875 29.521387100219727,-89.078887939453125 29.545553207397461,-89.037216186523438 29.573610305786133,-89.080291748046875 29.521387100219727)),((-91.786666870117188 29.486108779907227,-92.034439086914062 29.591665267944336,-91.85638427734375 29.63499641418457,-91.786666870117188 29.486108779907227)),((-85.111114501953125 29.632219314575195,-85.198043823242188 29.685274124145508,-85.081680297851562 29.679162979125977,-85.111114501953125 29.632219314575195)),((-89.428604125976563 29.692773818969727,-89.468612670898437 29.728609085083008,-89.422500610351563 29.722772598266602,-89.428604125976563 29.692773818969727)),((-84.9727783203125 29.608888626098633,-85.095001220703125 29.62388801574707,-84.692214965820313 29.758333206176758,-84.9727783203125 29.608888626098633)),((-89.424163818359375 29.74083137512207,-89.4888916015625 29.73805046081543,-89.491104125976563 29.793054580688477,-89.424163818359375 29.74083137512207)),((-89.2852783203125 29.771387100219727,-89.3416748046875 29.803888320922852,-89.275558471679688 29.809164047241211,-89.2852783203125 29.771387100219727)),((-84.638900756835938 29.77833366394043,-84.667221069335937 29.776945114135742,-84.57342529296875 29.819997787475586,-84.638900756835938 29.77833366394043)),((-88.845840454101563 29.776388168334961,-88.868743896484375 30.060606002807617,-88.805831909179688 29.90638542175293,-88.845840454101563 29.776388168334961)),((-89.317779541015625 30.040834426879883,-89.346389770507813 30.059442520141602,-89.18499755859375 30.166666030883789,-89.317779541015625 30.040834426879883)),((-88.437774658203125 30.206106185913086,-88.500564575195313 30.21888542175293,-88.428054809570313 30.212774276733398,-88.437774658203125 30.206106185913086)),((-88.552215576171875 30.214719772338867,-88.754180908203125 30.244718551635742,-88.526397705078125 30.223051071166992,-88.552215576171875 30.214719772338867)),((-89.08111572265625 30.19972038269043,-89.0916748046875 30.216665267944336,-89.060516357421875 30.246675491333008,-89.08111572265625 30.19972038269043)),((-88.0947265625 30.241106033325195,-88.3125 30.23277473449707,-88.107772827148438 30.273611068725586,-88.0947265625 30.241106033325195)),((-86.5291748046875 30.40083122253418,-87.292221069335937 30.33277702331543,-86.7630615234375 30.404996871948242,-86.5291748046875 30.40083122253418)),((-118.40695190429687 32.816667556762695,-118.59249877929687 33.046945571899414,-118.36916351318359 32.854715347290039,-118.40695190429687 32.816667556762695)),((-79.36500358581543 33.003053665161133,-79.361114501953125 33.049997329711914,-79.33612060546875 33.067216873168945,-79.36500358581543 33.003053665161133)),((-119.44415283203125 33.21666145324707,-119.56667327880859 33.282770156860352,-119.48056030273438 33.274438858032227,-119.44415283203125 33.21666145324707)),((-118.30194091796875 33.30943489074707,-118.44888305664062 33.327493667602539,-118.59221458435059 33.486658096313477,-118.30194091796875 33.30943489074707)),((-77.960830688476563 33.850000381469727,-78.016403198242188 33.874162673950195,-77.949722290039062 33.913049697875977,-77.960830688476563 33.850000381469727)),((-120.0352783203125 34.023881912231445,-120.10749816894531 33.905550003051758,-120.22609710693359 34.006105422973633,-120.0352783203125 34.023881912231445)),((-120.29778289794922 34.028604507446289,-120.43804931640625 34.036943435668945,-120.3638916015625 34.065546035766602,-120.29778289794922 34.028604507446289)),((-119.86805725097656 34.084161758422852,-119.51363372802734 34.04277229309082,-119.788330078125 33.96721076965332,-119.86805725097656 34.084161758422852)),((-76.5352783203125 34.635553359985352,-76.65472412109375 34.686105728149414,-76.559158325195313 34.664995193481445,-76.5352783203125 34.635553359985352)),((-76.6824951171875 34.702219009399414,-77.098052978515625 34.650545120239258,-76.931106567382812 34.691377639770508,-76.6824951171875 34.702219009399414)),((-76.531951904296875 34.585824966430664,-76.42083740234375 34.775827407836914,-76.199722290039063 34.941659927368164,-76.531951904296875 34.585824966430664)),((-76.067779541015625 35.039438247680664,-76.131103515625 35.00193977355957,-76.039443969726563 35.061105728149414,-76.067779541015625 35.039438247680664)),((-76.010833740234375 35.074167251586914,-75.981109619140625 35.114999771118164,-75.766952514648437 35.193880081176758,-76.010833740234375 35.074167251586914)),((-75.5272216796875 35.235551834106445,-75.653610229492188 35.225549697875977,-75.51251220703125 35.777215957641602,-75.5272216796875 35.235551834106445)),((-75.61944580078125 35.821382522583008,-75.72332763671875 35.941659927368164,-75.66583251953125 35.926942825317383,-75.61944580078125 35.821382522583008)),((-75.906112670898437 37.112497329711914,-75.898895263671875 37.136941909790039,-75.87249755859375 37.149164199829102,-75.906112670898437 37.112497329711914)),((-75.788330078125 37.238046646118164,-75.837509155273438 37.22776985168457,-75.7852783203125 37.298608779907227,-75.788330078125 37.238046646118164)),((-75.6966552734375 37.402772903442383,-75.710830688476563 37.390275955200195,-75.6683349609375 37.460275650024414,-75.6966552734375 37.402772903442383)),((-121.8013916015625 38.055269241333008,-121.82000732421875 38.068056106567383,-121.79638671875 38.066667556762695,-121.8013916015625 38.055269241333008)),((-75.354171752929688 37.866662979125977,-75.384170532226562 37.872217178344727,-75.121109008789063 38.263055801391602,-75.354171752929688 37.866662979125977)),((-74.329452514648438 39.421663284301758,-74.394454956054687 39.38249397277832,-74.44415283203125 39.406938552856445,-74.376251220703125 39.420743942260742,-74.348052978515625 39.474435806274414,-74.329452514648438 39.421663284301758)),((-74.2469482421875 39.525552749633789,-74.099990844726563 39.750833511352539,-74.138336181640625 39.659433364868164,-74.2469482421875 39.525552749633789)),((-74.220001220703125 40.511667251586914,-74.17694091796875 40.641939163208008,-74.062774658203125 40.639436721801758,-74.220001220703125 40.511667251586914)),((-73.22332763671875 40.635271072387695,-73.294723510742188 40.633882522583008,-72.76666259765625 40.766107559204102,-73.22332763671875 40.635271072387695)),((-72.262222290039063 41.125268936157227,-72.621109008789063 40.913049697875977,-71.856109619140625 41.069162368774414,-73.582778930664063 40.596101760864258,-74.032501220703125 40.625825881958008,-72.262222290039063 41.125268936157227)),((-69.9949951171875 41.32805061340332,-69.993881225585937 41.250276565551758,-70.234161376953125 41.283609390258789,-69.9949951171875 41.32805061340332)),((-70.506393432617187 41.357217788696289,-70.838058471679688 41.359994888305664,-70.617218017578125 41.473878860473633,-70.506393432617187 41.357217788696289)),((-71.297500610351563 41.45860481262207,-71.35833740234375 41.459161758422852,-71.222503662109375 41.65416145324707,-71.297500610351563 41.45860481262207)),((-68.803329467773437 44.048051834106445,-68.898056030273437 44.123880386352539,-68.764450073242188 44.094995498657227,-68.803329467773437 44.048051834106445)),((-68.650833129882812 44.168886184692383,-68.721389770507813 44.228876113891602,-68.668060302734375 44.285272598266602,-68.650833129882812 44.168886184692383)),((-68.320846557617188 44.237215042114258,-68.428329467773437 44.31999397277832,-68.2630615234375 44.452775955200195,-68.1683349609375 44.345544815063477,-68.320846557617188 44.237215042114258)),((-123.93804931640625 46.431108474731445,-123.94915771484375 46.431108474731445,-123.98306274414062 46.469156265258789,-123.97250366210937 46.515275955200195,-123.93804931640625 46.431108474731445)),((-122.84306335449219 47.206941604614258,-122.9022216796875 47.297494888305664,-122.84555053710937 47.312494277954102,-122.84306335449219 47.206941604614258)),((-122.48222351074219 47.34971809387207,-122.4505615234375 47.518327713012695,-122.381103515625 47.394716262817383,-122.48222351074219 47.34971809387207)),((-122.50473022460937 48.309717178344727,-122.37222290039062 47.919443130493164,-122.75778198242187 48.233880996704102,-122.50473022460937 48.309717178344727)),((-122.81667327880859 48.416940689086914,-122.93611145019531 48.457773208618164,-122.87666320800781 48.564157485961914,-122.81667327880859 48.416940689086914)),((-123.0 48.446100234985352,-123.17832946777344 48.592218399047852,-122.99500274658203 48.529718399047852,-123.0 48.446100234985352)),((-122.92250061035156 48.711664199829102,-122.74916076660156 48.651384353637695,-123.01027679443359 48.603609085083008,-122.92250061035156 48.711664199829102)),((-123.05332946777344 48.973878860473633,-123.09375 48.99943733215332,-123.03431701660156 48.99943733215332,-123.05332946777344 48.973878860473633)),((-95.07806396484375 49.359163284301758,-94.6058349609375 48.724435806274414,-92.95306396484375 48.623323440551758,-91.4183349609375 48.041109085083008,-90.868606567382813 48.237497329711914,-89.356658935546875 47.979715347290039,-88.368057250976563 48.312211990356445,-84.856948852539063 46.902215957641602,-84.56500244140625 46.466386795043945,-84.126388549804687 46.531938552856445,-83.958892822265625 46.071664810180664,-83.577499389648438 46.10527229309082,-83.5977783203125 45.827219009399414,-82.543060302734375 45.355829238891602,-82.130279541015625 43.585268020629883,-82.521392822265625 42.61888313293457,-83.168609619140625 42.046106338500977,-82.6966552734375 41.683877944946289,-78.9869384765625 42.81999397277832,-79.184722900390625 43.465547561645508,-78.724716186523438 43.629434585571289,-76.80194091796875 43.633607864379883,-74.990829467773438 44.986658096313477,-70.87860107421875 45.238603591918945,-69.232498168945313 47.471376419067383,-67.794998168945312 47.06999397277832,-67.799163818359375 45.701105117797852,-67.20654296875 45.183038711547852,-66.968887329101563 44.831110000610352,-67.186935424804687 44.661935806274414,-67.551101684570313 44.666101455688477,-67.565277099609375 44.550271987915039,-67.775283813476562 44.546945571899414,-68.047500610351563 44.346940994262695,-68.108612060546875 44.460275650024414,-68.321151733398437 44.465883255004883,-68.559158325195313 44.418886184692383,-68.547500610351563 44.317773818969727,-68.615829467773437 44.30638313293457,-68.795272827148438 44.579721450805664,-69.0675048828125 44.063325881958008,-69.721939086914063 43.785829544067383,-69.773330688476562 44.079164505004883,-69.823898315429688 43.714441299438477,-70.172500610351563 43.780550003051758,-70.729171752929687 43.122766494750977,-70.58056640625 42.651933670043945,-71.044448852539062 42.311105728149414,-70.324722290039062 41.711381912231445,-70.011123657226563 41.797220230102539,-70.078887939453125 42.062211990356445,-69.936386108398437 41.669443130493164,-71.185821533203125 41.46666145324707,-71.111114501953125 41.795000076293945,-71.391387939453125 41.81193733215332,-71.505279541015625 41.366937637329102,-72.906387329101563 41.286111831665039,-73.997489929199219 40.713460922241211,-73.9566650390625 41.305269241333008,-74.2691650390625 40.474710464477539,-73.952224731445312 40.299997329711914,-74.076400756835938 39.776941299438477,-74.053878784179687 40.057497024536133,-74.150283813476562 39.704996109008789,-74.405563354492188 39.516107559204102,-74.462593078613281 39.42106819152832,-74.415557861328125 39.35527229309082,-74.955001831054687 38.924165725708008,-74.89277458190918 39.16777229309082,-75.5574951171875 39.618051528930664,-75.028518676757812 40.012308120727539,-75.588607788085938 39.648881912231445,-75.04388427734375 38.421663284301758,-75.960830688476562 37.152215957641602,-75.64404296875 37.961175918579102,-75.880828857421875 37.949434280395508,-75.838058471679688 38.398881912231445,-76.24249267578125 38.366937637329102,-75.9566650390625 38.64860725402832,-76.360000610351563 38.857217788696289,-75.831680297851563 39.577493667602539,-76.618606567382812 39.254167556762695,-76.3760986328125 38.363611221313477,-76.666107177734375 38.480546951293945,-76.30999755859375 38.046388626098633,-77.24444580078125 38.398332595825195,-77.061111450195313 38.905267715454102,-77.32000732421875 38.345270156860352,-76.241668701171875 37.904993057250977,-76.353607177734375 37.618600845336914,-77.133895874023438 38.172769546508789,-76.286666870117188 37.567499160766602,-76.381103515625 37.273881912231445,-76.682769775390625 37.429719924926758,-76.26806640625 37.078882217407227,-77.232223510742188 37.296388626098633,-75.989990234375 36.913881301879883,-75.5291748046875 35.80388069152832,-75.938888549804688 36.71666145324707,-75.785552978515625 36.06999397277832,-76.195541381835938 36.31999397277832,-76.06304931640625 36.153322219848633,-76.656661987304688 36.031106948852539,-76.70611572265625 36.264162063598633,-76.730560302734375 35.939432144165039,-76.070846557617188 35.991937637329102,-76.0352783203125 35.649995803833008,-75.853607177734375 35.974992752075195,-75.72027587890625 35.81443977355957,-76.149169921875 35.336938858032227,-77.050827026367188 35.530275344848633,-76.468887329101563 35.271661758422852,-76.761398315429688 34.987771987915039,-77.076400756835938 35.156099319458008,-76.944442749023438 34.977487564086914,-76.335830688476562 34.886941909790039,-77.428878784179688 34.741937637329102,-77.930831909179688 33.927774429321289,-77.961669921875 34.158601760864258,-78.013626098632812 33.891939163208008,-78.827499389648437 33.73027229309082,-79.196441650390625 33.278940200805664,-79.1885986328125 33.436380386352539,-79.271392822265625 33.373323440551758,-79.205841064453125 33.165544509887695,-79.371719360351563 33.05894660949707,-79.381942749023438 33.009721755981445,-80.671661376953125 32.521661758422852,-80.46722412109375 32.315828323364258,-80.836944580078125 32.516664505004883,-80.669998168945313 32.21415901184082,-81.4969482421875 31.125555038452148,-81.255279541015625 29.796667098999023,-80.552490234375 28.524999618530273,-80.4466552734375 27.864442825317383,-80.602218627929688 28.607500076293945,-80.844161987304688 28.790555953979492,-80.755569458007813 28.415830612182617,-80.0333251953125 26.786664962768555,-80.39862060546875 25.184720993041992,-81.088058471679688 25.11555290222168,-80.915283203125 25.25139045715332,-81.336669921875 25.804998397827148,-81.736587524414063 25.959444046020508,-81.970054626464844 26.482831954956055,-81.777786254882813 26.710554122924805,-82.064163208007812 26.545000076293945,-82.017227172851563 26.964719772338867,-82.302780151367188 26.837221145629883,-82.6552734375 27.461664199829102,-82.422500610351563 27.917497634887695,-82.691375732421875 28.032220840454102,-82.722503662109375 27.656942367553711,-82.85333251953125 27.855276107788086,-82.631103515625 28.88499641418457,-83.669448852539063 29.906106948852539,-84.207504272460938 30.105554580688477,-85.354171752929688 29.676664352416992,-85.633941650390625 30.104440689086914,-85.392227172851562 30.049444198608398,-86.263336181640625 30.496664047241211,-88.02362060546875 30.219442367553711,-87.756393432617188 30.285276412963867,-88.020278930664063 30.701108932495117,-88.132766723632812 30.314443588256836,-90.419723510742188 30.198331832885742,-89.667221069335938 30.167776107788086,-89.658050537109375 29.87388801574707,-89.399444580078125 30.050832748413086,-89.753341674804688 29.630830764770508,-89.6763916015625 29.523889541625977,-89.187210083007813 29.339719772338867,-89.008346557617188 29.176942825317383,-89.404998779296875 28.926664352416992,-89.272781372070313 29.155832290649414,-90.178329467773438 29.572500228881836,-90.2066650390625 29.091943740844727,-91.2469482421875 29.24083137512207,-91.8416748046875 29.830278396606445,-92.308334350585937 29.53972053527832,-93.840286254882813 29.704164505004883,-93.84527587890625 29.98805046081543,-93.857498168945313 29.676107406616211,-94.772506713867188 29.363885879516602,-94.475830078125 29.56138801574707,-95.059432983398438 29.71888542175293,-94.8880615234375 29.375555038452148,-94.902786254882813 29.314443588256836,-95.093887329101563 29.177774429321289,-95.140838623046875 29.057500839233398,-96.212783813476562 28.485551834106445,-95.985824584960938 28.649164199829102,-96.641677856445313 28.719717025756836,-96.398345947265625 28.43610954284668,-96.803604125976563 28.473051071166992,-97.184722900390625 27.827497482299805,-97.520553588867187 27.866388320922852,-97.411117553710938 27.327497482299805,-97.773895263671875 27.458887100219727,-97.42388916015625 27.267499923706055,-97.559432983398438 26.836111068725586,-97.140739440917969 25.966428756713867,-99.104736328125 26.434999465942383,-99.5050048828125 27.570276260375977,-101.40501403808594 29.77277946472168,-102.30584716796875 29.889444351196289,-103.375 29.023611068725586,-104.54000854492187 29.671110153198242,-104.90055847167969 30.572778701782227,-106.40084838867187 31.750276565551758,-108.2086181640625 31.783334732055664,-108.20834350585937 31.33305549621582,-111.04583740234375 31.33305549621582,-113.05288696289062 31.971071243286133,-114.80982971191406 32.506990432739258,-114.71909332275391 32.71845817565918,-117.12237358093262 32.535333633422852,-117.48082733154297 33.327493667602539,-118.53472900390625 34.05082893371582,-120.62026977539062 34.570833206176758,-120.61416625976562 35.135828018188477,-121.86749267578125 36.312494277954102,-121.79638671875 36.879434585571289,-122.48805236816406 37.518327713012695,-122.38694763183594 37.816667556762695,-122.00583457946777 37.471376419067383,-122.39334106445312 37.957773208618164,-122.24054718017578 38.059160232543945,-121.41999816894531 38.012773513793945,-121.57668304443359 38.11583137512207,-121.73610687255859 38.044717788696289,-122.01862335205078 38.148115158081055,-122.10973358154297 38.061380386352539,-122.36528015136719 38.155550003051758,-122.49137878417969 37.827775955200195,-122.9970703125 38.005109786987305,-122.96456146240234 38.239614486694336,-122.8035945892334 38.088045120239258,-123.10472106933594 38.46110725402832,-123.70361328125 38.932497024536133,-123.77583312988281 39.71721076965332,-124.33222961425781 40.266107559204102,-124.03999328613281 41.431108474731445,-124.52443695068359 42.866106033325195,-124.13834381103516 43.371103286743164,-123.95195007324219 46.181108474731445,-123.16357421875 46.195192337036133,-124.0 46.323610305786133,-124.04277038574219 46.658044815063477,-124.01583862304688 46.654436111450195,-123.989990234375 46.397775650024414,-123.94167327880859 46.391107559204102,-123.7525634765625 46.693071365356445,-124.09750366210937 46.861383438110352,-123.79666137695312 46.976099014282227,-124.16194152832031 46.941102981567383,-124.71584320068359 48.395273208618164,-122.75110626220703 48.161104202270508,-122.63027954101562 47.915826797485352,-123.14750671386719 47.368600845336914,-122.83640289306641 47.439157485961914,-123.10249328613281 47.399721145629883,-122.5655517578125 47.938043594360352,-122.45472717285156 47.774438858032227,-122.54998779296875 47.282770156860352,-122.61916351318359 47.420549392700195,-122.75862121582031 47.189714431762695,-122.79750061035156 47.395273208618164,-123.06861877441406 47.15165901184082,-122.87860107421875 47.064157485961914,-122.30972290039062 47.401102066040039,-122.37917327880859 48.291666030883789,-122.70445251464844 48.486108779907227,-122.4375 48.598047256469727,-122.76029968261719 48.99943733215332,-95.1541748046875 48.99943733215332,-95.07806396484375 49.359163284301758),(-122.49582672119141 47.595544815063477,-122.50334167480469 47.715272903442383,-122.58168029785156 47.671663284301758,-122.49582672119141 47.595544815063477),(-123.9385986328125 45.536661148071289,-123.91694641113281 45.56443977355957,-123.93443298339844 45.558328628540039,-123.9385986328125 45.536661148071289),(-77.851669311523438 34.111108779907227,-77.820846557617188 34.175271987915039,-77.8558349609375 34.149164199829102,-77.851669311523438 34.111108779907227)),((-179.10528564453125 51.213052749633789,-179.14199829101563 51.268594741821289,-179.08724975585937 51.290834426879883,-179.10528564453125 51.213052749633789)),((-178.96249389648437 51.311662673950195,-178.94998168945312 51.396936416625977,-178.90032958984375 51.354997634887695,-178.96249389648437 51.311662673950195)),((178.99301338195801 51.57499885559082,179.47134590148926 51.367494583129883,178.63638496398926 51.637773513793945,178.99301338195801 51.57499885559082)),((-178.7769775390625 51.745538711547852,-178.842529296875 51.819154739379883,-178.7427978515625 51.807771682739258,-178.7769775390625 51.745538711547852)),((178.39221382141113 51.763055801391602,178.22302436828613 51.830827713012695,178.32995796203613 51.814996719360352,178.39221382141113 51.763055801391602)),((-176.0128173828125 51.830270767211914,-176.14334106445312 51.774438858032227,-176.21945190429687 51.831384658813477,-176.0128173828125 51.830270767211914)),((-176.33642578125 51.721658706665039,-176.41448974609375 51.854997634887695,-176.2769775390625 51.860269546508789,-176.33642578125 51.721658706665039)),((-177.81390380859375 51.719705581665039,-177.94998168945312 51.606378555297852,-178.21807861328125 51.87193489074707,-177.81390380859375 51.719705581665039)),((-176.55059814453125 51.905824661254883,-176.42974853515625 51.730264663696289,-176.97503662109375 51.595819473266602,-176.55059814453125 51.905824661254883)),((-175.95111083984375 51.868875503540039,-176.09307861328125 51.885263442993164,-176.001953125 51.908876419067383,-175.95111083984375 51.868875503540039)),((-177.12222290039062 51.784433364868164,-177.7044677734375 51.700830459594727,-177.15725708007812 51.938325881958008,-177.12222290039062 51.784433364868164)),((-175.72503662109375 51.930551528930664,-175.72918701171875 51.966104507446289,-175.65750122070313 51.956941604614258,-175.72503662109375 51.930551528930664)),((-175.864990234375 51.96360969543457,-175.94668579101562 51.97886848449707,-175.80194091796875 51.982202529907227,-175.864990234375 51.96360969543457)),((178.53692817687988 51.893610000610352,178.46829414367676 51.984720230102539,178.60608100891113 51.947771072387695,178.53692817687988 51.893610000610352)),((179.73745918273926 51.903047561645508,179.48608589172363 51.97221565246582,179.65860176086426 52.024713516235352,179.73745918273926 51.903047561645508)),((177.68469429016113 52.079996109008789,177.60495185852051 51.92027473449707,177.24106025695801 51.87693977355957,177.68469429016113 52.079996109008789)),((-176.0372314453125 51.964433670043945,-176.19085693359375 52.059991836547852,-176.04611206054687 52.10222053527832,-176.0372314453125 51.964433670043945)),((-173.515869140625 52.106935501098633,-172.95559692382812 52.085542678833008,-174.05697631835937 52.120271682739258,-173.515869140625 52.106935501098633)),((175.96109199523926 52.335550308227539,175.88189888000488 52.372491836547852,175.98773384094238 52.353609085083008,175.96109199523926 52.335550308227539)),((-172.38836669921875 52.28972053527832,-172.6280517578125 52.258325576782227,-172.43832397460938 52.391931533813477,-172.38836669921875 52.28972053527832)),((-173.99530029296875 52.291101455688477,-175.33584594726562 52.014154434204102,-174.18447875976562 52.416940689086914,-173.99530029296875 52.291101455688477)),((173.78775215148926 52.501108169555664,173.73550605773926 52.353326797485352,173.37524604797363 52.399438858032227,173.78775215148926 52.501108169555664)),((-171.23526000976562 52.450830459594727,-171.30804443359375 52.499429702758789,-171.21722412109375 52.51054573059082,-171.23526000976562 52.450830459594727)),((-170.60556030273438 52.590829849243164,-170.8416748046875 52.554155349731445,-170.6761474609375 52.694154739379883,-170.60556030273438 52.590829849243164)),((174.17776679992676 52.70555305480957,174.07412910461426 52.711381912231445,174.10217475891113 52.741106033325195,174.17776679992676 52.70555305480957)),((-170.11474609375 52.718324661254883,-170.17999267578125 52.783876419067383,-170.05499267578125 52.765268325805664,-170.11474609375 52.718324661254883)),((-169.675048828125 52.817773818969727,-170.0130615234375 52.818330764770508,-169.78115844726562 52.885263442993164,-169.675048828125 52.817773818969727)),((-170.04083251953125 52.853044509887695,-170.12747192382812 52.88859748840332,-169.99389457702637 52.901933670043945,-170.04083251953125 52.853044509887695)),((173.29998970031738 52.882211685180664,172.92859077453613 52.74388313293457,172.47635078430176 52.924440383911133,173.29998970031738 52.882211685180664)),((-169.72445678710937 52.943315505981445,-169.75250244140625 53.026376724243164,-169.67669677734375 53.03166389465332,-169.72445678710937 52.943315505981445)),((-168.24359130859375 53.251100540161133,-169.08670043945312 52.82805061340332,-168.35195922851563 53.475549697875977,-167.79531860351562 53.495538711547852,-168.24359130859375 53.251100540161133)),((-166.20999145507812 53.705270767211914,-166.2933349609375 53.793054580688477,-166.09002685546875 53.839433670043945,-166.20999145507812 53.705270767211914)),((-166.60748291015625 53.829721450805664,-166.21502685546875 53.928323745727539,-166.75283813476562 53.446382522583008,-167.84637451171875 53.308595657348633,-166.80389404296875 53.648874282836914,-167.02420043945312 53.955545425415039,-166.60748291015625 53.829721450805664)),((-165.251708984375 54.07609748840332,-165.29779052734375 54.037492752075195,-165.48193359375 54.074434280395508,-165.251708984375 54.07609748840332)),((-164.939208984375 54.12693977355957,-164.965576171875 54.075273513793945,-165.221923828125 54.089990615844727,-164.939208984375 54.12693977355957)),((-165.69696044921875 54.084718704223633,-166.12307739257812 54.11638069152832,-165.93832397460937 54.220544815063477,-165.69696044921875 54.084718704223633)),((-165.56057739257812 54.110269546508789,-165.68197631835937 54.238046646118164,-165.48641967773437 54.288049697875977,-165.56057739257812 54.110269546508789)),((-162.40057373046875 54.369440078735352,-162.48971557617187 54.40971565246582,-162.36831665039062 54.388330459594727,-162.40057373046875 54.369440078735352)),((-162.54388427734375 54.381380081176758,-162.78640747070312 54.414712905883789,-162.83111572265625 54.494157791137695,-162.54388427734375 54.381380081176758)),((-132.61944580078125 54.75444221496582,-132.7811279296875 54.925271987915039,-132.61886596679687 54.89610481262207,-132.61944580078125 54.75444221496582)),((-159.29501342773437 54.866937637329102,-159.33612060546875 54.927217483520508,-159.20693969726562 54.924440383911133,-159.29501342773437 54.866937637329102)),((-163.41363525390625 54.891107559204102,-163.3699951171875 54.784997940063477,-163.14501953125 54.766107559204102,-163.04861450195312 54.668329238891602,-164.95220947265625 54.575830459594727,-164.43276977539062 54.930551528930664,-163.41363525390625 54.891107559204102)),((-162.29306030273437 54.834161758422852,-162.4344482421875 54.931108474731445,-162.23275756835937 54.965272903442383,-162.29306030273437 54.834161758422852)),((-131.32583618164062 54.856943130493164,-131.48275756835937 54.930826187133789,-131.23638916015625 54.995271682739258,-131.32583618164062 54.856943130493164)),((-159.43417358398437 54.940546035766602,-159.47915458679199 55.014162063598633,-159.34942626953125 55.049165725708008,-159.43417358398437 54.940546035766602)),((-161.73971557617187 55.056100845336914,-161.90695190429687 55.151384353637695,-161.64138793945312 55.11332893371582,-161.73971557617187 55.056100845336914)),((-132.67471313476562 55.033052444458008,-132.86471557617187 55.029993057250977,-132.85333251953125 55.159433364868164,-132.67471313476562 55.033052444458008)),((-131.42584228515625 55.21110725402832,-131.37222290039062 55.013612747192383,-131.61749267578125 55.011110305786133,-131.42584228515625 55.21110725402832)),((-132.8358154296875 54.889162063598633,-132.67999267578125 54.666101455688477,-133.195556640625 55.23027229309082,-132.8358154296875 54.889162063598633)),((-159.51947021484375 55.064157485961914,-159.65557861328125 55.054994583129883,-159.5352783203125 55.247491836547852,-159.51947021484375 55.064157485961914)),((-161.56195068359375 55.218050003051758,-161.70611572265625 55.204713821411133,-161.53363037109375 55.252779006958008,-161.56195068359375 55.218050003051758)),((-159.84332275390625 55.13249397277832,-160.24472045898437 54.901384353637695,-159.8822021484375 55.290834426879883,-159.84332275390625 55.13249397277832)),((-133.24972534179687 55.209161758422852,-133.439453125 55.301935195922852,-133.29666137695312 55.33055305480957,-133.24972534179687 55.209161758422852)),((-160.33306884765625 55.248048782348633,-160.528076171875 55.320550918579102,-160.34695434570312 55.368600845336914,-160.33306884765625 55.248048782348633)),((-160.695556640625 55.399995803833008,-160.461669921875 55.187211990356445,-160.81640625 55.118326187133789,-160.695556640625 55.399995803833008)),((-133.59832763671875 55.233880996704102,-133.65362358093262 55.369440078735352,-133.44696044921875 55.410272598266602,-133.59832763671875 55.233880996704102)),((-131.72500610351562 55.134721755981445,-131.84609985351562 55.419992446899414,-131.61663818359375 55.283609390258789,-131.72500610351562 55.134721755981445)),((-163.14639282226562 55.393327713012695,-163.19473266601562 55.421937942504883,-163.136962890625 55.436105728149414,-163.14639282226562 55.393327713012695)),((-160.17889404296875 55.39610481262207,-160.34194946289062 55.416940689086914,-160.24972534179687 55.463052749633789,-160.17889404296875 55.39610481262207)),((-133.5050048828125 55.427217483520508,-133.60165405273437 55.447488784790039,-133.42138671875 55.483606338500977,-133.5050048828125 55.427217483520508)),((-133.57806396484375 55.497774124145508,-133.758056640625 55.487215042114258,-133.70248413085937 55.551385879516602,-133.57806396484375 55.497774124145508)),((-133.28945922851563 55.475824356079102,-133.43667602539062 55.527490615844727,-133.308349609375 55.554712295532227,-133.28945922851563 55.475824356079102)),((-133.50558471679687 55.693323135375977,-133.67779541015625 55.78416633605957,-133.29974365234375 55.793611526489258,-133.50558471679687 55.693323135375977)),((-133.24221801757812 55.77665901184082,-133.32916259765625 55.87748908996582,-133.21554565429687 55.861940383911133,-133.24221801757812 55.77665901184082)),((-158.86416625976562 55.80388069152832,-158.832763671875 55.893884658813477,-158.709716796875 55.831384658813477,-158.86416625976562 55.80388069152832)),((-134.24972534179687 55.81944465637207,-134.33889770507812 55.918054580688477,-134.09664916992187 55.918329238891602,-134.24972534179687 55.81944465637207)),((-155.58029174804687 55.774438858032227,-155.739990234375 55.828607559204102,-155.56390380859375 55.918603897094727,-155.58029174804687 55.774438858032227)),((-133.8477783203125 55.847490310668945,-133.92721557617187 55.911935806274414,-133.8477783203125 55.935266494750977,-133.8477783203125 55.847490310668945)),((-131.05056762695312 55.799722671508789,-131.14279174804687 55.196939468383789,-131.461669921875 55.286111831665039,-131.348876953125 55.644998550415039,-131.52194213867187 55.293054580688477,-131.82223510742187 55.450273513793945,-131.68389892578125 55.833330154418945,-131.2650146484375 55.960824966430664,-131.05056762695312 55.799722671508789)),((-131.51947021484375 55.915544509887695,-131.57693481445312 55.931940078735352,-131.39944458007812 55.963884353637695,-131.51947021484375 55.915544509887695)),((-133.69528198242187 55.896387100219727,-133.67971801757813 56.066385269165039,-133.278076171875 56.139719009399414,-133.69528198242187 55.896387100219727)),((-133.93112182617187 56.288331985473633,-133.94805908203125 56.301935195922852,-133.92556762695312 56.298051834106445,-133.93112182617187 56.288331985473633)),((-133.48858642578125 56.336938858032227,-132.1441650390625 55.480546951293945,-132.5625 55.567773818969727,-131.98858642578125 55.264162063598633,-132.21859741210937 54.992494583129883,-131.96304321289062 55.025827407836914,-132.00390625 54.690546035766602,-132.64138793945312 55.250276565551758,-133.22250366210937 55.283052444458008,-132.86749267578125 55.353883743286133,-133.12860107421875 55.494714736938477,-132.90835571289062 55.628046035766602,-133.37222290039062 55.620546340942383,-133.135009765625 55.881105422973633,-133.25836181640625 56.152490615844727,-133.61721801757812 56.207498550415039,-133.48858642578125 56.336938858032227)),((-132.09445190429687 56.093324661254883,-132.31887817382812 55.912210464477539,-132.71694946289062 56.151384353637695,-132.41778564453125 56.350831985473633,-132.09445190429687 56.093324661254883)),((-132.81723022460938 56.233880996704102,-133.05776977539062 56.347490310668945,-132.63555908203125 56.434160232543945,-132.81723022460938 56.233880996704102)),((-132.50085258483887 56.353326797485352,-132.49386596679687 56.435823440551758,-132.38668823242187 56.39860725402832,-132.50085258483887 56.353326797485352)),((-132.13247680664062 56.345270156860352,-132.05612182617187 56.111383438110352,-132.37387084960937 56.484437942504883,-132.13247680664062 56.345270156860352)),((-153.95889282226562 56.502779006958008,-154.13446044921875 56.505556106567383,-153.87387084960937 56.553323745727539,-153.95889282226562 56.502779006958008)),((-156.99664306640625 56.555551528930664,-157.3297119140625 56.535829544067383,-157.25167846679687 56.581666946411133,-156.99664306640625 56.555551528930664)),((-132.3980712890625 56.58360481262207,-132.43499755859375 56.589715957641602,-132.37942504882813 56.600549697875977,-132.3980712890625 56.58360481262207)),((-154.48138427734375 56.60169792175293,-154.40280151367187 56.546663284301758,-154.7874755859375 56.414968490600586,-154.48138427734375 56.60169792175293)),((-154.21194458007812 56.498880386352539,-154.35247802734375 56.541666030883789,-154.08499145507812 56.608049392700195,-154.21194458007812 56.498880386352539)),((-169.67337036132812 56.608598709106445,-169.47137451171875 56.59221076965332,-169.7861328125 56.613885879516602,-169.67337036132812 56.608598709106445)),((-132.7730712890625 56.494714736938477,-132.87359619140625 56.796106338500977,-132.52890014648437 56.595270156860352,-132.7730712890625 56.494714736938477)),((-133.98748779296875 56.870828628540039,-133.90280151367187 56.753053665161133,-134.02471923828125 56.647218704223633,-133.83056640625 56.796106338500977,-133.69137573242187 56.59971809387207,-133.92056274414062 56.614160537719727,-133.84609985351562 56.290834426879883,-133.97320556640625 56.356103897094727,-133.97332763671875 56.081666946411133,-134.0655517578125 56.305826187133789,-134.123046875 55.995828628540039,-134.06527709960937 56.550546646118164,-134.40890502929687 56.829439163208008,-133.98748779296875 56.870828628540039)),((-133.31777954101563 56.99388313293457,-132.92501831054687 56.643327713012695,-133.3519287109375 56.838602066040039,-133.08193969726562 56.523881912231445,-133.5755615234375 56.433603286743164,-133.69696044921875 56.831941604614258,-133.89056396484375 56.896944046020508,-133.73611450195312 56.89305305480957,-134.01806640625 57.014719009399414,-133.31777954101563 56.99388313293457)),((-153.25335693359375 56.998331069946289,-153.40750122070312 57.072771072387695,-153.23416137695312 57.205827713012695,-152.883056640625 57.150270462036133,-153.25335693359375 56.998331069946289)),((-170.1661376953125 57.16331672668457,-170.4139404296875 57.174165725708008,-170.15057373046875 57.228326797485352,-170.1661376953125 57.16331672668457)),((-135.79583740234375 56.986383438110352,-135.71054077148437 57.323610305786133,-135.54611206054687 57.129434585571289,-135.79583740234375 56.986383438110352)),((-134.9375 57.358888626098633,-134.65362358093262 56.163049697875977,-135.67279052734375 57.351938247680664,-134.9375 57.358888626098633)),((-134.79251098632812 57.300271987915039,-134.97470092773437 57.41526985168457,-134.81362915039062 57.416940689086914,-134.79251098632812 57.300271987915039)),((-153.20889282226562 57.812494277954102,-153.53640747070312 57.934717178344727,-153.35333251953125 57.936380386352539,-153.26974487304687 57.899164199829102,-153.20889282226562 57.812494277954102)),((-152.35443115234375 57.890275955200195,-152.50335693359375 57.933053970336914,-152.417236328125 57.976381301879883,-152.35443115234375 57.890275955200195)),((-153.116943359375 57.94999885559082,-152.15139770507812 57.604440689086914,-153.02279663085937 57.473604202270508,-152.5958251953125 57.369989395141602,-153.16946411132812 57.345544815063477,-152.95611572265625 57.253885269165039,-153.26028442382812 57.22776985168457,-153.5 57.063882827758789,-153.73165893554687 57.059717178344727,-153.54998779296875 56.983049392700195,-153.97970581054687 56.738603591918945,-153.73776245117187 57.130823135375977,-154.47943115234375 57.120271682739258,-154.10110473632812 57.116388320922852,-154.29779052734375 56.848878860473633,-154.80111694335937 57.286111831665039,-154.20721435546875 57.666666030883789,-153.6280517578125 57.269441604614258,-153.88027954101562 57.64305305480957,-153.58111572265625 57.612497329711914,-153.9283447265625 57.811105728149414,-153.4969482421875 57.627214431762695,-153.31527709960937 57.725824356079102,-153.47915458679199 57.839433670043945,-153.21304321289062 57.788331985473633,-153.15057373046875 57.863885879516602,-153.04806518554687 57.827493667602539,-153.292236328125 58.001665115356445,-153.116943359375 57.94999885559082)),((-153.18527221679687 58.092493057250977,-152.88778686523437 57.991106033325195,-153.41806030273437 58.05888557434082,-153.18527221679687 58.092493057250977)),((-136.43722534179687 57.846384048461914,-136.48443603515625 58.093324661254883,-136.33056640625 58.010278701782227,-136.43722534179687 57.846384048461914)),((-135.74276733398437 58.256105422973633,-135.48248291015625 58.155550003051758,-135.707763671875 57.978326797485352,-134.9302978515625 58.028047561645508,-135.2047119140625 57.942216873168945,-135.01055908203125 57.776941299438477,-135.88751220703125 57.988603591918945,-135.29696655273437 57.731660842895508,-134.92166137695312 57.75694465637207,-134.84332275390625 57.462770462036133,-135.80416870117187 57.763330459594727,-135.54278564453125 57.47221565246582,-135.83084106445312 57.385828018188477,-136.4122314453125 57.815828323364258,-136.02972412109375 57.849161148071289,-136.35220336914063 58.219438552856445,-135.74276733398437 58.256105422973633)),((-151.84722900390625 58.169717788696289,-151.89666557312012 58.194154739379883,-151.83554077148437 58.26860237121582,-151.84722900390625 58.169717788696289)),((-134.45443725585937 58.313325881958008,-134.25973510742187 58.19499397277832,-134.68389892578125 58.298334121704102,-134.56695556640625 58.340829849243164,-134.45443725585937 58.313325881958008)),((-152.4091796875 58.365549087524414,-151.9727783203125 58.233049392700195,-153.23138427734375 58.169160842895508,-152.4091796875 58.365549087524414)),((-134.67471313476562 58.160547256469727,-134.16915893554687 58.15971565246582,-133.87582397460937 57.672769546508789,-134.28860473632812 58.077219009399414,-133.86026000976562 57.360551834106445,-134.48666381835937 57.025552749633789,-134.61331176757812 57.224992752075195,-134.31027221679687 57.33610725402832,-134.572509765625 57.489717483520508,-134.3497314453125 57.54277229309082,-134.65444946289062 57.598329544067383,-134.9566650390625 58.407770156860352,-134.67471313476562 58.160547256469727)),((-152.49386596679687 58.47221565246582,-152.66055297851562 58.543329238891602,-152.3458251953125 58.627214431762695,-152.49386596679687 58.47221565246582)),((-160.95693969726562 58.556940078735352,-161.11309814453125 58.655275344848633,-160.68722534179687 58.818330764770508,-160.95693969726562 58.556940078735352)),((-152.31332397460937 58.908327102661133,-152.36026000976562 58.916383743286133,-152.16140747070312 58.942216873168945,-152.31332397460937 58.908327102661133)),((-150.69168090820313 59.306657791137695,-150.77667236328125 59.328882217407227,-150.61663818359375 59.389719009399414,-150.69168090820313 59.306657791137695)),((-153.41140747070312 59.330278396606445,-153.55221557617187 59.364717483520508,-153.403076171875 59.406938552856445,-153.41140747070312 59.330278396606445)),((-150.3114013671875 59.420549392700195,-150.44027709960937 59.401102066040039,-150.29278564453125 59.463052749633789,-150.3114013671875 59.420549392700195)),((-144.58499145507812 59.810274124145508,-144.50390625 59.894441604614258,-144.20889282226562 60.005556106567383,-144.58499145507812 59.810274124145508)),((-148.1611328125 59.941102981567383,-148.24581909179687 59.94249153137207,-147.99221801757812 60.040277481079102,-148.1611328125 59.941102981567383)),((-148.02780151367187 59.946657180786133,-147.88333129882812 60.067216873168945,-147.81723022460937 60.068887710571289,-148.02780151367187 59.946657180786133)),((-148.11553955078125 59.99638557434082,-147.96722412109375 60.153047561645508,-147.87664794921875 60.103883743286133,-148.11553955078125 59.99638557434082)),((-148.03390502929687 60.189432144165039,-148.15139770507812 60.041940689086914,-148.30972290039062 60.029718399047852,-148.03390502929687 60.189432144165039)),((-147.8499755859375 59.776941299438477,-147.193603515625 60.353326797485352,-146.92333984375 60.309160232543945,-147.8499755859375 59.776941299438477)),((-147.71194458007812 60.376100540161133,-147.75973510742187 60.165544509887695,-147.90972900390625 60.234720230102539,-147.71194458007812 60.376100540161133)),((-148.07943725585937 60.282770156860352,-148.14251708984375 60.320550918579102,-147.98330688476562 60.383882522583008,-148.07943725585937 60.282770156860352)),((-166.10971069335937 60.39915657043457,-165.68142700195312 60.294717788696289,-165.55972290039062 59.923608779907227,-166.19305419921875 59.754434585571289,-167.41806030273437 60.189424514770508,-166.10971069335937 60.39915657043457)),((-146.3538818359375 60.407495498657227,-146.07888793945312 60.405267715454102,-146.72415161132812 60.374711990356445,-146.3538818359375 60.407495498657227)),((-145.12277221679687 60.307214736938477,-145.28195190429688 60.329996109008789,-145.08694458007813 60.416666030883789,-145.12277221679687 60.307214736938477)),((-172.52029418945312 60.388330459594727,-172.20697021484375 60.313043594360352,-173.05364990234375 60.497209548950195,-172.52029418945312 60.388330459594727)),((-151.95556640625 60.422769546508789,-151.95111083984375 60.512216567993164,-151.85638427734375 60.489717483520508,-151.95556640625 60.422769546508789)),((-146.2469482421875 60.454996109008789,-146.320556640625 60.494157791137695,-145.74972534179687 60.59471321105957,-146.2469482421875 60.454996109008789)),((-147.37277221679687 60.661661148071289,-147.47555541992187 60.688882827758789,-147.31390380859375 60.677492141723633,-147.37277221679687 60.661661148071289)),((-147.92556762695312 60.662210464477539,-148.00418090820312 60.726938247680664,-147.84609985351562 60.69999885559082,-147.92556762695312 60.662210464477539)),((-148.14083862304688 60.642221450805664,-148.21417236328125 60.75444221496582,-148.10861206054687 60.736383438110352,-148.14083862304688 60.642221450805664)),((-164.98831176757813 60.82249641418457,-165.01751708984375 60.87443733215332,-164.90362358093262 60.853609085083008,-164.98831176757813 60.82249641418457)),((-146.75335693359375 60.807214736938477,-146.83193969726562 60.836381912231445,-146.744140625 60.881380081176758,-146.75335693359375 60.807214736938477)),((-147.15084838867187 60.86027717590332,-147.31777954101562 60.884164810180664,-147.07528686523438 60.899164199829102,-147.15084838867187 60.86027717590332)),((-147.92889404296875 60.806940078735352,-148.133056640625 60.799722671508789,-148.10665893554687 60.912492752075195,-147.92889404296875 60.806940078735352)),((-170.31890869140625 63.254716873168945,-170.31585693359375 63.253877639770508,-170.29611206054687 63.238046646118164,-170.31890869140625 63.254716873168945)),((-170.31890869140625 63.254716873168945,-170.36221313476562 63.282495498657227,-170.34188842773437 63.271127700805664,-170.31890869140625 63.254716873168945)),((-170.46676635742187 63.334184646606445,-170.40390014648437 63.304437637329102,-170.48583984375 63.341104507446289,-170.46676635742187 63.334184646606445)),((-170.54364013671875 63.359712600708008,-170.49026489257812 63.341928482055664,-170.5511474609375 63.360551834106445,-170.54364013671875 63.359712600708008)),((-170.59500122070312 63.37193489074707,-170.58197021484375 63.368051528930664,-170.86325073242187 63.418512344360352,-170.59500122070312 63.37193489074707)),((-162.37747192382812 63.544443130493164,-162.70361328125 63.571664810180664,-162.4202880859375 63.63749885559082,-162.37747192382812 63.544443130493164)),((-171.465576171875 63.606660842895508,-170.30001831054687 63.694154739379883,-168.70086669921875 63.290544509887695,-169.6661376953125 62.943315505981445,-170.51889038085937 63.37803840637207,-170.856689453125 63.461938858032227,-171.46112060546875 63.314714431762695,-171.850830078125 63.508607864379883,-171.72695922851562 63.792215347290039,-171.465576171875 63.606660842895508)),((-166.6591796875 66.10331916809082,-166.443603515625 66.180818557739258,-166.16946411132812 66.221376419067383,-166.6591796875 66.10331916809082)),((-165.36444091796875 66.42637825012207,-165.4708251953125 66.414155960083008,-164.76223754882812 66.53831672668457,-165.36444091796875 66.42637825012207)),((-156.44696044921875 71.263612747192383,-155.58694458007812 71.16276741027832,-156.1824951171875 70.91832160949707,-155.97360229492187 70.755830764770508,-155.08749389648437 71.151384353637695,-154.24386596679687 70.779436111450195,-152.25250244140625 70.835268020629883,-152.49859619140625 70.649431228637695,-152.07611083984375 70.57499885559082,-152.62942504882812 70.55748176574707,-151.73248291015625 70.557207107543945,-151.96609497070313 70.44359016418457,-149.17471313476562 70.490816116333008,-144.95220947265625 69.968324661254883,-143.28057861328125 70.118318557739258,-141.00299072265625 69.642366409301758,-140.99554443359375 60.307214736938477,-139.06805419921875 60.35222053527832,-139.18890380859375 60.088884353637695,-137.5908203125 59.238603591918945,-137.47805786132812 58.90721321105957,-135.47360229492187 59.801935195922852,-133.42999267578125 58.459161758422852,-131.82415771484375 56.596940994262695,-130.01507568359375 55.909181594848633,-130.17471313476562 55.75444221496582,-129.99053955078125 55.28166389465332,-130.68612670898437 54.761941909790039,-131.00863647460938 55.004167556762695,-130.461669921875 55.327775955200195,-131.05612182617187 55.122766494750977,-130.6138916015625 55.296106338500977,-130.86416625976562 55.308603286743164,-131.01028442382812 56.106386184692383,-131.90057373046875 55.85527229309082,-131.75250244140625 55.807771682739258,-131.95498657226562 55.501108169555664,-132.1602783203125 55.578607559204102,-131.76974487304687 56.196939468383789,-132.7913818359375 57.088045120239258,-133.50836181640625 57.193605422973633,-133.06304931640625 57.348878860473633,-133.64056396484375 57.696382522583008,-133.00057983398437 57.51500129699707,-133.55694580078125 57.902490615844727,-133.12136840820312 57.857500076293945,-134.05499267578125 58.071939468383789,-133.7691650390625 58.518327713012695,-134.1541748046875 58.197771072387695,-134.510009765625 58.353883743286133,-134.76141357421875 58.382211685180664,-135.33526611328125 59.468324661254883,-135.30471801757812 59.08360481262207,-135.55056762695312 59.228876113891602,-135.08554077148437 58.233049392700195,-135.91555786132813 58.383050918579102,-136.06832885742187 58.817773818969727,-135.76947021484375 58.900270462036133,-136.1622314453125 59.033609390258789,-136.23471069335938 58.750833511352539,-137.05667114257812 59.068605422973633,-137.12554931640625 58.821939468383789,-136.5736083984375 58.838602066040039,-136.02749633789063 58.387216567993164,-136.6541748046875 58.215272903442383,-138.443603515625 59.191659927368164,-139.71054077148437 59.495828628540039,-139.49386596679687 59.982210159301758,-139.28555297851562 59.571382522583008,-138.89279174804687 59.806657791137695,-139.5 60.033052444458008,-140.40335083007813 59.69804573059082,-141.37664794921875 59.866388320922852,-141.39083862304687 60.138605117797852,-143.92333984375 59.994157791137695,-144.9364013671875 60.301660537719727,-144.61138916015625 60.715547561645508,-145.29415893554687 60.350275039672852,-145.85943603515625 60.491662979125977,-145.62582397460937 60.671937942504883,-146.26113891601562 60.648050308227539,-146.04083251953125 60.798608779907227,-146.65335083007812 60.699716567993164,-146.1241455078125 60.843324661254883,-146.75668334960937 60.955270767211914,-146.30084228515625 61.130823135375977,-147.366943359375 60.887773513793945,-147.54666137695312 61.154436111450195,-147.86526489257812 60.832498550415039,-148.05221557617188 60.949716567993164,-147.7197265625 61.278047561645508,-148.69973754882812 60.78972053527832,-148.197509765625 60.626100540161133,-148.68417358398437 60.448328018188477,-147.93695068359375 60.462213516235352,-148.43112182617187 60.192766189575195,-148.0977783203125 60.207498550415039,-148.31777954101562 60.168886184692383,-148.43582153320312 59.948877334594727,-149.2861328125 59.86888313293457,-149.41696166992187 60.118326187133789,-149.52584838867187 59.71666145324707,-149.73193359375 59.960550308227539,-149.74359130859375 59.658601760864258,-150.0341796875 59.796388626098633,-149.91583251953125 59.714715957641602,-150.01364135742187 59.62748908996582,-150.34942626953125 59.465547561645508,-150.213623046875 59.71666145324707,-150.47360229492187 59.464441299438477,-150.54168701171875 59.59166145324707,-150.90750122070312 59.243326187133789,-151.98056030273438 59.280550003051758,-150.99276733398437 59.777215957641602,-151.87664794921875 59.753885269165039,-151.30389404296875 60.385553359985352,-151.40890502929687 60.727487564086914,-150.399169921875 61.03721809387207,-149.028076171875 60.847772598266602,-150.06417846679687 61.154436111450195,-149.41696166992187 61.508607864379883,-151.5836181640625 60.976938247680664,-152.4302978515625 60.288888931274414,-153.10305786132812 60.289438247680664,-152.57720947265625 60.064714431762695,-154.26083374023437 59.142221450805664,-153.26779174804687 58.848604202270508,-154.10333251953125 58.481935501098633,-154.23361206054687 58.131105422973633,-156.489990234375 57.331110000610352,-156.54861450195312 56.977487564086914,-158.42306518554687 56.443880081176758,-158.64999389648437 56.264444351196289,-158.12054443359375 56.233606338500977,-158.50527954101562 55.988885879516602,-158.60110473632812 56.188043594360352,-159.667236328125 55.577219009399414,-159.84109497070312 55.851106643676758,-161.25418090820312 55.346940994262695,-161.48553466796875 55.481103897094727,-161.14169311523437 55.538888931274414,-161.5625 55.622766494750977,-161.9677734375 55.101938247680664,-162.45416259765625 55.038331985473633,-162.62664794921875 55.299440383911133,-162.5625 54.955270767211914,-163.1844482421875 55.139719009399414,-163.04446411132812 54.937494277954102,-163.36026000976562 54.81193733215332,-163.25863647460937 54.973321914672852,-163.32305908203125 55.121660232543945,-161.79998779296875 55.886659622192383,-160.24972534179687 55.770547866821289,-160.57470703125 55.986658096313477,-160.34695434570312 56.285554885864258,-158.64056396484375 56.761110305786133,-158.64889526367187 57.053323745727539,-157.93804931640625 57.491937637329102,-157.39666557312012 57.490549087524414,-157.7066650390625 57.643327713012695,-157.6099853515625 58.089715957641602,-157.13861083984375 58.162492752075195,-157.55361938476562 58.38249397277832,-156.7791748046875 59.151384353637695,-158.18832397460938 58.606386184692383,-158.49249267578125 58.99943733215332,-157.99276733398437 58.904993057250977,-158.53695678710937 59.175271987915039,-158.89752197265625 58.395547866821289,-160.32666015625 59.059717178344727,-162.17138671875 58.649721145629883,-161.56582641601562 59.103609085083008,-161.99221801757812 59.144159317016602,-161.70526123046875 59.496660232543945,-162.15139770507812 60.245546340942383,-162.37222290039062 60.176103591918945,-161.87942504882812 60.702219009399414,-162.5694580078125 60.316385269165039,-162.52166557312012 59.992769241333008,-164.06527709960937 59.824167251586914,-165.42529296875 60.555269241333008,-164.66500854492187 60.911661148071289,-164.26446533203125 60.778879165649414,-164.42916870117187 60.553323745727539,-163.957763671875 60.780275344848633,-163.66946411132812 60.587213516235352,-163.40972900390625 60.756662368774414,-163.89561462402344 60.85688591003418,-163.5513916015625 60.903879165649414,-165.15029907226562 60.928049087524414,-164.82223510742187 61.111108779907227,-165.12054443359375 61.083879470825195,-165.13861083984375 61.256662368774414,-165.16372680664062 61.170045852661133,-165.3699951171875 61.200830459594727,-165.15057373046875 61.416940689086914,-165.05967712402344 61.416841506958008,-164.99842834472656 61.469770431518555,-164.84527587890625 61.494440078735352,-164.71609497070313 61.625551223754883,-165.01724243164062 61.500001907348633,-165.0755615234375 61.432214736938477,-165.1611328125 61.432497024536133,-165.28750610351562 61.333879470825195,-165.40750122070312 61.208330154418945,-165.34136962890625 61.15721321105957,-165.38668823242187 61.068605422973633,-166.19778442382812 61.59471321105957,-165.24722290039063 62.446100234985352,-164.63641357421875 62.417497634887695,-164.852783203125 62.570276260375977,-164.47915458679199 62.745828628540039,-164.87777709960937 62.835550308227539,-164.31832885742187 63.00694465637207,-164.41055297851563 63.211938858032227,-163.11166381835937 63.051935195922852,-162.31195068359375 63.541109085083008,-161.15167236328125 63.51249885559082,-160.77749633789062 63.868600845336914,-161.5291748046875 64.41887092590332,-160.78390502929687 64.721925735473633,-161.1824951171875 64.93748664855957,-162.790283203125 64.33610725402832,-163.17001342773437 64.65526008605957,-163.17584228515625 64.407487869262695,-166.12136840820312 64.574708938598633,-166.96194458007812 65.188875198364258,-166.05889892578125 65.256105422973633,-168.131103515625 65.665544509887695,-164.35360717773437 66.59471321105957,-163.625 66.567216873168945,-164.18832397460937 66.19609260559082,-163.65640258789062 66.07054328918457,-161.00335693359375 66.204164505004883,-161.91000366210937 66.274431228637695,-161.9061279296875 66.53526496887207,-162.63613891601562 66.868867874145508,-162.33694458007812 66.958330154418945,-161.60055541992187 66.447755813598633,-160.23056030273438 66.399721145629883,-160.26419067382812 66.647493362426758,-161.50668334960937 66.533876419067383,-161.89779663085937 66.72831916809082,-161.50112915039062 66.979158401489258,-162.46112060546875 66.99247932434082,-162.35055541992187 67.161378860473633,-163.73248291015625 67.113603591918945,-164.1241455078125 67.609987258911133,-166.82778930664062 68.35081672668457,-166.37260437011719 68.416765213012695,-166.2158203125 68.88304328918457,-163.64529418945312 69.106935501098633,-161.94223022460937 70.307207107543945,-162.11886596679687 70.15165901184082,-159.9375 70.593324661254883,-160.1986083984375 70.471651077270508,-159.83612060546875 70.268327713012695,-159.28555297851562 70.530550003051758,-160.12442016601562 70.615266799926758,-159.66806030273438 70.798036575317383,-157.97943115234375 70.837495803833008,-156.44696044921875 71.263612747192383),(-135.55416870117187 58.329996109008789,-135.62527465820313 58.383050918579102,-135.72610473632812 58.359437942504883,-135.55416870117187 58.329996109008789)))"
diff --git a/private/templates/default/countries.csv b/private/templates/default/countries.csv
index 4859f9e76b..7004aae3ba 100644
--- a/private/templates/default/countries.csv
+++ b/private/templates/default/countries.csv
@@ -1,248 +1,248 @@
-"uuid","name","L0","code","lon","lat","lat_min","lon_min","lon_max","lat_max","level","gis_feature_type"
-"urn:iso:std:iso:3166:-1:code:AF","Afghanistan","Afghanistan","AF",65.216,33.677,29.406105,60.504166,74.915741,38.472115,"L0",3
-"urn:iso:std:iso:3166:-1:code:AX","Åland Islands","Åland Islands","AX",19.952,60.198,59.976944,19.510555,20.442497,60.40361,"L0",3
-"urn:iso:std:iso:3166:-1:code:AL","Albania","Albania","AL",20.068,41.143,39.644722,19.282497,21.054165,42.661942,"L0",3
-"urn:iso:std:iso:3166:-1:code:DZ","Algeria","Algeria","DZ",2.632,28.163,18.976387,-8.667223,11.986475,37.091385,"L0",3
-"urn:iso:std:iso:3166:-1:code:AS","American Samoa","American Samoa","AS",-170.73,-14.318,-14.375555,-170.826111,-169.438324,-14.166389,"L0",3
-"urn:iso:std:iso:3166:-1:code:AD","Andorra","Andorra","AD",1.576,42.549,42.436104,1.421389,1.78172,42.656387,"L0",3
-"urn:iso:std:iso:3166:-1:code:AO","Angola","Angola","AO",17.544,-12.296,-18.016392,11.663332,24.084442,-4.388991,"L0",3
-"urn:iso:std:iso:3166:-1:code:AI","Anguilla","Anguilla","AI",-63.032,18.237,18.164444,-63.167778,-62.969452,18.276665,"L0",3
-"urn:iso:std:iso:3166:-1:code:AQ","Antarctica","Antarctica","AQ",21.304,-80.446,-90,-180,180,-60.501945,"L0",3
-"urn:iso:std:iso:3166:-1:code:AG","Antigua and Barbuda","Antigua and Barbuda","AG",-61.783,17.078,16.989719,-61.891113,-61.666389,17.724998,"L0",3
-"urn:iso:std:iso:3166:-1:code:AR","Argentina","Argentina","AR",-65.167,-35.377,-55.051674,-73.583618,-53.649727,-21.780521,"L0",3
-"urn:iso:std:iso:3166:-1:code:AM","Armenia","Armenia","AM",44.563,40.534,38.841148,43.453888,46.62249,41.29705,"L0",3
-"urn:iso:std:iso:3166:-1:code:AW","Aruba","Aruba","AW",-69.977,12.517,12.41111,-70.063339,-69.873337,12.631109,"L0",3
-"urn:iso:std:iso:3166:-1:code:AU","Australia","Australia","AU",136.189,-24.973,-54.753891,112.907211,159.101898,-10.05139,"L0",3
-"urn:iso:std:iso:3166:-1:code:AT","Austria","Austria","AT",14.912,47.683,46.407494,9.533569,17.166386,49.018883,"L0",3
-"urn:iso:std:iso:3166:-1:code:AZ","Azerbaijan","Azerbaijan","AZ",47.395,40.43,38.389153,44.778862,50.374992,41.897057,"L0",3
-"urn:iso:std:iso:3166:-1:code:BS","Bahamas","Bahamas","BS",-78.014,24.628,20.915276,-78.978897,-72.737503,26.929165,"L0",3
-"urn:iso:std:iso:3166:-1:code:BH","Bahrain","Bahrain","BH",50.562,26.019,25.571941,50.453049,50.822495,26.288887,"L0",3
-"urn:iso:std:iso:3166:-1:code:BD","Bangladesh","Bangladesh","BD",89.941,24.218,20.738049,88.04332,92.669342,26.631939,"L0",3
-"urn:iso:std:iso:3166:-1:code:BB","Barbados","Barbados","BB",-59.559,13.153,13.050554,-59.659447,-59.426949,13.337221,"L0",3
-"urn:iso:std:iso:3166:-1:code:BY","Belarus","Belarus","BY",28.047,53.54,51.251846,23.1654,32.741379,56.16777,"L0",3
-"urn:iso:std:iso:3166:-1:code:BE","Belgium","Belgium","BE",4.664,50.643,49.504166,2.541667,6.398204,51.503609,"L0",3
-"urn:iso:std:iso:3166:-1:code:BZ","Belize","Belize","BZ",-88.602,17.219,15.889851,-89.2164,-87.7789,18.489902,"L0",3
-"urn:iso:std:iso:3166:-1:code:BJ","Benin","Benin","BJ",2.469,10.541,6.218721,0.776667,3.855,12.396658,"L0",3
-"urn:iso:std:iso:3166:-1:code:BM","Bermuda","Bermuda","BM",-64.709,32.336,32.260551,-64.876114,-64.638626,32.382217,"L0",3
-"urn:iso:std:iso:3166:-1:code:BT","Bhutan","Bhutan","BT",90.429,27.415,26.703049,88.751938,92.115265,28.325275,"L0",3
-"urn:iso:std:iso:3166:-1:code:BO","Bolivia","Bolivia","BO",-64.671,-16.715,-22.901112,-69.656189,-57.521118,-9.679195,"L0",3
-"urn:iso:std:iso:3166:-1:code:BA","Bosnia and Herzegovina","Bosnia and Herzegovina","BA",17.786,44.169,42.565826,15.736387,19.621765,45.265945,"L0",3
-"urn:iso:std:iso:3166:-1:code:BW","Botswana","Botswana","BW",23.815,-22.182,-26.875557,19.996109,29.373623,-17.781391,"L0",3
-"urn:iso:std:iso:3166:-1:code:BV","Bouvet Island","Bouvet Island","BV",3.412,-54.422,-54.462784,3.341666,3.484722,-54.383614,"L0",3
-"urn:iso:std:iso:3166:-1:code:BR","Brazil","Brazil","BR",-53.089,-10.772,-33.743896,-74.010559,-29.84,5.273889,"L0",3
-"urn:iso:std:iso:3166:-1:code:IO","British Indian Ocean Territory","British Indian Ocean Territory","IO",72.416,-7.335,-7.436666,71.258606,72.494431,-5.249722,"L0",3
-"urn:iso:std:iso:3166:-1:code:VG","British Virgin Islands","British Virgin Islands","VG",-64.39,18.483,18.383888,-64.700287,-64.26918,18.748608,"L0",3
-"urn:iso:std:iso:3166:-1:code:BN","Brunei Darussalam","Brunei Darussalam","BN",114.591,4.468,4.017499,114.095078,115.36026,5.053054,"L0",3
-"urn:iso:std:iso:3166:-1:code:BG","Bulgaria","Bulgaria","BG",25.231,42.761,41.24305,22.365276,28.606384,44.224716,"L0",3
-"urn:iso:std:iso:3166:-1:code:BF","Burkina Faso","Burkina Faso","BF",-1.74,12.278,9.393888,-5.521111,2.397925,15.082777,"L0",3
-"urn:iso:std:iso:3166:-1:code:BI","Burundi","Burundi","BI",29.887,-3.356,-4.448056,28.983887,30.853886,-2.298056,"L0",3
-"urn:iso:std:iso:3166:-1:code:KH","Cambodia","Cambodia","KH",104.564,12.714,10.422739,102.345543,107.636383,14.708618,"L0",3
-"urn:iso:std:iso:3166:-1:code:CM","Cameroon","Cameroon","CM",12.277,5.133,1.654166,8.502222,16.207222,13.085278,"L0",3
-"urn:iso:std:iso:3166:-1:code:CA","Canada","Canada","CA",-109.433,59.081,41.675552,-141.002991,-52.614449,83.113876,"L0",3
-"urn:iso:std:iso:3166:-1:code:CV","Cape Verde","Cape Verde","CV",-23.634,15.071,14.81111,-25.360558,-22.665836,17.193054,"L0",3
-"urn:iso:std:iso:3166:-1:code:KY","Cayman Islands","Cayman Islands","KY",-81.198,19.314,19.264721,-81.401123,-79.732788,19.762218,"L0",3
-"urn:iso:std:iso:3166:-1:code:CF","Central African Republic","Central African Republic","CF",20.483,6.571,2.220833,14.41861,27.460278,11.001389,"L0",3
-"urn:iso:std:iso:3166:-1:code:TD","Chad","Chad","TD",18.665,15.361,7.457777,13.461666,24.002747,23.450554,"L0",3
-"urn:iso:std:iso:3166:-1:code:CL","Chile","Chile","CL",-69.433,-23.389,-55.919724,-109.449173,-66.419174,-17.50528,"L0",3
-"urn:iso:std:iso:3166:-1:code:CN","China","China","CN",106.514,33.42,18.168884,73.617203,134.77359,53.554436,"L0",3
-"urn:iso:std:iso:3166:-1:code:CX","Christmas Island","Christmas Island","CX",105.704,-10.444,-10.51097,105.628998,105.7519,-10.38408,"L0",3
-"urn:iso:std:iso:3166:-1:code:CC","Cocos (Keeling) Islands","Cocos (Keeling) Islands","CC",96.839,-12.173,-12.199999,96.81749,96.924423,-12.128332,"L0",3
-"urn:iso:std:iso:3166:-1:code:CO","Colombia","Colombia","CO",-73.076,3.9,-4.236874,-81.722778,-66.871887,13.378611,"L0",3
-"urn:iso:std:iso:3166:-1:code:KM","Comoros","Comoros","KM",43.337,-11.758,-12.383057,43.213608,44.53083,-11.366945,"L0",3
-"urn:iso:std:iso:3166:-1:code:CG","Congo","Congo","CG",15.986,-0.055,-5.019444,11.140661,18.643608,3.713055,"L0",3
-"urn:iso:std:iso:3166:-1:code:CK","Cook Islands","Cook Islands","CK",-159.782,-21.219,-21.940834,-165.850281,-157.305878,-8.948057,"L0",3
-"urn:iso:std:iso:3166:-1:code:CR","Costa Rica","Costa Rica","CR",-83.946,9.971,8.025669,-85.911392,-82.561401,11.21361,"L0",3
-"urn:iso:std:iso:3166:-1:code:CI","Cote d'Ivoire","Cote d'Ivoire","CI",-5.556,7.632,4.344722,-8.606384,-2.487778,10.735256,"L0",3
-"urn:iso:std:iso:3166:-1:code:HR","Croatia","Croatia","HR",16.693,45.723,42.39666,13.496387,19.426109,46.535828,"L0",3
-"urn:iso:std:iso:3166:-1:code:CU","Cuba","Cuba","CU",-77.781,21.297,19.821941,-84.953339,-74.130844,23.204166,"L0",3
-"urn:iso:std:iso:3166:-1:code:CY","Cyprus","Cyprus","CY",33.219,35.043,34.56255,32.269165,34.590553,35.690277,"L0",3
-"urn:iso:std:iso:3166:-1:code:CZ","Czech Republic","Czech Republic","CZ",15.338,49.743,48.581379,12.093704,18.852219,51.053604,"L0",3
-"urn:iso:std:iso:3166:-1:code:CD","Democratic Republic of the Congo","Democratic Republic of the Congo","CD",23.654,-2.876,-13.458057,12.214552,31.302776,5.381389,"L0",3
-"urn:iso:std:iso:3166:-1:code:DK","Denmark","Denmark","DK",9.264,56.058,54.561661,8.087221,15.15,57.746666,"L0",3
-"urn:iso:std:iso:3166:-1:code:DJ","Djibouti","Djibouti","DJ",42.516,11.9,10.941944,41.75972,43.42083,12.708332,"L0",3
-"urn:iso:std:iso:3166:-1:code:DM","Dominica","Dominica","DM",-61.356,15.475,15.198055,-61.491394,-61.250557,15.631943,"L0",3
-"urn:iso:std:iso:3166:-1:code:DO","Dominican Republic","Dominican Republic","DO",-70.729,19.015,17.540276,-72.003067,-68.322235,19.93111,"L0",3
-"urn:iso:std:iso:3166:-1:code:EC","Ecuador","Ecuador","EC",-78.497,-1.385,-5.009132,-91.663895,-75.21608,1.437778,"L0",3
-"urn:iso:std:iso:3166:-1:code:EG","Egypt","Egypt","EG",29.872,26.494,21.994164,24.706665,36.898331,31.646942,"L0",3
-"urn:iso:std:iso:3166:-1:code:SV","El Salvador","El Salvador","SV",-88.866,13.736,13.156387,-90.108337,-87.684723,14.431982,"L0",3
-"urn:iso:std:iso:3166:-1:code:GQ","Equatorial Guinea","Equatorial Guinea","GQ",10.488,1.607,-1.479445,5.615277,11.353888,3.763333,"L0",3
-"urn:iso:std:iso:3166:-1:code:ER","Eritrea","Eritrea","ER",38.219,16.045,12.363888,36.443283,43.121384,17.994881,"L0",3
-"urn:iso:std:iso:3166:-1:code:EE","Estonia","Estonia","EE",25.793,58.674,57.522217,21.83194,28.195274,59.668327,"L0",3
-"urn:iso:std:iso:3166:-1:code:ET","Ethiopia","Ethiopia","ET",39.616,8.626,3.406389,32.991104,47.988243,14.88361,"L0",3
-"urn:iso:std:iso:3166:-1:code:FK","Falkland Islands (Malvinas)","Falkland Islands (Malvinas)","FK",-58.694,-51.665,-52.343056,-61.315834,-57.731392,-51.249451,"L0",3
-"urn:iso:std:iso:3166:-1:code:FO","Faroe Islands","Faroe Islands","FO",-6.864,62.05,61.388329,-7.435,-6.388612,62.396942,"L0",3
-"urn:iso:std:iso:3166:-1:code:FJ","Fiji","Fiji","FJ",177.974,-17.819,-20.674442,-180,180,-12.481943,"L0",3
-"urn:iso:std:iso:3166:-1:code:FI","Finland","Finland","FI",26.272,64.504,59.804993,20.580929,31.588928,70.088882,"L0",3
-"urn:iso:std:iso:3166:-1:code:FR","France","France","FR",2.55,46.565,41.364166,-5.134723,9.562222,51.09111,"L0",3
-"urn:iso:std:iso:3166:-1:code:GF","French Guiana","French Guiana","GF",-53.241,3.924,2.112222,-54.603783,-51.647781,5.755555,"L0",3
-"urn:iso:std:iso:3166:-1:code:PF","French Polynesia","French Polynesia","PF",-149.462,-17.626,-27.915554,-152.87973,-134.941406,-7.888333,"L0",3
-"urn:iso:std:iso:3166:-1:code:TF","French Southern and Antarctic Lands","French Southern and Antarctic Lands","TF",69.117,-49.302,-49.725006,42.721107,77.588882,-17.051113,"L0",3
-"urn:iso:std:iso:3166:-1:code:GA","Gabon","Gabon","GA",11.797,-0.591,-3.925277,8.698332,14.520555,2.317898,"L0",3
-"urn:iso:std:iso:3166:-1:code:GM","Gambia","Gambia","GM",-15.386,13.453,13.059977,-16.821667,-13.798613,13.826387,"L0",3
-"urn:iso:std:iso:3166:-1:code:GE","Georgia","Georgia","GE",43.518,42.176,41.046097,40.002968,46.710815,43.584717,"L0",3
-"urn:iso:std:iso:3166:-1:code:DE","Germany","Germany","DE",9.851,51.11,47.274719,5.864166,15.038887,55.056664,"L0",3
-"urn:iso:std:iso:3166:-1:code:GH","Ghana","Ghana","GH",-1.207,7.96,4.726388,-3.249167,1.202778,11.166666,"L0",3
-"urn:iso:std:iso:3166:-1:code:GI","Gibraltar","Gibraltar","GI",-5.345,36.138,36.112175,-5.35624,-5.334508,36.163307,"L0",3
-"urn:iso:std:iso:3166:-1:code:GR","Greece","Greece","GR",21.766,39.666,34.808884,19.37611,28.238049,41.748322,"L0",3
-"urn:iso:std:iso:3166:-1:code:GL","Greenland","Greenland","GL",-41.391,74.719,59.790276,-73.053604,-12.155001,83.623596,"L0",3
-"urn:iso:std:iso:3166:-1:code:GD","Grenada","Grenada","GD",-61.678,12.118,11.996387,-61.789726,-61.418617,12.529165,"L0",3
-"urn:iso:std:iso:3166:-1:code:GP","Guadeloupe","Guadeloupe","GP",-61.441,16.286,15.869999,-62.873062,-60.988617,17.930275,"L0",3
-"urn:iso:std:iso:3166:-1:code:GU","Guam","Guam","GU",144.707,13.385,13.234997,144.634155,144.953308,13.65361,"L0",3
-"urn:iso:std:iso:3166:-1:code:GT","Guatemala","Guatemala","GT",-90.398,15.256,13.745832,-92.24678,-88.214737,17.82111,"L0",3
-"urn:iso:std:iso:3166:-1:code:GG","Guernsey","Guernsey","GG",-2.576,49.459,49.422493,-2.670278,-2.500278,49.508888,"L0",3
-"urn:iso:std:iso:3166:-1:code:GN","Guinea","Guinea","GN",-10.942,10.439,7.198889,-15.081112,-7.646536,12.6775,"L0",3
-"urn:iso:std:iso:3166:-1:code:GW","Guinea-Bissau","Guinea-Bissau","GW",-14.651,12.125,10.922777,-16.71777,-13.643057,12.684721,"L0",3
-"urn:iso:std:iso:3166:-1:code:GY","Guyana","Guyana","GY",-58.974,4.792,1.185555,-61.389725,-56.470634,8.535276,"L0",3
-"urn:iso:std:iso:3166:-1:code:HT","Haiti","Haiti","HT",-72.278,19.142,18.022778,-74.467789,-71.628891,20.09222,"L0",3
-"urn:iso:std:iso:3166:-1:code:HM","Heard Island and McDonald Islands","Heard Island and McDonald Islands","HM",73.507,-53.111,-53.199448,73.234436,73.77388,-52.964172,"L0",3
-"urn:iso:std:iso:3166:-1:code:VA","Holy See (Vatican City)","Holy See (Vatican City)","VA",12.451,41.904,41.9014260247,12.4450903309,12.456660171,41.9079890334,"L0",3
-"urn:iso:std:iso:3166:-1:code:HN","Honduras","Honduras","HN",-86.863,14.819,12.979721,-89.351959,-83.131851,17.420277,"L0",3
-"urn:iso:std:iso:3166:-1:code:HK","Hong Kong","Hong Kong","HK",114.129,22.423,22.193607,113.822769,114.390266,22.5505482469,"L0",3
-"urn:iso:std:iso:3166:-1:code:HU","Hungary","Hungary","HU",19.134,47.07,45.748329,16.111805,22.894804,48.57666,"L0",3
-"urn:iso:std:iso:3166:-1:code:IS","Iceland","Iceland","IS",-18.48,64.764,63.389999,-24.542225,-13.499445,66.536102,"L0",3
-"urn:iso:std:iso:3166:-1:code:IN","India","India","IN",78.5,21,6.745554,68.139435,97.380539,35.506104,"L0",3
-"urn:iso:std:iso:3166:-1:code:ID","Indonesia","Indonesia","ID",114.252,-0.976,-10.93,95.008026,141.007019,5.913888,"L0",3
-"urn:iso:std:iso:3166:-1:code:IR","Iran (Islamic Republic of)","Iran (Islamic Republic of)","IR",54.301,32.565,25.075275,44.034157,63.341934,39.78054,"L0",3
-"urn:iso:std:iso:3166:-1:code:IQ","Iraq","Iraq","IQ",43.772,33.048,29.061661,38.794701,48.563881,37.38472,"L0",3
-"urn:iso:std:iso:3166:-1:code:IE","Ireland","Ireland","IE",-8.152,53.177,51.445549,-10.474724,-6.013056,55.380272,"L0",3
-"urn:iso:std:iso:3166:-1:code:IM","Isle of Man","Isle of Man","IM",-4.527,54.229,54.05555,-4.788611,-4.307501,54.416664,"L0",3
-"urn:iso:std:iso:3166:-1:code:IL","Israel","Israel","IL",34.851,31.026,29.486706,34.267578,35.683052,33.270271,"L0",3
-"urn:iso:std:iso:3166:-1:code:IT","Italy","Italy","IT",12.8,42.7,36.649162,6.61976,18.514999,47.094719,"L0",3
-"urn:iso:std:iso:3166:-1:code:JM","Jamaica","Jamaica","JM",-77.32,18.151,17.696663,-78.373901,-76.221115,18.522499,"L0",3
-"urn:iso:std:iso:3166:-1:code:JP","Japan","Japan","JP",139.068,36.491,24.250832,122.935257,153.96579,45.486382,"L0",3
-"urn:iso:std:iso:3166:-1:code:JE","Jersey","Jersey","JE",-2.129,49.219,49.16777,-2.2475,-2.015,49.261108,"L0",3
-"urn:iso:std:iso:3166:-1:code:JO","Jordan","Jordan","JO",36.319,30.703,29.188889,34.959999,39.301109,33.377594,"L0",3
-"urn:iso:std:iso:3166:-1:code:KZ","Kazakhstan","Kazakhstan","KZ",67.301,48.16,40.594437,46.499161,87.348206,55.44471,"L0",3
-"urn:iso:std:iso:3166:-1:code:KE","Kenya","Kenya","KE",37.858,0.53,-4.669618,33.907219,41.905167,4.622499,"L0",3
-"urn:iso:std:iso:3166:-1:code:KI","Kiribati","Kiribati","KI",175.036,-1.508,-11.466665,-172.233337,176.85025,4.725832,"L0",3
-"urn:iso:std:iso:3166:-1:code:KP","Korea, Democratic People's Republic of","Korea, Democratic People's Republic of","KP",126.451,39.778,37.671379,124.322769,130.697418,43.008324,"L0",3
-"urn:iso:std:iso:3166:-1:code:KR","Korea, Republic of","Korea, Republic of","KR",128.103,36.504,33.190269,124.609711,130.924133,38.625244,"L0",3
-"urn:iso:std:iso:3166:-1:code:KW","Kuwait","Kuwait","KW",47.376,29.476,28.538883,46.546944,48.416588,30.084438,"L0",3
-"urn:iso:std:iso:3166:-1:code:KG","Kyrgyzstan","Kyrgyzstan","KG",74.555,41.465,39.191856,69.248871,80.283325,43.216904,"L0",3
-"urn:iso:std:iso:3166:-1:code:LA","Lao People's Democratic Republic","Lao People's Democratic Republic","LA",102.471,19.905,13.926664,100.09137,107.695251,22.500832,"L0",3
-"urn:iso:std:iso:3166:-1:code:LV","Latvia","Latvia","LV",25.641,56.858,55.674835,20.968605,28.237774,58.084435,"L0",3
-"urn:iso:std:iso:3166:-1:code:LB","Lebanon","Lebanon","LB",35.888,33.92,33.061943,35.10083,36.623741,34.647499,"L0",3
-"urn:iso:std:iso:3166:-1:code:LS","Lesotho","Lesotho","LS",28.243,-29.581,-30.650528,27.011108,29.456108,-28.569447,"L0",3
-"urn:iso:std:iso:3166:-1:code:LR","Liberia","Liberia","LR",-9.657,6.682,4.343333,-11.492331,-7.366667,8.512777,"L0",3
-"urn:iso:std:iso:3166:-1:code:LY","Libya","Libya","LY",18.023,27.044,19.499065,9.303888,25.152775,33.171135,"L0",3
-"urn:iso:std:iso:3166:-1:code:LI","Liechtenstein","Liechtenstein","LI",9.555,47.153,47.057457,9.474637,9.63611,47.274544,"L0",3
-"urn:iso:std:iso:3166:-1:code:LT","Lithuania","Lithuania","LT",23.897,55.336,53.888046,20.942833,26.819717,56.450829,"L0",3
-"urn:iso:std:iso:3166:-1:code:LU","Luxembourg","Luxembourg","LU",6.088,49.771,49.448326,5.734444,6.524722,50.18222,"L0",3
-"urn:iso:std:iso:3166:-1:code:MO","Macau","Macau","MO",113.545,22.2,22.183052,113.531372,113.556374,22.214439,"L0",3
-"urn:iso:std:iso:3166:-1:code:MG","Madagascar","Madagascar","MG",46.706,-19.374,-25.588337,43.236824,50.501389,-11.945557,"L0",3
-"urn:iso:std:iso:3166:-1:code:MW","Malawi","Malawi","MW",33.808,-13.4,-17.135281,32.678886,35.924164,-9.373335,"L0",3
-"urn:iso:std:iso:3166:-1:code:MY","Malaysia","Malaysia","MY",102.195,4.201,0.852778,99.640823,119.275818,7.35361,"L0",3
-"urn:iso:std:iso:3166:-1:code:MV","Maldives","Maldives","MV",72.92,3.548,-0.690833,72.687759,73.753601,7.096388,"L0",3
-"urn:iso:std:iso:3166:-1:code:ML","Mali","Mali","ML",-3.524,17.35,10.141109,-12.244833,4.2525,25.000275,"L0",3
-"urn:iso:std:iso:3166:-1:code:MT","Malta","Malta","MT",14.442,35.89,35.799995,14.180832,14.57,36.074997,"L0",3
-"urn:iso:std:iso:3166:-1:code:MH","Marshall Islands","Marshall Islands","MH",168.963,7.595,5.600277,162.323578,172.090515,14.598331,"L0",3
-"urn:iso:std:iso:3166:-1:code:MQ","Martinique","Martinique","MQ",-61.021,14.653,14.402777,-61.231674,-60.816673,14.880278,"L0",3
-"urn:iso:std:iso:3166:-1:code:MR","Mauritania","Mauritania","MR",-10.332,20.26,14.725321,-17.075558,-4.806111,27.290459,"L0",3
-"urn:iso:std:iso:3166:-1:code:MU","Mauritius","Mauritius","MU",57.583,-20.255,-20.520557,56.507217,63.498604,-10.316668,"L0",3
-"urn:iso:std:iso:3166:-1:code:YT","Mayotte","Mayotte","YT",45.155,-12.777,-12.9925,45.039162,45.293327,-12.6625,"L0",3
-"urn:iso:std:iso:3166:-1:code:MX","Mexico","Mexico","MX",-102.535,23.951,14.550547,-118.404167,-86.701401,32.718456,"L0",3
-"urn:iso:std:iso:3166:-1:code:FM","Micronesia, Federated States of","Micronesia, Federated States of","FM",158.235,6.883,5.261666,138.058319,163.043304,9.589441,"L0",3
-"urn:iso:std:iso:3166:-1:code:MC","Monaco","Monaco","MC",7.412,43.75,43.727547,7.386389,7.439293,43.773048,"L0",3
-"urn:iso:std:iso:3166:-1:code:MN","Mongolia","Mongolia","MN",102.876,46.056,41.581383,87.758331,119.934982,52.143608,"L0",3
-"urn:iso:std:iso:3166:-1:code:ME","Montenegro","Montenegro","ME",19.254,42.792,41.848999,18.453331,20.382774,43.556107,"L0",3
-"urn:iso:std:iso:3166:-1:code:MS","Montserrat","Montserrat","MS",-62.187,16.736,16.671387,-62.237228,-62.137505,16.81361,"L0",3
-"urn:iso:std:iso:3166:-1:code:MA","Morocco","Morocco","MA",-5.758,32.706,27.664238,-13.174961,-1.010278,35.919167,"L0",3
-"urn:iso:std:iso:3166:-1:code:MZ","Mozambique","Mozambique","MZ",37.923,-14.422,-26.860279,30.213017,40.846107,-10.471111,"L0",3
-"urn:iso:std:iso:3166:-1:code:MM","Myanmar","Myanmar","MM",96.041,21.718,9.786386,92.204987,101.170822,28.549164,"L0",3
-"urn:iso:std:iso:3166:-1:code:NA","Namibia","Namibia","NA",17.218,-22.133,-28.962502,11.716389,25.264431,-16.952778,"L0",3
-"urn:iso:std:iso:3166:-1:code:NR","Nauru","Nauru","NR",166.93,-0.522,-0.552222,166.904419,166.958588,-0.493333,"L0",3
-"urn:iso:std:iso:3166:-1:code:NP","Nepal","Nepal","NP",83.939,28.253,26.364719,80.0522,88.195816,30.424995,"L0",3
-"urn:iso:std:iso:3166:-1:code:NL","Netherlands","Netherlands","NL",5.389,52.077,50.753883,3.370866,7.211666,53.511383,"L0",3
-"urn:iso:std:iso:3166:-1:code:AN","Netherlands Antilles","Netherlands Antilles","AN",-68.87,12.123,12.020555,-69.16362,-62.936394,17.521942,"L0",3
-"urn:iso:std:iso:3166:-1:code:NC","New Caledonia","New Caledonia","NC",165.447,-21.359,-22.694164,159.922211,171.313873,-19.114445,"L0",3
-"urn:iso:std:iso:3166:-1:code:NZ","New Zealand","New Zealand","NZ",172.235,-42.634,-52.578056,-178.613068,179.082733,-29.223057,"L0",3
-"urn:iso:std:iso:3166:-1:code:NI","Nicaragua","Nicaragua","NI",-85.034,12.84,10.708611,-87.693069,-82.72139,15.022221,"L0",3
-"urn:iso:std:iso:3166:-1:code:NE","Niger","Niger","NE",9.398,17.426,11.693274,0.166667,15.996666,23.522305,"L0",3
-"urn:iso:std:iso:3166:-1:code:NG","Nigeria","Nigeria","NG",8.105,9.594,4.272499,2.6925,14.658054,13.891499,"L0",3
-"urn:iso:std:iso:3166:-1:code:NU","Niue","Niue","NU",-169.869,-19.052,-19.145557,-169.953064,-169.781403,-18.963333,"L0",3
-"urn:iso:std:iso:3166:-1:code:NF","Norfolk Island","Norfolk Island","NF",167.953,-29.037,-29.081112,167.909424,168,-29.000557,"L0",3
-"urn:iso:std:iso:3166:-1:code:MP","Northern Mariana Islands","Northern Mariana Islands","MP",145.623,15.005,14.105276,144.89859,145.870789,20.556385,"L0",3
-"urn:iso:std:iso:3166:-1:code:NO","Norway","Norway","NO",8.74,61.152,57.987778,4.62,31.078053,71.154709,"L0",3
-"urn:iso:std:iso:3166:-1:code:OM","Oman","Oman","OM",57.407,21.656,16.642778,51.99929,59.847221,26.382389,"L0",3
-"urn:iso:std:iso:3166:-1:code:PK","Pakistan","Pakistan","PK",69.386,29.967,23.688049,60.866302,77.823929,37.062592,"L0",3
-"urn:iso:std:iso:3166:-1:code:PW","Palau","Palau","PW",134.57,7.501,5.292221,132.208313,134.658875,7.729444,"L0",3
-"urn:iso:std:iso:3166:-1:code:PS","Palestine","Palestine","PS",35.278,32.037,31.216541,34.21666,35.573296,32.546387,"L0",3
-"urn:iso:std:iso:3166:-1:code:PA","Panama","Panama","PA",-80.92,8.384,7.206111,-83.030289,-77.198334,9.620277,"L0",3
-"urn:iso:std:iso:3166:-1:code:PG","Papua New Guinea","Papua New Guinea","PG",143.459,-5.949,-11.6425,140.858856,159.523041,-1.098333,"L0",3
-"urn:iso:std:iso:3166:-1:code:PY","Paraguay","Paraguay","PY",-58.391,-23.236,-27.588337,-62.643768,-54.243896,-19.296669,"L0",3
-"urn:iso:std:iso:3166:-1:code:PE","Peru","Peru","PE",-75.552,-9.326,-18.348545,-81.3564,-68.673904,-0.031389,"L0",3
-"urn:iso:std:iso:3166:-1:code:PH","Philippines","Philippines","PH",122.466,11.118,4.641388,116.949997,126.598038,21.118053,"L0",3
-"urn:iso:std:iso:3166:-1:code:PN","Pitcairn Islands","Pitcairn Islands","PN",-128.316,-24.366,-25.082226,-130.107483,-124.771133,-24.325005,"L0",3
-"urn:iso:std:iso:3166:-1:code:PL","Poland","Poland","PL",19.401,52.125,49.001938,14.145555,24.144718,54.836937,"L0",3
-"urn:iso:std:iso:3166:-1:code:PT","Portugal","Portugal","PT",-8.058,40.309,32.637497,-31.290001,-6.187222,42.15274,"L0",3
-"urn:iso:std:iso:3166:-1:code:PR","Puerto Rico","Puerto Rico","PR",-66.466,18.221,17.922222,-67.938339,-65.241959,18.519444,"L0",3
-"urn:iso:std:iso:3166:-1:code:QA","Qatar","Qatar","QA",51.191,25.316,24.556042,50.751938,51.615829,26.15361,"L0",3
-"urn:iso:std:iso:3166:-1:code:MD","Republic of Moldova","Republic of Moldova","MD",28.599,47.193,45.448647,26.634995,30.133228,48.468323,"L0",3
-"urn:iso:std:iso:3166:-1:code:RE","Reunion","Reunion","RE",55.538,-21.122,-21.37389,55.219719,55.85305,-20.856392,"L0",3
-"urn:iso:std:iso:3166:-1:code:RO","Romania","Romania","RO",24.969,45.844,43.622437,20.261024,29.672497,48.263885,"L0",3
-"urn:iso:std:iso:3166:-1:code:RU","Russia","Russia","RU",96.689,61.988,41.196091,-180,180,81.851929,"L0",3
-"urn:iso:std:iso:3166:-1:code:RW","Rwanda","Rwanda","RW",29.917,-1.998,-2.826667,28.853333,30.894444,-1.053889,"L0",3
-"urn:iso:std:iso:3166:-1:code:BL","Saint Barthelemy","Saint Barthelemy","BL",-63.043,18.04,18.015553,-63.139839,-63.010284,18.070366,"L0",3
-"urn:iso:std:iso:3166:-1:code:SH","Saint Helena","Saint Helena","SH",-5.71,-15.953,-40.403893,-14.416113,-5.645278,-7.883056,"L0",3
-"urn:iso:std:iso:3166:-1:code:KN","Saint Kitts and Nevis","Saint Kitts and Nevis","KN",-62.769,17.34,17.091663,-62.863892,-62.534172,17.410831,"L0",3
-"urn:iso:std:iso:3166:-1:code:LC","Saint Lucia","Saint Lucia","LC",-60.969,13.898,13.709444,-61.079727,-60.878059,14.109444,"L0",3
-"urn:iso:std:iso:3166:-1:code:MF","Saint Martin","Saint Martin","MF",-63.041,18.094,18.058601,-63.146667,-63.006393,18.121944,"L0",3
-"urn:iso:std:iso:3166:-1:code:PM","Saint Pierre and Miquelon","Saint Pierre and Miquelon","PM",-56.325,47.042,46.747215,-56.398056,-56.144165,47.136658,"L0",3
-"urn:iso:std:iso:3166:-1:code:VC","Saint Vincent and the Grenadines","Saint Vincent and the Grenadines","VC",-61.194,13.248,12.584444,-61.45417,-61.120285,13.384165,"L0",3
-"urn:iso:std:iso:3166:-1:code:WS","Samoa","Samoa","WS",-172.414,-13.652,-14.057503,-172.780609,-171.42865,-13.460556,"L0",3
-"urn:iso:std:iso:3166:-1:code:SM","San Marino","San Marino","SM",12.46,43.942,43.895554,12.403889,12.511665,43.989166,"L0",3
-"urn:iso:std:iso:3166:-1:code:ST","Sao Tome and Principe","Sao Tome and Principe","ST",6.629,0.201,0.018333,6.464444,7.464167,1.701944,"L0",3
-"urn:iso:std:iso:3166:-1:code:SA","Saudi Arabia","Saudi Arabia","SA",44.585,24.023,15.616943,34.492218,55.666107,32.154942,"L0",3
-"urn:iso:std:iso:3166:-1:code:SN","Senegal","Senegal","SN",-14.881,15.013,12.301748,-17.537224,-11.3675,16.693054,"L0",3
-"urn:iso:std:iso:3166:-1:code:RS","Serbia","Serbia","RS",20.806,44.032,41.855827,18.81702,23.004997,46.181389,"L0",3
-"urn:iso:std:iso:3166:-1:code:SC","Seychelles","Seychelles","SC",55.474,-4.647,-9.755001,46.204163,56.28611,-4.280001,"L0",3
-"urn:iso:std:iso:3166:-1:code:SL","Sierra Leone","Sierra Leone","SL",-11.792,8.56,6.923611,-13.29561,-10.264168,9.997499,"L0",3
-"urn:iso:std:iso:3166:-1:code:SG","Singapore","Singapore","SG",103.808,1.351,1.258889,103.640808,103.998863,1.445277,"L0",3
-"urn:iso:std:iso:3166:-1:code:SK","Slovakia","Slovakia","SK",19.491,48.707,47.737221,16.839996,22.558052,49.60083,"L0",3
-"urn:iso:std:iso:3166:-1:code:SI","Slovenia","Slovenia","SI",14.827,46.124,45.425819,13.383055,16.607872,46.876663,"L0",3
-"urn:iso:std:iso:3166:-1:code:SB","Solomon Islands","Solomon Islands","SB",160.109,-9.611,-11.845833,155.507477,167.209961,-5.293056,"L0",3
-"urn:iso:std:iso:3166:-1:code:SO","Somalia","Somalia","SO",48.316,9.774,-1.674868,40.986595,51.412636,11.979166,"L0",3
-"urn:iso:std:iso:3166:-1:code:ZA","South Africa","South Africa","ZA",23.121,-30.558,-46.969727,16.48333,37.981667,-22.136391,"L0",3
-"urn:iso:std:iso:3166:-1:code:GS","South Georgia South Sandwich Islands","South Georgia South Sandwich Islands","GS",-36.891,-54.209,-59.473061,-38.033058,-26.24139,-53.989723,"L0",3
-"urn:iso:std:iso:3166:-1:code:SS","South Sudan","South Sudan","SS",,,,,,,"L0",3
-"urn:iso:std:iso:3166:-1:code:ES","Spain","Spain","ES",-3.649,40.227,27.637497,-18.170559,4.316944,43.772217,"L0",3
-"urn:iso:std:iso:3166:-1:code:LK","Sri Lanka","Sri Lanka","LK",80.704,7.612,5.917777,79.651932,81.891663,9.828331,"L0",3
-"urn:iso:std:iso:3166:-1:code:SD","Sudan","Sudan","SD",30.05,13.832,3.493394,21.827774,38.607498,22.23222,"L0",3
-"urn:iso:std:iso:3166:-1:code:SR","Suriname","Suriname","SR",-55.912,4.127,1.835556,-58.071396,-53.984169,6.003055,"L0",3
-"urn:iso:std:iso:3166:-1:code:SJ","Svalbard","Svalbard","SJ",18.374,78.83,70.803864,-9.120058,36.853325,80.76416,"L0",3
-"urn:iso:std:iso:3166:-1:code:SZ","Swaziland","Swaziland","SZ",31.497,-26.562,-27.316669,30.798332,32.1334,-25.728336,"L0",3
-"urn:iso:std:iso:3166:-1:code:SE","Sweden","Sweden","SE",15.27,62.011,55.339165,11.106943,24.16861,69.060303,"L0",3
-"urn:iso:std:iso:3166:-1:code:CH","Switzerland","Switzerland","CH",7.908,46.861,45.829437,5.96611,10.488913,47.806938,"L0",3
-"urn:iso:std:iso:3166:-1:code:SY","Syrian Arab Republic","Syrian Arab Republic","SY",38.506,35.013,32.313606,35.614464,42.379166,37.290543,"L0",3
-"urn:iso:std:iso:3166:-1:code:TW","Taiwan","Taiwan","TW",120.946,23.754,21.927773,118.205833,122.002213,26.229717,"L0",3
-"urn:iso:std:iso:3166:-1:code:TJ","Tajikistan","Tajikistan","TJ",69.42,38.665,36.671844,67.3647,75.187485,41.050224,"L0",3
-"urn:iso:std:iso:3166:-1:code:TH","Thailand","Thailand","TH",100.844,15.7,5.63111,97.345261,105.639427,20.455273,"L0",3
-"urn:iso:std:iso:3166:-1:code:MK","The former Yugoslav Republic of Macedonia","The former Yugoslav Republic of Macedonia","MK",21.698,41.6,40.855888,20.457775,23.032776,42.361382,"L0",3
-"urn:iso:std:iso:3166:-1:code:TL","Timor-Leste","Timor-Leste","TL",125.878,-8.822,-9.4633795565,124.046161166,127.308594,-8.324444,"L0",3
-"urn:iso:std:iso:3166:-1:code:TG","Togo","Togo","TG",1.081,8.799,6.100546,-0.149762,1.799327,11.13854,"L0",3
-"urn:iso:std:iso:3166:-1:code:TK","Tokelau","Tokelau","TK",-171.853,-9.193,-9.381111,-172.500336,-171.211426,-8.553614,"L0",3
-"urn:iso:std:iso:3166:-1:code:TO","Tonga","Tonga","TO",-175.185,-21.202,-21.454166,-175.684723,-173.906158,-15.56028,"L0",3
-"urn:iso:std:iso:3166:-1:code:TT","Trinidad and Tobago","Trinidad and Tobago","TT",-61.253,10.468,10.037498,-61.924446,-60.520561,11.346109,"L0",3
-"urn:iso:std:iso:3166:-1:code:TN","Tunisia","Tunisia","TN",9.596,35.383,30.23439,7.491666,11.583332,37.539444,"L0",3
-"urn:iso:std:iso:3166:-1:code:TR","Turkey","Turkey","TR",35.179,39.061,35.817497,25.663883,44.822762,42.109993,"L0",3
-"urn:iso:std:iso:3166:-1:code:TM","Turkmenistan","Turkmenistan","TM",59.384,39.122,35.141663,52.440071,66.672485,42.797775,"L0",3
-"urn:iso:std:iso:3166:-1:code:TC","Turks and Caicos Islands","Turks and Caicos Islands","TC",-71.95,21.902,21.430275,-72.468063,-71.127792,21.957775,"L0",3
-"urn:iso:std:iso:3166:-1:code:TV","Tuvalu","Tuvalu","TV",179.219,-8.514,-8.561292,176.066376,179.232285,-5.657778,"L0",3
-"urn:iso:std:iso:3166:-1:code:UG","Uganda","Uganda","UG",32.386,1.28,-1.47611,29.570831,35.00972,4.222777,"L0",3
-"urn:iso:std:iso:3166:-1:code:UA","Ukraine","Ukraine","UA",31.388,49.016,44.37915,22.151442,40.179718,52.379715,"L0",3
-"urn:iso:std:iso:3166:-1:code:AE","United Arab Emirates","United Arab Emirates","AE",54.163,23.549,22.633329,51.583328,56.38166,26.08416,"L0",3
-"urn:iso:std:iso:3166:-1:code:GB","United Kingdom","United Kingdom","GB",-1.6,53,49.911659,-8.621389,1.749444,60.844444,"L0",3
-"urn:iso:std:iso:3166:-1:code:TZ","United Republic of Tanzania","United Republic of Tanzania","TZ",34.823,-6.27,-11.740835,29.340832,40.436813,-0.997222,"L0",3
-"urn:iso:std:iso:3166:-1:code:US","United States","United States","US",-98.606,39.622,18.923882,-179.141998,179.777466,71.365814,"L0",3
-"urn:iso:std:iso:3166:-1:code:UM","United States Minor Outlying Islands","United States Minor Outlying Islands","UM",-160.027,-0.385,-0.398056,-177.395844,166.662476,28.221935,"L0",3
-"urn:iso:std:iso:3166:-1:code:VI","United States Virgin Islands","United States Virgin Islands","VI",-64.785,17.741,17.676666,-65.026947,-64.560287,18.377777,"L0",3
-"urn:iso:std:iso:3166:-1:code:UY","Uruguay","Uruguay","UY",-56.012,-32.8,-34.948891,-58.438614,-53.093056,-30.096668,"L0",3
-"urn:iso:std:iso:3166:-1:code:UZ","Uzbekistan","Uzbekistan","UZ",63.17,41.75,37.183876,55.99749,73.173035,45.571106,"L0",3
-"urn:iso:std:iso:3166:-1:code:VU","Vanuatu","Vanuatu","VU",166.899,-15.376,-20.254169,166.516663,170.235229,-13.070555,"L0",3
-"urn:iso:std:iso:3166:-1:code:VE","Venezuela","Venezuela","VE",-66.166,7.125,0.648611,-73.378067,-59.801392,12.198889,"L0",3
-"urn:iso:std:iso:3166:-1:code:VN","Viet Nam","Viet Nam","VN",105.314,21.491,8.558609,102.140747,109.466377,23.334721,"L0",3
-"urn:iso:std:iso:3166:-1:code:WF","Wallis and Futuna Islands","Wallis and Futuna Islands","WF",-178.131,-14.289,-14.323891,-178.191101,-176.121094,-13.213614,"L0",3
-"urn:iso:std:iso:3166:-1:code:EH","Western Sahara","Western Sahara","EH",-13.706,24.554,20.764095,-17.105278,-8.666389,27.666958,"L0",3
-"urn:iso:std:iso:3166:-1:code:YE","Yemen","Yemen","YE",48.355,15.807,12.10611,42.555832,54.476944,18.999344,"L0",3
-"urn:iso:std:iso:3166:-1:code:ZM","Zambia","Zambia","ZM",26.32,-14.614,-18.076126,21.996387,33.702278,-8.191668,"L0",3
-"urn:iso:std:iso:3166:-1:code:ZW","Zimbabwe","Zimbabwe","ZW",29.872,-19,-22.414764,25.236664,33.073051,-15.616112,"L0",3
+"L0","ISO2","Lon","Lat","lat_min","lon_min","lon_max","lat_max"
+"Afghanistan","AF",65.216,33.677,29.406105,60.504166,74.915741,38.472115
+"Åland Islands","AX",19.952,60.198,59.976944,19.510555,20.442497,60.40361
+"Albania","AL",20.068,41.143,39.644722,19.282497,21.054165,42.661942
+"Algeria","DZ",2.632,28.163,18.976387,-8.667223,11.986475,37.091385
+"American Samoa","AS",-170.73,-14.318,-14.375555,-170.826111,-169.438324,-14.166389
+"Andorra","AD",1.576,42.549,42.436104,1.421389,1.78172,42.656387
+"Angola","AO",17.544,-12.296,-18.016392,11.663332,24.084442,-4.388991
+"Anguilla","AI",-63.032,18.237,18.164444,-63.167778,-62.969452,18.276665
+"Antarctica","AQ",21.304,-80.446,-90,-180,180,-60.501945
+"Antigua and Barbuda","AG",-61.783,17.078,16.989719,-61.891113,-61.666389,17.724998
+"Argentina","AR",-65.167,-35.377,-55.051674,-73.583618,-53.649727,-21.780521
+"Armenia","AM",44.563,40.534,38.841148,43.453888,46.62249,41.29705
+"Aruba","AW",-69.977,12.517,12.41111,-70.063339,-69.873337,12.631109
+"Australia","AU",136.189,-24.973,-54.753891,112.907211,159.101898,-10.05139
+"Austria","AT",14.912,47.683,46.407494,9.533569,17.166386,49.018883
+"Azerbaijan","AZ",47.395,40.43,38.389153,44.778862,50.374992,41.897057
+"Bahamas","BS",-78.014,24.628,20.915276,-78.978897,-72.737503,26.929165
+"Bahrain","BH",50.562,26.019,25.571941,50.453049,50.822495,26.288887
+"Bangladesh","BD",89.941,24.218,20.738049,88.04332,92.669342,26.631939
+"Barbados","BB",-59.559,13.153,13.050554,-59.659447,-59.426949,13.337221
+"Belarus","BY",28.047,53.54,51.251846,23.1654,32.741379,56.16777
+"Belgium","BE",4.664,50.643,49.504166,2.541667,6.398204,51.503609
+"Belize","BZ",-88.602,17.219,15.889851,-89.2164,-87.7789,18.489902
+"Benin","BJ",2.469,10.541,6.218721,0.776667,3.855,12.396658
+"Bermuda","BM",-64.709,32.336,32.260551,-64.876114,-64.638626,32.382217
+"Bhutan","BT",90.429,27.415,26.703049,88.751938,92.115265,28.325275
+"Bolivia","BO",-64.671,-16.715,-22.901112,-69.656189,-57.521118,-9.679195
+"Bosnia and Herzegovina","BA",17.786,44.169,42.565826,15.736387,19.621765,45.265945
+"Botswana","BW",23.815,-22.182,-26.875557,19.996109,29.373623,-17.781391
+"Bouvet Island","BV",3.412,-54.422,-54.462784,3.341666,3.484722,-54.383614
+"Brazil","BR",-53.089,-10.772,-33.743896,-74.010559,-29.84,5.273889
+"British Indian Ocean Territory","IO",72.416,-7.335,-7.436666,71.258606,72.494431,-5.249722
+"British Virgin Islands","VG",-64.39,18.483,18.383888,-64.700287,-64.26918,18.748608
+"Brunei Darussalam","BN",114.591,4.468,4.017499,114.095078,115.36026,5.053054
+"Bulgaria","BG",25.231,42.761,41.24305,22.365276,28.606384,44.224716
+"Burkina Faso","BF",-1.74,12.278,9.393888,-5.521111,2.397925,15.082777
+"Burundi","BI",29.887,-3.356,-4.448056,28.983887,30.853886,-2.298056
+"Cambodia","KH",104.564,12.714,10.422739,102.345543,107.636383,14.708618
+"Cameroon","CM",12.277,5.133,1.654166,8.502222,16.207222,13.085278
+"Canada","CA",-109.433,59.081,41.675552,-141.002991,-52.614449,83.113876
+"Cape Verde","CV",-23.634,15.071,14.81111,-25.360558,-22.665836,17.193054
+"Cayman Islands","KY",-81.198,19.314,19.264721,-81.401123,-79.732788,19.762218
+"Central African Republic","CF",20.483,6.571,2.220833,14.41861,27.460278,11.001389
+"Chad","TD",18.665,15.361,7.457777,13.461666,24.002747,23.450554
+"Chile","CL",-69.433,-23.389,-55.919724,-109.449173,-66.419174,-17.50528
+"China","CN",106.514,33.42,18.168884,73.617203,134.77359,53.554436
+"Christmas Island","CX",105.704,-10.444,-10.51097,105.628998,105.7519,-10.38408
+"Cocos (Keeling) Islands","CC",96.839,-12.173,-12.199999,96.81749,96.924423,-12.128332
+"Colombia","CO",-73.076,3.9,-4.236874,-81.722778,-66.871887,13.378611
+"Comoros","KM",43.337,-11.758,-12.383057,43.213608,44.53083,-11.366945
+"Congo","CG",15.986,-0.055,-5.019444,11.140661,18.643608,3.713055
+"Cook Islands","CK",-159.782,-21.219,-21.940834,-165.850281,-157.305878,-8.948057
+"Costa Rica","CR",-83.946,9.971,8.025669,-85.911392,-82.561401,11.21361
+"Cote d'Ivoire","CI",-5.556,7.632,4.344722,-8.606384,-2.487778,10.735256
+"Croatia","HR",16.693,45.723,42.39666,13.496387,19.426109,46.535828
+"Cuba","CU",-77.781,21.297,19.821941,-84.953339,-74.130844,23.204166
+"Cyprus","CY",33.219,35.043,34.56255,32.269165,34.590553,35.690277
+"Czech Republic","CZ",15.338,49.743,48.581379,12.093704,18.852219,51.053604
+"Democratic Republic of the Congo","CD",23.654,-2.876,-13.458057,12.214552,31.302776,5.381389
+"Denmark","DK",9.264,56.058,54.561661,8.087221,15.15,57.746666
+"Djibouti","DJ",42.516,11.9,10.941944,41.75972,43.42083,12.708332
+"Dominica","DM",-61.356,15.475,15.198055,-61.491394,-61.250557,15.631943
+"Dominican Republic","DO",-70.729,19.015,17.540276,-72.003067,-68.322235,19.93111
+"Ecuador","EC",-78.497,-1.385,-5.009132,-91.663895,-75.21608,1.437778
+"Egypt","EG",29.872,26.494,21.994164,24.706665,36.898331,31.646942
+"El Salvador","SV",-88.866,13.736,13.156387,-90.108337,-87.684723,14.431982
+"Equatorial Guinea","GQ",10.488,1.607,-1.479445,5.615277,11.353888,3.763333
+"Eritrea","ER",38.219,16.045,12.363888,36.443283,43.121384,17.994881
+"Estonia","EE",25.793,58.674,57.522217,21.83194,28.195274,59.668327
+"Ethiopia","ET",39.616,8.626,3.406389,32.991104,47.988243,14.88361
+"Falkland Islands (Malvinas)","FK",-58.694,-51.665,-52.343056,-61.315834,-57.731392,-51.249451
+"Faroe Islands","FO",-6.864,62.05,61.388329,-7.435,-6.388612,62.396942
+"Fiji","FJ",177.974,-17.819,-20.674442,-180,180,-12.481943
+"Finland","FI",26.272,64.504,59.804993,20.580929,31.588928,70.088882
+"France","FR",2.55,46.565,41.364166,-5.134723,9.562222,51.09111
+"French Guiana","GF",-53.241,3.924,2.112222,-54.603783,-51.647781,5.755555
+"French Polynesia","PF",-149.462,-17.626,-27.915554,-152.87973,-134.941406,-7.888333
+"French Southern and Antarctic Lands","TF",69.117,-49.302,-49.725006,42.721107,77.588882,-17.051113
+"Gabon","GA",11.797,-0.591,-3.925277,8.698332,14.520555,2.317898
+"Gambia","GM",-15.386,13.453,13.059977,-16.821667,-13.798613,13.826387
+"Georgia","GE",43.518,42.176,41.046097,40.002968,46.710815,43.584717
+"Germany","DE",9.851,51.11,47.274719,5.864166,15.038887,55.056664
+"Ghana","GH",-1.207,7.96,4.726388,-3.249167,1.202778,11.166666
+"Gibraltar","GI",-5.345,36.138,36.112175,-5.35624,-5.334508,36.163307
+"Greece","GR",21.766,39.666,34.808884,19.37611,28.238049,41.748322
+"Greenland","GL",-41.391,74.719,59.790276,-73.053604,-12.155001,83.623596
+"Grenada","GD",-61.678,12.118,11.996387,-61.789726,-61.418617,12.529165
+"Guadeloupe","GP",-61.441,16.286,15.869999,-62.873062,-60.988617,17.930275
+"Guam","GU",144.707,13.385,13.234997,144.634155,144.953308,13.65361
+"Guatemala","GT",-90.398,15.256,13.745832,-92.24678,-88.214737,17.82111
+"Guernsey","GG",-2.576,49.459,49.422493,-2.670278,-2.500278,49.508888
+"Guinea","GN",-10.942,10.439,7.198889,-15.081112,-7.646536,12.6775
+"Guinea-Bissau","GW",-14.651,12.125,10.922777,-16.71777,-13.643057,12.684721
+"Guyana","GY",-58.974,4.792,1.185555,-61.389725,-56.470634,8.535276
+"Haiti","HT",-72.278,19.142,18.022778,-74.467789,-71.628891,20.09222
+"Heard Island and McDonald Islands","HM",73.507,-53.111,-53.199448,73.234436,73.77388,-52.964172
+"Holy See (Vatican City)","VA",12.451,41.904,41.9014260247,12.4450903309,12.456660171,41.9079890334
+"Honduras","HN",-86.863,14.819,12.979721,-89.351959,-83.131851,17.420277
+"Hong Kong","HK",114.129,22.423,22.193607,113.822769,114.390266,22.5505482469
+"Hungary","HU",19.134,47.07,45.748329,16.111805,22.894804,48.57666
+"Iceland","IS",-18.48,64.764,63.389999,-24.542225,-13.499445,66.536102
+"India","IN",78.5,21,6.745554,68.139435,97.380539,35.506104
+"Indonesia","ID",114.252,-0.976,-10.93,95.008026,141.007019,5.913888
+"Iran (Islamic Republic of)","IR",54.301,32.565,25.075275,44.034157,63.341934,39.78054
+"Iraq","IQ",43.772,33.048,29.061661,38.794701,48.563881,37.38472
+"Ireland","IE",-8.152,53.177,51.445549,-10.474724,-6.013056,55.380272
+"Isle of Man","IM",-4.527,54.229,54.05555,-4.788611,-4.307501,54.416664
+"Israel","IL",34.851,31.026,29.486706,34.267578,35.683052,33.270271
+"Italy","IT",12.8,42.7,36.649162,6.61976,18.514999,47.094719
+"Jamaica","JM",-77.32,18.151,17.696663,-78.373901,-76.221115,18.522499
+"Japan","JP",139.068,36.491,24.250832,122.935257,153.96579,45.486382
+"Jersey","JE",-2.129,49.219,49.16777,-2.2475,-2.015,49.261108
+"Jordan","JO",36.319,30.703,29.188889,34.959999,39.301109,33.377594
+"Kazakhstan","KZ",67.301,48.16,40.594437,46.499161,87.348206,55.44471
+"Kenya","KE",37.858,0.53,-4.669618,33.907219,41.905167,4.622499
+"Kiribati","KI",175.036,-1.508,-11.466665,-172.233337,176.85025,4.725832
+"Korea, Democratic People's Republic of","KP",126.451,39.778,37.671379,124.322769,130.697418,43.008324
+"Korea, Republic of","KR",128.103,36.504,33.190269,124.609711,130.924133,38.625244
+"Kuwait","KW",47.376,29.476,28.538883,46.546944,48.416588,30.084438
+"Kyrgyzstan","KG",74.555,41.465,39.191856,69.248871,80.283325,43.216904
+"Lao People's Democratic Republic","LA",102.471,19.905,13.926664,100.09137,107.695251,22.500832
+"Latvia","LV",25.641,56.858,55.674835,20.968605,28.237774,58.084435
+"Lebanon","LB",35.888,33.92,33.061943,35.10083,36.623741,34.647499
+"Lesotho","LS",28.243,-29.581,-30.650528,27.011108,29.456108,-28.569447
+"Liberia","LR",-9.657,6.682,4.343333,-11.492331,-7.366667,8.512777
+"Libya","LY",18.023,27.044,19.499065,9.303888,25.152775,33.171135
+"Liechtenstein","LI",9.555,47.153,47.057457,9.474637,9.63611,47.274544
+"Lithuania","LT",23.897,55.336,53.888046,20.942833,26.819717,56.450829
+"Luxembourg","LU",6.088,49.771,49.448326,5.734444,6.524722,50.18222
+"Macau","MO",113.545,22.2,22.183052,113.531372,113.556374,22.214439
+"Madagascar","MG",46.706,-19.374,-25.588337,43.236824,50.501389,-11.945557
+"Malawi","MW",33.808,-13.4,-17.135281,32.678886,35.924164,-9.373335
+"Malaysia","MY",102.195,4.201,0.852778,99.640823,119.275818,7.35361
+"Maldives","MV",72.92,3.548,-0.690833,72.687759,73.753601,7.096388
+"Mali","ML",-3.524,17.35,10.141109,-12.244833,4.2525,25.000275
+"Malta","MT",14.442,35.89,35.799995,14.180832,14.57,36.074997
+"Marshall Islands","MH",168.963,7.595,5.600277,162.323578,172.090515,14.598331
+"Martinique","MQ",-61.021,14.653,14.402777,-61.231674,-60.816673,14.880278
+"Mauritania","MR",-10.332,20.26,14.725321,-17.075558,-4.806111,27.290459
+"Mauritius","MU",57.583,-20.255,-20.520557,56.507217,63.498604,-10.316668
+"Mayotte","YT",45.155,-12.777,-12.9925,45.039162,45.293327,-12.6625
+"Mexico","MX",-102.535,23.951,14.550547,-118.404167,-86.701401,32.718456
+"Micronesia, Federated States of","FM",158.235,6.883,5.261666,138.058319,163.043304,9.589441
+"Monaco","MC",7.412,43.75,43.727547,7.386389,7.439293,43.773048
+"Mongolia","MN",102.876,46.056,41.581383,87.758331,119.934982,52.143608
+"Montenegro","ME",19.254,42.792,41.848999,18.453331,20.382774,43.556107
+"Montserrat","MS",-62.187,16.736,16.671387,-62.237228,-62.137505,16.81361
+"Morocco","MA",-5.758,32.706,27.664238,-13.174961,-1.010278,35.919167
+"Mozambique","MZ",37.923,-14.422,-26.860279,30.213017,40.846107,-10.471111
+"Myanmar","MM",96.041,21.718,9.786386,92.204987,101.170822,28.549164
+"Namibia","NA",17.218,-22.133,-28.962502,11.716389,25.264431,-16.952778
+"Nauru","NR",166.93,-0.522,-0.552222,166.904419,166.958588,-0.493333
+"Nepal","NP",83.939,28.253,26.364719,80.0522,88.195816,30.424995
+"Netherlands","NL",5.389,52.077,50.753883,3.370866,7.211666,53.511383
+"Netherlands Antilles","AN",-68.87,12.123,12.020555,-69.16362,-62.936394,17.521942
+"New Caledonia","NC",165.447,-21.359,-22.694164,159.922211,171.313873,-19.114445
+"New Zealand","NZ",172.235,-42.634,-52.578056,-178.613068,179.082733,-29.223057
+"Nicaragua","NI",-85.034,12.84,10.708611,-87.693069,-82.72139,15.022221
+"Niger","NE",9.398,17.426,11.693274,0.166667,15.996666,23.522305
+"Nigeria","NG",8.105,9.594,4.272499,2.6925,14.658054,13.891499
+"Niue","NU",-169.869,-19.052,-19.145557,-169.953064,-169.781403,-18.963333
+"Norfolk Island","NF",167.953,-29.037,-29.081112,167.909424,168,-29.000557
+"Northern Mariana Islands","MP",145.623,15.005,14.105276,144.89859,145.870789,20.556385
+"Norway","NO",8.74,61.152,57.987778,4.62,31.078053,71.154709
+"Oman","OM",57.407,21.656,16.642778,51.99929,59.847221,26.382389
+"Pakistan","PK",69.386,29.967,23.688049,60.866302,77.823929,37.062592
+"Palau","PW",134.57,7.501,5.292221,132.208313,134.658875,7.729444
+"Palestine","PS",35.278,32.037,31.216541,34.21666,35.573296,32.546387
+"Panama","PA",-80.92,8.384,7.206111,-83.030289,-77.198334,9.620277
+"Papua New Guinea","PG",143.459,-5.949,-11.6425,140.858856,159.523041,-1.098333
+"Paraguay","PY",-58.391,-23.236,-27.588337,-62.643768,-54.243896,-19.296669
+"Peru","PE",-75.552,-9.326,-18.348545,-81.3564,-68.673904,-0.031389
+"Philippines","PH",122.466,11.118,4.641388,116.949997,126.598038,21.118053
+"Pitcairn Islands","PN",-128.316,-24.366,-25.082226,-130.107483,-124.771133,-24.325005
+"Poland","PL",19.401,52.125,49.001938,14.145555,24.144718,54.836937
+"Portugal","PT",-8.058,40.309,32.637497,-31.290001,-6.187222,42.15274
+"Puerto Rico","PR",-66.466,18.221,17.922222,-67.938339,-65.241959,18.519444
+"Qatar","QA",51.191,25.316,24.556042,50.751938,51.615829,26.15361
+"Republic of Moldova","MD",28.599,47.193,45.448647,26.634995,30.133228,48.468323
+"Reunion","RE",55.538,-21.122,-21.37389,55.219719,55.85305,-20.856392
+"Romania","RO",24.969,45.844,43.622437,20.261024,29.672497,48.263885
+"Russia","RU",96.689,61.988,41.196091,-180,180,81.851929
+"Rwanda","RW",29.917,-1.998,-2.826667,28.853333,30.894444,-1.053889
+"Saint Barthelemy","BL",-63.043,18.04,18.015553,-63.139839,-63.010284,18.070366
+"Saint Helena","SH",-5.71,-15.953,-40.403893,-14.416113,-5.645278,-7.883056
+"Saint Kitts and Nevis","KN",-62.769,17.34,17.091663,-62.863892,-62.534172,17.410831
+"Saint Lucia","LC",-60.969,13.898,13.709444,-61.079727,-60.878059,14.109444
+"Saint Martin","MF",-63.041,18.094,18.058601,-63.146667,-63.006393,18.121944
+"Saint Pierre and Miquelon","PM",-56.325,47.042,46.747215,-56.398056,-56.144165,47.136658
+"Saint Vincent and the Grenadines","VC",-61.194,13.248,12.584444,-61.45417,-61.120285,13.384165
+"Samoa","WS",-172.414,-13.652,-14.057503,-172.780609,-171.42865,-13.460556
+"San Marino","SM",12.46,43.942,43.895554,12.403889,12.511665,43.989166
+"Sao Tome and Principe","ST",6.629,0.201,0.018333,6.464444,7.464167,1.701944
+"Saudi Arabia","SA",44.585,24.023,15.616943,34.492218,55.666107,32.154942
+"Senegal","SN",-14.881,15.013,12.301748,-17.537224,-11.3675,16.693054
+"Serbia","RS",20.806,44.032,41.855827,18.81702,23.004997,46.181389
+"Seychelles","SC",55.474,-4.647,-9.755001,46.204163,56.28611,-4.280001
+"Sierra Leone","SL",-11.792,8.56,6.923611,-13.29561,-10.264168,9.997499
+"Singapore","SG",103.808,1.351,1.258889,103.640808,103.998863,1.445277
+"Slovakia","SK",19.491,48.707,47.737221,16.839996,22.558052,49.60083
+"Slovenia","SI",14.827,46.124,45.425819,13.383055,16.607872,46.876663
+"Solomon Islands","SB",160.109,-9.611,-11.845833,155.507477,167.209961,-5.293056
+"Somalia","SO",48.316,9.774,-1.674868,40.986595,51.412636,11.979166
+"South Africa","ZA",23.121,-30.558,-46.969727,16.48333,37.981667,-22.136391
+"South Georgia South Sandwich Islands","GS",-36.891,-54.209,-59.473061,-38.033058,-26.24139,-53.989723
+"South Sudan","SS",,,,,,
+"Spain","ES",-3.649,40.227,27.637497,-18.170559,4.316944,43.772217
+"Sri Lanka","LK",80.704,7.612,5.917777,79.651932,81.891663,9.828331
+"Sudan","SD",30.05,13.832,3.493394,21.827774,38.607498,22.23222
+"Suriname","SR",-55.912,4.127,1.835556,-58.071396,-53.984169,6.003055
+"Svalbard","SJ",18.374,78.83,70.803864,-9.120058,36.853325,80.76416
+"Swaziland","SZ",31.497,-26.562,-27.316669,30.798332,32.1334,-25.728336
+"Sweden","SE",15.27,62.011,55.339165,11.106943,24.16861,69.060303
+"Switzerland","CH",7.908,46.861,45.829437,5.96611,10.488913,47.806938
+"Syrian Arab Republic","SY",38.506,35.013,32.313606,35.614464,42.379166,37.290543
+"Taiwan","TW",120.946,23.754,21.927773,118.205833,122.002213,26.229717
+"Tajikistan","TJ",69.42,38.665,36.671844,67.3647,75.187485,41.050224
+"Thailand","TH",100.844,15.7,5.63111,97.345261,105.639427,20.455273
+"The former Yugoslav Republic of Macedonia","MK",21.698,41.6,40.855888,20.457775,23.032776,42.361382
+"Timor-Leste","TL",125.878,-8.822,-9.4633795565,124.046161166,127.308594,-8.324444
+"Togo","TG",1.081,8.799,6.100546,-0.149762,1.799327,11.13854
+"Tokelau","TK",-171.853,-9.193,-9.381111,-172.500336,-171.211426,-8.553614
+"Tonga","TO",-175.185,-21.202,-21.454166,-175.684723,-173.906158,-15.56028
+"Trinidad and Tobago","TT",-61.253,10.468,10.037498,-61.924446,-60.520561,11.346109
+"Tunisia","TN",9.596,35.383,30.23439,7.491666,11.583332,37.539444
+"Turkey","TR",35.179,39.061,35.817497,25.663883,44.822762,42.109993
+"Turkmenistan","TM",59.384,39.122,35.141663,52.440071,66.672485,42.797775
+"Turks and Caicos Islands","TC",-71.95,21.902,21.430275,-72.468063,-71.127792,21.957775
+"Tuvalu","TV",179.219,-8.514,-8.561292,176.066376,179.232285,-5.657778
+"Uganda","UG",32.386,1.28,-1.47611,29.570831,35.00972,4.222777
+"Ukraine","UA",31.388,49.016,44.37915,22.151442,40.179718,52.379715
+"United Arab Emirates","AE",54.163,23.549,22.633329,51.583328,56.38166,26.08416
+"United Kingdom","GB",-1.6,53,49.911659,-8.621389,1.749444,60.844444
+"United Republic of Tanzania","TZ",34.823,-6.27,-11.740835,29.340832,40.436813,-0.997222
+"United States","US",-98.606,39.622,18.923882,-179.141998,179.777466,71.365814
+"United States Minor Outlying Islands","UM",-160.027,-0.385,-0.398056,-177.395844,166.662476,28.221935
+"United States Virgin Islands","VI",-64.785,17.741,17.676666,-65.026947,-64.560287,18.377777
+"Uruguay","UY",-56.012,-32.8,-34.948891,-58.438614,-53.093056,-30.096668
+"Uzbekistan","UZ",63.17,41.75,37.183876,55.99749,73.173035,45.571106
+"Vanuatu","VU",166.899,-15.376,-20.254169,166.516663,170.235229,-13.070555
+"Venezuela","VE",-66.166,7.125,0.648611,-73.378067,-59.801392,12.198889
+"Viet Nam","VN",105.314,21.491,8.558609,102.140747,109.466377,23.334721
+"Wallis and Futuna Islands","WF",-178.131,-14.289,-14.323891,-178.191101,-176.121094,-13.213614
+"Western Sahara","EH",-13.706,24.554,20.764095,-17.105278,-8.666389,27.666958
+"Yemen","YE",48.355,15.807,12.10611,42.555832,54.476944,18.999344
+"Zambia","ZM",26.32,-14.614,-18.076126,21.996387,33.702278,-8.191668
+"Zimbabwe","ZW",29.872,-19,-22.414764,25.236664,33.073051,-15.616112
diff --git a/private/templates/default/gis_config.csv b/private/templates/default/gis_config.csv
index 2089d606b4..4aa3108b3b 100644
--- a/private/templates/default/gis_config.csv
+++ b/private/templates/default/gis_config.csv
@@ -1,3 +1,3 @@
-UUID,Name,Region,Default,Zoom,Lat,Lon,Projection,Symbology,MinLat,MaxLat,MinLon,MaxLon,WMS Browser
-SITE_DEFAULT,Default,,,2,22.593723263,5.28516253,900913,US,-90,90,-180,180,
+"UUID",Name,Region,Default,Zoom,Lat,Lon,Projection,Symbology,MinLat,MaxLat,MinLon,MaxLon,WMS Browser
+"SITE_DEFAULT",Default,,,2,22.593723263,5.28516253,900913,US,-90,90,-180,180,
,WGS84,,,2,22.593723263,5.28516253,4326,US,-90,90,-180,180,
diff --git a/static/formats/osm/import.xsl b/static/formats/osm/import.xsl
index fcf8c30fe6..0c1aa64f00 100644
--- a/static/formats/osm/import.xsl
+++ b/static/formats/osm/import.xsl
@@ -203,9 +203,15 @@
-
-
-
+
+
+
+ openstreetmap
+
+
+
+
+
@@ -68,40 +71,64 @@
+
+ use="concat(col[@field=$Country], '/', col[@field='L1'])"/>
+ use="concat(col[@field=$Country], '/', col[@field='L1'], '/',
+ col[@field='L2'])"/>
+ use="concat(col[@field=$Country], '/', col[@field='L1'], '/',
+ col[@field='L2'], '/',
+ col[@field='L3'])"/>
+ use="concat(col[@field=$Country], '/', col[@field='L1'], '/',
+ col[@field='L2'], '/',
+ col[@field='L3'], '/',
+ col[@field='L4'])"/>
+
+
+
+
+
+ concat(col[@field=$Country], '/',
+ col[@field='L1']))[1])]">
+ concat(col[@field=$Country], '/',
+ col[@field='L1'], '/',
+ col[@field='L2']))[1])]">
+ concat(col[@field=$Country], '/',
+ col[@field='L1'], '/',
+ col[@field='L2'], '/',
+ col[@field='L3']))[1])]">
+ concat(col[@field=$Country], '/',
+ col[@field='L1'], '/',
+ col[@field='L2'], '/',
+ col[@field='L3'], '/',
+ col[@field='L4']))[1])]">
@@ -110,18 +137,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L0
+
+
+
+
+
+
+
+
+
+
+
+ ISO2
+
+
+
+
+ population
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
@@ -144,16 +229,10 @@
-
+
L1
-
-
-
-
-
-
@@ -164,7 +243,7 @@
-
+
@@ -179,7 +258,10 @@
-
+
+ population
+
+
@@ -190,19 +272,15 @@
-
+
-
-
-
-
-
-
+
+
@@ -225,22 +303,16 @@
-
+
L2
-
-
-
-
-
-
-
+
-
+
@@ -256,7 +328,7 @@
-
+
@@ -271,7 +343,10 @@
-
+
+ population
+
+
@@ -282,22 +357,16 @@
-
+
-
-
-
-
-
-
-
-
-
+
+
+
@@ -320,30 +389,24 @@
-
+
L3
-
-
-
-
-
-
-
+
-
+
-
+
-
+
@@ -359,7 +422,7 @@
-
+
@@ -374,7 +437,10 @@
-
+
+ population
+
+
@@ -385,25 +451,17 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -426,38 +484,32 @@
-
+
L4
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
@@ -488,7 +540,10 @@
-
+
+ population
+
+
@@ -505,21 +560,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
@@ -540,96 +585,74 @@
-
-
-
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ population
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/formats/s3csv/labels.xml b/static/formats/s3csv/labels.xml
index 651787c07a..09a212db9d 100644
--- a/static/formats/s3csv/labels.xml
+++ b/static/formats/s3csv/labels.xml
@@ -114,7 +114,8 @@
-
+
diff --git a/views/pagenav.html b/views/pagenav.html
new file mode 100644
index 0000000000..6122b28584
--- /dev/null
+++ b/views/pagenav.html
@@ -0,0 +1,9 @@
+{{if "page" in request.vars:}}
+ {{try:}}
+ {{if totalpages <> 1:}}{{=pagenav(page=page, totalpages=totalpages)}}
+ {{pass}}
+ {{except:}}
+ {{try:}}{{=pagenav(page=page)}}
+ {{except:}}{{pass}}
+ {{pass}}
+{{pass}}
\ No newline at end of file