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))
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
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), )
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)))
def get_model(schema, table): model, geometry_field, geometry_field_type = get_layer(schema, table) return model
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)