Пример #1
0
def test_coordinate_operation__from_name_auth_type():
    co = CoordinateOperation.from_name(
        "ITRF_2000_To_WGS_1984",
        auth_name="ESRI",
        coordinate_operation_type=CoordinateOperationType.TRANSFORMATION,
    )
    assert co.name == "ITRF_2000_To_WGS_1984"
Пример #2
0
def test_coordinate_operation_grids():
    cc = CoordinateOperation.from_epsg(1312)
    assert (
        repr(cc.grids)
        == "[Grid(short_name=NTv1_0.gsb, full_name=, package_name=, url=, "
        "direct_download=False, open_license=False, available=False)]"
    )
Пример #3
0
def test_coordinate_operation_grids():
    cc = CoordinateOperation.from_epsg(1312)
    assert (
        repr(cc.grids)
        == "[Grid(short_name=NTv1_0.gsb, full_name=, package_name=, url=, "
        "direct_download=False, open_license=False, available=False)]"
    )
Пример #4
0
def test_coordinate_operation__to_proj4__pretty():
    operation = CoordinateOperation.from_string(
        "+proj=pipeline +step +proj=axisswap +order=2,1 +step "
        "+proj=unitconvert +xy_in=deg +xy_out=rad +step "
        "+proj=webmerc +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84")
    proj_string = operation.to_proj4(pretty=True)
    assert "+proj=pipeline" in proj_string
    assert "\n" in proj_string
Пример #5
0
def test_operations__scope_remarks():
    transformer = Transformer.from_crs(28356, 7856)
    coord_op = CoordinateOperation.from_string(transformer.to_wkt())
    assert coord_op.operations == transformer.operations
    # scope does not transfer for some reason
    # assert [op.scope for op in transformer.operations] == [
    #     op.scope for op in coord_op.operations
    # ]
    assert [op.remarks for op in transformer.operations
            ] == [op.remarks for op in coord_op.operations]
Пример #6
0
def test_coordinate_operation_grids__alternative_grid_name():
    cc = CoordinateOperation.from_epsg(1312, True)
    assert len(cc.grids) == 1
    grid = cc.grids[0]
    assert grid.short_name == "ntv1_can.dat"
    assert grid.full_name.endswith(grid.short_name)
    assert grid.package_name == "proj-datumgrid"
    assert grid.url.startswith("https://download.osgeo.org/proj/proj-datumgrid")
    assert grid.direct_download is True
    assert grid.open_license is True
    assert grid.available is True
Пример #7
0
def test_coordinate_operation_grids__alternative_grid_name():
    cc = CoordinateOperation.from_epsg(1312, True)
    assert len(cc.grids) == 1
    grid = cc.grids[0]
    assert grid.short_name == "ntv1_can.dat"
    assert grid.full_name.endswith(grid.short_name)
    assert grid.package_name == "proj-datumgrid"
    assert grid.url.startswith("https://download.osgeo.org/proj/proj-datumgrid")
    assert grid.direct_download is True
    assert grid.open_license is True
    assert grid.available is True
Пример #8
0
def test_coordinate_operation_grids__alternative_grid_name():
    cc = CoordinateOperation.from_epsg(1312, True)
    assert len(cc.grids) == 1
    grid = cc.grids[0]
    assert grid.direct_download is True
    assert grid.open_license is True
    assert grid.short_name == "ca_nrc_ntv1_can.tif"
    if grids_available(grid.short_name):
        assert grid.available is True
        assert grid.full_name.endswith(grid.short_name)
    else:
        assert grid.available is False
        assert grid.full_name == ""
    assert grid.package_name == ""
    assert grid.url == "https://cdn.proj.org/ca_nrc_ntv1_can.tif"
Пример #9
0
def test_coordinate_operation_grids__alternative_grid_name():
    cc = CoordinateOperation.from_epsg(1312, True)
    assert len(cc.grids) == 1
    grid = cc.grids[0]
    assert grid.direct_download is True
    assert grid.open_license is True
    assert grid.available is True
    if LooseVersion(proj_version_str) >= LooseVersion("7.0.0"):
        assert grid.short_name == "ca_nrc_ntv1_can.tif"
        assert grid.full_name.endswith("ntv1_can.dat")
        assert grid.package_name == ""
        assert grid.url == "https://cdn.proj.org/ca_nrc_ntv1_can.tif"
    else:
        assert grid.short_name == "ntv1_can.dat"
        assert grid.full_name.endswith(grid.short_name)
        assert grid.package_name == "proj-datumgrid"
        assert grid.url.startswith("https://download.osgeo.org/proj/proj-datumgrid")
