aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2018-11-30 16:15:36 +0100
committerEven Rouault <even.rouault@spatialys.com>2018-11-30 16:15:36 +0100
commitb6a5c445e202e61c64b0986679a6e0a83724c322 (patch)
tree70fdd74c8b59741922f5ed54bf2f35ff0a57ce90
parent2d1deb2da9eab38febb4d4ce92faffa5d25a1e58 (diff)
downloadPROJ-b6a5c445e202e61c64b0986679a6e0a83724c322.tar.gz
PROJ-b6a5c445e202e61c64b0986679a6e0a83724c322.zip
API: move all advanced PJ_OBJ creation functions in a dedicated proj_experimental.h header
-rw-r--r--Doxyfile2
-rw-r--r--src/Makefile.am2
-rw-r--r--src/c_api.cpp1
-rw-r--r--src/lib_proj.cmake1
-rw-r--r--src/proj.h778
-rw-r--r--src/proj_experimental.h831
-rw-r--r--test/unit/test_c_api.cpp1
7 files changed, 836 insertions, 780 deletions
diff --git a/Doxyfile b/Doxyfile
index cc772c2e..282030fc 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -772,7 +772,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
-INPUT = src include/proj src/proj.h src/general_doc.dox
+INPUT = src include/proj src/proj.h src/proj_experimental.h src/general_doc.dox
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
diff --git a/src/Makefile.am b/src/Makefile.am
index c0802dff..99158f02 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -10,7 +10,7 @@ AM_CPPFLAGS = -DPROJ_LIB=\"$(pkgdatadir)\" \
-DMUTEX_@MUTEX_SETTING@ @JNI_INCLUDE@ -I$(top_srcdir)/include @SQLITE3_FLAGS@
AM_CXXFLAGS = @CXX_WFLAGS@ @FLTO_FLAG@ -DPROJ_COMPILATION
-include_HEADERS = proj.h proj_constants.h proj_api.h geodesic.h \
+include_HEADERS = proj.h proj_experimental.h proj_constants.h proj_api.h geodesic.h \
org_proj4_PJ.h proj_symbol_rename.h
EXTRA_DIST = bin_cct.cmake bin_gie.cmake bin_cs2cs.cmake \
diff --git a/src/c_api.cpp b/src/c_api.cpp
index c7ba992e..a0dbecc2 100644
--- a/src/c_api.cpp
+++ b/src/c_api.cpp
@@ -52,6 +52,7 @@
// clang-format off
#include "proj_internal.h"
#include "proj.h"
+#include "proj_experimental.h"
#include "projects.h"
// clang-format on
diff --git a/src/lib_proj.cmake b/src/lib_proj.cmake
index bb45db44..9e6f51fd 100644
--- a/src/lib_proj.cmake
+++ b/src/lib_proj.cmake
@@ -265,6 +265,7 @@ set(SRC_LIBPROJ_CPP
set(HEADERS_LIBPROJ
proj_api.h
proj.h
+ proj_experimental.h
proj_constants.h
geodesic.h
)
diff --git a/src/proj.h b/src/proj.h
index aca8aed2..18731328 100644
--- a/src/proj.h
+++ b/src/proj.h
@@ -902,784 +902,6 @@ double PROJ_DLL proj_coordoperation_get_accuracy(PJ_CONTEXT *ctx,
/**@}*/
-/* ------------------------------------------------------------------------- */
-/* Binding in C of advanced methods from the C++ API */
-/* */
-/* Manual construction of CRS objects. */
-/* ------------------------------------------------------------------------- */
-
-/**
- * \defgroup advanced_cpp_binding Binding in C of advanced methods from the C++ API
- * @{
- */
-
-/** Type of unit of measure. */
-typedef enum
-{
- /** Angular unit of measure */
- PJ_UT_ANGULAR,
- /** Linear unit of measure */
- PJ_UT_LINEAR,
- /** Scale unit of measure */
- PJ_UT_SCALE,
- /** Time unit of measure */
- PJ_UT_TIME,
- /** Parametric unit of measure */
- PJ_UT_PARAMETRIC
-} PJ_UNIT_TYPE;
-
-/** Axis description. */
-typedef struct
-{
- /** Axis name. */
- char* name;
- /** Axis abbreviation. */
- char* abbreviation;
- /** Axis direction. */
- char* direction;
- /** Axis unit name. */
- char* unit_name;
- /** Conversion factor to SI of the unit. */
- double unit_conv_factor;
- /** Type of unit */
- PJ_UNIT_TYPE unit_type;
-} PJ_AXIS_DESCRIPTION;
-
-PJ_OBJ PROJ_DLL *proj_obj_create_cs(PJ_CONTEXT *ctx,
- PJ_COORDINATE_SYSTEM_TYPE type,
- int axis_count,
- const PJ_AXIS_DESCRIPTION* axis);
-
-/** Type of Cartesian 2D coordinate system. */
-typedef enum
-{
- /* Easting-Norting */
- PJ_CART2D_EASTING_NORTHING,
- /* Northing-Easting */
- PJ_CART2D_NORTHING_EASTING,
-} PJ_CARTESIAN_CS_2D_TYPE;
-
-PJ_OBJ PROJ_DLL *proj_obj_create_cartesian_2D_cs(PJ_CONTEXT *ctx,
- PJ_CARTESIAN_CS_2D_TYPE type,
- const char* unit_name,
- double unit_conv_factor);
-
-
-/** Type of Cartesian 2D coordinate system. */
-typedef enum
-{
- /* Longitude-Latitude */
- PJ_ELLPS2D_LONGITUDE_LATITUDE,
- /* Latitude-Longitude */
- PJ_ELLPS2D_LATITUDE_LONGITUDE,
-} PJ_ELLIPSOIDAL_CS_2D_TYPE;
-
-PJ_OBJ PROJ_DLL *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx,
- PJ_ELLIPSOIDAL_CS_2D_TYPE type,
- const char* unit_name,
- double unit_conv_factor);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs(
- PJ_CONTEXT *ctx,
- const char *crs_name,
- const char *datum_name,
- const char *ellps_name,
- double semi_major_metre, double inv_flattening,
- const char *prime_meridian_name,
- double prime_meridian_offset,
- const char *pm_angular_units,
- double pm_units_conv,
- PJ_OBJ* ellipsoidal_cs);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs_from_datum(
- PJ_CONTEXT *ctx,
- const char *crs_name,
- PJ_OBJ* datum,
- PJ_OBJ* ellipsoidal_cs);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs(
- PJ_CONTEXT *ctx,
- const char *crs_name,
- const char *datum_name,
- const char *ellps_name,
- double semi_major_metre, double inv_flattening,
- const char *prime_meridian_name,
- double prime_meridian_offset,
- const char *angular_units,
- double angular_units_conv,
- const char *linear_units,
- double linear_units_conv);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs_from_datum(
- PJ_CONTEXT *ctx,
- const char *crs_name,
- const PJ_OBJ* datum,
- const char *linear_units,
- double linear_units_conv);
-
-PJ_OBJ PROJ_DLL *proj_obj_alter_name(PJ_CONTEXT *ctx,
- const PJ_OBJ* obj, const char* name);
-
-PJ_OBJ PROJ_DLL *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx,
- const PJ_OBJ* obj,
- const PJ_OBJ* new_geod_crs);
-
-PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx,
- const PJ_OBJ* obj,
- const char *angular_units,
- double angular_units_conv);
-
-PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx,
- const PJ_OBJ* obj,
- const char *linear_units,
- double linear_units_conv);
-
-PJ_OBJ PROJ_DLL *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx,
- const PJ_OBJ* obj,
- const char *linear_units,
- double linear_units_conv,
- int convert_to_new_unit);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_engineering_crs(PJ_CONTEXT *ctx,
- const char *crsName);
-
-/** Description of a parameter value for a Conversion. */
-typedef struct
-{
- /** Parameter name. */
- const char* name;
- /** Parameter authority name. */
- const char* auth_name;
- /** Parameter code. */
- const char* code;
- /** Parameter value. */
- double value;
- /** Name of unit in which parameter value is expressed. */
- const char* unit_name;
- /** Conversion factor to SI of the unit. */
- double unit_conv_factor;
- /** Type of unit */
- PJ_UNIT_TYPE unit_type;
-} PJ_PARAM_DESCRIPTION;
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion(PJ_CONTEXT *ctx,
- const char* name,
- const char* auth_name,
- const char* code,
- const char* method_name,
- const char* method_auth_name,
- const char* method_code,
- int param_count,
- const PJ_PARAM_DESCRIPTION* params);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs(PJ_CONTEXT *ctx,
- const char* crs_name,
- const PJ_OBJ* geodetic_crs,
- const PJ_OBJ* conversion,
- const PJ_OBJ* coordinate_system);
-
-PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs(PJ_CONTEXT *ctx,
- const PJ_OBJ *base_crs,
- const PJ_OBJ *hub_crs,
- const PJ_OBJ *transformation);
-
-PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(PJ_CONTEXT *ctx,
- const PJ_OBJ *crs);
-
-/* BEGIN: Generated by scripts/create_c_api_projections.py*/
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_utm(
- PJ_CONTEXT *ctx,
- int zone,
- int north);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gauss_schreiber_transverse_mercator(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator_south_oriented(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_two_point_equidistant(
- PJ_CONTEXT *ctx,
- double latitude_first_point,
- double longitude_first_point,
- double latitude_second_point,
- double longitude_secon_point,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_tunisia_mapping_grid(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_albers_equal_area(
- PJ_CONTEXT *ctx,
- double latitude_false_origin,
- double longitude_false_origin,
- double latitude_first_parallel,
- double latitude_second_parallel,
- double easting_false_origin,
- double northing_false_origin,
- const char* ang_unit_name, double ang_unit_conv_factor,
- const char* linear_unit_name, double linear_unit_conv_factor);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_1sp(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp(
- PJ_CONTEXT *ctx,
- double latitude_false_origin,
- double longitude_false_origin,
- double latitude_first_parallel,
- double latitude_second_parallel,
- double easting_false_origin,
- double northing_false_origin,
- const char* ang_unit_name, double ang_unit_conv_factor,
- const char* linear_unit_name, double linear_unit_conv_factor);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan(
- PJ_CONTEXT *ctx,
- double latitude_false_origin,
- double longitude_false_origin,
- double latitude_first_parallel,
- double latitude_second_parallel,
- double easting_false_origin,
- double northing_false_origin,
- double ellipsoid_scaling_factor,
- const char* ang_unit_name, double ang_unit_conv_factor,
- const char* linear_unit_name, double linear_unit_conv_factor);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium(
- PJ_CONTEXT *ctx,
- double latitude_false_origin,
- double longitude_false_origin,
- double latitude_first_parallel,
- double latitude_second_parallel,
- double easting_false_origin,
- double northing_false_origin,
- const char* ang_unit_name, double ang_unit_conv_factor,
- const char* linear_unit_name, double linear_unit_conv_factor);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_azimuthal_equidistant(
- PJ_CONTEXT *ctx,
- double latitude_nat_origin,
- double longitude_nat_origin,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_guam_projection(
- PJ_CONTEXT *ctx,
- double latitude_nat_origin,
- double longitude_nat_origin,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_bonne(
- PJ_CONTEXT *ctx,
- double latitude_nat_origin,
- double longitude_nat_origin,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical(
- PJ_CONTEXT *ctx,
- double latitude_first_parallel,
- double longitude_nat_origin,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area(
- PJ_CONTEXT *ctx,
- double latitude_first_parallel,
- double longitude_nat_origin,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_cassini_soldner(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_conic(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- double latitude_first_parallel,
- double latitude_second_parallel,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_i(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_ii(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iii(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iv(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_v(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_vi(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical(
- PJ_CONTEXT *ctx,
- double latitude_first_parallel,
- double longitude_nat_origin,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical_spherical(
- PJ_CONTEXT *ctx,
- double latitude_first_parallel,
- double longitude_nat_origin,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gall(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_goode_homolosine(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_interrupted_goode_homolosine(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_x(
- PJ_CONTEXT *ctx,
- double center_long,
- double height,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_y(
- PJ_CONTEXT *ctx,
- double center_long,
- double height,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gnomonic(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_a(
- PJ_CONTEXT *ctx,
- double latitude_projection_centre,
- double longitude_projection_centre,
- double azimuth_initial_line,
- double angle_from_rectified_to_skrew_grid,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_b(
- PJ_CONTEXT *ctx,
- double latitude_projection_centre,
- double longitude_projection_centre,
- double azimuth_initial_line,
- double angle_from_rectified_to_skrew_grid,
- double scale,
- double easting_projection_centre,
- double northing_projection_centre,
- const char* ang_unit_name, double ang_unit_conv_factor,
- const char* linear_unit_name, double linear_unit_conv_factor);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin(
- PJ_CONTEXT *ctx,
- double latitude_projection_centre,
- double latitude_point1,
- double longitude_point1,
- double latitude_point2,
- double longitude_point2,
- double scale,
- double easting_projection_centre,
- double northing_projection_centre,
- const char* ang_unit_name, double ang_unit_conv_factor,
- const char* linear_unit_name, double linear_unit_conv_factor);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_international_map_world_polyconic(
- PJ_CONTEXT *ctx,
- double center_long,
- double latitude_first_parallel,
- double latitude_second_parallel,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak_north_oriented(
- PJ_CONTEXT *ctx,
- double latitude_projection_centre,
- double longitude_of_origin,
- double colatitude_cone_axis,
- double latitude_pseudo_standard_parallel,
- double scale_factor_pseudo_standard_parallel,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak(
- PJ_CONTEXT *ctx,
- double latitude_projection_centre,
- double longitude_of_origin,
- double colatitude_cone_axis,
- double latitude_pseudo_standard_parallel,
- double scale_factor_pseudo_standard_parallel,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_azimuthal_equal_area(
- PJ_CONTEXT *ctx,
- double latitude_nat_origin,
- double longitude_nat_origin,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_miller_cylindrical(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_a(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_b(
- PJ_CONTEXT *ctx,
- double latitude_first_parallel,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_popular_visualisation_pseudo_mercator(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mollweide(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_new_zealand_mapping_grid(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_oblique_stereographic(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_orthographic(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_american_polyconic(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_a(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_b(
- PJ_CONTEXT *ctx,
- double latitude_standard_parallel,
- double longitude_of_origin,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_robinson(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_sinusoidal(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_stereographic(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_van_der_grinten(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_i(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_ii(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iii(
- PJ_CONTEXT *ctx,
- double latitude_true_scale,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iv(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_v(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vi(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vii(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_quadrilateralized_spherical_cube(
- PJ_CONTEXT *ctx,
- double center_lat,
- double center_long,
- 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);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_spherical_cross_track_height(
- PJ_CONTEXT *ctx,
- double peg_point_lat,
- double peg_point_long,
- double peg_point_heading,
- double peg_point_height,
- const char* ang_unit_name, double ang_unit_conv_factor,
- const char* linear_unit_name, double linear_unit_conv_factor);
-
-PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equal_earth(
- PJ_CONTEXT *ctx,
- double center_long,
- 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);
-
-/* END: Generated by scripts/create_c_api_projections.py*/
-
-/**@}*/
-
#ifdef __cplusplus
}
#endif
diff --git a/src/proj_experimental.h b/src/proj_experimental.h
new file mode 100644
index 00000000..1dc16f99
--- /dev/null
+++ b/src/proj_experimental.h
@@ -0,0 +1,831 @@
+/******************************************************************************
+ *
+ * Project: PROJ
+ * Purpose: Experimental C API
+ * Author: Even Rouault <even dot rouault at spatialys dot com>
+ *
+ ******************************************************************************
+ * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ ****************************************************************************/
+
+#include "proj.h"
+
+#ifndef PROJ_EXPERIMENTAL_H
+#define PROJ_EXPERIMENTAL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \file proj_experimental.h
+ *
+ * Experimental C API.
+ *
+ * \warning
+ * This API has been considered now to be experimental, and may change or
+ * be removed in the future. It addresses for now the needs of the GDAL
+ * project to be able to construct CRS objects in a programmatic way, piece
+ * by piece, instead of whole conversion from PROJ string or WKT string.
+ */
+
+/* ------------------------------------------------------------------------- */
+/* Binding in C of advanced methods from the C++ API */
+/* */
+/* Manual construction of CRS objects. */
+/* ------------------------------------------------------------------------- */
+
+/**
+ * \defgroup advanced_cpp_binding Binding in C of advanced methods from the C++ API
+ * @{
+ */
+
+/** Type of unit of measure. */
+typedef enum
+{
+ /** Angular unit of measure */
+ PJ_UT_ANGULAR,
+ /** Linear unit of measure */
+ PJ_UT_LINEAR,
+ /** Scale unit of measure */
+ PJ_UT_SCALE,
+ /** Time unit of measure */
+ PJ_UT_TIME,
+ /** Parametric unit of measure */
+ PJ_UT_PARAMETRIC
+} PJ_UNIT_TYPE;
+
+/** Axis description. */
+typedef struct
+{
+ /** Axis name. */
+ char* name;
+ /** Axis abbreviation. */
+ char* abbreviation;
+ /** Axis direction. */
+ char* direction;
+ /** Axis unit name. */
+ char* unit_name;
+ /** Conversion factor to SI of the unit. */
+ double unit_conv_factor;
+ /** Type of unit */
+ PJ_UNIT_TYPE unit_type;
+} PJ_AXIS_DESCRIPTION;
+
+PJ_OBJ PROJ_DLL *proj_obj_create_cs(PJ_CONTEXT *ctx,
+ PJ_COORDINATE_SYSTEM_TYPE type,
+ int axis_count,
+ const PJ_AXIS_DESCRIPTION* axis);
+
+/** Type of Cartesian 2D coordinate system. */
+typedef enum
+{
+ /* Easting-Norting */
+ PJ_CART2D_EASTING_NORTHING,
+ /* Northing-Easting */
+ PJ_CART2D_NORTHING_EASTING,
+} PJ_CARTESIAN_CS_2D_TYPE;
+
+PJ_OBJ PROJ_DLL *proj_obj_create_cartesian_2D_cs(PJ_CONTEXT *ctx,
+ PJ_CARTESIAN_CS_2D_TYPE type,
+ const char* unit_name,
+ double unit_conv_factor);
+
+
+/** Type of Cartesian 2D coordinate system. */
+typedef enum
+{
+ /* Longitude-Latitude */
+ PJ_ELLPS2D_LONGITUDE_LATITUDE,
+ /* Latitude-Longitude */
+ PJ_ELLPS2D_LATITUDE_LONGITUDE,
+} PJ_ELLIPSOIDAL_CS_2D_TYPE;
+
+PJ_OBJ PROJ_DLL *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx,
+ PJ_ELLIPSOIDAL_CS_2D_TYPE type,
+ const char* unit_name,
+ double unit_conv_factor);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs(
+ PJ_CONTEXT *ctx,
+ const char *crs_name,
+ const char *datum_name,
+ const char *ellps_name,
+ double semi_major_metre, double inv_flattening,
+ const char *prime_meridian_name,
+ double prime_meridian_offset,
+ const char *pm_angular_units,
+ double pm_units_conv,
+ PJ_OBJ* ellipsoidal_cs);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs_from_datum(
+ PJ_CONTEXT *ctx,
+ const char *crs_name,
+ PJ_OBJ* datum,
+ PJ_OBJ* ellipsoidal_cs);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs(
+ PJ_CONTEXT *ctx,
+ const char *crs_name,
+ const char *datum_name,
+ const char *ellps_name,
+ double semi_major_metre, double inv_flattening,
+ const char *prime_meridian_name,
+ double prime_meridian_offset,
+ const char *angular_units,
+ double angular_units_conv,
+ const char *linear_units,
+ double linear_units_conv);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs_from_datum(
+ PJ_CONTEXT *ctx,
+ const char *crs_name,
+ const PJ_OBJ* datum,
+ const char *linear_units,
+ double linear_units_conv);
+
+PJ_OBJ PROJ_DLL *proj_obj_alter_name(PJ_CONTEXT *ctx,
+ const PJ_OBJ* obj, const char* name);
+
+PJ_OBJ PROJ_DLL *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx,
+ const PJ_OBJ* obj,
+ const PJ_OBJ* new_geod_crs);
+
+PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx,
+ const PJ_OBJ* obj,
+ const char *angular_units,
+ double angular_units_conv);
+
+PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx,
+ const PJ_OBJ* obj,
+ const char *linear_units,
+ double linear_units_conv);
+
+PJ_OBJ PROJ_DLL *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx,
+ const PJ_OBJ* obj,
+ const char *linear_units,
+ double linear_units_conv,
+ int convert_to_new_unit);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_engineering_crs(PJ_CONTEXT *ctx,
+ const char *crsName);
+
+/** Description of a parameter value for a Conversion. */
+typedef struct
+{
+ /** Parameter name. */
+ const char* name;
+ /** Parameter authority name. */
+ const char* auth_name;
+ /** Parameter code. */
+ const char* code;
+ /** Parameter value. */
+ double value;
+ /** Name of unit in which parameter value is expressed. */
+ const char* unit_name;
+ /** Conversion factor to SI of the unit. */
+ double unit_conv_factor;
+ /** Type of unit */
+ PJ_UNIT_TYPE unit_type;
+} PJ_PARAM_DESCRIPTION;
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion(PJ_CONTEXT *ctx,
+ const char* name,
+ const char* auth_name,
+ const char* code,
+ const char* method_name,
+ const char* method_auth_name,
+ const char* method_code,
+ int param_count,
+ const PJ_PARAM_DESCRIPTION* params);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs(PJ_CONTEXT *ctx,
+ const char* crs_name,
+ const PJ_OBJ* geodetic_crs,
+ const PJ_OBJ* conversion,
+ const PJ_OBJ* coordinate_system);
+
+PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs(PJ_CONTEXT *ctx,
+ const PJ_OBJ *base_crs,
+ const PJ_OBJ *hub_crs,
+ const PJ_OBJ *transformation);
+
+PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(PJ_CONTEXT *ctx,
+ const PJ_OBJ *crs);
+
+/* BEGIN: Generated by scripts/create_c_api_projections.py*/
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_utm(
+ PJ_CONTEXT *ctx,
+ int zone,
+ int north);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gauss_schreiber_transverse_mercator(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator_south_oriented(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_two_point_equidistant(
+ PJ_CONTEXT *ctx,
+ double latitude_first_point,
+ double longitude_first_point,
+ double latitude_second_point,
+ double longitude_secon_point,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_tunisia_mapping_grid(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_albers_equal_area(
+ PJ_CONTEXT *ctx,
+ double latitude_false_origin,
+ double longitude_false_origin,
+ double latitude_first_parallel,
+ double latitude_second_parallel,
+ double easting_false_origin,
+ double northing_false_origin,
+ const char* ang_unit_name, double ang_unit_conv_factor,
+ const char* linear_unit_name, double linear_unit_conv_factor);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_1sp(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp(
+ PJ_CONTEXT *ctx,
+ double latitude_false_origin,
+ double longitude_false_origin,
+ double latitude_first_parallel,
+ double latitude_second_parallel,
+ double easting_false_origin,
+ double northing_false_origin,
+ const char* ang_unit_name, double ang_unit_conv_factor,
+ const char* linear_unit_name, double linear_unit_conv_factor);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan(
+ PJ_CONTEXT *ctx,
+ double latitude_false_origin,
+ double longitude_false_origin,
+ double latitude_first_parallel,
+ double latitude_second_parallel,
+ double easting_false_origin,
+ double northing_false_origin,
+ double ellipsoid_scaling_factor,
+ const char* ang_unit_name, double ang_unit_conv_factor,
+ const char* linear_unit_name, double linear_unit_conv_factor);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium(
+ PJ_CONTEXT *ctx,
+ double latitude_false_origin,
+ double longitude_false_origin,
+ double latitude_first_parallel,
+ double latitude_second_parallel,
+ double easting_false_origin,
+ double northing_false_origin,
+ const char* ang_unit_name, double ang_unit_conv_factor,
+ const char* linear_unit_name, double linear_unit_conv_factor);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_azimuthal_equidistant(
+ PJ_CONTEXT *ctx,
+ double latitude_nat_origin,
+ double longitude_nat_origin,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_guam_projection(
+ PJ_CONTEXT *ctx,
+ double latitude_nat_origin,
+ double longitude_nat_origin,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_bonne(
+ PJ_CONTEXT *ctx,
+ double latitude_nat_origin,
+ double longitude_nat_origin,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical(
+ PJ_CONTEXT *ctx,
+ double latitude_first_parallel,
+ double longitude_nat_origin,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area(
+ PJ_CONTEXT *ctx,
+ double latitude_first_parallel,
+ double longitude_nat_origin,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_cassini_soldner(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_conic(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ double latitude_first_parallel,
+ double latitude_second_parallel,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_i(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_ii(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iii(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iv(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_v(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_vi(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical(
+ PJ_CONTEXT *ctx,
+ double latitude_first_parallel,
+ double longitude_nat_origin,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical_spherical(
+ PJ_CONTEXT *ctx,
+ double latitude_first_parallel,
+ double longitude_nat_origin,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gall(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_goode_homolosine(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_interrupted_goode_homolosine(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_x(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ double height,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_y(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ double height,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gnomonic(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_a(
+ PJ_CONTEXT *ctx,
+ double latitude_projection_centre,
+ double longitude_projection_centre,
+ double azimuth_initial_line,
+ double angle_from_rectified_to_skrew_grid,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_b(
+ PJ_CONTEXT *ctx,
+ double latitude_projection_centre,
+ double longitude_projection_centre,
+ double azimuth_initial_line,
+ double angle_from_rectified_to_skrew_grid,
+ double scale,
+ double easting_projection_centre,
+ double northing_projection_centre,
+ const char* ang_unit_name, double ang_unit_conv_factor,
+ const char* linear_unit_name, double linear_unit_conv_factor);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin(
+ PJ_CONTEXT *ctx,
+ double latitude_projection_centre,
+ double latitude_point1,
+ double longitude_point1,
+ double latitude_point2,
+ double longitude_point2,
+ double scale,
+ double easting_projection_centre,
+ double northing_projection_centre,
+ const char* ang_unit_name, double ang_unit_conv_factor,
+ const char* linear_unit_name, double linear_unit_conv_factor);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_international_map_world_polyconic(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ double latitude_first_parallel,
+ double latitude_second_parallel,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak_north_oriented(
+ PJ_CONTEXT *ctx,
+ double latitude_projection_centre,
+ double longitude_of_origin,
+ double colatitude_cone_axis,
+ double latitude_pseudo_standard_parallel,
+ double scale_factor_pseudo_standard_parallel,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak(
+ PJ_CONTEXT *ctx,
+ double latitude_projection_centre,
+ double longitude_of_origin,
+ double colatitude_cone_axis,
+ double latitude_pseudo_standard_parallel,
+ double scale_factor_pseudo_standard_parallel,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_azimuthal_equal_area(
+ PJ_CONTEXT *ctx,
+ double latitude_nat_origin,
+ double longitude_nat_origin,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_miller_cylindrical(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_a(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_b(
+ PJ_CONTEXT *ctx,
+ double latitude_first_parallel,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_popular_visualisation_pseudo_mercator(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mollweide(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_new_zealand_mapping_grid(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_oblique_stereographic(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_orthographic(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_american_polyconic(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_a(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_b(
+ PJ_CONTEXT *ctx,
+ double latitude_standard_parallel,
+ double longitude_of_origin,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_robinson(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_sinusoidal(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_stereographic(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_van_der_grinten(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_i(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_ii(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iii(
+ PJ_CONTEXT *ctx,
+ double latitude_true_scale,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iv(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_v(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vi(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vii(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_quadrilateralized_spherical_cube(
+ PJ_CONTEXT *ctx,
+ double center_lat,
+ double center_long,
+ 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);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_spherical_cross_track_height(
+ PJ_CONTEXT *ctx,
+ double peg_point_lat,
+ double peg_point_long,
+ double peg_point_heading,
+ double peg_point_height,
+ const char* ang_unit_name, double ang_unit_conv_factor,
+ const char* linear_unit_name, double linear_unit_conv_factor);
+
+PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equal_earth(
+ PJ_CONTEXT *ctx,
+ double center_long,
+ 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);
+
+/* END: Generated by scripts/create_c_api_projections.py*/
+
+/**@}*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ndef PROJ_EXPERIMENTAL_H */
diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp
index 51de990b..59ba12ca 100644
--- a/test/unit/test_c_api.cpp
+++ b/test/unit/test_c_api.cpp
@@ -29,6 +29,7 @@
#include "gtest_include.h"
#include "proj.h"
+#include "proj_experimental.h"
#include "proj/common.hpp"
#include "proj/coordinateoperation.hpp"