diff options
Diffstat (limited to 'src/iso19111/c_api.cpp')
| -rw-r--r-- | src/iso19111/c_api.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/iso19111/c_api.cpp b/src/iso19111/c_api.cpp index ace699e4..1bf6cbf0 100644 --- a/src/iso19111/c_api.cpp +++ b/src/iso19111/c_api.cpp @@ -7085,6 +7085,37 @@ PJ *proj_create_conversion_pole_rotation_grib_convention( return nullptr; } +// --------------------------------------------------------------------------- + +/** \brief Instantiate a conversion based on the Pole Rotation method, using + * the conventions of the netCDF CF convention for the netCDF format. + * + * See + * osgeo::proj::operation::Conversion::createPoleRotationNetCDFCFConvention(). + * + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). + */ +PJ *proj_create_conversion_pole_rotation_netcdf_cf_convention( + PJ_CONTEXT *ctx, double grid_north_pole_latitude, + double grid_north_pole_longitude, double north_pole_grid_longitude, + const char *ang_unit_name, double ang_unit_conv_factor) { + SANITIZE_CTX(ctx); + try { + UnitOfMeasure angUnit( + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); + auto conv = Conversion::createPoleRotationNetCDFCFConvention( + PropertyMap(), Angle(grid_north_pole_latitude, angUnit), + Angle(grid_north_pole_longitude, angUnit), + Angle(north_pole_grid_longitude, angUnit)); + return proj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + /* END: Generated by scripts/create_c_api_projections.py*/ // --------------------------------------------------------------------------- |
