diff options
Diffstat (limited to 'src/proj.h')
| -rw-r--r-- | src/proj.h | 1024 |
1 files changed, 607 insertions, 417 deletions
@@ -443,6 +443,11 @@ char PROJ_DLL * proj_rtodms(char *s, double r, int pos, int neg); /* Binding in C of C++ API */ /* ------------------------------------------------------------------------- */ +/** + * \defgroup basic_cpp_binding Binding in C of basic methods from the C++ API + * @{ + */ + /*! @cond Doxygen_Suppress */ typedef struct PJ_OBJ PJ_OBJ; /*! @endcond */ @@ -461,6 +466,7 @@ const char PROJ_DLL *proj_context_get_database_path(PJ_CONTEXT *ctx); const char PROJ_DLL *proj_context_get_database_metadata(PJ_CONTEXT* ctx, const char* key); + /** \brief Guessed WKT "dialect". */ typedef enum { @@ -512,9 +518,13 @@ PJ_OBJ PROJ_DLL *proj_obj_create_from_database(PJ_CONTEXT *ctx, void PROJ_DLL proj_obj_unref(PJ_OBJ *obj); +PJ_OBJ PROJ_DLL *proj_obj_clone(const PJ_OBJ *obj); + /** \brief Object type. */ typedef enum { + PJ_OBJ_TYPE_UNKNOWN, + PJ_OBJ_TYPE_ELLIPSOID, PJ_OBJ_TYPE_GEODETIC_REFERENCE_FRAME, @@ -539,6 +549,7 @@ typedef enum PJ_OBJ_TYPE_PROJECTED_CRS, PJ_OBJ_TYPE_COMPOUND_CRS, PJ_OBJ_TYPE_TEMPORAL_CRS, + PJ_OBJ_TYPE_ENGINEERING_CRS, PJ_OBJ_TYPE_BOUND_CRS, PJ_OBJ_TYPE_OTHER_CRS, @@ -546,8 +557,6 @@ typedef enum PJ_OBJ_TYPE_TRANSFORMATION, PJ_OBJ_TYPE_CONCATENATED_OPERATION, PJ_OBJ_TYPE_OTHER_COORDINATE_OPERATION, - - PJ_OBJ_TYPE_UNKNOWN } PJ_OBJ_TYPE; PJ_OBJ_LIST PROJ_DLL *proj_obj_create_from_name(PJ_CONTEXT *ctx, @@ -559,9 +568,405 @@ PJ_OBJ_LIST PROJ_DLL *proj_obj_create_from_name(PJ_CONTEXT *ctx, size_t limitResultCount, const char* const *options); +PJ_OBJ_TYPE PROJ_DLL proj_obj_get_type(const PJ_OBJ *obj); + +int PROJ_DLL proj_obj_is_deprecated(const PJ_OBJ *obj); + +/** Comparison criterion. */ +typedef enum +{ + /** All properties are identical. */ + PJ_COMP_STRICT, + + /** The objects are equivalent for the purpose of coordinate + * operations. They can differ by the name of their objects, + * identifiers, other metadata. + * Parameters may be expressed in different units, provided that the + * value is (with some tolerance) the same once expressed in a + * common unit. + */ + PJ_COMP_EQUIVALENT, + + /** Same as EQUIVALENT, relaxed with an exception that the axis order + * of the base CRS of a DerivedCRS/ProjectedCRS or the axis order of + * a GeographicCRS is ignored. Only to be used + * with DerivedCRS/ProjectedCRS/GeographicCRS */ + PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS, +} PJ_COMPARISON_CRITERION; + +int PROJ_DLL proj_obj_is_equivalent_to(const PJ_OBJ *obj, const PJ_OBJ* other, + PJ_COMPARISON_CRITERION criterion); + +int PROJ_DLL proj_obj_is_crs(const PJ_OBJ *obj); + +const char PROJ_DLL* proj_obj_get_name(const PJ_OBJ *obj); + +const char PROJ_DLL* proj_obj_get_id_auth_name(const PJ_OBJ *obj, int index); + +const char PROJ_DLL* proj_obj_get_id_code(const PJ_OBJ *obj, int index); + +int PROJ_DLL proj_obj_get_area_of_use(const PJ_OBJ *obj, + double* p_west_lon_degree, + double* p_south_lat_degree, + double* p_east_lon_degree, + double* p_north_lat_degree, + const char **p_area_name); + +/** \brief WKT version. */ +typedef enum +{ + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2 */ + PJ_WKT2_2015, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_SIMPLIFIED */ + PJ_WKT2_2015_SIMPLIFIED, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018 */ + PJ_WKT2_2018, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018_SIMPLIFIED */ + PJ_WKT2_2018_SIMPLIFIED, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_GDAL */ + PJ_WKT1_GDAL, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_ESRI */ + PJ_WKT1_ESRI +} PJ_WKT_TYPE; + +const char PROJ_DLL* proj_obj_as_wkt(const PJ_OBJ *obj, PJ_WKT_TYPE type, + const char* const *options); + +/** \brief PROJ string version. */ +typedef enum +{ + /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_5 */ + PJ_PROJ_5, + /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_4 */ + PJ_PROJ_4 +} PJ_PROJ_STRING_TYPE; + +const char PROJ_DLL* proj_obj_as_proj_string(const PJ_OBJ *obj, + PJ_PROJ_STRING_TYPE type, + const char* const *options); + +PJ_OBJ PROJ_DLL *proj_obj_get_source_crs(const PJ_OBJ *obj); + +PJ_OBJ PROJ_DLL *proj_obj_get_target_crs(const PJ_OBJ *obj); + +PJ_OBJ_LIST PROJ_DLL *proj_obj_identify(const PJ_OBJ* obj, + const char *auth_name, + const char* const *options, + int **confidence); + +void PROJ_DLL proj_free_int_list(int* list); + +/* ------------------------------------------------------------------------- */ + +/** \brief Type representing a NULL terminated list of NUL-terminate strings. */ +typedef char **PROJ_STRING_LIST; + +PROJ_STRING_LIST PROJ_DLL proj_get_authorities_from_database(PJ_CONTEXT *ctx); + +PROJ_STRING_LIST PROJ_DLL proj_get_codes_from_database(PJ_CONTEXT *ctx, + const char *auth_name, + PJ_OBJ_TYPE type, + int allow_deprecated); + +void PROJ_DLL proj_free_string_list(PROJ_STRING_LIST list); + +/* ------------------------------------------------------------------------- */ + + +/*! @cond Doxygen_Suppress */ +typedef struct PJ_OPERATION_FACTORY_CONTEXT PJ_OPERATION_FACTORY_CONTEXT; +/*! @endcond */ + +PJ_OPERATION_FACTORY_CONTEXT PROJ_DLL *proj_create_operation_factory_context( + PJ_CONTEXT *ctx, + const char *authority); + +void PROJ_DLL proj_operation_factory_context_unref( + PJ_OPERATION_FACTORY_CONTEXT *ctxt); + +void PROJ_DLL proj_operation_factory_context_set_desired_accuracy( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + double accuracy); + +void PROJ_DLL proj_operation_factory_context_set_area_of_interest( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + double west_lon_degree, + double south_lat_degree, + double east_lon_degree, + double north_lat_degree); + +/** Specify how source and target CRS extent should be used to restrict + * candidate operations (only taken into account if no explicit area of + * interest is specified. */ +typedef enum +{ + /** Ignore CRS extent */ + PJ_CRS_EXTENT_NONE, + + /** Test coordinate operation extent against both CRS extent. */ + PJ_CRS_EXTENT_BOTH, + + /** Test coordinate operation extent against the intersection of both + CRS extent. */ + PJ_CRS_EXTENT_INTERSECTION, + + /** Test coordinate operation against the smallest of both CRS extent. */ + PJ_CRS_EXTENT_SMALLEST +} PROJ_CRS_EXTENT_USE; + +void PROJ_DLL proj_operation_factory_context_set_crs_extent_use( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PROJ_CRS_EXTENT_USE use); + +/** Spatial criterion to restrict candiate operations. */ +typedef enum { + /** The area of validity of transforms should strictly contain the + * are of interest. */ + PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT, + + /** The area of validity of transforms should at least intersect the + * area of interest. */ + PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION +} PROJ_SPATIAL_CRITERION; + +void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PROJ_SPATIAL_CRITERION criterion); + + +/** Describe how grid availability is used. */ +typedef enum { + /** Grid availability is only used for sorting results. Operations + * where some grids are missing will be sorted last. */ + PROJ_GRID_AVAILABILITY_USED_FOR_SORTING, + + /** Completely discard an operation if a required grid is missing. */ + PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID, + + /** Ignore grid availability at all. Results will be presented as if + * all grids were available. */ + PROJ_GRID_AVAILABILITY_IGNORED, +} PROJ_GRID_AVAILABILITY_USE; + +void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PROJ_GRID_AVAILABILITY_USE use); + +void PROJ_DLL proj_operation_factory_context_set_use_proj_alternative_grid_names( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + int usePROJNames); + +void PROJ_DLL proj_operation_factory_context_set_allow_use_intermediate_crs( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, int allow); + +void PROJ_DLL proj_operation_factory_context_set_allowed_intermediate_crs( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + const char* const *list_of_auth_name_codes); + +/* ------------------------------------------------------------------------- */ + + +PJ_OBJ_LIST PROJ_DLL *proj_obj_create_operations( + const PJ_OBJ *source_crs, + const PJ_OBJ *target_crs, + const PJ_OPERATION_FACTORY_CONTEXT *operationContext); + +int PROJ_DLL proj_obj_list_get_count(const PJ_OBJ_LIST *result); + +PJ_OBJ PROJ_DLL *proj_obj_list_get(const PJ_OBJ_LIST *result, + int index); + +void PROJ_DLL proj_obj_list_unref(PJ_OBJ_LIST *result); + +/* ------------------------------------------------------------------------- */ + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_geodetic_crs(const PJ_OBJ *crs); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_horizontal_datum(const PJ_OBJ *crs); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_sub_crs(const PJ_OBJ *crs, int index); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_datum(const PJ_OBJ *crs); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordinate_system(const PJ_OBJ *crs); + +/** Type of coordinate system. */ +typedef enum +{ + PJ_CS_TYPE_UNKNOWN, + + PJ_CS_TYPE_CARTESIAN, + PJ_CS_TYPE_ELLIPSOIDAL, + PJ_CS_TYPE_VERTICAL, + PJ_CS_TYPE_SPHERICAL, + PJ_CS_TYPE_ORDINAL, + PJ_CS_TYPE_PARAMETRIC, + PJ_CS_TYPE_DATETIMETEMPORAL, + PJ_CS_TYPE_TEMPORALCOUNT, + PJ_CS_TYPE_TEMPORALMEASURE +} PJ_COORDINATE_SYSTEM_TYPE; + +PJ_COORDINATE_SYSTEM_TYPE PROJ_DLL proj_obj_cs_get_type(const PJ_OBJ* cs); + +int PROJ_DLL proj_obj_cs_get_axis_count(const PJ_OBJ *cs); + +int PROJ_DLL proj_obj_cs_get_axis_info(const PJ_OBJ *cs, int index, + const char **pName, + const char **pAbbrev, + const char **pDirection, + double *pUnitConvFactor, + const char **pUnitName); + +PJ_OBJ PROJ_DLL *proj_obj_get_ellipsoid(const PJ_OBJ *obj); + +int PROJ_DLL proj_obj_ellipsoid_get_parameters(const PJ_OBJ *ellipsoid, + double *pSemiMajorMetre, + double *pSemiMinorMetre, + int *pIsSemiMinorComputed, + double *pInverseFlattening); + +PJ_OBJ PROJ_DLL *proj_obj_get_prime_meridian(const PJ_OBJ *obj); + +int PROJ_DLL proj_obj_prime_meridian_get_parameters(const PJ_OBJ *prime_meridian, + double *pLongitude, + double *pLongitudeUnitConvFactor, + const char **pLongitudeUnitName); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, + const char **pMethodName, + const char **pMethodAuthorityName, + const char **pMethodCode); + +int PROJ_DLL proj_coordoperation_is_instanciable(const PJ_OBJ *coordoperation); + +int PROJ_DLL proj_coordoperation_get_param_count(const PJ_OBJ *coordoperation); + +int PROJ_DLL proj_coordoperation_get_param_index(const PJ_OBJ *coordoperation, + const char *name); + +int PROJ_DLL proj_coordoperation_get_param(const PJ_OBJ *coordoperation, + int index, + const char **pName, + const char **pNameAuthorityName, + const char **pNameCode, + double *pValue, + const char **pValueString, + double *pValueUnitConvFactor, + const char **pValueUnitName); + +int PROJ_DLL proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation); + +int PROJ_DLL proj_coordoperation_get_grid_used(const PJ_OBJ *coordoperation, + int index, + const char **pShortName, + const char **pFullName, + const char **pPackageName, + const char **pURL, + int *pDirectDownload, + int *pOpenLicense, + int *pAvailable); + +double PROJ_DLL proj_coordoperation_get_accuracy(const PJ_OBJ* obj); + +/**@}*/ + +/* ------------------------------------------------------------------------- */ +/* 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 *geogName, + const char *crsName, + const char *datumName, + const char *ellipsoidName, + double semiMajorMetre, double invFlattening, + const char *primeMeridianName, + double primeMeridianOffset, + const char *pmAngularUnits, + double pmUnitsConv, + PJ_OBJ* ellipsoidalCS); + +PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs_from_datum( + const char *crsName, + PJ_OBJ* datum, + PJ_OBJ* ellipsoidalCS); + +PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs( + PJ_CONTEXT *ctx, + const char *crsName, const char *datumName, const char *ellipsoidName, double semiMajorMetre, double invFlattening, @@ -569,17 +974,84 @@ PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs( double primeMeridianOffset, const char *angularUnits, double angularUnitsConv, - int latLongOrder); + const char *linearUnits, + double linearUnitsConv); + +PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs_from_datum( + const char *crsName, + const PJ_OBJ* datum, + const char *linearUnits, + double linearUnitsConv); + +PJ_OBJ PROJ_DLL *proj_obj_alter_name(const PJ_OBJ* obj, const char* name); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_geodetic_crs(const PJ_OBJ* obj, + const PJ_OBJ* newGeodCRS); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_angular_unit(const PJ_OBJ* obj, + const char *angularUnits, + double angularUnitsConv); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_linear_unit(const PJ_OBJ* obj, + const char *linearUnits, + double linearUnitsConv); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_parameters_linear_unit(const PJ_OBJ* obj, + const char *linearUnits, + double linearUnitsConv, + int convertToNewUnit); + +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(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(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(const PJ_OBJ *crs); /* BEGIN: Generated by scripts/create_c_api_projections.py*/ -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_UTM( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_utm( + PJ_CONTEXT *ctx, int zone, - int north -); + int north); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercator( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -588,8 +1060,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercator( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GaussSchreiberTransverseMercator( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -598,8 +1070,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GaussSchreiberTransverseMercator( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercatorSouthOriented( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator_south_oriented( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -608,8 +1080,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercatorSouthOriented( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TwoPointEquidistant( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_two_point_equidistant( + PJ_CONTEXT *ctx, double latitudeFirstPoint, double longitudeFirstPoint, double latitudeSecondPoint, @@ -619,8 +1091,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TwoPointEquidistant( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TunisiaMappingGrid( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_tunisia_mapping_grid( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -628,8 +1100,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TunisiaMappingGrid( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AlbersEqualArea( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_albers_equal_area( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, double latitudeFirstParallel, @@ -639,8 +1111,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AlbersEqualArea( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_1SP( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_1sp( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -649,8 +1121,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_1SP( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, double latitudeFirstParallel, @@ -660,8 +1132,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, double latitudeFirstParallel, @@ -672,8 +1144,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Michiga const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, double latitudeFirstParallel, @@ -683,8 +1155,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AzimuthalEquidistant( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_azimuthal_equidistant( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, double falseEasting, @@ -692,8 +1164,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AzimuthalEquidistant( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GuamProjection( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_guam_projection( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, double falseEasting, @@ -701,8 +1173,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GuamProjection( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Bonne( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_bonne( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, double falseEasting, @@ -710,8 +1182,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Bonne( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, double falseEasting, @@ -719,8 +1191,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpheri const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualArea( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, double falseEasting, @@ -728,8 +1200,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualArea( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_CassiniSoldner( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_cassini_soldner( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -737,8 +1209,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_CassiniSoldner( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantConic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_conic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double latitudeFirstParallel, @@ -748,56 +1220,56 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantConic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertI( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_i( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_ii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertIII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertIV( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iv( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertV( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_v( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertVI( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_vi( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindrical( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, double falseEasting, @@ -805,8 +1277,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindrical( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindricalSpherical( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical_spherical( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, double falseEasting, @@ -814,32 +1286,32 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindricalSpherical( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Gall( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gall( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GoodeHomolosine( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_goode_homolosine( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_InterruptedGoodeHomolosine( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_interrupted_goode_homolosine( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepX( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_x( + PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, @@ -847,8 +1319,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepX( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepY( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_y( + PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, @@ -856,8 +1328,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepY( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Gnomonic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gnomonic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -865,8 +1337,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Gnomonic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeProjectionCentre, double azimuthInitialLine, @@ -877,8 +1349,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeProjectionCentre, double azimuthInitialLine, @@ -889,8 +1361,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double latitudePoint1, double longitudePoint1, @@ -902,8 +1374,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNatu const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_InternationalMapWorldPolyconic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_international_map_world_polyconic( + PJ_CONTEXT *ctx, double centerLong, double latitudeFirstParallel, double latitudeSecondParallel, @@ -912,8 +1384,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_InternationalMapWorldPolyconic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_KrovakNorthOriented( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak_north_oriented( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeOfOrigin, double colatitudeConeAxis, @@ -924,8 +1396,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_KrovakNorthOriented( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Krovak( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeOfOrigin, double colatitudeConeAxis, @@ -936,8 +1408,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Krovak( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertAzimuthalEqualArea( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_azimuthal_equal_area( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, double falseEasting, @@ -945,16 +1417,16 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertAzimuthalEqualArea( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MillerCylindrical( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_miller_cylindrical( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantA( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_a( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -963,8 +1435,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantA( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantB( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_b( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double centerLong, double falseEasting, @@ -972,8 +1444,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantB( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PopularVisualisationPseudoMercator( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -981,16 +1453,16 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PopularVisualisationPseudoMercato const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Mollweide( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mollweide( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_NewZealandMappingGrid( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_new_zealand_mapping_grid( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -998,8 +1470,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_NewZealandMappingGrid( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_ObliqueStereographic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_oblique_stereographic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -1008,8 +1480,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_ObliqueStereographic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Orthographic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_orthographic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -1017,8 +1489,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Orthographic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AmericanPolyconic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_american_polyconic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -1026,8 +1498,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AmericanPolyconic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantA( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_a( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -1036,8 +1508,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantA( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantB( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_b( + PJ_CONTEXT *ctx, double latitudeStandardParallel, double longitudeOfOrigin, double falseEasting, @@ -1045,24 +1517,24 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantB( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Robinson( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_robinson( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Sinusoidal( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_sinusoidal( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Stereographic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_stereographic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -1071,32 +1543,32 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Stereographic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_VanDerGrinten( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_van_der_grinten( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerI( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_i( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_ii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerIII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iii( + PJ_CONTEXT *ctx, double latitudeTrueScale, double centerLong, double falseEasting, @@ -1104,40 +1576,40 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerIII( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerIV( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iv( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerV( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_v( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerVI( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vi( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerVII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_quadrilateralized_spherical_cube( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -1145,8 +1617,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_SphericalCrossTrackHeight( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_spherical_cross_track_height( + PJ_CONTEXT *ctx, double pegPointLat, double pegPointLong, double pegPointHeading, @@ -1154,8 +1626,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_SphericalCrossTrackHeight( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EqualEarth( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equal_earth( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, @@ -1164,289 +1636,7 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EqualEarth( /* END: Generated by scripts/create_c_api_projections.py*/ -PJ_OBJ_TYPE PROJ_DLL proj_obj_get_type(PJ_OBJ *obj); - -int PROJ_DLL proj_obj_is_deprecated(PJ_OBJ *obj); - -/** Comparison criterion. */ -typedef enum -{ - /** All properties are identical. */ - PJ_COMP_STRICT, - - /** The objects are equivalent for the purpose of coordinate - * operations. They can differ by the name of their objects, - * identifiers, other metadata. - * Parameters may be expressed in different units, provided that the - * value is (with some tolerance) the same once expressed in a - * common unit. - */ - PJ_COMP_EQUIVALENT, - - /** Same as EQUIVALENT, relaxed with an exception that the axis order - * of the base CRS of a DerivedCRS/ProjectedCRS or the axis order of - * a GeographicCRS is ignored. Only to be used - * with DerivedCRS/ProjectedCRS/GeographicCRS */ - PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS, -} PJ_COMPARISON_CRITERION; - -int PROJ_DLL proj_obj_is_equivalent_to(PJ_OBJ *obj, PJ_OBJ* other, - PJ_COMPARISON_CRITERION criterion); - -int PROJ_DLL proj_obj_is_crs(PJ_OBJ *obj); - -const char PROJ_DLL* proj_obj_get_name(PJ_OBJ *obj); - -const char PROJ_DLL* proj_obj_get_id_auth_name(PJ_OBJ *obj, int index); - -const char PROJ_DLL* proj_obj_get_id_code(PJ_OBJ *obj, int index); - -int PROJ_DLL proj_obj_get_area_of_use(PJ_OBJ *obj, - double* p_west_lon_degree, - double* p_south_lat_degree, - double* p_east_lon_degree, - double* p_north_lat_degree, - const char **p_area_name); - -/** \brief WKT version. */ -typedef enum -{ - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2 */ - PJ_WKT2_2015, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_SIMPLIFIED */ - PJ_WKT2_2015_SIMPLIFIED, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018 */ - PJ_WKT2_2018, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018_SIMPLIFIED */ - PJ_WKT2_2018_SIMPLIFIED, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_GDAL */ - PJ_WKT1_GDAL, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_ESRI */ - PJ_WKT1_ESRI -} PJ_WKT_TYPE; - -const char PROJ_DLL* proj_obj_as_wkt(PJ_OBJ *obj, PJ_WKT_TYPE type, - const char* const *options); - -/** \brief PROJ string version. */ -typedef enum -{ - /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_5 */ - PJ_PROJ_5, - /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_4 */ - PJ_PROJ_4 -} PJ_PROJ_STRING_TYPE; - -const char PROJ_DLL* proj_obj_as_proj_string(PJ_OBJ *obj, - PJ_PROJ_STRING_TYPE type, - const char* const *options); - -PJ_OBJ PROJ_DLL *proj_obj_get_source_crs(PJ_OBJ *obj); - -PJ_OBJ PROJ_DLL *proj_obj_get_target_crs(PJ_OBJ *obj); - -PJ_OBJ_LIST PROJ_DLL *proj_obj_identify(PJ_OBJ* obj, - const char *auth_name, - const char* const *options, - int **confidence); - -void PROJ_DLL proj_free_int_list(int* list); - -/* ------------------------------------------------------------------------- */ - -/** \brief Type representing a NULL terminated list of NUL-terminate strings. */ -typedef char **PROJ_STRING_LIST; - -PROJ_STRING_LIST PROJ_DLL proj_get_authorities_from_database(PJ_CONTEXT *ctx); - -PROJ_STRING_LIST PROJ_DLL proj_get_codes_from_database(PJ_CONTEXT *ctx, - const char *auth_name, - PJ_OBJ_TYPE type, - int allow_deprecated); - -void PROJ_DLL proj_free_string_list(PROJ_STRING_LIST list); - -/* ------------------------------------------------------------------------- */ - - -/*! @cond Doxygen_Suppress */ -typedef struct PJ_OPERATION_FACTORY_CONTEXT PJ_OPERATION_FACTORY_CONTEXT; -/*! @endcond */ - -PJ_OPERATION_FACTORY_CONTEXT PROJ_DLL *proj_create_operation_factory_context( - PJ_CONTEXT *ctx, - const char *authority); - -void PROJ_DLL proj_operation_factory_context_unref( - PJ_OPERATION_FACTORY_CONTEXT *ctxt); - -void PROJ_DLL proj_operation_factory_context_set_desired_accuracy( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - double accuracy); - -void PROJ_DLL proj_operation_factory_context_set_area_of_interest( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - double west_lon_degree, - double south_lat_degree, - double east_lon_degree, - double north_lat_degree); - -/** Specify how source and target CRS extent should be used to restrict - * candidate operations (only taken into account if no explicit area of - * interest is specified. */ -typedef enum -{ - /** Ignore CRS extent */ - PJ_CRS_EXTENT_NONE, - - /** Test coordinate operation extent against both CRS extent. */ - PJ_CRS_EXTENT_BOTH, - - /** Test coordinate operation extent against the intersection of both - CRS extent. */ - PJ_CRS_EXTENT_INTERSECTION, - - /** Test coordinate operation against the smallest of both CRS extent. */ - PJ_CRS_EXTENT_SMALLEST -} PROJ_CRS_EXTENT_USE; - -void PROJ_DLL proj_operation_factory_context_set_crs_extent_use( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - PROJ_CRS_EXTENT_USE use); - -/** Spatial criterion to restrict candiate operations. */ -typedef enum { - /** The area of validity of transforms should strictly contain the - * are of interest. */ - PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT, - - /** The area of validity of transforms should at least intersect the - * area of interest. */ - PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION -} PROJ_SPATIAL_CRITERION; - -void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - PROJ_SPATIAL_CRITERION criterion); - - -/** Describe how grid availability is used. */ -typedef enum { - /** Grid availability is only used for sorting results. Operations - * where some grids are missing will be sorted last. */ - PROJ_GRID_AVAILABILITY_USED_FOR_SORTING, - - /** Completely discard an operation if a required grid is missing. */ - PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID, - - /** Ignore grid availability at all. Results will be presented as if - * all grids were available. */ - PROJ_GRID_AVAILABILITY_IGNORED, -} PROJ_GRID_AVAILABILITY_USE; - -void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - PROJ_GRID_AVAILABILITY_USE use); - -void PROJ_DLL proj_operation_factory_context_set_use_proj_alternative_grid_names( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - int usePROJNames); - -void PROJ_DLL proj_operation_factory_context_set_allow_use_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, int allow); - -void PROJ_DLL proj_operation_factory_context_set_allowed_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - const char* const *list_of_auth_name_codes); - -/* ------------------------------------------------------------------------- */ - - -PJ_OBJ_LIST PROJ_DLL *proj_obj_create_operations( - PJ_OBJ *source_crs, - PJ_OBJ *target_crs, - PJ_OPERATION_FACTORY_CONTEXT *operationContext); - -int PROJ_DLL proj_obj_list_get_count(PJ_OBJ_LIST *result); - -PJ_OBJ PROJ_DLL *proj_obj_list_get(PJ_OBJ_LIST *result, - int index); - -void PROJ_DLL proj_obj_list_unref(PJ_OBJ_LIST *result); - -/* ------------------------------------------------------------------------- */ - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_geodetic_crs(PJ_OBJ *crs); - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_horizontal_datum(PJ_OBJ *crs); - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_sub_crs(PJ_OBJ *crs, int index); - -PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(PJ_OBJ *crs); - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordinate_system(PJ_OBJ *crs); - -const char PROJ_DLL *proj_obj_cs_get_type(PJ_OBJ* cs); - -int PROJ_DLL proj_obj_cs_get_axis_count(PJ_OBJ *cs); - -int PROJ_DLL proj_obj_cs_get_axis_info(PJ_OBJ *cs, int index, - const char **pName, - const char **pAbbrev, - const char **pDirection, - double *pUnitConvFactor, - const char **pUnitName); - -PJ_OBJ PROJ_DLL *proj_obj_get_ellipsoid(PJ_OBJ *obj); - -int PROJ_DLL proj_obj_ellipsoid_get_parameters(PJ_OBJ *ellipsoid, - double *pSemiMajorMetre, - double *pSemiMinorMetre, - int *pIsSemiMinorComputed, - double *pInverseFlattening); - -PJ_OBJ PROJ_DLL *proj_obj_get_prime_meridian(PJ_OBJ *obj); - -int PROJ_DLL proj_obj_prime_meridian_get_parameters(PJ_OBJ *prime_meridian, - double *pLongitude, - double *pLongitudeUnitConvFactor, - const char **pLongitudeUnitName); - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordoperation(PJ_OBJ *crs, - const char **pMethodName, - const char **pMethodAuthorityName, - const char **pMethodCode); - -int PROJ_DLL proj_coordoperation_is_instanciable(PJ_OBJ *coordoperation); - -int PROJ_DLL proj_coordoperation_get_param_count(PJ_OBJ *coordoperation); - -int PROJ_DLL proj_coordoperation_get_param_index(PJ_OBJ *coordoperation, - const char *name); - -int PROJ_DLL proj_coordoperation_get_param(PJ_OBJ *coordoperation, - int index, - const char **pName, - const char **pNameAuthorityName, - const char **pNameCode, - double *pValue, - const char **pValueString, - double *pValueUnitConvFactor, - const char **pValueUnitName); - -int PROJ_DLL proj_coordoperation_get_grid_used_count(PJ_OBJ *coordoperation); - -int PROJ_DLL proj_coordoperation_get_grid_used(PJ_OBJ *coordoperation, - int index, - const char **pShortName, - const char **pFullName, - const char **pPackageName, - const char **pURL, - int *pDirectDownload, - int *pOpenLicense, - int *pAvailable); - -double PROJ_DLL proj_coordoperation_get_accuracy(PJ_OBJ* obj); +/**@}*/ #ifdef __cplusplus } |
