Ejemplo n.º 1
0
    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
                }
            )
Ejemplo n.º 2
0
    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
                                               })
Ejemplo n.º 3
0
    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()
                }
            )
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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'
         })
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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'
         })