diff options
Diffstat (limited to 'test/unit/test_c_api.cpp')
| -rw-r--r-- | test/unit/test_c_api.cpp | 73 |
1 files changed, 72 insertions, 1 deletions
diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 2a82af64..44dceb97 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -2805,7 +2805,13 @@ TEST_F(CApi, proj_create_projections) { ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } - + { + auto projCRS = + proj_create_conversion_pole_rotation_netcdf_cf_convention( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } /* END: Generated by scripts/create_c_api_projections.py*/ } @@ -5199,6 +5205,71 @@ TEST_F(CApi, proj_create_derived_geographic_crs) { // --------------------------------------------------------------------------- +TEST_F(CApi, proj_create_derived_geographic_crs_netcdf_cf) { + + PJ *crs_4019 = proj_create(m_ctxt, "EPSG:4019"); + ObjectKeeper keeper_crs_4019(crs_4019); + ASSERT_NE(crs_4019, nullptr); + + PJ *conversion = proj_create_conversion_pole_rotation_netcdf_cf_convention( + m_ctxt, 2, 3, 4, "Degree", 0.0174532925199433); + ObjectKeeper keeper_conversion(conversion); + ASSERT_NE(conversion, nullptr); + + PJ *cs = proj_crs_get_coordinate_system(m_ctxt, crs_4019); + ObjectKeeper keeper_cs(cs); + ASSERT_NE(cs, nullptr); + + PJ *derived_crs = proj_create_derived_geographic_crs( + m_ctxt, "my rotated CRS", crs_4019, conversion, cs); + ObjectKeeper keeper_derived_crs(derived_crs); + ASSERT_NE(derived_crs, nullptr); + + auto wkt = proj_as_wkt(m_ctxt, derived_crs, PJ_WKT2_2019, nullptr); + const char *expected_wkt = + "GEOGCRS[\"my rotated CRS\",\n" + " BASEGEOGCRS[\"Unknown datum based upon the GRS 1980 ellipsoid\",\n" + " DATUM[\"Not specified (based on GRS 1980 ellipsoid)\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " DERIVINGCONVERSION[\"Pole rotation (netCDF CF convention)\",\n" + " METHOD[\"Pole rotation (netCDF CF convention)\"],\n" + " PARAMETER[\"Grid north pole latitude (netCDF CF " + "convention)\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"Grid north pole longitude (netCDF CF " + "convention)\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"North pole grid longitude (netCDF CF " + "convention)\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"geodetic longitude (Lon)\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]"; + + ASSERT_NE(wkt, nullptr); + EXPECT_EQ(wkt, std::string(expected_wkt)); + + auto proj_5 = proj_as_proj_string(m_ctxt, derived_crs, PJ_PROJ_5, nullptr); + ASSERT_NE(proj_5, nullptr); + EXPECT_EQ(proj_5, std::string("+proj=ob_tran +o_proj=longlat +o_lon_p=4 " + "+o_lat_p=2 +lon_0=183 +ellps=GRS80 +no_defs " + "+type=crs")); +} + +// --------------------------------------------------------------------------- + TEST_F(CApi, proj_context_set_sqlite3_vfs_name) { PJ_CONTEXT *ctx = proj_context_create(); |