Пример #10
0
    assert cc.method_code == "9807"


def test_coordinate_operation__from_authority():
    cc = CoordinateOperation.from_authority("EPSG", 16031)
    assert cc.method_auth_name == "EPSG"
    assert cc.method_code == "9807"


@pytest.mark.parametrize(
    "user_input",
    [
        1671,
        ("EPSG", 1671),
        "urn:ogc:def:coordinateOperation:EPSG::1671",
        CoordinateOperation.from_epsg(1671),
        CoordinateOperation.from_epsg(1671).to_json_dict(),
        "RGF93 to WGS 84 (1)",
    ],
)
def test_coordinate_operation__from_user_input(user_input):
    assert CoordinateOperation.from_user_input(
        user_input) == CoordinateOperation.from_epsg(1671)


def test_coordinate_operation__from_user_input__invalid():
    with pytest.raises(CRSError, match="Invalid coordinate operation"):
        CoordinateOperation.from_user_input({})


def test_coordinate_operation__from_epsg__empty():
Пример #11
0
def test_coordinate_operation__from_epsg():
    cc = CoordinateOperation.from_epsg(16031)
    assert cc.method_auth_name == "EPSG"
    assert cc.method_code == "9807"
Пример #12
0
def test_operations__scope_remarks():
    operation = TransformerGroup(28356, 7856).transformers[0].operations[1]
    coord_op = CoordinateOperation.from_string(operation.to_wkt())
    assert coord_op == operation
    assert coord_op.remarks == operation.remarks
    assert coord_op.scope == operation.scope
Пример #13
0
def test_operations():
    transformer = TransformerGroup(28356, 7856).transformers[0]
    coord_op = CoordinateOperation.from_string(transformer.to_wkt())
    assert coord_op.operations == transformer.operations
Пример #14
0
def test_scope__remarks():
    co = CoordinateOperation.from_epsg("8048")
    assert "GDA94" in co.scope
    assert "Scale difference" in co.remarks
Пример #15
0
def test_coordinate_operation__from_string__invalid(invalid_str):
    with pytest.raises(CRSError, match="Invalid coordinate operation string"):
        CoordinateOperation.from_string(invalid_str)
Пример #16
0
def test_coordinate_operation__from_epsg__empty():
    CoordinateOperation.from_epsg(1) is None
Пример #17
0
def test_coordinate_operation__from_name():
    co = CoordinateOperation.from_name("UTM zone 12N")
    assert co.name == "UTM zone 12N"
Пример #18
0
def test_coordinate_operation__from_user_input__invalid():
    with pytest.raises(CRSError, match="Invalid coordinate operation"):
        CoordinateOperation.from_user_input({})
Пример #19
0
def test_coordinate_operation__from_authority():
    cc = CoordinateOperation.from_authority("EPSG", 16031)
    assert cc.method_auth_name == "EPSG"
    assert cc.method_code == "9807"
Пример #20
0
def test_coordinate_operation__from_string__invalid():
    with pytest.raises(CRSError, match="Invalid coordinate operation string"):
        CoordinateOperation.from_string("3-598y5-98y")
    with pytest.raises(CRSError, match="Invalid coordinate operation string"):
        CoordinateOperation.from_string("urn:ogc:def:datum:EPSG::6326")
Пример #21
0
def test_coordinate_operation__from_string():
    co = CoordinateOperation.from_string(
        "urn:ogc:def:coordinateOperation:EPSG::1671")
    assert co.name == "RGF93 to WGS 84 (1)"
Пример #22
0
def test_coordinate_operation__from_user_input(user_input):
    assert CoordinateOperation.from_user_input(
        user_input) == CoordinateOperation.from_epsg(1671)
Пример #23
0
def test_coordinate_operation_equals():
    co = CoordinateOperation.from_epsg(1671)
    assert co == 1671
    assert not co != 1671
    assert co != "invalid"
Пример #24
0
def test_coordinate_operation__from_authority__empty():
    with pytest.raises(CRSError, match="Invalid authority"):
        CoordinateOperation.from_authority("BOB", 4326)
Пример #25
0
def test_coordinate_operation__from_string(input_str):
    co = CoordinateOperation.from_string(input_str)
    assert co.name == "RGF93 to WGS 84 (1)"