diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2018-11-30 16:15:36 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2018-11-30 16:15:36 +0100 |
| commit | b6a5c445e202e61c64b0986679a6e0a83724c322 (patch) | |
| tree | 70fdd74c8b59741922f5ed54bf2f35ff0a57ce90 | |
| parent | 2d1deb2da9eab38febb4d4ce92faffa5d25a1e58 (diff) | |
| download | PROJ-b6a5c445e202e61c64b0986679a6e0a83724c322.tar.gz PROJ-b6a5c445e202e61c64b0986679a6e0a83724c322.zip | |
API: move all advanced PJ_OBJ creation functions in a dedicated proj_experimental.h header
| -rw-r--r-- | Doxyfile | 2 | ||||
| -rw-r--r-- | src/Makefile.am | 2 | ||||
| -rw-r--r-- | src/c_api.cpp | 1 | ||||
| -rw-r--r-- | src/lib_proj.cmake | 1 | ||||
| -rw-r--r-- | src/proj.h | 778 | ||||
| -rw-r--r-- | src/proj_experimental.h | 831 | ||||
| -rw-r--r-- | test/unit/test_c_api.cpp | 1 |
7 files changed, 836 insertions, 780 deletions
@@ -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 ) @@ -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" |
