Example #1
0
    def __init__(self, resource_factory, resource_json):
        NGWResource.__init__(self, resource_factory, resource_json)

        if self.type_id in self._json:
            if "geometry_type" in self._json[self.type_id]:
                self.set_icon(self.geom_type())

        self._field_defs = {}
        for field_def in self._json.get("feature_layer", {}).get("fields", []):
            self._field_defs[field_def.get("keyname")] = field_def
    def _construct(self):
        NGWResource._construct(self)
        self.ngw_wms_connection_url = None
        self.ngw_wms_layers = []

        wms_layer_desc = self._json.get(self.type_id, {})
        wms_connection_id = wms_layer_desc.get("connection", {}).get("id")
        if wms_connection_id is not None:
            wms_connection = self._res_factory.get_resource(wms_connection_id)
            self.ngw_wms_connection_url = wms_connection.get_connection_url()
        self.ngw_wms_layers = wms_layer_desc.get("wmslayers").split(",")
Example #3
0
    def create_in_group(cls,
                        name,
                        ngw_group_resource,
                        wms_url,
                        version="1.1.1",
                        auth=(None, None)):
        connection = ngw_group_resource._res_factory.connection
        url = ngw_group_resource.get_api_collection_url()

        params = dict(resource=dict(cls=cls.type_id,
                                    display_name=name,
                                    parent=dict(
                                        id=ngw_group_resource.common.id)))

        params[cls.type_id] = dict(
            url=wms_url,
            username=auth[0],
            password=auth[1],
            version=version,
            capcache="query",
        )

        result = connection.post(url, params=params)

        ngw_resource = cls(
            ngw_group_resource._res_factory,
            NGWResource.receive_resource_obj(connection, result['id']))

        return ngw_resource
    def create_style(self):
        """Create default style for this layer
        """
        connection = self._res_factory.connection
        style_name = self.generate_unique_child_name(self.common.display_name +
                                                     '-style')

        params = dict(resource=dict(cls="raster_style",
                                    parent=dict(id=self.common.id),
                                    display_name=style_name), )

        url = self.get_api_collection_url()
        result = connection.post(url, params=params)
        ngw_resource = NGWResource(
            self._res_factory,
            NGWResource.receive_resource_obj(connection, result['id']))

        return ngw_resource
Example #5
0
    def create_in_group(cls, name, ngw_group_resource, ngw_webmap_items, ngw_base_maps=[], bbox=[-180, 180, 90, -90]):
        connection = ngw_group_resource._res_factory.connection
        url = ngw_group_resource.get_api_collection_url()

        base_maps = []
        for ngw_base_map in ngw_base_maps:
            base_maps.append(
                {
                    "display_name": ngw_base_map.common.display_name,
                    "resource_id": ngw_base_map.common.id,
                    "enabled": True,
                    "opacity": None,
                }
            )
        web_map_base_maps = dict(
            basemaps=base_maps,
        )

        web_map = dict(
            extent_left=bbox[0],
            extent_right=bbox[1],
            extent_top=bbox[2],
            extent_bottom=bbox[3],
            root_item=dict(
                item_type="root",
                children=ngw_webmap_items
            )
        )

        params = dict(
            resource=dict(
                cls=NGWWebMap.type_id,
                display_name=name,
                parent=dict(
                    id=ngw_group_resource.common.id
                )
            ),
            webmap=web_map,
            basemap_webmap=web_map_base_maps,
        )

        result = connection.post(url, params=params)

        ngw_resource = NGWWebMap(
            ngw_group_resource._res_factory,
            NGWResource.receive_resource_obj(
                connection,
                result['id']
            )
        )

        return ngw_resource
Example #6
0
    def create_empty(cls, ngw_resource_parent, display_name):
        display_name_uniq = ngw_resource_parent.generate_unique_child_name(
            display_name)

        parameters = {
            "resource": {
                "cls": cls.type_id,
                "parent": {
                    "id": ngw_resource_parent.common.id
                },
                "display_name": display_name_uniq,
                "keyname": None,
                "description": None
            },
            "resmeta": {
                "items": {}
            },
            "vector_layer": {
                "srs": {
                    "id": 3857
                },
                "geometry_type": "POINT",
                "fields": [
                    {
                        "keyname": "attr",
                        "datatype": "STRING"
                    },
                ]
            }
        }

        connection = ngw_resource_parent._res_factory.connection

        url = cls.get_api_collection_url()
        result = connection.post(url, params=parameters)
        ngw_resource = NGWVectorLayer(
            ngw_resource_parent._res_factory,
            NGWResource.receive_resource_obj(
                ngw_resource_parent._res_factory.connection, result['id']))

        return ngw_resource
