def test_vertical_perspective(): crs = ProjectedCRS( conversion=VerticalPerspectiveConversion(50, 0, 1, 0, 2, 3)) expected_cf = { "semi_major_axis": 6378137.0, "semi_minor_axis": crs.ellipsoid.semi_minor_metre, "inverse_flattening": crs.ellipsoid.inverse_flattening, "reference_ellipsoid_name": "WGS 84", "longitude_of_prime_meridian": 0.0, "prime_meridian_name": "Greenwich", "horizontal_datum_name": "World Geodetic System 1984", "grid_mapping_name": "vertical_perspective", "perspective_point_height": 50.0, "latitude_of_projection_origin": 0.0, "longitude_of_projection_origin": 1.0, "false_easting": 2.0, "false_northing": 3.0, "geographic_crs_name": "undefined", "projected_crs_name": "undefined", } cf_dict = crs.to_cf() assert cf_dict.pop("crs_wkt").startswith("PROJCRS[") assert cf_dict == expected_cf # test roundtrip _test_roundtrip(expected_cf, "PROJCRS[")
def test_compund_crs(): vertcrs = VerticalCRS( name="NAVD88 height", datum="North American Vertical Datum 1988", vertical_cs=VerticalCS(), geoid_model="GEOID12B", ) projcrs = ProjectedCRS( name="NAD83 / Pennsylvania South", conversion=LambertConformalConic2SPConversion( latitude_false_origin=39.3333333333333, longitude_false_origin=-77.75, latitude_first_parallel=40.9666666666667, latitude_second_parallel=39.9333333333333, easting_false_origin=600000, northing_false_origin=0, ), geodetic_crs=GeographicCRS(datum="North American Datum 1983"), cartesian_cs=Cartesian2DCS(), ) compcrs = CompoundCRS( name="NAD83 / Pennsylvania South + NAVD88 height", components=[projcrs, vertcrs] ) assert compcrs.name == "NAD83 / Pennsylvania South + NAVD88 height" assert compcrs.type_name == "Compound CRS" assert compcrs.sub_crs_list[0].type_name == "Projected CRS" assert compcrs.sub_crs_list[1].type_name == "Vertical CRS"
def test_bound_crs__example(): proj_crs = ProjectedCRS( conversion=TransverseMercatorConversion( latitude_natural_origin=0, longitude_natural_origin=15, false_easting=2520000, false_northing=0, scale_factor_natural_origin=0.9996, ), geodetic_crs=GeographicCRS( datum=CustomDatum(ellipsoid="International 1909 (Hayford)") ), ) bound_crs = BoundCRS( source_crs=proj_crs, target_crs="WGS 84", transformation=ToWGS84Transformation( proj_crs.geodetic_crs, -122.74, -34.27, -22.83, -1.884, -3.4, -3.03, -15.62 ), ) with pytest.warns(UserWarning): assert bound_crs.to_dict() == { "ellps": "intl", "k": 0.9996, "lat_0": 0, "lon_0": 15, "no_defs": None, "proj": "tmerc", "towgs84": [-122.74, -34.27, -22.83, -1.884, -3.4, -3.03, -15.62], "type": "crs", "units": "m", "x_0": 2520000, "y_0": 0, }
def test_make_projected_crs(tmp_path): aeaop = AlbersEqualAreaConversion(0, 0) pc = ProjectedCRS(conversion=aeaop, name="Albers") assert pc.name == "Albers" assert pc.type_name == "Derived Projected CRS" assert pc.coordinate_operation == aeaop assert_can_pickle(pc, tmp_path)
def test_projected_crs__from_methods(): assert_maker_inheritance_valid(ProjectedCRS.from_epsg(6933), ProjectedCRS) assert_maker_inheritance_valid(ProjectedCRS.from_string("EPSG:6933"), ProjectedCRS) assert_maker_inheritance_valid( ProjectedCRS.from_proj4("+proj=aea +lat_1=1"), ProjectedCRS) assert_maker_inheritance_valid( ProjectedCRS.from_user_input(ProjectedCRS.from_string("EPSG:6933")), ProjectedCRS, ) assert_maker_inheritance_valid(ProjectedCRS.from_json(CRS(6933).to_json()), ProjectedCRS) assert_maker_inheritance_valid( ProjectedCRS.from_json_dict(CRS(6933).to_json_dict()), ProjectedCRS) with pytest.raises(CRSError, match="Invalid type"): ProjectedCRS.from_epsg(4326)
def test_sinusoidal(): crs = ProjectedCRS(conversion=SinusoidalConversion(0, 1, 2)) expected_cf = { "semi_major_axis": 6378137.0, "semi_minor_axis": crs.ellipsoid.semi_minor_metre, "inverse_flattening": crs.ellipsoid.inverse_flattening, "reference_ellipsoid_name": "WGS 84", "longitude_of_prime_meridian": 0.0, "prime_meridian_name": "Greenwich", "horizontal_datum_name": "World Geodetic System 1984", "grid_mapping_name": "sinusoidal", "longitude_of_projection_origin": 0.0, "false_easting": 1.0, "false_northing": 2.0, } cf_dict = crs.to_cf() assert cf_dict.pop("crs_wkt").startswith("PROJCRS[") assert cf_dict == expected_cf # test roundtrip _test_roundtrip(expected_cf, "PROJCRS[")
def test_polar_stereographic_b(): crs = ProjectedCRS(conversion=PolarStereographicBConversion(0, 1, 2, 3)) expected_cf = { "semi_major_axis": 6378137.0, "semi_minor_axis": crs.ellipsoid.semi_minor_metre, "inverse_flattening": crs.ellipsoid.inverse_flattening, "reference_ellipsoid_name": "WGS 84", "longitude_of_prime_meridian": 0.0, "prime_meridian_name": "Greenwich", "horizontal_datum_name": "World Geodetic System 1984", "grid_mapping_name": "polar_stereographic", "standard_parallel": 0.0, "straight_vertical_longitude_from_pole": 1.0, "false_easting": 2.0, "false_northing": 3.0, } cf_dict = crs.to_cf() assert cf_dict.pop("crs_wkt").startswith("PROJCRS[") assert cf_dict == expected_cf # test roundtrip _test_roundtrip(expected_cf, "PROJCRS[")
def test_lambert_cylindrical_equal_area(): crs = ProjectedCRS( conversion=LambertCylindricalEqualAreaConversion(1, 2, 3, 4)) expected_cf = { "semi_major_axis": 6378137.0, "semi_minor_axis": crs.ellipsoid.semi_minor_metre, "inverse_flattening": crs.ellipsoid.inverse_flattening, "reference_ellipsoid_name": "WGS 84", "longitude_of_prime_meridian": 0.0, "prime_meridian_name": "Greenwich", "horizontal_datum_name": "World Geodetic System 1984", "grid_mapping_name": "lambert_cylindrical_equal_area", "standard_parallel": 1.0, "longitude_of_central_meridian": 2.0, "false_easting": 3.0, "false_northing": 4.0, } cf_dict = crs.to_cf() assert cf_dict.pop("crs_wkt").startswith("PROJCRS[") assert cf_dict == expected_cf # test roundtrip _test_roundtrip(expected_cf, "PROJCRS[")
def test_bound_crs(): proj_crs = ProjectedCRS(conversion=UTMConversion(12)) bound_crs = BoundCRS( source_crs=proj_crs, target_crs="WGS 84", transformation=ToWGS84Transformation( proj_crs.geodetic_crs, 1, 2, 3, 4, 5, 6, 7 ), ) assert bound_crs.type_name == "Bound CRS" assert bound_crs.source_crs.coordinate_operation.name == "UTM zone 12N" assert bound_crs.coordinate_operation.towgs84 == [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] assert bound_crs.target_crs.name == "WGS 84"
def test_mercator_a(): crs = ProjectedCRS(conversion=MercatorAConversion(1, 2, 3, 4)) expected_cf = { "semi_major_axis": 6378137.0, "semi_minor_axis": crs.ellipsoid.semi_minor_metre, "inverse_flattening": crs.ellipsoid.inverse_flattening, "reference_ellipsoid_name": "WGS 84", "longitude_of_prime_meridian": 0.0, "prime_meridian_name": "Greenwich", "horizontal_datum_name": "World Geodetic System 1984", "grid_mapping_name": "mercator", "standard_parallel": 1.0, "longitude_of_projection_origin": 2.0, "false_easting": 3.0, "false_northing": 4.0, "scale_factor_at_projection_origin": 1.0, "geographic_crs_name": "undefined", "projected_crs_name": "undefined", } cf_dict = crs.to_cf() assert cf_dict.pop("crs_wkt").startswith("PROJCRS[") assert cf_dict == expected_cf # test roundtrip _test_roundtrip(expected_cf, "PROJCRS[")
def test_make_projected_crs(): aeaop = AlbersEqualAreaConversion(0, 0) pc = ProjectedCRS(conversion=aeaop, name="Albers") assert pc.name == "Albers" assert pc.type_name == "Projected CRS" assert pc.coordinate_operation == aeaop