def _register_arcgis_layers(service, arc=None): """ Register layers from an ArcGIS REST service """ arc = arc or ArcMapService(service.base_url) logger.info("Registering layers for %s" % service.base_url) for layer in arc.layers: valid_name = slugify(layer.name) count = 0 layer_uuid = str(uuid.uuid1()) bbox = [layer.extent.xmin, layer.extent.ymin, layer.extent.xmax, layer.extent.ymax] typename = layer.id existing_layer = None logger.info("Registering layer %s" % layer.name) try: existing_layer = Layer.objects.get(typename=typename, service=service) except Layer.DoesNotExist: pass llbbox = mercator_to_llbbox(bbox) if existing_layer is None: # Need to check if layer already exists?? logger.info("Importing layer %s" % layer.name) saved_layer, created = Layer.objects.get_or_create( typename=typename, service=service, defaults=dict( name=valid_name, store=service.name, # ?? storeType="remoteStore", workspace="remoteWorkspace", title=layer.name, abstract=layer._json_struct["description"] or _("Not provided"), uuid=layer_uuid, owner=None, srid="EPSG:%s" % layer.extent.spatialReference.wkid, bbox_x0=llbbox[0], bbox_x1=llbbox[2], bbox_y0=llbbox[1], bbox_y1=llbbox[3], ), ) saved_layer.set_default_permissions() saved_layer.save() service_layer, created = ServiceLayer.objects.get_or_create(service=service, typename=layer.id) service_layer.layer = saved_layer service_layer.title = (layer.name,) service_layer.description = (saved_layer.abstract,) service_layer.styles = None service_layer.save() create_arcgis_links(saved_layer) count += 1 message = "%d Layers Registered" % count return_dict = {"status": "ok", "msg": message} return return_dict
def _register_arcgis_layers(service, arc=None): """ Register layers from an ArcGIS REST service """ arc = arc or ArcMapService(service.base_url) for layer in arc.layers: valid_name = slugify(layer.name) count = 0 layer_uuid = str(uuid.uuid1()) bbox = [ layer.extent.xmin, layer.extent.ymin, layer.extent.xmax, layer.extent.ymax ] typename = layer.id existing_layer = None try: existing_layer = Layer.objects.get(typename=typename, service=service) except Layer.DoesNotExist: pass llbbox = mercator_to_llbbox(bbox) if existing_layer is None: # Need to check if layer already exists?? saved_layer, created = Layer.objects.get_or_create( typename=typename, service=service, defaults=dict( name=valid_name, store=service.name, # ?? storeType="remoteStore", workspace="remoteWorkspace", title=layer.name, abstract=layer._json_struct['description'] or _("Not provided"), uuid=layer_uuid, owner=None, srid="EPSG:%s" % layer.extent.spatialReference.wkid, bbox_x0=llbbox[0], bbox_x1=llbbox[2], bbox_y0=llbbox[1], bbox_y1=llbbox[3], )) saved_layer.set_default_permissions() saved_layer.save() service_layer, created = ServiceLayer.objects.get_or_create( service=service, typename=layer.id) service_layer.layer = saved_layer service_layer.title = layer.name, service_layer.description = saved_layer.abstract, service_layer.styles = None service_layer.save() create_arcgis_links(saved_layer) count += 1 message = "%d Layers Registered" % count return_dict = {'status': 'ok', 'msg': message} return return_dict