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"
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)]" )
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
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]
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
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"
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")
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():
def test_coordinate_operation__from_epsg(): cc = CoordinateOperation.from_epsg(16031) assert cc.method_auth_name == "EPSG" assert cc.method_code == "9807"
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
def test_operations(): transformer = TransformerGroup(28356, 7856).transformers[0] coord_op = CoordinateOperation.from_string(transformer.to_wkt()) assert coord_op.operations == transformer.operations
def test_scope__remarks(): co = CoordinateOperation.from_epsg("8048") assert "GDA94" in co.scope assert "Scale difference" in co.remarks
def test_coordinate_operation__from_string__invalid(invalid_str): with pytest.raises(CRSError, match="Invalid coordinate operation string"): CoordinateOperation.from_string(invalid_str)
def test_coordinate_operation__from_epsg__empty(): CoordinateOperation.from_epsg(1) is None
def test_coordinate_operation__from_name(): co = CoordinateOperation.from_name("UTM zone 12N") assert co.name == "UTM zone 12N"
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_authority(): cc = CoordinateOperation.from_authority("EPSG", 16031) assert cc.method_auth_name == "EPSG" assert cc.method_code == "9807"
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")
def test_coordinate_operation__from_string(): co = CoordinateOperation.from_string( "urn:ogc:def:coordinateOperation:EPSG::1671") assert co.name == "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_equals(): co = CoordinateOperation.from_epsg(1671) assert co == 1671 assert not co != 1671 assert co != "invalid"
def test_coordinate_operation__from_authority__empty(): with pytest.raises(CRSError, match="Invalid authority"): CoordinateOperation.from_authority("BOB", 4326)
def test_coordinate_operation__from_string(input_str): co = CoordinateOperation.from_string(input_str) assert co.name == "RGF93 to WGS 84 (1)"