Example #7
0
    def create_in_group(cls, name, ngw_group_resource, ngw_layers_with_style):
        connection = ngw_group_resource._res_factory.connection
        url = ngw_group_resource.get_api_collection_url()

        params_layers = []
        for ngw_layer, ngw_style_id in ngw_layers_with_style:
            params_layer = dict(
                display_name=ngw_layer.common.display_name,
                keyname="ngw_id_%d" % ngw_layer.common.id,
                resource_id=ngw_style_id,
                min_scale_denom=None,
                max_scale_denom=None,
            )
            params_layers.append(params_layer)

        params = dict(
            resource=dict(
                cls=cls.type_id,
                display_name=name,
                parent=dict(
                    id=ngw_group_resource.common.id
                )
            )
        )

        params[cls.type_id] = dict(
            layers=params_layers
        )

        result = connection.post(url, params=params)

        ngw_resource = cls(
            ngw_group_resource._res_factory,
            NGWResource.receive_resource_obj(
                connection,
                result['id']
            )
        )

        return ngw_resource
    def create_in_group(cls,
                        name,
                        ngw_group_resource,
                        base_map_url,
                        qms_ext_settings=None):
        connection = ngw_group_resource._res_factory.connection
        params = dict(resource=dict(cls=cls.type_id,
                                    display_name=name,
                                    parent=dict(
                                        id=ngw_group_resource.common.id)))

        qms_parameters = None
        if qms_ext_settings is not None:
            qms_parameters = qms_ext_settings.toJSON()

        params[cls.type_id] = dict(url=base_map_url, qms=qms_parameters)
        result = connection.post(ngw_group_resource.get_api_collection_url(),
                                 params=params)

        ngw_resource = cls(
            ngw_group_resource._res_factory,
            NGWResource.receive_resource_obj(connection, result['id']))

        return ngw_resource
Example #9
0
    def create_qml_style(self, qml, callback):
        """Create QML style for this layer

        qml - full path to qml file
        callback - upload file callback
        """
        connection = self._res_factory.connection
        style_name = self.generate_unique_child_name(self.common.display_name +
                                                     '-style')

        style_file_desc = connection.upload_file(qml, callback)

        params = dict(resource=dict(cls=NGWQGISVectorStyle.type_id,
                                    parent=dict(id=self.common.id),
                                    display_name=style_name), )
        params[NGWQGISVectorStyle.type_id] = dict(file_upload=style_file_desc)

        url = self.get_api_collection_url()
        result = connection.post(url, params=params)
        ngw_resource = NGWQGISVectorStyle(
            self._res_factory,
            NGWResource.receive_resource_obj(connection, result['id']))

        return ngw_resource
    def create_in_group(cls, name, ngw_group_resource, ngw_wms_connection_id,
                        wms_layers, wms_format):
        connection = ngw_group_resource._res_factory.connection
        url = ngw_group_resource.get_api_collection_url()

        params = dict(resource=dict(cls=cls.type_id,
                                    display_name=name,
                                    parent=dict(
                                        id=ngw_group_resource.common.id)))

        params[cls.type_id] = dict(
            connection=dict(id=ngw_wms_connection_id),
            wmslayers=",".join(wms_layers),
            imgformat=wms_format,
            srs=dict(id=3857),
        )

        result = connection.post(url, params=params)

        ngw_resource = cls(
            ngw_group_resource._res_factory,
            NGWResource.receive_resource_obj(connection, result['id']))

        return ngw_resource
Example #11
0
 def __init__(self, resource_factory, resource_json):
     NGWResource.__init__(self, resource_factory, resource_json)
Example #12
0
 def __init__(self, resource_factory, resource_json):
     NGWResource.__init__(self, resource_factory, resource_json)
Example #13
0
 def _construct(self):
     NGWResource._construct(self)
     #wfsserver_service
     self.wfs = DICT_TO_OBJ(self._json['wfsserver_service'])
     if self.wfs.layers:
         self.wfs.layers = LIST_DICT_TO_LIST_OBJ(self.wfs.layers)
Example #14
0
 def _construct(self):
     NGWResource._construct(self)
     #wfsserver_service
     self.wfs = DICT_TO_OBJ(self._json[self.type_id])
     if hasattr(self.wfs, "layers"):
         self.wfs.layers = LIST_DICT_TO_LIST_OBJ(self.wfs.layers)
 def get_resource(self, resource_id):
     res_json = NGWResource.receive_resource_obj(self.__conn, resource_id)
     return self.get_resource_by_json(res_json)