Esempio n. 1
0
def get_query(schema, table):
    model, geometry_field, geometry_field_type = get_layer(schema, table)
    fields = []
    for field in model._meta.get_fields():
        if field.get_attname() != geometry_field:
            fields.append(field.column)
    pk_field = model._meta.pk.column

    return GEOJSON_QUERY.format(pk_column=pk_field,
                                schema=schema,
                                table=table,
                                geometry_column=geometry_field,
                                field_names=', '.join(fields))
Esempio n. 2
0
def get_serializer(schema, table):
    model, geometry_field, geometry_field_type = get_layer(schema, table)
    meta = type(
        'Meta', (),
        dict(
            model=model,
            fields='__all__',
            geo_field=geometry_field,
        ))
    serializer_name = 'serializer_{}_{}'.format(schema, table)
    serializer = type(
        serializer_name,
        (GeoFeatureModelSerializer, ),
        dict(Meta=meta),
    )

    return serializer
Esempio n. 3
0
def get_wms_layer(umap):
    bbox = None
    for l in umap.layers.all():
        try:
            md = l.metadata
            schema, table = md.resource_identifier.split('/')
            model, geometry_field, geometry_field_type = get_layer(
                schema, table)
            bbox = merge_bb(get_bounding_box(schema, table, geometry_field),
                            bbox)
        except Exception as ex:
            print('Error {}'.format(ex))

    title = '{} - {}'.format(umap.title.fr, umap.title.nl)
    return dict(
        name=umap.id,
        title=title,
        srs='31370',
        bbox=bbox,
        geo=transform_bb(bbox),
    )
Esempio n. 4
0
    def handle(self, *args, **options):
        schemas = options['schema']
        for schema in schemas:
            conn = connections[schema]
            # self.stdout.write(
            #     self.style.SUCCESS('Connected to {}'.format(schema)))
            with conn.cursor() as cursor:
                cursor.execute('SELECT * FROM "public"."geometry_columns";')
                for r in dictfetchall(cursor):
                    r_schema = r['f_table_schema']
                    r_table = r['f_table_name']
                    if r_schema == schema:
                        # self.stdout.write(self.style.SQL_TABLE(r_table))
                        try:
                            model, geometry_field, geometry_field_type = get_layer(
                                r_schema, r_table)
                        except NoPKError:
                            err_msg = 'NoPrimaryKeyError on {}.{}'.format(
                                r_schema, r_table)
                            self.stdout.write(self.style.ERROR(err_msg))
                            continue
                        except Exception as e:
                            err_msg = 'ERROR\nget_layer({}, {}) \n{}'.format(
                                r_schema, r_table, e)
                            self.stdout.write(self.style.ERROR(err_msg))
                            continue

                        try:
                            model.objects.first()
                        except Exception as e:
                            err_msg = 'ERROR\nfirst({}, {}) \n{}'.format(
                                r_schema, r_table, e)
                            self.stdout.write(self.style.ERROR(err_msg))
                            continue

                        self.stdout.write(
                            self.style.SQL_TABLE('{}.{}'.format(
                                r_schema, r_table)))
Esempio n. 5
0
def get_model(schema, table):
    model, geometry_field, geometry_field_type = get_layer(schema, table)

    return model
Esempio n. 6
0
def layer(request, schema, table):
    model, gf, gft = get_layer(schema, table)
    items = model.objects.using(schema).all()
    print(len(items))
    json_data = serialize('geojson', items, geometry_field=gf)
    return HttpResponse(json_data)