Exemplo n.º 1
0
def test_compose(cube, release_cube_dummy, mocker, test_args, expect):
    mocker.patch('datacube_wms.data.get_cube', cube)
    mocker.patch('datacube_wms.wms_layers.get_cube', cube)
    mocker.patch('datacube_wms.data.release_cube', release_cube_dummy)
    mocker.patch('datacube_wms.wms_layers.release_cube', release_cube_dummy)

    # stacker = DataStacker('s2b_nrt_granule', None, '2008-01-01')
    app = flask.Flask(
        "test",
        root_path=os.path.dirname(os.path.realpath(__file__) + "/../.."))
    with app.test_request_context('/?GetFeatureInfo'):
        result = json.loads(feature_info(test_args)[0])

        assert result["type"] == expect["type"]
        assert len(result["features"]) == 1
        feature = result["features"][0]
        expected_feature = expect["features"][0]
        properties = feature["properties"]
        expected_properties = expected_feature["properties"]
        bands = properties["bands"]
        expected_bands = expected_properties["bands"]
        assert properties["lon"] == expected_properties["lon"]
        assert properties["lat"] == expected_properties["lat"]
        assert properties["time"] == expected_properties["time"]
        assert bands["blue"] == expected_bands["blue"]
        assert bands["green"] == expected_bands["green"]
        assert bands["red"] == expected_bands["red"]
        assert bands["nir"] == expected_bands["nir"]
        assert bands["swir1"] == expected_bands["swir1"]
        assert bands["swir2"] == expected_bands["swir2"]
        assert properties["data_available_for_dates"][
            0] == expected_properties["data_available_for_dates"][0]
        assert properties["data_links"][0] == expected_properties[
            "data_links"][0]
Exemplo n.º 2
0
def wms_impl():
    nocase_args = lower_get_args()
    service = nocase_args.get("service", "").upper()
    operation = nocase_args.get("request", "").upper()
    try:
        if service == "WMS":
            # WMS operation Map
            if not operation:
                raise WMSException("No operation specified",
                                   locator="Request parameter")
            elif operation == "GETCAPABILITIES":
                return get_capabilities(nocase_args)
            elif operation == "GETMAP":
                return get_map(nocase_args)
            elif operation == "GETFEATUREINFO":
                return feature_info(nocase_args)
            else:
                raise WMSException("Unrecognised operation: %s" % operation,
                                   WMSException.OPERATION_NOT_SUPPORTED,
                                   "Request parameter")
        else:
            raise WMSException("Invalid service", locator="Service parameter")
    except WMSException as e:
        return wms_exception(e)
    except Exception as e:
        tb = sys.exc_info()[2]
        wms_e = WMSException("Unexpected server error: %s" % str(e),
                             http_response=500)
        return wms_exception(wms_e, traceback=traceback.extract_tb(tb))
Exemplo n.º 3
0
def get_feature_info(args):
    wms_args = wmts_args_to_wms(args)
    wms_args["query_layers"] = wms_args["layers"]

    try:
        return feature_info(wms_args)
    except WMSException as wmse:
        first_error = wmse.errors[0]
        e = WMTSException(first_error["msg"],
                          code=first_error["code"],
                          locator=first_error["locator"],
                          http_response=wmse.http_response)
        for error in wmse.errors[1:]:
            e.add_error(error["msg"], code=error["code"], locator=error["locator"])
        raise e
Exemplo n.º 4
0
def handle_wms(nocase_args):
    operation = nocase_args.get("request", "").upper()
    # WMS operation Map
    if not operation:
        raise WMSException("No operation specified",
                           locator="Request parameter")
    elif operation == "GETCAPABILITIES":
        return get_capabilities(nocase_args)
    elif operation == "GETMAP":
        return get_map(nocase_args)
    elif operation == "GETFEATUREINFO":
        return feature_info(nocase_args)
    else:
        raise WMSException("Unrecognised operation: %s" % operation,
                           WMSException.OPERATION_NOT_SUPPORTED,
                           "Request parameter")
Exemplo n.º 5
0
def wms_impl():
    nocase_args = lower_get_args()
    operation = nocase_args.get("request")
    try:
        if not operation:
            raise WMSException("No operation specified",
                               locator="Request parameter")
        elif operation == "GetCapabilities":
            return get_capabilities(nocase_args)
        elif operation == "GetMap":
            return get_map(nocase_args)
        elif operation == "GetFeatureInfo":
            return feature_info(nocase_args)
        else:
            raise WMSException("Unrecognised operation: %s" % operation,
                               WMSException.OPERATION_NOT_SUPPORTED,
                               "Request parameter")
    except WMSException as e:
        return wms_exception(e)
    except Exception as e:
        tb = sys.exc_info()[2]
        wms_e = WMSException("Unexpected server error: %s" % str(e),
                             http_response=500)
        return wms_exception(wms_e, traceback=traceback.extract_tb(tb))
Exemplo n.º 6
0
def handle_wms(nocase_args):
    operation = nocase_args.get("request", "").upper()
    # WMS operation Map
    if not operation:
        raise WMSException("No operation specified",
                           locator="Request parameter")
    elif operation == "GETCAPABILITIES":
        return get_capabilities(nocase_args)
    elif operation == "GETMAP":
        return get_map(nocase_args)
    elif operation == "GETFEATUREINFO":
        return feature_info(nocase_args)
    elif operation == "GETLEGENDGRAPHIC":
        response = legend_graphic(nocase_args)
        if response is None:
            raise WMSException(
                "Operation GetLegendGraphic not supported for this product and style",
                WMSException.OPERATION_NOT_SUPPORTED, "Request parameter")
        else:
            return response
    else:
        raise WMSException("Unrecognised operation: %s" % operation,
                           WMSException.OPERATION_NOT_SUPPORTED,
                           "Request parameter")