123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- // Boost.Geometry
- // This file is manually converted from PROJ4
- // This file was modified by Oracle on 2017, 2018.
- // Modifications copyright (c) 2017-2018, Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- // Use, modification and distribution is subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- // This file is converted from PROJ4, http://trac.osgeo.org/proj
- // PROJ4 is originally written by Gerald Evenden (then of the USGS)
- // PROJ4 is maintained by Frank Warmerdam
- // This file was converted to Geometry Library by Adam Wulkiewicz
- // Original copyright notice:
- // None
- /* list of projection system pj_errno values */
- #ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_STRERRNO_HPP
- #define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_STRERRNO_HPP
- #include <cerrno>
- #include <cstring>
- #include <sstream>
- #include <string>
- namespace boost { namespace geometry { namespace projections
- {
- namespace detail
- {
- // Originally defined in projects.hpp
- /* library errors */
- enum error_type
- {
- error_no_args = -1,
- error_no_option_in_init_file = -2,
- error_no_colon_in_init_string = -3,
- error_proj_not_named = -4,
- error_unknown_projection_id = -5,
- error_eccentricity_is_one = -6,
- error_unknow_unit_id = -7,
- error_invalid_boolean_param = -8,
- error_unknown_ellp_param = -9,
- error_rev_flattening_is_zero = -10,
- error_ref_rad_larger_than_90 = -11,
- error_es_less_than_zero = -12,
- error_major_axis_not_given = -13,
- error_lat_or_lon_exceed_limit = -14,
- error_invalid_x_or_y = -15,
- error_wrong_format_dms_value = -16,
- error_non_conv_inv_meri_dist = -17,
- error_non_con_inv_phi2 = -18,
- error_acos_asin_arg_too_large = -19,
- error_tolerance_condition = -20,
- error_conic_lat_equal = -21,
- error_lat_larger_than_90 = -22,
- error_lat1_is_zero = -23,
- error_lat_ts_larger_than_90 = -24,
- error_control_point_no_dist = -25,
- error_no_rotation_proj = -26,
- error_w_or_m_zero_or_less = -27,
- error_lsat_not_in_range = -28,
- error_path_not_in_range = -29,
- error_h_less_than_zero = -30,
- error_k_less_than_zero = -31,
- error_lat_1_or_2_zero_or_90 = -32,
- error_lat_0_or_alpha_eq_90 = -33,
- error_ellipsoid_use_required = -34,
- error_invalid_utm_zone = -35,
- error_tcheby_val_out_of_range = -36,
- error_failed_to_find_proj = -37,
- error_failed_to_load_grid = -38,
- error_invalid_m_or_n = -39,
- error_n_out_of_range = -40,
- error_lat_1_2_unspecified = -41,
- error_abs_lat1_eq_abs_lat2 = -42,
- error_lat_0_half_pi_from_mean = -43,
- error_unparseable_cs_def = -44,
- error_geocentric = -45,
- error_unknown_prime_meridian = -46,
- error_axis = -47,
- error_grid_area = -48,
- error_invalid_sweep_axis = -49,
- error_malformed_pipeline = -50,
- error_unit_factor_less_than_0 = -51,
- error_invalid_scale = -52,
- error_non_convergent = -53,
- error_missing_args = -54,
- error_lat_0_is_zero = -55,
- error_ellipsoidal_unsupported = -56,
- error_too_many_inits = -57,
- error_invalid_arg = -58
- };
- static const char *
- pj_err_list[] = {
- "no arguments in initialization list", /* -1 */
- "no options found in 'init' file", /* -2 */
- "no colon in init= string", /* -3 */
- "projection not named", /* -4 */
- "unknown projection id", /* -5 */
- "effective eccentricity = 1.", /* -6 */
- "unknown unit conversion id", /* -7 */
- "invalid boolean param argument", /* -8 */
- "unknown elliptical parameter name", /* -9 */
- "reciprocal flattening (1/f) = 0", /* -10 */
- "|radius reference latitude| > 90", /* -11 */
- "squared eccentricity < 0", /* -12 */
- "major axis or radius = 0 or not given", /* -13 */
- "latitude or longitude exceeded limits", /* -14 */
- "invalid x or y", /* -15 */
- "improperly formed DMS value", /* -16 */
- "non-convergent inverse meridional dist", /* -17 */
- "non-convergent inverse phi2", /* -18 */
- "acos/asin: |arg| >1.+1e-14", /* -19 */
- "tolerance condition error", /* -20 */
- "conic lat_1 = -lat_2", /* -21 */
- "lat_1 >= 90", /* -22 */
- "lat_1 = 0", /* -23 */
- "lat_ts >= 90", /* -24 */
- "no distance between control points", /* -25 */
- "projection not selected to be rotated", /* -26 */
- "W <= 0 or M <= 0", /* -27 */
- "lsat not in 1-5 range", /* -28 */
- "path not in range", /* -29 */
- "h <= 0", /* -30 */
- "k <= 0", /* -31 */
- "lat_0 = 0 or 90 or alpha = 90", /* -32 */
- "lat_1=lat_2 or lat_1=0 or lat_2=90", /* -33 */
- "elliptical usage required", /* -34 */
- "invalid UTM zone number", /* -35 */
- "arg(s) out of range for Tcheby eval", /* -36 */
- "failed to find projection to be rotated", /* -37 */
- "failed to load datum shift file", /* -38 */
- "both n & m must be spec'd and > 0", /* -39 */
- "n <= 0, n > 1 or not specified", /* -40 */
- "lat_1 or lat_2 not specified", /* -41 */
- "|lat_1| == |lat_2|", /* -42 */
- "lat_0 is pi/2 from mean lat", /* -43 */
- "unparseable coordinate system definition", /* -44 */
- "geocentric transformation missing z or ellps", /* -45 */
- "unknown prime meridian conversion id", /* -46 */
- "illegal axis orientation combination", /* -47 */
- "point not within available datum shift grids", /* -48 */
- "invalid sweep axis, choose x or y", /* -49 */
- "malformed pipeline", /* -50 */
- "unit conversion factor must be > 0", /* -51 */
- "invalid scale", /* -52 */
- "non-convergent computation", /* -53 */
- "missing required arguments", /* -54 */
- "lat_0 = 0", /* -55 */
- "ellipsoidal usage unsupported", /* -56 */
- "only one +init allowed for non-pipeline operations", /* -57 */
- "argument not numerical or out of range", /* -58 */
- /* When adding error messages, remember to update ID defines in
- projects.h, and transient_error array in pj_transform */
- };
- inline std::string pj_generic_strerrno(std::string const& msg, int err)
- {
- std::stringstream ss;
- ss << msg << " (" << err << ")";
- return ss.str();
- }
- inline std::string pj_strerrno(int err) {
- if (0==err)
- {
- return "";
- }
- else if (err > 0)
- {
- // std::strerror function may be not thread-safe
- //return std::strerror(err);
- switch(err)
- {
- #ifdef EINVAL
- case EINVAL:
- return "Invalid argument";
- #endif
- #ifdef EDOM
- case EDOM:
- return "Math argument out of domain of func";
- #endif
- #ifdef ERANGE
- case ERANGE:
- return "Math result not representable";
- #endif
- default:
- return pj_generic_strerrno("system error", err);
- }
- }
- else /*if (err < 0)*/
- {
- size_t adjusted_err = - err - 1;
- if (adjusted_err < (sizeof(pj_err_list) / sizeof(char *)))
- {
- return(pj_err_list[adjusted_err]);
- }
- else
- {
- return pj_generic_strerrno("invalid projection system error", err);
- }
- }
- }
- } // namespace detail
- }}} // namespace boost::geometry::projections
- #endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_STRERRNO_HPP
|