def register_boundary(layer_name, nice_name, tiger_name, name_func, id_func, year=2014): update_dates = { 2012: date(2012, 8, 17), 2014: date(2012, 8, 19), } boundaries.register( '%d-%s' % (year, layer_name), name='United States - %s (%d)' % (nice_name, year), singular='United States - %s (%d)' % (nice_name, year), domain='United States', last_updated=update_dates[year], name_func=name_func, id_func=id_func, slug_func=id_func, label_point_func=get_innerpt, authority='United States Census', source_url='http://www.census.gov/geo/maps-data/data/tiger-line.html', #licence_url='', data_url='http://www2.census.gov/geo/tiger/TIGER%d/%s/tl_%d_us_%s.zip' % (year, tiger_name.upper(), year, tiger_name.lower()), #notes='', encoding='iso-8859-1', )
def load_zcta_boundaries(): # clear registry boundaries.registry = {} dl_path = _dl_path() today = datetime.date.today() for state in us.STATES: print state.name url = state.shapefile_urls('zcta') filename = url.split('/')[-1] (name, ext) = filename.rsplit('.', 1) extract_path = os.path.join(dl_path, name) if not os.path.exists(extract_path): os.mkdir(extract_path) zip_path = os.path.join(dl_path, filename) if not os.path.exists(zip_path): resp = requests.get(url) with open(zip_path, 'w') as outfile: outfile.write(resp.content) with zipfile.ZipFile(zip_path, 'r') as archive: archive.extractall(extract_path) os.unlink(zip_path) boundaries.register( '%s-zcta' % state.name.lower().replace(' ', ''), singular='census-zcta', domain='US', file=extract_path, last_updated=today, name_func=name_func(state.name, 'ZCTA5CE10'), id_func=boundaries.attr('ZCTA5CE10'), slug_func=slug_func('ZCTA5CE10'), label_point_func=label_point_func, authority='United States Census Bureau', source_url='http://www.census.gov/cgi-bin/geo/shapefiles2010/main', data_url=url, ) from django.core import management management.call_command('loadshapefiles')
def load_zcta_boundaries(): # clear registry boundaries.registry = {} dl_path = _dl_path() today = datetime.date.today() for state in us.STATES: print state.name url = state.shapefile_urls('zcta') filename = url.split('/')[-1] (name, ext) = filename.rsplit('.', 1) extract_path = os.path.join(dl_path, name) if not os.path.exists(extract_path): os.mkdir(extract_path) zip_path = os.path.join(dl_path, filename) if not os.path.exists(zip_path): resp = requests.get(url) with open(zip_path, 'w') as outfile: outfile.write(resp.content) with zipfile.ZipFile(zip_path, 'r') as archive: archive.extractall(extract_path) os.unlink(zip_path) boundaries.register('%s-zcta' % state.name.lower().replace(' ', ''), singular='census-zcta', domain='US', file=extract_path, last_updated=today, name_func=name_func(state.name, 'ZCTA5CE10'), id_func=boundaries.attr('ZCTA5CE10'), slug_func=slug_func('ZCTA5CE10'), label_point_func=label_point_func, authority='United States Census Bureau', source_url='http://www.census.gov/cgi-bin/geo/shapefiles2010/main', data_url=url, ) from django.core import management management.call_command('loadshapefiles')
def define(division_id): ocdid_to_sgc_code_map = {v: k for k, v in sgc_code_to_ocdid().items()} slug, config = get_definition(division_id) if isinstance(slug, re._pattern_type): slug = re.sub('\\\[AZ]', '', slug.pattern) config['slug'] = slug config['last_updated'] = datetime.now().strftime('%Y, %-m, %-d') config['authority'] = config['authority'][-1] ocd_type, ocd_type_id = division_id.split('/')[-1].split(':') if ocd_type == 'country' and ocd_type_id == 'ca': config['geographic_code'] = '01' elif ocd_type in ('province', 'territory', 'cd', 'csd'): config['geographic_code'] = ocdid_to_sgc_code_map[division_id] else: raise Exception('%s: Unrecognized OCD type %s' % (division_id, ocd_type)) print("""from datetime import date import boundaries boundaries.register(u'%(slug)s', domain=u'%(domain)s', last_updated=date(%(last_updated)s), name_func=boundaries.attr(''), id_func=boundaries.attr(''), authority=u'%(authority)s', encoding='iso-8859-1', metadata={'geographic_code': '%(geographic_code)s'}, )""" % config)
def define(division_id): """ Print the contents of a definition file. """ slug, config = get_definition(division_id) if isinstance(slug, re._pattern_type): slug = re.sub(r'\\[AZ]', '', slug.pattern) config['slug'] = slug config['last_updated'] = datetime.now().strftime('%Y, %-m, %-d') config['authority'] = config['authority'][-1] config['division_id'] = division_id print("""from datetime import date import boundaries boundaries.register('%(slug)s', domain='%(domain)s', last_updated=date(%(last_updated)s), name_func=boundaries.attr(''), id_func=boundaries.attr(''), authority='%(authority)s', encoding='iso-8859-1', extra={'division_id': '%(division_id)s'}, )""" % config)
def define(division_id): ocdid_to_sgc_code_map = {v: k for k, v in sgc_code_to_ocdid().items()} slug, config = get_definition(division_id) if isinstance(slug, re._pattern_type): slug = re.sub('\\\[AZ]', '', slug.pattern) config['slug'] = slug config['last_updated'] = datetime.now().strftime('%Y, %-m, %-d') config['authority'] = config['authority'][-1] ocd_type, ocd_type_id = division_id.split('/')[-1].split(':') if ocd_type == 'country' and ocd_type_id == 'ca': config['geographic_code'] = '01' elif ocd_type in ('province', 'territory', 'cd', 'csd'): config['geographic_code'] = ocdid_to_sgc_code_map[division_id] else: raise Exception('%s: Unrecognized OCD type %s' % (division_id, ocd_type)) print("""from __future__ import unicode_literals from datetime import date import boundaries boundaries.register('%(slug)s', domain='%(domain)s', last_updated=date(%(last_updated)s), name_func=boundaries.attr(''), id_func=boundaries.attr(''), authority='%(authority)s', encoding='iso-8859-1', metadata={'geographic_code': '%(geographic_code)s'}, )""" % config)
def register_boundary(layer_name, nice_name, tiger_name, name_func, id_func): boundaries.register('2012-%s' % layer_name, name='United States - %s (2012)' % nice_name, singular='United States - %s (2012)' % nice_name, domain='United States', last_updated=date(2012, 8, 17), name_func=name_func, id_func=id_func, slug_func=id_func, label_point_func=get_innerpt, authority='United States Census', source_url='http://www.census.gov/geo/maps-data/data/tiger-line.html', #licence_url='', data_url='http://www2.census.gov/geo/tiger/TIGER2012/%s/tl_2012_us_%s.zip' % (tiger_name.upper(), tiger_name.lower()), #notes='', encoding='iso-8859-1', )
def register_boundary(layer_name, nice_name, tiger_name, name_func, id_func): boundaries.register( '2012-%s' % layer_name, name='United States - %s (2012)' % nice_name, singular='United States - %s (2012)' % nice_name, domain='United States', last_updated=date(2012, 8, 17), name_func=name_func, id_func=id_func, slug_func=id_func, label_point_func=get_innerpt, authority='United States Census', source_url='http://www.census.gov/geo/maps-data/data/tiger-line.html', #licence_url='', data_url= 'http://www2.census.gov/geo/tiger/TIGER2012/%s/tl_2012_us_%s.zip' % (tiger_name.upper(), tiger_name.lower()), #notes='', encoding='iso-8859-1', )
from datetime import date import boundaries boundaries.register('Cambridge wards', domain='Cambridge, ON', last_updated=date(2013, 2, 20), name_func=boundaries.attr('WardName'), id_func=boundaries.attr('WardNumber'), authority='Regional Municipality of Waterloo', source_url='http://www.regionofwaterloo.ca/en/regionalGovernment/WardBoundaries.asp', licence_url='http://www.regionofwaterloo.ca/en/regionalGovernment/OpenDataLicence.asp', data_url='http://www.regionofwaterloo.ca/opendatadownloads/WardBoundaries.zip', encoding='iso-8859-1', metadata={'geographic_code': '3530010'}, ogr2ogr='''-where "Municipali='Cambridge'"''', )
from datetime import date import boundaries boundaries.register('Oakville wards', domain='Oakville, ON', last_updated=date(2018, 6, 11), name_func=lambda f: 'Ward %s' % f.get('Ward'), id_func=boundaries.attr('Ward'), authority='Town of Oakville', source_url='https://portal-exploreoakville.opendata.arcgis.com/datasets/toak::2018-ward-boundaries', licence_url='https://www.oakville.ca/data/open_data_licence.html', data_url='https://opendata.arcgis.com/datasets/36137fb86deb4431b53450cf16370a3b_0.zip', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:3524001'}, )
from datetime import date import boundaries boundaries.register("St. John's wards", domain="St. John's, NL", last_updated=date(2012, 8, 17), name_func=boundaries.attr('WARDNAME'), id_func=boundaries.attr('WARD'), authority="City of St. John's", encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:1001519'}, is_valid_func=lambda f: int(f.get('WARD')) != 0, )
from datetime import date import boundaries boundaries.register('Pennsylvania Places', domain='Pennsylvania', last_updated=date(2012, 11, 29), name_func=boundaries.attr('NAME'), id_func=boundaries.attr('GEOID'), slug_func=boundaries.attr('GEOID'), authority='United States Census Bureau', source_url='http://www.census.gov/cgi-bin/geo/shapefiles2012/main', data_url='http://www2.census.gov/geo/tiger/TIGER2012/PLACE/tl_2012_42_place.zip', )
import boundaries def ocd_id_func(feature): division = 'ocd-division/country:us/state:mn/place:st_paul' ward_number = feature.get('WARD').split('-')[1] return '{0}/ward:{1}'.format(division, ward_number) def ward_namer(feature): ward_number = feature.get('WARD').split('-')[1] return 'st-paul-ward-{0}'.format(ward_number) boundaries.register('st-paul-wards', file='', last_updated=date(2015, 9, 15), name='Saint Paul Wards', singular='Saint Paul Ward', domain='Saint Paul', authority='City of Saint Paul', source_url='https://github.com/datamade/open-divisions/raw/master/ocd-division/country:us/state:mn/place:st_paul/wards/St_Paul_wards.zip', licence_url='', start_date=date(2015,5,1), end_date=None, notes='', name_func=ward_namer, id_func=ocd_id_func, is_valid_func=lambda feature: True, label_point_func=lambda feature: None, )
def test_register(self): boundaries.registry = {} boundaries._basepath = '.' boundaries.register('foo', file='bar', last_updated=date(2000, 1, 1)) self.assertEqual(boundaries.registry, {'foo': {'file': './bar', 'last_updated': date(2000, 1, 1)}})
from __future__ import unicode_literals from datetime import date import boundaries boundaries.register( 'London wards', domain='London, ON', last_updated=date(2016, 1, 4), name_func=lambda f: 'Ward %s' % f.get('WARDS'), id_func=boundaries.attr('WARDS'), authority='City of London', source_url= 'http://www.london.ca/city-hall/open-data/Pages/Open-Data-Data-Catalogue.aspx', licence_url= 'http://www.london.ca/city-hall/open-data/Pages/OpenData-TermsofUse.aspx', data_url= 'http://apps.london.ca/OpenData/ShapeFiles_Zipped/2010_electoral_wards.zip', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:3539036'}, prj='http://spatialreference.org/ref/epsg/26917/prj/', )
from datetime import date import boundaries boundaries.register('Halifax districts', domain='Halifax, NS', last_updated=date(2014, 2, 28), name_func=boundaries.attr('DISTNAME'), id_func=boundaries.attr('DIST_ID'), authority='Halifax Regional Municipality', source_url='https://www.halifaxopendata.ca/Zoning/Polling-District/e7u6-by35', data_url='https://www.halifaxopendata.ca/api/geospatial/e7u6-by35?method=export&format=Shapefile', licence_url='https://www.halifaxopendata.ca/terms', encoding='iso-8859-1', metadata={'geographic_code': '1209034'}, )
from __future__ import unicode_literals import re from datetime import date import boundaries boundaries.register( 'Charlottetown wards', domain='Charlottetown, PE', last_updated=date(2013, 7, 19), name_func=boundaries.attr('NAME'), id_func=lambda f: re.sub(r'\D', '', f.get('KEY')), authority='Elections Prince Edward Island', source_url='http://www.electionspei.ca/municipalities/charlottetown', data_url= 'http://www.electionspei.ca/municipal/details/gis/shp/charlottetown_wards.zip', licence_url='http://www.electionspei.ca/apilicense', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:1102075'}, )
from datetime import date import boundaries boundaries.register( 'Polygons', last_updated=date(2000, 1, 1), name_func=boundaries.attr('str'), )
# encoding: utf-8 from datetime import date import boundaries boundaries.register(u'San José Council Districts', domain=u'San José, CA', last_updated=date(2012, 12, 4), name_func=lambda f: 'District %s' % f.get('DISTRICTS'), id_func=boundaries.attr('DISTRICTS'), authority=u'City of San José', source_url='http://www.sanjoseca.gov/index.aspx?NID=3308', data_url='http://www.sanjoseca.gov/DocumentCenter/View/9266', notes='Boundaries change every 10 years according to the census.', )
# coding: utf-8 from __future__ import unicode_literals from datetime import date import boundaries boundaries.register( 'Kirkland districts', domain='Kirkland, QC', last_updated=date(2013, 10, 6), name_func=boundaries.clean_attr('NOM_DISTRI'), authority='Ville de Montréal', source_url= 'http://donnees.ville.montreal.qc.ca/dataset/elections-2009-districts-electoraux', licence_url= 'http://donnees.ville.montreal.qc.ca/licence/licence-texte-complet/', data_url= 'http://donnees.ville.montreal.qc.ca/storage/f/2013-10-06T16:49:49.153Z/elections-2009-districts-multi-poly.zip', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:2466102'}, ogr2ogr='''-where "MONTREAL='0' AND NUM_ARR='3'"''', )
from datetime import date import boundaries boundaries.register( 'Oshawa wards', domain='Oshawa, ON', last_updated=date(2018, 10, 19), name_func=lambda f: 'Ward %s' % f.get('WARDNUMBER'), id_func=boundaries.attr('WARDNUMBER'), authority='City of Oshawa', source_url= 'https://city-oshawa.opendata.arcgis.com/datasets/oshawa-2018-ward-boundaries', licence_url= 'https://map.oshawa.ca/OpenData/Open%20Government%20Licence%20version%202.0%20-%20Oshawa.pdf', data_url= 'https://opendata.arcgis.com/datasets/a9257f99b2d941a3bff928f4a19d6f9d_11.zip', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:3518013'}, )
from __future__ import unicode_literals import re from datetime import date import boundaries boundaries.register( 'Clarington wards', domain='Clarington, ON', last_updated=date(2012, 11, 15), name_func=boundaries.attr('WARD'), id_func=lambda f: re.sub(r'\D', '', f.get('WARD')), authority='Municipality of Clarington', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:3518017'}, )
return int(f.get('NO_DIS')) for geographic_code, (name, type) in sets.items(): geographic_codes = [geographic_code] boundaries.register( '%s %s' % (name, type), domain='%s, QC' % name, last_updated=date(2017, 11, 30), name_func=district_namer, id_func=district_ider, authority='Directeur général des élections du Québec', licence_url= 'https://www.electionsquebec.qc.ca/francais/conditions-d-utilisation-de-notre-site-web.php', encoding='utf-8', extra={ 'division_id': 'ocd-division/country:ca/csd:24%05d' % geographic_code }, is_valid_func=lambda f, geographic_codes=geographic_codes: int( f.get('CO_MUNCP')) in geographic_codes, notes= 'Load the shapefile manually:\nfab alpheus update_boundaries:args="-r --merge combine -d data/shapefiles/public/boundaries/ca_qc_districts"', ) boundaries.register( 'Paroisse de Plessisville districts', domain='Plessisville, QC', last_updated=date(2017, 11, 30), name_func=district_namer,
from datetime import date import boundaries boundaries.register( '', domain='', last_updated=date(), name_func=boundaries.attr(''), id_func=boundaries.attr(''), authority='', source_url='', licence_url='', data_url='', encoding='iso-8859-1', metadata={'geographic_code': ''}, )
from datetime import date import boundaries boundaries.register( 'Newmarket wards', domain='Newmarket, ON', last_updated=date(2016, 8, 6), name_func=lambda f: 'Ward %s' % f.get('WARD'), id_func=boundaries.attr('WARD'), authority='Town of Newmarket', encoding='iso-8859-1', source_url= 'http://open.newmarket.ca/opendata/navigo/#/show/4e404ea7c3cb6e3c?disp=6b625f5', licence_url= 'https://www.newmarket.ca/TownGovernment/Documents/Newmarket_OpenData_Licence.pdf', extra={'division_id': 'ocd-division/country:ca/csd:3519048'}, )
'1314019': ['Kedgwick', 'Kedgwick'], '1314025': ['Belledune', 'Belledune'], '1315027': ['Bas-Caraquet', 'Bas-Caraquet'], '1315028': ['Caraquet', 'Caraquet'], } for geographic_code, (name, machine_name) in sets.items(): boundaries.register( '%s wards' % name, file='%s.shp' % name, domain='%s, NB' % name, last_updated=date(2014, 3, 24), name_func=lambda f: 'Ward %s' % f.get('WARD_ID'), id_func=boundaries.attr('WARD_ID'), authority='Her Majesty the Queen in Right of New Brunswick', source_url= 'http://geonb.snb.ca/ArcGIS/rest/services/ElectionsNB/GeoNB_ENB_MunicipalWards/MapServer/0', licence_url= 'http://geonb.snb.ca/downloads/documents/geonb_license_e.pdf', encoding='iso-8859-1', metadata={'geographic_code': geographic_code}, ogr2ogr='''-where "MUN_NAME='%s'"''' % machine_name, base_file='OGRGeoJSON.shp', ) boundaries.register( 'Beresford wards', file='Beresford.shp', domain='Beresford, NB', last_updated=date(2014, 3, 24), name_func=lambda f: 'Ward B' if f.get('OBJECTID') == 52 else 'Ward A',
import boundaries def namer(f): import boundaries n = boundaries.clean_attr('FEDENAME')(f) # @see http://www.parl.gc.ca/HousePublications/Publication.aspx?Language=E&Mode=1&DocId=6684609&File=4 if n == 'Western Arctic': return 'Northwest Territories' else: return n boundaries.register( 'Federal electoral districts (2003 Representation Order)', singular='Federal electoral district', domain='Canada', last_updated=date(2011, 11, 28), name_func=namer, id_func=boundaries.attr('FEDUID'), slug_func=boundaries.attr('FEDUID'), authority='Her Majesty the Queen in Right of Canada', source_url= 'https://open.canada.ca/data/en/dataset/48f10fb9-78a2-43a9-92ab-354c28d30674', licence_url='https://open.canada.ca/en/open-government-licence-canada', data_url= 'https://www12.statcan.gc.ca/census-recensement/2011/geo/bound-limit/files-fichiers/gfed000a11a_e.zip', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca'}, )
def valid_ward(feature): if feature.get('WARD') != 'OUT': return True return False def ocd_id_func(feature): return 'ocd-division/country:us/state:il/place:chicago/ward:{0}'.format(feature.get('WARD')) def ward_namer(feature): return 'chicago-ward-{0}'.format(feature.get('WARD')) boundaries.register('chicago-wards-2003', file='', last_updated=date(2015, 4, 2), name='Chicago Wards 2003', singular='Chicago Ward 2003', domain='Chicago', authority='City of Chicago', source_url='https://data.cityofchicago.org/api/geospatial/xt4z-bnwh?method=export&format=Original', licence_url='', start_date=date(2003,5,1), end_date=date(2015,4,30), notes='', name_func=ward_namer, id_func=ocd_id_func, is_valid_func=valid_ward, label_point_func=lambda feature: None, )
# coding: utf-8 from datetime import date import boundaries boundaries.register( 'Quebec electoral districts (2011)', singular='Quebec electoral district', domain='Quebec', last_updated=date(2012, 2, 24), name_func=boundaries.clean_attr('NM_CEP'), id_func=boundaries.attr('CO_CEP'), authority='Directeur général des élections du Québec', source_url= 'https://www.electionsquebec.qc.ca/francais/provincial/carte-electorale/geometrie-des-circonscriptions-provinciales-du-quebec.php', licence_url= 'https://www.electionsquebec.qc.ca/francais/conditions-d-utilisation-de-notre-site-web.php', data_url= 'https://www.electionsquebec.qc.ca/documents/zip/circonscriptions-electorales-2011-shapefile-v2.zip', encoding='windows-1252', extra={'division_id': 'ocd-division/country:ca/province:qc'}, )
from datetime import date import boundaries def namer(f): import boundaries n = boundaries.clean_attr('ELEC_DISTR')(f) if n == 'Ths Isles of Notre Dame': return u'The Isles of Notre Dame' return n boundaries.register('Newfoundland and Labrador electoral districts', domain='Newfoundland and Labrador', last_updated=date(2012, 9, 27), name_func=namer, authority='Her Majesty the Queen in Right of Newfoundland and Labrador', source_url='http://www.elections.gov.nl.ca/elections/ElectoralBoundaries/index.html', data_url='http://www.elections.gov.nl.ca/elections/ElectoralBoundaries/Distibution_2011.zip', encoding='iso-8859-1', metadata={'geographic_code': '10'}, )
from datetime import date import boundaries boundaries.register('British Columbia electoral districts', domain='British Columbia', last_updated=date(2011, 12, 12), name_func=boundaries.attr('edname'), id_func=boundaries.attr('edabbr'), authority='Elections BC', source_url='http://www.elections.bc.ca/index.php/voting/electoral-maps-profiles/geographic-information-system-spatial-data-files-2011/', data_url='http://www.elections.bc.ca/docs/map/redis11/GIS/ED_Province.exe', encoding='iso-8859-1', )
# coding: utf-8 import re from datetime import date import boundaries boundaries.register('Summerside wards', domain='Summerside, PE', last_updated=date(2013, 7, 19), name_func=boundaries.dashed_attr('NAME'), id_func=lambda f: re.sub(r'\D', '', f.get('KEY')), authority='Elections Prince Edward Island', source_url='http://www.electionspei.ca/index.php?number=1051954&lang=F', data_url='http://www.electionspei.ca/municipal/details/gis/shp/summerside_wards.zip', licence_url='http://www.electionspei.ca/apilicense', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:1103025'}, )
# coding: utf-8 from datetime import date import boundaries boundaries.register(u'Westmount districts', domain=u'Westmount, QC', last_updated=date(2013, 10, 6), name_func=lambda f: 'District %s' % re.sub(r'\D', '', f.get('NOM_DISTRI')), id_func=lambda f: re.sub(r'\D', '', f.get('NOM_DISTRI')), authority=u'Ville de Montréal', source_url='http://donnees.ville.montreal.qc.ca/dataset/elections-2009-districts-electoraux', licence_url='http://donnees.ville.montreal.qc.ca/licence/licence-texte-complet/', data_url='http://donnees.ville.montreal.qc.ca/storage/f/2013-10-06T16:49:49.153Z/elections-2009-districts-multi-poly.zip', encoding='iso-8859-1', metadata={'geographic_code': '2466032'}, ogr2ogr='''-where "MONTREAL='0' AND NUM_ARR='4'"''', )
def get_anc_name(mode): def g(feature): if mode == "name": return "ANC " + feature.get("SMD_ID")[0:2] if mode == "id": return feature.get("SMD_ID")[0:2] if mode == "slug": return feature.get("SMD_ID")[0:2] return True return g boundaries.register('dc-smd-2013', name='DC Single Member Districts (2013)', singular='DC Single Member District (2013)', domain='District of Columbia, United States', last_updated=date(2012, 10, 19), is_valid_func=get_smd_name("is_valid"), name_func=get_smd_name("name"), id_func=get_smd_name("id"), slug_func=get_smd_name("slug"), authority='DC OCTO/DC GIS/DC OP', source_url='http://data.dc.gov/Metadata.aspx?id=3090', #data_url='', #encoding='iso-8859-1', ) boundaries.register('dc-anc-2013', name='DC Advisory Neighborhood Commissions (2013)', singular='DC Advisory Neighborhood Commission (2013)', domain='District of Columbia, United States', last_updated=date(2012, 10, 19), is_valid_func=get_anc_name("is_valid"), name_func=get_anc_name("name"), id_func=get_anc_name("id"),
#coding: utf-8 from datetime import date import boundaries boundaries.register(u'Montréal boroughs', domain=u'Montréal, QC', last_updated=date(2013, 8, 9), name_func=boundaries.clean_attr('ARROND'), authority=u'Ville de Montréal', source_url='http://donnees.ville.montreal.qc.ca/fiche/polygones-arrondissements/', licence_url='http://donnees.ville.montreal.qc.ca/licence/licence-texte-complet/', data_url='http://depot.ville.montreal.qc.ca/polygones-arrondissements/data.zip', notes='The Ahuntsic-Cartierville borough is split into two features. We merge them using Quantum GIS.', encoding='iso-8859-1', metadata={'geographic_code': '2466023'}, )
def namer(f): import boundaries if f.get('CO_MUNCP') == 43027: return { 'Le Mont-Bellevue': 'Mont-Bellevue', 'Rock Rorest--Saint-lie--Deauville': 'Rock Forest—Saint-Élie—Deauville', }.get(f.get('NM_ARON'), boundaries.clean_attr('NM_ARON')(f)) elif f.get('CO_MUNCP') == 66023: return { 'Le Plateau-Mont-Royal': 'Plateau-Mont-Royal', 'Le Sud-Ouest': 'Sud-Ouest', 'Pierrefond-Roxboro': 'Pierrefonds-Roxboro', 'Rosemont--La-Petite-Patrie': 'Rosemont—La Petite-Patrie', }.get(f.get('NM_ARON'), boundaries.clean_attr('NM_ARON')(f)) else: return boundaries.clean_attr('NM_ARON')(f) for geographic_code, name in sets.items(): boundaries.register('%s boroughs' % name, file='%s.shp' % unidecode(name), domain='%s, QC' % name, last_updated=date(2014, 2, 28), name_func=namer, id_func=lambda f: int(f.get('NO_ARON')), authority='Directeur général des élections du Québec', licence_url='http://www.electionsquebec.qc.ca/francais/conditions-d-utilisation-de-notre-site-web.php', encoding='iso-8859-1', metadata={'geographic_code': '24%05d' % geographic_code}, )
# coding: utf-8 from datetime import date import boundaries boundaries.register('Quebec electoral districts (2011)', singular='Quebec electoral district', domain='Quebec', last_updated=date(2012, 2, 24), name_func=boundaries.clean_attr('NM_CEP'), id_func=boundaries.attr('CO_CEP'), authority='Directeur général des élections du Québec', source_url='https://www.electionsquebec.qc.ca/francais/provincial/carte-electorale/geometrie-des-circonscriptions-provinciales-du-quebec.php', licence_url='https://www.electionsquebec.qc.ca/francais/conditions-d-utilisation-de-notre-site-web.php', data_url='https://www.electionsquebec.qc.ca/documents/zip/circonscriptions-electorales-2011-shapefile-v2.zip', encoding='windows-1252', extra={'division_id': 'ocd-division/country:ca/province:qc'}, )
from datetime import date import boundaries boundaries.register('Thunder Bay wards', domain='Thunder Bay, ON', last_updated=date(2014, 3, 25), name_func=boundaries.clean_attr('WARD_NAME'), id_func=lambda f: f.get('WARD_NO').replace('00', ''), authority='City of Thunder Bay', encoding='iso-8859-1', metadata={'geographic_code': '3558004'}, )
from __future__ import unicode_literals import re from datetime import date import boundaries boundaries.register( 'Fredericton wards', domain='Fredericton, NB', last_updated=date(2013, 11, 26), name_func=lambda f: re.sub(' / ', '/', f.get('Ward')), id_func=boundaries.attr('Ward_Num'), authority='City of Fredericton', source_url='http://www.fredericton.ca/en/citygovernment/DataMain.asp', licence_url='http://www.fredericton.ca/en/citygovernment/TermsOfUse.asp', data_url='http://files.fredericton.ca/data/GISData/wards.zip', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:1310032'}, )
import re from datetime import date import boundaries boundaries.register('Halton Hills wards', domain='Halton Hills, ON', last_updated=date(2017, 1, 16), name_func=boundaries.attr('WARD'), id_func=lambda f: re.sub(r'\D+', '', f.get('WARD')), authority='Town of Halton Hills', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:3524015'}, )
from datetime import date import boundaries boundaries.register('Moncton wards', domain='Moncton, NB', last_updated=date(2012, 8, 21), name_func=lambda f: 'Ward %s' % f.get('WARDNUMB'), id_func=boundaries.attr('WARDNUMB'), authority='City of Moncton', encoding='iso-8859-1', metadata={'geographic_code': '1307022'}, )
from datetime import date import boundaries boundaries.register( 'British Columbia electoral districts (2008 Redistribution)', singular='British Columbia electoral district', domain='British Columbia', last_updated=date(2016, 11, 30), name_func=boundaries.attr('ED_NAME'), id_func=boundaries.attr('ED_ABBREV'), authority='Her Majesty the Queen in Right of British Columbia', source_url= 'https://catalogue.data.gov.bc.ca/dataset/provincial-electoral-districts-electoral-boundaries-redistribution-2008', licence_url='https://www.elections.bc.ca/docs/EBC-Open-Data-Licence.pdf', data_url= 'https://catalogue.data.gov.bc.ca/dataset/c864f294-d302-4630-bde3-a0551735b309/resource/dc567bfb-488b-4765-b544-6bd02f61f736/download/edsre2008.zip', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/province:bc'}, )
from datetime import date import boundaries boundaries.register('Census divisions', domain='Canada', last_updated=date(2011, 11, 28), name_func=boundaries.attr('CDNAME'), id_func=boundaries.attr('CDUID'), slug_func=boundaries.attr('CDUID'), authority='Her Majesty the Queen in Right of Canada', source_url='http://data.gc.ca/data/en/dataset/515dbfa9-9069-4877-8fe8-177edaa4ca76', licence_url='http://data.gc.ca/eng/open-government-licence-canada', data_url='http://www12.statcan.gc.ca/census-recensement/2011/geo/bound-limit/files-fichiers/gcd_000a11a_e.zip', encoding='iso-8859-1', )
from datetime import date import boundaries def ocd_id_func(feature): return 'ocd-division/country:us/state:il/sldu:{0}'.format(feature.get('District_1')) def district_namer(feature): return 'il-senate-district-{0}'.format(str(feature.get('District_1')).zfill(3)) boundaries.register('illinois-upper-2011', file='', last_updated=date(2011, 5, 26), name='Illinois Senate Districts', singular='Illinois Senate District', domain='Illinois', authority='State of Illinois', source_url='http://ilhousedems.com/redistricting/2011-maps/Legislative_Districts_Public_Act/House%20and%20Senate%20shape%20files.zip', licence_url='', start_date=date(2011,5,1), end_date=None, notes='', name_func=district_namer, id_func=ocd_id_func, is_valid_func=lambda feature: True, label_point_func=lambda feature: None, )
from __future__ import unicode_literals from datetime import date import boundaries boundaries.register( 'Northwest Territories electoral districts', domain='Northwest Territories', last_updated=date(2014, 4, 9), name_func=boundaries.attr('ED'), id_func=lambda f: int(f.get('EDNWTF_ID')), authority='Her Majesty the Queen in Right of Northwest Territories', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/territory:nt'}, )
from datetime import date import boundaries boundaries.register('Census subdivisions', domain='Canada', last_updated=date(2011, 11, 28), name_func=boundaries.attr('CSDNAME'), id_func=boundaries.attr('CSDUID'), # Census subdivision names are not unique across provinces and territories slug_func=boundaries.attr('CSDUID'), authority='Her Majesty the Queen in Right of Canada', source_url='http://data.gc.ca/data/en/dataset/8b577e89-8c56-4048-b4db-b9d5c753d419', licence_url='http://data.gc.ca/eng/open-government-licence-canada', data_url='http://www12.statcan.gc.ca/census-recensement/2011/geo/bound-limit/files-fichiers/gcsd000a11a_e.zip', encoding='iso-8859-1', )
from datetime import date import boundaries boundaries.register('Census subdivisions', domain='Canada', last_updated=date(2011, 11, 28), name_func=boundaries.attr('CSDNAME'), id_func=boundaries.attr('CSDUID'), slug_func=boundaries.attr('CSDUID'), authority='Statistics Canada', source_url='http://www12.statcan.gc.ca/census-recensement/2011/geo/bound-limit/bound-limit-eng.cfm', licence_url='http://www.statcan.gc.ca/reference/licence-eng.html', data_url='http://www12.statcan.gc.ca/census-recensement/2011/geo/bound-limit/files-fichiers/gcsd000a11a_e.zip', notes='Census subdivision names are not unique across provinces.', encoding='iso-8859-1', )
'St-Henri-Petite-Bourgogne-Pte-St-Charles': 'Saint-Henri—Petite-Bourgogne—Pointe-Saint-Charles', 'Étienne-Desmarteaux': 'Étienne-Desmarteau', }.get(f.get('NM_DIS'), f.get('NM_DIS')) else: return { 'Le Plateau-Mont-Royal': 'Plateau-Mont-Royal', 'Le Sud-Ouest': 'Sud-Ouest', 'Pierrefond-Roxboro': 'Pierrefonds-Roxboro', 'Rosemont--La-Petite-Patrie': 'Rosemont—La Petite-Patrie', }.get(f.get('NM_ARON'), boundaries.clean_attr('NM_ARON')(f)) def ider(f): if f.get('NO_DIS'): return f.get('NO_DIS') else: return int(f.get('NO_ARON')) boundaries.register('Montréal boroughs and districts', domain='Montréal, QC', last_updated=date(2017, 11, 30), name_func=namer, id_func=ider, authority='Directeur général des élections du Québec', licence_url='https://www.electionsquebec.qc.ca/francais/conditions-d-utilisation-de-notre-site-web.php', encoding='utf-8', extra={'division_id': 'ocd-division/country:ca/csd:2466023'}, notes='''rm -f boundaries/ocd-division/country:ca/csd:2466023/merge.*\nogr2ogr -f "ESRI Shapefile" boundaries/ocd-division/country:ca/csd:2466023/merge.shp boundaries/ca_qc_districts/Districts_Mun_2017_11_30.shp -where "CO_MUNCP='66023'" -select NM_ARON,NO_ARON\nogr2ogr -f "ESRI Shapefile" boundaries/ocd-division/country:ca/csd:2466023/merge.shp boundaries/ca_qc_districts/Districts_Mun_2017_11_30.shp -where "CO_MUNCP='66023'" -append -addfields\nLoad the shapefile manually:\nfab alpheus update_boundaries:args="-r --merge combine -d data/shapefiles/public/boundaries/ocd-division/country:ca/csd:2466023"''', )
from datetime import date import boundaries boundaries.register('Empty', last_updated=date(2000, 1, 1), name_func=boundaries.attr('id'), file='../../fixtures/empty.zip', )
def get_ward_name(mode): def g(feature): if mode == "name": return "Ward " + feature.get("SMD_ID")[0] if mode == "id": return feature.get("SMD_ID")[0] if mode == "slug": return feature.get("SMD_ID")[0] return True return g boundaries.register('dc-smd-2013', name='DC Single Member Districts (2013)', singular='DC Single Member District (2013)', domain='District of Columbia, United States', last_updated=date(2012, 10, 19), is_valid_func=get_smd_name("is_valid"), name_func=get_smd_name("name"), id_func=get_smd_name("id"), slug_func=get_smd_name("slug"), authority='DC OCTO/DC GIS/DC OP', source_url='http://data.dc.gov/Metadata.aspx?id=3090', #data_url='', #encoding='iso-8859-1', ) boundaries.register('dc-anc-2013', name='DC Advisory Neighborhood Commissions (2013)', singular='DC Advisory Neighborhood Commission (2013)', domain='District of Columbia, United States', last_updated=date(2012, 10, 19), is_valid_func=get_anc_name("is_valid"), name_func=get_anc_name("name"), id_func=get_anc_name("id"),
# coding: utf-8 from datetime import date import boundaries boundaries.register(u'Sainte-Foy–Sillery–Cap-Rouge districts', domain=u'Sainte-Foy–Sillery–Cap-Rouge, Québec, QC', last_updated=date(2014, 3, 1), name_func=lambda f: re.sub(u'', u'—', f.get('NOM')), # unknown character, m-dash id_func=boundaries.attr('CODE'), authority=u'Ville de Québec', source_url='http://donnees.ville.quebec.qc.ca/donne_details.aspx?jdid=2', licence_url='https://creativecommons.org/licenses/by/4.0/legalcode', data_url='http://donnees.ville.quebec.qc.ca/Handler.ashx?id=43&f=SHP', encoding='iso-8859-1', metadata={'ocd_division': u'ocd-division/country:ca/csd:2423027/borough:3'}, ogr2ogr='''-where "DATE_FIN='2017/11/05' AND ARROND='Sainte-FoySilleryCap-Rouge'"''', )
#coding: utf-8 from datetime import date import boundaries boundaries.register(u'Québec boroughs', domain=u'Québec, QC', last_updated=date(2013, 8, 20), name_func=boundaries.clean_attr('NOM'), id_func=boundaries.attr('CODE'), authority=u'Ville de Québec', source_url='http://donnees.ville.quebec.qc.ca/donne_details.aspx?jdid=2', licence_url='http://donnees.ville.quebec.qc.ca/licence.aspx', data_url='http://donnees.ville.quebec.qc.ca/Handler.ashx?id=2&f=SHP', encoding='iso-8859-1', metadata={'geographic_code': '2423027'}, prj='http://spatialreference.org/ref/epsg/4326/prj/', )
from datetime import date import boundaries boundaries.register('Peterborough wards', domain='Peterborough, ON', last_updated=date(2012, 9, 05), name_func=boundaries.attr('NAME'), id_func=boundaries.attr('WARD_ID'), authority='City of Peterborough', encoding='iso-8859-1', metadata={'geographic_code': '3515014'}, )
from datetime import date import boundaries boundaries.register('Strathcona County wards', domain='Strathcona County, AB', last_updated=date(2012, 10, 11), name_func=lambda f: 'Ward %s' % f.get('Ward'), id_func=boundaries.attr('Ward'), authority='Strathcona County', notes='We use a shapefile received via email.', encoding='iso-8859-1', )
from __future__ import unicode_literals from datetime import date import boundaries boundaries.register( 'Calgary wards', domain='Calgary, AB', last_updated=date(2016, 1, 4), name_func=boundaries.clean_attr('LABEL'), id_func=boundaries.attr('WARD_NUM'), authority='City of Calgary', source_url= 'https://data.calgary.ca/OpenData/Pages/DatasetDetails.aspx?DatasetID=PDC0-99999-99999-00009-P%28CITYonlineDefault%29', licence_url='https://data.calgary.ca/OpenData/Pages/TermsofUse.aspx', data_url= 'https://data.calgary.ca/_layouts/OpenData/DownloadDataset.ashx?Format=SHP&DatasetId=PDC0-99999-99999-00009-P(CITYonlineDefault)&VariantId=3(CITYonlineDefault)', encoding='iso-8859-1', extra={'division_id': 'ocd-division/country:ca/csd:4806016'}, )