def load_boroughs(self, path, parent=None, name_col=None, ident_col=None): ds = DataSource(path) mapping = LayerMapping(GeoRegion, ds, {'geom': 'POLYGON'}) layer = ds[0] parent = GeoRegion.objects.get(kind='municipality', name=parent) for i, feature in enumerate(layer): name = feature[name_col].as_string() identifier = feature[ident_col].as_string()[:2] kind = 'borough' kind_detail = 'Bezirk' slug = slugify(name) geom = mapping.feature_kwargs(feature)['geom'] region_identifier = parent.region_identifier + identifier GeoRegion.objects.update_or_create( slug=slug, kind=kind, defaults={ 'name': name, 'kind': kind, 'kind_detail': kind_detail, 'level': 6, 'region_identifier': region_identifier, 'global_identifier': '', 'population': None, 'geom': geom, 'area': feature.geom.area, 'valid_on': None, 'part_of': parent } )
def load_boroughs(self, path, parent=None, name_col=None, ident_col=None): ds = DataSource(path) mapping = LayerMapping(GeoRegion, ds, {'geom': 'POLYGON'}) layer = ds[0] parent = GeoRegion.objects.get(kind='municipality', name=parent) for _i, feature in enumerate(layer): name = feature[name_col].as_string() identifier = feature[ident_col].as_string()[:2] kind = 'borough' kind_detail = 'Bezirk' slug = slugify(name) geom = mapping.feature_kwargs(feature)['geom'] region_identifier = parent.region_identifier + identifier GeoRegion.objects.update_or_create(slug=slug, kind=kind, defaults={ 'name': name, 'kind': kind, 'kind_detail': kind_detail, 'level': 6, 'region_identifier': region_identifier, 'global_identifier': '', 'population': None, 'geom': geom, 'area': feature.geom.area, 'valid_on': None, 'part_of': parent })
def load_zip(self, filename): path = os.path.abspath(filename) csv_path = os.path.join(os.path.dirname(path), 'plz_einwohner.csv') with open(csv_path) as f: reader = csv.DictReader(f) population = {x['plz']: int(x['einwohner']) for x in reader} ds = DataSource(path) mapping = LayerMapping(GeoRegion, ds, {'geom': 'geometry'}) layer = ds[0] count = float(len(layer)) for i, feature in enumerate(layer): self.stdout.write('%.2f%%\r' % (i / count * 100), ending='') name = feature['plz'].as_string() slug = name geom = mapping.feature_kwargs(feature)['geom'] GeoRegion.objects.update_or_create( slug=slug, kind='zipcode', defaults={ 'name': name, 'geom': geom, 'description': feature['note'].as_string(), 'region_identifier': name, 'global_identifier': 'DE-%s' % name, 'area': feature.geom.area, 'population': population.get(name, None), 'level': 3, 'valid_on': timezone.now() } )
def set_gov_seats(self, path, filename): ds = self.get_ds(path, filename) mapping = LayerMapping(GeoRegion, ds, {'geom': 'POINT'}) layer = ds[0] count = float(len(layer)) for i, feature in enumerate(layer): self.stdout.write('%.2f%%\r' % (i / count * 100), ending='') region_identifier = feature['RS'].as_string() try: gr = GeoRegion.objects.get(region_identifier=region_identifier) gr.gov_seat = mapping.feature_kwargs(feature)['geom'] gr.save() except GeoRegion.DoesNotExist: pass
def load_boroughs(self, klass, path): ds = DataSource(path) mapping = LayerMapping(klass, ds, {'geom': 'POLYGON'}) layer = ds[0] for feature in layer: name = feature['Bezirk_Nam'].as_string() slug = slugify(name) geom = mapping.feature_kwargs(feature)['geom'] klass.objects.get_or_create(slug=slug, defaults={ 'name': name, 'geom': geom, 'area': feature.geom.area, 'kind': 'borough' })
def set_gov_seats(self, path, filename): ds = self.get_ds(path, filename) mapping = LayerMapping(GeoRegion, ds, {'geom': 'POINT'}) layer = ds[0] count = float(len(layer)) for i, feature in enumerate(layer): self.stdout.write('%.2f%%\r' % (i / count * 100), ending='') region_identifier = feature['RS'].as_string() try: gr = GeoRegion.objects.get(region_identifier=region_identifier) gr.gov_seat = mapping.feature_kwargs(feature)['geom'] gr.save() except GeoRegion.DoesNotExist: pass
def load_zip(self, klass, base_path, filename): path = os.path.abspath(os.path.join(base_path, filename)) ds = DataSource(path) mapping = LayerMapping(klass, ds, {'geom': 'geometry'}) layer = ds[0] for feature in layer: name = feature['plz'].as_string() slug = name geom = mapping.feature_kwargs(feature)['geom'] klass.objects.get_or_create(slug=slug, defaults={ 'name': name, 'geom': geom, 'area': feature.geom.area, 'kind': 'zipcode' })