aboutsummaryrefslogtreecommitdiff
path: root/src/c_api.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2018-12-11 16:03:21 +0100
committerEven Rouault <even.rouault@spatialys.com>2018-12-11 16:27:10 +0100
commit189955fbb0c36a81737a40f84e03df323e5f9356 (patch)
tree3b716b0820883f2cd1cccbde3ad69220c3b51cd9 /src/c_api.cpp
parentc2c2e5d7f22f3c44c188200717236cf23547ac6f (diff)
downloadPROJ-189955fbb0c36a81737a40f84e03df323e5f9356.tar.gz
PROJ-189955fbb0c36a81737a40f84e03df323e5f9356.zip
API: add setters for Laborde Oblique Mercator, and add mapping to WKT1
Diffstat (limited to 'src/c_api.cpp')
-rw-r--r--src/c_api.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/c_api.cpp b/src/c_api.cpp
index 496312f7..e5ceca7d 100644
--- a/src/c_api.cpp
+++ b/src/c_api.cpp
@@ -4265,6 +4265,42 @@ proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin(
}
// ---------------------------------------------------------------------------
+/** \brief Instanciate a ProjectedCRS with a conversion based on the Laborde
+ * Oblique Mercator projection method.
+ *
+ * See
+ * osgeo::proj::operation::Conversion::createLabordeObliqueMercator().
+ *
+ * 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_OBJ *proj_obj_create_conversion_laborde_oblique_mercator(
+ PJ_CONTEXT *ctx, double latitude_projection_centre,
+ double longitude_projection_centre, double azimuth_initial_line,
+ double scale, double false_easting, double false_northing,
+ const char *ang_unit_name, double ang_unit_conv_factor,
+ const char *linear_unit_name, double linear_unit_conv_factor) {
+ SANITIZE_CTX(ctx);
+ try {
+ UnitOfMeasure linearUnit(
+ createLinearUnit(linear_unit_name, linear_unit_conv_factor));
+ UnitOfMeasure angUnit(
+ createAngularUnit(ang_unit_name, ang_unit_conv_factor));
+ auto conv = Conversion::createLabordeObliqueMercator(
+ PropertyMap(), Angle(latitude_projection_centre, angUnit),
+ Angle(longitude_projection_centre, angUnit),
+ Angle(azimuth_initial_line, angUnit), Scale(scale),
+ Length(false_easting, linearUnit),
+ Length(false_northing, linearUnit));
+ return proj_obj_create_conversion(conv);
+ } catch (const std::exception &e) {
+ proj_log_error(ctx, __FUNCTION__, e.what());
+ }
+ return nullptr;
+}
+// ---------------------------------------------------------------------------
+
/** \brief Instanciate a ProjectedCRS with a conversion based on the
* International Map of the World Polyconic projection method.
*