summaryrefslogtreecommitdiff
path: root/boost/geometry
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2019-12-05 15:12:59 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2019-12-05 15:12:59 +0900
commitb8cf34c691623e4ec329053cbbf68522a855882d (patch)
tree34da08632a99677f6b79ecb65e5b655a5b69a67f /boost/geometry
parent3fdc3e5ee96dca5b11d1694975a65200787eab86 (diff)
downloadboost-upstream/1.67.0.tar.gz
boost-upstream/1.67.0.tar.bz2
boost-upstream/1.67.0.zip
Imported Upstream version 1.67.0upstream/1.67.0
Diffstat (limited to 'boost/geometry')
-rw-r--r--boost/geometry/algorithms/area.hpp112
-rw-r--r--boost/geometry/algorithms/convert.hpp28
-rw-r--r--boost/geometry/algorithms/correct.hpp7
-rw-r--r--boost/geometry/algorithms/densify.hpp425
-rw-r--r--boost/geometry/algorithms/detail/azimuth.hpp12
-rw-r--r--boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp50
-rw-r--r--boost/geometry/algorithms/detail/buffer/buffer_policies.hpp4
-rw-r--r--boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp23
-rw-r--r--boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp2
-rw-r--r--boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp1
-rw-r--r--boost/geometry/algorithms/detail/envelope/segment.hpp1
-rw-r--r--boost/geometry/algorithms/detail/extreme_points.hpp20
-rw-r--r--boost/geometry/algorithms/detail/is_valid/interface.hpp8
-rw-r--r--boost/geometry/algorithms/detail/is_valid/ring.hpp10
-rw-r--r--boost/geometry/algorithms/detail/overlay/add_rings.hpp13
-rw-r--r--boost/geometry/algorithms/detail/overlay/aggregate_operations.hpp256
-rw-r--r--boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp41
-rw-r--r--boost/geometry/algorithms/detail/overlay/assign_parents.hpp33
-rw-r--r--boost/geometry/algorithms/detail/overlay/cluster_info.hpp5
-rw-r--r--boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp178
-rw-r--r--boost/geometry/algorithms/detail/overlay/enrichment_info.hpp2
-rw-r--r--boost/geometry/algorithms/detail/overlay/follow.hpp3
-rw-r--r--boost/geometry/algorithms/detail/overlay/handle_colocations.hpp36
-rw-r--r--boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp205
-rw-r--r--boost/geometry/algorithms/detail/overlay/is_self_turn.hpp17
-rw-r--r--boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp3
-rw-r--r--boost/geometry/algorithms/detail/overlay/overlay.hpp22
-rw-r--r--boost/geometry/algorithms/detail/overlay/overlay_type.hpp11
-rw-r--r--boost/geometry/algorithms/detail/overlay/self_turn_points.hpp12
-rw-r--r--boost/geometry/algorithms/detail/overlay/sort_by_side.hpp13
-rw-r--r--boost/geometry/algorithms/detail/overlay/traversal.hpp338
-rw-r--r--boost/geometry/algorithms/detail/overlay/traversal_intersection_patterns.hpp451
-rw-r--r--boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp58
-rw-r--r--boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp246
-rw-r--r--boost/geometry/algorithms/detail/overlay/turn_info.hpp2
-rw-r--r--boost/geometry/algorithms/detail/partition.hpp2
-rw-r--r--boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp56
-rw-r--r--boost/geometry/algorithms/length.hpp38
-rw-r--r--boost/geometry/algorithms/point_on_surface.hpp6
-rw-r--r--boost/geometry/algorithms/simplify.hpp250
-rw-r--r--boost/geometry/core/radius.hpp8
-rw-r--r--boost/geometry/formulas/andoyer_inverse.hpp9
-rw-r--r--boost/geometry/formulas/elliptic_arc_length.hpp56
-rw-r--r--boost/geometry/formulas/sjoberg_intersection.hpp1
-rw-r--r--boost/geometry/formulas/thomas_direct.hpp1
-rw-r--r--boost/geometry/formulas/thomas_inverse.hpp8
-rw-r--r--boost/geometry/formulas/vertex_latitude.hpp4
-rw-r--r--boost/geometry/formulas/vertex_longitude.hpp12
-rw-r--r--boost/geometry/formulas/vincenty_direct.hpp5
-rw-r--r--boost/geometry/formulas/vincenty_inverse.hpp9
-rw-r--r--boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp1
-rw-r--r--boost/geometry/geometries/polygon.hpp6
-rw-r--r--boost/geometry/geometry.hpp8
-rw-r--r--boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp9
-rw-r--r--boost/geometry/index/detail/rtree/node/variant_dynamic.hpp104
-rw-r--r--boost/geometry/index/detail/rtree/node/variant_static.hpp49
-rw-r--r--boost/geometry/index/detail/rtree/node/weak_dynamic.hpp134
-rw-r--r--boost/geometry/index/detail/rtree/node/weak_static.hpp71
-rw-r--r--boost/geometry/index/inserter.hpp9
-rw-r--r--boost/geometry/index/predicates.hpp58
-rw-r--r--boost/geometry/index/rtree.hpp7
-rw-r--r--boost/geometry/io/wkt/read.hpp34
-rw-r--r--boost/geometry/iterators/base.hpp1
-rw-r--r--boost/geometry/iterators/closing_iterator.hpp1
-rw-r--r--boost/geometry/iterators/concatenate_iterator.hpp1
-rw-r--r--boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp1
-rw-r--r--boost/geometry/iterators/ever_circling_iterator.hpp1
-rw-r--r--boost/geometry/iterators/flatten_iterator.hpp1
-rw-r--r--boost/geometry/policies/relate/intersection_points.hpp37
-rw-r--r--boost/geometry/srs/epsg.hpp82
-rw-r--r--boost/geometry/srs/esri.hpp82
-rw-r--r--boost/geometry/srs/iau2000.hpp82
-rw-r--r--boost/geometry/srs/projection.hpp591
-rw-r--r--boost/geometry/srs/projections/code.hpp56
-rw-r--r--boost/geometry/srs/projections/epsg.hpp4409
-rw-r--r--boost/geometry/srs/projections/epsg_params.hpp48
-rw-r--r--boost/geometry/srs/projections/epsg_traits.hpp4417
-rw-r--r--boost/geometry/srs/projections/esri.hpp491
-rw-r--r--boost/geometry/srs/projections/esri_params.hpp48
-rw-r--r--boost/geometry/srs/projections/esri_traits.hpp499
-rw-r--r--boost/geometry/srs/projections/exception.hpp97
-rw-r--r--boost/geometry/srs/projections/factory.hpp282
-rw-r--r--boost/geometry/srs/projections/iau2000.hpp2424
-rw-r--r--boost/geometry/srs/projections/iau2000_params.hpp48
-rw-r--r--boost/geometry/srs/projections/iau2000_traits.hpp2432
-rw-r--r--boost/geometry/srs/projections/impl/aasincos.hpp114
-rw-r--r--boost/geometry/srs/projections/impl/adjlon.hpp70
-rw-r--r--boost/geometry/srs/projections/impl/base_dynamic.hpp151
-rw-r--r--boost/geometry/srs/projections/impl/base_static.hpp139
-rw-r--r--boost/geometry/srs/projections/impl/dms_parser.hpp278
-rw-r--r--boost/geometry/srs/projections/impl/factory_entry.hpp51
-rw-r--r--boost/geometry/srs/projections/impl/function_overloads.hpp46
-rw-r--r--boost/geometry/srs/projections/impl/geocent.hpp487
-rw-r--r--boost/geometry/srs/projections/impl/pj_auth.hpp95
-rw-r--r--boost/geometry/srs/projections/impl/pj_datum_set.hpp213
-rw-r--r--boost/geometry/srs/projections/impl/pj_datums.hpp112
-rw-r--r--boost/geometry/srs/projections/impl/pj_ell_set.hpp205
-rw-r--r--boost/geometry/srs/projections/impl/pj_ellps.hpp98
-rw-r--r--boost/geometry/srs/projections/impl/pj_fwd.hpp101
-rw-r--r--boost/geometry/srs/projections/impl/pj_gauss.hpp142
-rw-r--r--boost/geometry/srs/projections/impl/pj_init.hpp395
-rw-r--r--boost/geometry/srs/projections/impl/pj_inv.hpp82
-rw-r--r--boost/geometry/srs/projections/impl/pj_mlfn.hpp121
-rw-r--r--boost/geometry/srs/projections/impl/pj_msfn.hpp59
-rw-r--r--boost/geometry/srs/projections/impl/pj_param.hpp161
-rw-r--r--boost/geometry/srs/projections/impl/pj_phi2.hpp73
-rw-r--r--boost/geometry/srs/projections/impl/pj_qsfn.hpp95
-rw-r--r--boost/geometry/srs/projections/impl/pj_strerrno.hpp144
-rw-r--r--boost/geometry/srs/projections/impl/pj_transform.hpp1009
-rw-r--r--boost/geometry/srs/projections/impl/pj_tsfn.hpp58
-rw-r--r--boost/geometry/srs/projections/impl/pj_units.hpp79
-rw-r--r--boost/geometry/srs/projections/impl/pj_zpoly1.hpp106
-rw-r--r--boost/geometry/srs/projections/impl/proj_mdist.hpp144
-rw-r--r--boost/geometry/srs/projections/impl/projects.hpp272
-rw-r--r--boost/geometry/srs/projections/invalid_point.hpp38
-rw-r--r--boost/geometry/srs/projections/par4.hpp501
-rw-r--r--boost/geometry/srs/projections/proj/aea.hpp349
-rw-r--r--boost/geometry/srs/projections/proj/aeqd.hpp654
-rw-r--r--boost/geometry/srs/projections/proj/airy.hpp257
-rw-r--r--boost/geometry/srs/projections/proj/aitoff.hpp324
-rw-r--r--boost/geometry/srs/projections/proj/august.hpp168
-rw-r--r--boost/geometry/srs/projections/proj/bacon.hpp272
-rw-r--r--boost/geometry/srs/projections/proj/bipc.hpp297
-rw-r--r--boost/geometry/srs/projections/proj/boggs.hpp185
-rw-r--r--boost/geometry/srs/projections/proj/bonne.hpp298
-rw-r--r--boost/geometry/srs/projections/proj/cass.hpp292
-rw-r--r--boost/geometry/srs/projections/proj/cc.hpp171
-rw-r--r--boost/geometry/srs/projections/proj/cea.hpp269
-rw-r--r--boost/geometry/srs/projections/proj/chamb.hpp288
-rw-r--r--boost/geometry/srs/projections/proj/collg.hpp183
-rw-r--r--boost/geometry/srs/projections/proj/crast.hpp175
-rw-r--r--boost/geometry/srs/projections/proj/denoy.hpp174
-rw-r--r--boost/geometry/srs/projections/proj/eck1.hpp167
-rw-r--r--boost/geometry/srs/projections/proj/eck2.hpp184
-rw-r--r--boost/geometry/srs/projections/proj/eck3.hpp321
-rw-r--r--boost/geometry/srs/projections/proj/eck4.hpp195
-rw-r--r--boost/geometry/srs/projections/proj/eck5.hpp168
-rw-r--r--boost/geometry/srs/projections/proj/eqc.hpp175
-rw-r--r--boost/geometry/srs/projections/proj/eqdc.hpp250
-rw-r--r--boost/geometry/srs/projections/proj/etmerc.hpp395
-rw-r--r--boost/geometry/srs/projections/proj/fahey.hpp168
-rw-r--r--boost/geometry/srs/projections/proj/fouc_s.hpp201
-rw-r--r--boost/geometry/srs/projections/proj/gall.hpp169
-rw-r--r--boost/geometry/srs/projections/proj/geocent.hpp169
-rw-r--r--boost/geometry/srs/projections/proj/geos.hpp377
-rw-r--r--boost/geometry/srs/projections/proj/gins8.hpp170
-rw-r--r--boost/geometry/srs/projections/proj/gn_sinu.hpp426
-rw-r--r--boost/geometry/srs/projections/proj/gnom.hpp266
-rw-r--r--boost/geometry/srs/projections/proj/goode.hpp187
-rw-r--r--boost/geometry/srs/projections/proj/gstmerc.hpp202
-rw-r--r--boost/geometry/srs/projections/proj/hammer.hpp201
-rw-r--r--boost/geometry/srs/projections/proj/hatano.hpp211
-rw-r--r--boost/geometry/srs/projections/proj/healpix.hpp897
-rw-r--r--boost/geometry/srs/projections/proj/igh.hpp377
-rw-r--r--boost/geometry/srs/projections/proj/imw_p.hpp320
-rw-r--r--boost/geometry/srs/projections/proj/isea.hpp1311
-rw-r--r--boost/geometry/srs/projections/proj/krovak.hpp360
-rw-r--r--boost/geometry/srs/projections/proj/labrd.hpp269
-rw-r--r--boost/geometry/srs/projections/proj/laea.hpp447
-rw-r--r--boost/geometry/srs/projections/proj/lagrng.hpp195
-rw-r--r--boost/geometry/srs/projections/proj/larr.hpp164
-rw-r--r--boost/geometry/srs/projections/proj/lask.hpp173
-rw-r--r--boost/geometry/srs/projections/proj/latlong.hpp292
-rw-r--r--boost/geometry/srs/projections/proj/lcc.hpp282
-rw-r--r--boost/geometry/srs/projections/proj/lcca.hpp231
-rw-r--r--boost/geometry/srs/projections/proj/loxim.hpp205
-rw-r--r--boost/geometry/srs/projections/proj/lsat.hpp341
-rw-r--r--boost/geometry/srs/projections/proj/mbt_fps.hpp194
-rw-r--r--boost/geometry/srs/projections/proj/mbtfpp.hpp199
-rw-r--r--boost/geometry/srs/projections/proj/mbtfpq.hpp208
-rw-r--r--boost/geometry/srs/projections/proj/merc.hpp267
-rw-r--r--boost/geometry/srs/projections/proj/mill.hpp167
-rw-r--r--boost/geometry/srs/projections/proj/mod_ster.hpp522
-rw-r--r--boost/geometry/srs/projections/proj/moll.hpp294
-rw-r--r--boost/geometry/srs/projections/proj/natearth.hpp228
-rw-r--r--boost/geometry/srs/projections/proj/nell.hpp180
-rw-r--r--boost/geometry/srs/projections/proj/nell_h.hpp184
-rw-r--r--boost/geometry/srs/projections/proj/nocol.hpp190
-rw-r--r--boost/geometry/srs/projections/proj/nsper.hpp355
-rw-r--r--boost/geometry/srs/projections/proj/nzmg.hpp255
-rw-r--r--boost/geometry/srs/projections/proj/ob_tran.hpp575
-rw-r--r--boost/geometry/srs/projections/proj/ocea.hpp231
-rw-r--r--boost/geometry/srs/projections/proj/oea.hpp214
-rw-r--r--boost/geometry/srs/projections/proj/omerc.hpp354
-rw-r--r--boost/geometry/srs/projections/proj/ortho.hpp257
-rw-r--r--boost/geometry/srs/projections/proj/poly.hpp311
-rw-r--r--boost/geometry/srs/projections/proj/putp2.hpp193
-rw-r--r--boost/geometry/srs/projections/proj/putp3.hpp227
-rw-r--r--boost/geometry/srs/projections/proj/putp4p.hpp231
-rw-r--r--boost/geometry/srs/projections/proj/putp5.hpp229
-rw-r--r--boost/geometry/srs/projections/proj/putp6.hpp255
-rw-r--r--boost/geometry/srs/projections/proj/qsc.hpp539
-rw-r--r--boost/geometry/srs/projections/proj/robin.hpp298
-rw-r--r--boost/geometry/srs/projections/proj/rouss.hpp241
-rw-r--r--boost/geometry/srs/projections/proj/rpoly.hpp187
-rw-r--r--boost/geometry/srs/projections/proj/sconics.hpp570
-rw-r--r--boost/geometry/srs/projections/proj/somerc.hpp227
-rw-r--r--boost/geometry/srs/projections/proj/stere.hpp545
-rw-r--r--boost/geometry/srs/projections/proj/sterea.hpp210
-rw-r--r--boost/geometry/srs/projections/proj/sts.hpp325
-rw-r--r--boost/geometry/srs/projections/proj/tcc.hpp163
-rw-r--r--boost/geometry/srs/projections/proj/tcea.hpp176
-rw-r--r--boost/geometry/srs/projections/proj/tmerc.hpp495
-rw-r--r--boost/geometry/srs/projections/proj/tpeqd.hpp235
-rw-r--r--boost/geometry/srs/projections/proj/urm5.hpp185
-rw-r--r--boost/geometry/srs/projections/proj/urmfps.hpp235
-rw-r--r--boost/geometry/srs/projections/proj/vandg.hpp257
-rw-r--r--boost/geometry/srs/projections/proj/vandg2.hpp237
-rw-r--r--boost/geometry/srs/projections/proj/vandg4.hpp194
-rw-r--r--boost/geometry/srs/projections/proj/wag2.hpp172
-rw-r--r--boost/geometry/srs/projections/proj/wag3.hpp180
-rw-r--r--boost/geometry/srs/projections/proj/wag7.hpp161
-rw-r--r--boost/geometry/srs/projections/proj/wink1.hpp174
-rw-r--r--boost/geometry/srs/projections/proj/wink2.hpp195
-rw-r--r--boost/geometry/srs/projections/proj4.hpp123
-rw-r--r--boost/geometry/srs/projections/srid_traits.hpp101
-rw-r--r--boost/geometry/srs/sphere.hpp117
-rw-r--r--boost/geometry/srs/spheroid.hpp (renamed from boost/geometry/core/srs.hpp)89
-rw-r--r--boost/geometry/srs/srs.hpp29
-rw-r--r--boost/geometry/srs/transformation.hpp627
-rw-r--r--boost/geometry/strategies/area.hpp56
-rw-r--r--boost/geometry/strategies/area_result.hpp116
-rw-r--r--boost/geometry/strategies/cartesian/area.hpp146
-rw-r--r--boost/geometry/strategies/cartesian/area_surveyor.hpp131
-rw-r--r--boost/geometry/strategies/cartesian/centroid_average.hpp4
-rw-r--r--boost/geometry/strategies/cartesian/densify.hpp133
-rw-r--r--boost/geometry/strategies/cartesian/intersection.hpp47
-rw-r--r--boost/geometry/strategies/concepts/area_concept.hpp20
-rw-r--r--boost/geometry/strategies/default_area_result.hpp18
-rw-r--r--boost/geometry/strategies/densify.hpp42
-rw-r--r--boost/geometry/strategies/geographic/area.hpp116
-rw-r--r--boost/geometry/strategies/geographic/azimuth.hpp2
-rw-r--r--boost/geometry/strategies/geographic/densify.hpp136
-rw-r--r--boost/geometry/strategies/geographic/distance.hpp34
-rw-r--r--boost/geometry/strategies/geographic/distance_cross_track.hpp111
-rw-r--r--boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp207
-rw-r--r--boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp218
-rw-r--r--boost/geometry/strategies/geographic/envelope_segment.hpp4
-rw-r--r--boost/geometry/strategies/geographic/intersection.hpp34
-rw-r--r--boost/geometry/strategies/geographic/intersection_elliptic.hpp2
-rw-r--r--boost/geometry/strategies/geographic/side.hpp12
-rw-r--r--boost/geometry/strategies/spherical/area.hpp120
-rw-r--r--boost/geometry/strategies/spherical/densify.hpp189
-rw-r--r--boost/geometry/strategies/spherical/distance_cross_track.hpp10
-rw-r--r--boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp440
-rw-r--r--boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp202
-rw-r--r--boost/geometry/strategies/spherical/distance_haversine.hpp93
-rw-r--r--boost/geometry/strategies/spherical/get_radius.hpp81
-rw-r--r--boost/geometry/strategies/spherical/intersection.hpp32
-rw-r--r--boost/geometry/strategies/spherical/point_in_poly_winding.hpp7
-rw-r--r--boost/geometry/strategies/strategies.hpp14
-rw-r--r--boost/geometry/strategies/transform/matrix_transformers.hpp6
-rw-r--r--boost/geometry/strategies/transform/srs_transformer.hpp102
-rw-r--r--boost/geometry/util/normalize_spheroidal_coordinates.hpp4
-rw-r--r--boost/geometry/util/range.hpp7
-rw-r--r--boost/geometry/util/select_sequence_element.hpp78
-rw-r--r--boost/geometry/views/detail/boundary_view/implementation.hpp1
-rw-r--r--boost/geometry/views/detail/points_view.hpp1
258 files changed, 54482 insertions, 2296 deletions
diff --git a/boost/geometry/algorithms/area.hpp b/boost/geometry/algorithms/area.hpp
index 18aea24036..c6e237e7cc 100644
--- a/boost/geometry/algorithms/area.hpp
+++ b/boost/geometry/algorithms/area.hpp
@@ -3,9 +3,10 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
-// This file was modified by Oracle on 2017.
-// Modifications copyright (c) 2017 Oracle and/or its affiliates.
+// 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
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
@@ -19,7 +20,6 @@
#define BOOST_GEOMETRY_ALGORITHMS_AREA_HPP
#include <boost/concept_check.hpp>
-#include <boost/mpl/if.hpp>
#include <boost/range/functions.hpp>
#include <boost/range/metafunctions.hpp>
@@ -43,7 +43,9 @@
#include <boost/geometry/algorithms/detail/multi_sum.hpp>
#include <boost/geometry/strategies/area.hpp>
+#include <boost/geometry/strategies/area_result.hpp>
#include <boost/geometry/strategies/default_area_result.hpp>
+#include <boost/geometry/strategies/default_strategy.hpp>
#include <boost/geometry/strategies/concepts/area_concept.hpp>
@@ -56,6 +58,7 @@
namespace boost { namespace geometry
{
+
#ifndef DOXYGEN_NO_DETAIL
namespace detail { namespace area
{
@@ -83,10 +86,10 @@ template
struct ring_area
{
template <typename Ring, typename Strategy>
- static inline typename Strategy::return_type
+ static inline typename area_result<Ring, Strategy>::type
apply(Ring const& ring, Strategy const& strategy)
{
- BOOST_CONCEPT_ASSERT( (geometry::concepts::AreaStrategy<Strategy>) );
+ BOOST_CONCEPT_ASSERT( (geometry::concepts::AreaStrategy<Ring, Strategy>) );
assert_dimension<Ring, 2>();
// Ignore warning (because using static method sometimes) on strategy
@@ -98,7 +101,7 @@ struct ring_area
if (boost::size(ring)
< core_detail::closure::minimum_ring_size<Closure>::value)
{
- return typename Strategy::return_type();
+ return typename area_result<Ring, Strategy>::type();
}
typedef typename reversible_view<Ring const, Direction>::type rview_type;
@@ -110,7 +113,7 @@ struct ring_area
rview_type rview(ring);
view_type view(rview);
- typename Strategy::state_type state;
+ typename Strategy::template state<Ring> state;
iterator_type it = boost::begin(view);
iterator_type end = boost::end(view);
@@ -144,9 +147,13 @@ template
struct area : detail::calculate_null
{
template <typename Strategy>
- static inline typename Strategy::return_type apply(Geometry const& geometry, Strategy const& strategy)
+ static inline typename area_result<Geometry, Strategy>::type
+ apply(Geometry const& geometry, Strategy const& strategy)
{
- return calculate_null::apply<typename Strategy::return_type>(geometry, strategy);
+ return calculate_null::apply
+ <
+ typename area_result<Geometry, Strategy>::type
+ >(geometry, strategy);
}
};
@@ -170,10 +177,11 @@ template <typename Polygon>
struct area<Polygon, polygon_tag> : detail::calculate_polygon_sum
{
template <typename Strategy>
- static inline typename Strategy::return_type apply(Polygon const& polygon, Strategy const& strategy)
+ static inline typename area_result<Polygon, Strategy>::type
+ apply(Polygon const& polygon, Strategy const& strategy)
{
return calculate_polygon_sum::apply<
- typename Strategy::return_type,
+ typename area_result<Polygon, Strategy>::type,
detail::area::ring_area
<
order_as_direction<geometry::point_order<Polygon>::value>::value,
@@ -188,12 +196,12 @@ template <typename MultiGeometry>
struct area<MultiGeometry, multi_polygon_tag> : detail::multi_sum
{
template <typename Strategy>
- static inline typename Strategy::return_type
+ static inline typename area_result<MultiGeometry, Strategy>::type
apply(MultiGeometry const& multi, Strategy const& strategy)
{
return multi_sum::apply
<
- typename Strategy::return_type,
+ typename area_result<MultiGeometry, Strategy>::type,
area<typename boost::range_value<MultiGeometry>::type>
>(multi, strategy);
}
@@ -204,39 +212,73 @@ struct area<MultiGeometry, multi_polygon_tag> : detail::multi_sum
#endif // DOXYGEN_NO_DISPATCH
-namespace resolve_variant {
+namespace resolve_strategy
+{
+
+struct area
+{
+ template <typename Geometry, typename Strategy>
+ static inline typename area_result<Geometry, Strategy>::type
+ apply(Geometry const& geometry, Strategy const& strategy)
+ {
+ return dispatch::area<Geometry>::apply(geometry, strategy);
+ }
+
+ template <typename Geometry>
+ static inline typename area_result<Geometry>::type
+ apply(Geometry const& geometry, default_strategy)
+ {
+ typedef typename strategy::area::services::default_strategy
+ <
+ typename cs_tag<Geometry>::type
+ >::type strategy_type;
+
+ return dispatch::area<Geometry>::apply(geometry, strategy_type());
+ }
+};
+
+
+} // namespace resolve_strategy
+
+
+namespace resolve_variant
+{
template <typename Geometry>
struct area
{
template <typename Strategy>
- static inline typename Strategy::return_type apply(Geometry const& geometry,
- Strategy const& strategy)
+ static inline typename area_result<Geometry, Strategy>::type
+ apply(Geometry const& geometry, Strategy const& strategy)
{
- return dispatch::area<Geometry>::apply(geometry, strategy);
+ return resolve_strategy::area::apply(geometry, strategy);
}
};
template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
struct area<boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
{
+ typedef boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> variant_type;
+
template <typename Strategy>
- struct visitor: boost::static_visitor<typename Strategy::return_type>
+ struct visitor
+ : boost::static_visitor<typename area_result<variant_type, Strategy>::type>
{
Strategy const& m_strategy;
visitor(Strategy const& strategy): m_strategy(strategy) {}
template <typename Geometry>
- typename Strategy::return_type operator()(Geometry const& geometry) const
+ typename area_result<variant_type, Strategy>::type
+ operator()(Geometry const& geometry) const
{
return area<Geometry>::apply(geometry, m_strategy);
}
};
template <typename Strategy>
- static inline typename Strategy::return_type
- apply(boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> const& geometry,
+ static inline typename area_result<variant_type, Strategy>::type
+ apply(variant_type const& geometry,
Strategy const& strategy)
{
return boost::apply_visitor(visitor<Strategy>(strategy), geometry);
@@ -268,22 +310,14 @@ and Geographic as well.
\qbk{[area] [area_output]}
*/
template <typename Geometry>
-inline typename default_area_result<Geometry>::type area(Geometry const& geometry)
+inline typename area_result<Geometry>::type
+area(Geometry const& geometry)
{
concepts::check<Geometry const>();
- // TODO put this into a resolve_strategy stage
- // (and take the return type from resolve_variant)
- typedef typename point_type<Geometry>::type point_type;
- typedef typename strategy::area::services::default_strategy
- <
- typename cs_tag<point_type>::type,
- point_type
- >::type strategy_type;
-
// detail::throw_on_empty_input(geometry);
- return resolve_variant::area<Geometry>::apply(geometry, strategy_type());
+ return resolve_variant::area<Geometry>::apply(geometry, default_strategy());
}
/*!
@@ -301,19 +335,19 @@ inline typename default_area_result<Geometry>::type area(Geometry const& geometr
\qbk{
[include reference/algorithms/area.qbk]
+[heading Available Strategies]
+\* [link geometry.reference.strategies.strategy_area_cartesian Cartesian]
+\* [link geometry.reference.strategies.strategy_area_spherical Spherical]
+\* [link geometry.reference.strategies.strategy_area_geographic Geographic]
+
[heading Example]
[area_with_strategy]
[area_with_strategy_output]
-
-[heading Available Strategies]
-\* [link geometry.reference.strategies.strategy_area_surveyor Surveyor (cartesian)]
-\* [link geometry.reference.strategies.strategy_area_spherical Spherical]
-[/link geometry.reference.strategies.strategy_area_geographic Geographic]
}
*/
template <typename Geometry, typename Strategy>
-inline typename Strategy::return_type area(
- Geometry const& geometry, Strategy const& strategy)
+inline typename area_result<Geometry, Strategy>::type
+area(Geometry const& geometry, Strategy const& strategy)
{
concepts::check<Geometry const>();
diff --git a/boost/geometry/algorithms/convert.hpp b/boost/geometry/algorithms/convert.hpp
index 6a8ba1acb6..6ccaa0dd4b 100644
--- a/boost/geometry/algorithms/convert.hpp
+++ b/boost/geometry/algorithms/convert.hpp
@@ -5,6 +5,10 @@
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
@@ -29,10 +33,8 @@
#include <boost/geometry/arithmetic/arithmetic.hpp>
#include <boost/geometry/algorithms/not_implemented.hpp>
-#include <boost/geometry/algorithms/append.hpp>
#include <boost/geometry/algorithms/clear.hpp>
#include <boost/geometry/algorithms/for_each.hpp>
-#include <boost/geometry/algorithms/detail/assign_values.hpp>
#include <boost/geometry/algorithms/detail/assign_box_corners.hpp>
#include <boost/geometry/algorithms/detail/assign_indexed_point.hpp>
#include <boost/geometry/algorithms/detail/convert_point_to_point.hpp>
@@ -153,8 +155,24 @@ struct range_to_range
geometry::closure<Range1>::value
>::type view_type;
+ struct default_policy
+ {
+ template <typename Point1, typename Point2>
+ static inline void apply(Point1 const& point1, Point2 & point2)
+ {
+ geometry::detail::conversion::convert_point_to_point(point1, point2);
+ }
+ };
+
static inline void apply(Range1 const& source, Range2& destination)
{
+ apply(source, destination, default_policy());
+ }
+
+ template <typename ConvertPointPolicy>
+ static inline ConvertPointPolicy apply(Range1 const& source, Range2& destination,
+ ConvertPointPolicy convert_point)
+ {
geometry::clear(destination);
rview_type rview(source);
@@ -179,8 +197,12 @@ struct range_to_range
it != boost::end(view) && i < n;
++it, ++i)
{
- geometry::append(destination, *it);
+ typename boost::range_value<Range2>::type point;
+ convert_point.apply(*it, point);
+ range::push_back(destination, point);
}
+
+ return convert_point;
}
};
diff --git a/boost/geometry/algorithms/correct.hpp b/boost/geometry/algorithms/correct.hpp
index 07e012fafa..21b9977ce5 100644
--- a/boost/geometry/algorithms/correct.hpp
+++ b/boost/geometry/algorithms/correct.hpp
@@ -3,7 +3,7 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
-// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2014-2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2017.
// Modifications copyright (c) 2017 Oracle and/or its affiliates.
@@ -144,7 +144,7 @@ struct correct_ring
detail::correct_closure::close_or_open_ring<Ring>::apply(r);
// Check area
- typedef typename Strategy::return_type area_result_type;
+ typedef typename area_result<Ring, Strategy>::type area_result_type;
Predicate<area_result_type> predicate;
area_result_type const zero = 0;
if (predicate(ring_area_type::apply(r, strategy), zero))
@@ -322,8 +322,7 @@ inline void correct(Geometry& geometry)
typedef typename strategy::area::services::default_strategy
<
- typename cs_tag<point_type>::type,
- point_type
+ typename cs_tag<point_type>::type
>::type strategy_type;
resolve_variant::correct<Geometry>::apply(geometry, strategy_type());
diff --git a/boost/geometry/algorithms/densify.hpp b/boost/geometry/algorithms/densify.hpp
new file mode 100644
index 0000000000..ed948b3464
--- /dev/null
+++ b/boost/geometry/algorithms/densify.hpp
@@ -0,0 +1,425 @@
+// Boost.Geometry
+
+// Copyright (c) 2017-2018, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_GEOMETRY_ALGORITHMS_DENSIFY_HPP
+#define BOOST_GEOMETRY_ALGORITHMS_DENSIFY_HPP
+
+
+#include <boost/geometry/algorithms/clear.hpp>
+#include <boost/geometry/algorithms/detail/convert_point_to_point.hpp>
+#include <boost/geometry/algorithms/not_implemented.hpp>
+#include <boost/geometry/core/closure.hpp>
+#include <boost/geometry/core/exception.hpp>
+#include <boost/geometry/core/point_type.hpp>
+#include <boost/geometry/core/tag.hpp>
+#include <boost/geometry/core/tags.hpp>
+#include <boost/geometry/strategies/default_strategy.hpp>
+#include <boost/geometry/strategies/densify.hpp>
+#include <boost/geometry/util/condition.hpp>
+#include <boost/geometry/util/range.hpp>
+
+#include <boost/range/size.hpp>
+#include <boost/range/value_type.hpp>
+
+#include <boost/throw_exception.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail { namespace densify
+{
+
+template <typename Range>
+struct push_back_policy
+{
+ typedef typename boost::range_value<Range>::type point_type;
+
+ inline explicit push_back_policy(Range & rng)
+ : m_rng(rng)
+ {}
+
+ inline void apply(point_type const& p)
+ {
+ range::push_back(m_rng, p);
+ }
+
+private:
+ Range & m_rng;
+};
+
+template <typename Range, typename Point>
+inline void convert_and_push_back(Range & range, Point const& p)
+{
+ typename boost::range_value<Range>::type p2;
+ geometry::detail::conversion::convert_point_to_point(p, p2);
+ range::push_back(range, p2);
+}
+
+template <bool AppendLastPoint = true>
+struct densify_range
+{
+ template <typename FwdRng, typename MutRng, typename T, typename Strategy>
+ static inline void apply(FwdRng const& rng, MutRng & rng_out,
+ T const& len, Strategy const& strategy)
+ {
+ typedef typename boost::range_iterator<FwdRng const>::type iterator_t;
+ typedef typename boost::range_value<FwdRng>::type point_t;
+
+ iterator_t it = boost::begin(rng);
+ iterator_t end = boost::end(rng);
+
+ if (it == end) // empty(rng)
+ {
+ return;
+ }
+
+ push_back_policy<MutRng> policy(rng_out);
+
+ iterator_t prev = it;
+ for ( ++it ; it != end ; prev = it++)
+ {
+ point_t const& p0 = *prev;
+ point_t const& p1 = *it;
+
+ convert_and_push_back(rng_out, p0);
+
+ strategy.apply(p0, p1, policy, len);
+ }
+
+ if (BOOST_GEOMETRY_CONDITION(AppendLastPoint))
+ {
+ convert_and_push_back(rng_out, *prev); // back(rng)
+ }
+ }
+};
+
+template <bool IsClosed1, bool IsClosed2> // false, X
+struct densify_ring
+{
+ template <typename Geometry, typename GeometryOut, typename T, typename Strategy>
+ static inline void apply(Geometry const& ring, GeometryOut & ring_out,
+ T const& len, Strategy const& strategy)
+ {
+ geometry::detail::densify::densify_range<true>
+ ::apply(ring, ring_out, len, strategy);
+
+ if (boost::size(ring) <= 1)
+ return;
+
+ typedef typename point_type<Geometry>::type point_t;
+ point_t const& p0 = range::back(ring);
+ point_t const& p1 = range::front(ring);
+
+ push_back_policy<GeometryOut> policy(ring_out);
+
+ strategy.apply(p0, p1, policy, len);
+
+ if (BOOST_GEOMETRY_CONDITION(IsClosed2))
+ {
+ convert_and_push_back(ring_out, p1);
+ }
+ }
+};
+
+template <>
+struct densify_ring<true, true>
+ : densify_range<true>
+{};
+
+template <>
+struct densify_ring<true, false>
+ : densify_range<false>
+{};
+
+
+}} // namespace detail::densify
+#endif // DOXYGEN_NO_DETAIL
+
+
+#ifndef DOXYGEN_NO_DISPATCH
+namespace dispatch
+{
+
+
+template
+<
+ typename Geometry,
+ typename GeometryOut,
+ typename Tag1 = typename tag<Geometry>::type,
+ typename Tag2 = typename tag<GeometryOut>::type
+>
+struct densify
+ : not_implemented<Tag1, Tag2>
+{};
+
+template <typename Geometry, typename GeometryOut>
+struct densify<Geometry, GeometryOut, linestring_tag, linestring_tag>
+ : geometry::detail::densify::densify_range<>
+{};
+
+template <typename Geometry, typename GeometryOut>
+struct densify<Geometry, GeometryOut, multi_linestring_tag, multi_linestring_tag>
+{
+ template <typename T, typename Strategy>
+ static void apply(Geometry const& mls, GeometryOut & mls_out,
+ T const& len, Strategy const& strategy)
+ {
+ std::size_t count = boost::size(mls);
+ range::resize(mls_out, count);
+
+ for (std::size_t i = 0 ; i < count ; ++i)
+ {
+ geometry::detail::densify::densify_range<>
+ ::apply(range::at(mls, i), range::at(mls_out, i),
+ len, strategy);
+ }
+ }
+};
+
+template <typename Geometry, typename GeometryOut>
+struct densify<Geometry, GeometryOut, ring_tag, ring_tag>
+ : geometry::detail::densify::densify_ring
+ <
+ geometry::closure<Geometry>::value != geometry::open,
+ geometry::closure<GeometryOut>::value != geometry::open
+ >
+{};
+
+template <typename Geometry, typename GeometryOut>
+struct densify<Geometry, GeometryOut, polygon_tag, polygon_tag>
+{
+ template <typename T, typename Strategy>
+ static void apply(Geometry const& poly, GeometryOut & poly_out,
+ T const& len, Strategy const& strategy)
+ {
+ apply_ring(exterior_ring(poly), exterior_ring(poly_out),
+ len, strategy);
+
+ std::size_t count = boost::size(interior_rings(poly));
+ range::resize(interior_rings(poly_out), count);
+
+ for (std::size_t i = 0 ; i < count ; ++i)
+ {
+ apply_ring(range::at(interior_rings(poly), i),
+ range::at(interior_rings(poly_out), i),
+ len, strategy);
+ }
+ }
+
+ template <typename Ring, typename RingOut, typename T, typename Strategy>
+ static void apply_ring(Ring const& ring, RingOut & ring_out,
+ T const& len, Strategy const& strategy)
+ {
+ densify<Ring, RingOut, ring_tag, ring_tag>
+ ::apply(ring, ring_out, len, strategy);
+ }
+};
+
+template <typename Geometry, typename GeometryOut>
+struct densify<Geometry, GeometryOut, multi_polygon_tag, multi_polygon_tag>
+{
+ template <typename T, typename Strategy>
+ static void apply(Geometry const& mpoly, GeometryOut & mpoly_out,
+ T const& len, Strategy const& strategy)
+ {
+ std::size_t count = boost::size(mpoly);
+ range::resize(mpoly_out, count);
+
+ for (std::size_t i = 0 ; i < count ; ++i)
+ {
+ apply_poly(range::at(mpoly, i),
+ range::at(mpoly_out, i),
+ len, strategy);
+ }
+ }
+
+ template <typename Poly, typename PolyOut, typename T, typename Strategy>
+ static void apply_poly(Poly const& poly, PolyOut & poly_out,
+ T const& len, Strategy const& strategy)
+ {
+ densify<Poly, PolyOut, polygon_tag, polygon_tag>::
+ apply(poly, poly_out, len, strategy);
+ }
+};
+
+
+} // namespace dispatch
+#endif // DOXYGEN_NO_DISPATCH
+
+
+namespace resolve_strategy
+{
+
+struct densify
+{
+ template <typename Geometry, typename Distance, typename Strategy>
+ static inline void apply(Geometry const& geometry,
+ Geometry& out,
+ Distance const& max_distance,
+ Strategy const& strategy)
+ {
+ dispatch::densify<Geometry, Geometry>
+ ::apply(geometry, out, max_distance, strategy);
+ }
+
+ template <typename Geometry, typename Distance>
+ static inline void apply(Geometry const& geometry,
+ Geometry& out,
+ Distance const& max_distance,
+ default_strategy)
+ {
+ typedef typename strategy::densify::services::default_strategy
+ <
+ typename cs_tag<Geometry>::type
+ >::type strategy_type;
+
+ /*BOOST_CONCEPT_ASSERT(
+ (concepts::DensifyStrategy<strategy_type>)
+ );*/
+
+ apply(geometry, out, max_distance, strategy_type());
+ }
+};
+
+} // namespace resolve_strategy
+
+
+namespace resolve_variant {
+
+template <typename Geometry>
+struct densify
+{
+ template <typename Distance, typename Strategy>
+ static inline void apply(Geometry const& geometry,
+ Geometry& out,
+ Distance const& max_distance,
+ Strategy const& strategy)
+ {
+ resolve_strategy::densify::apply(geometry, out, max_distance, strategy);
+ }
+};
+
+template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
+struct densify<boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
+{
+ template <typename Distance, typename Strategy>
+ struct visitor: boost::static_visitor<void>
+ {
+ Distance const& m_max_distance;
+ Strategy const& m_strategy;
+
+ visitor(Distance const& max_distance, Strategy const& strategy)
+ : m_max_distance(max_distance)
+ , m_strategy(strategy)
+ {}
+
+ template <typename Geometry>
+ void operator()(Geometry const& geometry, Geometry& out) const
+ {
+ densify<Geometry>::apply(geometry, out, m_max_distance, m_strategy);
+ }
+ };
+
+ template <typename Distance, typename Strategy>
+ static inline void
+ apply(boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> const& geometry,
+ boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>& out,
+ Distance const& max_distance,
+ Strategy const& strategy)
+ {
+ boost::apply_visitor(
+ visitor<Distance, Strategy>(max_distance, strategy),
+ geometry,
+ out
+ );
+ }
+};
+
+} // namespace resolve_variant
+
+
+/*!
+\brief Densify a geometry using a specified strategy
+\ingroup densify
+\tparam Geometry \tparam_geometry
+\tparam Distance A numerical distance measure
+\tparam Strategy A type fulfilling a DensifyStrategy concept
+\param geometry Input geometry, to be densified
+\param out Output geometry, densified version of the input geometry
+\param max_distance Distance threshold (in units depending on strategy)
+\param strategy Densify strategy to be used for densification
+
+\qbk{distinguish,with strategy}
+\qbk{[include reference/algorithms/densify.qbk]}
+
+\qbk{
+[heading Available Strategies]
+\* [link geometry.reference.strategies.strategy_densify_cartesian Cartesian]
+\* [link geometry.reference.strategies.strategy_densify_spherical Spherical]
+\* [link geometry.reference.strategies.strategy_densify_geographic Geographic]
+
+[heading Example]
+[densify_strategy]
+[densify_strategy_output]
+}
+*/
+template <typename Geometry, typename Distance, typename Strategy>
+inline void densify(Geometry const& geometry,
+ Geometry& out,
+ Distance const& max_distance,
+ Strategy const& strategy)
+{
+ concepts::check<Geometry>();
+
+ if (max_distance <= Distance(0))
+ {
+ BOOST_THROW_EXCEPTION(geometry::invalid_input_exception());
+ }
+
+ geometry::clear(out);
+
+ resolve_variant::densify
+ <
+ Geometry
+ >::apply(geometry, out, max_distance, strategy);
+}
+
+
+/*!
+\brief Densify a geometry
+\ingroup densify
+\tparam Geometry \tparam_geometry
+\tparam Distance A numerical distance measure
+\param geometry Input geometry, to be densified
+\param out Output geometry, densified version of the input geometry
+\param max_distance Distance threshold (in units depending on coordinate system)
+
+\qbk{[include reference/algorithms/densify.qbk]}
+
+\qbk{
+[heading Example]
+[densify]
+[densify_output]
+}
+*/
+template <typename Geometry, typename Distance>
+inline void densify(Geometry const& geometry,
+ Geometry& out,
+ Distance const& max_distance)
+{
+ densify(geometry, out, max_distance, default_strategy());
+}
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_ALGORITHMS_DENSIFY_HPP
diff --git a/boost/geometry/algorithms/detail/azimuth.hpp b/boost/geometry/algorithms/detail/azimuth.hpp
index a5863d7d24..21007778bb 100644
--- a/boost/geometry/algorithms/detail/azimuth.hpp
+++ b/boost/geometry/algorithms/detail/azimuth.hpp
@@ -15,18 +15,22 @@
#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_AZIMUTH_HPP
#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_AZIMUTH_HPP
+
+#include <boost/geometry/algorithms/not_implemented.hpp>
+
#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/core/access.hpp>
#include <boost/geometry/core/radian_access.hpp>
#include <boost/geometry/core/tags.hpp>
-#include <boost/geometry/util/math.hpp>
-
-#include <boost/geometry/algorithms/not_implemented.hpp>
-
#include <boost/geometry/formulas/spherical.hpp>
#include <boost/geometry/formulas/vincenty_inverse.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
+
+#include <boost/geometry/util/math.hpp>
+
+
namespace boost { namespace geometry
{
diff --git a/boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp b/boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp
index 990081a86c..a969b21cfb 100644
--- a/boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp
+++ b/boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp
@@ -41,10 +41,6 @@
#include <boost/geometry/views/detail/normalized_view.hpp>
-#if defined(BOOST_GEOMETRY_BUFFER_SIMPLIFY_WITH_AX)
-#include <boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp>
-#endif
-
namespace boost { namespace geometry
{
@@ -67,45 +63,21 @@ inline void simplify_input(Range const& range,
// sensitive to small scale input features, however the result will
// look better.
// It also gets rid of duplicate points
-#if ! defined(BOOST_GEOMETRY_BUFFER_SIMPLIFY_WITH_AX)
- geometry::simplify(range, simplified, distance.simplify_distance());
-#else
- typedef typename boost::range_value<Range>::type point_type;
- typedef strategy::distance::detail::projected_point_ax<> ax_type;
- typedef typename strategy::distance::services::return_type
+ typedef typename geometry::point_type<Range>::type point_type;
+ typedef typename strategy::distance::services::default_strategy
<
- strategy::distance::detail::projected_point_ax<>,
- point_type,
- point_type
- >::type return_type;
-
- typedef strategy::distance::detail::projected_point_ax_less
+ point_tag, segment_tag, point_type
+ >::type ds_strategy_type;
+ typedef strategy::simplify::douglas_peucker
<
- return_type
- > comparator_type;
+ point_type, ds_strategy_type
+ > strategy_type;
+
+ geometry::detail::simplify::simplify_range<2>::apply(range,
+ simplified, distance.simplify_distance(),
+ strategy_type());
- typedef strategy::simplify::detail::douglas_peucker
- <
- point_type,
- strategy::distance::detail::projected_point_ax<>,
- comparator_type
- > dp_ax;
-
- return_type max_distance(distance.simplify_distance() * 2.0,
- distance.simplify_distance());
- comparator_type comparator(max_distance);
- dp_ax strategy(comparator);
-
- geometry::simplify(range, simplified, max_distance, strategy);
-#endif
-
- if (boost::size(simplified) == 2
- && geometry::equals(geometry::range::front(simplified),
- geometry::range::back(simplified)))
- {
- traits::resize<Range>::apply(simplified, 1);
- }
}
diff --git a/boost/geometry/algorithms/detail/buffer/buffer_policies.hpp b/boost/geometry/algorithms/detail/buffer/buffer_policies.hpp
index 92dcdcc7b0..0374b53a99 100644
--- a/boost/geometry/algorithms/detail/buffer/buffer_policies.hpp
+++ b/boost/geometry/algorithms/detail/buffer/buffer_policies.hpp
@@ -127,6 +127,10 @@ public :
void visit_traverse_reject(Turns const& , Turn const& , Operation const& ,
detail::overlay::traverse_error_type )
{}
+
+ template <typename Rings>
+ void visit_generated_rings(Rings const& )
+ {}
};
diff --git a/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp b/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp
index bc9c1ca7fb..ba824243cc 100644
--- a/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp
+++ b/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2016-2017.
// Modifications copyright (c) 2016-2017 Oracle and/or its affiliates.
@@ -155,8 +156,14 @@ struct buffered_piece_collection
robust_point_type
>::type robust_area_strategy_type;
- typedef typename area_strategy_type::return_type area_result_type;
- typedef typename robust_area_strategy_type::return_type robust_area_result_type;
+ typedef typename area_strategy_type::template result_type
+ <
+ point_type
+ >::type area_result_type;
+ typedef typename robust_area_strategy_type::template result_type
+ <
+ robust_point_type
+ >::type robust_area_result_type;
typedef typename geometry::rescale_policy_type
<
@@ -603,7 +610,11 @@ struct buffered_piece_collection
if (multi0 == multi1)
{
const deflate_properties& prop = properties[multi0];
- if (! prop.has_inflated && prop.count < 3)
+
+ // NOTE: Keep brackets around prop.count
+ // avoid gcc-bug "parse error in template argument list"
+ // GCC versions 5.4 and 5.5 (and probably more)
+ if (! prop.has_inflated && (prop.count) < 3)
{
// Property is not inflated
// Not enough points, this might be caused by <float> where
@@ -1570,10 +1581,8 @@ struct buffered_piece_collection
}
}
- // Assign parents, checking orientation but NOT discarding double
- // negative rings (negative child with negative parent)
- detail::overlay::assign_parents(offsetted_rings, traversed_rings,
- selected, m_intersection_strategy, true, false);
+ detail::overlay::assign_parents<overlay_buffer>(offsetted_rings, traversed_rings,
+ selected, m_intersection_strategy);
return detail::overlay::add_rings<GeometryOutput>(selected, offsetted_rings, traversed_rings, out,
m_area_strategy);
}
diff --git a/boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp b/boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp
index 29e49f9dae..eb6fc02c8c 100644
--- a/boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp
+++ b/boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp
@@ -36,6 +36,8 @@
#if defined(BOOST_GEOMETRY_BUFFER_USE_SIDE_OF_INTERSECTION)
#include <boost/geometry/strategies/cartesian/side_of_intersection.hpp>
+#else
+#include <boost/geometry/strategies/agnostic/point_in_poly_winding.hpp>
#endif
diff --git a/boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp b/boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp
index ccd3aa462e..8f1b33cfb2 100644
--- a/boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp
+++ b/boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp
@@ -193,6 +193,7 @@ struct distance
>
{};
+
template <typename MultiPoint, typename Linear, typename Strategy>
struct distance
<
diff --git a/boost/geometry/algorithms/detail/envelope/segment.hpp b/boost/geometry/algorithms/detail/envelope/segment.hpp
index 97f2fc84a8..06c64bafc8 100644
--- a/boost/geometry/algorithms/detail/envelope/segment.hpp
+++ b/boost/geometry/algorithms/detail/envelope/segment.hpp
@@ -27,7 +27,6 @@
#include <boost/geometry/core/coordinate_system.hpp>
#include <boost/geometry/core/coordinate_type.hpp>
#include <boost/geometry/core/cs.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/core/point_type.hpp>
#include <boost/geometry/core/radian_access.hpp>
#include <boost/geometry/core/tags.hpp>
diff --git a/boost/geometry/algorithms/detail/extreme_points.hpp b/boost/geometry/algorithms/detail/extreme_points.hpp
index 61e984ee3c..607997813c 100644
--- a/boost/geometry/algorithms/detail/extreme_points.hpp
+++ b/boost/geometry/algorithms/detail/extreme_points.hpp
@@ -3,7 +3,7 @@
// Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
-// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2013-2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2017.
// Modifications copyright (c) 2017 Oracle and/or its affiliates.
@@ -536,6 +536,24 @@ inline bool extreme_points(Geometry const& geometry,
}
+template
+<
+ std::size_t Edge,
+ typename Geometry,
+ typename Extremes,
+ typename Intruders
+>
+inline bool extreme_points(Geometry const& geometry,
+ Extremes& extremes,
+ Intruders& intruders)
+{
+ typedef typename strategy::side::services::default_strategy
+ <
+ typename cs_tag<Geometry>::type
+ >::type strategy_type;
+
+ return geometry::extreme_points<Edge>(geometry,extremes, intruders, strategy_type());
+}
}} // namespace boost::geometry
diff --git a/boost/geometry/algorithms/detail/is_valid/interface.hpp b/boost/geometry/algorithms/detail/is_valid/interface.hpp
index ee013377c4..e7f5c5783e 100644
--- a/boost/geometry/algorithms/detail/is_valid/interface.hpp
+++ b/boost/geometry/algorithms/detail/is_valid/interface.hpp
@@ -1,6 +1,6 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry
-// Copyright (c) 2014-2017, Oracle and/or its affiliates.
+// Copyright (c) 2014-2018, Oracle and/or its affiliates.
// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -18,9 +18,9 @@
#include <boost/variant/static_visitor.hpp>
#include <boost/variant/variant_fwd.hpp>
-#include <boost/geometry/geometries/concepts/check.hpp>
-
#include <boost/geometry/algorithms/dispatch/is_valid.hpp>
+#include <boost/geometry/core/cs.hpp>
+#include <boost/geometry/geometries/concepts/check.hpp>
#include <boost/geometry/policies/is_valid/default_policy.hpp>
#include <boost/geometry/policies/is_valid/failing_reason_policy.hpp>
#include <boost/geometry/policies/is_valid/failure_type_policy.hpp>
diff --git a/boost/geometry/algorithms/detail/is_valid/ring.hpp b/boost/geometry/algorithms/detail/is_valid/ring.hpp
index 0b95950430..40698155b5 100644
--- a/boost/geometry/algorithms/detail/is_valid/ring.hpp
+++ b/boost/geometry/algorithms/detail/is_valid/ring.hpp
@@ -1,5 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
// Copyright (c) 2014-2017, Oracle and/or its affiliates.
// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
@@ -107,8 +109,6 @@ struct is_properly_oriented
{
boost::ignore_unused(visitor);
- typedef typename point_type<Ring>::type point_type;
-
typedef detail::area::ring_area
<
order_as_direction<geometry::point_order<Ring>::value>::value,
@@ -117,8 +117,8 @@ struct is_properly_oriented
typedef typename Strategy::template area_strategy
<
- point_type
- >::type::return_type area_result_type;
+ Ring
+ >::type::template result_type<Ring>::type area_result_type;
typename ring_area_predicate
<
@@ -129,7 +129,7 @@ struct is_properly_oriented
area_result_type const zero = 0;
area_result_type const area
= ring_area_type::apply(ring,
- strategy.template get_area_strategy<point_type>());
+ strategy.template get_area_strategy<Ring>());
if (predicate(area, zero))
{
return visitor.template apply<no_failure>();
diff --git a/boost/geometry/algorithms/detail/overlay/add_rings.hpp b/boost/geometry/algorithms/detail/overlay/add_rings.hpp
index f64eb0b069..242e30cbcb 100644
--- a/boost/geometry/algorithms/detail/overlay/add_rings.hpp
+++ b/boost/geometry/algorithms/detail/overlay/add_rings.hpp
@@ -1,6 +1,12 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
@@ -10,8 +16,10 @@
#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_ADD_RINGS_HPP
#include <boost/range.hpp>
+#include <boost/throw_exception.hpp>
#include <boost/geometry/core/closure.hpp>
+#include <boost/geometry/core/exception.hpp>
#include <boost/geometry/algorithms/area.hpp>
#include <boost/geometry/algorithms/detail/overlay/convert_ring.hpp>
#include <boost/geometry/algorithms/detail/overlay/get_ring.hpp>
@@ -87,7 +95,10 @@ inline OutputIterator add_rings(SelectionMap const& map,
add_rings_error_handling error_handling = add_rings_ignore_unordered)
{
typedef typename SelectionMap::const_iterator iterator;
- typedef typename AreaStrategy::return_type area_type;
+ typedef typename AreaStrategy::template result_type
+ <
+ GeometryOut
+ >::type area_type;
area_type const zero = 0;
std::size_t const min_num_points = core_detail::closure::minimum_ring_size
diff --git a/boost/geometry/algorithms/detail/overlay/aggregate_operations.hpp b/boost/geometry/algorithms/detail/overlay/aggregate_operations.hpp
deleted file mode 100644
index 3f2aea1b1d..0000000000
--- a/boost/geometry/algorithms/detail/overlay/aggregate_operations.hpp
+++ /dev/null
@@ -1,256 +0,0 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
-
-// Copyright (c) 2016 Barend Gehrels, Amsterdam, the Netherlands.
-
-// 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)
-
-#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_AGGREGATE_OPERATIONS_HPP
-#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_AGGREGATE_OPERATIONS_HPP
-
-#include <set>
-
-#include <boost/geometry/algorithms/detail/overlay/sort_by_side.hpp>
-
-namespace boost { namespace geometry
-{
-
-#ifndef DOXYGEN_NO_DETAIL
-namespace detail { namespace overlay { namespace sort_by_side
-{
-
-struct ring_with_direction
-{
- ring_identifier ring_id;
- direction_type direction;
-
- signed_size_type turn_index;
- int operation_index;
- operation_type operation;
- signed_size_type region_id;
- bool isolated;
-
- inline bool operator<(ring_with_direction const& other) const
- {
- return this->ring_id != other.ring_id
- ? this->ring_id < other.ring_id
- : this->direction < other.direction;
- }
-
- ring_with_direction()
- : direction(dir_unknown)
- , turn_index(-1)
- , operation_index(0)
- , operation(operation_none)
- , region_id(-1)
- , isolated(false)
- {}
-};
-
-struct rank_with_rings
-{
- // Define a set having a ring, with its direction (from/to). Each ring
- // arrive at / leaves a cluster only once. TODO: this is not true for
- // invalid ring. The rank needs to be considered too.
- typedef std::set<ring_with_direction> container_type;
- std::size_t rank;
- container_type rings;
-
- rank_with_rings()
- : rank(0)
- {
- }
-
- inline bool all_equal(direction_type dir_type) const
- {
- for (container_type::const_iterator it = rings.begin();
- it != rings.end(); ++it)
- {
- if (it->direction != dir_type)
- {
- return false;
- }
- }
- return true;
- }
-
- inline bool all_to() const
- {
- return all_equal(sort_by_side::dir_to);
- }
-
- inline bool all_from() const
- {
- return all_equal(sort_by_side::dir_from);
- }
-
- inline bool has_only(operation_type op) const
- {
- for (container_type::const_iterator it = rings.begin();
- it != rings.end(); ++it)
- {
- const ring_with_direction& rwd = *it;
- if (rwd.operation != op)
- {
- return false;
- }
- }
- return true;
- }
-
- //! Check if set has both op1 and op2, but no others
- inline bool has_only_both(operation_type op1, operation_type op2) const
- {
- bool has1 = false;
- bool has2 = false;
- for (container_type::const_iterator it = rings.begin();
- it != rings.end(); ++it)
- {
- const ring_with_direction& rwd = *it;
-
- if (rwd.operation == op1) { has1 = true; }
- else if (rwd.operation == op2) { has2 = true; }
- else { return false; }
- }
- return has1 && has2;
- }
-
- inline bool is_isolated() const
- {
- for (container_type::const_iterator it = rings.begin();
- it != rings.end(); ++it)
- {
- const ring_with_direction& rwd = *it;
- if (! rwd.isolated)
- {
- return false;
- }
- }
- return true;
- }
-
- inline bool has_unique_region_id() const
- {
- signed_size_type region_id = -1;
- for (container_type::const_iterator it = rings.begin();
- it != rings.end(); ++it)
- {
- const ring_with_direction& rwd = *it;
- if (region_id == -1)
- {
- region_id = rwd.region_id;
- }
- else if (rwd.region_id != region_id)
- {
- return false;
- }
- }
- return true;
- }
-
- inline signed_size_type region_id() const
- {
- signed_size_type region_id = -1;
- for (container_type::const_iterator it = rings.begin();
- it != rings.end(); ++it)
- {
- const ring_with_direction& rwd = *it;
- if (region_id == -1)
- {
- region_id = rwd.region_id;
- }
- else if (rwd.region_id != region_id)
- {
- return -1;
- }
- }
- return region_id;
- }
-
- template <typename Turns>
- inline bool traversable(Turns const& turns) const
- {
- typedef typename boost::range_value<Turns>::type turn_type;
- typedef typename turn_type::turn_operation_type turn_operation_type;
-
- for (container_type::const_iterator it = rings.begin();
- it != rings.end(); ++it)
- {
- const ring_with_direction& rwd = *it;
- turn_type const& turn = turns[rwd.turn_index];
- turn_operation_type const& op = turn.operations[rwd.operation_index];
-
- // TODO: this is still necessary, but makes it order-dependent
- // which should not be done.
-
- // This would obsolete the whole function and should be solved
- // in a different way
- if (op.visited.finalized() || op.visited.visited())
- {
- return false;
- }
- }
- return true;
- }
-
-};
-
-template <typename Sbs, typename Turns>
-inline void aggregate_operations(Sbs const& sbs, std::vector<rank_with_rings>& aggregation,
- Turns const& turns,
- operation_type target_operation)
-{
- typedef typename boost::range_value<Turns>::type turn_type;
- typedef typename turn_type::turn_operation_type turn_operation_type;
-
- aggregation.clear();
- for (std::size_t i = 0; i < sbs.m_ranked_points.size(); i++)
- {
- typename Sbs::rp const& ranked_point = sbs.m_ranked_points[i];
-
- turn_type const& turn = turns[ranked_point.turn_index];
-
- turn_operation_type const& op = turn.operations[ranked_point.operation_index];
-
- if (! ((target_operation == operation_union && ranked_point.rank == 0)
- || op.operation == target_operation
- || op.operation == operation_continue
- || (op.operation == operation_blocked && ranked_point.direction == dir_from)))
- {
- // Always take rank 0 (because self-turns are blocked)
- // Don't consider union/blocked (aggregate is only used for intersections)
- // Blocked is allowed for from
- continue;
- }
-
- if (aggregation.empty() || aggregation.back().rank != ranked_point.rank)
- {
- rank_with_rings current;
- current.rank = ranked_point.rank;
- aggregation.push_back(current);
- }
-
- ring_with_direction rwd;
- segment_identifier const& sid = ranked_point.seg_id;
-
- rwd.ring_id = ring_identifier(sid.source_index, sid.multi_index, sid.ring_index);
- rwd.direction = ranked_point.direction;
- rwd.turn_index = ranked_point.turn_index;
- rwd.operation_index = ranked_point.operation_index;
- rwd.operation = op.operation;
- rwd.region_id = op.enriched.region_id;
- rwd.isolated = op.enriched.isolated;
-
- aggregation.back().rings.insert(rwd);
- }
-}
-
-
-}}} // namespace detail::overlay::sort_by_side
-#endif //DOXYGEN_NO_DETAIL
-
-
-}} // namespace boost::geometry
-
-#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_AGGREGATE_OPERATIONS_HPP
diff --git a/boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp b/boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp
index fb73840798..724996ae33 100644
--- a/boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp
+++ b/boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp
@@ -102,6 +102,43 @@ inline void append_no_dups_or_spikes(Range& range, Point const& point,
}
}
+template <typename Range, typename Point, typename SideStrategy, typename RobustPolicy>
+inline void append_no_collinear(Range& range, Point const& point,
+ SideStrategy const& strategy,
+ RobustPolicy const& robust_policy)
+{
+ // Stricter version, not allowing any point in a linear row
+ // (spike, continuation or same point)
+
+ // The code below this condition checks all spikes/dups
+ // for geometries >= 3 points.
+ // So we have to check the first potential duplicate differently
+ if (boost::size(range) == 1
+ && points_equal_or_close(*(boost::begin(range)), point, robust_policy))
+ {
+ return;
+ }
+
+ traits::push_back<Range>::apply(range, point);
+
+ // If a point is equal, or forming a spike, remove the pen-ultimate point
+ // because this one caused the spike.
+ // If so, the now-new-pen-ultimate point can again cause a spike
+ // (possibly at a corner). So keep doing this.
+ // Besides spikes it will also avoid adding duplicates.
+ while(boost::size(range) >= 3
+ && point_is_collinear(point,
+ *(boost::end(range) - 3),
+ *(boost::end(range) - 2),
+ strategy,
+ robust_policy))
+ {
+ // Use the Concept/traits, so resize and append again
+ traits::resize<Range>::apply(range, boost::size(range) - 2);
+ traits::push_back<Range>::apply(range, point);
+ }
+}
+
template <typename Range, typename SideStrategy, typename RobustPolicy>
inline void clean_closing_dups_and_spikes(Range& range,
SideStrategy const& strategy,
@@ -137,8 +174,8 @@ inline void clean_closing_dups_and_spikes(Range& range,
}
// Check if closing point is a spike (this is so if the second point is
- // considered as a spike w.r.t. the last segment)
- if (point_is_spike_or_equal(*second, *ultimate, *first, strategy, robust_policy))
+ // considered as collinear w.r.t. the last segment)
+ if (point_is_collinear(*second, *ultimate, *first, strategy, robust_policy))
{
range::erase(range, first);
if (BOOST_GEOMETRY_CONDITION(closed))
diff --git a/boost/geometry/algorithms/detail/overlay/assign_parents.hpp b/boost/geometry/algorithms/detail/overlay/assign_parents.hpp
index c8ce651007..3be5393486 100644
--- a/boost/geometry/algorithms/detail/overlay/assign_parents.hpp
+++ b/boost/geometry/algorithms/detail/overlay/assign_parents.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2017.
// Modifications copyright (c) 2017 Oracle and/or its affiliates.
@@ -210,10 +211,9 @@ struct assign_visitor
};
-
-
template
<
+ overlay_type OverlayType,
typename Geometry1, typename Geometry2,
typename RingCollection,
typename RingMap,
@@ -223,10 +223,13 @@ inline void assign_parents(Geometry1 const& geometry1,
Geometry2 const& geometry2,
RingCollection const& collection,
RingMap& ring_map,
- Strategy const& strategy,
- bool check_for_orientation = false,
- bool discard_double_negative = false)
+ Strategy const& strategy)
{
+ static bool const is_difference = OverlayType == overlay_difference;
+ static bool const is_buffer = OverlayType == overlay_buffer;
+ static bool const is_dissolve = OverlayType == overlay_dissolve;
+ static bool const check_for_orientation = is_buffer || is_dissolve;
+
typedef typename geometry::tag<Geometry1>::type tag1;
typedef typename geometry::tag<Geometry2>::type tag2;
@@ -236,7 +239,7 @@ inline void assign_parents(Geometry1 const& geometry1,
typedef typename Strategy::template area_strategy
<
point_type
- >::type::return_type area_result_type;
+ >::type::template result_type<point_type>::type area_result_type;
typedef typename RingMap::iterator map_iterator_type;
@@ -293,12 +296,14 @@ inline void assign_parents(Geometry1 const& geometry1,
return;
}
- if (count_positive == 1)
+ if (count_positive == 1 && ! is_difference && ! is_dissolve)
{
// Optimization for one outer ring
// -> assign this as parent to all others (all interior rings)
// In unions, this is probably the most occuring case and gives
// a dramatic improvement (factor 5 for star_comb testcase)
+ // In difference or other cases where interior rings might be
+ // located outside the outer ring, this cannot be done
ring_identifier id_of_positive = vector[index_positive].id;
ring_info_type& outer = ring_map[id_of_positive];
index = 0;
@@ -346,13 +351,13 @@ inline void assign_parents(Geometry1 const& geometry1,
bool const pos = math::larger(info.get_area(), 0);
bool const parent_pos = math::larger(parent.area, 0);
- bool const double_neg = discard_double_negative && ! pos && ! parent_pos;
+ bool const double_neg = is_dissolve && ! pos && ! parent_pos;
if ((pos && parent_pos) || double_neg)
{
// Discard positive inner ring with positive parent
// Also, for some cases (dissolve), negative inner ring
- // with negative parent shouild be discarded
+ // with negative parent should be discarded
info.discarded = true;
}
@@ -386,6 +391,7 @@ inline void assign_parents(Geometry1 const& geometry1,
// Version for one geometry (called by buffer/dissolve)
template
<
+ overlay_type OverlayType,
typename Geometry,
typename RingCollection,
typename RingMap,
@@ -394,16 +400,13 @@ template
inline void assign_parents(Geometry const& geometry,
RingCollection const& collection,
RingMap& ring_map,
- Strategy const& strategy,
- bool check_for_orientation,
- bool discard_double_negative)
+ Strategy const& strategy)
{
// Call it with an empty geometry as second geometry (source_id == 1)
// (ring_map should be empty for source_id==1)
-
Geometry empty;
- assign_parents(geometry, empty, collection, ring_map, strategy,
- check_for_orientation, discard_double_negative);
+ assign_parents<OverlayType>(geometry, empty,
+ collection, ring_map, strategy);
}
diff --git a/boost/geometry/algorithms/detail/overlay/cluster_info.hpp b/boost/geometry/algorithms/detail/overlay/cluster_info.hpp
index 5b460919f1..19343488f3 100644
--- a/boost/geometry/algorithms/detail/overlay/cluster_info.hpp
+++ b/boost/geometry/algorithms/detail/overlay/cluster_info.hpp
@@ -26,14 +26,11 @@ struct cluster_info
{
std::set<signed_size_type> turn_indices;
- bool switch_source; // For clusters with a touch, conform turn_info uu
-
//! Number of open spaces (e.g. 2 for touch)
std::size_t open_count;
inline cluster_info()
- : switch_source(false)
- , open_count(0)
+ : open_count(0)
{}
};
diff --git a/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp b/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp
index e25445651a..a35be052a0 100644
--- a/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp
+++ b/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2017.
// Modifications copyright (c) 2017 Oracle and/or its affiliates.
@@ -51,6 +52,21 @@ namespace boost { namespace geometry
namespace detail { namespace overlay
{
+template <typename Turns>
+struct discarded_turn
+{
+ discarded_turn(Turns const& turns)
+ : m_turns(turns)
+ {}
+
+ template <typename IndexedTurn>
+ inline bool operator()(IndexedTurn const& indexed) const
+ {
+ return m_turns[indexed.turn_index].discarded;
+ }
+
+ Turns const& m_turns;
+};
// Sorts IP-s of this ring on segment-identifier, and if on same segment,
// on distance.
@@ -68,7 +84,6 @@ template
>
inline void enrich_sort(Operations& operations,
Turns const& turns,
- operation_type for_operation,
Geometry1 const& geometry1,
Geometry2 const& geometry2,
RobustPolicy const& robust_policy,
@@ -84,12 +99,13 @@ inline void enrich_sort(Operations& operations,
RobustPolicy,
SideStrategy,
Reverse1, Reverse2
- >(turns, for_operation, geometry1, geometry2, robust_policy, strategy));
+ >(turns, geometry1, geometry2, robust_policy, strategy));
}
template <typename Operations, typename Turns>
-inline void enrich_assign(Operations& operations, Turns& turns)
+inline void enrich_assign(Operations& operations, Turns& turns,
+ bool check_turns)
{
typedef typename boost::range_value<Turns>::type turn_type;
typedef typename turn_type::turn_operation_type op_type;
@@ -110,14 +126,17 @@ inline void enrich_assign(Operations& operations, Turns& turns)
turn_type& turn = turns[it->turn_index];
op_type& op = turn.operations[it->operation_index];
- // Normal behaviour: next should point at next turn:
- if (it->turn_index == next->turn_index)
+ if (check_turns && it->turn_index == next->turn_index)
{
+ // Normal behaviour: next points at next turn, increase next.
+ // For dissolve this should not be done, turn_index is often
+ // the same for two consecutive operations
++next;
}
// Cluster behaviour: next should point after cluster, unless
// their seg_ids are not the same
+ // (For dissolve, this is still to be examined - TODO)
while (turn.is_clustered()
&& it->turn_index != next->turn_index
&& turn.cluster_id == turns[next->turn_index].cluster_id
@@ -142,6 +161,11 @@ inline void enrich_assign(Operations& operations, Turns& turns)
// (this is one not circular therefore fraction is considered)
op.enriched.next_ip_index = static_cast<signed_size_type>(next->turn_index);
}
+
+ if (! check_turns)
+ {
+ ++next;
+ }
}
}
@@ -176,6 +200,82 @@ inline void enrich_assign(Operations& operations, Turns& turns)
}
+template <typename Operations, typename Turns>
+inline void enrich_adapt(Operations& operations, Turns& turns)
+{
+ typedef typename boost::range_value<Turns>::type turn_type;
+ typedef typename turn_type::turn_operation_type op_type;
+ typedef typename boost::range_value<Operations>::type indexed_turn_type;
+
+ if (operations.size() < 3)
+ {
+ // If it is empty, or contains one or two turns, it makes no sense
+ return;
+ }
+
+ // Operations is a vector of indexed_turn_operation<>
+
+ // Last index:
+ std::size_t const x = operations.size() - 1;
+ bool next_phase = false;
+
+ for (std::size_t i = 0; i < operations.size(); i++)
+ {
+ indexed_turn_type const& indexed = operations[i];
+
+ turn_type& turn = turns[indexed.turn_index];
+ op_type& op = turn.operations[indexed.operation_index];
+
+ // Previous/next index
+ std::size_t const p = i > 0 ? i - 1 : x;
+ std::size_t const n = i < x ? i + 1 : 0;
+
+ turn_type const& next_turn = turns[operations[n].turn_index];
+ op_type const& next_op = next_turn.operations[operations[n].operation_index];
+
+ if (op.seg_id.segment_index == next_op.seg_id.segment_index)
+ {
+ turn_type const& prev_turn = turns[operations[p].turn_index];
+ op_type const& prev_op = prev_turn.operations[operations[p].operation_index];
+ if (op.seg_id.segment_index == prev_op.seg_id.segment_index)
+ {
+ op.enriched.startable = false;
+ next_phase = true;
+ }
+ }
+ }
+
+ if (! next_phase)
+ {
+ return;
+ }
+
+ // Discard turns which are both non-startable
+ next_phase = false;
+ for (typename boost::range_iterator<Turns>::type
+ it = boost::begin(turns);
+ it != boost::end(turns);
+ ++it)
+ {
+ turn_type& turn = *it;
+ if (! turn.operations[0].enriched.startable
+ && ! turn.operations[1].enriched.startable)
+ {
+ turn.discarded = true;
+ next_phase = true;
+ }
+ }
+
+ if (! next_phase)
+ {
+ return;
+ }
+
+ // Remove discarded turns from operations to avoid having them as next turn
+ discarded_turn<Turns> const predicate(turns);
+ operations.erase(std::remove_if(boost::begin(operations),
+ boost::end(operations), predicate), boost::end(operations));
+}
template <typename Turns, typename MappedVector>
inline void create_map(Turns const& turns, MappedVector& mapped_vector)
@@ -255,8 +355,8 @@ inline void calculate_remaining_distance(Turns& turns)
continue;
}
- int const to_index0 = op0.enriched.get_next_turn_index();
- int const to_index1 = op1.enriched.get_next_turn_index();
+ signed_size_type const to_index0 = op0.enriched.get_next_turn_index();
+ signed_size_type const to_index1 = op1.enriched.get_next_turn_index();
if (to_index0 >= 0
&& to_index1 >= 0
&& to_index0 != to_index1)
@@ -311,6 +411,7 @@ inline void enrich_intersection_points(Turns& turns,
= target_operation == detail::overlay::operation_union
? detail::overlay::operation_intersection
: detail::overlay::operation_union;
+ static const bool is_dissolve = OverlayType == overlay_dissolve;
typedef typename boost::range_value<Turns>::type turn_type;
typedef typename turn_type::turn_operation_type op_type;
@@ -338,31 +439,25 @@ inline void enrich_intersection_points(Turns& turns,
{
turn_type& turn = *it;
- if (turn.both(detail::overlay::operation_none))
- {
- turn.discarded = true;
- continue;
- }
-
- if (turn.both(opposite_operation))
+ if (turn.both(detail::overlay::operation_none)
+ || turn.both(opposite_operation)
+ || (detail::overlay::is_self_turn<OverlayType>(turn)
+ && ! turn.is_clustered()
+ && ! turn.both(target_operation)))
{
// For intersections, remove uu to avoid the need to travel
// a union (during intersection) in uu/cc clusters (e.g. #31,#32,#33)
- // Also, for union, discard ii
+
+ // Similarly, for union, discard ii
+
+ // Only keep self-uu-turns or self-ii-turns
+
+ // Blocked (or combination with blocked is still needed for difference)
turn.discarded = true;
turn.cluster_id = -1;
continue;
}
- if (detail::overlay::is_self_turn<OverlayType>(turn)
- && ! turn.is_clustered()
- && ! turn.both(target_operation))
- {
- // Only keep self-uu-turns or self-ii-turns
- turn.discarded = true;
- continue;
- }
-
if (! turn.discarded
&& turn.both(detail::overlay::operation_continue))
{
@@ -370,16 +465,19 @@ inline void enrich_intersection_points(Turns& turns,
}
}
- detail::overlay::discard_closed_turns
- <
- OverlayType,
- target_operation
- >::apply(turns, clusters, geometry1, geometry2);
- detail::overlay::discard_open_turns
- <
- OverlayType,
- target_operation
- >::apply(turns, clusters, geometry1, geometry2);
+ if (! is_dissolve)
+ {
+ detail::overlay::discard_closed_turns
+ <
+ OverlayType,
+ target_operation
+ >::apply(turns, clusters, geometry1, geometry2);
+ detail::overlay::discard_open_turns
+ <
+ OverlayType,
+ target_operation
+ >::apply(turns, clusters, geometry1, geometry2);
+ }
// Create a map of vectors of indexed operation-types to be able
// to sort intersection points PER RING
@@ -399,7 +497,7 @@ inline void enrich_intersection_points(Turns& turns,
<< mit->first << std::endl;
#endif
detail::overlay::enrich_sort<Reverse1, Reverse2>(
- mit->second, turns, target_operation,
+ mit->second, turns,
geometry1, geometry2,
robust_policy, strategy);
}
@@ -413,11 +511,13 @@ inline void enrich_intersection_points(Turns& turns,
std::cout << "ENRICH-assign Ring "
<< mit->first << std::endl;
#endif
- detail::overlay::enrich_assign(mit->second, turns);
- }
+ if (is_dissolve)
+ {
+ detail::overlay::enrich_adapt(mit->second, turns);
+ }
- // Check some specific type of self-turns (after getting enriched info)
- detail::overlay::discard_self_turns_which_loop<OverlayType>(turns);
+ detail::overlay::enrich_assign(mit->second, turns, ! is_dissolve);
+ }
if (has_colocations)
{
diff --git a/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp b/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp
index fdffd665e4..e01c13f749 100644
--- a/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp
+++ b/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp
@@ -35,6 +35,7 @@ struct enrichment_info
, travels_to_ip_index(-1)
, next_ip_index(-1)
, startable(true)
+ , prefer_start(true)
, count_left(0)
, count_right(0)
, rank(-1)
@@ -60,6 +61,7 @@ struct enrichment_info
signed_size_type next_ip_index;
bool startable; // Can be used to start in traverse
+ bool prefer_start; // Is preferred as starting point (if true)
// Counts if polygons left/right of this operation
std::size_t count_left;
diff --git a/boost/geometry/algorithms/detail/overlay/follow.hpp b/boost/geometry/algorithms/detail/overlay/follow.hpp
index 4a5993ea31..d948c4f670 100644
--- a/boost/geometry/algorithms/detail/overlay/follow.hpp
+++ b/boost/geometry/algorithms/detail/overlay/follow.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2014, 2017.
// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
@@ -59,7 +60,7 @@ template
typename Polygon,
typename PtInPolyStrategy
>
-static inline bool last_covered_by(Turn const& turn, Operation const& op,
+static inline bool last_covered_by(Turn const& /*turn*/, Operation const& op,
LineString const& linestring, Polygon const& polygon,
PtInPolyStrategy const& strategy)
{
diff --git a/boost/geometry/algorithms/detail/overlay/handle_colocations.hpp b/boost/geometry/algorithms/detail/overlay/handle_colocations.hpp
index c634fc450f..6bb30fcce5 100644
--- a/boost/geometry/algorithms/detail/overlay/handle_colocations.hpp
+++ b/boost/geometry/algorithms/detail/overlay/handle_colocations.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2017.
// Modifications copyright (c) 2017 Oracle and/or its affiliates.
@@ -30,6 +31,7 @@
#include <boost/geometry/algorithms/detail/overlay/turn_info.hpp>
#include <boost/geometry/algorithms/detail/ring_identifier.hpp>
#include <boost/geometry/algorithms/detail/overlay/segment_identifier.hpp>
+#include <boost/geometry/util/condition.hpp>
#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_COLOCATIONS)
# include <iostream>
@@ -312,17 +314,17 @@ inline void assign_cluster_to_turns(Turns& turns,
{
turn_operation_type const& op = turn.operations[i];
segment_fraction_type seg_frac(op.seg_id, op.fraction);
- typename ClusterPerSegment::const_iterator it = cluster_per_segment.find(seg_frac);
- if (it != cluster_per_segment.end())
+ typename ClusterPerSegment::const_iterator cit = cluster_per_segment.find(seg_frac);
+ if (cit != cluster_per_segment.end())
{
#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_COLOCATIONS)
if (turn.is_clustered()
- && turn.cluster_id != it->second)
+ && turn.cluster_id != cit->second)
{
std::cout << " CONFLICT " << std::endl;
}
#endif
- turn.cluster_id = it->second;
+ turn.cluster_id = cit->second;
clusters[turn.cluster_id].turn_indices.insert(turn_index);
}
}
@@ -439,7 +441,6 @@ inline bool is_ie_turn(segment_identifier const& ext_seg_0,
template
<
bool Reverse0, bool Reverse1, // Reverse interpretation interior/exterior
- overlay_type OverlayType,
typename Turns,
typename Clusters
>
@@ -552,7 +553,7 @@ template
typename Clusters
>
inline void check_colocation(bool& has_blocked,
- int cluster_id, Turns const& turns, Clusters const& clusters)
+ signed_size_type cluster_id, Turns const& turns, Clusters const& clusters)
{
typedef typename boost::range_value<Turns>::type turn_type;
@@ -598,6 +599,8 @@ template
inline bool handle_colocations(Turns& turns, Clusters& clusters,
Geometry1 const& geometry1, Geometry2 const& geometry2)
{
+ static const detail::overlay::operation_type target_operation
+ = detail::overlay::operation_from_overlay<OverlayType>::value;
typedef std::map
<
segment_identifier,
@@ -610,7 +613,7 @@ inline bool handle_colocations(Turns& turns, Clusters& clusters,
// that information can be used for the interior ring too
map_type map;
- int index = 0;
+ signed_size_type index = 0;
for (typename boost::range_iterator<Turns>::type
it = boost::begin(turns);
it != boost::end(turns);
@@ -677,12 +680,15 @@ inline bool handle_colocations(Turns& turns, Clusters& clusters,
// Get colocated information here and not later, to keep information
// on turns which are discarded afterwards
set_colocation<OverlayType>(turns, clusters);
- discard_interior_exterior_turns
- <
- do_reverse<geometry::point_order<Geometry1>::value>::value != Reverse1,
- do_reverse<geometry::point_order<Geometry2>::value>::value != Reverse2,
- OverlayType
- >(turns, clusters);
+
+ if (BOOST_GEOMETRY_CONDITION(target_operation == operation_intersection))
+ {
+ discard_interior_exterior_turns
+ <
+ do_reverse<geometry::point_order<Geometry1>::value>::value != Reverse1,
+ do_reverse<geometry::point_order<Geometry2>::value>::value != Reverse2
+ >(turns, clusters);
+ }
#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_COLOCATIONS)
std::cout << "*** Colocations " << map.size() << std::endl;
@@ -794,9 +800,7 @@ inline void gather_cluster_properties(Clusters& clusters, Turns& turns,
cinfo.open_count = sbs.open_count(for_operation);
- bool const set_startable
- = OverlayType != overlay_dissolve_union
- && OverlayType != overlay_dissolve_intersection;
+ bool const set_startable = OverlayType != overlay_dissolve;
// Unset the startable flag for all 'closed' zones. This does not
// apply for self-turns, because those counts are not from both
diff --git a/boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp b/boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp
index 9c4a3094e0..5ec2a10cf0 100644
--- a/boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp
+++ b/boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2017 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -14,6 +15,7 @@
#include <boost/geometry/algorithms/detail/overlay/cluster_info.hpp>
#include <boost/geometry/algorithms/detail/overlay/is_self_turn.hpp>
#include <boost/geometry/algorithms/detail/overlay/overlay_type.hpp>
+#include <boost/geometry/algorithms/covered_by.hpp>
#include <boost/geometry/algorithms/within.hpp>
namespace boost { namespace geometry
@@ -23,6 +25,38 @@ namespace boost { namespace geometry
namespace detail { namespace overlay
{
+template <overlay_type OverlayType>
+struct check_within
+{
+ template <typename Turn, typename Geometry0, typename Geometry1>
+ static inline
+ bool apply(Turn const& turn, Geometry0 const& geometry0,
+ Geometry1 const& geometry1)
+ {
+ // Operations 0 and 1 have the same source index in self-turns
+ return turn.operations[0].seg_id.source_index == 0
+ ? geometry::within(turn.point, geometry1)
+ : geometry::within(turn.point, geometry0);
+ }
+
+};
+
+template <>
+struct check_within<overlay_difference>
+{
+ template <typename Turn, typename Geometry0, typename Geometry1>
+ static inline
+ bool apply(Turn const& turn, Geometry0 const& geometry0,
+ Geometry1 const& geometry1)
+ {
+ // difference = intersection(a, reverse(b))
+ // therefore we should reverse the meaning of within for geometry1
+ return turn.operations[0].seg_id.source_index == 0
+ ? ! geometry::covered_by(turn.point, geometry1)
+ : geometry::within(turn.point, geometry0);
+ }
+};
+
struct discard_turns
{
template <typename Turns, typename Clusters, typename Geometry0, typename Geometry1>
@@ -41,7 +75,7 @@ struct discard_closed_turns<overlay_union, operation_union>
template <typename Turns, typename Clusters, typename Geometry0, typename Geometry1>
static inline
- void apply(Turns& turns, Clusters const& clusters,
+ void apply(Turns& turns, Clusters const& /*clusters*/,
Geometry0 const& geometry0, Geometry1 const& geometry1)
{
typedef typename boost::range_value<Turns>::type turn_type;
@@ -53,55 +87,25 @@ struct discard_closed_turns<overlay_union, operation_union>
{
turn_type& turn = *it;
- if (turn.discarded || ! is_self_turn<overlay_union>(turn))
- {
- continue;
- }
-
- bool const within =
- turn.operations[0].seg_id.source_index == 0
- ? geometry::within(turn.point, geometry1)
- : geometry::within(turn.point, geometry0);
-
- if (within)
+ if (! turn.discarded
+ && is_self_turn<overlay_union>(turn)
+ && check_within<overlay_union>::apply(turn,
+ geometry0, geometry1))
{
- // It is in the interior of the other geometry
+ // Turn is in the interior of other geometry
turn.discarded = true;
}
}
}
};
+template <overlay_type OverlayType>
struct discard_self_intersection_turns
{
private :
template <typename Turns, typename Clusters>
static inline
- bool any_blocked(signed_size_type cluster_id,
- const Turns& turns, Clusters const& clusters)
- {
- typename Clusters::const_iterator cit = clusters.find(cluster_id);
- if (cit == clusters.end())
- {
- return false;
- }
- cluster_info const& cinfo = cit->second;
- for (std::set<signed_size_type>::const_iterator it
- = cinfo.turn_indices.begin();
- it != cinfo.turn_indices.end(); ++it)
- {
- typename boost::range_value<Turns>::type const& turn = turns[*it];
- if (turn.any_blocked())
- {
- return true;
- }
- }
- return false;
- }
-
- template <typename Turns, typename Clusters>
- static inline
bool is_self_cluster(signed_size_type cluster_id,
const Turns& turns, Clusters const& clusters)
{
@@ -116,7 +120,7 @@ private :
= cinfo.turn_indices.begin();
it != cinfo.turn_indices.end(); ++it)
{
- if (! is_self_turn<overlay_intersection>(turns[*it]))
+ if (! is_self_turn<OverlayType>(turns[*it]))
{
return false;
}
@@ -125,16 +129,6 @@ private :
return true;
}
- template <typename Turn, typename Geometry0, typename Geometry1>
- static inline
- bool within(Turn const& turn, Geometry0 const& geometry0,
- Geometry1 const& geometry1)
- {
- return turn.operations[0].seg_id.source_index == 0
- ? geometry::within(turn.point, geometry1)
- : geometry::within(turn.point, geometry0);
- }
-
template <typename Turns, typename Clusters,
typename Geometry0, typename Geometry1>
static inline
@@ -144,17 +138,21 @@ private :
for (typename Clusters::const_iterator cit = clusters.begin();
cit != clusters.end(); ++cit)
{
- signed_size_type cluster_id = cit->first;
+ signed_size_type const cluster_id = cit->first;
// If there are only self-turns in the cluster, the cluster should
// be located within the other geometry, for intersection
- if (is_self_cluster(cluster_id, turns, clusters))
+ if (! cit->second.turn_indices.empty()
+ && is_self_cluster(cluster_id, turns, clusters))
{
cluster_info const& cinfo = cit->second;
- if (! within(turns[*cinfo.turn_indices.begin()], geometry0, geometry1))
+ signed_size_type const index = *cinfo.turn_indices.begin();
+ if (! check_within<OverlayType>::apply(turns[index],
+ geometry0, geometry1))
{
// Discard all turns in cluster
- for (std::set<signed_size_type>::const_iterator sit = cinfo.turn_indices.begin();
+ for (std::set<signed_size_type>::const_iterator sit
+ = cinfo.turn_indices.begin();
sit != cinfo.turn_indices.end(); ++sit)
{
turns[*sit].discarded = true;
@@ -183,109 +181,34 @@ public :
{
turn_type& turn = *it;
- if (turn.discarded || ! is_self_turn<overlay_intersection>(turn))
- {
- continue;
- }
-
- segment_identifier const& id0 = turn.operations[0].seg_id;
- segment_identifier const& id1 = turn.operations[1].seg_id;
- if (id0.multi_index != id1.multi_index
- || (id0.ring_index == -1 && id1.ring_index == -1)
- || (id0.ring_index >= 0 && id1.ring_index >= 0))
- {
- // Not an ii ring (int/ext) on same ring
- continue;
- }
-
- if (turn.is_clustered() && turn.has_colocated_both)
- {
- // Don't delete a self-ii-turn colocated with another ii-turn
- // (for example #case_recursive_boxes_70)
- // But for some cases (#case_58_iet) they should be deleted,
- // there are many self-turns there and also blocked turns there
- if (! any_blocked(turn.cluster_id, turns, clusters))
- {
- continue;
- }
- }
-
// It is a ii self-turn
// Check if it is within the other geometry
- // If not, it can be ignored
- if (! within(turn, geometry0, geometry1))
+ if (! turn.discarded
+ && is_self_turn<overlay_intersection>(turn)
+ && ! check_within<OverlayType>::apply(turn, geometry0, geometry1))
{
- // It is not within another geometry, discard the turn
- turn.discarded = true;
+ // It is not within another geometry, set it as non startable.
+ // It still might be traveled (#case_recursive_boxes_70)
+ turn.operations[0].enriched.startable = false;
+ turn.operations[1].enriched.startable = false;
}
}
}
};
+
template <overlay_type OverlayType, operation_type OperationType>
struct discard_open_turns : discard_turns {};
-// Handler it for intersection
+// Handler for intersection
template <>
struct discard_open_turns<overlay_intersection, operation_intersection>
- : discard_self_intersection_turns {};
+ : discard_self_intersection_turns<overlay_intersection> {};
-// For difference, it should be done in a different way (TODO)
-
-
-template <overlay_type OverlayType, typename Turns>
-inline void discard_self_turns_which_loop(Turns& turns)
-{
- if (operation_from_overlay<OverlayType>::value == operation_union)
- {
- // For union, self-turn i/u traveling to itself are allowed to form
- // holes. #case_recursive_boxes_37
- // TODO: this can be finetuned by inspecting the cluster too,
- // and if there are non-self-turns the polygons on their sides can
- // be checked
- return;
- }
-
- typedef typename boost::range_value<Turns>::type turn_type;
- typedef typename turn_type::turn_operation_type op_type;
-
- signed_size_type turn_index = 0;
- for (typename boost::range_iterator<Turns>::type
- it = boost::begin(turns);
- it != boost::end(turns);
- ++it, ++turn_index)
- {
- turn_type& turn = *it;
-
- if (! is_self_turn<OverlayType>(turn))
- {
- continue;
- }
- if (! turn.combination(operation_intersection, operation_union))
- {
- // ii may travel to itself
- continue;
- }
-
- for (int i = 0; i < 2; i++)
- {
- op_type& op = turn.operations[i];
-
- if (op.enriched.startable
- && op.operation == operation_intersection
- && op.enriched.get_next_turn_index() == turn_index)
- {
- // Self-turn i/u, i part traveling to itself. Discard it.
- // (alternatively it might be made unstartable - but the
- // intersection-operation may not be traveled anyway, and the
- // union-operation is not traveled at all in intersections
- // #case_recursive_boxes_77
- turn.discarded = true;
- }
- }
- }
-
-}
+// Handler for difference, with different meaning of 'within'
+template <>
+struct discard_open_turns<overlay_difference, operation_intersection>
+ : discard_self_intersection_turns<overlay_difference> {};
}} // namespace detail::overlay
#endif //DOXYGEN_NO_DETAIL
diff --git a/boost/geometry/algorithms/detail/overlay/is_self_turn.hpp b/boost/geometry/algorithms/detail/overlay/is_self_turn.hpp
index 9423a24b33..448c04404f 100644
--- a/boost/geometry/algorithms/detail/overlay/is_self_turn.hpp
+++ b/boost/geometry/algorithms/detail/overlay/is_self_turn.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2017-2017 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -34,27 +35,17 @@ template <>
struct is_self_turn_check<overlay_buffer>
{
template <typename Turn>
- static inline bool apply(Turn const& turn)
+ static inline bool apply(Turn const& /*turn*/)
{
return false;
}
};
template <>
-struct is_self_turn_check<overlay_dissolve_union>
+struct is_self_turn_check<overlay_dissolve>
{
template <typename Turn>
- static inline bool apply(Turn const& turn)
- {
- return false;
- }
-};
-
-template <>
-struct is_self_turn_check<overlay_dissolve_intersection>
-{
- template <typename Turn>
- static inline bool apply(Turn const& turn)
+ static inline bool apply(Turn const& /*turn*/)
{
return false;
}
diff --git a/boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp b/boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp
index dd30635ee2..4b8752798a 100644
--- a/boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp
+++ b/boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp
@@ -71,13 +71,11 @@ template
struct less_by_segment_ratio
{
inline less_by_segment_ratio(Turns const& turns
- , operation_type for_operation
, Geometry1 const& geometry1
, Geometry2 const& geometry2
, RobustPolicy const& robust_policy
, SideStrategy const& strategy)
: m_turns(turns)
- , m_for_operation(for_operation)
, m_geometry1(geometry1)
, m_geometry2(geometry2)
, m_robust_policy(robust_policy)
@@ -88,7 +86,6 @@ struct less_by_segment_ratio
private :
Turns const& m_turns;
- operation_type m_for_operation;
Geometry1 const& m_geometry1;
Geometry2 const& m_geometry2;
RobustPolicy const& m_robust_policy;
diff --git a/boost/geometry/algorithms/detail/overlay/overlay.hpp b/boost/geometry/algorithms/detail/overlay/overlay.hpp
index f24cde8b8f..5094c6c96c 100644
--- a/boost/geometry/algorithms/detail/overlay/overlay.hpp
+++ b/boost/geometry/algorithms/detail/overlay/overlay.hpp
@@ -1,7 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2013-2015 Adam Wulkiewicz, Lodz, Poland
+// Copyright (c) 2013-2017 Adam Wulkiewicz, Lodz, Poland
// This file was modified by Oracle on 2015, 2017.
// Modifications copyright (c) 2015-2017, Oracle and/or its affiliates.
@@ -49,6 +49,7 @@
#include <boost/geometry/policies/robustness/segment_ratio_type.hpp>
+#include <boost/geometry/util/condition.hpp>
#ifdef BOOST_GEOMETRY_DEBUG_ASSEMBLE
# include <boost/geometry/io/dsv/write.hpp>
@@ -88,6 +89,10 @@ struct overlay_null_visitor
template <typename Turns, typename Turn, typename Operation>
void visit_traverse_reject(Turns const& , Turn const& , Operation const& , traverse_error_type )
{}
+
+ template <typename Rings>
+ void visit_generated_rings(Rings const& )
+ {}
};
template
@@ -135,9 +140,9 @@ inline void get_ring_turn_info(TurnInfoMap& turn_info_map, Turns const& turns, C
if (! is_self_turn<OverlayType>(turn)
&& (
- (target_operation == operation_union
+ (BOOST_GEOMETRY_CONDITION(target_operation == operation_union)
&& op.enriched.count_left > 0)
- || (target_operation == operation_intersection
+ || (BOOST_GEOMETRY_CONDITION(target_operation == operation_intersection)
&& op.enriched.count_right <= 2)))
{
// Avoid including untraversed rings which have polygons on
@@ -205,7 +210,7 @@ inline OutputIterator return_if_one_input_is_empty(Geometry1 const& geometry1,
typename Strategy::template area_strategy
<
point_type1
- >::type::return_type
+ >::type::template result_type<point_type1>::type
> properties;
// Silence warning C4127: conditional expression is constant
@@ -233,7 +238,7 @@ inline OutputIterator return_if_one_input_is_empty(Geometry1 const& geometry1,
select_rings<OverlayType>(geometry1, geometry2, empty, all_of_one_of_them, strategy);
ring_container_type rings;
- assign_parents(geometry1, geometry2, rings, all_of_one_of_them, strategy);
+ assign_parents<OverlayType>(geometry1, geometry2, rings, all_of_one_of_them, strategy);
return add_rings<GeometryOut>(all_of_one_of_them, geometry1, geometry2, rings, out,
strategy.template get_area_strategy<point_type1>());
}
@@ -306,7 +311,7 @@ std::cout << "get turns" << std::endl;
visitor.visit_turns(1, turns);
-#ifdef BOOST_GEOMETRY_INCLUDE_SELF_TURNS
+#if ! defined(BOOST_GEOMETRY_NO_SELF_TURNS)
if (needs_self_turns<Geometry1>::apply(geometry1))
{
self_get_turn_points::self_turns<Reverse1, assign_null_policy>(geometry1,
@@ -362,7 +367,7 @@ std::cout << "traverse" << std::endl;
typedef ring_properties
<
point_type,
- typename area_strategy_type::return_type
+ typename area_strategy_type::template result_type<point_type>::type
> properties;
// Select all rings which are NOT touched by any intersection point
@@ -385,7 +390,8 @@ std::cout << "traverse" << std::endl;
}
}
- assign_parents(geometry1, geometry2, rings, selected_ring_properties, strategy);
+ assign_parents<OverlayType>(geometry1, geometry2,
+ rings, selected_ring_properties, strategy);
// NOTE: There is no need to check result area for union because
// as long as the polygons in the input are valid the resulting
diff --git a/boost/geometry/algorithms/detail/overlay/overlay_type.hpp b/boost/geometry/algorithms/detail/overlay/overlay_type.hpp
index f3ec9eaa64..c76d440f91 100644
--- a/boost/geometry/algorithms/detail/overlay/overlay_type.hpp
+++ b/boost/geometry/algorithms/detail/overlay/overlay_type.hpp
@@ -21,8 +21,7 @@ enum overlay_type
overlay_intersection,
overlay_difference,
overlay_buffer,
- overlay_dissolve_union,
- overlay_dissolve_intersection
+ overlay_dissolve
};
#ifndef DOXYGEN_NO_DETAIL
@@ -70,17 +69,11 @@ struct operation_from_overlay<overlay_difference>
};
template <>
-struct operation_from_overlay<overlay_dissolve_union>
+struct operation_from_overlay<overlay_dissolve>
{
static const operation_type value = operation_union;
};
-template <>
-struct operation_from_overlay<overlay_dissolve_intersection>
-{
- static const operation_type value = operation_intersection;
-};
-
}} // namespace detail::overlay
#endif //DOXYGEN_NO_DETAIL
diff --git a/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp b/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp
index a00606b087..3cc98d3b7e 100644
--- a/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp
+++ b/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp
@@ -77,7 +77,7 @@ struct self_section_visitor
RobustPolicy const& m_rescale_policy;
Turns& m_turns;
InterruptPolicy& m_interrupt_policy;
- std::size_t m_source_index;
+ int m_source_index;
bool m_skip_adjacent;
inline self_section_visitor(Geometry const& g,
@@ -85,7 +85,7 @@ struct self_section_visitor
RobustPolicy const& rp,
Turns& turns,
InterruptPolicy& ip,
- std::size_t source_index,
+ int source_index,
bool skip_adjacent)
: m_geometry(g)
, m_intersection_strategy(is)
@@ -135,7 +135,7 @@ struct get_turns
RobustPolicy const& robust_policy,
Turns& turns,
InterruptPolicy& interrupt_policy,
- std::size_t source_index, bool skip_adjacent)
+ int source_index, bool skip_adjacent)
{
typedef model::box
<
@@ -229,7 +229,7 @@ struct self_get_turn_points
RobustPolicy const& ,
Turns& ,
InterruptPolicy& ,
- std::size_t /*source_index*/,
+ int /*source_index*/,
bool /*skip_adjacent*/)
{
return true;
@@ -292,7 +292,7 @@ inline void self_turns(Geometry const& geometry,
RobustPolicy const& robust_policy,
Turns& turns,
InterruptPolicy& interrupt_policy,
- std::size_t source_index = 0,
+ int source_index = 0,
bool skip_adjacent = false)
{
concepts::check<Geometry const>();
@@ -339,7 +339,7 @@ inline void self_turns(Geometry const& geometry,
RobustPolicy const& robust_policy,
Turns& turns,
InterruptPolicy& interrupt_policy,
- std::size_t source_index = 0,
+ int source_index = 0,
bool skip_adjacent = false)
{
concepts::check<Geometry const>();
diff --git a/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp b/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp
index fea5698ae1..6b929373b4 100644
--- a/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp
+++ b/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2017.
// Modifications copyright (c) 2017 Oracle and/or its affiliates.
@@ -239,7 +240,7 @@ public :
{}
template <typename Operation, typename Geometry1, typename Geometry2>
- Point add(Operation const& op, signed_size_type turn_index, signed_size_type op_index,
+ Point add(Operation const& op, signed_size_type turn_index, int op_index,
Geometry1 const& geometry1,
Geometry2 const& geometry2,
bool is_origin)
@@ -260,7 +261,7 @@ public :
}
template <typename Operation, typename Geometry1, typename Geometry2>
- void add(Operation const& op, signed_size_type turn_index, signed_size_type op_index,
+ void add(Operation const& op, signed_size_type turn_index, int op_index,
segment_identifier const& departure_seg_id,
Geometry1 const& geometry1,
Geometry2 const& geometry2,
@@ -277,7 +278,7 @@ public :
if (is_origin)
{
- int const segment_distance = calculate_segment_distance(op, departure_seg_id, geometry1, geometry2);
+ signed_size_type const segment_distance = calculate_segment_distance(op, departure_seg_id, geometry1, geometry2);
if (m_origin_count == 0 ||
segment_distance < m_origin_segment_distance)
{
@@ -290,7 +291,7 @@ public :
}
template <typename Operation, typename Geometry1, typename Geometry2>
- static int calculate_segment_distance(Operation const& op,
+ static signed_size_type calculate_segment_distance(Operation const& op,
segment_identifier const& departure_seg_id,
Geometry1 const& geometry1,
Geometry2 const& geometry2)
@@ -303,7 +304,7 @@ public :
// Suppose ring_count=10 (10 points, 9 segments), dep.seg_id=7, op.seg_id=2, then distance=10-9+2
// Generic function (is this used somewhere else too?)
ring_identifier const rid(op.seg_id.source_index, op.seg_id.multi_index, op.seg_id.ring_index);
- int const segment_count
+ signed_size_type const segment_count
(op.seg_id.source_index == 0
? geometry::num_points(detail::overlay::get_ring<typename geometry::tag<Geometry1>::type>::apply(rid, geometry1))
: geometry::num_points(detail::overlay::get_ring<typename geometry::tag<Geometry2>::type>::apply(rid, geometry2)));
@@ -434,7 +435,7 @@ public :
container_type m_ranked_points;
Point m_origin;
std::size_t m_origin_count;
- int m_origin_segment_distance;
+ signed_size_type m_origin_segment_distance;
SideStrategy m_strategy;
private :
diff --git a/boost/geometry/algorithms/detail/overlay/traversal.hpp b/boost/geometry/algorithms/detail/overlay/traversal.hpp
index 6a9b1def99..5c547c3278 100644
--- a/boost/geometry/algorithms/detail/overlay/traversal.hpp
+++ b/boost/geometry/algorithms/detail/overlay/traversal.hpp
@@ -18,13 +18,12 @@
#include <boost/range.hpp>
-#include <boost/geometry/algorithms/detail/overlay/aggregate_operations.hpp>
#include <boost/geometry/algorithms/detail/overlay/is_self_turn.hpp>
#include <boost/geometry/algorithms/detail/overlay/sort_by_side.hpp>
-#include <boost/geometry/algorithms/detail/overlay/traversal_intersection_patterns.hpp>
#include <boost/geometry/algorithms/detail/overlay/turn_info.hpp>
#include <boost/geometry/core/access.hpp>
#include <boost/geometry/core/assert.hpp>
+#include <boost/geometry/util/condition.hpp>
#if defined(BOOST_GEOMETRY_DEBUG_INTERSECTION) \
|| defined(BOOST_GEOMETRY_OVERLAY_REPORT_WKT) \
@@ -232,50 +231,54 @@ struct traversal
}
template <signed_size_type segment_identifier::*Member>
- inline bool select_source_generic(bool switch_source,
+ inline bool select_source_generic(turn_type const& turn,
segment_identifier const& current,
segment_identifier const& previous) const
{
+ turn_operation_type const& op0 = turn.operations[0];
+ turn_operation_type const& op1 = turn.operations[1];
+
+ bool const switch_source = op0.enriched.region_id != -1
+ && op0.enriched.region_id == op1.enriched.region_id;
+
+#if defined(BOOST_GEOMETRY_DEBUG_TRAVERSAL_SWITCH_DETECTOR)
+ if (switch_source)
+ {
+ std::cout << "Switch source at " << &turn << std::endl;
+ }
+ else
+ {
+ std::cout << "DON'T SWITCH SOURCES at " << &turn << std::endl;
+ }
+#endif
return switch_source
? current.*Member != previous.*Member
: current.*Member == previous.*Member;
}
- inline bool select_source(signed_size_type turn_index,
+ inline bool select_source(turn_type const& turn,
segment_identifier const& candidate_seg_id,
segment_identifier const& previous_seg_id) const
{
// For uu/ii, only switch sources if indicated
- turn_type const& turn = m_turns[turn_index];
-#if defined(BOOST_GEOMETRY_DEBUG_TRAVERSAL_SWITCH_DETECTOR)
- if (turn.switch_source)
- {
- std::cout << "Switch source at " << turn_index << std::endl;
- }
- else
- {
- std::cout << "DON'T SWITCH SOURCES at " << turn_index << std::endl;
- }
-#endif
- if (OverlayType == overlay_buffer
- || OverlayType == overlay_dissolve_union)
+ if (OverlayType == overlay_buffer)
{
// Buffer does not use source_index (always 0).
return select_source_generic<&segment_identifier::multi_index>(
- turn.switch_source, candidate_seg_id, previous_seg_id);
+ turn, candidate_seg_id, previous_seg_id);
}
if (is_self_turn<OverlayType>(turn))
{
// Also, if it is a self-turn, stay on same ring (multi/ring)
return select_source_generic<&segment_identifier::multi_index>(
- turn.switch_source, candidate_seg_id, previous_seg_id);
+ turn, candidate_seg_id, previous_seg_id);
}
// Use source_index
return select_source_generic<&segment_identifier::source_index>(
- turn.switch_source, candidate_seg_id, previous_seg_id);
+ turn, candidate_seg_id, previous_seg_id);
}
inline bool traverse_possible(signed_size_type turn_index) const
@@ -294,6 +297,51 @@ struct traversal
|| turn.has(operation_continue);
}
+ inline std::size_t get_shortcut_level(turn_operation_type const& op,
+ signed_size_type start_turn_index,
+ signed_size_type origin_turn_index,
+ std::size_t level = 1) const
+ {
+ signed_size_type next_turn_index = op.enriched.get_next_turn_index();
+ if (next_turn_index == -1)
+ {
+ return 0;
+ }
+ if (next_turn_index == start_turn_index)
+ {
+ // This operation finishes the ring
+ return 0;
+ }
+ if (next_turn_index == origin_turn_index)
+ {
+ // This operation travels to itself
+ return level;
+ }
+ if (level > 10)
+ {
+ // Avoid infinite recursion
+ return 0;
+ }
+
+ turn_type const& next_turn = m_turns[next_turn_index];
+ for (int i = 0; i < 2; i++)
+ {
+ turn_operation_type const& next_op = next_turn.operations[i];
+ if (next_op.operation == target_operation
+ && ! next_op.visited.finished()
+ && ! next_op.visited.visited())
+ {
+ // Recursively continue verifying
+ if (get_shortcut_level(next_op, start_turn_index,
+ origin_turn_index, level + 1))
+ {
+ return level + 1;
+ }
+ }
+ }
+ return 0;
+ }
+
inline
bool select_cc_operation(turn_type const& turn,
signed_size_type start_turn_index,
@@ -342,7 +390,6 @@ struct traversal
inline
bool select_noncc_operation(turn_type const& turn,
- signed_size_type turn_index,
segment_identifier const& previous_seg_id,
int& selected_op_index) const
{
@@ -355,7 +402,7 @@ struct traversal
if (op.operation == target_operation
&& ! op.visited.finished()
&& ! op.visited.visited()
- && (! result || select_source(turn_index, op.seg_id, previous_seg_id)))
+ && (! result || select_source(turn, op.seg_id, previous_seg_id)))
{
selected_op_index = i;
debug_traverse(turn, op, "Candidate");
@@ -367,6 +414,87 @@ struct traversal
}
inline
+ bool select_preferred_operation(turn_type const& turn,
+ signed_size_type turn_index,
+ signed_size_type start_turn_index,
+ int& selected_op_index) const
+ {
+ bool option[2] = {0};
+ bool finishing[2] = {0};
+ bool preferred[2] = {0};
+ std::size_t shortcut_level[2] = {0};
+ for (int i = 0; i < 2; i++)
+ {
+ turn_operation_type const& op = turn.operations[i];
+
+ if (op.operation == target_operation
+ && ! op.visited.finished()
+ && ! op.visited.visited())
+ {
+ option[i] = true;
+ if (op.enriched.get_next_turn_index() == start_turn_index)
+ {
+ finishing[i] = true;
+ }
+ else
+ {
+ shortcut_level[i] = get_shortcut_level(op, start_turn_index,
+ turn_index);
+ }
+
+ if (op.enriched.prefer_start)
+ {
+ preferred[i] = true;
+ }
+ }
+ }
+
+ if (option[0] != option[1])
+ {
+ // Only one operation is acceptable, take that one
+ selected_op_index = option[0] ? 0 : 1;
+ return true;
+ }
+
+ if (option[0] && option[1])
+ {
+ // Both operations are acceptable
+ if (finishing[0] != finishing[1])
+ {
+ // Prefer operation finishing the ring
+ selected_op_index = finishing[0] ? 0 : 1;
+ return true;
+ }
+
+ if (shortcut_level[0] != shortcut_level[1])
+ {
+ // If a turn can travel to itself again (without closing the
+ // ring), take the shortest one
+ selected_op_index = shortcut_level[0] < shortcut_level[1] ? 0 : 1;
+ return true;
+ }
+
+ if (preferred[0] != preferred[1])
+ {
+ // Only one operation is preferred (== was not intersection)
+ selected_op_index = preferred[0] ? 0 : 1;
+ return true;
+ }
+ }
+
+ for (int i = 0; i < 2; i++)
+ {
+ if (option[i])
+ {
+ selected_op_index = 0;
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ inline
bool select_operation(const turn_type& turn,
signed_size_type turn_index,
signed_size_type start_turn_index,
@@ -380,10 +508,15 @@ struct traversal
result = select_cc_operation(turn, start_turn_index,
selected_op_index);
}
+ else if (OverlayType == overlay_dissolve)
+ {
+ result = select_preferred_operation(turn, turn_index,
+ start_turn_index, selected_op_index);
+ }
else
{
- result = select_noncc_operation(turn, turn_index,
- previous_seg_id, selected_op_index);
+ result = select_noncc_operation(turn, previous_seg_id,
+ selected_op_index);
}
if (result)
{
@@ -417,6 +550,13 @@ struct traversal
return true;
}
+
+ template <typename RankedPoint>
+ inline turn_operation_type const& operation_from_rank(RankedPoint const& rp) const
+ {
+ return m_turns[rp.turn_index].operations[rp.operation_index];
+ }
+
inline int select_turn_in_cluster_union(std::size_t selected_rank,
typename sbs_type::rp const& ranked_point,
signed_size_type start_turn_index, int start_op_index) const
@@ -431,8 +571,7 @@ struct traversal
return 0;
}
- turn_type const& turn = m_turns[ranked_point.turn_index];
- turn_operation_type const& op = turn.operations[ranked_point.operation_index];
+ turn_operation_type const& op = operation_from_rank(ranked_point);
// Check finalized: TODO: this should be finetuned, it is not necessary
if (op.visited.finalized())
@@ -440,7 +579,7 @@ struct traversal
return 0;
}
- if (OverlayType != overlay_dissolve_union
+ if (OverlayType != overlay_dissolve
&& (op.enriched.count_left != 0 || op.enriched.count_right == 0))
{
// Check counts: in some cases interior rings might be generated with
@@ -455,27 +594,45 @@ struct traversal
;
}
- inline bool select_from_cluster_union(signed_size_type& turn_index,
- int& op_index, sbs_type& sbs,
- signed_size_type start_turn_index, int start_op_index) const
+ inline signed_size_type select_rank(sbs_type const& sbs,
+ bool skip_isolated) const
{
- std::vector<sort_by_side::rank_with_rings> aggregation;
- sort_by_side::aggregate_operations(sbs, aggregation, m_turns, operation_union);
-
- sort_by_side::rank_with_rings const& incoming = aggregation.front();
+ // Take the first outgoing rank corresponding to incoming region,
+ // or take another region if it is not isolated
+ turn_operation_type const& incoming_op
+ = operation_from_rank(sbs.m_ranked_points.front());
- // Take the first one outgoing for the incoming region
- std::size_t selected_rank = 0;
- for (std::size_t i = 1; i < aggregation.size(); i++)
+ for (std::size_t i = 0; i < sbs.m_ranked_points.size(); i++)
{
- sort_by_side::rank_with_rings const& rwr = aggregation[i];
- if (rwr.all_to()
- && rwr.region_id() == incoming.region_id())
+ typename sbs_type::rp const& rp = sbs.m_ranked_points[i];
+ if (rp.rank == 0 || rp.direction == sort_by_side::dir_from)
{
- selected_rank = rwr.rank;
- break;
+ continue;
+ }
+ turn_operation_type const& op = operation_from_rank(rp);
+
+ if (op.operation != target_operation
+ && op.operation != operation_continue)
+ {
+ continue;
+ }
+
+ if (op.enriched.region_id == incoming_op.enriched.region_id
+ || (skip_isolated && ! op.enriched.isolated))
+ {
+ // Region corresponds to incoming region, or (for intersection)
+ // there is a non-isolated other region which should be taken
+ return rp.rank;
}
}
+ return -1;
+ }
+
+ inline bool select_from_cluster_union(signed_size_type& turn_index,
+ int& op_index, sbs_type const& sbs,
+ signed_size_type start_turn_index, int start_op_index) const
+ {
+ std::size_t const selected_rank = select_rank(sbs, false);
int best_code = 0;
bool result = false;
@@ -508,87 +665,7 @@ struct traversal
inline bool analyze_cluster_intersection(signed_size_type& turn_index,
int& op_index, sbs_type const& sbs) const
{
- std::vector<sort_by_side::rank_with_rings> aggregation;
- sort_by_side::aggregate_operations(sbs, aggregation, m_turns, operation_intersection);
-
- std::size_t selected_rank = 0;
-
-
- // Detect specific pattern(s)
- bool const detected
- = intersection_pattern_common_interior1(selected_rank, aggregation)
- || intersection_pattern_common_interior2(selected_rank, aggregation)
- || intersection_pattern_common_interior3(selected_rank, aggregation)
- || intersection_pattern_common_interior4(selected_rank, aggregation)
- || intersection_pattern_common_interior5(selected_rank, aggregation)
- || intersection_pattern_common_interior6(selected_rank, aggregation)
- ;
-
- if (! detected)
- {
- signed_size_type incoming_region_id = 0;
- std::set<signed_size_type> outgoing_region_ids;
-
- for (std::size_t i = 0; i < aggregation.size(); i++)
- {
- sort_by_side::rank_with_rings const& rwr = aggregation[i];
-
- if (rwr.all_to()
- && rwr.traversable(m_turns)
- && selected_rank == 0)
- {
- // Take the first (= right) where segments leave,
- // having the polygon on the right side
- selected_rank = rwr.rank;
- }
-
- if (rwr.all_from()
- && selected_rank > 0
- && outgoing_region_ids.empty())
- {
- // Incoming
- break;
- }
-
- if (incoming_region_id == 0)
- {
- sort_by_side::ring_with_direction const& rwd = *rwr.rings.begin();
- turn_type const& turn = m_turns[rwd.turn_index];
- incoming_region_id = turn.operations[rwd.operation_index].enriched.region_id;
- }
- else
- {
- if (rwr.rings.size() == 1)
- {
- sort_by_side::ring_with_direction const& rwd = *rwr.rings.begin();
- turn_type const& turn = m_turns[rwd.turn_index];
- if (rwd.direction == sort_by_side::dir_to
- && turn.both(operation_intersection))
- {
-
- turn_operation_type const& op = turn.operations[rwd.operation_index];
- if (op.enriched.region_id != incoming_region_id
- && op.enriched.isolated)
- {
- outgoing_region_ids.insert(op.enriched.region_id);
- }
- }
- else if (! outgoing_region_ids.empty())
- {
- for (int i = 0; i < 2; i++)
- {
- signed_size_type const region_id = turn.operations[i].enriched.region_id;
- if (outgoing_region_ids.count(region_id) == 1)
- {
- selected_rank = 0;
- outgoing_region_ids.erase(region_id);
- }
- }
- }
- }
- }
- }
- }
+ std::size_t const selected_rank = select_rank(sbs, true);
if (selected_rank > 0)
{
@@ -602,10 +679,9 @@ struct traversal
if (ranked_point.rank == selected_rank)
{
- turn_type const& ranked_turn = m_turns[ranked_point.turn_index];
- turn_operation_type const& ranked_op = ranked_turn.operations[ranked_point.operation_index];
+ turn_operation_type const& op = operation_from_rank(ranked_point);
- if (ranked_op.visited.finalized())
+ if (op.visited.finalized())
{
// This direction is already traveled before, the same
// cannot be traveled again
@@ -614,10 +690,10 @@ struct traversal
// Take turn with the smallest remaining distance
if (selected_index == sbs.m_ranked_points.size()
- || ranked_op.remaining_distance < min_remaining_distance)
+ || op.remaining_distance < min_remaining_distance)
{
selected_index = i;
- min_remaining_distance = ranked_op.remaining_distance;
+ min_remaining_distance = op.remaining_distance;
}
}
}
@@ -725,9 +801,7 @@ struct traversal
turn_operation_type const& start_op,
int start_op_index) const
{
- if (OverlayType != overlay_buffer
- && OverlayType != overlay_dissolve_union
- && OverlayType != overlay_dissolve_intersection)
+ if (OverlayType != overlay_buffer && OverlayType != overlay_dissolve)
{
return;
}
@@ -830,7 +904,7 @@ struct traversal
{
turn_type const& current_turn = m_turns[turn_index];
- if (target_operation == operation_intersection)
+ if (BOOST_GEOMETRY_CONDITION(target_operation == operation_intersection))
{
bool const back_at_start_cluster
= current_turn.is_clustered()
diff --git a/boost/geometry/algorithms/detail/overlay/traversal_intersection_patterns.hpp b/boost/geometry/algorithms/detail/overlay/traversal_intersection_patterns.hpp
deleted file mode 100644
index a8abea230e..0000000000
--- a/boost/geometry/algorithms/detail/overlay/traversal_intersection_patterns.hpp
+++ /dev/null
@@ -1,451 +0,0 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
-
-// Copyright (c) 2007-2017 Barend Gehrels, Amsterdam, the Netherlands.
-
-// 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)
-
-#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_TRAVERSAL_INTERSECTION_PATTERNS_HPP
-#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_TRAVERSAL_INTERSECTION_PATTERNS_HPP
-
-#include <cstddef>
-#include <vector>
-
-#include <boost/geometry/algorithms/detail/overlay/aggregate_operations.hpp>
-#include <boost/geometry/algorithms/detail/overlay/sort_by_side.hpp>
-
-namespace boost { namespace geometry
-{
-
-#ifndef DOXYGEN_NO_DETAIL
-namespace detail { namespace overlay
-{
-
-inline bool check_pairs(std::vector<sort_by_side::rank_with_rings> const& aggregation,
- signed_size_type incoming_region_id,
- std::size_t first, std::size_t last)
-{
- // Check if pairs 1,2 (and possibly 3,4 and 5,6 etc) satisfy
-
- for (std::size_t i = first; i <= last; i += 2)
- {
- sort_by_side::rank_with_rings const& curr = aggregation[i];
- sort_by_side::rank_with_rings const& next = aggregation[i + 1];
- signed_size_type const curr_id = curr.region_id();
- signed_size_type const next_id = next.region_id();
-
- bool const possible =
- curr.rings.size() == 2
- && curr.is_isolated()
- && curr.has_unique_region_id()
- && next.rings.size() == 2
- && next.is_isolated()
- && next.has_unique_region_id()
- && curr_id == next_id
- && curr_id != incoming_region_id;
-
- if (! possible)
- {
- return false;
- }
- }
-
- return true;
-}
-
-inline bool intersection_pattern_common_interior1(std::size_t& selected_rank,
- std::vector<sort_by_side::rank_with_rings> const& aggregation)
-{
- // Pattern: coming from exterior ring, encountering an isolated
- // parallel interior ring, which should be skipped, and the first
- // left (normally intersection takes first right) should be taken.
- // Solves cases #case_133_multi
- // and #case_recursive_boxes_49
-
- std::size_t const n = aggregation.size();
- if (n < 4)
- {
- return false;
- }
-
- sort_by_side::rank_with_rings const& incoming = aggregation.front();
- sort_by_side::rank_with_rings const& outgoing = aggregation.back();
-
- bool const incoming_ok =
- incoming.all_from()
- && incoming.rings.size() == 1
- && incoming.has_only(operation_intersection);
-
- if (! incoming_ok)
- {
- return false;
- }
-
- bool const outgoing_ok =
- outgoing.all_to()
- && outgoing.rings.size() == 1
- && outgoing.has_only(operation_intersection)
- && outgoing.region_id() == incoming.region_id();
-
- if (! outgoing_ok)
- {
- return false;
- }
-
- if (check_pairs(aggregation, incoming.region_id(), 1, n - 2))
- {
- selected_rank = n - 1;
- return true;
- }
- return false;
-}
-
-inline bool intersection_pattern_common_interior2(std::size_t& selected_rank,
- std::vector<sort_by_side::rank_with_rings> const& aggregation)
-{
- // Pattern: coming from two exterior rings, encountering two isolated
- // equal interior rings
-
- // See (for example, for ii) #case_recursive_boxes_53:
-
- // INCOMING:
- // Rank 0 {11[0] (s:0, m:0) i F rgn: 1 ISO} {13[1] (s:1, m:0) i F rgn: 1 ISO}
-
- // PAIR:
- // Rank 1 {13[0] (s:0, r:1, m:0) i T rgn: 3 ISO ->16} {11[1] (s:1, r:5, m:0) i T rgn: 3 ISO ->16}
- // Rank 2 {13[0] (s:0, r:1, m:0) i F rgn: 3 ISO} {11[1] (s:1, r:5, m:0) i F rgn: 3 ISO}
-
- // LEAVING (in the same direction, take last one)
- // Rank 3 {11[0] (s:0, m:0) i T rgn: 1 ISO ->10} {13[1] (s:1, m:0) i T rgn: 1 ISO ->10}
-
-
- std::size_t const n = aggregation.size();
- if (n < 4)
- {
- return false;
- }
-
- sort_by_side::rank_with_rings const& incoming = aggregation.front();
- sort_by_side::rank_with_rings const& outgoing = aggregation.back();
-
- bool const incoming_ok =
- incoming.all_from()
- && incoming.rings.size() == 2
- && incoming.has_unique_region_id();
-
- if (! incoming_ok)
- {
- return false;
- }
-
- bool const outgoing_ok =
- outgoing.all_to()
- && outgoing.rings.size() == 2
- && outgoing.has_unique_region_id()
- && outgoing.region_id() == incoming.region_id();
-
- if (! outgoing_ok)
- {
- return false;
- }
-
- bool const operation_ok =
- (incoming.has_only(operation_continue) && outgoing.has_only(operation_continue))
- || (incoming.has_only(operation_intersection) && outgoing.has_only(operation_intersection));
-
- if (! operation_ok)
- {
- return false;
- }
-
- // Check if pairs 1,2 (and possibly 3,4 and 5,6 etc) satisfy
- if (check_pairs(aggregation, incoming.region_id(), 1, n - 2))
- {
- selected_rank = n - 1;
- return true;
- }
- return false;
-}
-
-inline bool intersection_pattern_common_interior3(std::size_t& selected_rank,
- std::vector<sort_by_side::rank_with_rings> const& aggregation)
-{
- // Pattern: approaches colocated turn (exterior+interior) from two
- // different directions, and both leaves in the same direction
-
- // See #case_136_multi:
- // INCOMING:
- //Rank 0 {10[0] (s:0, m:0) c F rgn: 1 ISO}
-
- // PAIR:
- //Rank 1 {14[0] (s:0, r:0, m:0) i T rgn: 2 ISO ->16} {11[1] (s:1, r:1, m:0) i T rgn: 2 ISO ->16}
- //Rank 2 {14[0] (s:0, r:0, m:0) i F rgn: 2 ISO} {11[1] (s:1, r:1, m:0) i F rgn: 2 ISO}
-
- // LEAVING (select this one):
- //Rank 3 {10[0] (s:0, m:0) c T rgn: 1 ISO ->12} {10[1] (s:1, m:0) c T rgn: 1 ISO ->12}
-
- // ADDITIONALLY: (other polygon coming in)
- //Rank 4 {10[1] (s:1, m:0) c F rgn: 1 ISO}
-
- std::size_t const n = aggregation.size();
- if (n < 4)
- {
- return false;
- }
-
- sort_by_side::rank_with_rings const& incoming = aggregation.front();
- sort_by_side::rank_with_rings const& outgoing = aggregation[n - 2];
- sort_by_side::rank_with_rings const& last = aggregation.back();
-
- bool const incoming_ok =
- incoming.all_from()
- && incoming.rings.size() == 1
- && incoming.has_only(operation_continue);
-
- if (! incoming_ok)
- {
- return false;
- }
-
- bool const outgoing_ok =
- outgoing.all_to()
- && outgoing.rings.size() == 2
- && outgoing.has_only(operation_continue)
- && outgoing.has_unique_region_id()
- && outgoing.region_id() == incoming.region_id()
- && last.all_from()
- && last.rings.size() == 1
- && last.region_id() == incoming.region_id()
- && last.all_from();
-
- if (! outgoing_ok)
- {
- return false;
- }
-
- // Check if pairs 1,2 (and possibly 3,4 and 5,6 etc) satisfy
- if (check_pairs(aggregation, incoming.region_id(), 1, n - 3))
- {
- selected_rank = n - 2;
- return true;
- }
- return false;
-}
-
-
-inline bool intersection_pattern_common_interior4(std::size_t& selected_rank,
- std::vector<sort_by_side::rank_with_rings> const& aggregation)
-{
- // Pattern: approaches colocated turn (exterior+interior) from same
- // direction, but leaves in two different directions
-
- // See #case_137_multi:
-
- // INCOMING:
- //Rank 0 {11[0] (s:0, m:0) i F rgn: 1 ISO} {10[1] (s:1, m:0) i F rgn: 1 ISO}
-
- // PAIR:
- //Rank 1 {13[0] (s:0, r:0, m:0) i T rgn: 2 ISO ->15} {11[1] (s:1, r:1, m:0) i T rgn: 2 ISO ->15}
- //Rank 2 {13[0] (s:0, r:0, m:0) i F rgn: 2 ISO} {11[1] (s:1, r:1, m:0) i F rgn: 2 ISO}
-
- // LEAVING (in two different directions, take penultimate one)
- //Rank 3 {10[1] (s:1, m:0) i T rgn: 1 ISO ->0}
- //Rank 4 {11[0] (s:0, m:0) i T rgn: 1 ISO ->12}
-
- std::size_t const n = aggregation.size();
- if (n < 4)
- {
- return false;
- }
-
- sort_by_side::rank_with_rings const& incoming = aggregation.front();
- sort_by_side::rank_with_rings const& extra = aggregation[n - 2];
- sort_by_side::rank_with_rings const& outgoing = aggregation.back();
-
- bool const incoming_ok =
- incoming.all_from()
- && incoming.rings.size() == 2
- && incoming.has_unique_region_id()
- && incoming.has_only(operation_intersection);
-
- if (! incoming_ok)
- {
- return false;
- }
-
- bool const outgoing_ok =
- outgoing.all_to()
- && outgoing.rings.size() == 1
- && outgoing.has_only(operation_intersection)
- && outgoing.region_id() == incoming.region_id()
- && extra.all_to()
- && extra.rings.size() == 1
- && extra.has_only(operation_intersection)
- && extra.region_id() == incoming.region_id();
-
- if (! outgoing_ok)
- {
- return false;
- }
-
- // Check if pairs 1,2 (and possibly 3,4 and 5,6 etc) satisfy
- if (check_pairs(aggregation, incoming.region_id(), 1, n - 3))
- {
- selected_rank = n - 2;
- return true;
- }
- return false;
-}
-
-inline bool intersection_pattern_common_interior5(std::size_t& selected_rank,
- std::vector<sort_by_side::rank_with_rings> const& aggregation)
-{
- // Pattern: isolated regions
-
- // See #case_recursive_boxes_65
-
- // INCOMING:
- // Rank 0 {19[0] (s:0, r:2, m:0) i F rgn: 4 ISO}
-
- // Rank 1 {19[1] (s:1, m:0) i T rgn: 1 ISO FIN ->18 (2.5)}
- // Rank 2 {21[1] (s:1, m:2) i F rgn: 1 ISO}
- // Rank 3 {21[1] (s:1, m:2) i T rgn: 1 ISO ->17 (2)}
- // Rank 4 {19[1] (s:1, m:0) i F rgn: 1 ISO FIN}
-
- // LEAVING (take this one):
- // Rank 5 {19[0] (s:0, r:2, m:0) i T rgn: 4 ISO ->22 (1)}
-
- std::size_t const n = aggregation.size();
- if (n < 3)
- {
- return false;
- }
-
- sort_by_side::rank_with_rings const& incoming = aggregation.front();
- sort_by_side::rank_with_rings const& outgoing = aggregation.back();
-
- bool const incoming_ok =
- incoming.all_from()
- && incoming.has_unique_region_id()
- && incoming.is_isolated();
-
- if (! incoming_ok)
- {
- return false;
- }
-
- signed_size_type const incoming_region_id = incoming.region_id();
-
- bool const outgoing_ok =
- outgoing.all_to()
- && outgoing.has_unique_region_id()
- && outgoing.is_isolated()
- && outgoing.region_id() == incoming_region_id;
-
- if (! outgoing_ok)
- {
- return false;
- }
-
- selected_rank = n - 1;
- bool other_region = true;
-
- // Assumed is that other regions go (T) and come back (F)
- for (std::size_t i = 1; i < n - 1; i++)
- {
- sort_by_side::rank_with_rings const& rwr = aggregation[i];
- if (! rwr.has_unique_region_id() || ! rwr.is_isolated())
- {
- return false;
- }
- signed_size_type const region_id = rwr.region_id();
- if (other_region && region_id != incoming_region_id)
- {
- // OK
- }
- else if (other_region && region_id == incoming_region_id)
- {
- // OK, next phase (same region as incoming region)
- selected_rank = i;
- other_region = false;
- }
- else if (! other_region && region_id != incoming_region_id)
- {
- // After that the region is the same is incoming, it should
- // stay like that
- return false;
- }
- }
-
- return true;
-}
-
-inline bool intersection_pattern_common_interior6(std::size_t& selected_rank,
- std::vector<sort_by_side::rank_with_rings> const& aggregation)
-{
- // Pattern: isolated regions in between
-
- // See #case_recursive_boxes_75
-
- // Incoming: one region
- // In between: several rings having isolated region, all the same
- // Outging == incoming
-
- std::size_t const n = aggregation.size();
- if (n < 3)
- {
- return false;
- }
-
- sort_by_side::rank_with_rings const& incoming = aggregation.front();
- sort_by_side::rank_with_rings const& outgoing = aggregation.back();
- sort_by_side::rank_with_rings const& first_isolated = aggregation[2];
-
- bool const incoming_ok =
- incoming.all_from()
- && incoming.has_unique_region_id()
- && ! incoming.is_isolated();
-
- if (! incoming_ok)
- {
- return false;
- }
-
- signed_size_type const incoming_region_id = incoming.region_id();
-
- bool const outgoing_ok =
- outgoing.all_to()
- && outgoing.has_unique_region_id()
- && ! outgoing.is_isolated()
- && outgoing.region_id() == incoming_region_id;
-
- if (! outgoing_ok)
- {
- return false;
- }
-
- const signed_size_type isolated_region_id = first_isolated.region_id();
-
- for (std::size_t i = 1; i < n - 1; i++)
- {
- sort_by_side::rank_with_rings const& rwr = aggregation[i];
- if (! rwr.has_unique_region_id()
- || ! rwr.is_isolated()
- || rwr.region_id() != isolated_region_id)
- {
- return false;
- }
- }
-
- selected_rank = n - 1;
-
- return true;
-}
-
-}} // namespace detail::overlay
-#endif // DOXYGEN_NO_DETAIL
-
-}} // namespace boost::geometry
-
-#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_TRAVERSAL_INTERSECTION_PATTERNS_HPP
diff --git a/boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp b/boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp
index 4df3f6e7ac..7f80c8313a 100644
--- a/boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp
+++ b/boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp
@@ -162,7 +162,7 @@ struct traversal_ring_creator
// Update registration and append point
turn_type& current_turn = m_turns[turn_index];
turn_operation_type& op = current_turn.operations[op_index];
- detail::overlay::append_no_dups_or_spikes(current_ring, current_turn.point,
+ detail::overlay::append_no_collinear(current_ring, current_turn.point,
m_intersection_strategy.get_side_strategy(),
m_robust_policy);
@@ -180,7 +180,7 @@ struct traversal_ring_creator
turn_type const& start_turn = m_turns[start_turn_index];
turn_operation_type& start_op = m_turns[start_turn_index].operations[start_op_index];
- detail::overlay::append_no_dups_or_spikes(ring, start_turn.point,
+ detail::overlay::append_no_collinear(ring, start_turn.point,
m_intersection_strategy.get_side_strategy(),
m_robust_policy);
@@ -344,6 +344,60 @@ struct traversal_ring_creator
}
}
+ template <typename Rings>
+ void iterate_with_preference(std::size_t phase,
+ Rings& rings, std::size_t& finalized_ring_size,
+ typename Backtrack::state_type& state)
+ {
+ for (std::size_t turn_index = 0; turn_index < m_turns.size(); ++turn_index)
+ {
+ turn_type const& turn = m_turns[turn_index];
+
+ if (turn.discarded || turn.blocked())
+ {
+ // Skip discarded and blocked turns
+ continue;
+ }
+
+ turn_operation_type const& op0 = turn.operations[0];
+ turn_operation_type const& op1 = turn.operations[1];
+
+ if (phase == 0)
+ {
+ if (! op0.enriched.prefer_start && ! op1.enriched.prefer_start)
+ {
+ // Not preferred, take next one
+ continue;
+ }
+ }
+
+ if (turn.both(operation_continue))
+ {
+ // Traverse only one turn, the one with the SMALLEST remaining distance
+ // to avoid skipping a turn in between, which can happen in rare cases
+ // (e.g. #130)
+ int const op_index
+ = op0.remaining_distance <= op1.remaining_distance ? 0 : 1;
+
+ traverse_with_operation(turn, turn_index, op_index,
+ rings, finalized_ring_size, state);
+ }
+ else
+ {
+ bool const forward = op0.enriched.prefer_start;
+
+ int op_index = forward ? 0 : 1;
+ int const increment = forward ? 1 : -1;
+
+ for (int i = 0; i < 2; i++, op_index += increment)
+ {
+ traverse_with_operation(turn, turn_index, op_index,
+ rings, finalized_ring_size, state);
+ }
+ }
+ }
+ }
+
private:
traversal_type m_trav;
diff --git a/boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp b/boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp
index 72f9c4f12a..8bdb03df5d 100644
--- a/boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp
+++ b/boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp
@@ -20,6 +20,7 @@
#include <boost/geometry/algorithms/detail/overlay/turn_info.hpp>
#include <boost/geometry/core/access.hpp>
#include <boost/geometry/core/assert.hpp>
+#include <boost/geometry/util/condition.hpp>
namespace boost { namespace geometry
{
@@ -48,6 +49,13 @@ template
>
struct traversal_switch_detector
{
+ static const operation_type target_operation
+ = operation_from_overlay<OverlayType>::value;
+ static const operation_type opposite_operation
+ = target_operation == operation_union
+ ? operation_intersection
+ : operation_union;
+
enum isolation_type
{
isolation_unknown = -1,
@@ -119,33 +127,6 @@ struct traversal_switch_detector
{
}
- bool inspect_difference(set_type& turn_id_difference,
- set_type const& turn_ids,
- set_type const& other_turn_ids) const
- {
- // TODO: consider if std::set_difference can be used in the final version
- int const turn_count = turn_ids.size();
- int const other_turn_count = other_turn_ids.size();
-
- // First quick check on size (TODO: implement multiple-multiple connections)
- if (turn_count - other_turn_count > 1)
- {
- return false;
- }
-
- // Check if all turns are also present in the connection.
- // The difference is returned
- for (set_iterator it = turn_ids.begin(); it != turn_ids.end(); ++it)
- {
- signed_size_type const& id = *it;
- if (other_turn_ids.count(id) == 0)
- {
- turn_id_difference.insert(id);
- }
- }
- return true;
- }
-
bool one_connection_to_another_region(region_properties const& region) const
{
// For example:
@@ -224,12 +205,83 @@ struct traversal_switch_detector
return true;
}
+ bool ii_turn_connects_two_regions(region_properties const& region,
+ region_properties const& connected_region,
+ signed_size_type turn_index) const
+ {
+ turn_type const& turn = m_turns[turn_index];
+ if (! turn.both(operation_intersection))
+ {
+ return false;
+ }
+
+ signed_size_type const id0 = turn.operations[0].enriched.region_id;
+ signed_size_type const id1 = turn.operations[1].enriched.region_id;
+
+ return (id0 == region.region_id && id1 == connected_region.region_id)
+ || (id1 == region.region_id && id0 == connected_region.region_id);
+ }
+
+
+ bool isolated_multiple_connection(region_properties const& region,
+ region_properties const& connected_region) const
+ {
+ if (connected_region.isolated != isolation_multiple)
+ {
+ return false;
+ }
+
+ // First step: compare turns of regions with turns of connected region
+ set_type turn_ids = region.unique_turn_ids;
+ for (set_iterator sit = connected_region.unique_turn_ids.begin();
+ sit != connected_region.unique_turn_ids.end(); ++sit)
+ {
+ turn_ids.erase(*sit);
+ }
+
+ // There should be one connection (turn or cluster) left
+ if (turn_ids.size() != 1)
+ {
+ return false;
+ }
+
+ for (set_iterator sit = connected_region.unique_turn_ids.begin();
+ sit != connected_region.unique_turn_ids.end(); ++sit)
+ {
+ signed_size_type const id_or_index = *sit;
+ if (id_or_index >= 0)
+ {
+ if (! ii_turn_connects_two_regions(region, connected_region, id_or_index))
+ {
+ return false;
+ }
+ }
+ else
+ {
+ signed_size_type const cluster_id = -id_or_index;
+ typename Clusters::const_iterator it = m_clusters.find(cluster_id);
+ if (it != m_clusters.end())
+ {
+ cluster_info const& cinfo = it->second;
+ for (set_iterator cit = cinfo.turn_indices.begin();
+ cit != cinfo.turn_indices.end(); ++cit)
+ {
+ if (! ii_turn_connects_two_regions(region, connected_region, *cit))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+
bool has_only_isolated_children(region_properties const& region) const
{
bool first_with_turn = true;
- bool first_with_multiple = true;
signed_size_type first_turn_id = 0;
- signed_size_type first_multiple_region_id = 0;
for (typename connection_map::const_iterator it = region.connected_region_counts.begin();
it != region.connected_region_counts.end(); ++it)
@@ -246,43 +298,17 @@ struct traversal_switch_detector
region_properties const& connected_region = mit->second;
- bool const multiple = connected_region.isolated == isolation_multiple;
-
if (cprop.count != 1)
{
- if (! multiple)
+ // If there are more connections, check their isolation
+ if (! isolated_multiple_connection(region, connected_region))
{
return false;
}
-
- // It connects multiple times to an isolated region.
- // This is allowed as long as it happens only once
- if (first_with_multiple)
- {
- first_multiple_region_id = connected_region.region_id;
- first_with_multiple = false;
- }
- else if (first_multiple_region_id != connected_region.region_id)
- {
- return false;
- }
-
- // Turns in region should be either present in the connection,
- // of form part of the connection with the other region
- set_type diff;
- if (! inspect_difference(diff, region.unique_turn_ids,
- connected_region.unique_turn_ids))
- {
- return false;
- }
- if (diff.size() > 1)
- {
- // For now:
- return false;
- }
}
- if (connected_region.isolated != isolation_yes && ! multiple)
+ if (connected_region.isolated != isolation_yes
+ && connected_region.isolated != isolation_multiple)
{
signed_size_type const unique_turn_id = *cprop.unique_turn_ids.begin();
if (first_with_turn)
@@ -296,6 +322,7 @@ struct traversal_switch_detector
}
}
}
+
// If there is only one connection (with a 'parent'), and all other
// connections are itself isolated, it is isolated
return true;
@@ -381,6 +408,12 @@ struct traversal_switch_detector
{
turn_type& turn = m_turns[*sit];
+ if (! acceptable(turn))
+ {
+ // No assignment necessary
+ continue;
+ }
+
for (int i = 0; i < 2; i++)
{
turn_operation_type& op = turn.operations[i];
@@ -441,12 +474,19 @@ struct traversal_switch_detector
}
}
+ inline bool acceptable(turn_type const& turn) const
+ {
+ // Discarded turns don't connect rings to the same region
+ // Also xx are not relevant
+ // (otherwise discarded colocated uu turn could make a connection)
+ return ! turn.discarded
+ && ! turn.both(operation_blocked);
+ }
+
inline bool connects_same_region(turn_type const& turn) const
{
- if (turn.discarded)
+ if (! acceptable(turn))
{
- // Discarded turns don't connect same region (otherwise discarded colocated uu turn
- // could make a connection)
return false;
}
@@ -456,7 +496,7 @@ struct traversal_switch_detector
return ! (turn.both(operation_union) || turn.both(operation_intersection));
}
- if (operation_from_overlay<OverlayType>::value == operation_union)
+ if (BOOST_GEOMETRY_CONDITION(target_operation == operation_union))
{
// It is a cluster, check zones
// (assigned by sort_by_side/handle colocations) of both operations
@@ -540,7 +580,7 @@ struct traversal_switch_detector
void iterate()
{
#if defined(BOOST_GEOMETRY_DEBUG_TRAVERSAL_SWITCH_DETECTOR)
- std::cout << "SWITCH BEGIN ITERATION" << std::endl;
+ std::cout << "BEGIN ITERATION GETTING REGION_IDS" << std::endl;
#endif
// Collect turns per ring
@@ -552,7 +592,7 @@ struct traversal_switch_detector
turn_type const& turn = m_turns[turn_index];
if (turn.discarded
- && operation_from_overlay<OverlayType>::value == operation_intersection)
+ && BOOST_GEOMETRY_CONDITION(target_operation == operation_intersection))
{
// Discarded turn (union currently still needs it to determine regions)
continue;
@@ -580,64 +620,8 @@ struct traversal_switch_detector
assign_isolation();
}
- // Now that all regions are filled, assign switch_source property
- // Iterate through all clusters
- for (typename Clusters::iterator it = m_clusters.begin(); it != m_clusters.end(); ++it)
- {
- cluster_info& cinfo = it->second;
- if (cinfo.open_count <= 1)
- {
- // Not a touching cluster
- continue;
- }
-
- // A touching cluster, gather regions
- set_type regions;
- set_type const& ids = cinfo.turn_indices;
-
-#if defined(BOOST_GEOMETRY_DEBUG_TRAVERSAL_SWITCH_DETECTOR)
- std::cout << "SWITCH EXAMINE CLUSTER " << it->first << std::endl;
-#endif
-
- for (set_iterator sit = ids.begin(); sit != ids.end(); ++sit)
- {
- signed_size_type turn_index = *sit;
- turn_type const& turn = m_turns[turn_index];
- for (int oi = 0; oi < 2; oi++)
- {
- signed_size_type const region_id = get_region_id(turn.operations[oi]);
- regions.insert(region_id);
- }
- }
- // Switch source if this cluster connects the same region
- cinfo.switch_source = regions.size() <= 1;
- }
-
- // Iterate through all uu/ii turns (non-clustered)
- for (std::size_t turn_index = 0; turn_index < m_turns.size(); ++turn_index)
- {
- turn_type& turn = m_turns[turn_index];
-
- if (turn.discarded
- || turn.blocked()
- || turn.is_clustered()
- || ! (turn.both(operation_union) || turn.both(operation_intersection)))
- {
- // Skip discarded, blocked, non-uu/ii and clustered turns
- continue;
- }
-
-
- signed_size_type const region0 = get_region_id(turn.operations[0]);
- signed_size_type const region1 = get_region_id(turn.operations[1]);
-
- // Switch sources for same region
- turn.switch_source = region0 == region1;
- }
-
-
#if defined(BOOST_GEOMETRY_DEBUG_TRAVERSAL_SWITCH_DETECTOR)
- std::cout << "SWITCH END ITERATION" << std::endl;
+ std::cout << "END ITERATION GETTIN REGION_IDS" << std::endl;
for (std::size_t turn_index = 0; turn_index < m_turns.size(); ++turn_index)
{
@@ -646,25 +630,19 @@ struct traversal_switch_detector
if ((turn.both(operation_union) || turn.both(operation_intersection))
&& ! turn.is_clustered())
{
- std::cout << "UU/II SWITCH RESULT "
+ std::cout << "UU/II RESULT "
<< turn_index << " -> "
- << turn.switch_source << std::endl;
+ << turn.operations[0].enriched.region_id
+ << " " << turn.operations[1].enriched.region_id
+ << std::endl;
}
}
for (typename Clusters::const_iterator it = m_clusters.begin(); it != m_clusters.end(); ++it)
{
cluster_info const& cinfo = it->second;
- if (cinfo.open_count > 1)
- {
- std::cout << "CL SWITCH RESULT " << it->first
- << " -> " << cinfo.switch_source << std::endl;
- }
- else
- {
- std::cout << "CL SWITCH RESULT " << it->first
- << " is not registered as open" << std::endl;
- }
+ std::cout << "CL RESULT " << it->first
+ << " -> " << cinfo.open_count << std::endl;
}
#endif
diff --git a/boost/geometry/algorithms/detail/overlay/turn_info.hpp b/boost/geometry/algorithms/detail/overlay/turn_info.hpp
index 3ed75cf09e..545b5e902c 100644
--- a/boost/geometry/algorithms/detail/overlay/turn_info.hpp
+++ b/boost/geometry/algorithms/detail/overlay/turn_info.hpp
@@ -94,7 +94,6 @@ struct turn_info
bool discarded;
bool has_colocated_both; // Colocated with a uu turn (for union) or ii (other)
- bool switch_source; // For u/u turns which can either switch or not
Container operations;
@@ -104,7 +103,6 @@ struct turn_info
, cluster_id(-1)
, discarded(false)
, has_colocated_both(false)
- , switch_source(false)
{}
inline bool both(operation_type type) const
diff --git a/boost/geometry/algorithms/detail/partition.hpp b/boost/geometry/algorithms/detail/partition.hpp
index db134d548d..8eb0c7b1fd 100644
--- a/boost/geometry/algorithms/detail/partition.hpp
+++ b/boost/geometry/algorithms/detail/partition.hpp
@@ -765,7 +765,7 @@ public:
std::size_t min_elements)
{
return apply(forward_range1, forward_range2, visitor,
- expand_policy1, overlaps_policy1, expand_policy2, overlaps_policy1,
+ expand_policy1, overlaps_policy1, expand_policy2, overlaps_policy2,
min_elements, detail::partition::visit_no_policy());
}
diff --git a/boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp b/boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp
index b8ea5e30e6..ccd3af92d5 100644
--- a/boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp
+++ b/boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp
@@ -37,8 +37,8 @@ namespace detail
template <typename Point1, typename Point2, typename Point3>
inline bool collinear_point_is_spike_or_equal(Point1 const& last_point,
- Point2 const& segment_a,
- Point3 const& segment_b)
+ Point2 const& segment_a,
+ Point3 const& segment_b)
{
// Check if segment is equal
int const sgn_x1 = sign_of_difference<0>(last_point, segment_b);
@@ -70,10 +70,10 @@ template
typename Point1, typename Point2, typename Point3,
typename SideStrategy
>
-static inline bool point_is_spike_or_equal(Point1 const& last_point, // prev | back
- Point2 const& segment_a, // next | back - 2
- Point3 const& segment_b, // curr | back - 1 | spike's vertex
- SideStrategy const& strategy)
+inline bool point_is_spike_or_equal(Point1 const& last_point, // prev | back
+ Point2 const& segment_a, // next | back - 2
+ Point3 const& segment_b, // curr | back - 1 | spike's vertex
+ SideStrategy const& strategy)
{
int const side = strategy.apply(segment_a, segment_b, last_point);
if (side == 0)
@@ -100,7 +100,7 @@ template
typename SideStrategy,
typename RobustPolicy
>
-static inline bool point_is_spike_or_equal(Point1 const& last_point,
+inline bool point_is_spike_or_equal(Point1 const& last_point,
Point2 const& segment_a,
Point3 const& segment_b,
SideStrategy const& strategy,
@@ -137,6 +137,48 @@ static inline bool point_is_spike_or_equal(Point1 const& last_point,
);
}
+template
+<
+ typename Point1,
+ typename Point2,
+ typename Point3,
+ typename SideStrategy,
+ typename RobustPolicy
+>
+inline bool point_is_collinear(Point1 const& last_point,
+ Point2 const& segment_a,
+ Point3 const& segment_b,
+ SideStrategy const& strategy,
+ RobustPolicy const& robust_policy)
+{
+ int const side = strategy.apply(segment_a, segment_b, last_point);
+ if (side == 0)
+ {
+ return true;
+ }
+
+ // This part (or whole method, because it is then trivial)
+ // will be removed after rescaling
+ if (BOOST_GEOMETRY_CONDITION(! RobustPolicy::enabled))
+ {
+ return false;
+ }
+
+ // Redo, using specified robust policy
+ typedef typename geometry::robust_point_type
+ <
+ Point1,
+ RobustPolicy
+ >::type robust_point_type;
+
+ robust_point_type last_point_rob, segment_a_rob, segment_b_rob;
+ geometry::recalculate(last_point_rob, last_point, robust_policy);
+ geometry::recalculate(segment_a_rob, segment_a, robust_policy);
+ geometry::recalculate(segment_b_rob, segment_b, robust_policy);
+
+ int const side_rob = strategy.apply(segment_a_rob, segment_b_rob, last_point_rob);
+ return side_rob == 0;
+}
} // namespace detail
#endif
diff --git a/boost/geometry/algorithms/length.hpp b/boost/geometry/algorithms/length.hpp
index 39a567a26b..cfc46a07bd 100644
--- a/boost/geometry/algorithms/length.hpp
+++ b/boost/geometry/algorithms/length.hpp
@@ -51,6 +51,7 @@
#include <boost/geometry/algorithms/detail/multi_sum.hpp>
// #include <boost/geometry/algorithms/detail/throw_on_empty_input.hpp>
#include <boost/geometry/views/closeable_view.hpp>
+#include <boost/geometry/strategies/default_strategy.hpp>
#include <boost/geometry/strategies/distance.hpp>
#include <boost/geometry/strategies/default_length_result.hpp>
@@ -184,6 +185,33 @@ struct length<MultiLinestring, multi_linestring_tag> : detail::multi_sum
#endif // DOXYGEN_NO_DISPATCH
+namespace resolve_strategy {
+
+struct length
+{
+ template <typename Geometry, typename Strategy>
+ static inline typename default_length_result<Geometry>::type
+ apply(Geometry const& geometry, Strategy const& strategy)
+ {
+ return dispatch::length<Geometry>::apply(geometry, strategy);
+ }
+
+ template <typename Geometry>
+ static inline typename default_length_result<Geometry>::type
+ apply(Geometry const& geometry, default_strategy)
+ {
+ typedef typename strategy::distance::services::default_strategy
+ <
+ point_tag, point_tag, typename point_type<Geometry>::type
+ >::type strategy_type;
+
+ return dispatch::length<Geometry>::apply(geometry, strategy_type());
+ }
+};
+
+} // namespace resolve_strategy
+
+
namespace resolve_variant {
template <typename Geometry>
@@ -193,7 +221,7 @@ struct length
static inline typename default_length_result<Geometry>::type
apply(Geometry const& geometry, Strategy const& strategy)
{
- return dispatch::length<Geometry>::apply(geometry, strategy);
+ return resolve_strategy::length::apply(geometry, strategy);
}
};
@@ -255,13 +283,7 @@ length(Geometry const& geometry)
// detail::throw_on_empty_input(geometry);
- // TODO put this into a resolve_strategy stage
- typedef typename strategy::distance::services::default_strategy
- <
- point_tag, point_tag, typename point_type<Geometry>::type
- >::type strategy_type;
-
- return resolve_variant::length<Geometry>::apply(geometry, strategy_type());
+ return resolve_variant::length<Geometry>::apply(geometry, default_strategy());
}
diff --git a/boost/geometry/algorithms/point_on_surface.hpp b/boost/geometry/algorithms/point_on_surface.hpp
index 3f4d0f4afe..3bd18d83dd 100644
--- a/boost/geometry/algorithms/point_on_surface.hpp
+++ b/boost/geometry/algorithms/point_on_surface.hpp
@@ -3,7 +3,7 @@
// Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
-// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2013-2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2014, 2017.
// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
@@ -31,6 +31,7 @@
#include <boost/geometry/geometries/concepts/check.hpp>
#include <boost/geometry/algorithms/detail/extreme_points.hpp>
+#include <boost/geometry/algorithms/detail/signed_size_type.hpp>
#include <boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp>
#include <boost/geometry/strategies/side.hpp>
@@ -154,7 +155,6 @@ inline void calculate_average(Point& point, std::vector<P> const& points)
{
typedef typename geometry::coordinate_type<Point>::type coordinate_type;
typedef typename std::vector<P>::const_iterator iterator_type;
- typedef typename std::vector<P>::size_type size_type;
coordinate_type x = 0;
coordinate_type y = 0;
@@ -166,7 +166,7 @@ inline void calculate_average(Point& point, std::vector<P> const& points)
y += geometry::get<1>(*it);
}
- size_type const count = points.size();
+ signed_size_type const count = points.size();
geometry::set<0>(point, x / count);
geometry::set<1>(point, y / count);
}
diff --git a/boost/geometry/algorithms/simplify.hpp b/boost/geometry/algorithms/simplify.hpp
index cfeb542220..298f9c640a 100644
--- a/boost/geometry/algorithms/simplify.hpp
+++ b/boost/geometry/algorithms/simplify.hpp
@@ -36,9 +36,13 @@
#include <boost/geometry/strategies/default_strategy.hpp>
#include <boost/geometry/strategies/distance.hpp>
+#include <boost/geometry/algorithms/area.hpp>
#include <boost/geometry/algorithms/clear.hpp>
#include <boost/geometry/algorithms/convert.hpp>
+#include <boost/geometry/algorithms/detail/equals/point_point.hpp>
#include <boost/geometry/algorithms/not_implemented.hpp>
+#include <boost/geometry/algorithms/is_empty.hpp>
+#include <boost/geometry/algorithms/perimeter.hpp>
#include <boost/geometry/algorithms/detail/distance/default_strategies.hpp>
@@ -49,6 +53,14 @@ namespace boost { namespace geometry
namespace detail { namespace simplify
{
+template <typename Range>
+inline bool is_degenerate(Range const& range)
+{
+ return boost::size(range) == 2
+ && detail::equals::equals_point_point(geometry::range::front(range),
+ geometry::range::back(range));
+}
+
struct simplify_range_insert
{
template<typename Range, typename Strategy, typename OutputIterator, typename Distance>
@@ -57,7 +69,11 @@ struct simplify_range_insert
{
boost::ignore_unused(strategy);
- if (boost::size(range) <= 2 || max_distance < 0)
+ if (is_degenerate(range))
+ {
+ std::copy(boost::begin(range), boost::begin(range) + 1, out);
+ }
+ else if (boost::size(range) <= 2 || max_distance < 0)
{
std::copy(boost::begin(range), boost::end(range), out);
}
@@ -71,41 +87,32 @@ struct simplify_range_insert
struct simplify_copy
{
- template <typename Range, typename Strategy, typename Distance>
- static inline void apply(Range const& range, Range& out,
+ template <typename RangeIn, typename RangeOut, typename Strategy, typename Distance>
+ static inline void apply(RangeIn const& range, RangeOut& out,
Distance const& , Strategy const& )
{
std::copy
(
- boost::begin(range), boost::end(range), geometry::range::back_inserter(out)
+ boost::begin(range), boost::end(range),
+ geometry::range::back_inserter(out)
);
}
};
-template<std::size_t Minimum>
+template <std::size_t MinimumToUseStrategy>
struct simplify_range
{
- template <typename Range, typename Strategy, typename Distance>
- static inline void apply(Range const& range, Range& out,
+ template <typename RangeIn, typename RangeOut, typename Strategy, typename Distance>
+ static inline void apply(RangeIn const& range, RangeOut& out,
Distance const& max_distance, Strategy const& strategy)
{
- // Call do_container for a linestring / ring
-
- /* For a RING:
- The first/last point (the closing point of the ring) should maybe
- be excluded because it lies on a line with second/one but last.
- Here it is never excluded.
+ // For a RING:
+ // Note that, especially if max_distance is too large,
+ // the output ring might be self intersecting while the input ring is
+ // not, although chances are low in normal polygons
- Note also that, especially if max_distance is too large,
- the output ring might be self intersecting while the input ring is
- not, although chances are low in normal polygons
-
- Finally the inputring might have 3 (open) or 4 (closed) points (=correct),
- the output < 3 or 4(=wrong)
- */
-
- if (boost::size(range) <= int(Minimum) || max_distance < 0.0)
+ if (boost::size(range) <= MinimumToUseStrategy || max_distance < 0)
{
simplify_copy::apply(range, out, max_distance, strategy);
}
@@ -116,34 +123,172 @@ struct simplify_range
range, geometry::range::back_inserter(out), max_distance, strategy
);
}
+
+ // Verify the two remaining points are equal. If so, remove one of them.
+ // This can cause the output being under the minimum size
+ if (is_degenerate(out))
+ {
+ range::resize(out, 1);
+ }
+ }
+};
+
+struct simplify_ring
+{
+private :
+ template <typename Area>
+ static inline int area_sign(Area const& area)
+ {
+ return area > 0 ? 1 : area < 0 ? -1 : 0;
+ }
+
+ template <typename Strategy, typename Ring>
+ static std::size_t get_opposite(std::size_t index, Ring const& ring)
+ {
+ typename Strategy::distance_strategy_type distance_strategy;
+
+ // Verify if it is NOT the case that all points are less than the
+ // simplifying distance. If so, output is empty.
+ typename Strategy::distance_type max_distance(-1);
+
+ typename geometry::point_type<Ring>::type point = range::at(ring, index);
+ std::size_t i = 0;
+ for (typename boost::range_iterator<Ring const>::type
+ it = boost::begin(ring); it != boost::end(ring); ++it, ++i)
+ {
+ // This actually is point-segment distance but will result
+ // in point-point distance
+ typename Strategy::distance_type dist = distance_strategy.apply(*it, point, point);
+ if (dist > max_distance)
+ {
+ max_distance = dist;
+ index = i;
+ }
+ }
+ return index;
+ }
+
+public :
+ template <typename Ring, typename Strategy, typename Distance>
+ static inline void apply(Ring const& ring, Ring& out,
+ Distance const& max_distance, Strategy const& strategy)
+ {
+ std::size_t const size = boost::size(ring);
+ if (size == 0)
+ {
+ return;
+ }
+
+ int const input_sign = area_sign(geometry::area(ring));
+
+ std::set<std::size_t> visited_indexes;
+
+ // Rotate it into a copied vector
+ // (vector, because source type might not support rotation)
+ // (duplicate end point will be simplified away)
+ typedef typename geometry::point_type<Ring>::type point_type;
+
+ std::vector<point_type> rotated(size);
+
+ // Closing point (but it will not start here)
+ std::size_t index = 0;
+
+ // Iterate (usually one iteration is enough)
+ for (std::size_t iteration = 0; iteration < 4u; iteration++)
+ {
+ // Always take the opposite. Opposite guarantees that no point
+ // "halfway" is chosen, creating an artefact (very narrow triangle)
+ // Iteration 0: opposite to closing point (1/2, = on convex hull)
+ // (this will start simplification with that point
+ // and its opposite ~0)
+ // Iteration 1: move a quarter on that ring, then opposite to 1/4
+ // (with its opposite 3/4)
+ // Iteration 2: move an eight on that ring, then opposite (1/8)
+ // Iteration 3: again move a quarter, then opposite (7/8)
+ // So finally 8 "sides" of the ring have been examined (if it were
+ // a semi-circle). Most probably, there are only 0 or 1 iterations.
+ switch (iteration)
+ {
+ case 1 : index = (index + size / 4) % size; break;
+ case 2 : index = (index + size / 8) % size; break;
+ case 3 : index = (index + size / 4) % size; break;
+ }
+ index = get_opposite<Strategy>(index, ring);
+
+ if (visited_indexes.count(index) > 0)
+ {
+ // Avoid trying the same starting point more than once
+ continue;
+ }
+
+ std::rotate_copy(boost::begin(ring), range::pos(ring, index),
+ boost::end(ring), rotated.begin());
+
+ // Close the rotated copy
+ rotated.push_back(range::at(ring, index));
+
+ simplify_range<0>::apply(rotated, out, max_distance, strategy);
+
+ // Verify that what was positive, stays positive (or goes to 0)
+ // and what was negative stays negative (or goes to 0)
+ int const output_sign = area_sign(geometry::area(out));
+ if (output_sign == input_sign)
+ {
+ // Result is considered as satisfactory (usually this is the
+ // first iteration - only for small rings, having a scale
+ // similar to simplify_distance, next iterations are tried
+ return;
+ }
+
+ // Original is simplified away. Possibly there is a solution
+ // when another starting point is used
+ geometry::clear(out);
+
+ if (iteration == 0
+ && geometry::perimeter(ring) < 3 * max_distance)
+ {
+ // Check if it is useful to iterate. A minimal triangle has a
+ // perimeter of a bit more than 3 times the simplify distance
+ return;
+ }
+
+ // Prepare next try
+ visited_indexes.insert(index);
+ rotated.resize(size);
+ }
}
};
+
struct simplify_polygon
{
private:
template
<
- std::size_t Minimum,
typename IteratorIn,
- typename IteratorOut,
+ typename InteriorRingsOut,
typename Distance,
typename Strategy
>
static inline void iterate(IteratorIn begin, IteratorIn end,
- IteratorOut it_out,
+ InteriorRingsOut& interior_rings_out,
Distance const& max_distance, Strategy const& strategy)
{
- for (IteratorIn it_in = begin; it_in != end; ++it_in, ++it_out)
+ typedef typename boost::range_value<InteriorRingsOut>::type single_type;
+ for (IteratorIn it = begin; it != end; ++it)
{
- simplify_range<Minimum>::apply(*it_in, *it_out, max_distance, strategy);
+ single_type out;
+ simplify_ring::apply(*it, out, max_distance, strategy);
+ if (! geometry::is_empty(out))
+ {
+ range::push_back(interior_rings_out, out);
+ }
}
}
template
<
- std::size_t Minimum,
typename InteriorRingsIn,
typename InteriorRingsOut,
typename Distance,
@@ -154,12 +299,11 @@ private:
InteriorRingsOut& interior_rings_out,
Distance const& max_distance, Strategy const& strategy)
{
- traits::resize<InteriorRingsOut>::apply(interior_rings_out,
- boost::size(interior_rings_in));
+ range::clear(interior_rings_out);
- iterate<Minimum>(
+ iterate(
boost::begin(interior_rings_in), boost::end(interior_rings_in),
- boost::begin(interior_rings_out),
+ interior_rings_out,
max_distance, strategy);
}
@@ -168,21 +312,14 @@ public:
static inline void apply(Polygon const& poly_in, Polygon& poly_out,
Distance const& max_distance, Strategy const& strategy)
{
- std::size_t const minimum = core_detail::closure::minimum_ring_size
- <
- geometry::closure<Polygon>::value
- >::value;
-
// Note that if there are inner rings, and distance is too large,
// they might intersect with the outer ring in the output,
// while it didn't in the input.
- simplify_range<minimum>::apply(exterior_ring(poly_in),
- exterior_ring(poly_out),
- max_distance, strategy);
+ simplify_ring::apply(exterior_ring(poly_in), exterior_ring(poly_out),
+ max_distance, strategy);
- apply_interior_rings<minimum>(interior_rings(poly_in),
- interior_rings(poly_out),
- max_distance, strategy);
+ apply_interior_rings(interior_rings(poly_in),
+ interior_rings(poly_out), max_distance, strategy);
}
};
@@ -194,16 +331,19 @@ struct simplify_multi
static inline void apply(MultiGeometry const& multi, MultiGeometry& out,
Distance const& max_distance, Strategy const& strategy)
{
- traits::resize<MultiGeometry>::apply(out, boost::size(multi));
+ range::clear(out);
+
+ typedef typename boost::range_value<MultiGeometry>::type single_type;
- typename boost::range_iterator<MultiGeometry>::type it_out
- = boost::begin(out);
for (typename boost::range_iterator<MultiGeometry const>::type
- it_in = boost::begin(multi);
- it_in != boost::end(multi);
- ++it_in, ++it_out)
+ it = boost::begin(multi); it != boost::end(multi); ++it)
{
- Policy::apply(*it_in, *it_out, max_distance, strategy);
+ single_type single_out;
+ Policy::apply(*it, single_out, max_distance, strategy);
+ if (! geometry::is_empty(single_out))
+ {
+ range::push_back(out, single_out);
+ }
}
}
};
@@ -236,7 +376,7 @@ struct simplify<Point, point_tag>
}
};
-
+// Linestring, keep 2 points (unless those points are the same)
template <typename Linestring>
struct simplify<Linestring, linestring_tag>
: detail::simplify::simplify_range<2>
@@ -244,13 +384,7 @@ struct simplify<Linestring, linestring_tag>
template <typename Ring>
struct simplify<Ring, ring_tag>
- : detail::simplify::simplify_range
- <
- core_detail::closure::minimum_ring_size
- <
- geometry::closure<Ring>::value
- >::value
- >
+ : detail::simplify::simplify_ring
{};
template <typename Polygon>
diff --git a/boost/geometry/core/radius.hpp b/boost/geometry/core/radius.hpp
index 6cbf6ac8f2..eef812e9ae 100644
--- a/boost/geometry/core/radius.hpp
+++ b/boost/geometry/core/radius.hpp
@@ -223,8 +223,8 @@ template <typename Geometry, std::size_t Dimension>
struct radius_access<srs_sphere_tag, Geometry, Dimension, boost::false_type>
: detail::radius_access<srs_sphere_tag, Geometry, Dimension>
{
- BOOST_STATIC_ASSERT(Dimension == 0);
- //BOOST_STATIC_ASSERT(Dimension < 3);
+ //BOOST_STATIC_ASSERT(Dimension == 0);
+ BOOST_STATIC_ASSERT(Dimension < 3);
};
template <typename Geometry>
@@ -237,8 +237,8 @@ template <typename Geometry, std::size_t Dimension>
struct radius_access<srs_spheroid_tag, Geometry, Dimension, boost::false_type>
: detail::radius_access<srs_spheroid_tag, Geometry, Dimension>
{
- BOOST_STATIC_ASSERT(Dimension == 0 || Dimension == 2);
- //BOOST_STATIC_ASSERT(Dimension < 3);
+ //BOOST_STATIC_ASSERT(Dimension == 0 || Dimension == 2);
+ BOOST_STATIC_ASSERT(Dimension < 3);
};
} // namespace core_dispatch
diff --git a/boost/geometry/formulas/andoyer_inverse.hpp b/boost/geometry/formulas/andoyer_inverse.hpp
index d0056d16c6..7513e3b70d 100644
--- a/boost/geometry/formulas/andoyer_inverse.hpp
+++ b/boost/geometry/formulas/andoyer_inverse.hpp
@@ -1,5 +1,7 @@
// Boost.Geometry
+// Copyright (c) 2018 Adam Wulkiewicz, Lodz, Poland.
+
// Copyright (c) 2015-2017 Oracle and/or its affiliates.
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -15,7 +17,6 @@
#include <boost/math/constants/constants.hpp>
#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/util/condition.hpp>
#include <boost/geometry/util/math.hpp>
@@ -116,7 +117,7 @@ public:
CT const dd = -(f/CT(4))*(H*K+G*L);
- CT const a = get_radius<0>(spheroid);
+ CT const a = CT(get_radius<0>(spheroid));
result.distance = a * (d + dd);
}
@@ -219,10 +220,12 @@ public:
if (BOOST_GEOMETRY_CONDITION(CalcQuantities))
{
+ CT const b = CT(get_radius<2>(spheroid));
+
typedef differential_quantities<CT, EnableReducedLength, EnableGeodesicScale, 1> quantities;
quantities::apply(dlon, sin_lat1, cos_lat1, sin_lat2, cos_lat2,
result.azimuth, result.reverse_azimuth,
- get_radius<2>(spheroid), f,
+ b, f,
result.reduced_length, result.geodesic_scale);
}
diff --git a/boost/geometry/formulas/elliptic_arc_length.hpp b/boost/geometry/formulas/elliptic_arc_length.hpp
index 75881f3d0d..65c8f60226 100644
--- a/boost/geometry/formulas/elliptic_arc_length.hpp
+++ b/boost/geometry/formulas/elliptic_arc_length.hpp
@@ -14,7 +14,6 @@
#include <boost/math/constants/constants.hpp>
#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/util/condition.hpp>
#include <boost/geometry/util/math.hpp>
@@ -46,14 +45,45 @@ public :
bool meridian;
};
+ template <typename T>
+ static bool meridian_not_crossing_pole(T lat1, T lat2, CT diff)
+ {
+ CT half_pi = math::pi<CT>()/CT(2);
+ return math::equals(diff, CT(0)) ||
+ (math::equals(lat2, half_pi) && math::equals(lat1, -half_pi));
+ }
+
+ static bool meridian_crossing_pole(CT diff)
+ {
+ return math::equals(math::abs(diff), math::pi<CT>());
+ }
+
+
+ template <typename T, typename Spheroid>
+ static CT meridian_not_crossing_pole_dist(T lat1, T lat2, Spheroid const& spheroid)
+ {
+ return math::abs(apply(lat2, spheroid) - apply(lat1, spheroid));
+ }
+
+ template <typename T, typename Spheroid>
+ static CT meridian_crossing_pole_dist(T lat1, T lat2, Spheroid const& spheroid)
+ {
+ CT c0 = 0;
+ CT half_pi = math::pi<CT>()/CT(2);
+ CT lat_sign = 1;
+ if (lat1+lat2 < c0)
+ {
+ lat_sign = CT(-1);
+ }
+ return math::abs(lat_sign * CT(2) * apply(half_pi, spheroid)
+ - apply(lat1, spheroid) - apply(lat2, spheroid));
+ }
+
template <typename T, typename Spheroid>
static result apply(T lon1, T lat1, T lon2, T lat2, Spheroid const& spheroid)
{
result res;
- CT c0 = 0;
- CT pi = math::pi<CT>();
- CT half_pi = pi/CT(2);
CT diff = geometry::math::longitude_distance_signed<geometry::radian>(lon1, lon2);
if (lat1 > lat2)
@@ -61,24 +91,14 @@ public :
std::swap(lat1, lat2);
}
- if ( math::equals(diff, c0) ||
- (math::equals(lat2, half_pi) && math::equals(lat1, -half_pi)) )
+ if ( meridian_not_crossing_pole(lat1, lat2, diff) )
{
- // single meridian not crossing pole
- res.distance = apply(lat2, spheroid) - apply(lat1, spheroid);
+ res.distance = meridian_not_crossing_pole_dist(lat1, lat2, spheroid);
res.meridian = true;
}
-
- if (math::equals(math::abs(diff), pi))
+ else if ( meridian_crossing_pole(diff) )
{
- // meridian crosses pole
- CT lat_sign = 1;
- if (lat1+lat2 < c0)
- {
- lat_sign = CT(-1);
- }
- res.distance = math::abs(lat_sign * CT(2) * apply(half_pi, spheroid)
- - apply(lat1, spheroid) - apply(lat2, spheroid));
+ res.distance = meridian_crossing_pole_dist(lat1, lat2, spheroid);
res.meridian = true;
}
return res;
diff --git a/boost/geometry/formulas/sjoberg_intersection.hpp b/boost/geometry/formulas/sjoberg_intersection.hpp
index 665d90308e..54478e3062 100644
--- a/boost/geometry/formulas/sjoberg_intersection.hpp
+++ b/boost/geometry/formulas/sjoberg_intersection.hpp
@@ -15,7 +15,6 @@
#include <boost/math/constants/constants.hpp>
#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/util/condition.hpp>
#include <boost/geometry/util/math.hpp>
diff --git a/boost/geometry/formulas/thomas_direct.hpp b/boost/geometry/formulas/thomas_direct.hpp
index 748960b01b..6a7ac3e414 100644
--- a/boost/geometry/formulas/thomas_direct.hpp
+++ b/boost/geometry/formulas/thomas_direct.hpp
@@ -15,7 +15,6 @@
#include <boost/math/constants/constants.hpp>
#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/util/condition.hpp>
#include <boost/geometry/util/math.hpp>
diff --git a/boost/geometry/formulas/thomas_inverse.hpp b/boost/geometry/formulas/thomas_inverse.hpp
index 0853a36980..cf69c9df1d 100644
--- a/boost/geometry/formulas/thomas_inverse.hpp
+++ b/boost/geometry/formulas/thomas_inverse.hpp
@@ -1,7 +1,8 @@
// Boost.Geometry
-// Copyright (c) 2015-2016 Oracle and/or its affiliates.
+// Copyright (c) 2015-2018 Oracle and/or its affiliates.
+// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
// Use, modification and distribution is subject to the Boost Software License,
@@ -15,7 +16,6 @@
#include <boost/math/constants/constants.hpp>
#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/util/condition.hpp>
#include <boost/geometry/util/math.hpp>
@@ -178,7 +178,7 @@ public:
CT const pi = math::pi<CT>();
- if (BOOST_GEOMETRY_CONDITION(EnableAzimuth))
+ if (BOOST_GEOMETRY_CONDITION(CalcFwdAzimuth))
{
CT alpha1 = v + u;
if (alpha1 > pi)
@@ -189,7 +189,7 @@ public:
result.azimuth = alpha1;
}
- if (BOOST_GEOMETRY_CONDITION(EnableReverseAzimuth))
+ if (BOOST_GEOMETRY_CONDITION(CalcRevAzimuth))
{
CT alpha2 = pi - (v - u);
if (alpha2 > pi)
diff --git a/boost/geometry/formulas/vertex_latitude.hpp b/boost/geometry/formulas/vertex_latitude.hpp
index 755067b08d..92822e01a3 100644
--- a/boost/geometry/formulas/vertex_latitude.hpp
+++ b/boost/geometry/formulas/vertex_latitude.hpp
@@ -12,11 +12,13 @@
#ifndef BOOST_GEOMETRY_FORMULAS_MAXIMUM_LATITUDE_HPP
#define BOOST_GEOMETRY_FORMULAS_MAXIMUM_LATITUDE_HPP
-#include <boost/geometry/core/srs.hpp>
+
#include <boost/geometry/formulas/flattening.hpp>
#include <boost/geometry/formulas/spherical.hpp>
+
#include <boost/mpl/assert.hpp>
+
namespace boost { namespace geometry { namespace formula
{
diff --git a/boost/geometry/formulas/vertex_longitude.hpp b/boost/geometry/formulas/vertex_longitude.hpp
index 00f2fd4e7a..cf63c10a0a 100644
--- a/boost/geometry/formulas/vertex_longitude.hpp
+++ b/boost/geometry/formulas/vertex_longitude.hpp
@@ -14,7 +14,7 @@
#include <boost/geometry/formulas/spherical.hpp>
#include <boost/geometry/formulas/flattening.hpp>
-#include <boost/geometry/core/srs.hpp>
+
#include <boost/mpl/assert.hpp>
#include <boost/math/special_functions/hypot.hpp>
@@ -209,12 +209,10 @@ public:
+ C31 * (sin2_sig3 - sin2_sig1)
+ C32 * (sin4_sig3 - sin4_sig1));
- int sign = c1;
- if (bet3 < c0)
- {
- sign = cminus1;
- }
-
+ CT const sign = bet3 >= c0
+ ? c1
+ : cminus1;
+
CT const dlon_max = omg13 - sign * f * sin_alp0 * I3;
return dlon_max;
diff --git a/boost/geometry/formulas/vincenty_direct.hpp b/boost/geometry/formulas/vincenty_direct.hpp
index 1697e5fb63..b72379defe 100644
--- a/boost/geometry/formulas/vincenty_direct.hpp
+++ b/boost/geometry/formulas/vincenty_direct.hpp
@@ -2,8 +2,8 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// This file was modified by Oracle on 2014, 2016.
-// Modifications copyright (c) 2014-2016 Oracle and/or its affiliates.
+// This file was modified by Oracle on 2014, 2016, 2017.
+// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -18,7 +18,6 @@
#include <boost/math/constants/constants.hpp>
#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/util/condition.hpp>
#include <boost/geometry/util/math.hpp>
diff --git a/boost/geometry/formulas/vincenty_inverse.hpp b/boost/geometry/formulas/vincenty_inverse.hpp
index 032e16e291..7bfcf69a9d 100644
--- a/boost/geometry/formulas/vincenty_inverse.hpp
+++ b/boost/geometry/formulas/vincenty_inverse.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2018 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2014, 2016, 2017.
// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
@@ -18,7 +19,6 @@
#include <boost/math/constants/constants.hpp>
#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/util/condition.hpp>
#include <boost/geometry/util/math.hpp>
@@ -79,6 +79,7 @@ public:
return result;
}
+ CT const c0 = 0;
CT const c1 = 1;
CT const c2 = 2;
CT const c3 = 3;
@@ -145,7 +146,7 @@ public:
CT cos_sigma = sin_U1 * sin_U2 + cos_U1 * cos_U2 * cos_lambda; // (15)
sin_alpha = cos_U1 * cos_U2 * sin_lambda / sin_sigma; // (17)
cos2_alpha = c1 - math::sqr(sin_alpha);
- cos_2sigma_m = math::equals(cos2_alpha, 0) ? 0 : cos_sigma - c2 * sin_U1 * sin_U2 / cos2_alpha; // (18)
+ cos_2sigma_m = math::equals(cos2_alpha, c0) ? c0 : cos_sigma - c2 * sin_U1 * sin_U2 / cos2_alpha; // (18)
cos2_2sigma_m = math::sqr(cos_2sigma_m);
CT C = f/c16 * cos2_alpha * (c4 + f * (c4 - c3 * cos2_alpha)); // (10)
@@ -163,10 +164,6 @@ public:
{
// Oops getting hard here
// (again, problem is that ttmath cannot divide by doubles, which is OK)
- CT const c1 = 1;
- CT const c2 = 2;
- CT const c3 = 3;
- CT const c4 = 4;
CT const c6 = 6;
CT const c47 = 47;
CT const c74 = 74;
diff --git a/boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp b/boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp
index c9c1bc7b61..fb7446c398 100644
--- a/boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp
+++ b/boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp
@@ -15,7 +15,6 @@
#include <boost/polygon/polygon.hpp>
-#include <boost/iterator.hpp>
#include <boost/iterator/iterator_facade.hpp>
diff --git a/boost/geometry/geometries/polygon.hpp b/boost/geometry/geometries/polygon.hpp
index 5d8a0f21f7..76e76cef19 100644
--- a/boost/geometry/geometries/polygon.hpp
+++ b/boost/geometry/geometries/polygon.hpp
@@ -3,7 +3,7 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
-// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2014-2018 Adam Wulkiewicz, Lodz, Poland.
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
@@ -47,9 +47,9 @@ namespace model
\tparam Closed true for closed polygons (last point == first point),
false open points
\tparam PointList container type for points,
- for example std::vector, std::list, std::deque
+ for example std::vector, std::deque
\tparam RingList container type for inner rings,
- for example std::vector, std::list, std::deque
+ for example std::vector, std::deque
\tparam PointAlloc container-allocator-type, for the points
\tparam RingAlloc container-allocator-type, for the rings
\note The container collecting the points in the rings can be different
diff --git a/boost/geometry/geometry.hpp b/boost/geometry/geometry.hpp
index aa80701104..ec9459b405 100644
--- a/boost/geometry/geometry.hpp
+++ b/boost/geometry/geometry.hpp
@@ -4,8 +4,8 @@
// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
-// This file was modified by Oracle on 2014, 2015, 2016.
-// Modifications copyright (c) 2014-2016 Oracle and/or its affiliates.
+// This file was modified by Oracle on 2014-2018.
+// Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
@@ -31,7 +31,6 @@
#include <boost/geometry/core/point_order.hpp>
#include <boost/geometry/core/point_type.hpp>
#include <boost/geometry/core/ring_type.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/core/tag.hpp>
#include <boost/geometry/core/tag_cast.hpp>
#include <boost/geometry/core/tags.hpp>
@@ -61,6 +60,7 @@
#include <boost/geometry/algorithms/correct.hpp>
#include <boost/geometry/algorithms/covered_by.hpp>
#include <boost/geometry/algorithms/crosses.hpp>
+#include <boost/geometry/algorithms/densify.hpp>
#include <boost/geometry/algorithms/difference.hpp>
#include <boost/geometry/algorithms/disjoint.hpp>
#include <boost/geometry/algorithms/distance.hpp>
@@ -96,6 +96,8 @@
// check includes all concepts
#include <boost/geometry/geometries/concepts/check.hpp>
+#include <boost/geometry/srs/srs.hpp>
+
#include <boost/geometry/util/for_each_coordinate.hpp>
#include <boost/geometry/util/math.hpp>
#include <boost/geometry/util/select_coordinate_type.hpp>
diff --git a/boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp b/boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp
index 2d08d89ef7..0062402d45 100644
--- a/boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp
+++ b/boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp
@@ -2,7 +2,7 @@
//
// R-tree scoped deallocator
//
-// Copyright (c) 2011-2015 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
//
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -18,10 +18,13 @@ namespace detail { namespace rtree {
template <typename Alloc>
class scoped_deallocator
{
+ typedef boost::container::allocator_traits<Alloc> alloc_traits;
+
scoped_deallocator(scoped_deallocator const&);
scoped_deallocator & operator=(scoped_deallocator const&);
public:
- typedef typename Alloc::pointer pointer;
+ typedef typename alloc_traits::pointer pointer;
+
inline scoped_deallocator(pointer p, Alloc & a)
: m_ptr(p), m_alloc(a)
{}
@@ -29,7 +32,7 @@ public:
{
if ( m_ptr )
{
- boost::container::allocator_traits<Alloc>::deallocate(m_alloc, m_ptr, 1);
+ alloc_traits::deallocate(m_alloc, m_ptr, 1);
}
}
inline void release()
diff --git a/boost/geometry/index/detail/rtree/node/variant_dynamic.hpp b/boost/geometry/index/detail/rtree/node/variant_dynamic.hpp
index e63cfd39ac..52b253ccf6 100644
--- a/boost/geometry/index/detail/rtree/node/variant_dynamic.hpp
+++ b/boost/geometry/index/detail/rtree/node/variant_dynamic.hpp
@@ -2,7 +2,7 @@
//
// R-tree nodes based on Boost.Variant, storing dynamic-size containers
//
-// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
//
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -22,18 +22,17 @@ namespace detail { namespace rtree {
template <typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
struct variant_internal_node
{
- typedef boost::container::vector
+ typedef rtree::ptr_pair<Box, typename Allocators::node_pointer> element_type;
+ typedef typename boost::container::allocator_traits
<
- rtree::ptr_pair<Box, typename Allocators::node_pointer>,
- typename Allocators::node_allocator_type::template rebind
- <
- rtree::ptr_pair<Box, typename Allocators::node_pointer>
- >::other
- > elements_type;
+ typename Allocators::node_allocator_type
+ >::template rebind_alloc<element_type> allocator_type;
+
+ typedef boost::container::vector<element_type, allocator_type> elements_type;
template <typename Al>
inline variant_internal_node(Al const& al)
- : elements(al)
+ : elements(allocator_type(al))
{}
elements_type elements;
@@ -42,18 +41,16 @@ struct variant_internal_node
template <typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
struct variant_leaf
{
- typedef boost::container::vector
+ typedef typename boost::container::allocator_traits
<
- Value,
- typename Allocators::node_allocator_type::template rebind
- <
- Value
- >::other
- > elements_type;
-
- template <typename Al>
+ typename Allocators::node_allocator_type
+ >::template rebind_alloc<Value> allocator_type;
+
+ typedef boost::container::vector<Value, allocator_type> elements_type;
+
+ template <typename Al>
inline variant_leaf(Al const& al)
- : elements(al)
+ : elements(allocator_type(al))
{}
elements_type elements;
@@ -92,38 +89,59 @@ struct visitor<Value, Parameters, Box, Allocators, node_variant_dynamic_tag, IsV
// allocators
+template <typename Allocator, typename Value, typename Parameters, typename Box, typename Tag>
+struct node_alloc
+{
+ typedef typename node
+ <
+ Value, Parameters, Box,
+ allocators<Allocator, Value, Parameters, Box, Tag>,
+ Tag
+ >::type node_type;
+
+ typedef typename boost::container::allocator_traits
+ <
+ Allocator
+ >::template rebind_alloc<node_type> type;
+
+ typedef boost::container::allocator_traits<type> traits;
+};
+
+
template <typename Allocator, typename Value, typename Parameters, typename Box>
class allocators<Allocator, Value, Parameters, Box, node_variant_dynamic_tag>
- : public Allocator::template rebind<
- typename node<
- Value, Parameters, Box,
- allocators<Allocator, Value, Parameters, Box, node_variant_dynamic_tag>,
- node_variant_dynamic_tag
+ : public detail::rtree::node_alloc
+ <
+ Allocator, Value, Parameters, Box, node_variant_dynamic_tag
>::type
- >::other
{
- typedef typename Allocator::template rebind<
- Value
- >::other value_allocator_type;
+ typedef detail::rtree::node_alloc
+ <
+ Allocator, Value, Parameters, Box, node_variant_dynamic_tag
+ > node_alloc;
public:
- typedef Allocator allocator_type;
+ typedef typename node_alloc::type node_allocator_type;
+ typedef typename node_alloc::traits::pointer node_pointer;
- typedef Value value_type;
- typedef typename value_allocator_type::reference reference;
- typedef typename value_allocator_type::const_reference const_reference;
- typedef typename value_allocator_type::size_type size_type;
- typedef typename value_allocator_type::difference_type difference_type;
- typedef typename value_allocator_type::pointer pointer;
- typedef typename value_allocator_type::const_pointer const_pointer;
+private:
+ typedef typename boost::container::allocator_traits
+ <
+ node_allocator_type // node_allocator_type for consistency with variant_leaf
+ >::template rebind_alloc<Value> value_allocator_type;
+ typedef boost::container::allocator_traits<value_allocator_type> value_allocator_traits;
+
- typedef typename Allocator::template rebind<
- typename node<Value, Parameters, Box, allocators, node_variant_dynamic_tag>::type
- >::other::pointer node_pointer;
+public:
+ typedef Allocator allocator_type;
- typedef typename Allocator::template rebind<
- typename node<Value, Parameters, Box, allocators, node_variant_dynamic_tag>::type
- >::other node_allocator_type;
+ typedef Value value_type;
+ typedef typename value_allocator_traits::reference reference;
+ typedef typename value_allocator_traits::const_reference const_reference;
+ typedef typename value_allocator_traits::size_type size_type;
+ typedef typename value_allocator_traits::difference_type difference_type;
+ typedef typename value_allocator_traits::pointer pointer;
+ typedef typename value_allocator_traits::const_pointer const_pointer;
inline allocators()
: node_allocator_type()
@@ -185,7 +203,7 @@ struct create_variant_node
scoped_deallocator<AllocNode> deallocator(p, alloc_node);
- Al::construct(alloc_node, boost::pointer_traits<P>::to_address(p), Node(alloc_node)); // implicit cast to Variant
+ Al::construct(alloc_node, boost::to_address(p), Node(alloc_node)); // implicit cast to Variant
deallocator.release();
return p;
diff --git a/boost/geometry/index/detail/rtree/node/variant_static.hpp b/boost/geometry/index/detail/rtree/node/variant_static.hpp
index 174ceb7e7f..c30998d683 100644
--- a/boost/geometry/index/detail/rtree/node/variant_static.hpp
+++ b/boost/geometry/index/detail/rtree/node/variant_static.hpp
@@ -2,7 +2,7 @@
//
// R-tree nodes based on Boost.Variant, storing static-size containers
//
-// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
//
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -80,36 +80,37 @@ struct visitor<Value, Parameters, Box, Allocators, node_variant_static_tag, IsVi
template <typename Allocator, typename Value, typename Parameters, typename Box>
class allocators<Allocator, Value, Parameters, Box, node_variant_static_tag>
- : public Allocator::template rebind<
- typename node<
- Value, Parameters, Box,
- allocators<Allocator, Value, Parameters, Box, node_variant_static_tag>,
- node_variant_static_tag
+ : public detail::rtree::node_alloc
+ <
+ Allocator, Value, Parameters, Box, node_variant_static_tag
>::type
- >::other
{
- typedef typename Allocator::template rebind<
- Value
- >::other value_allocator_type;
+ typedef detail::rtree::node_alloc
+ <
+ Allocator, Value, Parameters, Box, node_variant_static_tag
+ > node_alloc;
+
+public:
+ typedef typename node_alloc::type node_allocator_type;
+ typedef typename node_alloc::traits::pointer node_pointer;
+
+private:
+ typedef typename boost::container::allocator_traits
+ <
+ node_allocator_type
+ >::template rebind_alloc<Value> value_allocator_type;
+ typedef boost::container::allocator_traits<value_allocator_type> value_allocator_traits;
public:
typedef Allocator allocator_type;
typedef Value value_type;
- typedef value_type & reference;
- typedef const value_type & const_reference;
- typedef typename value_allocator_type::size_type size_type;
- typedef typename value_allocator_type::difference_type difference_type;
- typedef typename value_allocator_type::pointer pointer;
- typedef typename value_allocator_type::const_pointer const_pointer;
-
- typedef typename Allocator::template rebind<
- typename node<Value, Parameters, Box, allocators, node_variant_static_tag>::type
- >::other::pointer node_pointer;
-
- typedef typename Allocator::template rebind<
- typename node<Value, Parameters, Box, allocators, node_variant_static_tag>::type
- >::other node_allocator_type;
+ typedef typename value_allocator_traits::reference reference;
+ typedef typename value_allocator_traits::const_reference const_reference;
+ typedef typename value_allocator_traits::size_type size_type;
+ typedef typename value_allocator_traits::difference_type difference_type;
+ typedef typename value_allocator_traits::pointer pointer;
+ typedef typename value_allocator_traits::const_pointer const_pointer;
inline allocators()
: node_allocator_type()
diff --git a/boost/geometry/index/detail/rtree/node/weak_dynamic.hpp b/boost/geometry/index/detail/rtree/node/weak_dynamic.hpp
index 05fef59e52..eadda62a9d 100644
--- a/boost/geometry/index/detail/rtree/node/weak_dynamic.hpp
+++ b/boost/geometry/index/detail/rtree/node/weak_dynamic.hpp
@@ -2,7 +2,7 @@
//
// R-tree nodes based on static conversion, storing dynamic-size containers
//
-// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
//
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -19,18 +19,17 @@ template <typename Value, typename Parameters, typename Box, typename Allocators
struct weak_internal_node
: public weak_node<Value, Parameters, Box, Allocators, Tag>
{
- typedef boost::container::vector
+ typedef rtree::ptr_pair<Box, typename Allocators::node_pointer> element_type;
+ typedef typename boost::container::allocator_traits
<
- rtree::ptr_pair<Box, typename Allocators::node_pointer>,
- typename Allocators::internal_node_allocator_type::template rebind
- <
- rtree::ptr_pair<Box, typename Allocators::node_pointer>
- >::other
- > elements_type;
+ typename Allocators::internal_node_allocator_type
+ >::template rebind_alloc<element_type> allocator_type;
+
+ typedef boost::container::vector<element_type, allocator_type> elements_type;
template <typename Al>
inline weak_internal_node(Al const& al)
- : elements(al)
+ : elements(allocator_type(al))
{}
elements_type elements;
@@ -40,18 +39,16 @@ template <typename Value, typename Parameters, typename Box, typename Allocators
struct weak_leaf
: public weak_node<Value, Parameters, Box, Allocators, Tag>
{
- typedef boost::container::vector
+ typedef typename boost::container::allocator_traits
<
- Value,
- typename Allocators::leaf_allocator_type::template rebind
- <
- Value
- >::other
- > elements_type;
+ typename Allocators::leaf_allocator_type
+ >::template rebind_alloc<Value> allocator_type;
+
+ typedef boost::container::vector<Value, allocator_type> elements_type;
template <typename Al>
inline weak_leaf(Al const& al)
- : elements(al)
+ : elements(allocator_type(al))
{}
elements_type elements;
@@ -87,49 +84,80 @@ struct visitor<Value, Parameters, Box, Allocators, node_weak_dynamic_tag, IsVisi
// allocators
-template <typename Allocator, typename Value, typename Parameters, typename Box>
-class allocators<Allocator, Value, Parameters, Box, node_weak_dynamic_tag>
- : public Allocator::template rebind<
- typename internal_node<
+template <typename Allocator, typename Value, typename Parameters, typename Box, typename Tag>
+struct internal_node_alloc
+{
+ typedef typename internal_nod
+ <
Value, Parameters, Box,
- allocators<Allocator, Value, Parameters, Box, node_weak_dynamic_tag>,
- node_weak_dynamic_tag
- >::type
- >::other
- , public Allocator::template rebind<
- typename leaf<
+ allocators<Allocator, Value, Parameters, Box, Tag>,
+ Tag
+ >::type node_type;
+
+ typedef typename boost::container::allocator_traits
+ <
+ Allocator
+ >::template rebind_alloc<node_type> type;
+};
+
+template <typename Allocator, typename Value, typename Parameters, typename Box, typename Tag>
+struct leaf_alloc
+{
+ typedef typename leaf
+ <
Value, Parameters, Box,
- allocators<Allocator, Value, Parameters, Box, node_weak_dynamic_tag>,
- node_weak_dynamic_tag
- >::type
- >::other
+ allocators<Allocator, Value, Parameters, Box, Tag>,
+ Tag
+ >::type node_type;
+
+ typedef typename ::boost::container::allocator_traits
+ <
+ Allocator
+ >::template rebind_alloc<node_type> type;
+};
+
+template <typename Allocator, typename Value, typename Parameters, typename Box>
+class allocators<Allocator, Value, Parameters, Box, node_weak_dynamic_tag>
+ : public internal_node_alloc<Allocator, Value, Parameters, Box, node_weak_dynamic_tag>::type
+ , public leaf_alloc<Allocator, Value, Parameters, Box, node_weak_dynamic_tag>::type
{
- typedef typename Allocator::template rebind<
- Value
- >::other value_allocator_type;
+ typedef detail::rtree::internal_node_alloc
+ <
+ Allocator, Value, Parameters, Box, node_weak_dynamic_tag
+ > internal_node_alloc;
+
+ typedef detail::rtree::leaf_alloc
+ <
+ Allocator, Value, Parameters, Box, node_weak_dynamic_tag
+ > leaf_alloc;
+
+ typedef detail::rtree::node_alloc
+ <
+ Allocator, Value, Parameters, Box, node_weak_dynamic_tag
+ > node_alloc;
public:
+ typedef typename internal_node_alloc::type internal_node_allocator_type;
+ typedef typename leaf_alloc::type leaf_allocator_type;
+ typedef typename node_alloc::traits::pointer node_pointer;
+
+private:
+ typedef typename boost::container::allocator_traits
+ <
+ leaf_allocator_type // leaf_allocator_type for consistency with weak_leaf
+ >::template rebind_alloc<Value> value_allocator_type;
+ typedef boost::container::allocator_traits<value_allocator_type> value_allocator_traits;
+
+public:
typedef Allocator allocator_type;
typedef Value value_type;
- typedef typename value_allocator_type::reference reference;
- typedef typename value_allocator_type::const_reference const_reference;
- typedef typename value_allocator_type::size_type size_type;
- typedef typename value_allocator_type::difference_type difference_type;
- typedef typename value_allocator_type::pointer pointer;
- typedef typename value_allocator_type::const_pointer const_pointer;
-
- typedef typename Allocator::template rebind<
- typename node<Value, Parameters, Box, allocators, node_weak_dynamic_tag>::type
- >::other::pointer node_pointer;
-
- typedef typename Allocator::template rebind<
- typename internal_node<Value, Parameters, Box, allocators, node_weak_dynamic_tag>::type
- >::other internal_node_allocator_type;
-
- typedef typename Allocator::template rebind<
- typename leaf<Value, Parameters, Box, allocators, node_weak_dynamic_tag>::type
- >::other leaf_allocator_type;
+ typedef typename value_allocator_traits::reference reference;
+ typedef typename value_allocator_traits::const_reference const_reference;
+ typedef typename value_allocator_traits::size_type size_type;
+ typedef typename value_allocator_traits::difference_type difference_type;
+ typedef typename value_allocator_traits::pointer pointer;
+ typedef typename value_allocator_traits::const_pointer const_pointer;
inline allocators()
: internal_node_allocator_type()
@@ -199,7 +227,7 @@ struct create_weak_node
scoped_deallocator<AllocNode> deallocator(p, alloc_node);
- Al::construct(alloc_node, boost::pointer_traits<P>::to_address(p), alloc_node);
+ Al::construct(alloc_node, boost::to_address(p), alloc_node);
deallocator.release();
return p;
diff --git a/boost/geometry/index/detail/rtree/node/weak_static.hpp b/boost/geometry/index/detail/rtree/node/weak_static.hpp
index 632e35678a..ac9e69cecc 100644
--- a/boost/geometry/index/detail/rtree/node/weak_static.hpp
+++ b/boost/geometry/index/detail/rtree/node/weak_static.hpp
@@ -2,7 +2,7 @@
//
// R-tree nodes based on static conversion, storing static-size containers
//
-// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
//
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -75,47 +75,46 @@ struct visitor<Value, Parameters, Box, Allocators, node_weak_static_tag, IsVisit
template <typename Allocator, typename Value, typename Parameters, typename Box>
class allocators<Allocator, Value, Parameters, Box, node_weak_static_tag>
- : public Allocator::template rebind<
- typename internal_node<
- Value, Parameters, Box,
- allocators<Allocator, Value, Parameters, Box, node_weak_static_tag>,
- node_weak_static_tag
- >::type
- >::other
- , public Allocator::template rebind<
- typename leaf<
- Value, Parameters, Box,
- allocators<Allocator, Value, Parameters, Box, node_weak_static_tag>,
- node_weak_static_tag
- >::type
- >::other
+ : public detail::rtree::internal_node_alloc<Allocator, Value, Parameters, Box, node_weak_static_tag>::type
+ , public detail::rtree::leaf_alloc<Allocator, Value, Parameters, Box, node_weak_static_tag>::type
{
- typedef typename Allocator::template rebind<
- Value
- >::other value_allocator_type;
+ typedef detail::rtree::internal_node_alloc
+ <
+ Allocator, Value, Parameters, Box, node_weak_static_tag
+ > internal_node_alloc;
+
+ typedef detail::rtree::leaf_alloc
+ <
+ Allocator, Value, Parameters, Box, node_weak_static_tag
+ > leaf_alloc;
+
+ typedef detail::rtree::node_alloc
+ <
+ Allocator, Value, Parameters, Box, node_weak_static_tag
+ > node_alloc;
+
+public:
+ typedef typename internal_node_alloc::type internal_node_allocator_type;
+ typedef typename leaf_alloc::type leaf_allocator_type;
+ typedef typename node_alloc::traits::pointer node_pointer;
+
+private:
+ typedef typename boost::container::allocator_traits
+ <
+ leaf_allocator_type
+ >::template rebind_alloc<Value> value_allocator_type;
+ typedef boost::container::allocator_traits<value_allocator_type> value_allocator_traits;
public:
typedef Allocator allocator_type;
typedef Value value_type;
- typedef value_type & reference;
- typedef const value_type & const_reference;
- typedef typename value_allocator_type::size_type size_type;
- typedef typename value_allocator_type::difference_type difference_type;
- typedef typename value_allocator_type::pointer pointer;
- typedef typename value_allocator_type::const_pointer const_pointer;
-
- typedef typename Allocator::template rebind<
- typename node<Value, Parameters, Box, allocators, node_weak_static_tag>::type
- >::other::pointer node_pointer;
-
- typedef typename Allocator::template rebind<
- typename internal_node<Value, Parameters, Box, allocators, node_weak_static_tag>::type
- >::other internal_node_allocator_type;
-
- typedef typename Allocator::template rebind<
- typename leaf<Value, Parameters, Box, allocators, node_weak_static_tag>::type
- >::other leaf_allocator_type;
+ typedef typename value_allocator_traits::reference reference;
+ typedef typename value_allocator_traits::const_reference const_reference;
+ typedef typename value_allocator_traits::size_type size_type;
+ typedef typename value_allocator_traits::difference_type difference_type;
+ typedef typename value_allocator_traits::pointer pointer;
+ typedef typename value_allocator_traits::const_pointer const_pointer;
inline allocators()
: internal_node_allocator_type()
diff --git a/boost/geometry/index/inserter.hpp b/boost/geometry/index/inserter.hpp
index 7c489bc3f1..30280d4cb0 100644
--- a/boost/geometry/index/inserter.hpp
+++ b/boost/geometry/index/inserter.hpp
@@ -20,10 +20,15 @@
namespace boost { namespace geometry { namespace index {
template <class Container>
-class insert_iterator :
- public std::iterator<std::output_iterator_tag, void, void, void, void>
+class insert_iterator
{
public:
+ typedef std::output_iterator_tag iterator_category;
+ typedef void value_type;
+ typedef void difference_type;
+ typedef void pointer;
+ typedef void reference;
+
typedef Container container_type;
inline explicit insert_iterator(Container & c)
diff --git a/boost/geometry/index/predicates.hpp b/boost/geometry/index/predicates.hpp
index f4e22bdd55..a79e3f173a 100644
--- a/boost/geometry/index/predicates.hpp
+++ b/boost/geometry/index/predicates.hpp
@@ -2,7 +2,7 @@
//
// Spatial query predicates
//
-// Copyright (c) 2011-2015 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
//
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -23,9 +23,10 @@ namespace boost { namespace geometry { namespace index {
/*!
\brief Generate \c contains() predicate.
-Generate a predicate defining Value and Geometry relationship.
-Value will be returned by the query if <tt>bg::within(Geometry, Indexable)</tt>
-returns true.
+Generate a predicate defining Value and Geometry relationship. With this
+predicate query returns indexed Values that contain passed Geometry.
+Value is returned by the query if <tt>bg::within(Geometry, Indexable)</tt>
+returns <tt>true</tt>.
\par Example
\verbatim
@@ -53,9 +54,10 @@ contains(Geometry const& g)
/*!
\brief Generate \c covered_by() predicate.
-Generate a predicate defining Value and Geometry relationship.
-Value will be returned by the query if <tt>bg::covered_by(Indexable, Geometry)</tt>
-returns true.
+Generate a predicate defining Value and Geometry relationship. With this
+predicate query returns indexed Values that are covered by passed Geometry.
+Value is returned by the query if <tt>bg::covered_by(Indexable, Geometry)</tt>
+returns <tt>true</tt>.
\par Example
\verbatim
@@ -83,9 +85,10 @@ covered_by(Geometry const& g)
/*!
\brief Generate \c covers() predicate.
-Generate a predicate defining Value and Geometry relationship.
-Value will be returned by the query if <tt>bg::covered_by(Geometry, Indexable)</tt>
-returns true.
+Generate a predicate defining Value and Geometry relationship. With this
+predicate query returns indexed Values that cover passed Geometry.
+Value is returned by the query if <tt>bg::covered_by(Geometry, Indexable)</tt>
+returns <tt>true</tt>.
\par Example
\verbatim
@@ -113,9 +116,10 @@ covers(Geometry const& g)
/*!
\brief Generate \c disjoint() predicate.
-Generate a predicate defining Value and Geometry relationship.
-Value will be returned by the query if <tt>bg::disjoint(Indexable, Geometry)</tt>
-returns true.
+Generate a predicate defining Value and Geometry relationship. With this
+predicate query returns indexed Values that are disjoint with passed Geometry.
+Value is returned by the query if <tt>bg::disjoint(Indexable, Geometry)</tt>
+returns <tt>true</tt>.
\par Example
\verbatim
@@ -143,9 +147,10 @@ disjoint(Geometry const& g)
/*!
\brief Generate \c intersects() predicate.
-Generate a predicate defining Value and Geometry relationship.
-Value will be returned by the query if <tt>bg::intersects(Indexable, Geometry)</tt>
-returns true.
+Generate a predicate defining Value and Geometry relationship. With this
+predicate query returns indexed Values that intersect passed Geometry.
+Value is returned by the query if <tt>bg::intersects(Indexable, Geometry)</tt>
+returns <tt>true</tt>.
\par Example
\verbatim
@@ -175,9 +180,10 @@ intersects(Geometry const& g)
/*!
\brief Generate \c overlaps() predicate.
-Generate a predicate defining Value and Geometry relationship.
-Value will be returned by the query if <tt>bg::overlaps(Indexable, Geometry)</tt>
-returns true.
+Generate a predicate defining Value and Geometry relationship. With this
+predicate query returns indexed Values that overlap passed Geometry.
+Value is returned by the query if <tt>bg::overlaps(Indexable, Geometry)</tt>
+returns <tt>true</tt>.
\par Example
\verbatim
@@ -207,9 +213,10 @@ overlaps(Geometry const& g)
/*!
\brief Generate \c touches() predicate.
-Generate a predicate defining Value and Geometry relationship.
-Value will be returned by the query if <tt>bg::touches(Indexable, Geometry)</tt>
-returns true.
+Generate a predicate defining Value and Geometry relationship. With this
+predicate query returns indexed Values that touch passed Geometry.
+Value is returned by the query if <tt>bg::touches(Indexable, Geometry)</tt>
+returns <tt>true</tt>.
\ingroup predicates
@@ -234,9 +241,10 @@ touches(Geometry const& g)
/*!
\brief Generate \c within() predicate.
-Generate a predicate defining Value and Geometry relationship.
-Value will be returned by the query if <tt>bg::within(Indexable, Geometry)</tt>
-returns true.
+Generate a predicate defining Value and Geometry relationship. With this
+predicate query returns indexed Values that are within passed Geometry.
+Value is returned by the query if <tt>bg::within(Indexable, Geometry)</tt>
+returns <tt>true</tt>.
\par Example
\verbatim
diff --git a/boost/geometry/index/rtree.hpp b/boost/geometry/index/rtree.hpp
index fb3bbe8a47..53c2661669 100644
--- a/boost/geometry/index/rtree.hpp
+++ b/boost/geometry/index/rtree.hpp
@@ -3,7 +3,7 @@
// R-tree implementation
//
// Copyright (c) 2008 Federico J. Fernandez.
-// Copyright (c) 2011-2017 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
//
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -16,8 +16,9 @@
#include <algorithm>
// Boost
-#include <boost/tuple/tuple.hpp>
+#include <boost/container/new_allocator.hpp>
#include <boost/move/move.hpp>
+#include <boost/tuple/tuple.hpp>
// Boost.Geometry
#include <boost/geometry/algorithms/detail/comparable_distance/interface.hpp>
@@ -149,7 +150,7 @@ template
typename Parameters,
typename IndexableGetter = index::indexable<Value>,
typename EqualTo = index::equal_to<Value>,
- typename Allocator = std::allocator<Value>
+ typename Allocator = boost::container::new_allocator<Value>
>
class rtree
{
diff --git a/boost/geometry/io/wkt/read.hpp b/boost/geometry/io/wkt/read.hpp
index 236690dc2c..9caa36cb47 100644
--- a/boost/geometry/io/wkt/read.hpp
+++ b/boost/geometry/io/wkt/read.hpp
@@ -517,11 +517,15 @@ inline bool initialize(tokenizer const& tokens,
{
it = tokens.begin();
end = tokens.end();
- if (it != end && boost::iequals(*it++, geometry_name))
+
+ if (it == end || ! boost::iequals(*it++, geometry_name))
{
- bool has_empty, has_z, has_m;
+ BOOST_THROW_EXCEPTION(read_wkt_exception(std::string("Should start with '") + geometry_name + "'", wkt));
+ }
- handle_empty_z_m(it, end, has_empty, has_z, has_m);
+ bool has_empty, has_z, has_m;
+
+ handle_empty_z_m(it, end, has_empty, has_z, has_m);
// Silence warning C4127: conditional expression is constant
#if defined(_MSC_VER)
@@ -529,25 +533,23 @@ inline bool initialize(tokenizer const& tokens,
#pragma warning(disable : 4127)
#endif
- if (has_z && dimension<Geometry>::type::value < 3)
- {
- BOOST_THROW_EXCEPTION(read_wkt_exception("Z only allowed for 3 or more dimensions", wkt));
- }
+ if (has_z && dimension<Geometry>::type::value < 3)
+ {
+ BOOST_THROW_EXCEPTION(read_wkt_exception("Z only allowed for 3 or more dimensions", wkt));
+ }
#if defined(_MSC_VER)
#pragma warning(pop)
#endif
- if (has_empty)
- {
- check_end(it, end, wkt);
- return false;
- }
- // M is ignored at all.
-
- return true;
+ if (has_empty)
+ {
+ check_end(it, end, wkt);
+ return false;
}
- BOOST_THROW_EXCEPTION(read_wkt_exception(std::string("Should start with '") + geometry_name + "'", wkt));
+ // M is ignored at all.
+
+ return true;
}
diff --git a/boost/geometry/iterators/base.hpp b/boost/geometry/iterators/base.hpp
index 1e824654e6..01f198d1d4 100644
--- a/boost/geometry/iterators/base.hpp
+++ b/boost/geometry/iterators/base.hpp
@@ -14,7 +14,6 @@
#ifndef BOOST_GEOMETRY_ITERATORS_BASE_HPP
#define BOOST_GEOMETRY_ITERATORS_BASE_HPP
-#include <boost/iterator.hpp>
#include <boost/iterator/iterator_adaptor.hpp>
#include <boost/iterator/iterator_categories.hpp>
#include <boost/mpl/if.hpp>
diff --git a/boost/geometry/iterators/closing_iterator.hpp b/boost/geometry/iterators/closing_iterator.hpp
index e263f3aafb..a0ec6a5c90 100644
--- a/boost/geometry/iterators/closing_iterator.hpp
+++ b/boost/geometry/iterators/closing_iterator.hpp
@@ -15,7 +15,6 @@
#define BOOST_GEOMETRY_ITERATORS_CLOSING_ITERATOR_HPP
#include <boost/range.hpp>
-#include <boost/iterator.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/iterator/iterator_categories.hpp>
diff --git a/boost/geometry/iterators/concatenate_iterator.hpp b/boost/geometry/iterators/concatenate_iterator.hpp
index ea5728d0bc..99d890e449 100644
--- a/boost/geometry/iterators/concatenate_iterator.hpp
+++ b/boost/geometry/iterators/concatenate_iterator.hpp
@@ -12,7 +12,6 @@
#include <boost/mpl/assert.hpp>
#include <boost/type_traits/is_convertible.hpp>
-#include <boost/iterator.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/iterator/iterator_categories.hpp>
diff --git a/boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp b/boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp
index e65b12b459..f60993caf8 100644
--- a/boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp
+++ b/boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp
@@ -12,7 +12,6 @@
#include <boost/mpl/assert.hpp>
#include <boost/type_traits/is_convertible.hpp>
-#include <boost/iterator.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/iterator/iterator_categories.hpp>
#include <boost/range.hpp>
diff --git a/boost/geometry/iterators/ever_circling_iterator.hpp b/boost/geometry/iterators/ever_circling_iterator.hpp
index cfb588b79f..569688aac2 100644
--- a/boost/geometry/iterators/ever_circling_iterator.hpp
+++ b/boost/geometry/iterators/ever_circling_iterator.hpp
@@ -15,7 +15,6 @@
#define BOOST_GEOMETRY_ITERATORS_EVER_CIRCLING_ITERATOR_HPP
#include <boost/range.hpp>
-#include <boost/iterator.hpp>
#include <boost/iterator/iterator_adaptor.hpp>
#include <boost/iterator/iterator_categories.hpp>
diff --git a/boost/geometry/iterators/flatten_iterator.hpp b/boost/geometry/iterators/flatten_iterator.hpp
index 5ba7050220..ece074601c 100644
--- a/boost/geometry/iterators/flatten_iterator.hpp
+++ b/boost/geometry/iterators/flatten_iterator.hpp
@@ -12,7 +12,6 @@
#include <boost/mpl/assert.hpp>
#include <boost/type_traits/is_convertible.hpp>
-#include <boost/iterator.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/iterator/iterator_categories.hpp>
diff --git a/boost/geometry/policies/relate/intersection_points.hpp b/boost/geometry/policies/relate/intersection_points.hpp
index 2ca84ac028..1ba08452fd 100644
--- a/boost/geometry/policies/relate/intersection_points.hpp
+++ b/boost/geometry/policies/relate/intersection_points.hpp
@@ -52,42 +52,9 @@ struct segments_intersection_points
{
return_type result;
result.count = 1;
+ sinfo.calculate(result.intersections[0], s1, s2);
- bool use_a = true;
-
- // Prefer one segment if one is on or near an endpoint
- bool const a_near_end = sinfo.robust_ra.near_end();
- bool const b_near_end = sinfo.robust_rb.near_end();
- if (a_near_end && ! b_near_end)
- {
- use_a = true;
- }
- else if (b_near_end && ! a_near_end)
- {
- use_a = false;
- }
- else
- {
- // Prefer shorter segment
- typedef typename SegmentIntersectionInfo::promoted_type ptype;
- ptype const len_a = sinfo.comparable_length_a();
- ptype const len_b = sinfo.comparable_length_b();
- if (len_b < len_a)
- {
- use_a = false;
- }
- // else use_a is true but was already assigned like that
- }
-
- if (use_a)
- {
- sinfo.assign_a(result.intersections[0], s1, s2);
- }
- else
- {
- sinfo.assign_b(result.intersections[0], s1, s2);
- }
-
+ // Temporary - this should go later
result.fractions[0].assign(sinfo);
return result;
diff --git a/boost/geometry/srs/epsg.hpp b/boost/geometry/srs/epsg.hpp
new file mode 100644
index 0000000000..0641c18611
--- /dev/null
+++ b/boost/geometry/srs/epsg.hpp
@@ -0,0 +1,82 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_SRS_EPSG_HPP
+#define BOOST_GEOMETRY_SRS_EPSG_HPP
+
+
+#include <boost/geometry/srs/projection.hpp>
+#include <boost/geometry/srs/projections/epsg.hpp>
+#include <boost/geometry/srs/projections/epsg_params.hpp>
+#include <boost/geometry/srs/projections/epsg_traits.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace projections
+{
+
+template <typename CT>
+struct dynamic_parameters<srs::epsg, CT>
+{
+ static inline projections::parameters<CT> apply(srs::epsg const& params)
+ {
+ return projections::detail::pj_init_plus<CT>(
+ srs::dynamic(),
+ projections::detail::epsg_to_string(params.code),
+ false);
+ }
+};
+
+template <int Code, typename CT>
+class proj_wrapper<srs::static_epsg<Code>, CT>
+ : public static_proj_wrapper_base
+ <
+ typename projections::detail::epsg_traits<Code>::static_parameters_type,
+ CT
+ >
+{
+ typedef projections::detail::epsg_traits<Code> epsg_traits;
+ typedef typename epsg_traits::static_parameters_type static_parameters_type;
+ typedef static_proj_wrapper_base<static_parameters_type, CT> base_t;
+
+public:
+ proj_wrapper()
+ : base_t(epsg_traits::s_par(), epsg_traits::par())
+ {}
+};
+
+
+} // namespace projections
+
+
+namespace srs
+{
+
+
+template <int Code, typename CT>
+class projection<srs::static_epsg<Code>, CT>
+ : public projections::projection<srs::static_epsg<Code>, CT>
+{
+ typedef projections::projection<srs::static_epsg<Code>, CT> base_t;
+
+public:
+ projection()
+ {}
+};
+
+
+} // namespace srs
+
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_SRS_EPSG_HPP
diff --git a/boost/geometry/srs/esri.hpp b/boost/geometry/srs/esri.hpp
new file mode 100644
index 0000000000..6b4a800fb9
--- /dev/null
+++ b/boost/geometry/srs/esri.hpp
@@ -0,0 +1,82 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_SRS_ESRI_HPP
+#define BOOST_GEOMETRY_SRS_ESRI_HPP
+
+
+#include <boost/geometry/srs/projection.hpp>
+#include <boost/geometry/srs/projections/esri.hpp>
+#include <boost/geometry/srs/projections/esri_params.hpp>
+#include <boost/geometry/srs/projections/esri_traits.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace projections
+{
+
+template <typename CT>
+struct dynamic_parameters<srs::esri, CT>
+{
+ static inline projections::parameters<CT> apply(srs::esri const& params)
+ {
+ return projections::detail::pj_init_plus<CT>(
+ srs::dynamic(),
+ projections::detail::esri_to_string(params.code),
+ false);
+ }
+};
+
+template <int Code, typename CT>
+class proj_wrapper<srs::static_esri<Code>, CT>
+ : public static_proj_wrapper_base
+ <
+ typename projections::detail::esri_traits<Code>::static_parameters_type,
+ CT
+ >
+{
+ typedef projections::detail::esri_traits<Code> esri_traits;
+ typedef typename esri_traits::static_parameters_type static_parameters_type;
+ typedef static_proj_wrapper_base<static_parameters_type, CT> base_t;
+
+public:
+ proj_wrapper()
+ : base_t(esri_traits::s_par(), esri_traits::par())
+ {}
+};
+
+
+} // namespace projections
+
+
+namespace srs
+{
+
+
+template <int Code, typename CT>
+class projection<srs::static_esri<Code>, CT>
+ : public projections::projection<srs::static_esri<Code>, CT>
+{
+ typedef projections::projection<srs::static_esri<Code>, CT> base_t;
+
+public:
+ projection()
+ {}
+};
+
+
+} // namespace srs
+
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_SRS_ESRI_HPP
diff --git a/boost/geometry/srs/iau2000.hpp b/boost/geometry/srs/iau2000.hpp
new file mode 100644
index 0000000000..8b02ab4a06
--- /dev/null
+++ b/boost/geometry/srs/iau2000.hpp
@@ -0,0 +1,82 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_SRS_IAU2000_HPP
+#define BOOST_GEOMETRY_SRS_IAU2000_HPP
+
+
+#include <boost/geometry/srs/projection.hpp>
+#include <boost/geometry/srs/projections/iau2000.hpp>
+#include <boost/geometry/srs/projections/iau2000_params.hpp>
+#include <boost/geometry/srs/projections/iau2000_traits.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace projections
+{
+
+template <typename CT>
+struct dynamic_parameters<srs::iau2000, CT>
+{
+ static inline projections::parameters<CT> apply(srs::iau2000 const& params)
+ {
+ return projections::detail::pj_init_plus<CT>(
+ srs::dynamic(),
+ projections::detail::iau2000_to_string(params.code),
+ false);
+ }
+};
+
+template <int Code, typename CT>
+class proj_wrapper<srs::static_iau2000<Code>, CT>
+ : public static_proj_wrapper_base
+ <
+ typename projections::detail::iau2000_traits<Code>::static_parameters_type,
+ CT
+ >
+{
+ typedef projections::detail::iau2000_traits<Code> iau2000_traits;
+ typedef typename iau2000_traits::static_parameters_type static_parameters_type;
+ typedef static_proj_wrapper_base<static_parameters_type, CT> base_t;
+
+public:
+ proj_wrapper()
+ : base_t(iau2000_traits::s_par(), iau2000_traits::par())
+ {}
+};
+
+
+} // namespace projections
+
+
+namespace srs
+{
+
+
+template <int Code, typename CT>
+class projection<srs::static_iau2000<Code>, CT>
+ : public projections::projection<srs::static_iau2000<Code>, CT>
+{
+ typedef projections::projection<srs::static_iau2000<Code>, CT> base_t;
+
+public:
+ projection()
+ {}
+};
+
+
+} // namespace srs
+
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_SRS_IAU2000_HPP
diff --git a/boost/geometry/srs/projection.hpp b/boost/geometry/srs/projection.hpp
new file mode 100644
index 0000000000..59c3e8c047
--- /dev/null
+++ b/boost/geometry/srs/projection.hpp
@@ -0,0 +1,591 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_SRS_PROJECTION_HPP
+#define BOOST_GEOMETRY_SRS_PROJECTION_HPP
+
+
+#include <string>
+
+#include <boost/geometry/algorithms/convert.hpp>
+#include <boost/geometry/algorithms/detail/convert_point_to_point.hpp>
+
+#include <boost/geometry/core/coordinate_dimension.hpp>
+
+#include <boost/geometry/srs/projections/exception.hpp>
+#include <boost/geometry/srs/projections/factory.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/pj_init.hpp>
+#include <boost/geometry/srs/projections/invalid_point.hpp>
+#include <boost/geometry/srs/projections/par4.hpp>
+#include <boost/geometry/srs/projections/proj4.hpp>
+
+#include <boost/geometry/views/detail/indexed_point_view.hpp>
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/smart_ptr/shared_ptr.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace projections
+{
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+template <typename G1, typename G2>
+struct same_tags
+{
+ static const bool value = boost::is_same
+ <
+ typename geometry::tag<G1>::type,
+ typename geometry::tag<G2>::type
+ >::value;
+};
+
+template <typename CT>
+struct promote_to_double
+{
+ typedef typename boost::mpl::if_c
+ <
+ boost::is_integral<CT>::value || boost::is_same<CT, float>::value,
+ double, CT
+ >::type type;
+};
+
+// Copy coordinates of dimensions >= MinDim
+template <std::size_t MinDim, typename Point1, typename Point2>
+inline void copy_higher_dimensions(Point1 const& point1, Point2 & point2)
+{
+ static const std::size_t dim1 = geometry::dimension<Point1>::value;
+ static const std::size_t dim2 = geometry::dimension<Point2>::value;
+ static const std::size_t lesser_dim = dim1 < dim2 ? dim1 : dim2;
+ BOOST_MPL_ASSERT_MSG((lesser_dim >= MinDim),
+ THE_DIMENSION_OF_POINTS_IS_TOO_SMALL,
+ (Point1, Point2));
+
+ geometry::detail::conversion::point_to_point
+ <
+ Point1, Point2, MinDim, lesser_dim
+ > ::apply(point1, point2);
+
+ // TODO: fill point2 with zeros if dim1 < dim2 ?
+ // currently no need because equal dimensions are checked
+}
+
+
+struct forward_point_projection_policy
+{
+ template <typename LL, typename XY, typename Proj>
+ static inline bool apply(LL const& ll, XY & xy, Proj const& proj)
+ {
+ return proj.forward(ll, xy);
+ }
+};
+
+struct inverse_point_projection_policy
+{
+ template <typename XY, typename LL, typename Proj>
+ static inline bool apply(XY const& xy, LL & ll, Proj const& proj)
+ {
+ return proj.inverse(xy, ll);
+ }
+};
+
+template <typename PointPolicy>
+struct project_point
+{
+ template <typename P1, typename P2, typename Proj>
+ static inline bool apply(P1 const& p1, P2 & p2, Proj const& proj)
+ {
+ // (Geographic -> Cartesian) will be projected, rest will be copied.
+ // So first copy third or higher dimensions
+ projections::detail::copy_higher_dimensions<2>(p1, p2);
+
+ if (! PointPolicy::apply(p1, p2, proj))
+ {
+ // For consistency with transformation
+ set_invalid_point(p2);
+ return false;
+ }
+
+ return true;
+ }
+};
+
+template <typename PointPolicy>
+struct project_range
+{
+ template <typename Proj>
+ struct convert_policy
+ {
+ explicit convert_policy(Proj const& proj)
+ : m_proj(proj)
+ , m_result(true)
+ {}
+
+ template <typename Point1, typename Point2>
+ inline void apply(Point1 const& point1, Point2 & point2)
+ {
+ if (! project_point<PointPolicy>::apply(point1, point2, m_proj) )
+ m_result = false;
+ }
+
+ bool result() const
+ {
+ return m_result;
+ }
+
+ private:
+ Proj const& m_proj;
+ bool m_result;
+ };
+
+ template <typename R1, typename R2, typename Proj>
+ static inline bool apply(R1 const& r1, R2 & r2, Proj const& proj)
+ {
+ return geometry::detail::conversion::range_to_range
+ <
+ R1, R2,
+ geometry::point_order<R1>::value != geometry::point_order<R2>::value
+ >::apply(r1, r2, convert_policy<Proj>(proj)).result();
+ }
+};
+
+template <typename Policy>
+struct project_multi
+{
+ template <typename G1, typename G2, typename Proj>
+ static inline bool apply(G1 const& g1, G2 & g2, Proj const& proj)
+ {
+ range::resize(g2, boost::size(g1));
+ return apply(boost::begin(g1), boost::end(g1),
+ boost::begin(g2),
+ proj);
+ }
+
+private:
+ template <typename It1, typename It2, typename Proj>
+ static inline bool apply(It1 g1_first, It1 g1_last, It2 g2_first, Proj const& proj)
+ {
+ bool result = true;
+ for ( ; g1_first != g1_last ; ++g1_first, ++g2_first )
+ {
+ if (! Policy::apply(*g1_first, *g2_first, proj))
+ {
+ result = false;
+ }
+ }
+ return result;
+ }
+};
+
+template
+<
+ typename Geometry,
+ typename PointPolicy,
+ typename Tag = typename geometry::tag<Geometry>::type
+>
+struct project_geometry
+{};
+
+template <typename Geometry, typename PointPolicy>
+struct project_geometry<Geometry, PointPolicy, point_tag>
+ : project_point<PointPolicy>
+{};
+
+template <typename Geometry, typename PointPolicy>
+struct project_geometry<Geometry, PointPolicy, multi_point_tag>
+ : project_range<PointPolicy>
+{};
+
+template <typename Geometry, typename PointPolicy>
+struct project_geometry<Geometry, PointPolicy, segment_tag>
+{
+ template <typename G1, typename G2, typename Proj>
+ static inline bool apply(G1 const& g1, G2 & g2, Proj const& proj)
+ {
+ bool r1 = apply<0>(g1, g2, proj);
+ bool r2 = apply<1>(g1, g2, proj);
+ return r1 && r2;
+ }
+
+private:
+ template <std::size_t Index, typename G1, typename G2, typename Proj>
+ static inline bool apply(G1 const& g1, G2 & g2, Proj const& proj)
+ {
+ geometry::detail::indexed_point_view<G1 const, Index> pt1(g1);
+ geometry::detail::indexed_point_view<G2, Index> pt2(g2);
+ return project_point<PointPolicy>::apply(pt1, pt2, proj);
+ }
+};
+
+template <typename Geometry, typename PointPolicy>
+struct project_geometry<Geometry, PointPolicy, linestring_tag>
+ : project_range<PointPolicy>
+{};
+
+template <typename Geometry, typename PointPolicy>
+struct project_geometry<Geometry, PointPolicy, multi_linestring_tag>
+ : project_multi< project_range<PointPolicy> >
+{};
+
+template <typename Geometry, typename PointPolicy>
+struct project_geometry<Geometry, PointPolicy, ring_tag>
+ : project_range<PointPolicy>
+{};
+
+template <typename Geometry, typename PointPolicy>
+struct project_geometry<Geometry, PointPolicy, polygon_tag>
+{
+ template <typename G1, typename G2, typename Proj>
+ static inline bool apply(G1 const& g1, G2 & g2, Proj const& proj)
+ {
+ bool r1 = project_range
+ <
+ PointPolicy
+ >::apply(geometry::exterior_ring(g1),
+ geometry::exterior_ring(g2),
+ proj);
+ bool r2 = project_multi
+ <
+ project_range<PointPolicy>
+ >::apply(geometry::interior_rings(g1),
+ geometry::interior_rings(g2),
+ proj);
+ return r1 && r2;
+ }
+};
+
+template <typename MultiPolygon, typename PointPolicy>
+struct project_geometry<MultiPolygon, PointPolicy, multi_polygon_tag>
+ : project_multi
+ <
+ project_geometry
+ <
+ typename boost::range_value<MultiPolygon>::type,
+ PointPolicy,
+ polygon_tag
+ >
+ >
+{};
+
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+
+template <typename Params, typename CT>
+struct dynamic_parameters
+{
+ BOOST_MPL_ASSERT_MSG((false),
+ NOT_IMPLEMENTED_FOR_THESE_PARAMETERS,
+ (Params));
+};
+
+template <typename CT>
+struct dynamic_parameters<srs::proj4, CT>
+{
+ static inline projections::parameters<CT> apply(srs::proj4 const& params)
+ {
+ return projections::detail::pj_init_plus<CT>(srs::dynamic(), params.str);
+ }
+};
+
+// proj_wrapper class and its specializations wrapps the internal projection
+// representation and implements transparent creation of projection object
+template <typename Proj, typename CT>
+class proj_wrapper
+{
+ BOOST_MPL_ASSERT_MSG((false),
+ NOT_IMPLEMENTED_FOR_THIS_PROJECTION,
+ (Proj));
+};
+
+template <typename CT>
+class proj_wrapper<srs::dynamic, CT>
+{
+ // Some projections do not work with float -> wrong results
+ // select <double> from int/float/double and else selects T
+ typedef typename projections::detail::promote_to_double<CT>::type calc_t;
+
+ typedef projections::parameters<calc_t> parameters_type;
+ typedef projections::detail::base_v<calc_t, parameters_type> vprj_t;
+
+public:
+ template <typename Params>
+ proj_wrapper(Params const& params)
+ : m_ptr(create(projections::dynamic_parameters<Params, calc_t>::apply(params)))
+ {}
+
+ vprj_t const& proj() const { return *m_ptr; }
+ vprj_t & mutable_proj() { return *m_ptr; }
+
+private:
+ static vprj_t* create(parameters_type const& pj_params)
+ {
+ vprj_t* result = projections::detail::create_new(pj_params);
+
+ if (result == NULL)
+ {
+ if (pj_params.name.empty())
+ {
+ BOOST_THROW_EXCEPTION(projection_not_named_exception());
+ }
+ else
+ {
+ BOOST_THROW_EXCEPTION(projection_unknown_id_exception(pj_params.name));
+ }
+ }
+
+ return result;
+ }
+
+ boost::shared_ptr<vprj_t> m_ptr;
+};
+
+template <typename StaticParameters, typename CT>
+class static_proj_wrapper_base
+{
+ typedef typename projections::detail::promote_to_double<CT>::type calc_t;
+
+ typedef projections::parameters<calc_t> parameters_type;
+
+ typedef typename srs::par4::detail::pick_proj_tag
+ <
+ StaticParameters
+ >::type proj_tag;
+ typedef typename srs::par4::detail::pick_ellps
+ <
+ StaticParameters
+ >::type ellps_type;
+
+ typedef typename projections::detail::static_projection_type
+ <
+ proj_tag,
+ typename geometry::tag
+ <
+ typename srs::par4::detail::ellps_traits
+ <
+ ellps_type
+ >::model_type
+ >::type,
+ StaticParameters,
+ calc_t,
+ parameters_type
+ >::type projection_type;
+
+public:
+ projection_type const& proj() const { return m_proj; }
+ projection_type & mutable_proj() { return m_proj; }
+
+protected:
+ explicit static_proj_wrapper_base(StaticParameters const& s_params,
+ bool use_defaults = true)
+ : m_proj(get_parameters(s_params, "", use_defaults))
+ {}
+
+ static_proj_wrapper_base(StaticParameters const& s_params,
+ srs::proj4 const& params,
+ bool use_defaults = true)
+ : m_proj(get_parameters(s_params, params.str, use_defaults))
+ {}
+
+private:
+ static parameters_type get_parameters(StaticParameters const& s_params,
+ std::string const& params_str,
+ bool use_defaults)
+ {
+ return projections::detail::pj_init_plus<calc_t>(s_params, params_str, use_defaults);
+ }
+
+ projection_type m_proj;
+};
+
+template <BOOST_GEOMETRY_PROJECTIONS_DETAIL_TYPENAME_PX, typename CT>
+class proj_wrapper<srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX>, CT>
+ : public static_proj_wrapper_base<srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX>, CT>
+{
+ typedef srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX>
+ static_parameters_type;
+ typedef static_proj_wrapper_base
+ <
+ static_parameters_type,
+ CT
+ > base_t;
+
+public:
+ proj_wrapper()
+ : base_t(static_parameters_type())
+ {}
+
+ proj_wrapper(static_parameters_type const& s_params)
+ : base_t(s_params)
+ {}
+
+ proj_wrapper(srs::proj4 const& params)
+ : base_t(static_parameters_type(), params)
+ {}
+
+ proj_wrapper(static_parameters_type const& s_params,
+ srs::proj4 const& params)
+ : base_t(s_params, params)
+ {}
+};
+
+
+// projection class implements transparent forward/inverse projection interface
+template <typename Proj, typename CT>
+class projection
+ : private proj_wrapper<Proj, CT>
+{
+ typedef proj_wrapper<Proj, CT> base_t;
+
+public:
+ projection()
+ {}
+
+ template <typename Params>
+ explicit projection(Params const& params)
+ : base_t(params)
+ {}
+
+ template <typename SParams, typename Params>
+ projection(SParams const& s_params, Params const& params)
+ : base_t(s_params, params)
+ {}
+
+ /// Forward projection, from Latitude-Longitude to Cartesian
+ template <typename LL, typename XY>
+ inline bool forward(LL const& ll, XY& xy) const
+ {
+ BOOST_MPL_ASSERT_MSG((projections::detail::same_tags<LL, XY>::value),
+ NOT_SUPPORTED_COMBINATION_OF_GEOMETRIES,
+ (LL, XY));
+
+ concepts::check_concepts_and_equal_dimensions<LL const, XY>();
+
+ return projections::detail::project_geometry
+ <
+ LL,
+ projections::detail::forward_point_projection_policy
+ >::apply(ll, xy, base_t::proj());
+ }
+
+ /// Inverse projection, from Cartesian to Latitude-Longitude
+ template <typename XY, typename LL>
+ inline bool inverse(XY const& xy, LL& ll) const
+ {
+ BOOST_MPL_ASSERT_MSG((projections::detail::same_tags<XY, LL>::value),
+ NOT_SUPPORTED_COMBINATION_OF_GEOMETRIES,
+ (XY, LL));
+
+ concepts::check_concepts_and_equal_dimensions<XY const, LL>();
+
+ return projections::detail::project_geometry
+ <
+ XY,
+ projections::detail::inverse_point_projection_policy
+ >::apply(xy, ll, base_t::proj());
+ }
+};
+
+} // namespace projections
+
+
+namespace srs
+{
+
+
+/*!
+ \brief Representation of projection
+ \details Either dynamic or static projection representation
+ \ingroup projection
+ \tparam Proj default_dynamic or static projection parameters
+ \tparam CT calculation type used internally
+*/
+template
+<
+ typename Proj = srs::dynamic,
+ typename CT = double
+>
+class projection
+{
+ BOOST_MPL_ASSERT_MSG((false),
+ NOT_IMPLEMENTED_FOR_THIS_PROJECTION,
+ (Proj));
+};
+
+template <typename CT>
+class projection<srs::dynamic, CT>
+ : public projections::projection<srs::dynamic, CT>
+{
+ typedef projections::projection<srs::dynamic, CT> base_t;
+
+public:
+ /*!
+ \ingroup projection
+ \brief Initializes a projection as a string, using the format with + and =
+ \details The projection can be initialized with a string (with the same format as the PROJ4 package) for
+ convenient initialization from, for example, the command line
+ \par Example
+ <tt>+proj=labrd +ellps=intl +lon_0=46d26'13.95E +lat_0=18d54S +azi=18d54 +k_0=.9995 +x_0=400000 +y_0=800000</tt>
+ for the Madagascar projection.
+ \note Parameters are described in the group
+ */
+ template <typename Params>
+ projection(Params const& params)
+ : base_t(params)
+ {}
+};
+
+template <BOOST_GEOMETRY_PROJECTIONS_DETAIL_TYPENAME_PX, typename CT>
+class projection<srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX>, CT>
+ : public projections::projection<srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX>, CT>
+{
+ typedef projections::projection<srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX>, CT> base_t;
+
+public:
+ projection()
+ {}
+
+ projection(srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX> const& params)
+ : base_t(params)
+ {}
+
+#ifdef BOOST_GEOMETRY_SRS_ENABLE_STATIC_PROJECTION_HYBRID_INTERFACE
+ projection(srs::proj4 const& params)
+ : base_t(params)
+ {}
+
+ projection(srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX> const& s_params,
+ srs::proj4 const& params)
+ : base_t(s_params, params)
+ {}
+#endif
+};
+
+} // namespace srs
+
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_SRS_PROJECTION_HPP
diff --git a/boost/geometry/srs/projections/code.hpp b/boost/geometry/srs/projections/code.hpp
new file mode 100644
index 0000000000..852153d485
--- /dev/null
+++ b/boost/geometry/srs/projections/code.hpp
@@ -0,0 +1,56 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_CODE_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_CODE_HPP
+
+
+#include <algorithm>
+#include <string>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+ struct code_element
+ {
+ int code;
+ std::string proj4_str;
+ };
+
+ struct code_element_less
+ {
+ inline bool operator()(code_element const& l, code_element const& r) const
+ {
+ return l.code < r.code;
+ }
+ };
+
+ template<typename RandIt>
+ inline RandIt binary_find_code_element(RandIt first, RandIt last, int code)
+ {
+ code_element_less comp;
+ code_element value;
+ value.code = code;
+ first = std::lower_bound(first, last, value, code_element_less());
+ return first != last && !comp(value, *first) ? first : last;
+ }
+
+}
+#endif // DOXYGEN_NO_DETAIL
+
+
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/epsg.hpp b/boost/geometry/srs/projections/epsg.hpp
new file mode 100644
index 0000000000..87f58b980d
--- /dev/null
+++ b/boost/geometry/srs/projections/epsg.hpp
@@ -0,0 +1,4409 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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)
+
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_EPGS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_EPGS_HPP
+
+
+#include <boost/geometry/srs/projections/code.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+ inline std::string epsg_to_string(int code)
+ {
+ static const code_element arr[] = {
+ {2000, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs"},
+ {2001, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs"},
+ {2002, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs"},
+ {2003, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs"},
+ {2004, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs"},
+ {2005, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs"},
+ {2006, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs"},
+ {2007, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m +no_defs"},
+ {2008, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2009, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2010, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2011, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2012, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2013, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2014, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2015, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2016, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2017, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2018, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2019, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2020, "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2021, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2022, "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2023, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2024, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2025, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2026, "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2027, "+proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs"},
+ {2028, "+proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs"},
+ {2029, "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs"},
+ {2030, "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs"},
+ {2031, "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs"},
+ {2032, "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs"},
+ {2033, "+proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs"},
+ {2034, "+proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs"},
+ {2035, "+proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs"},
+ {2036, "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2037, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2038, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2039, "+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs"},
+ {2040, "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs"},
+ {2041, "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs"},
+ {2042, "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs"},
+ {2043, "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs"},
+ {2044, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs"},
+ {2045, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs"},
+ //{2046, ""},
+ //{2047, ""},
+ //{2048, ""},
+ //{2049, ""},
+ //{2050, ""},
+ //{2051, ""},
+ //{2052, ""},
+ //{2053, ""},
+ //{2054, ""},
+ //{2055, ""},
+ {2056, "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs"},
+ {2057, "+proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs"},
+ {2058, "+proj=utm +zone=38 +ellps=intl +units=m +no_defs"},
+ {2059, "+proj=utm +zone=39 +ellps=intl +units=m +no_defs"},
+ {2060, "+proj=utm +zone=40 +ellps=intl +units=m +no_defs"},
+ {2061, "+proj=utm +zone=41 +ellps=intl +units=m +no_defs"},
+ {2062, "+proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669561 +pm=madrid +units=m +no_defs"},
+ {2063, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs"},
+ {2064, "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs"},
+ {2065, "+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {2066, "+proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs"},
+ {2067, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs"},
+ {2068, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2069, "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2070, "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2071, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2072, "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2073, "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2074, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2075, "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2076, "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2077, "+proj=utm +zone=32 +ellps=intl +units=m +no_defs"},
+ {2078, "+proj=utm +zone=33 +ellps=intl +units=m +no_defs"},
+ {2079, "+proj=utm +zone=34 +ellps=intl +units=m +no_defs"},
+ {2080, "+proj=utm +zone=35 +ellps=intl +units=m +no_defs"},
+ {2081, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2082, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +no_defs"},
+ {2083, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2084, "+proj=utm +zone=19 +south +ellps=intl +units=m +no_defs"},
+ {2085, "+proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {2086, "+proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {2087, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2088, "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {2089, "+proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2090, "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2091, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs"},
+ {2092, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs"},
+ {2093, "+proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs"},
+ {2094, "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {2095, "+proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs"},
+ {2096, "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"},
+ {2097, "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"},
+ {2098, "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"},
+ {2099, "+proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs"},
+ {2100, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs"},
+ {2101, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs"},
+ {2102, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m +no_defs"},
+ {2103, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m +no_defs"},
+ {2104, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs"},
+ {2105, "+proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2106, "+proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2107, "+proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2108, "+proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2109, "+proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2110, "+proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2111, "+proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2112, "+proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2113, "+proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2114, "+proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2115, "+proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2116, "+proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2117, "+proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2118, "+proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2119, "+proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2120, "+proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2121, "+proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2122, "+proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2123, "+proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2124, "+proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2125, "+proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2126, "+proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2127, "+proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2128, "+proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2129, "+proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2130, "+proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2131, "+proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2132, "+proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2133, "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2134, "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2135, "+proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2136, "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs"},
+ {2137, "+proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs"},
+ {2138, "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {2139, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2140, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2141, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2142, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2143, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2144, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2145, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2146, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2147, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2148, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2149, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2150, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2151, "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2152, "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2153, "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2154, "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2155, "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {2156, "+proj=utm +zone=59 +south +ellps=GRS80 +units=m +no_defs"},
+ {2157, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2158, "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2159, "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs"},
+ {2160, "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs"},
+ {2161, "+proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs"},
+ {2162, "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs"},
+ {2163, "+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs"},
+ {2164, "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs"},
+ {2165, "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs"},
+ {2166, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs"},
+ {2167, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs"},
+ {2168, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs"},
+ {2169, "+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m +no_defs"},
+ {2170, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {2171, "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {2172, "+proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {2173, "+proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {2174, "+proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {2175, "+proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {2176, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2177, "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2178, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2179, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2180, "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs"},
+ {2188, "+proj=utm +zone=25 +ellps=intl +units=m +no_defs"},
+ {2189, "+proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +units=m +no_defs"},
+ {2190, "+proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,0,0 +units=m +no_defs"},
+ {2191, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs"},
+ {2192, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +units=m +no_defs"},
+ {2193, "+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2194, "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {2195, "+proj=utm +zone=2 +south +ellps=GRS80 +units=m +no_defs"},
+ {2196, "+proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2197, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2198, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2199, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2200, "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs"},
+ {2201, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2202, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2203, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2204, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {2205, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {2206, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2207, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2208, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2209, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2210, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2211, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2212, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2213, "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2214, "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs"},
+ {2215, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs"},
+ {2216, "+proj=utm +zone=22 +ellps=intl +units=m +no_defs"},
+ {2217, "+proj=utm +zone=23 +ellps=intl +units=m +no_defs"},
+ //{2218, ""},
+ {2219, "+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m +no_defs"},
+ {2220, "+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m +no_defs"},
+ //{2221, ""},
+ {2222, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2223, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2224, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2225, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2226, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2227, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2228, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2229, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2230, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2231, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2232, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2233, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2234, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2235, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2236, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2237, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2238, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2239, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2240, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2241, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2242, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2243, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2244, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2245, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2246, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2247, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2248, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2249, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2250, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2251, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2252, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2253, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2254, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2255, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2256, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2257, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2258, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2259, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2260, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2261, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2262, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2263, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2264, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2265, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2266, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2267, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2268, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2269, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2270, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2271, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2272, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2273, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2274, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2275, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2276, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2277, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2278, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2279, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2280, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2281, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2282, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2283, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2284, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2285, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2286, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2287, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2288, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2289, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2290, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m +no_defs"},
+ {2291, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs"},
+ {2292, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2294, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs"},
+ {2295, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs"},
+ //{2296, ""},
+ //{2297, ""},
+ //{2298, ""},
+ //{2299, ""},
+ //{2300, ""},
+ //{2301, ""},
+ //{2302, ""},
+ //{2303, ""},
+ //{2304, ""},
+ //{2305, ""},
+ //{2306, ""},
+ //{2307, ""},
+ {2308, "+proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +units=m +no_defs"},
+ {2309, "+proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {2310, "+proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {2311, "+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {2312, "+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs"},
+ {2313, "+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs"},
+ {2314, "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs"},
+ {2315, "+proj=utm +zone=19 +south +ellps=intl +units=m +no_defs"},
+ {2316, "+proj=utm +zone=20 +south +ellps=intl +units=m +no_defs"},
+ {2317, "+proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs"},
+ {2318, "+proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2319, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2320, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2321, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2322, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2323, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2324, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2325, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2326, "+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +units=m +no_defs"},
+ {2327, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2328, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2329, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2330, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2331, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2332, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2333, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2334, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2335, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2336, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2337, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2338, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2339, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2340, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2341, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2342, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2343, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2344, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2345, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2346, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2347, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2348, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2349, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2350, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2351, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2352, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2353, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2354, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2355, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2356, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2357, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2358, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2359, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2360, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2361, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2362, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2363, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2364, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2365, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2366, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2367, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2368, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2369, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2370, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2371, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2372, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2373, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2374, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2375, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2376, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2377, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2378, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2379, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2380, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2381, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2382, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2383, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2384, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2385, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2386, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2387, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2388, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2389, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2390, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"},
+ {2391, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2392, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2393, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2394, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {2395, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs"},
+ {2396, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs"},
+ {2397, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs"},
+ {2398, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs"},
+ {2399, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs"},
+ {2400, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {2401, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2402, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2403, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2404, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2405, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2406, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2407, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2408, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2409, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2410, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2411, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2412, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2413, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2414, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2415, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2416, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2417, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2418, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2419, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2420, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2421, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2422, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2423, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2424, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2425, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2426, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2427, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2428, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2429, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2430, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2431, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2432, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2433, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2434, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2435, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2436, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2437, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2438, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2439, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2440, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2441, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2442, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2443, "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2444, "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2445, "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2446, "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2447, "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2448, "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2449, "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2450, "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2451, "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2452, "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2453, "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2454, "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2455, "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2456, "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2457, "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2458, "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2459, "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2460, "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2461, "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2462, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2463, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2464, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2465, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2466, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2467, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2468, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2469, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2470, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2471, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2472, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2473, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2474, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2475, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2476, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2477, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2478, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2479, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2480, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2481, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2482, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2483, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2484, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2485, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2486, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2487, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2488, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2489, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2490, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2491, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2492, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2493, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2494, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2495, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2496, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2497, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2498, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2499, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2500, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2501, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2502, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2503, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2504, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2505, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2506, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2507, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2508, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2509, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2510, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2511, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2512, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2513, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2514, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2515, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2516, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2517, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2518, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2519, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2520, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2521, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2522, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2523, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2524, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2525, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2526, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2527, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2528, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2529, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2530, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2531, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2532, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2533, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2534, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2535, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2536, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2537, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2538, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2539, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2540, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2541, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2542, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2543, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2544, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2545, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2546, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2547, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2548, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2549, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2550, "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs"},
+ {2551, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2552, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2553, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2554, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2555, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2556, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2557, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2558, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2559, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2560, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2561, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2562, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2563, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2564, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2565, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2566, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2567, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2568, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2569, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2570, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2571, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2572, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2573, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2574, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2575, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2576, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2577, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2578, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2579, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2580, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2581, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2582, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2583, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2584, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2585, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2586, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2587, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2588, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2589, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2590, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2591, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2592, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2593, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2594, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2595, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2596, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2597, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2598, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2599, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2600, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2601, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2602, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2603, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2604, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2605, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2606, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2607, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2608, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2609, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2610, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2611, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2612, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2613, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2614, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2615, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2616, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2617, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2618, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2619, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2620, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2621, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2622, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2623, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2624, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2625, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2626, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2627, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2628, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2629, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2630, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2631, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2632, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2633, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2634, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2635, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2636, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2637, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2638, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2639, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2640, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2641, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2642, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2643, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2644, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2645, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2646, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2647, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2648, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2649, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2650, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2651, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2652, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2653, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2654, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2655, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2656, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2657, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2658, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2659, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2660, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2661, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2662, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2663, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2664, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2665, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2666, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2667, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2668, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2669, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2670, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2671, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2672, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2673, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2674, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2675, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2676, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2677, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2678, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2679, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2680, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2681, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2682, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2683, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2684, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2685, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2686, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2687, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2688, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2689, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2690, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2691, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2692, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2693, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2694, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2695, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2696, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2697, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2698, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2699, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2700, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2701, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2702, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2703, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2704, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2705, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2706, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2707, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2708, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2709, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2710, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2711, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2712, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2713, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2714, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2715, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2716, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2717, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2718, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2719, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2720, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2721, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2722, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2723, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2724, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2725, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2726, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2727, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2728, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2729, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2730, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2731, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2732, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2733, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2734, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2735, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2736, "+proj=utm +zone=36 +south +ellps=clrk66 +units=m +no_defs"},
+ {2737, "+proj=utm +zone=37 +south +ellps=clrk66 +units=m +no_defs"},
+ {2738, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2739, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2740, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2741, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2742, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2743, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2744, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2745, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2746, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2747, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2748, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2749, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2750, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2751, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2752, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2753, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2754, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2755, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2756, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2757, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2758, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2759, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2760, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2761, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2762, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2763, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2764, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2765, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs"},
+ {2766, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {2767, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {2768, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {2769, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {2770, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {2771, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {2772, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs"},
+ {2773, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs"},
+ {2774, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs"},
+ {2775, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m +no_defs"},
+ {2776, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2777, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2778, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2779, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2780, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2781, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2782, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2783, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2784, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2785, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2786, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2787, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2788, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2789, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2790, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2791, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2792, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m +no_defs"},
+ {2793, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m +no_defs"},
+ {2794, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs"},
+ {2795, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2796, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2797, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs"},
+ {2798, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2799, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {2800, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2801, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2802, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2803, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2804, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2805, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m +no_defs"},
+ {2806, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2807, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2808, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2809, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2810, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {2811, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {2812, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {2813, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2814, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2815, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2816, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2817, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2818, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2819, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2820, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m +no_defs"},
+ {2821, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs"},
+ {2822, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs"},
+ {2823, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2824, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2825, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2826, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2827, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2828, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2829, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2830, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2831, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2832, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2833, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2834, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2835, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2836, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2837, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2838, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2839, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2840, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2841, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2842, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2843, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2844, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs"},
+ {2845, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs"},
+ {2846, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs"},
+ {2847, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs"},
+ {2848, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs"},
+ {2849, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs"},
+ {2850, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs"},
+ {2851, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs"},
+ {2852, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2853, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs"},
+ {2854, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs"},
+ {2855, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2856, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2857, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2858, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2859, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2860, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2861, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2862, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2863, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {2864, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2865, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {2866, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs"},
+ {2867, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2868, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2869, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2870, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2871, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2872, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2873, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2874, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2875, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2876, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2877, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2878, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2879, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2880, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2881, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2882, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2883, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2884, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2885, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2886, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2887, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2888, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2889, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2890, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2891, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2892, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2893, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2894, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2895, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2896, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2897, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2898, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2899, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2900, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2901, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2902, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2903, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2904, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2905, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2906, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2907, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2908, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2909, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2910, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2911, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2912, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2913, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2914, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2915, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2916, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2917, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2918, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2919, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2920, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2921, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2922, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2923, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2924, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2925, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2926, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2927, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2928, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2929, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2930, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2931, "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +units=m +no_defs"},
+ {2932, "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +units=m +no_defs"},
+ {2933, "+proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs"},
+ {2934, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs"},
+ {2935, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2936, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2937, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2938, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2939, "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2940, "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2941, "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {2942, "+proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +units=m +no_defs"},
+ {2943, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs"},
+ {2944, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2945, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2946, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2947, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2948, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2949, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2950, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2951, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2952, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2953, "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +units=m +no_defs"},
+ {2954, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +units=m +no_defs"},
+ {2955, "+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs"},
+ {2956, "+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs"},
+ {2957, "+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs"},
+ {2958, "+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs"},
+ {2959, "+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs"},
+ {2960, "+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs"},
+ {2961, "+proj=utm +zone=20 +ellps=GRS80 +units=m +no_defs"},
+ {2962, "+proj=utm +zone=21 +ellps=GRS80 +units=m +no_defs"},
+ //{2963, ""},
+ {2964, "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {2965, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2966, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {2967, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2968, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {2969, "+proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0,0,0 +units=m +no_defs"},
+ {2970, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs"},
+ {2971, "+proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs"},
+ {2972, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m +no_defs"},
+ {2973, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs"},
+ {2975, "+proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2976, "+proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,154,0,0,0,0 +units=m +no_defs"},
+ {2977, "+proj=utm +zone=5 +south +ellps=intl +units=m +no_defs"},
+ {2978, "+proj=utm +zone=7 +south +ellps=intl +units=m +no_defs"},
+ {2979, "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs"},
+ {2980, "+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs"},
+ {2981, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs"},
+ {2982, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs"},
+ {2983, "+proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m +no_defs"},
+ {2984, "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=intl +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ //{2985, ""},
+ //{2986, ""},
+ {2987, "+proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +units=m +no_defs"},
+ {2988, "+proj=utm +zone=1 +south +ellps=intl +units=m +no_defs"},
+ {2989, "+proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {2990, "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +units=m +no_defs"},
+ {2991, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {2992, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs"},
+ {2993, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {2994, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {2995, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs"},
+ {2996, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs"},
+ {2997, "+proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m +no_defs"},
+ {2998, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs"},
+ {2999, "+proj=utm +zone=38 +south +ellps=intl +units=m +no_defs"},
+ {3000, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m +no_defs"},
+ {3001, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m +no_defs"},
+ {3002, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +units=m +no_defs"},
+ {3003, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {3004, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {3005, "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3006, "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3007, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3008, "+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3009, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3010, "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3011, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3012, "+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3013, "+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3014, "+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3015, "+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3016, "+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3017, "+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3018, "+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3019, "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3020, "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3021, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3022, "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3023, "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3024, "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3025, "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3026, "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3027, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3028, "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3029, "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3030, "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3031, "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3032, "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3033, "+proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3034, "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +units=m +no_defs"},
+ {3035, "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs"},
+ {3036, "+proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs"},
+ {3037, "+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs"},
+ {3038, "+proj=utm +zone=26 +ellps=GRS80 +units=m +no_defs"},
+ {3039, "+proj=utm +zone=27 +ellps=GRS80 +units=m +no_defs"},
+ {3040, "+proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs"},
+ {3041, "+proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs"},
+ {3042, "+proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs"},
+ {3043, "+proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs"},
+ {3044, "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs"},
+ {3045, "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs"},
+ {3046, "+proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs"},
+ {3047, "+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs"},
+ {3048, "+proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs"},
+ {3049, "+proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs"},
+ {3050, "+proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs"},
+ {3051, "+proj=utm +zone=39 +ellps=GRS80 +units=m +no_defs"},
+ //{3052, ""},
+ //{3053, ""},
+ {3054, "+proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs"},
+ {3055, "+proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs"},
+ {3056, "+proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs"},
+ {3057, "+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3058, "+proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7800000 +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +units=m +no_defs"},
+ {3059, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3060, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs"},
+ {3061, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs"},
+ {3062, "+proj=utm +zone=26 +ellps=intl +units=m +no_defs"},
+ {3063, "+proj=utm +zone=26 +ellps=intl +units=m +no_defs"},
+ {3064, "+proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3065, "+proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3066, "+proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_0=-3000000 +ellps=intl +units=m +no_defs"},
+ {3067, "+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs"},
+ {3068, "+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {3069, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y_0=-4500000 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3070, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3071, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +units=m +no_defs"},
+ {3072, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3073, "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3074, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3075, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3076, "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3077, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3078, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3079, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +units=m +no_defs"},
+ {3080, "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_0=914400 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048 +no_defs"},
+ {3081, "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3082, "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3083, "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3084, "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs"},
+ {3085, "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs"},
+ {3086, "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3087, "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3088, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3089, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3090, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs"},
+ {3091, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3092, "+proj=utm +zone=51 +ellps=bessel +units=m +no_defs"},
+ {3093, "+proj=utm +zone=52 +ellps=bessel +units=m +no_defs"},
+ {3094, "+proj=utm +zone=53 +ellps=bessel +units=m +no_defs"},
+ {3095, "+proj=utm +zone=54 +ellps=bessel +units=m +no_defs"},
+ {3096, "+proj=utm +zone=55 +ellps=bessel +units=m +no_defs"},
+ {3097, "+proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3098, "+proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3099, "+proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3100, "+proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3101, "+proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3102, "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=95169.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3103, "+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs"},
+ {3104, "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs"},
+ {3105, "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs"},
+ {3106, "+proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs"},
+ {3107, "+proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3108, "+proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.999997 +x_0=47000 +y_0=50000 +ellps=GRS80 +units=m +no_defs"},
+ {3109, "+proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.9999999000000001 +x_0=40000 +y_0=70000 +ellps=GRS80 +units=m +no_defs"},
+ {3110, "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=4500000 +ellps=aust_SA +units=m +no_defs"},
+ {3111, "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3112, "+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3113, "+proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3114, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3115, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3116, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3117, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3118, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3119, "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs"},
+ {3120, "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {3121, "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs"},
+ {3122, "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs"},
+ {3123, "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs"},
+ {3124, "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs"},
+ {3125, "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs"},
+ {3126, "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3127, "+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3128, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3129, "+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3130, "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3131, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3132, "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3133, "+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3134, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3135, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3136, "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3137, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3138, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ //{3139, ""},
+ {3140, "+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168 +no_defs"},
+ {3141, "+proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs"},
+ {3142, "+proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs"},
+ {3143, "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m +no_defs"},
+ //{3144, ""},
+ //{3145, ""},
+ {3146, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3147, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3148, "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs"},
+ {3149, "+proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs"},
+ {3150, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3151, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3152, "+proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0=100178.1808 +y_0=-6500614.7836 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3153, "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3154, "+proj=utm +zone=7 +ellps=GRS80 +units=m +no_defs"},
+ {3155, "+proj=utm +zone=8 +ellps=GRS80 +units=m +no_defs"},
+ {3156, "+proj=utm +zone=9 +ellps=GRS80 +units=m +no_defs"},
+ {3157, "+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs"},
+ {3158, "+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs"},
+ {3159, "+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs"},
+ {3160, "+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs"},
+ {3161, "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3162, "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +units=m +no_defs"},
+ {3163, "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3164, "+proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +units=m +no_defs"},
+ {3165, "+proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +ellps=intl +units=m +no_defs"},
+ {3166, "+proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.29472222222222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.313000000000001 +y_0=-2.354 +ellps=intl +units=m +no_defs"},
+ {3167, "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=40000 +y_0=0 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116756 +no_defs"},
+ {3168, "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804670.24 +y_0=0 +a=6377295.664 +b=6356094.667915204 +units=m +no_defs"},
+ {3169, "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3170, "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3171, "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3172, "+proj=utm +zone=59 +south +ellps=intl +units=m +no_defs"},
+ //{3173, ""},
+ {3174, "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3175, "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3176, "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs"},
+ {3177, "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_0=1000000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3178, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3179, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3180, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3181, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3182, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3183, "+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3184, "+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3185, "+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3186, "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3187, "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3188, "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3189, "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3190, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3191, "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3192, "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3193, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3194, "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3195, "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3196, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3197, "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3198, "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3199, "+proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3200, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs"},
+ {3201, "+proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3202, "+proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3203, "+proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs"},
+ {3204, "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3205, "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3206, "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3207, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3208, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3209, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3210, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3211, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3212, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3213, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3214, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3215, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3216, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3217, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3218, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3219, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3220, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3221, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3222, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3223, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3224, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3225, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3226, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3227, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3228, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3229, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3230, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3231, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3232, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3233, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3234, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3235, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3236, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3237, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3238, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3239, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3240, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3241, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3242, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3243, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3244, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3245, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3246, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3247, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3248, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3249, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3250, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3251, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3252, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3253, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3254, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3255, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3256, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3257, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3258, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3259, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3260, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3261, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3262, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3263, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3264, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3265, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3266, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3267, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3268, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3269, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3270, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3271, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3272, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3273, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3274, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3275, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3276, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3277, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3278, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3279, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3280, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3281, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3282, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3283, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3284, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3285, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3286, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3287, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3288, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3289, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3290, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3291, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3292, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3293, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3294, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ //{3295, ""},
+ {3296, "+proj=utm +zone=5 +south +ellps=GRS80 +units=m +no_defs"},
+ {3297, "+proj=utm +zone=6 +south +ellps=GRS80 +units=m +no_defs"},
+ {3298, "+proj=utm +zone=7 +south +ellps=GRS80 +units=m +no_defs"},
+ {3299, "+proj=utm +zone=8 +south +ellps=GRS80 +units=m +no_defs"},
+ {3300, "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m +no_defs"},
+ {3301, "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3302, "+proj=utm +zone=7 +south +ellps=intl +units=m +no_defs"},
+ {3303, "+proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m +no_defs"},
+ {3304, "+proj=utm +zone=6 +south +ellps=intl +units=m +no_defs"},
+ {3305, "+proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m +no_defs"},
+ {3306, "+proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +units=m +no_defs"},
+ {3307, "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +units=m +no_defs"},
+ {3308, "+proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3309, "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3310, "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3311, "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +units=m +no_defs"},
+ {3312, "+proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs"},
+ {3313, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m +no_defs"},
+ {3314, "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {3315, "+proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {3316, "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3317, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3318, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3319, "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3320, "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3321, "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3322, "+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3323, "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3324, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3325, "+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3326, "+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3327, "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {3328, "+proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {3329, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {3330, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {3331, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {3332, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {3333, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {3334, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {3335, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"},
+ {3336, "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs"},
+ {3337, "+proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.19506944444445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0=1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +units=m +no_defs"},
+ {3338, "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3339, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs"},
+ {3340, "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs"},
+ {3341, "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs"},
+ {3342, "+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs"},
+ {3343, "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3344, "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3345, "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3346, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3347, "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3348, "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs"},
+ {3349, "+proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3350, "+proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3351, "+proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3352, "+proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3353, "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs"},
+ {3354, "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs"},
+ {3355, "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +units=m +no_defs"},
+ {3356, "+proj=utm +zone=17 +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +units=m +no_defs"},
+ {3357, "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs"},
+ {3358, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3359, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {3360, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3361, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs"},
+ {3362, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3363, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3364, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3365, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3366, "+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs"},
+ {3367, "+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs"},
+ {3368, "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs"},
+ {3369, "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs"},
+ {3370, "+proj=utm +zone=59 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3371, "+proj=utm +zone=60 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3372, "+proj=utm +zone=59 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3373, "+proj=utm +zone=60 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3374, "+proj=utm +zone=29 +ellps=intl +units=m +no_defs"},
+ {3375, "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.99984 +x_0=804671 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3376, "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3377, "+proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m +no_defs"},
+ {3378, "+proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m +no_defs"},
+ {3379, "+proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m +no_defs"},
+ {3380, "+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m +no_defs"},
+ {3381, "+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m +no_defs"},
+ {3382, "+proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m +no_defs"},
+ {3383, "+proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3384, "+proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m +no_defs"},
+ {3385, "+proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m +no_defs"},
+ {3386, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {3387, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {3388, "+proj=merc +lon_0=51 +k=1 +x_0=0 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3389, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3390, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {3391, "+proj=utm +zone=37 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs"},
+ {3392, "+proj=utm +zone=38 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs"},
+ {3393, "+proj=utm +zone=39 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs"},
+ {3394, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs"},
+ {3395, "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3396, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3397, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3398, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3399, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {3400, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3401, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3402, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3403, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3404, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3405, "+proj=utm +zone=48 +ellps=WGS84 +units=m +no_defs"},
+ {3406, "+proj=utm +zone=49 +ellps=WGS84 +units=m +no_defs"},
+ {3407, "+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs"},
+ {3408, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs"},
+ {3409, "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs"},
+ {3410, "+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs"},
+ {3411, "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs"},
+ {3412, "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs"},
+ {3413, "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3414, "+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs"},
+ {3415, "+proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0=500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {3416, "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs"},
+ {3417, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3418, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3419, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3420, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3421, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3422, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3423, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3424, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3425, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3426, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3427, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3428, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3429, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3430, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3431, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3432, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3433, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3434, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3435, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3436, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3437, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3438, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3439, "+proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs"},
+ {3440, "+proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs"},
+ {3441, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3442, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3443, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3444, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3445, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3446, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3447, "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=150328 +y_0=166262 +ellps=GRS80 +units=m +no_defs"},
+ {3448, "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3449, "+proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3450, "+proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3451, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3452, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3453, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3454, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3455, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3456, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3457, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3458, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3459, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3460, "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m +no_defs"},
+ {3461, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs"},
+ {3462, "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs"},
+ {3463, "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3464, "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3465, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3466, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3467, "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3468, "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3469, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3470, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3471, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3472, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3473, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3474, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3475, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3476, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3477, "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3478, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3479, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3480, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3481, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3482, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3483, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3484, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3485, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3486, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3487, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3488, "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3489, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3490, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3491, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3492, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3493, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3494, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3495, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3496, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3497, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3498, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3499, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3500, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3501, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3502, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3503, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3504, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3505, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3506, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3507, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3508, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3509, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3510, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3511, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3512, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3513, "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3514, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3515, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3516, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3517, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3518, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3519, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3520, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3521, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3522, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3523, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3524, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3525, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3526, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3527, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3528, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3529, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3530, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3531, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3532, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3533, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3534, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3535, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3536, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3537, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3538, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3539, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3540, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3541, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3542, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3543, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3544, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3545, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3546, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3547, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3548, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3549, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3550, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3551, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3552, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3553, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3554, "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3555, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3556, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3557, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3558, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3559, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3560, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3561, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs"},
+ {3562, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs"},
+ {3563, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs"},
+ {3564, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs"},
+ {3565, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs"},
+ {3566, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3567, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3568, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3569, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3570, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3571, "+proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3572, "+proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3573, "+proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3574, "+proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3575, "+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3576, "+proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3577, "+proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3578, "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3579, "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {3580, "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3581, "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3582, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3583, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3584, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3585, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3586, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3587, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3588, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3589, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3590, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3591, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3592, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3593, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3594, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3595, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3596, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3597, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3598, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3599, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3600, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3601, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3602, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3603, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3604, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3605, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3606, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3607, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3608, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3609, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3610, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3611, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3612, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3613, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3614, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3615, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3616, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3617, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3618, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3619, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3620, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3621, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3622, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3623, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3624, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3625, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3626, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3627, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3628, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3629, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3630, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3631, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3632, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3633, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3634, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3635, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3636, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3637, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3638, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3639, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3640, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3641, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3642, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3643, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3644, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3645, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3646, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3647, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3648, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3649, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3650, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3651, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3652, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3653, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3654, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3655, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3656, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3657, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3658, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3659, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3660, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3661, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3662, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3663, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3664, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3665, "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3666, "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3667, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3668, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3669, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3670, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3671, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3672, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3673, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3674, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3675, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3676, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3677, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3678, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3679, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3680, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3681, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3682, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs"},
+ {3683, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3684, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3685, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3686, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3687, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3688, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3689, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3690, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3691, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3692, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3693, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3694, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3695, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3696, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3697, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3698, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3699, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3700, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3701, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3702, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3703, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3704, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3705, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3706, "+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3707, "+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3708, "+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3709, "+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3710, "+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3711, "+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3712, "+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3713, "+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3714, "+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3715, "+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3716, "+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3717, "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3718, "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3719, "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3720, "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3721, "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3722, "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3723, "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3724, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3725, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3726, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3727, "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +units=m +no_defs"},
+ {3728, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3729, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3730, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3731, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3732, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3733, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3734, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3735, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3736, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3737, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3738, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3739, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3740, "+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs"},
+ {3741, "+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs"},
+ {3742, "+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs"},
+ {3743, "+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs"},
+ {3744, "+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs"},
+ {3745, "+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs"},
+ {3746, "+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs"},
+ {3747, "+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs"},
+ {3748, "+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs"},
+ {3749, "+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs"},
+ {3750, "+proj=utm +zone=4 +ellps=GRS80 +units=m +no_defs"},
+ {3751, "+proj=utm +zone=5 +ellps=GRS80 +units=m +no_defs"},
+ {3752, "+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3753, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3754, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3755, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3756, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3757, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3758, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3759, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {3760, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {3761, "+proj=utm +zone=22 +ellps=GRS80 +units=m +no_defs"},
+ {3762, "+proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {3763, "+proj=tmerc +lat_0=39.66825833333333 +lon_0=-8.133108333333334 +k=1 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3764, "+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3765, "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3766, "+proj=lcc +lat_1=45.91666666666666 +lat_2=43.08333333333334 +lat_0=0 +lon_0=16.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3767, "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3768, "+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3769, "+proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs"},
+ {3770, "+proj=tmerc +lat_0=32 +lon_0=-64.75 +k=1 +x_0=550000 +y_0=100000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3771, "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3772, "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3773, "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3774, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3775, "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3776, "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3777, "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3778, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3779, "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3780, "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3781, "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3782, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3783, "+proj=tmerc +lat_0=-25.06855261111111 +lon_0=-130.1129671111111 +k=1 +x_0=14200 +y_0=15500 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3784, "+proj=utm +zone=9 +south +ellps=intl +towgs84=185,165,42,0,0,0,0 +units=m +no_defs"},
+ {3785, "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3786, "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs"},
+ {3787, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {3788, "+proj=tmerc +lat_0=0 +lon_0=166 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3789, "+proj=tmerc +lat_0=0 +lon_0=169 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3790, "+proj=tmerc +lat_0=0 +lon_0=179 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3791, "+proj=tmerc +lat_0=0 +lon_0=-178 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3793, "+proj=tmerc +lat_0=0 +lon_0=-176.5 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3794, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3795, "+proj=lcc +lat_1=23 +lat_2=21.7 +lat_0=22.35 +lon_0=-81 +x_0=500000 +y_0=280296.016 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3796, "+proj=lcc +lat_1=21.3 +lat_2=20.13333333333333 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3797, "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3798, "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3799, "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {3800, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {3801, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {3802, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ //{3812, ""},
+ //{3814, ""},
+ //{3815, ""},
+ //{3816, ""},
+ {3819, "+proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.35,4.115,2.9383,-0.853,-0.7029504596901044 +no_defs"},
+ {3821, "+proj=longlat +ellps=aust_SA +no_defs"},
+ //{3822, ""},
+ {3823, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {3824, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{3825, ""},
+ //{3826, ""},
+ //{3827, ""},
+ //{3828, ""},
+ //{3829, ""},
+ //{3832, ""},
+ //{3833, ""},
+ //{3834, ""},
+ //{3835, ""},
+ //{3836, ""},
+ //{3837, ""},
+ //{3838, ""},
+ //{3839, ""},
+ //{3840, ""},
+ //{3841, ""},
+ //{3842, ""},
+ //{3843, ""},
+ //{3844, ""},
+ //{3845, ""},
+ //{3846, ""},
+ //{3847, ""},
+ //{3848, ""},
+ //{3849, ""},
+ //{3850, ""},
+ {3920, "+proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=m +no_defs"},
+ {3942, "+proj=lcc +lat_1=41.25 +lat_2=42.75 +lat_0=42 +lon_0=3 +x_0=1700000 +y_0=1200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3943, "+proj=lcc +lat_1=42.25 +lat_2=43.75 +lat_0=43 +lon_0=3 +x_0=1700000 +y_0=2200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3944, "+proj=lcc +lat_1=43.25 +lat_2=44.75 +lat_0=44 +lon_0=3 +x_0=1700000 +y_0=3200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3945, "+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3946, "+proj=lcc +lat_1=45.25 +lat_2=46.75 +lat_0=46 +lon_0=3 +x_0=1700000 +y_0=5200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3947, "+proj=lcc +lat_1=46.25 +lat_2=47.75 +lat_0=47 +lon_0=3 +x_0=1700000 +y_0=6200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3948, "+proj=lcc +lat_1=47.25 +lat_2=48.75 +lat_0=48 +lon_0=3 +x_0=1700000 +y_0=7200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3949, "+proj=lcc +lat_1=48.25 +lat_2=49.75 +lat_0=49 +lon_0=3 +x_0=1700000 +y_0=8200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3950, "+proj=lcc +lat_1=49.25 +lat_2=50.75 +lat_0=50 +lon_0=3 +x_0=1700000 +y_0=9200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {3991, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {3992, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ //{3993, ""},
+ //{3994, ""},
+ //{3995, ""},
+ //{3996, ""},
+ //{3997, ""},
+ {4001, "+proj=longlat +ellps=airy +no_defs"},
+ {4002, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs"},
+ {4003, "+proj=longlat +ellps=aust_SA +no_defs"},
+ {4004, "+proj=longlat +ellps=bessel +no_defs"},
+ {4005, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +no_defs"},
+ {4006, "+proj=longlat +ellps=bess_nam +no_defs"},
+ {4007, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs"},
+ {4008, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4009, "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs"},
+ {4010, "+proj=longlat +a=6378300.789 +b=6356566.435 +no_defs"},
+ {4011, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4012, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4013, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs"},
+ {4014, "+proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs"},
+ {4015, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs"},
+ {4016, "+proj=longlat +ellps=evrstSS +no_defs"},
+ {4018, "+proj=longlat +a=6377304.063 +b=6356103.038993155 +no_defs"},
+ {4019, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {4020, "+proj=longlat +ellps=helmert +no_defs"},
+ {4021, "+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs"},
+ {4022, "+proj=longlat +ellps=intl +no_defs"},
+ {4024, "+proj=longlat +ellps=krass +no_defs"},
+ {4025, "+proj=longlat +ellps=WGS66 +no_defs"},
+ {4027, "+proj=longlat +a=6376523 +b=6355862.933255573 +no_defs"},
+ {4028, "+proj=longlat +a=6378298.3 +b=6356657.142669561 +no_defs"},
+ {4029, "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs"},
+ {4030, "+proj=longlat +ellps=WGS84 +no_defs"},
+ {4031, "+proj=longlat +ellps=WGS84 +no_defs"},
+ {4032, "+proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs"},
+ {4033, "+proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs"},
+ {4034, "+proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs"},
+ {4035, "+proj=longlat +a=6371000 +b=6371000 +no_defs"},
+ {4036, "+proj=longlat +ellps=GRS67 +no_defs"},
+ {4041, "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs"},
+ {4042, "+proj=longlat +a=6377299.36559538 +b=6356098.359005157 +no_defs"},
+ {4043, "+proj=longlat +ellps=WGS72 +no_defs"},
+ {4044, "+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs"},
+ {4045, "+proj=longlat +a=6377299.151 +b=6356098.145120132 +no_defs"},
+ {4047, "+proj=longlat +a=6371007 +b=6371007 +no_defs"},
+ {4052, "+proj=longlat +a=6370997 +b=6370997 +no_defs"},
+ {4053, "+proj=longlat +a=6371228 +b=6371228 +no_defs"},
+ {4054, "+proj=longlat +a=6378273 +b=6356889.449 +no_defs"},
+ {4055, "+proj=longlat +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4120, "+proj=longlat +ellps=bessel +no_defs"},
+ {4121, "+proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +no_defs"},
+ {4122, "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs"},
+ {4123, "+proj=longlat +ellps=intl +no_defs"},
+ {4124, "+proj=longlat +ellps=bessel +no_defs"},
+ {4125, "+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs"},
+ {4126, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {4127, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4128, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4129, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4130, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs"},
+ {4131, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs"},
+ {4132, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4133, "+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +no_defs"},
+ {4134, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4135, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4136, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4137, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4138, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4139, "+proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +no_defs"},
+ {4140, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4141, "+proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +no_defs"},
+ {4142, "+proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +no_defs"},
+ {4143, "+proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs"},
+ {4144, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs"},
+ {4145, "+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs"},
+ {4146, "+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +no_defs"},
+ {4147, "+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs"},
+ {4148, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4149, "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs"},
+ {4150, "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs"},
+ {4151, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4152, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {4153, "+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +no_defs"},
+ {4154, "+proj=longlat +ellps=intl +no_defs"},
+ {4155, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +no_defs"},
+ {4156, "+proj=longlat +ellps=bessel +no_defs"},
+ {4157, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs"},
+ {4158, "+proj=longlat +ellps=intl +no_defs"},
+ {4159, "+proj=longlat +ellps=intl +no_defs"},
+ {4160, "+proj=longlat +ellps=intl +no_defs"},
+ {4161, "+proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +no_defs"},
+ {4162, "+proj=longlat +ellps=bessel +no_defs"},
+ {4163, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4164, "+proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +no_defs"},
+ {4165, "+proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +no_defs"},
+ {4166, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4167, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4168, "+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +no_defs"},
+ {4169, "+proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +no_defs"},
+ {4170, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4171, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4172, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4173, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4174, "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs"},
+ {4175, "+proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +no_defs"},
+ {4176, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4178, "+proj=longlat +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +no_defs"},
+ {4179, "+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +no_defs"},
+ {4180, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4181, "+proj=longlat +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +no_defs"},
+ {4182, "+proj=longlat +ellps=intl +no_defs"},
+ {4183, "+proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +no_defs"},
+ {4184, "+proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0 +no_defs"},
+ {4185, "+proj=longlat +ellps=intl +no_defs"},
+ {4188, "+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs"},
+ {4189, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4190, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {4191, "+proj=longlat +ellps=krass +no_defs"},
+ {4192, "+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +no_defs"},
+ {4193, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs"},
+ {4194, "+proj=longlat +ellps=intl +no_defs"},
+ {4195, "+proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6 +no_defs"},
+ {4196, "+proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6 +no_defs"},
+ {4197, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4198, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4199, "+proj=longlat +ellps=intl +no_defs"},
+ {4200, "+proj=longlat +ellps=krass +no_defs"},
+ {4201, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4202, "+proj=longlat +ellps=aust_SA +no_defs"},
+ {4203, "+proj=longlat +ellps=aust_SA +no_defs"},
+ {4204, "+proj=longlat +ellps=intl +no_defs"},
+ {4205, "+proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +no_defs"},
+ {4206, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4207, "+proj=longlat +ellps=intl +no_defs"},
+ {4208, "+proj=longlat +ellps=intl +no_defs"},
+ {4209, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs"},
+ {4210, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4211, "+proj=longlat +ellps=bessel +no_defs"},
+ {4212, "+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +no_defs"},
+ {4213, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +no_defs"},
+ {4214, "+proj=longlat +ellps=krass +no_defs"},
+ {4215, "+proj=longlat +ellps=intl +no_defs"},
+ {4216, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4218, "+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +no_defs"},
+ {4219, "+proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0 +no_defs"},
+ {4220, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4221, "+proj=longlat +ellps=intl +no_defs"},
+ {4222, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs"},
+ {4223, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4224, "+proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +no_defs"},
+ {4225, "+proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +no_defs"},
+ {4226, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4227, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4228, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4229, "+proj=longlat +ellps=helmert +no_defs"},
+ {4230, "+proj=longlat +ellps=intl +no_defs"},
+ {4231, "+proj=longlat +ellps=intl +no_defs"},
+ {4232, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4233, "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs"},
+ {4234, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4235, "+proj=longlat +ellps=intl +no_defs"},
+ {4236, "+proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs"},
+ {4237, "+proj=longlat +ellps=GRS67 +no_defs"},
+ {4238, "+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs"},
+ {4239, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +no_defs"},
+ {4240, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs"},
+ {4241, "+proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs"},
+ {4242, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4243, "+proj=longlat +a=6377299.36559538 +b=6356098.359005157 +no_defs"},
+ {4244, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +no_defs"},
+ {4245, "+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs"},
+ {4246, "+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +no_defs"},
+ {4247, "+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +no_defs"},
+ {4248, "+proj=longlat +ellps=intl +no_defs"},
+ {4249, "+proj=longlat +ellps=intl +no_defs"},
+ {4250, "+proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +no_defs"},
+ {4251, "+proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +no_defs"},
+ {4252, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4253, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4254, "+proj=longlat +ellps=intl +no_defs"},
+ {4255, "+proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0 +no_defs"},
+ {4256, "+proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0 +no_defs"},
+ {4257, "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +no_defs"},
+ {4258, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {4259, "+proj=longlat +ellps=intl +no_defs"},
+ {4260, "+proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs"},
+ {4261, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +no_defs"},
+ {4262, "+proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs"},
+ {4263, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4264, "+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +no_defs"},
+ {4265, "+proj=longlat +ellps=intl +no_defs"},
+ {4266, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4267, "+proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs"},
+ {4268, "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs"},
+ {4269, "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs"},
+ {4270, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4271, "+proj=longlat +ellps=intl +no_defs"},
+ {4272, "+proj=longlat +ellps=intl +datum=nzgd49 +no_defs"},
+ {4273, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs"},
+ {4274, "+proj=longlat +ellps=intl +no_defs"},
+ {4275, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs"},
+ {4276, "+proj=longlat +ellps=WGS66 +no_defs"},
+ {4277, "+proj=longlat +ellps=airy +datum=OSGB36 +no_defs"},
+ {4278, "+proj=longlat +ellps=airy +no_defs"},
+ {4279, "+proj=longlat +ellps=airy +no_defs"},
+ {4280, "+proj=longlat +ellps=bessel +no_defs"},
+ {4281, "+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +no_defs"},
+ {4282, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4283, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4284, "+proj=longlat +ellps=krass +no_defs"},
+ {4285, "+proj=longlat +ellps=intl +no_defs"},
+ {4286, "+proj=longlat +ellps=helmert +no_defs"},
+ {4287, "+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs"},
+ {4288, "+proj=longlat +ellps=intl +no_defs"},
+ {4289, "+proj=longlat +ellps=bessel +no_defs"},
+ {4291, "+proj=longlat +ellps=GRS67 +no_defs"},
+ {4292, "+proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +no_defs"},
+ {4293, "+proj=longlat +ellps=bess_nam +no_defs"},
+ {4294, "+proj=longlat +ellps=bessel +no_defs"},
+ {4295, "+proj=longlat +ellps=bessel +no_defs"},
+ {4296, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4297, "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +no_defs"},
+ {4298, "+proj=longlat +ellps=evrstSS +no_defs"},
+ {4299, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs"},
+ {4300, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs"},
+ {4301, "+proj=longlat +ellps=bessel +no_defs"},
+ {4302, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs"},
+ {4303, "+proj=longlat +ellps=helmert +no_defs"},
+ {4304, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +no_defs"},
+ {4306, "+proj=longlat +ellps=bessel +no_defs"},
+ {4307, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4308, "+proj=longlat +ellps=bessel +no_defs"},
+ {4309, "+proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +no_defs"},
+ {4310, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4311, "+proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs"},
+ {4312, "+proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +no_defs"},
+ {4313, "+proj=longlat +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +no_defs"},
+ {4314, "+proj=longlat +ellps=bessel +datum=potsdam +no_defs"},
+ {4315, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +no_defs"},
+ {4316, "+proj=longlat +ellps=intl +no_defs"},
+ {4317, "+proj=longlat +ellps=krass +no_defs"},
+ {4318, "+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +no_defs"},
+ {4319, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {4322, "+proj=longlat +ellps=WGS72 +no_defs"},
+ {4324, "+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs"},
+ {4326, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"},
+ {4327, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"},
+ //{4328, ""},
+ {4329, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"},
+ //{4330, ""},
+ //{4331, ""},
+ //{4332, ""},
+ //{4333, ""},
+ //{4334, ""},
+ //{4335, ""},
+ //{4336, ""},
+ //{4337, ""},
+ //{4338, ""},
+ {4339, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4340, ""},
+ {4341, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4342, ""},
+ {4343, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4344, ""},
+ {4345, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4346, ""},
+ {4347, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4348, ""},
+ {4349, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4350, ""},
+ {4351, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4352, ""},
+ {4353, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4354, ""},
+ {4355, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4356, ""},
+ {4357, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,-0.0,0.0,0.0,0.0 +no_defs"},
+ //{4358, ""},
+ {4359, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs"},
+ //{4360, ""},
+ {4361, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs"},
+ //{4362, ""},
+ {4363, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4364, ""},
+ {4365, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4366, ""},
+ {4367, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4368, ""},
+ {4369, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4370, ""},
+ {4371, "+proj=longlat +ellps=GRS80 +towgs84=2.0,2.0,-2.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4372, ""},
+ {4373, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4374, ""},
+ {4375, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4376, ""},
+ {4377, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4378, ""},
+ {4379, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4380, ""},
+ {4381, "+proj=longlat +ellps=intl +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4382, ""},
+ {4383, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4384, ""},
+ //{4385, ""},
+ {4386, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4387, ""},
+ {4388, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4389, ""},
+ {4600, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4601, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4602, "+proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +no_defs"},
+ {4603, "+proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +no_defs"},
+ {4604, "+proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +no_defs"},
+ {4605, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4606, "+proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +no_defs"},
+ {4607, "+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +no_defs"},
+ {4608, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4609, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4610, "+proj=longlat +a=6378140 +b=6356755.288157528 +no_defs"},
+ {4611, "+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs"},
+ {4612, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4613, "+proj=longlat +ellps=bessel +no_defs"},
+ {4614, "+proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +no_defs"},
+ {4615, "+proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +no_defs"},
+ {4616, "+proj=longlat +ellps=intl +no_defs"},
+ {4617, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {4618, "+proj=longlat +ellps=aust_SA +no_defs"},
+ {4619, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4620, "+proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0,0 +no_defs"},
+ {4621, "+proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 +no_defs"},
+ {4622, "+proj=longlat +ellps=intl +no_defs"},
+ {4623, "+proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0 +no_defs"},
+ {4624, "+proj=longlat +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +no_defs"},
+ {4625, "+proj=longlat +ellps=intl +no_defs"},
+ {4626, "+proj=longlat +ellps=intl +no_defs"},
+ {4627, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4628, "+proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0 +no_defs"},
+ {4629, "+proj=longlat +ellps=intl +no_defs"},
+ {4630, "+proj=longlat +ellps=intl +no_defs"},
+ {4631, "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs"},
+ {4632, "+proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +no_defs"},
+ {4633, "+proj=longlat +ellps=intl +no_defs"},
+ {4634, "+proj=longlat +ellps=intl +no_defs"},
+ {4635, "+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +no_defs"},
+ {4636, "+proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0 +no_defs"},
+ {4637, "+proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0 +no_defs"},
+ {4638, "+proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +no_defs"},
+ {4639, "+proj=longlat +ellps=intl +no_defs"},
+ {4640, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4641, "+proj=longlat +ellps=intl +no_defs"},
+ {4642, "+proj=longlat +ellps=intl +no_defs"},
+ {4643, "+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +no_defs"},
+ {4644, "+proj=longlat +ellps=intl +no_defs"},
+ {4645, "+proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4646, "+proj=longlat +ellps=intl +no_defs"},
+ {4657, "+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0 +no_defs"},
+ {4658, "+proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +no_defs"},
+ {4659, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4660, "+proj=longlat +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +no_defs"},
+ {4661, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4662, "+proj=longlat +ellps=intl +no_defs"},
+ {4663, "+proj=longlat +ellps=intl +no_defs"},
+ {4664, "+proj=longlat +ellps=intl +no_defs"},
+ {4665, "+proj=longlat +ellps=intl +no_defs"},
+ {4666, "+proj=longlat +ellps=bessel +no_defs"},
+ {4667, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4668, "+proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0 +no_defs"},
+ {4669, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4670, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4671, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {4672, "+proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0 +no_defs"},
+ {4673, "+proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263 +no_defs"},
+ {4674, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4675, "+proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0,0 +no_defs"},
+ {4676, "+proj=longlat +ellps=krass +no_defs"},
+ {4677, "+proj=longlat +ellps=krass +no_defs"},
+ {4678, "+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0,0,0,0 +no_defs"},
+ {4679, "+proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.19,0,0,0,0 +no_defs"},
+ {4680, "+proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,0,0,0 +no_defs"},
+ {4681, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4682, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs"},
+ {4683, "+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +no_defs"},
+ {4684, "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs"},
+ {4685, "+proj=longlat +ellps=intl +no_defs"},
+ {4686, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4687, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {4688, "+proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +no_defs"},
+ {4689, "+proj=longlat +ellps=intl +no_defs"},
+ {4690, "+proj=longlat +ellps=intl +no_defs"},
+ {4691, "+proj=longlat +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +no_defs"},
+ {4692, "+proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +no_defs"},
+ {4693, "+proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +no_defs"},
+ {4694, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4695, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4696, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4697, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4698, "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs"},
+ {4699, "+proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +no_defs"},
+ {4700, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4701, "+proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +no_defs"},
+ {4702, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4703, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4704, "+proj=longlat +ellps=intl +no_defs"},
+ {4705, "+proj=longlat +ellps=intl +no_defs"},
+ {4706, "+proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +no_defs"},
+ {4707, "+proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0 +no_defs"},
+ {4708, "+proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0,0 +no_defs"},
+ {4709, "+proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0 +no_defs"},
+ {4710, "+proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +no_defs"},
+ {4711, "+proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0 +no_defs"},
+ {4712, "+proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0 +no_defs"},
+ {4713, "+proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,0 +no_defs"},
+ {4714, "+proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0 +no_defs"},
+ {4715, "+proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0 +no_defs"},
+ {4716, "+proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0 +no_defs"},
+ {4717, "+proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 +no_defs"},
+ {4718, "+proj=longlat +ellps=intl +no_defs"},
+ {4719, "+proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0 +no_defs"},
+ {4720, "+proj=longlat +ellps=WGS72 +no_defs"},
+ {4721, "+proj=longlat +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +no_defs"},
+ {4722, "+proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0 +no_defs"},
+ {4723, "+proj=longlat +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +no_defs"},
+ {4724, "+proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0 +no_defs"},
+ {4725, "+proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 +no_defs"},
+ {4726, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {4727, "+proj=longlat +ellps=intl +no_defs"},
+ {4728, "+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 +no_defs"},
+ {4729, "+proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0 +no_defs"},
+ {4730, "+proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0 +no_defs"},
+ {4731, "+proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0 +no_defs"},
+ {4732, "+proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0 +no_defs"},
+ {4733, "+proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0 +no_defs"},
+ {4734, "+proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0 +no_defs"},
+ {4735, "+proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,0 +no_defs"},
+ {4736, "+proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0 +no_defs"},
+ {4737, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4738, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs"},
+ {4739, "+proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,0 +no_defs"},
+ {4740, "+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,-0,-0,0.076,0 +no_defs"},
+ {4741, "+proj=longlat +ellps=intl +no_defs"},
+ {4742, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {4743, "+proj=longlat +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +no_defs"},
+ {4744, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {4745, "+proj=longlat +ellps=bessel +no_defs"},
+ {4746, "+proj=longlat +ellps=bessel +no_defs"},
+ {4747, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4748, "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs"},
+ {4749, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4750, "+proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +no_defs"},
+ {4751, "+proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs"},
+ {4752, "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs"},
+ {4753, "+proj=longlat +ellps=intl +no_defs"},
+ {4754, "+proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +no_defs"},
+ {4755, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4756, "+proj=longlat +ellps=WGS84 +no_defs"},
+ {4757, "+proj=longlat +ellps=WGS84 +no_defs"},
+ {4758, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4759, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4760, "+proj=longlat +ellps=WGS66 +no_defs"},
+ {4761, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4762, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4763, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4764, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4765, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs"},
+ {4801, "+proj=longlat +ellps=bessel +pm=bern +no_defs"},
+ {4802, "+proj=longlat +ellps=intl +pm=bogota +no_defs"},
+ {4803, "+proj=longlat +ellps=intl +pm=lisbon +no_defs"},
+ {4804, "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +no_defs"},
+ {4805, "+proj=longlat +ellps=bessel +pm=ferro +no_defs"},
+ {4806, "+proj=longlat +ellps=intl +pm=rome +no_defs"},
+ {4807, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +no_defs"},
+ {4808, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs"},
+ {4809, "+proj=longlat +ellps=intl +pm=brussels +no_defs"},
+ {4810, "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +no_defs"},
+ {4811, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris +no_defs"},
+ {4813, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs"},
+ {4814, "+proj=longlat +ellps=bessel +pm=stockholm +no_defs"},
+ {4815, "+proj=longlat +ellps=bessel +pm=athens +no_defs"},
+ {4816, "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs"},
+ {4817, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_defs"},
+ {4818, "+proj=longlat +ellps=bessel +pm=ferro +no_defs"},
+ {4819, "+proj=longlat +ellps=clrk80 +pm=paris +no_defs"},
+ {4820, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs"},
+ {4821, "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs"},
+ //{4882, ""},
+ {4883, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4884, ""},
+ {4885, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4886, ""},
+ {4887, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4888, ""},
+ {4889, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4890, ""},
+ {4891, "+proj=longlat +ellps=WGS66 +no_defs"},
+ //{4892, ""},
+ {4893, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4894, ""},
+ {4895, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4896, ""},
+ //{4897, ""},
+ {4898, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4899, ""},
+ {4900, "+proj=longlat +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0.0,0.0,0.0,0.0 +no_defs"},
+ {4901, "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.3372291666985 +no_defs"},
+ {4902, "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs"},
+ {4903, "+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid +no_defs"},
+ {4904, "+proj=longlat +ellps=bessel +pm=lisbon +no_defs"},
+ //{4906, ""},
+ {4907, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4908, ""},
+ {4909, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4910, ""},
+ //{4911, ""},
+ //{4912, ""},
+ //{4913, ""},
+ //{4914, ""},
+ //{4915, ""},
+ //{4916, ""},
+ //{4917, ""},
+ //{4918, ""},
+ //{4919, ""},
+ //{4920, ""},
+ {4921, "+proj=longlat +ellps=GRS80 +no_defs"},
+ //{4922, ""},
+ {4923, "+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0.0,0.0,1.5,-0.0,0.0,-0.076,0.0 +no_defs"},
+ //{4924, ""},
+ {4925, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4926, ""},
+ {4927, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4928, ""},
+ {4929, "+proj=longlat +ellps=GRS80 +no_defs"},
+ //{4930, ""},
+ {4931, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4932, ""},
+ {4933, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4934, ""},
+ {4935, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4936, ""},
+ {4937, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4938, ""},
+ {4939, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4940, ""},
+ {4941, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4942, ""},
+ {4943, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4944, ""},
+ {4945, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4946, ""},
+ {4947, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4948, ""},
+ {4949, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4950, ""},
+ {4951, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4952, ""},
+ {4953, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,-0.0,0.0,0.0,0.0 +no_defs"},
+ //{4954, ""},
+ {4955, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs"},
+ //{4956, ""},
+ {4957, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs"},
+ //{4958, ""},
+ {4959, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4960, ""},
+ {4961, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4962, ""},
+ {4963, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4964, ""},
+ {4965, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4966, ""},
+ {4967, "+proj=longlat +ellps=GRS80 +towgs84=2.0,2.0,-2.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4968, ""},
+ {4969, "+proj=longlat +ellps=intl +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4970, ""},
+ {4971, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4972, ""},
+ {4973, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4974, ""},
+ {4975, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4976, ""},
+ {4977, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4978, ""},
+ {4979, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"},
+ //{4980, ""},
+ {4981, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4982, ""},
+ {4983, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4984, ""},
+ {4985, "+proj=longlat +ellps=WGS72 +towgs84=0.0,0.0,4.5,0.0,0.0,0.554,0.045171992568114105 +no_defs"},
+ //{4986, ""},
+ {4987, "+proj=longlat +ellps=WGS72 +towgs84=0.0,0.0,1.9,0.0,0.0,0.814,-0.07838062637389662 +no_defs"},
+ //{4988, ""},
+ {4989, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4990, ""},
+ {4991, "+proj=longlat +ellps=krass +no_defs"},
+ //{4992, ""},
+ {4993, "+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4994, ""},
+ {4995, "+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,-4.903,-1.578,-0.21864069462192215 +no_defs"},
+ //{4996, ""},
+ {4997, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ //{4998, ""},
+ {4999, "+proj=longlat +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,-0.0003,0.007,-0.001918262698097996 +no_defs"},
+ //{5600, ""},
+ //{5601, ""},
+ //{5602, ""},
+ //{5603, ""},
+ //{5604, ""},
+ //{5605, ""},
+ //{5606, ""},
+ //{5607, ""},
+ //{5608, ""},
+ //{5609, ""},
+ //{5610, ""},
+ //{5611, ""},
+ //{5612, ""},
+ //{5613, ""},
+ //{5614, ""},
+ //{5615, ""},
+ //{5616, ""},
+ //{5617, ""},
+ //{5618, ""},
+ //{5619, ""},
+ //{5620, ""},
+ //{5701, ""},
+ //{5702, ""},
+ //{5703, ""},
+ //{5704, ""},
+ //{5705, ""},
+ //{5706, ""},
+ //{5709, ""},
+ //{5710, ""},
+ //{5711, ""},
+ //{5712, ""},
+ //{5713, ""},
+ //{5714, ""},
+ //{5715, ""},
+ //{5716, ""},
+ //{5717, ""},
+ //{5718, ""},
+ //{5719, ""},
+ //{5720, ""},
+ //{5721, ""},
+ //{5722, ""},
+ //{5723, ""},
+ //{5724, ""},
+ //{5725, ""},
+ //{5726, ""},
+ //{5727, ""},
+ //{5728, ""},
+ //{5729, ""},
+ //{5730, ""},
+ //{5731, ""},
+ //{5732, ""},
+ //{5733, ""},
+ //{5734, ""},
+ //{5735, ""},
+ //{5736, ""},
+ //{5737, ""},
+ //{5738, ""},
+ //{5739, ""},
+ //{5740, ""},
+ //{5741, ""},
+ //{5742, ""},
+ //{5743, ""},
+ //{5744, ""},
+ //{5745, ""},
+ //{5746, ""},
+ //{5747, ""},
+ //{5748, ""},
+ //{5749, ""},
+ //{5750, ""},
+ //{5751, ""},
+ //{5752, ""},
+ //{5753, ""},
+ //{5754, ""},
+ //{5755, ""},
+ //{5756, ""},
+ //{5757, ""},
+ //{5758, ""},
+ //{5759, ""},
+ //{5760, ""},
+ //{5761, ""},
+ //{5762, ""},
+ //{5763, ""},
+ //{5764, ""},
+ //{5765, ""},
+ //{5766, ""},
+ //{5767, ""},
+ //{5768, ""},
+ //{5769, ""},
+ //{5770, ""},
+ //{5771, ""},
+ //{5772, ""},
+ //{5773, ""},
+ //{5774, ""},
+ //{5775, ""},
+ //{5776, ""},
+ //{5777, ""},
+ //{5778, ""},
+ //{5779, ""},
+ //{5780, ""},
+ //{5781, ""},
+ //{5782, ""},
+ //{5783, ""},
+ //{5784, ""},
+ //{5785, ""},
+ //{5786, ""},
+ //{5787, ""},
+ //{5788, ""},
+ //{5789, ""},
+ //{5790, ""},
+ //{5791, ""},
+ //{5792, ""},
+ //{5793, ""},
+ //{5794, ""},
+ //{5795, ""},
+ //{5796, ""},
+ //{5797, ""},
+ //{5798, ""},
+ //{5799, ""},
+ //{5800, ""},
+ //{5801, ""},
+ //{5802, ""},
+ //{5803, ""},
+ //{5804, ""},
+ //{5805, ""},
+ //{5806, ""},
+ //{5807, ""},
+ //{5808, ""},
+ //{5809, ""},
+ //{5810, ""},
+ //{5811, ""},
+ //{5812, ""},
+ //{5813, ""},
+ //{5814, ""},
+ //{5815, ""},
+ //{5816, ""},
+ //{5817, ""},
+ //{5818, ""},
+ //{5819, ""},
+ //{5820, ""},
+ //{5821, ""},
+ //{7400, ""},
+ //{7401, ""},
+ //{7402, ""},
+ //{7403, ""},
+ //{7404, ""},
+ //{7405, ""},
+ //{7406, ""},
+ //{7407, ""},
+ //{7408, ""},
+ //{7409, ""},
+ //{7410, ""},
+ //{7411, ""},
+ //{7412, ""},
+ //{7413, ""},
+ //{7414, ""},
+ //{7415, ""},
+ //{7416, ""},
+ //{7417, ""},
+ //{7418, ""},
+ //{7419, ""},
+ //{7420, ""},
+ //{7421, ""},
+ //{7422, ""},
+ {20004, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20005, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20006, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20007, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20008, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20009, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20010, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20011, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20012, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20013, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20014, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20015, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20016, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20017, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20018, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20019, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20020, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20021, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20022, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20023, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20024, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20025, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20026, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20027, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20028, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20029, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20030, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20031, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20032, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20064, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20065, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20066, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20067, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20068, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20069, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20070, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20071, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20072, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20073, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20074, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20075, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20076, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20077, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20078, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20079, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20080, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20081, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20082, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20083, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20084, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20085, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20086, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20087, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20088, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20089, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20090, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20091, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20092, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {20135, "+proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs"},
+ {20136, "+proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs"},
+ {20137, "+proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs"},
+ {20138, "+proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs"},
+ {20248, "+proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs"},
+ {20249, "+proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs"},
+ {20250, "+proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs"},
+ {20251, "+proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs"},
+ {20252, "+proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs"},
+ {20253, "+proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs"},
+ {20254, "+proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs"},
+ {20255, "+proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs"},
+ {20256, "+proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs"},
+ {20257, "+proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs"},
+ {20258, "+proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs"},
+ {20348, "+proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs"},
+ {20349, "+proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs"},
+ {20350, "+proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs"},
+ {20351, "+proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs"},
+ {20352, "+proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs"},
+ {20353, "+proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs"},
+ {20354, "+proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs"},
+ {20355, "+proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs"},
+ {20356, "+proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs"},
+ {20357, "+proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs"},
+ {20358, "+proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs"},
+ {20436, "+proj=utm +zone=36 +ellps=intl +units=m +no_defs"},
+ {20437, "+proj=utm +zone=37 +ellps=intl +units=m +no_defs"},
+ {20438, "+proj=utm +zone=38 +ellps=intl +units=m +no_defs"},
+ {20439, "+proj=utm +zone=39 +ellps=intl +units=m +no_defs"},
+ {20440, "+proj=utm +zone=40 +ellps=intl +units=m +no_defs"},
+ {20499, "+proj=utm +zone=39 +ellps=intl +units=m +no_defs"},
+ {20538, "+proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs"},
+ {20539, "+proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs"},
+ {20790, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +pm=lisbon +units=m +no_defs"},
+ {20791, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +pm=lisbon +units=m +no_defs"},
+ {20822, "+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs"},
+ {20823, "+proj=utm +zone=23 +south +ellps=intl +units=m +no_defs"},
+ {20824, "+proj=utm +zone=24 +south +ellps=intl +units=m +no_defs"},
+ {20934, "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs"},
+ {20935, "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs"},
+ {20936, "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs"},
+ {21035, "+proj=utm +zone=35 +south +ellps=clrk80 +units=m +no_defs"},
+ {21036, "+proj=utm +zone=36 +south +ellps=clrk80 +units=m +no_defs"},
+ {21037, "+proj=utm +zone=37 +south +ellps=clrk80 +units=m +no_defs"},
+ {21095, "+proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs"},
+ {21096, "+proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs"},
+ {21097, "+proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs"},
+ {21100, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs"},
+ {21148, "+proj=utm +zone=48 +south +ellps=bessel +units=m +no_defs"},
+ {21149, "+proj=utm +zone=49 +south +ellps=bessel +units=m +no_defs"},
+ {21150, "+proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs"},
+ {21291, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs"},
+ {21292, "+proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs"},
+ {21413, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21414, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21415, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21416, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21417, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21418, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21419, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21420, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21421, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21422, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21423, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21453, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21454, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21455, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21456, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21457, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21458, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21459, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21460, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21461, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21462, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21463, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21473, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21474, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21475, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21476, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21477, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21478, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21479, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21480, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21481, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21482, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21483, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {21500, "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m +no_defs"},
+ {21780, "+proj=somerc +lat_0=46.95240555555556 +lon_0=0 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +pm=bern +units=m +no_defs"},
+ {21781, "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs"},
+ //{21782, ""},
+ {21817, "+proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {21818, "+proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {21891, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {21892, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {21893, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {21894, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {21896, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {21897, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {21898, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {21899, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs"},
+ {22032, "+proj=utm +zone=32 +south +ellps=clrk80 +units=m +no_defs"},
+ {22033, "+proj=utm +zone=33 +south +ellps=clrk80 +units=m +no_defs"},
+ {22091, "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {22092, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs"},
+ {22171, "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {22172, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {22173, "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {22174, "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {22175, "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {22176, "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {22177, "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {22181, "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {22182, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {22183, "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {22184, "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {22185, "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {22186, "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {22187, "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {22191, "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {22192, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {22193, "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {22194, "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {22195, "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {22196, "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {22197, "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {22234, "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs"},
+ {22235, "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs"},
+ {22236, "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs"},
+ //{22275, ""},
+ //{22277, ""},
+ //{22279, ""},
+ //{22281, ""},
+ //{22283, ""},
+ //{22285, ""},
+ //{22287, ""},
+ //{22289, ""},
+ //{22291, ""},
+ //{22293, ""},
+ //{22300, ""},
+ {22332, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {22391, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {22392, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {22521, "+proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs"},
+ {22522, "+proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs"},
+ {22523, "+proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs"},
+ {22524, "+proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs"},
+ {22525, "+proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs"},
+ {22700, "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {22770, "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {22780, "+proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {22832, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {22991, "+proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=1100000 +ellps=helmert +units=m +no_defs"},
+ {22992, "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +units=m +no_defs"},
+ {22993, "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=200000 +ellps=helmert +units=m +no_defs"},
+ {22994, "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=1200000 +ellps=helmert +units=m +no_defs"},
+ {23028, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs"},
+ {23029, "+proj=utm +zone=29 +ellps=intl +units=m +no_defs"},
+ {23030, "+proj=utm +zone=30 +ellps=intl +units=m +no_defs"},
+ {23031, "+proj=utm +zone=31 +ellps=intl +units=m +no_defs"},
+ {23032, "+proj=utm +zone=32 +ellps=intl +units=m +no_defs"},
+ {23033, "+proj=utm +zone=33 +ellps=intl +units=m +no_defs"},
+ {23034, "+proj=utm +zone=34 +ellps=intl +units=m +no_defs"},
+ {23035, "+proj=utm +zone=35 +ellps=intl +units=m +no_defs"},
+ {23036, "+proj=utm +zone=36 +ellps=intl +units=m +no_defs"},
+ {23037, "+proj=utm +zone=37 +ellps=intl +units=m +no_defs"},
+ {23038, "+proj=utm +zone=38 +ellps=intl +units=m +no_defs"},
+ {23090, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {23095, "+proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {23239, "+proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs"},
+ {23240, "+proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs"},
+ {23433, "+proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {23700, "+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +units=m +no_defs"},
+ {23830, "+proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23831, "+proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23832, "+proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23833, "+proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23834, "+proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23835, "+proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23836, "+proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23837, "+proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23838, "+proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23839, "+proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23840, "+proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23841, "+proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23842, "+proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23843, "+proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23844, "+proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23845, "+proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23846, "+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23847, "+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23848, "+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23849, "+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23850, "+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23851, "+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23852, "+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23853, "+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23866, "+proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23867, "+proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23868, "+proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23869, "+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23870, "+proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23871, "+proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23872, "+proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23877, "+proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23878, "+proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23879, "+proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23880, "+proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23881, "+proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23882, "+proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23883, "+proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23884, "+proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {23886, "+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23887, "+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23888, "+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23889, "+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23890, "+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23891, "+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23892, "+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23893, "+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23894, "+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs"},
+ {23946, "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs"},
+ {23947, "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs"},
+ {23948, "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs"},
+ {24047, "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs"},
+ {24048, "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs"},
+ {24100, "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49597 +y_0=121918.90616 +a=6378249.144808011 +b=6356514.966204134 +to_meter=0.3047972654 +no_defs"},
+ {24200, "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +units=m +no_defs"},
+ {24305, "+proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs"},
+ {24306, "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs"},
+ {24311, "+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs"},
+ {24312, "+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs"},
+ {24313, "+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs"},
+ {24342, "+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24343, "+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24344, "+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24345, "+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24346, "+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24347, "+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24370, "+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs"},
+ {24371, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs"},
+ {24372, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs"},
+ {24373, "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs"},
+ {24374, "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs"},
+ {24375, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs"},
+ {24376, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs"},
+ {24377, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs"},
+ {24378, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24379, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24380, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24381, "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24382, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs"},
+ {24383, "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"},
+ {24500, "+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs"},
+ {24547, "+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs"},
+ {24548, "+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs"},
+ {24571, "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs"},
+ {24600, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +units=m +no_defs"},
+ {24718, "+proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs"},
+ {24719, "+proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs"},
+ {24720, "+proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs"},
+ {24817, "+proj=utm +zone=17 +ellps=intl +units=m +no_defs"},
+ {24818, "+proj=utm +zone=18 +ellps=intl +units=m +no_defs"},
+ {24819, "+proj=utm +zone=19 +ellps=intl +units=m +no_defs"},
+ {24820, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs"},
+ {24821, "+proj=utm +zone=21 +ellps=intl +units=m +no_defs"},
+ {24877, "+proj=utm +zone=17 +south +ellps=intl +units=m +no_defs"},
+ {24878, "+proj=utm +zone=18 +south +ellps=intl +units=m +no_defs"},
+ {24879, "+proj=utm +zone=19 +south +ellps=intl +units=m +no_defs"},
+ {24880, "+proj=utm +zone=20 +south +ellps=intl +units=m +no_defs"},
+ {24881, "+proj=utm +zone=21 +south +ellps=intl +units=m +no_defs"},
+ {24882, "+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs"},
+ {24891, "+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=222000 +y_0=1426834.743 +ellps=intl +units=m +no_defs"},
+ {24892, "+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159 +ellps=intl +units=m +no_defs"},
+ {24893, "+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0=1324000 +y_0=1040084.558 +ellps=intl +units=m +no_defs"},
+ {25000, "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m +no_defs"},
+ {25231, "+proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {25391, "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {25392, "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {25393, "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {25394, "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {25395, "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs"},
+ {25700, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs"},
+ {25828, "+proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs"},
+ {25829, "+proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs"},
+ {25830, "+proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs"},
+ {25831, "+proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs"},
+ {25832, "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs"},
+ {25833, "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs"},
+ {25834, "+proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs"},
+ {25835, "+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs"},
+ {25836, "+proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs"},
+ {25837, "+proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs"},
+ {25838, "+proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs"},
+ {25884, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {25932, "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs"},
+ {26191, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs"},
+ {26192, "+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs"},
+ {26193, "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs"},
+ {26194, "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs"},
+ {26195, "+proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs"},
+ {26237, "+proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m +no_defs"},
+ {26331, "+proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs"},
+ {26332, "+proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs"},
+ {26391, "+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.26 +y_0=0 +ellps=clrk80 +units=m +no_defs"},
+ {26392, "+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.98 +y_0=0 +ellps=clrk80 +units=m +no_defs"},
+ {26393, "+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +units=m +no_defs"},
+ {26432, "+proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m +no_defs"},
+ {26591, "+proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs"},
+ {26592, "+proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs"},
+ {26632, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {26692, "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {26701, "+proj=utm +zone=1 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26702, "+proj=utm +zone=2 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26703, "+proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26704, "+proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26705, "+proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26706, "+proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26707, "+proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26708, "+proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26709, "+proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26710, "+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26711, "+proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26712, "+proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26713, "+proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26714, "+proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26715, "+proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26716, "+proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26717, "+proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26718, "+proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26719, "+proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26720, "+proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26721, "+proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26722, "+proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {26729, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26730, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26731, "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26732, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26733, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26734, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26735, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26736, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26737, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360.4267208534 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26738, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26739, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26740, "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26741, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26742, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26743, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26744, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26745, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26746, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26747, "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26748, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26749, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26750, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26751, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26752, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26753, "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26754, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26755, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26756, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26757, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26758, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26759, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26760, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26766, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26767, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26768, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26769, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26770, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26771, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26772, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26773, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26774, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26775, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26776, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26777, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26778, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26779, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26780, "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26781, "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26782, "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26783, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26784, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26785, "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26786, "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26787, "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26791, "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26792, "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26793, "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26794, "+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26795, "+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26796, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26797, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26798, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26799, "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=1268253.006858014 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {26801, "+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs"},
+ {26802, "+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs"},
+ {26803, "+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs"},
+ {26811, "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs"},
+ {26812, "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs"},
+ {26813, "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs"},
+ {26814, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26815, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26819, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26820, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26821, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26822, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26823, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26824, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26825, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26826, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26830, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +units=m +no_defs"},
+ {26831, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +units=m +no_defs"},
+ {26832, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +units=m +no_defs"},
+ {26833, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26834, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26835, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26836, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {26837, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {26841, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {26842, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {26843, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {26844, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {26845, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {26846, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {26847, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {26848, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {26849, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {26850, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {26851, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {26852, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {26853, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {26854, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {26855, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {26856, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {26857, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {26858, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {26859, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {26860, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {26861, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {26862, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs"},
+ {26863, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {26864, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {26865, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {26866, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {26867, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {26868, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {26869, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {26870, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs"},
+ {26891, "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26892, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26893, "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26894, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26895, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26896, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26897, "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26898, "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26899, "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {26901, "+proj=utm +zone=1 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26902, "+proj=utm +zone=2 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26903, "+proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26904, "+proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26905, "+proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26906, "+proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26907, "+proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26908, "+proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26909, "+proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26910, "+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26911, "+proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26912, "+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26913, "+proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26914, "+proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26915, "+proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26916, "+proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26917, "+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26918, "+proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26919, "+proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26920, "+proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26921, "+proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26922, "+proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26923, "+proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26929, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26930, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26931, "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26932, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26933, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26934, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26935, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26936, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26937, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26938, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26939, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26940, "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26941, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26942, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26943, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26944, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26945, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26946, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26948, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26949, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26950, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26951, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26952, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26953, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26954, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26955, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26956, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26957, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26958, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26959, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26960, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26961, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26962, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26963, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26964, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26965, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26966, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26967, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26968, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26969, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26970, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26971, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26972, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26973, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26974, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26975, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26976, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26977, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26978, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26979, "+proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26980, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26981, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26982, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26983, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26984, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26985, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26986, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26987, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26988, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26989, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26990, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26991, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26992, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26993, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26994, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26995, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26996, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26997, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {26998, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {27037, "+proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs"},
+ {27038, "+proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs"},
+ {27039, "+proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs"},
+ {27040, "+proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs"},
+ {27120, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs"},
+ {27200, "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27205, "+proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27206, "+proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27207, "+proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27208, "+proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27209, "+proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27210, "+proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27211, "+proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27212, "+proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27213, "+proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27214, "+proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27215, "+proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27216, "+proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27217, "+proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27218, "+proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27219, "+proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27220, "+proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27221, "+proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27222, "+proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27223, "+proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27224, "+proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27225, "+proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27226, "+proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27227, "+proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27228, "+proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27229, "+proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27230, "+proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27231, "+proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.99996 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27232, "+proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58 +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27258, "+proj=utm +zone=58 +south +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27259, "+proj=utm +zone=59 +south +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27260, "+proj=utm +zone=60 +south +ellps=intl +datum=nzgd49 +units=m +no_defs"},
+ {27291, "+proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs"},
+ {27292, "+proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs"},
+ {27391, "+proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"},
+ {27392, "+proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"},
+ {27393, "+proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"},
+ {27394, "+proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"},
+ {27395, "+proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"},
+ {27396, "+proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"},
+ {27397, "+proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"},
+ {27398, "+proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"},
+ {27429, "+proj=utm +zone=29 +ellps=intl +units=m +no_defs"},
+ {27492, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs"},
+ {27493, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs"},
+ {27500, "+proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=5.4 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=2.3372291666985 +units=m +no_defs"},
+ {27561, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27562, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27563, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27564, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27571, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27572, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27573, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27574, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27581, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27582, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27583, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27584, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27591, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27592, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27593, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27594, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {27700, "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs"},
+ {28191, "+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs"},
+ {28192, "+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs"},
+ {28193, "+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs"},
+ {28232, "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {28348, "+proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28349, "+proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28350, "+proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28351, "+proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28352, "+proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28353, "+proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28354, "+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28355, "+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28356, "+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28357, "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28358, "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {28402, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28403, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28404, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28405, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28406, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28407, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28408, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28409, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28410, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28411, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28412, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28413, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28414, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28415, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28416, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28417, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28418, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28419, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28420, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28421, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28422, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28423, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28424, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28425, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28426, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28427, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28428, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28429, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28430, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28431, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28432, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28462, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28463, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28464, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28465, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28466, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28467, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28468, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28469, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28470, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28471, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28472, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28473, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28474, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28475, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28476, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28477, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28478, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28479, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28480, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28481, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28482, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28483, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28484, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28485, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28486, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28487, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28488, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28489, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28490, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28491, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28492, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs"},
+ {28600, "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +units=m +no_defs"},
+ {28991, "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {28992, "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs"},
+ {29100, "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +units=m +no_defs"},
+ {29101, "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m +no_defs"},
+ {29118, "+proj=utm +zone=18 +ellps=GRS67 +units=m +no_defs"},
+ {29119, "+proj=utm +zone=19 +ellps=GRS67 +units=m +no_defs"},
+ {29120, "+proj=utm +zone=20 +ellps=GRS67 +units=m +no_defs"},
+ {29121, "+proj=utm +zone=21 +ellps=GRS67 +units=m +no_defs"},
+ {29122, "+proj=utm +zone=22 +ellps=GRS67 +units=m +no_defs"},
+ {29168, "+proj=utm +zone=18 +ellps=aust_SA +units=m +no_defs"},
+ {29169, "+proj=utm +zone=19 +ellps=aust_SA +units=m +no_defs"},
+ {29170, "+proj=utm +zone=20 +ellps=aust_SA +units=m +no_defs"},
+ {29171, "+proj=utm +zone=21 +ellps=aust_SA +units=m +no_defs"},
+ {29172, "+proj=utm +zone=22 +ellps=aust_SA +units=m +no_defs"},
+ {29177, "+proj=utm +zone=17 +south +ellps=GRS67 +units=m +no_defs"},
+ {29178, "+proj=utm +zone=18 +south +ellps=GRS67 +units=m +no_defs"},
+ {29179, "+proj=utm +zone=19 +south +ellps=GRS67 +units=m +no_defs"},
+ {29180, "+proj=utm +zone=20 +south +ellps=GRS67 +units=m +no_defs"},
+ {29181, "+proj=utm +zone=21 +south +ellps=GRS67 +units=m +no_defs"},
+ {29182, "+proj=utm +zone=22 +south +ellps=GRS67 +units=m +no_defs"},
+ {29183, "+proj=utm +zone=23 +south +ellps=GRS67 +units=m +no_defs"},
+ {29184, "+proj=utm +zone=24 +south +ellps=GRS67 +units=m +no_defs"},
+ {29185, "+proj=utm +zone=25 +south +ellps=GRS67 +units=m +no_defs"},
+ {29187, "+proj=utm +zone=17 +south +ellps=aust_SA +units=m +no_defs"},
+ {29188, "+proj=utm +zone=18 +south +ellps=aust_SA +units=m +no_defs"},
+ {29189, "+proj=utm +zone=19 +south +ellps=aust_SA +units=m +no_defs"},
+ {29190, "+proj=utm +zone=20 +south +ellps=aust_SA +units=m +no_defs"},
+ {29191, "+proj=utm +zone=21 +south +ellps=aust_SA +units=m +no_defs"},
+ {29192, "+proj=utm +zone=22 +south +ellps=aust_SA +units=m +no_defs"},
+ {29193, "+proj=utm +zone=23 +south +ellps=aust_SA +units=m +no_defs"},
+ {29194, "+proj=utm +zone=24 +south +ellps=aust_SA +units=m +no_defs"},
+ {29195, "+proj=utm +zone=25 +south +ellps=aust_SA +units=m +no_defs"},
+ {29220, "+proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs"},
+ {29221, "+proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs"},
+ {29333, "+proj=utm +zone=33 +south +ellps=bess_nam +units=m +no_defs"},
+ //{29371, ""},
+ //{29373, ""},
+ //{29375, ""},
+ //{29377, ""},
+ //{29379, ""},
+ //{29381, ""},
+ //{29383, ""},
+ //{29385, ""},
+ {29635, "+proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {29636, "+proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {29700, "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs"},
+ //{29701, ""},
+ {29702, "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs"},
+ {29738, "+proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs"},
+ {29739, "+proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs"},
+ {29849, "+proj=utm +zone=49 +ellps=evrstSS +units=m +no_defs"},
+ {29850, "+proj=utm +zone=50 +ellps=evrstSS +units=m +no_defs"},
+ {29871, "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 +ellps=evrstSS +to_meter=20.11676512155263 +no_defs"},
+ {29872, "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985 +ellps=evrstSS +to_meter=0.3047994715386762 +no_defs"},
+ {29873, "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.87 +y_0=442857.65 +ellps=evrstSS +units=m +no_defs"},
+ {29900, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs"},
+ {29901, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0=250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs"},
+ {29902, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs"},
+ {29903, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs"},
+ {30161, "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30162, "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30163, "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30164, "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30165, "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30166, "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30167, "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30168, "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30169, "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30170, "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30171, "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30172, "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30173, "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30174, "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30175, "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30176, "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30177, "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30178, "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30179, "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {30200, "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs"},
+ {30339, "+proj=utm +zone=39 +ellps=helmert +units=m +no_defs"},
+ {30340, "+proj=utm +zone=40 +ellps=helmert +units=m +no_defs"},
+ {30491, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs"},
+ {30492, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs"},
+ {30493, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {30494, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {30729, "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs"},
+ {30730, "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs"},
+ {30731, "+proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs"},
+ {30732, "+proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs"},
+ {30791, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs"},
+ {30792, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs"},
+ {30800, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {31028, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_defs"},
+ {31121, "+proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs"},
+ {31154, "+proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs"},
+ {31170, "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs"},
+ {31171, "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs"},
+ {31251, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31252, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31253, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31254, "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31255, "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31256, "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31257, "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31258, "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31259, "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31265, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31266, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31267, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31268, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31275, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31276, "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31277, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31278, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31279, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31281, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31282, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31283, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31284, "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31285, "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31286, "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31287, "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31288, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31289, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31290, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31291, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31292, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31293, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"},
+ {31294, "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31295, "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31296, "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ {31297, "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"},
+ //{31300, ""},
+ {31370, "+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m +no_defs"},
+ {31461, "+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {31462, "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {31463, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {31464, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {31465, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {31466, "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {31467, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {31468, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {31469, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"},
+ {31528, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs"},
+ {31529, "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs"},
+ {31600, "+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +units=m +no_defs"},
+ {31700, "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +units=m +no_defs"},
+ {31838, "+proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs"},
+ {31839, "+proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs"},
+ {31900, "+proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {31901, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {31965, "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31966, "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31967, "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31968, "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31969, "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31970, "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31971, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31972, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31973, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31974, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31975, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31976, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31977, "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31978, "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31979, "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31980, "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31981, "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31982, "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31983, "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31984, "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31985, "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31986, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31987, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31988, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31989, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31990, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31991, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31992, "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31993, "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31994, "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31995, "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31996, "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31997, "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31998, "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {31999, "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {32000, "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"},
+ {32001, "+proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32002, "+proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32003, "+proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32005, "+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32006, "+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32007, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32008, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32009, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32010, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32011, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32012, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32013, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32014, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32015, "+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32016, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32017, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32018, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32019, "+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32020, "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32021, "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32022, "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32023, "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32024, "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32025, "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32026, "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32027, "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32028, "+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32029, "+proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32030, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32031, "+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32033, "+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32034, "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32035, "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32036, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32037, "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32038, "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32039, "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32040, "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32041, "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32042, "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32043, "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32044, "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32045, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32046, "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32047, "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32048, "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32049, "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32050, "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32051, "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32052, "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32053, "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32054, "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32055, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32056, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32057, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32058, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32061, "+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {32062, "+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {32064, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32065, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32066, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32067, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32074, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32075, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32076, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32077, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32081, "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {32082, "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {32083, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {32084, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {32085, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {32086, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {32098, "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {32099, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {32100, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32104, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32107, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32108, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32109, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32110, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32111, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32112, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32113, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32114, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32115, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32116, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32117, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32118, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32119, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32120, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32121, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32122, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32123, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32124, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32125, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32126, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32127, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32128, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32129, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32130, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32133, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32134, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32135, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32136, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32137, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32138, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32139, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32140, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32141, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32142, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32143, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32144, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32145, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32146, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32147, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32148, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32149, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32150, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32151, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32152, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32153, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32154, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32155, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32156, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32157, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32158, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32161, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32164, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {32165, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {32166, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {32167, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {32180, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32181, "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32182, "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32183, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32184, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32185, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32186, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32187, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32188, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32189, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32190, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32191, "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32192, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32193, "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32194, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32195, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32196, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32197, "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32198, "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32199, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {32201, "+proj=utm +zone=1 +ellps=WGS72 +units=m +no_defs"},
+ {32202, "+proj=utm +zone=2 +ellps=WGS72 +units=m +no_defs"},
+ {32203, "+proj=utm +zone=3 +ellps=WGS72 +units=m +no_defs"},
+ {32204, "+proj=utm +zone=4 +ellps=WGS72 +units=m +no_defs"},
+ {32205, "+proj=utm +zone=5 +ellps=WGS72 +units=m +no_defs"},
+ {32206, "+proj=utm +zone=6 +ellps=WGS72 +units=m +no_defs"},
+ {32207, "+proj=utm +zone=7 +ellps=WGS72 +units=m +no_defs"},
+ {32208, "+proj=utm +zone=8 +ellps=WGS72 +units=m +no_defs"},
+ {32209, "+proj=utm +zone=9 +ellps=WGS72 +units=m +no_defs"},
+ {32210, "+proj=utm +zone=10 +ellps=WGS72 +units=m +no_defs"},
+ {32211, "+proj=utm +zone=11 +ellps=WGS72 +units=m +no_defs"},
+ {32212, "+proj=utm +zone=12 +ellps=WGS72 +units=m +no_defs"},
+ {32213, "+proj=utm +zone=13 +ellps=WGS72 +units=m +no_defs"},
+ {32214, "+proj=utm +zone=14 +ellps=WGS72 +units=m +no_defs"},
+ {32215, "+proj=utm +zone=15 +ellps=WGS72 +units=m +no_defs"},
+ {32216, "+proj=utm +zone=16 +ellps=WGS72 +units=m +no_defs"},
+ {32217, "+proj=utm +zone=17 +ellps=WGS72 +units=m +no_defs"},
+ {32218, "+proj=utm +zone=18 +ellps=WGS72 +units=m +no_defs"},
+ {32219, "+proj=utm +zone=19 +ellps=WGS72 +units=m +no_defs"},
+ {32220, "+proj=utm +zone=20 +ellps=WGS72 +units=m +no_defs"},
+ {32221, "+proj=utm +zone=21 +ellps=WGS72 +units=m +no_defs"},
+ {32222, "+proj=utm +zone=22 +ellps=WGS72 +units=m +no_defs"},
+ {32223, "+proj=utm +zone=23 +ellps=WGS72 +units=m +no_defs"},
+ {32224, "+proj=utm +zone=24 +ellps=WGS72 +units=m +no_defs"},
+ {32225, "+proj=utm +zone=25 +ellps=WGS72 +units=m +no_defs"},
+ {32226, "+proj=utm +zone=26 +ellps=WGS72 +units=m +no_defs"},
+ {32227, "+proj=utm +zone=27 +ellps=WGS72 +units=m +no_defs"},
+ {32228, "+proj=utm +zone=28 +ellps=WGS72 +units=m +no_defs"},
+ {32229, "+proj=utm +zone=29 +ellps=WGS72 +units=m +no_defs"},
+ {32230, "+proj=utm +zone=30 +ellps=WGS72 +units=m +no_defs"},
+ {32231, "+proj=utm +zone=31 +ellps=WGS72 +units=m +no_defs"},
+ {32232, "+proj=utm +zone=32 +ellps=WGS72 +units=m +no_defs"},
+ {32233, "+proj=utm +zone=33 +ellps=WGS72 +units=m +no_defs"},
+ {32234, "+proj=utm +zone=34 +ellps=WGS72 +units=m +no_defs"},
+ {32235, "+proj=utm +zone=35 +ellps=WGS72 +units=m +no_defs"},
+ {32236, "+proj=utm +zone=36 +ellps=WGS72 +units=m +no_defs"},
+ {32237, "+proj=utm +zone=37 +ellps=WGS72 +units=m +no_defs"},
+ {32238, "+proj=utm +zone=38 +ellps=WGS72 +units=m +no_defs"},
+ {32239, "+proj=utm +zone=39 +ellps=WGS72 +units=m +no_defs"},
+ {32240, "+proj=utm +zone=40 +ellps=WGS72 +units=m +no_defs"},
+ {32241, "+proj=utm +zone=41 +ellps=WGS72 +units=m +no_defs"},
+ {32242, "+proj=utm +zone=42 +ellps=WGS72 +units=m +no_defs"},
+ {32243, "+proj=utm +zone=43 +ellps=WGS72 +units=m +no_defs"},
+ {32244, "+proj=utm +zone=44 +ellps=WGS72 +units=m +no_defs"},
+ {32245, "+proj=utm +zone=45 +ellps=WGS72 +units=m +no_defs"},
+ {32246, "+proj=utm +zone=46 +ellps=WGS72 +units=m +no_defs"},
+ {32247, "+proj=utm +zone=47 +ellps=WGS72 +units=m +no_defs"},
+ {32248, "+proj=utm +zone=48 +ellps=WGS72 +units=m +no_defs"},
+ {32249, "+proj=utm +zone=49 +ellps=WGS72 +units=m +no_defs"},
+ {32250, "+proj=utm +zone=50 +ellps=WGS72 +units=m +no_defs"},
+ {32251, "+proj=utm +zone=51 +ellps=WGS72 +units=m +no_defs"},
+ {32252, "+proj=utm +zone=52 +ellps=WGS72 +units=m +no_defs"},
+ {32253, "+proj=utm +zone=53 +ellps=WGS72 +units=m +no_defs"},
+ {32254, "+proj=utm +zone=54 +ellps=WGS72 +units=m +no_defs"},
+ {32255, "+proj=utm +zone=55 +ellps=WGS72 +units=m +no_defs"},
+ {32256, "+proj=utm +zone=56 +ellps=WGS72 +units=m +no_defs"},
+ {32257, "+proj=utm +zone=57 +ellps=WGS72 +units=m +no_defs"},
+ {32258, "+proj=utm +zone=58 +ellps=WGS72 +units=m +no_defs"},
+ {32259, "+proj=utm +zone=59 +ellps=WGS72 +units=m +no_defs"},
+ {32260, "+proj=utm +zone=60 +ellps=WGS72 +units=m +no_defs"},
+ {32301, "+proj=utm +zone=1 +south +ellps=WGS72 +units=m +no_defs"},
+ {32302, "+proj=utm +zone=2 +south +ellps=WGS72 +units=m +no_defs"},
+ {32303, "+proj=utm +zone=3 +south +ellps=WGS72 +units=m +no_defs"},
+ {32304, "+proj=utm +zone=4 +south +ellps=WGS72 +units=m +no_defs"},
+ {32305, "+proj=utm +zone=5 +south +ellps=WGS72 +units=m +no_defs"},
+ {32306, "+proj=utm +zone=6 +south +ellps=WGS72 +units=m +no_defs"},
+ {32307, "+proj=utm +zone=7 +south +ellps=WGS72 +units=m +no_defs"},
+ {32308, "+proj=utm +zone=8 +south +ellps=WGS72 +units=m +no_defs"},
+ {32309, "+proj=utm +zone=9 +south +ellps=WGS72 +units=m +no_defs"},
+ {32310, "+proj=utm +zone=10 +south +ellps=WGS72 +units=m +no_defs"},
+ {32311, "+proj=utm +zone=11 +south +ellps=WGS72 +units=m +no_defs"},
+ {32312, "+proj=utm +zone=12 +south +ellps=WGS72 +units=m +no_defs"},
+ {32313, "+proj=utm +zone=13 +south +ellps=WGS72 +units=m +no_defs"},
+ {32314, "+proj=utm +zone=14 +south +ellps=WGS72 +units=m +no_defs"},
+ {32315, "+proj=utm +zone=15 +south +ellps=WGS72 +units=m +no_defs"},
+ {32316, "+proj=utm +zone=16 +south +ellps=WGS72 +units=m +no_defs"},
+ {32317, "+proj=utm +zone=17 +south +ellps=WGS72 +units=m +no_defs"},
+ {32318, "+proj=utm +zone=18 +south +ellps=WGS72 +units=m +no_defs"},
+ {32319, "+proj=utm +zone=19 +south +ellps=WGS72 +units=m +no_defs"},
+ {32320, "+proj=utm +zone=20 +south +ellps=WGS72 +units=m +no_defs"},
+ {32321, "+proj=utm +zone=21 +south +ellps=WGS72 +units=m +no_defs"},
+ {32322, "+proj=utm +zone=22 +south +ellps=WGS72 +units=m +no_defs"},
+ {32323, "+proj=utm +zone=23 +south +ellps=WGS72 +units=m +no_defs"},
+ {32324, "+proj=utm +zone=24 +south +ellps=WGS72 +units=m +no_defs"},
+ {32325, "+proj=utm +zone=25 +south +ellps=WGS72 +units=m +no_defs"},
+ {32326, "+proj=utm +zone=26 +south +ellps=WGS72 +units=m +no_defs"},
+ {32327, "+proj=utm +zone=27 +south +ellps=WGS72 +units=m +no_defs"},
+ {32328, "+proj=utm +zone=28 +south +ellps=WGS72 +units=m +no_defs"},
+ {32329, "+proj=utm +zone=29 +south +ellps=WGS72 +units=m +no_defs"},
+ {32330, "+proj=utm +zone=30 +south +ellps=WGS72 +units=m +no_defs"},
+ {32331, "+proj=utm +zone=31 +south +ellps=WGS72 +units=m +no_defs"},
+ {32332, "+proj=utm +zone=32 +south +ellps=WGS72 +units=m +no_defs"},
+ {32333, "+proj=utm +zone=33 +south +ellps=WGS72 +units=m +no_defs"},
+ {32334, "+proj=utm +zone=34 +south +ellps=WGS72 +units=m +no_defs"},
+ {32335, "+proj=utm +zone=35 +south +ellps=WGS72 +units=m +no_defs"},
+ {32336, "+proj=utm +zone=36 +south +ellps=WGS72 +units=m +no_defs"},
+ {32337, "+proj=utm +zone=37 +south +ellps=WGS72 +units=m +no_defs"},
+ {32338, "+proj=utm +zone=38 +south +ellps=WGS72 +units=m +no_defs"},
+ {32339, "+proj=utm +zone=39 +south +ellps=WGS72 +units=m +no_defs"},
+ {32340, "+proj=utm +zone=40 +south +ellps=WGS72 +units=m +no_defs"},
+ {32341, "+proj=utm +zone=41 +south +ellps=WGS72 +units=m +no_defs"},
+ {32342, "+proj=utm +zone=42 +south +ellps=WGS72 +units=m +no_defs"},
+ {32343, "+proj=utm +zone=43 +south +ellps=WGS72 +units=m +no_defs"},
+ {32344, "+proj=utm +zone=44 +south +ellps=WGS72 +units=m +no_defs"},
+ {32345, "+proj=utm +zone=45 +south +ellps=WGS72 +units=m +no_defs"},
+ {32346, "+proj=utm +zone=46 +south +ellps=WGS72 +units=m +no_defs"},
+ {32347, "+proj=utm +zone=47 +south +ellps=WGS72 +units=m +no_defs"},
+ {32348, "+proj=utm +zone=48 +south +ellps=WGS72 +units=m +no_defs"},
+ {32349, "+proj=utm +zone=49 +south +ellps=WGS72 +units=m +no_defs"},
+ {32350, "+proj=utm +zone=50 +south +ellps=WGS72 +units=m +no_defs"},
+ {32351, "+proj=utm +zone=51 +south +ellps=WGS72 +units=m +no_defs"},
+ {32352, "+proj=utm +zone=52 +south +ellps=WGS72 +units=m +no_defs"},
+ {32353, "+proj=utm +zone=53 +south +ellps=WGS72 +units=m +no_defs"},
+ {32354, "+proj=utm +zone=54 +south +ellps=WGS72 +units=m +no_defs"},
+ {32355, "+proj=utm +zone=55 +south +ellps=WGS72 +units=m +no_defs"},
+ {32356, "+proj=utm +zone=56 +south +ellps=WGS72 +units=m +no_defs"},
+ {32357, "+proj=utm +zone=57 +south +ellps=WGS72 +units=m +no_defs"},
+ {32358, "+proj=utm +zone=58 +south +ellps=WGS72 +units=m +no_defs"},
+ {32359, "+proj=utm +zone=59 +south +ellps=WGS72 +units=m +no_defs"},
+ {32360, "+proj=utm +zone=60 +south +ellps=WGS72 +units=m +no_defs"},
+ {32401, "+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32402, "+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32403, "+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32404, "+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32405, "+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32406, "+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32407, "+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32408, "+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32409, "+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32410, "+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32411, "+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32412, "+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32413, "+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32414, "+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32415, "+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32416, "+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32417, "+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32418, "+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32419, "+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32420, "+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32421, "+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32422, "+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32423, "+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32424, "+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32425, "+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32426, "+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32427, "+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32428, "+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32429, "+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32430, "+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32431, "+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32432, "+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32433, "+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32434, "+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32435, "+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32436, "+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32437, "+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32438, "+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32439, "+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32440, "+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32441, "+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32442, "+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32443, "+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32444, "+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32445, "+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32446, "+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32447, "+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32448, "+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32449, "+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32450, "+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32451, "+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32452, "+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32453, "+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32454, "+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32455, "+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32456, "+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32457, "+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32458, "+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32459, "+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32460, "+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32501, "+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32502, "+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32503, "+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32504, "+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32505, "+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32506, "+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32507, "+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32508, "+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32509, "+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32510, "+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32511, "+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32512, "+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32513, "+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32514, "+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32515, "+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32516, "+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32517, "+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32518, "+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32519, "+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32520, "+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32521, "+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32522, "+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32523, "+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32524, "+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32525, "+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32526, "+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32527, "+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32528, "+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32529, "+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32530, "+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32531, "+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32532, "+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32533, "+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32534, "+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32535, "+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32536, "+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32537, "+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32538, "+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32539, "+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32540, "+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32541, "+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32542, "+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32543, "+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32544, "+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32545, "+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32546, "+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32547, "+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32548, "+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32549, "+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32550, "+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32551, "+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32552, "+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32553, "+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32554, "+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32555, "+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32556, "+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32557, "+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32558, "+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32559, "+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ {32560, "+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs"},
+ //{32600, ""},
+ {32601, "+proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32602, "+proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32603, "+proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32604, "+proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32605, "+proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32606, "+proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32607, "+proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32608, "+proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32609, "+proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32610, "+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32611, "+proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32612, "+proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32613, "+proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32614, "+proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32615, "+proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32616, "+proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32617, "+proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32618, "+proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32619, "+proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32620, "+proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32621, "+proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32622, "+proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32623, "+proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32624, "+proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32625, "+proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32626, "+proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32627, "+proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32628, "+proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32629, "+proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32630, "+proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32631, "+proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32632, "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32633, "+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32634, "+proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32635, "+proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32636, "+proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32637, "+proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32638, "+proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32639, "+proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32640, "+proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32641, "+proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32642, "+proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32643, "+proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32644, "+proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32645, "+proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32646, "+proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32647, "+proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32648, "+proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32649, "+proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32650, "+proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32651, "+proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32652, "+proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32653, "+proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32654, "+proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32655, "+proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32656, "+proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32657, "+proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32658, "+proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32659, "+proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32660, "+proj=utm +zone=60 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32661, "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32662, "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ //{32663, ""},
+ {32664, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs"},
+ {32665, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs"},
+ {32666, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs"},
+ {32667, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs"},
+ //{32700, ""},
+ {32701, "+proj=utm +zone=1 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32702, "+proj=utm +zone=2 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32703, "+proj=utm +zone=3 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32704, "+proj=utm +zone=4 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32705, "+proj=utm +zone=5 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32706, "+proj=utm +zone=6 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32707, "+proj=utm +zone=7 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32708, "+proj=utm +zone=8 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32709, "+proj=utm +zone=9 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32710, "+proj=utm +zone=10 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32711, "+proj=utm +zone=11 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32712, "+proj=utm +zone=12 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32713, "+proj=utm +zone=13 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32714, "+proj=utm +zone=14 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32715, "+proj=utm +zone=15 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32716, "+proj=utm +zone=16 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32717, "+proj=utm +zone=17 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32718, "+proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32719, "+proj=utm +zone=19 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32720, "+proj=utm +zone=20 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32721, "+proj=utm +zone=21 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32722, "+proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32723, "+proj=utm +zone=23 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32724, "+proj=utm +zone=24 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32725, "+proj=utm +zone=25 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32726, "+proj=utm +zone=26 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32727, "+proj=utm +zone=27 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32728, "+proj=utm +zone=28 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32729, "+proj=utm +zone=29 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32730, "+proj=utm +zone=30 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32731, "+proj=utm +zone=31 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32732, "+proj=utm +zone=32 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32733, "+proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32734, "+proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32735, "+proj=utm +zone=35 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32736, "+proj=utm +zone=36 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32737, "+proj=utm +zone=37 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32738, "+proj=utm +zone=38 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32739, "+proj=utm +zone=39 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32740, "+proj=utm +zone=40 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32741, "+proj=utm +zone=41 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32742, "+proj=utm +zone=42 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32743, "+proj=utm +zone=43 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32744, "+proj=utm +zone=44 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32745, "+proj=utm +zone=45 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32746, "+proj=utm +zone=46 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32747, "+proj=utm +zone=47 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32748, "+proj=utm +zone=48 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32749, "+proj=utm +zone=49 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32750, "+proj=utm +zone=50 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32751, "+proj=utm +zone=51 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32752, "+proj=utm +zone=52 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32753, "+proj=utm +zone=53 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32754, "+proj=utm +zone=54 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32755, "+proj=utm +zone=55 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32756, "+proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32757, "+proj=utm +zone=57 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32758, "+proj=utm +zone=58 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32759, "+proj=utm +zone=59 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32760, "+proj=utm +zone=60 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32761, "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {32766, "+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {61206405, "+proj=longlat +ellps=bessel +no_defs"},
+ {61216405, "+proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0.0,0.0,0.0,0.0 +no_defs"},
+ {61226405, "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs"},
+ {61236405, "+proj=longlat +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,-0.345,1.376,0.30857215014565614 +no_defs"},
+ {61246405, "+proj=longlat +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,-2.141,7.023,0.0 +no_defs"},
+ {61266405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61266413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61276405, "+proj=longlat +ellps=clrk66 +towgs84=-82.875,-57.097,-156.768,-2.158,-1.524,0.982,-0.07404906544270759 +no_defs"},
+ {61286405, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {61296405, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {61306405, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,-0.0,0.0,0.0,0.0 +no_defs"},
+ {61306413, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,-0.0,0.0,0.0,0.0 +no_defs"},
+ {61316405, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=182.0,915.0,344.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61326405, "+proj=longlat +ellps=clrk80 +towgs84=-244.72,-162.773,400.75,0.0,0.0,0.0,0.0 +no_defs"},
+ {61336405, "+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,0.0003,0.007,-0.002887707287459349 +no_defs"},
+ {61346405, "+proj=longlat +ellps=clrk80 +towgs84=-191.808,-250.512,167.861,-0.792,-1.653,8.558,4.270300283733636 +no_defs"},
+ {61356405, "+proj=longlat +ellps=clrk66 +towgs84=58.0,-283.0,-182.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61366405, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {61376405, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {61386405, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {61396405, "+proj=longlat +ellps=clrk66 +towgs84=11.0,72.0,-101.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61406405, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs"},
+ {61406413, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs"},
+ {61416405, "+proj=longlat +ellps=GRS80 +towgs84=-48.0,55.0,52.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61426405, "+proj=longlat +ellps=clrk80 +towgs84=-125.0,53.0,467.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61436405, "+proj=longlat +ellps=clrk80 +towgs84=-124.76,53.0,466.79,0.0,0.0,0.0,0.0 +no_defs"},
+ {61446405, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=214.0,804.0,268.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61456405, "+proj=longlat +a=6377301.243 +b=6356100.230165384 +towgs84=275.57,676.78,229.6,0.0,0.0,0.0,0.0 +no_defs"},
+ {61466405, "+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295.0,736.0,257.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61476405, "+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0.0,0.0,0.0,0.0 +no_defs"},
+ {61486405, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61486413, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61496405, "+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0.0,0.0,0.0,0.0 +no_defs"},
+ {61506405, "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0.0,0.0,0.0,0.0 +no_defs"},
+ {61516405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61516413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61526405, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs"},
+ {61526413, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs"},
+ {61536405, "+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0.0,0.0,0.0,0.0 +no_defs"},
+ {61546405, "+proj=longlat +ellps=intl +towgs84=-123.02,-158.95,-168.47,0.0,0.0,0.0,0.0 +no_defs"},
+ {61556405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83.0,37.0,124.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61566405, "+proj=longlat +ellps=bessel +towgs84=559.0,68.7,451.5,7.92,4.073,4.251,1.1777720436709203 +no_defs"},
+ {61576405, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs"},
+ {61586405, "+proj=longlat +ellps=intl +towgs84=-0.465,372.095,171.736,0.0,0.0,0.0,0.0 +no_defs"},
+ {61596405, "+proj=longlat +ellps=intl +towgs84=-114.7,-98.5,-150.7,0.0,0.0,0.0,0.0 +no_defs"},
+ {61606405, "+proj=longlat +ellps=intl +no_defs"},
+ {61616405, "+proj=longlat +ellps=intl +towgs84=27.5,14.0,186.4,0.0,0.0,0.0,0.0 +no_defs"},
+ {61626405, "+proj=longlat +ellps=bessel +no_defs"},
+ {61636405, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61636413, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61646405, "+proj=longlat +ellps=krass +towgs84=-76.0,-138.0,67.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61656405, "+proj=longlat +ellps=intl +towgs84=-173.0,253.0,27.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61666405, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61676405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61676413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61686405, "+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199.0,32.0,322.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61696405, "+proj=longlat +ellps=clrk66 +towgs84=-115.0,118.0,426.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61706405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61706413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61716405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61716413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61736405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61736413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61746405, "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs"},
+ {61756405, "+proj=longlat +ellps=clrk80 +towgs84=-88.0,4.0,101.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61766405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61766413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61786405, "+proj=longlat +ellps=krass +towgs84=24.0,-123.0,-94.0,0.02,0.25,0.13,0.226891286871806 +no_defs"},
+ {61796405, "+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.17326243724756094 +no_defs"},
+ {61806405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61806413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61816405, "+proj=longlat +ellps=intl +towgs84=-193.0,13.7,-39.3,-0.41,-2.933,2.688,0.08869386668625144 +no_defs"},
+ {61826405, "+proj=longlat +ellps=intl +towgs84=-422.651,-172.995,84.02,0.0,0.0,0.0,0.0 +no_defs"},
+ {61836405, "+proj=longlat +ellps=intl +towgs84=-104.0,167.0,-38.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61846405, "+proj=longlat +ellps=intl +towgs84=-203.0,141.0,53.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61886405, "+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,1.6810581709138355 +no_defs"},
+ {61896405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61896413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61906405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61906413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {61916405, "+proj=longlat +ellps=krass +no_defs"},
+ {61926405, "+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0.0,0.0,0.0,0.0 +no_defs"},
+ {61936405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0.0,0.0,0.0,0.0 +no_defs"},
+ {61946405, "+proj=longlat +ellps=intl +towgs84=163.511,127.533,-159.789,0.0,0.0,0.814,-0.12375888374825782 +no_defs"},
+ {61956405, "+proj=longlat +ellps=intl +towgs84=105.0,326.0,-102.5,0.0,0.0,0.814,-0.12375888374825782 +no_defs"},
+ {61966405, "+proj=longlat +ellps=intl +towgs84=-45.0,417.0,-3.5,0.0,0.0,0.814,-0.12375888374825782 +no_defs"},
+ {61976405, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {61986405, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {61996405, "+proj=longlat +ellps=intl +no_defs"},
+ {62006405, "+proj=longlat +ellps=krass +no_defs"},
+ {62016405, "+proj=longlat +ellps=clrk80 +towgs84=-165.0,-11.0,206.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62026405, "+proj=longlat +ellps=aust_SA +towgs84=-124.133,-42.003,137.4,-0.008,-0.557,-0.178,-0.3824149507821167 +no_defs"},
+ {62036405, "+proj=longlat +ellps=aust_SA +towgs84=-117.763,-51.51,139.061,0.292,-0.443,-0.277,-0.03939657799319541 +no_defs"},
+ {62046405, "+proj=longlat +ellps=intl +towgs84=-18.944,-379.364,-24.063,0.04,0.764,-6.431,0.7543103964456315 +no_defs"},
+ {62056405, "+proj=longlat +ellps=krass +towgs84=-43.0,-163.0,45.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62066405, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {62076405, "+proj=longlat +ellps=intl +towgs84=-288.885,-91.744,126.244,-1.691,-0.41,0.211,-0.948405579124149 +no_defs"},
+ {62086405, "+proj=longlat +ellps=intl +towgs84=-161.0,310.0,-145.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62096405, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-138.0,-105.0,-289.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62106405, "+proj=longlat +ellps=clrk80 +towgs84=-157.0,-2.0,-299.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62116405, "+proj=longlat +ellps=bessel +towgs84=-377.7,675.1,-52.2,0.0,0.0,0.0,0.0 +no_defs"},
+ {62126405, "+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0.0,0.0,0.0,0.0 +no_defs"},
+ {62136405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106.0,-87.0,188.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62146405, "+proj=longlat +ellps=krass +towgs84=15.8,-154.4,-82.3,0.0,0.0,0.0,0.0 +no_defs"},
+ {62156405, "+proj=longlat +ellps=intl +no_defs"},
+ {62166405, "+proj=longlat +ellps=clrk66 +towgs84=-73.0,213.0,296.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62186405, "+proj=longlat +ellps=intl +towgs84=304.5,306.5,-318.1,0.0,0.0,0.0,0.0 +no_defs"},
+ {62196405, "+proj=longlat +ellps=bessel +towgs84=-384.0,664.0,-48.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62206405, "+proj=longlat +ellps=clrk80 +towgs84=-50.9,-347.6,-231.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62216405, "+proj=longlat +ellps=intl +towgs84=-154.5,150.7,100.4,0.0,0.0,0.0,0.0 +no_defs"},
+ {62226405, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-136.0,-108.0,-292.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62236405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-260.1,5.5,432.2,0.0,0.0,0.0,0.0 +no_defs"},
+ {62246405, "+proj=longlat +ellps=intl +towgs84=-134.0,229.0,-29.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62256405, "+proj=longlat +ellps=intl +towgs84=-206.0,172.0,-6.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62276405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83.58,-397.54,458.78,-17.595,-2.847,4.256,0.6652040001468859 +no_defs"},
+ {62296405, "+proj=longlat +ellps=helmert +towgs84=-130.0,110.0,-13.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62306405, "+proj=longlat +ellps=intl +towgs84=-157.89,-17.16,-78.41,2.118,2.697,-1.434,-1.1097046576093785 +no_defs"},
+ {62316405, "+proj=longlat +ellps=intl +towgs84=-82.981,-99.719,-110.709,-0.10470001565102613,0.031001600378938583,0.08040202147511816,-0.06482902860346239 +no_defs"},
+ {62326405, "+proj=longlat +ellps=clrk80 +towgs84=-346.0,-1.0,224.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62336405, "+proj=longlat +ellps=intl +towgs84=-133.0,-321.0,50.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62366405, "+proj=longlat +ellps=intl +towgs84=-637.0,-549.0,-203.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62376405, "+proj=longlat +ellps=GRS67 +towgs84=57.01,-69.97,-9.29,0.0,0.0,0.0,0.0 +no_defs"},
+ {62386405, "+proj=longlat +a=6378160 +b=6356774.50408554 +towgs84=-1.977,-13.06,-9.993,0.364,-0.254,-0.689,-0.2138966040782389 +no_defs"},
+ {62396405, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217.0,823.0,299.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62406405, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=204.64,834.74,293.8,0.0,0.0,0.0,0.0 +no_defs"},
+ {62416405, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {62426405, "+proj=longlat +ellps=clrk66 +towgs84=-33.722,153.789,94.959,-8.581,4.478,-4.54,1.8460700159115124 +no_defs"},
+ {62436405, "+proj=longlat +a=6377299.36559538 +b=6356098.357204818 +no_defs"},
+ {62446405, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97.0,787.0,86.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62456405, "+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11.0,851.0,5.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62466405, "+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0.0,0.0,0.0,0.0 +no_defs"},
+ {62476405, "+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0.0,0.0,0.0,0.0 +no_defs"},
+ {62486405, "+proj=longlat +ellps=intl +towgs84=-307.7,265.3,-363.5,0.0,0.0,0.0,0.0 +no_defs"},
+ {62496405, "+proj=longlat +ellps=intl +no_defs"},
+ {62506405, "+proj=longlat +ellps=clrk80 +towgs84=-130.0,29.0,364.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62516405, "+proj=longlat +ellps=clrk80 +towgs84=-90.0,40.0,88.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62526405, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {62536405, "+proj=longlat +ellps=clrk66 +towgs84=-133.0,-77.0,-51.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62546405, "+proj=longlat +ellps=intl +towgs84=18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0002681442481212253 +no_defs"},
+ {62556405, "+proj=longlat +ellps=intl +towgs84=-333.0,-222.0,114.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62566405, "+proj=longlat +ellps=clrk80 +towgs84=41.0,-220.0,-134.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62576405, "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0.0,0.0,0.0,0.0 +no_defs"},
+ {62586405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62586413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62596405, "+proj=longlat +ellps=intl +towgs84=-254.1,-5.36,-100.29,0.0,0.0,0.0,0.0 +no_defs"},
+ {62616405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31.0,146.0,47.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62626405, "+proj=longlat +ellps=bessel +towgs84=639.0,405.0,60.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62636405, "+proj=longlat +ellps=clrk80 +towgs84=-90.2,-87.32,114.17,0.0,0.0,0.0,0.0 +no_defs"},
+ {62646405, "+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0.0,0.0,0.0,0.0 +no_defs"},
+ {62656405, "+proj=longlat +ellps=intl +towgs84=-50.2,-50.4,84.8,-0.69,-2.012,0.459,-5.791915759418465 +no_defs"},
+ {62666405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-80.7,-132.5,41.1,0.0,0.0,0.0,0.0 +no_defs"},
+ {62676405, "+proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs"},
+ {62686405, "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs"},
+ {62696405, "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs"},
+ {62706405, "+proj=longlat +ellps=clrk80 +towgs84=-245.0,-153.9,382.8,0.0,0.0,0.0,0.0 +no_defs"},
+ {62716405, "+proj=longlat +ellps=intl +towgs84=-2.0,374.0,172.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62726405, "+proj=longlat +ellps=intl +datum=nzgd49 +no_defs"},
+ {62736405, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93.0,474.5,7.889,0.05,-6.61,1.2809044467944684 +no_defs"},
+ {62746405, "+proj=longlat +ellps=intl +towgs84=-239.749,88.181,30.488,0.263,-0.082,-1.211,0.4597642531247778 +no_defs"},
+ {62756405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168.0,-60.0,320.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62766405, "+proj=longlat +ellps=WGS66 +no_defs"},
+ {62776405, "+proj=longlat +ellps=airy +datum=OSGB36 +no_defs"},
+ {62786405, "+proj=longlat +ellps=airy +no_defs"},
+ {62796405, "+proj=longlat +ellps=airy +no_defs"},
+ {62806405, "+proj=longlat +ellps=bessel +no_defs"},
+ {62816405, "+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,0.20626480624709637 +no_defs"},
+ {62826405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-178.3,-316.7,-131.5,5.278,6.077,10.979,3.953271276531849 +no_defs"},
+ {62836405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62836413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62846405, "+proj=longlat +ellps=krass +towgs84=-40.595,-18.55,-69.339,2.508,-1.832,2.611,-0.8867324020562674 +no_defs"},
+ {62856405, "+proj=longlat +ellps=intl +towgs84=-128.033,-283.697,21.052,0.0,0.0,0.0,0.0 +no_defs"},
+ {62866405, "+proj=longlat +ellps=helmert +no_defs"},
+ {62886405, "+proj=longlat +ellps=intl +no_defs"},
+ {62896405, "+proj=longlat +ellps=bessel +towgs84=565.04,49.91,465.84,-0.40939438743923684,-0.35970519561431136,1.868491000350572,0.8409828680306614 +no_defs"},
+ {62926405, "+proj=longlat +ellps=intl +towgs84=-355.0,21.0,72.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62936405, "+proj=longlat +ellps=bess_nam +towgs84=616.0,97.0,-251.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62956405, "+proj=longlat +ellps=bessel +no_defs"},
+ {62976405, "+proj=longlat +ellps=intl +towgs84=-189.0,-242.0,-91.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {62986405, "+proj=longlat +ellps=evrstSS +towgs84=-533.4,669.2,-52.5,0.0,0.0,4.28,1.9388891787227058 +no_defs"},
+ {62996405, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,1.6810581709138355 +no_defs"},
+ {63006405, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,1.6810581709138355 +no_defs"},
+ {63016405, "+proj=longlat +ellps=bessel +towgs84=-147.0,506.0,687.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {63026405, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0.0,0.0,0.0,0.0 +no_defs"},
+ {63036405, "+proj=longlat +ellps=helmert +no_defs"},
+ {63046405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73.0,-247.0,227.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {63066405, "+proj=longlat +ellps=bessel +no_defs"},
+ {63076405, "+proj=longlat +ellps=clrk80 +towgs84=-169.559,-72.34,303.102,0.0,0.0,0.0,0.0 +no_defs"},
+ {63086405, "+proj=longlat +ellps=bessel +no_defs"},
+ {63096405, "+proj=longlat +ellps=intl +towgs84=-155.0,171.0,37.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {63106405, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"},
+ {63116405, "+proj=longlat +ellps=intl +towgs84=-265.0,120.0,-358.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {63126405, "+proj=longlat +ellps=bessel +towgs84=426.9,142.6,460.1,4.91,4.49,-12.42,3.5271281868253483 +no_defs"},
+ {63136405, "+proj=longlat +ellps=intl +towgs84=-106.8686,52.2978,-103.7239,0.3366,0.457,-1.8422,0.26292574852317374 +no_defs"},
+ {63146405, "+proj=longlat +ellps=bessel +datum=potsdam +no_defs"},
+ {63156405, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23.0,259.0,-9.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {63166405, "+proj=longlat +ellps=intl +towgs84=103.25,-100.4,-307.19,0.0,0.0,0.0,0.0 +no_defs"},
+ {63176405, "+proj=longlat +ellps=krass +towgs84=28.0,-121.0,-77.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {63186405, "+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0.0,0.0,0.0,0.0 +no_defs"},
+ {63196405, "+proj=longlat +ellps=GRS80 +towgs84=226.702,-193.337,-35.371,-2.229,4.391,-9.238,0.20209825716090501 +no_defs"},
+ {63226405, "+proj=longlat +ellps=WGS72 +towgs84=0.0,0.0,4.5,0.0,0.0,0.554,0.045171992568114105 +no_defs"},
+ {63246405, "+proj=longlat +ellps=WGS72 +towgs84=0.0,0.0,1.9,0.0,0.0,0.814,-0.07838062637389662 +no_defs"},
+ {63266405, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"},
+ //{63266406, ""},
+ //{63266407, ""},
+ //{63266408, ""},
+ //{63266409, ""},
+ //{63266410, ""},
+ {63266411, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"},
+ //{63266412, ""},
+ {63266413, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"},
+ //{63266414, ""},
+ //{63266415, ""},
+ //{63266416, ""},
+ //{63266417, ""},
+ //{63266418, ""},
+ {63266419, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"},
+ //{63266420, ""},
+ {66006405, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {66016405, "+proj=longlat +ellps=clrk80 +towgs84=-255.0,-15.0,71.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66026405, "+proj=longlat +ellps=clrk80 +towgs84=725.0,685.0,536.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66036405, "+proj=longlat +ellps=clrk80 +towgs84=72.0,213.7,93.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66046405, "+proj=longlat +ellps=clrk80 +towgs84=174.0,359.0,365.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66056405, "+proj=longlat +ellps=clrk80 +towgs84=9.0,183.0,236.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66066405, "+proj=longlat +ellps=clrk80 +towgs84=-149.0,128.0,296.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66076405, "+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0.0,0.0,0.0,0.0 +no_defs"},
+ {66086405, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {66096405, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {66106405, "+proj=longlat +a=6378140 +b=6356755.288157528 +no_defs"},
+ {66116405, "+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.243649,-1.158827,-0.22570443917666022 +no_defs"},
+ {66126405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66126413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66136405, "+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0.0,0.0,0.0,0.0 +no_defs"},
+ {66146405, "+proj=longlat +ellps=intl +towgs84=-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,0.7543238036580374 +no_defs"},
+ {66156405, "+proj=longlat +ellps=intl +towgs84=-499.0,-249.0,314.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66166405, "+proj=longlat +ellps=intl +towgs84=-289.0,-124.0,60.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66186405, "+proj=longlat +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0.0,0.0,0.0,0.0 +no_defs"},
+ {66196405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66196413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66206405, "+proj=longlat +ellps=clrk80 +towgs84=-106.0,-129.0,165.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66216405, "+proj=longlat +ellps=intl +towgs84=137.0,248.0,-430.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66226405, "+proj=longlat +ellps=intl +towgs84=-472.29,-5.63,-304.12,0.4362,-0.8374,0.2563,0.39157310817948776 +no_defs"},
+ {66236405, "+proj=longlat +ellps=intl +towgs84=-186.0,230.0,110.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66246405, "+proj=longlat +ellps=GRS80 +towgs84=2.0,2.0,-2.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66246413, "+proj=longlat +ellps=GRS80 +towgs84=2.0,2.0,-2.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66256405, "+proj=longlat +ellps=intl +towgs84=126.93,547.94,130.41,-2.7867,5.1612,-0.8584,2.851136537311739 +no_defs"},
+ {66266405, "+proj=longlat +ellps=intl +towgs84=94.0,-948.0,-1262.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66276405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66276413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66286405, "+proj=longlat +ellps=intl +towgs84=162.0,117.0,154.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66296405, "+proj=longlat +ellps=intl +towgs84=72.438,345.918,79.486,1.6045,-0.8823,-0.5565,0.2835316026672587 +no_defs"},
+ {66306405, "+proj=longlat +ellps=intl +towgs84=259.551,297.612,197.833,-1.4866,2.1224,0.4612,5.574285762347154 +no_defs"},
+ {66316405, "+proj=longlat +ellps=intl +towgs84=145.0,-187.0,103.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66326405, "+proj=longlat +ellps=intl +towgs84=-382.0,-59.0,-262.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66336405, "+proj=longlat +ellps=intl +towgs84=335.47,222.58,-230.94,0.0,0.0,0.0,0.0 +no_defs"},
+ {66346405, "+proj=longlat +ellps=intl +towgs84=-11.64,-348.6,291.98,0.0,0.0,0.0,0.0 +no_defs"},
+ {66356405, "+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,0.9240250790257423 +no_defs"},
+ {66366405, "+proj=longlat +ellps=intl +towgs84=365.0,194.0,166.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66376405, "+proj=longlat +ellps=intl +towgs84=325.0,154.0,172.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66386405, "+proj=longlat +ellps=clrk66 +towgs84=30.0,430.0,368.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66396405, "+proj=longlat +ellps=intl +towgs84=253.0,-132.0,-127.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66406405, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66406413, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66416405, "+proj=longlat +ellps=intl +towgs84=287.58,177.78,-135.41,0.0,0.0,0.0,0.0 +no_defs"},
+ {66426405, "+proj=longlat +ellps=intl +towgs84=-13.0,-348.0,292.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66436405, "+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-23.039820110761912 +no_defs"},
+ {66446405, "+proj=longlat +ellps=intl +towgs84=-10.18,-350.43,291.37,0.0,0.0,0.0,0.0 +no_defs"},
+ {66456405, "+proj=longlat +ellps=intl +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66456413, "+proj=longlat +ellps=intl +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66466405, "+proj=longlat +ellps=intl +no_defs"},
+ {66576405, "+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28.0,199.0,5.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66586405, "+proj=longlat +ellps=intl +towgs84=-73.0,46.0,-86.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66596405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66596413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66606405, "+proj=longlat +ellps=intl +towgs84=982.6087,552.753,-540.873,6.681626625276941,-31.61149240864225,-19.848161004816845,3.466280068982454 +no_defs"},
+ {66616405, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66616413, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {66636405, "+proj=longlat +ellps=intl +towgs84=-210.502,-66.902,-48.476,2.094,15.067,5.817,0.10003843102984174 +no_defs"},
+ {66646405, "+proj=longlat +ellps=intl +towgs84=-208.719,129.685,52.092,-0.195,0.014,-0.327,0.040840431636925086 +no_defs"},
+ {66656405, "+proj=longlat +ellps=intl +towgs84=-103.088,162.481,-28.276,0.167,-0.082,-0.168,-0.31022226859563296 +no_defs"},
+ {66666405, "+proj=longlat +ellps=bessel +towgs84=631.392,-66.551,481.442,1.09,4.445,4.487,-0.9137530916746368 +no_defs"},
+ {66676405, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs"},
+ {68016405, "+proj=longlat +ellps=bessel +pm=bern +no_defs"},
+ {68026405, "+proj=longlat +ellps=intl +pm=bogota +no_defs"},
+ {68036405, "+proj=longlat +ellps=intl +pm=lisbon +no_defs"},
+ {68046405, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs"},
+ {68056405, "+proj=longlat +ellps=bessel +pm=ferro +no_defs"},
+ {68066405, "+proj=longlat +ellps=intl +pm=rome +no_defs"},
+ {68086405, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs"},
+ {68096405, "+proj=longlat +ellps=intl +pm=brussels +no_defs"},
+ {68136405, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs"},
+ {68146405, "+proj=longlat +ellps=bessel +pm=stockholm +no_defs"},
+ {68156405, "+proj=longlat +ellps=bessel +pm=athens +no_defs"},
+ {68186405, "+proj=longlat +ellps=bessel +pm=ferro +no_defs"},
+ {68206405, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs"},
+ {69036405, "+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid +no_defs"}
+ };
+
+ const code_element * first = arr;
+ const code_element * last = arr + sizeof(arr) / sizeof(code_element);
+ const code_element * el = binary_find_code_element(first, last, code);
+
+ return el != last ? el->proj4_str : "";
+ }
+
+}
+#endif // DOXYGEN_NO_DETAIL
+
+
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/epsg_params.hpp b/boost/geometry/srs/projections/epsg_params.hpp
new file mode 100644
index 0000000000..e9572bf25d
--- /dev/null
+++ b/boost/geometry/srs/projections/epsg_params.hpp
@@ -0,0 +1,48 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_EPSG_PARAMS_HPP
+#define BOOST_GEOMETRY_SRS_PROJECTIONS_EPSG_PARAMS_HPP
+
+
+#include <string>
+
+#include <boost/geometry/srs/spheroid.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs
+{
+
+
+struct epsg
+{
+ explicit epsg(int c)
+ : code(c)
+ {}
+
+ int code;
+};
+
+
+template <int Code>
+struct static_epsg
+{
+ static const int code = Code;
+};
+
+
+} // namespace srs
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_EPSG_PARAMS_HPP
diff --git a/boost/geometry/srs/projections/epsg_traits.hpp b/boost/geometry/srs/projections/epsg_traits.hpp
new file mode 100644
index 0000000000..6cc642cae4
--- /dev/null
+++ b/boost/geometry/srs/projections/epsg_traits.hpp
@@ -0,0 +1,4417 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_EPSG_TRAITS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_EPSG_TRAITS_HPP
+
+
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/srs/projections/factory.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/srid_traits.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+/*!
+ \brief EPSG traits
+ \details With help of the EPSG traits library users can statically use projections
+ or coordinate systems specifying an EPSG code. The correct projections for transformations
+ are used automically then, still keeping static polymorphism.
+ \ingroup projection
+ \tparam EPSG epsg code
+*/
+template <size_t EPSG>
+struct epsg_traits
+{
+ // Specializations define:
+ // - type to get projection type
+ // - function par to get parameters
+};
+
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2000, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2001, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2002, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2003, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2004, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2005, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2006, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2007, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2008, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2009, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2010, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2011, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2012, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2013, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2014, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2015, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2016, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2017, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2018, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2019, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2020, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2021, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2022, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2023, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2024, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2025, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2026, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2027, utm, clrk66, "+proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2028, utm, clrk66, "+proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2029, utm, clrk66, "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2030, utm, clrk66, "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2031, utm, clrk66, "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2032, utm, clrk66, "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2033, utm, clrk66, "+proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2034, utm, clrk66, "+proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2035, utm, clrk66, "+proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2036, sterea, GRS80, "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2037, utm, GRS80, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2038, utm, GRS80, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2039, tmerc, GRS80, "+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2040, utm, clrk80, "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2041, utm, clrk80, "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2042, utm, clrk80, "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2043, utm, clrk80, "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2044, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2045, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2046, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2047, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2048, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2049, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2050, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2051, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2052, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2053, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2054, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2055, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2056, somerc, bessel, "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2057, omerc, intl, "+proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2058, utm, intl, "+proj=utm +zone=38 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2059, utm, intl, "+proj=utm +zone=39 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2060, utm, intl, "+proj=utm +zone=40 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2061, utm, intl, "+proj=utm +zone=41 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2062, lcc, 6378298.3, 6356657.142669561, "+proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669561 +pm=madrid +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2063, utm, 6378249.2, 6356515, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2064, utm, 6378249.2, 6356515, "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2065, krovak, bessel, "+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2066, cass, 6378293.645208759, 6356617.987679838, "+proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2067, utm, intl, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2068, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2069, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2070, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2071, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2072, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2073, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2074, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2075, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2076, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2077, utm, intl, "+proj=utm +zone=32 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2078, utm, intl, "+proj=utm +zone=33 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2079, utm, intl, "+proj=utm +zone=34 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2080, utm, intl, "+proj=utm +zone=35 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2081, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2082, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2083, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2084, utm, intl, "+proj=utm +zone=19 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2085, lcc, clrk66, NAD27, "+proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2086, lcc, clrk66, NAD27, "+proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2087, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2088, tmerc, 6378249.2, 6356515, "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2089, utm, WGS84, "+proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2090, utm, WGS84, "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2091, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2092, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2093, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2094, tmerc, WGS72, "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2095, utm, intl, "+proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2096, tmerc, bessel, "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2097, tmerc, bessel, "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2098, tmerc, bessel, "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2099, cass, helmert, "+proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2100, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2101, lcc, intl, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2102, lcc, intl, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2103, lcc, intl, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2104, lcc, intl, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2105, tmerc, GRS80, "+proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2106, tmerc, GRS80, "+proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2107, tmerc, GRS80, "+proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2108, tmerc, GRS80, "+proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2109, tmerc, GRS80, "+proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2110, tmerc, GRS80, "+proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2111, tmerc, GRS80, "+proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2112, tmerc, GRS80, "+proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2113, tmerc, GRS80, "+proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2114, tmerc, GRS80, "+proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2115, tmerc, GRS80, "+proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2116, tmerc, GRS80, "+proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2117, tmerc, GRS80, "+proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2118, tmerc, GRS80, "+proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2119, tmerc, GRS80, "+proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2120, tmerc, GRS80, "+proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2121, tmerc, GRS80, "+proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2122, tmerc, GRS80, "+proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2123, tmerc, GRS80, "+proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2124, tmerc, GRS80, "+proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2125, tmerc, GRS80, "+proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2126, tmerc, GRS80, "+proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2127, tmerc, GRS80, "+proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2128, tmerc, GRS80, "+proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2129, tmerc, GRS80, "+proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2130, tmerc, GRS80, "+proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2131, tmerc, GRS80, "+proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2132, tmerc, GRS80, "+proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2133, utm, GRS80, "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2134, utm, GRS80, "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2135, utm, GRS80, "+proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2136, tmerc, 6378300, 6356751.689189189, "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2137, tmerc, 6378300, 6356751.689189189, "+proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2138, lcc, clrk66, "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2139, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2140, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2141, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2142, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2143, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2144, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2145, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2146, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2147, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2148, utm, GRS80, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2149, utm, GRS80, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2150, utm, GRS80, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2151, utm, GRS80, "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2152, utm, GRS80, "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2153, utm, GRS80, "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2154, lcc, GRS80, "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2155, lcc, clrk66, "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2156, utm, GRS80, "+proj=utm +zone=59 +south +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2157, tmerc, GRS80, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2158, utm, GRS80, "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2159, tmerc, 6378300, 6356751.689189189, "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2160, tmerc, 6378300, 6356751.689189189, "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2161, utm, clrk80, "+proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2162, utm, clrk80, "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 2163, laea, 6370997, "+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2164, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2165, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2166, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2167, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2168, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2169, tmerc, intl, "+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2170, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2171, sterea, krass, "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2172, sterea, krass, "+proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2173, sterea, krass, "+proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2174, sterea, krass, "+proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2175, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2176, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2177, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2178, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2179, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2180, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2188, utm, intl, "+proj=utm +zone=25 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2189, utm, intl, "+proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2190, utm, intl, "+proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2191, utm, intl, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2192, lcc, intl, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2193, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2194, lcc, clrk66, "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2195, utm, GRS80, "+proj=utm +zone=2 +south +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2196, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2197, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2198, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2199, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2200, sterea, 6378135, 6356750.304921594, "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2201, utm, GRS80, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2202, utm, GRS80, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2203, utm, GRS80, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2204, lcc, clrk66, NAD27, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2205, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2206, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2207, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2208, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2209, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2210, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2211, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2212, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2213, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2214, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2215, utm, 6378249.2, 6356515, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2216, utm, intl, "+proj=utm +zone=22 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2217, utm, intl, "+proj=utm +zone=23 +ellps=intl +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2218, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2219, utm, 6378135, 6356750.304921594, "+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2220, utm, 6378135, 6356750.304921594, "+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2221, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2222, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2223, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2224, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2225, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2226, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2227, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2228, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2229, lcc, GRS80, NAD83, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2230, lcc, GRS80, NAD83, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2231, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2232, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2233, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2234, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2235, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2236, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2237, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2238, lcc, GRS80, NAD83, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2239, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2240, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2241, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2242, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2243, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2244, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2245, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2246, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2247, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2248, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2249, lcc, GRS80, NAD83, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2250, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2251, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2252, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2253, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2254, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2255, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2256, lcc, GRS80, NAD83, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2257, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2258, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2259, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2260, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2261, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2262, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2263, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2264, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2265, lcc, GRS80, NAD83, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2266, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2267, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2268, lcc, GRS80, NAD83, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2269, lcc, GRS80, NAD83, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2270, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2271, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2272, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2273, lcc, GRS80, NAD83, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2274, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2275, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2276, lcc, GRS80, NAD83, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2277, lcc, GRS80, NAD83, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2278, lcc, GRS80, NAD83, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2279, lcc, GRS80, NAD83, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2280, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2281, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2282, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2283, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2284, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2285, lcc, GRS80, NAD83, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2286, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2287, lcc, GRS80, NAD83, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2288, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2289, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2290, sterea, 6378135, 6356750.304921594, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2291, sterea, 6378135, 6356750.304921594, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2292, sterea, GRS80, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2294, tmerc, 6378135, 6356750.304921594, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2295, tmerc, 6378135, 6356750.304921594, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2296, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2297, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2298, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2299, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2300, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2301, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2302, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2303, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2304, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2305, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2306, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2307, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2308, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2309, tmerc, WGS84, WGS84, "+proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2310, tmerc, WGS84, WGS84, "+proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2311, tmerc, WGS84, WGS84, "+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2312, utm, clrk80, "+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2313, utm, clrk80, "+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2314, cass, 6378293.645208759, 6356617.987679838, "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2315, utm, intl, "+proj=utm +zone=19 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2316, utm, intl, "+proj=utm +zone=20 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2317, lcc, intl, "+proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2318, lcc, intl, "+proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2319, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2320, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2321, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2322, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2323, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2324, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2325, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2326, tmerc, intl, "+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2327, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2328, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2329, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2330, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2331, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2332, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2333, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2334, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2335, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2336, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2337, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2338, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2339, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2340, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2341, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2342, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2343, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2344, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2345, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2346, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2347, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2348, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2349, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2350, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2351, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2352, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2353, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2354, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2355, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2356, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2357, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2358, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2359, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2360, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2361, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2362, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2363, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2364, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2365, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2366, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2367, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2368, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2369, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2370, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2371, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2372, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2373, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2374, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2375, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2376, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2377, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2378, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2379, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2380, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2381, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2382, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2383, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2384, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2385, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2386, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2387, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2388, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2389, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2390, tmerc, 6378140, 6356755.288157528, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2391, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2392, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2393, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2394, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2395, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2396, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2397, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2398, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2399, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2400, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2401, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2402, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2403, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2404, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2405, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2406, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2407, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2408, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2409, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2410, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2411, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2412, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2413, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2414, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2415, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2416, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2417, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2418, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2419, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2420, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2421, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2422, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2423, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2424, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2425, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2426, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2427, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2428, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2429, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2430, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2431, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2432, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2433, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2434, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2435, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2436, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2437, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2438, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2439, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2440, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2441, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2442, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2443, tmerc, GRS80, "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2444, tmerc, GRS80, "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2445, tmerc, GRS80, "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2446, tmerc, GRS80, "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2447, tmerc, GRS80, "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2448, tmerc, GRS80, "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2449, tmerc, GRS80, "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2450, tmerc, GRS80, "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2451, tmerc, GRS80, "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2452, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2453, tmerc, GRS80, "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2454, tmerc, GRS80, "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2455, tmerc, GRS80, "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2456, tmerc, GRS80, "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2457, tmerc, GRS80, "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2458, tmerc, GRS80, "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2459, tmerc, GRS80, "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2460, tmerc, GRS80, "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2461, tmerc, GRS80, "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2462, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2463, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2464, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2465, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2466, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2467, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2468, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2469, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2470, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2471, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2472, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2473, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2474, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2475, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2476, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2477, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2478, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2479, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2480, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2481, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2482, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2483, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2484, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2485, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2486, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2487, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2488, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2489, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2490, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2491, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2492, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2493, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2494, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2495, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2496, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2497, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2498, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2499, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2500, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2501, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2502, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2503, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2504, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2505, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2506, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2507, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2508, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2509, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2510, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2511, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2512, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2513, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2514, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2515, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2516, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2517, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2518, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2519, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2520, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2521, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2522, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2523, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2524, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2525, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2526, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2527, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2528, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2529, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2530, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2531, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2532, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2533, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2534, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2535, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2536, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2537, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2538, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2539, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2540, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2541, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2542, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2543, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2544, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2545, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2546, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2547, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2548, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2549, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2550, utm, bessel, "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2551, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2552, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2553, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2554, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2555, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2556, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2557, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2558, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2559, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2560, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2561, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2562, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2563, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2564, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2565, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2566, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2567, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2568, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2569, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2570, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2571, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2572, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2573, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2574, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2575, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2576, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2577, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2578, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2579, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2580, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2581, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2582, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2583, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2584, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2585, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2586, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2587, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2588, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2589, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2590, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2591, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2592, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2593, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2594, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2595, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2596, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2597, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2598, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2599, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2600, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2601, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2602, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2603, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2604, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2605, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2606, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2607, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2608, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2609, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2610, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2611, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2612, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2613, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2614, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2615, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2616, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2617, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2618, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2619, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2620, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2621, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2622, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2623, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2624, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2625, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2626, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2627, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2628, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2629, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2630, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2631, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2632, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2633, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2634, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2635, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2636, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2637, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2638, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2639, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2640, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2641, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2642, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2643, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2644, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2645, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2646, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2647, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2648, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2649, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2650, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2651, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2652, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2653, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2654, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2655, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2656, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2657, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2658, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2659, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2660, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2661, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2662, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2663, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2664, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2665, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2666, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2667, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2668, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2669, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2670, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2671, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2672, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2673, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2674, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2675, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2676, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2677, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2678, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2679, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2680, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2681, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2682, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2683, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2684, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2685, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2686, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2687, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2688, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2689, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2690, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2691, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2692, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2693, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2694, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2695, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2696, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2697, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2698, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2699, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2700, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2701, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2702, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2703, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2704, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2705, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2706, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2707, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2708, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2709, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2710, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2711, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2712, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2713, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2714, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2715, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2716, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2717, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2718, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2719, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2720, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2721, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2722, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2723, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2724, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2725, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2726, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2727, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2728, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2729, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2730, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2731, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2732, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2733, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2734, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2735, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2736, utm, clrk66, "+proj=utm +zone=36 +south +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2737, utm, clrk66, "+proj=utm +zone=37 +south +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2738, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2739, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2740, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2741, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2742, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2743, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2744, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2745, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2746, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2747, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2748, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2749, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2750, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2751, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2752, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2753, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2754, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2755, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2756, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2757, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2758, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2759, tmerc, GRS80, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2760, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2761, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2762, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2763, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2764, lcc, GRS80, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2765, lcc, GRS80, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2766, lcc, GRS80, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2767, lcc, GRS80, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2768, lcc, GRS80, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2769, lcc, GRS80, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2770, lcc, GRS80, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2771, lcc, GRS80, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2772, lcc, GRS80, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2773, lcc, GRS80, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2774, lcc, GRS80, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2775, lcc, GRS80, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2776, tmerc, GRS80, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2777, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2778, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2779, lcc, GRS80, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2780, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2781, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2782, tmerc, GRS80, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2783, tmerc, GRS80, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2784, tmerc, GRS80, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2785, tmerc, GRS80, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2786, tmerc, GRS80, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2787, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2788, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2789, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2790, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2791, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2792, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2793, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2794, lcc, GRS80, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2795, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2796, lcc, GRS80, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2797, lcc, GRS80, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2798, lcc, GRS80, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2799, lcc, GRS80, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2800, lcc, GRS80, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2801, lcc, GRS80, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2802, tmerc, GRS80, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2803, tmerc, GRS80, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2804, lcc, GRS80, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2805, lcc, GRS80, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2806, lcc, GRS80, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2807, lcc, GRS80, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2808, lcc, GRS80, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2809, lcc, GRS80, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2810, lcc, GRS80, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2811, lcc, GRS80, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2812, lcc, GRS80, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2813, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2814, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2815, tmerc, GRS80, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2816, tmerc, GRS80, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2817, tmerc, GRS80, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2818, lcc, GRS80, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2819, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2820, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2821, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2822, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2823, tmerc, GRS80, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2824, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2825, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2826, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2827, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2828, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2829, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2830, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2831, lcc, GRS80, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2832, lcc, GRS80, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2833, lcc, GRS80, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2834, lcc, GRS80, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2835, lcc, GRS80, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2836, lcc, GRS80, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2837, lcc, GRS80, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2838, lcc, GRS80, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2839, lcc, GRS80, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2840, tmerc, GRS80, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2841, lcc, GRS80, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2842, lcc, GRS80, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2843, lcc, GRS80, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2844, lcc, GRS80, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2845, lcc, GRS80, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2846, lcc, GRS80, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2847, lcc, GRS80, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2848, lcc, GRS80, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2849, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2850, lcc, GRS80, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2851, lcc, GRS80, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2852, tmerc, GRS80, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2853, lcc, GRS80, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2854, lcc, GRS80, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2855, lcc, GRS80, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2856, lcc, GRS80, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2857, lcc, GRS80, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2858, lcc, GRS80, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2859, lcc, GRS80, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2860, lcc, GRS80, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2861, lcc, GRS80, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2862, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2863, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2864, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2865, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2866, lcc, GRS80, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2867, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2868, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2869, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2870, lcc, GRS80, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2871, lcc, GRS80, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2872, lcc, GRS80, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2873, lcc, GRS80, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2874, lcc, GRS80, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2875, lcc, GRS80, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2876, lcc, GRS80, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2877, lcc, GRS80, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2878, lcc, GRS80, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2879, lcc, GRS80, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2880, tmerc, GRS80, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2881, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2882, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2883, lcc, GRS80, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2884, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2885, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2886, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2887, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2888, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2889, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2890, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2891, lcc, GRS80, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2892, lcc, GRS80, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2893, lcc, GRS80, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2894, lcc, GRS80, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2895, lcc, GRS80, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2896, lcc, GRS80, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2897, lcc, GRS80, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2898, lcc, GRS80, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2899, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2900, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2901, lcc, GRS80, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2902, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2903, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2904, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2905, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2906, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2907, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2908, lcc, GRS80, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2909, lcc, GRS80, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2910, lcc, GRS80, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2911, lcc, GRS80, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2912, lcc, GRS80, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2913, lcc, GRS80, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2914, lcc, GRS80, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2915, lcc, GRS80, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2916, lcc, GRS80, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2917, lcc, GRS80, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2918, lcc, GRS80, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2919, lcc, GRS80, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2920, lcc, GRS80, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2921, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2922, lcc, GRS80, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2923, lcc, GRS80, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2924, lcc, GRS80, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2925, lcc, GRS80, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2926, lcc, GRS80, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2927, lcc, GRS80, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2928, lcc, GRS80, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2929, lcc, GRS80, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2930, lcc, GRS80, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 2931, tmerc, 6378249.2, 6356515, "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2932, tmerc, intl, "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2933, utm, bessel, "+proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2934, merc, bessel, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2935, tmerc, krass, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2936, tmerc, krass, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2937, tmerc, krass, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2938, tmerc, krass, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2939, tmerc, krass, "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2940, tmerc, krass, "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2941, tmerc, krass, "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2942, utm, intl, "+proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2943, utm, intl, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2944, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2945, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2946, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2947, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2948, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2949, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2950, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2951, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2952, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2953, sterea, GRS80, "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2954, sterea, GRS80, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2955, utm, GRS80, "+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2956, utm, GRS80, "+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2957, utm, GRS80, "+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2958, utm, GRS80, "+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2959, utm, GRS80, "+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2960, utm, GRS80, "+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2961, utm, GRS80, "+proj=utm +zone=20 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2962, utm, GRS80, "+proj=utm +zone=21 +ellps=GRS80 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2963, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2964, aea, clrk66, NAD27, "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2965, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2966, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2967, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2968, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2969, utm, intl, "+proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2970, utm, intl, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2971, utm, intl, "+proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2972, utm, GRS80, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2973, utm, intl, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2975, utm, GRS80, "+proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2976, utm, intl, "+proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,154,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2977, utm, intl, "+proj=utm +zone=5 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2978, utm, intl, "+proj=utm +zone=7 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2979, utm, intl, "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2980, utm, intl, "+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2981, utm, intl, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2982, utm, intl, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2983, utm, intl, "+proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2984, lcc, intl, "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=intl +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2985, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 2986, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2987, utm, clrk66, "+proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2988, utm, intl, "+proj=utm +zone=1 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2989, utm, WGS84, "+proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2990, tmerc, intl, "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2991, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 2992, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2993, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2994, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2995, utm, intl, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2996, utm, intl, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2997, utm, intl, "+proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2998, utm, intl, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 2999, utm, intl, "+proj=utm +zone=38 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3000, merc, bessel, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3001, merc, bessel, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3002, merc, bessel, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3003, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3004, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3005, aea, GRS80, NAD83, "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3006, utm, GRS80, "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3007, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3008, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3009, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3010, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3011, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3012, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3013, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3014, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3015, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3016, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3017, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3018, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3019, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3020, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3021, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3022, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3023, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3024, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3025, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3026, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3027, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3028, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3029, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3030, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3031, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3032, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3033, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3034, lcc, GRS80, "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3035, laea, GRS80, "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3036, utm, WGS84, "+proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3037, utm, WGS84, "+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3038, utm, GRS80, "+proj=utm +zone=26 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3039, utm, GRS80, "+proj=utm +zone=27 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3040, utm, GRS80, "+proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3041, utm, GRS80, "+proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3042, utm, GRS80, "+proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3043, utm, GRS80, "+proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3044, utm, GRS80, "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3045, utm, GRS80, "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3046, utm, GRS80, "+proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3047, utm, GRS80, "+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3048, utm, GRS80, "+proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3049, utm, GRS80, "+proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3050, utm, GRS80, "+proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3051, utm, GRS80, "+proj=utm +zone=39 +ellps=GRS80 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3052, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3053, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3054, utm, intl, "+proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3055, utm, intl, "+proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3056, utm, intl, "+proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3057, lcc, GRS80, "+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3058, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7800000 +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3059, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3060, utm, intl, "+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3061, utm, intl, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3062, utm, intl, "+proj=utm +zone=26 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3063, utm, intl, "+proj=utm +zone=26 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3064, utm, WGS84, "+proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3065, utm, WGS84, "+proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3066, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_0=-3000000 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3067, utm, GRS80, "+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3068, cass, bessel, potsdam, "+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3069, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y_0=-4500000 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3070, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3071, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3072, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3073, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3074, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3075, tmerc, GRS80, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3076, tmerc, GRS80, "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3077, tmerc, GRS80, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3078, omerc, GRS80, NAD83, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3079, omerc, GRS80, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3080, lcc, clrk66, NAD27, "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_0=914400 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3081, lcc, GRS80, NAD83, "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3082, lcc, GRS80, NAD83, "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3083, aea, GRS80, NAD83, "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3084, lcc, GRS80, "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3085, aea, GRS80, "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3086, aea, GRS80, NAD83, "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3087, aea, GRS80, "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3088, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3089, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3090, lcc, GRS80, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3091, lcc, GRS80, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3092, utm, bessel, "+proj=utm +zone=51 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3093, utm, bessel, "+proj=utm +zone=52 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3094, utm, bessel, "+proj=utm +zone=53 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3095, utm, bessel, "+proj=utm +zone=54 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3096, utm, bessel, "+proj=utm +zone=55 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3097, utm, GRS80, "+proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3098, utm, GRS80, "+proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3099, utm, GRS80, "+proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3100, utm, GRS80, "+proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3101, utm, GRS80, "+proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3102, lcc, clrk66, "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=95169.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3103, utm, clrk80, "+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3104, utm, clrk80, "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3105, utm, clrk80, "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3106, tmerc, 6377276.345, 6356075.41314024, "+proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3107, lcc, GRS80, "+proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3108, tmerc, GRS80, "+proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.999997 +x_0=47000 +y_0=50000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3109, tmerc, GRS80, "+proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.9999999000000001 +x_0=40000 +y_0=70000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3110, lcc, aust_SA, "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=4500000 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3111, lcc, GRS80, "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3112, lcc, GRS80, "+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3113, tmerc, GRS80, "+proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3114, tmerc, GRS80, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3115, tmerc, GRS80, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3116, tmerc, GRS80, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3117, tmerc, GRS80, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3118, tmerc, GRS80, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3119, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3120, sterea, krass, "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3121, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3122, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3123, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3124, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3125, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3126, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3127, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3128, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3129, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3130, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3131, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3132, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3133, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3134, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3135, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3136, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3137, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3138, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3139, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3140, cass, 6378306.3696, 6356571.996, "+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3141, utm, intl, "+proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3142, utm, intl, "+proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3143, tmerc, WGS72, "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3144, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3145, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3146, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3147, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3148, utm, 6377276.345, 6356075.41314024, "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3149, utm, 6377276.345, 6356075.41314024, "+proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3150, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3151, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3152, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0=100178.1808 +y_0=-6500614.7836 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3153, aea, GRS80, "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3154, utm, GRS80, "+proj=utm +zone=7 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3155, utm, GRS80, "+proj=utm +zone=8 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3156, utm, GRS80, "+proj=utm +zone=9 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3157, utm, GRS80, "+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3158, utm, GRS80, "+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3159, utm, GRS80, "+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3160, utm, GRS80, "+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3161, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3162, lcc, GRS80, "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3163, lcc, GRS80, "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3164, utm, WGS84, "+proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3165, lcc, intl, "+proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3166, lcc, intl, "+proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.29472222222222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.313000000000001 +y_0=-2.354 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3167, omerc, 6377295.664, 6356094.667915204, "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=40000 +y_0=0 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116756 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3168, omerc, 6377295.664, 6356094.667915204, "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804670.24 +y_0=0 +a=6377295.664 +b=6356094.667915204 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3169, utm, GRS80, "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3170, utm, GRS80, "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3171, utm, GRS80, "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3172, utm, intl, "+proj=utm +zone=59 +south +ellps=intl +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3173, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3174, aea, GRS80, NAD83, "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3175, aea, GRS80, NAD83, "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3176, tmerc, 6377276.345, 6356075.41314024, "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3177, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_0=1000000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3178, utm, GRS80, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3179, utm, GRS80, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3180, utm, GRS80, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3181, utm, GRS80, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3182, utm, GRS80, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3183, utm, GRS80, "+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3184, utm, GRS80, "+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3185, utm, GRS80, "+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3186, utm, GRS80, "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3187, utm, GRS80, "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3188, utm, GRS80, "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3189, utm, GRS80, "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3190, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3191, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3192, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3193, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3194, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3195, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3196, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3197, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3198, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3199, utm, intl, "+proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3200, lcc, clrk80, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3201, utm, intl, "+proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3202, utm, intl, "+proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3203, utm, intl, "+proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3204, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3205, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3206, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3207, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3208, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3209, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3210, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3211, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3212, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3213, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3214, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3215, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3216, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3217, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3218, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3219, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3220, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3221, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3222, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3223, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3224, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3225, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3226, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3227, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3228, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3229, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3230, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3231, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3232, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3233, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3234, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3235, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3236, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3237, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3238, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3239, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3240, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3241, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3242, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3243, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3244, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3245, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3246, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3247, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3248, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3249, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3250, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3251, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3252, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3253, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3254, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3255, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3256, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3257, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3258, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3259, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3260, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3261, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3262, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3263, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3264, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3265, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3266, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3267, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3268, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3269, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3270, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3271, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3272, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3273, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3274, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3275, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3276, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3277, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3278, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3279, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3280, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3281, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3282, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3283, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3284, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3285, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3286, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3287, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3288, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3289, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3290, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3291, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3292, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3293, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3294, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3295, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3296, utm, GRS80, "+proj=utm +zone=5 +south +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3297, utm, GRS80, "+proj=utm +zone=6 +south +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3298, utm, GRS80, "+proj=utm +zone=7 +south +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3299, utm, GRS80, "+proj=utm +zone=8 +south +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3300, lcc, GRS80, "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3301, lcc, GRS80, "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3302, utm, intl, "+proj=utm +zone=7 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3303, utm, intl, "+proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3304, utm, intl, "+proj=utm +zone=6 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3305, utm, intl, "+proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3306, utm, intl, "+proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3307, utm, WGS84, "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3308, lcc, GRS80, "+proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3309, aea, clrk66, NAD27, "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3310, aea, GRS80, NAD83, "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3311, aea, GRS80, "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3312, utm, intl, "+proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3313, utm, GRS80, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3314, lcc, clrk66, "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3315, tmerc, clrk66, "+proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3316, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3317, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3318, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3319, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3320, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3321, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3322, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3323, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3324, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3325, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3326, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3327, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3328, sterea, krass, "+proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3329, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3330, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3331, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3332, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3333, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3334, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3335, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3336, utm, intl, "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3337, lcc, clrk80, "+proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.19506944444445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0=1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3338, aea, GRS80, NAD83, "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3339, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3340, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3341, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3342, utm, clrk80, "+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3343, utm, GRS80, "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3344, utm, GRS80, "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3345, utm, GRS80, "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3346, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3347, lcc, GRS80, NAD83, "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3348, lcc, GRS80, "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3349, merc, WGS84, WGS84, "+proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3350, tmerc, krass, "+proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3351, tmerc, krass, "+proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3352, tmerc, krass, "+proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3353, utm, intl, "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3354, utm, intl, "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3355, tmerc, helmert, "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3356, utm, clrk66, "+proj=utm +zone=17 +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3357, utm, clrk66, "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3358, lcc, GRS80, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3359, lcc, GRS80, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3360, lcc, GRS80, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3361, lcc, GRS80, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3362, lcc, GRS80, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3363, lcc, GRS80, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3364, lcc, GRS80, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3365, lcc, GRS80, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3366, cass, 6378293.645208759, 6356617.987679838, "+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3367, utm, clrk80, "+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3368, utm, clrk80, "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3369, utm, clrk80, "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3370, utm, clrk66, NAD27, "+proj=utm +zone=59 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3371, utm, clrk66, NAD27, "+proj=utm +zone=60 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3372, utm, GRS80, NAD83, "+proj=utm +zone=59 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3373, utm, GRS80, NAD83, "+proj=utm +zone=60 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3374, utm, intl, "+proj=utm +zone=29 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3375, omerc, GRS80, "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.99984 +x_0=804671 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3376, omerc, GRS80, "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3377, cass, GRS80, "+proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3378, cass, GRS80, "+proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3379, cass, GRS80, "+proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3380, cass, GRS80, "+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3381, cass, GRS80, "+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3382, cass, GRS80, "+proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3383, cass, GRS80, "+proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3384, cass, GRS80, "+proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3385, cass, GRS80, "+proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3386, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3387, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3388, merc, krass, "+proj=merc +lon_0=51 +k=1 +x_0=0 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3389, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3390, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3391, utm, clrk80, "+proj=utm +zone=37 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3392, utm, clrk80, "+proj=utm +zone=38 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3393, utm, clrk80, "+proj=utm +zone=39 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3394, lcc, clrk80, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3395, merc, WGS84, WGS84, "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3396, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3397, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3398, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3399, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3400, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3401, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3402, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3403, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3404, lcc, GRS80, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3405, utm, WGS84, "+proj=utm +zone=48 +ellps=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3406, utm, WGS84, "+proj=utm +zone=49 +ellps=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3407, cass, 6378293.645208759, 6356617.987679838, "+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 3408, laea, 6371228, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 3409, laea, 6371228, "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 3410, cea, 6371228, "+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3411, stere, 6378273, 6356889.449, "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3412, stere, 6378273, 6356889.449, "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3413, stere, WGS84, WGS84, "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3414, tmerc, WGS84, "+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3415, lcc, WGS72, "+proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0=500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3416, lcc, GRS80, "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3417, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3418, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3419, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3420, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3421, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3422, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3423, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3424, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3425, lcc, GRS80, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3426, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3427, lcc, GRS80, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3428, lcc, GRS80, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3429, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3430, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3431, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3432, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3433, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3434, lcc, GRS80, NAD83, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3435, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3436, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3437, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3438, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3439, utm, clrk80, "+proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3440, utm, clrk80, "+proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3441, lcc, GRS80, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3442, lcc, GRS80, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3443, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3444, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3445, tmerc, GRS80, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3446, tmerc, GRS80, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3447, lcc, GRS80, "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=150328 +y_0=166262 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3448, lcc, WGS84, "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3449, utm, WGS84, "+proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3450, utm, WGS84, "+proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3451, lcc, GRS80, NAD83, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3452, lcc, GRS80, NAD83, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3453, lcc, GRS80, NAD83, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3454, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3455, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3456, lcc, GRS80, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3457, lcc, GRS80, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3458, lcc, GRS80, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3459, lcc, GRS80, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3460, tmerc, WGS72, "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3461, utm, 6378249.2, 6356515, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 3462, utm, 6378249.2, 6356515, "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3463, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3464, tmerc, GRS80, "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3465, tmerc, GRS80, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3466, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3467, aea, GRS80, "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3468, omerc, GRS80, "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3469, tmerc, GRS80, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3470, tmerc, GRS80, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3471, tmerc, GRS80, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3472, tmerc, GRS80, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3473, tmerc, GRS80, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3474, tmerc, GRS80, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3475, tmerc, GRS80, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3476, tmerc, GRS80, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3477, lcc, GRS80, "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3478, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3479, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3480, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3481, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3482, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3483, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3484, lcc, GRS80, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3485, lcc, GRS80, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3486, lcc, GRS80, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3487, lcc, GRS80, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3488, aea, GRS80, "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3489, lcc, GRS80, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3490, lcc, GRS80, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3491, lcc, GRS80, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3492, lcc, GRS80, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3493, lcc, GRS80, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3494, lcc, GRS80, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3495, lcc, GRS80, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3496, lcc, GRS80, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3497, lcc, GRS80, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3498, lcc, GRS80, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3499, lcc, GRS80, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3500, lcc, GRS80, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3501, lcc, GRS80, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3502, lcc, GRS80, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3503, lcc, GRS80, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3504, lcc, GRS80, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3505, lcc, GRS80, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3506, lcc, GRS80, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3507, lcc, GRS80, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3508, lcc, GRS80, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3509, tmerc, GRS80, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3510, tmerc, GRS80, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3511, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3512, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3513, aea, GRS80, "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3514, lcc, GRS80, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3515, lcc, GRS80, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3516, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3517, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3518, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3519, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3520, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3521, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3522, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3523, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3524, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3525, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3526, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3527, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3528, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3529, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3530, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3531, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3532, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3533, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3534, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3535, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3536, lcc, GRS80, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3537, lcc, GRS80, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3538, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3539, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3540, lcc, GRS80, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3541, lcc, GRS80, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3542, lcc, GRS80, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3543, lcc, GRS80, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3544, lcc, GRS80, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3545, lcc, GRS80, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3546, lcc, GRS80, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3547, lcc, GRS80, "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3548, lcc, GRS80, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3549, lcc, GRS80, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3550, lcc, GRS80, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3551, lcc, GRS80, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3552, lcc, GRS80, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3553, lcc, GRS80, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3554, tmerc, GRS80, "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3555, tmerc, GRS80, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3556, tmerc, GRS80, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3557, tmerc, GRS80, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3558, tmerc, GRS80, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3559, lcc, GRS80, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3560, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3561, tmerc, clrk66, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3562, tmerc, clrk66, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3563, tmerc, clrk66, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3564, tmerc, clrk66, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3565, tmerc, clrk66, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3566, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3567, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3568, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3569, lcc, GRS80, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3570, lcc, GRS80, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3571, laea, WGS84, WGS84, "+proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3572, laea, WGS84, WGS84, "+proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3573, laea, WGS84, WGS84, "+proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3574, laea, WGS84, WGS84, "+proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3575, laea, WGS84, WGS84, "+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3576, laea, WGS84, WGS84, "+proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3577, aea, GRS80, "+proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3578, aea, GRS80, NAD83, "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3579, aea, GRS80, "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3580, lcc, GRS80, NAD83, "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3581, lcc, GRS80, "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3582, lcc, GRS80, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3583, lcc, GRS80, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3584, lcc, GRS80, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3585, lcc, GRS80, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3586, lcc, GRS80, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3587, lcc, GRS80, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3588, lcc, GRS80, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3589, lcc, GRS80, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3590, lcc, GRS80, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3591, omerc, GRS80, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3592, lcc, GRS80, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3593, lcc, GRS80, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3594, lcc, GRS80, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3595, lcc, GRS80, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3596, lcc, GRS80, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3597, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3598, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3599, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3600, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3601, tmerc, GRS80, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3602, tmerc, GRS80, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3603, tmerc, GRS80, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3604, lcc, GRS80, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3605, lcc, GRS80, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3606, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3607, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3608, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3609, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3610, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3611, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3612, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3613, tmerc, GRS80, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3614, tmerc, GRS80, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3615, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3616, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3617, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3618, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3619, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3620, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3621, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3622, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3623, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3624, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3625, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3626, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3627, lcc, GRS80, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3628, lcc, GRS80, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3629, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3630, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3631, lcc, GRS80, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3632, lcc, GRS80, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3633, lcc, GRS80, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3634, lcc, GRS80, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3635, lcc, GRS80, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3636, lcc, GRS80, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3637, lcc, GRS80, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3638, lcc, GRS80, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3639, lcc, GRS80, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3640, lcc, GRS80, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3641, lcc, GRS80, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3642, lcc, GRS80, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3643, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3644, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3645, lcc, GRS80, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3646, lcc, GRS80, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3647, lcc, GRS80, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3648, lcc, GRS80, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3649, lcc, GRS80, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3650, lcc, GRS80, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3651, lcc, GRS80, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3652, lcc, GRS80, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3653, tmerc, GRS80, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3654, tmerc, GRS80, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3655, lcc, GRS80, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3656, lcc, GRS80, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3657, lcc, GRS80, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3658, lcc, GRS80, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3659, lcc, GRS80, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3660, lcc, GRS80, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3661, lcc, GRS80, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3662, lcc, GRS80, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3663, lcc, GRS80, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3664, lcc, GRS80, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3665, aea, GRS80, "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3666, lcc, GRS80, "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3667, lcc, GRS80, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3668, lcc, GRS80, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3669, lcc, GRS80, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3670, lcc, GRS80, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3671, lcc, GRS80, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3672, lcc, GRS80, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3673, lcc, GRS80, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3674, lcc, GRS80, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3675, lcc, GRS80, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3676, lcc, GRS80, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3677, lcc, GRS80, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3678, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3679, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3680, lcc, GRS80, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3681, lcc, GRS80, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3682, lcc, GRS80, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3683, lcc, GRS80, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3684, tmerc, GRS80, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3685, lcc, GRS80, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3686, lcc, GRS80, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3687, lcc, GRS80, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3688, lcc, GRS80, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3689, lcc, GRS80, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3690, lcc, GRS80, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3691, lcc, GRS80, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3692, lcc, GRS80, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3693, lcc, GRS80, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3694, lcc, GRS80, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3695, lcc, GRS80, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3696, lcc, GRS80, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3697, lcc, GRS80, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3698, lcc, GRS80, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3699, lcc, GRS80, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3700, lcc, GRS80, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3701, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3702, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3703, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3704, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3705, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3706, utm, GRS80, "+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3707, utm, GRS80, "+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3708, utm, GRS80, "+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3709, utm, GRS80, "+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3710, utm, GRS80, "+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3711, utm, GRS80, "+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3712, utm, GRS80, "+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3713, utm, GRS80, "+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3714, utm, GRS80, "+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3715, utm, GRS80, "+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3716, utm, GRS80, "+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3717, utm, GRS80, "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3718, utm, GRS80, "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3719, utm, GRS80, "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3720, utm, GRS80, "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3721, utm, GRS80, "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3722, utm, GRS80, "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3723, utm, GRS80, "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3724, utm, GRS80, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3725, utm, GRS80, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3726, utm, GRS80, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3727, tmerc, intl, "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3728, lcc, GRS80, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3729, lcc, GRS80, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3730, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3731, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3732, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3733, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3734, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3735, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3736, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3737, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3738, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3739, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3740, utm, GRS80, "+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3741, utm, GRS80, "+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3742, utm, GRS80, "+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3743, utm, GRS80, "+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3744, utm, GRS80, "+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3745, utm, GRS80, "+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3746, utm, GRS80, "+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3747, utm, GRS80, "+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3748, utm, GRS80, "+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3749, utm, GRS80, "+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3750, utm, GRS80, "+proj=utm +zone=4 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3751, utm, GRS80, "+proj=utm +zone=5 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3752, merc, WGS84, WGS84, "+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3753, lcc, GRS80, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3754, lcc, GRS80, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3755, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3756, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3757, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3758, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3759, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3760, tmerc, GRS80, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3761, utm, GRS80, "+proj=utm +zone=22 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3762, lcc, WGS84, WGS84, "+proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3763, tmerc, GRS80, "+proj=tmerc +lat_0=39.66825833333333 +lon_0=-8.133108333333334 +k=1 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3764, tmerc, GRS80, "+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3765, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3766, lcc, GRS80, "+proj=lcc +lat_1=45.91666666666666 +lat_2=43.08333333333334 +lat_0=0 +lon_0=16.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3767, utm, GRS80, "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3768, utm, GRS80, "+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3769, utm, clrk66, "+proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3770, tmerc, WGS84, "+proj=tmerc +lat_0=32 +lon_0=-64.75 +k=1 +x_0=550000 +y_0=100000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3771, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3772, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3773, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3774, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3775, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3776, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3777, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3778, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3779, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3780, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3781, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3782, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3783, tmerc, WGS84, "+proj=tmerc +lat_0=-25.06855261111111 +lon_0=-130.1129671111111 +k=1 +x_0=14200 +y_0=15500 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3784, utm, intl, "+proj=utm +zone=9 +south +ellps=intl +towgs84=185,165,42,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 3785, merc, 6378137, "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 3786, eqc, 6371007, "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3787, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3788, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=166 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3789, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=169 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3790, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=179 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3791, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-178 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3793, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-176.5 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3794, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3795, lcc, clrk66, NAD27, "+proj=lcc +lat_1=23 +lat_2=21.7 +lat_0=22.35 +lon_0=-81 +x_0=500000 +y_0=280296.016 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3796, lcc, clrk66, NAD27, "+proj=lcc +lat_1=21.3 +lat_2=20.13333333333333 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3797, lcc, clrk66, NAD27, "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3798, lcc, GRS80, NAD83, "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3799, lcc, GRS80, "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3800, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 3801, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3802, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3812, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3814, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3815, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3816, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3819, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.35,4.115,2.9383,-0.853,-0.7029504596901044 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3821, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3822, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3823, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3824, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3825, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3826, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3827, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3828, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3829, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3832, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3833, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3834, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3835, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3836, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3837, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3838, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3839, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3840, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3841, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3842, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3843, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3844, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3845, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3846, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3847, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3848, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3849, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3850, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3920, utm, clrk66, "+proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3942, lcc, GRS80, "+proj=lcc +lat_1=41.25 +lat_2=42.75 +lat_0=42 +lon_0=3 +x_0=1700000 +y_0=1200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3943, lcc, GRS80, "+proj=lcc +lat_1=42.25 +lat_2=43.75 +lat_0=43 +lon_0=3 +x_0=1700000 +y_0=2200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3944, lcc, GRS80, "+proj=lcc +lat_1=43.25 +lat_2=44.75 +lat_0=44 +lon_0=3 +x_0=1700000 +y_0=3200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3945, lcc, GRS80, "+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3946, lcc, GRS80, "+proj=lcc +lat_1=45.25 +lat_2=46.75 +lat_0=46 +lon_0=3 +x_0=1700000 +y_0=5200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3947, lcc, GRS80, "+proj=lcc +lat_1=46.25 +lat_2=47.75 +lat_0=47 +lon_0=3 +x_0=1700000 +y_0=6200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3948, lcc, GRS80, "+proj=lcc +lat_1=47.25 +lat_2=48.75 +lat_0=48 +lon_0=3 +x_0=1700000 +y_0=7200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3949, lcc, GRS80, "+proj=lcc +lat_1=48.25 +lat_2=49.75 +lat_0=49 +lon_0=3 +x_0=1700000 +y_0=8200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3950, lcc, GRS80, "+proj=lcc +lat_1=49.25 +lat_2=50.75 +lat_0=50 +lon_0=3 +x_0=1700000 +y_0=9200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3991, lcc, clrk66, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 3992, lcc, clrk66, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3993, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3994, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3995, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3996, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 3997, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4001, longlat, airy, "+proj=longlat +ellps=airy +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4002, longlat, 6377340.189, 6356034.447938534, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4003, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4004, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4005, longlat, 6377492.018, 6356173.508712696, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4006, longlat, bess_nam, "+proj=longlat +ellps=bess_nam +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4007, longlat, 6378293.645208759, 6356617.987679838, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4008, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4009, longlat, 6378450.047548896, 6356826.621488444, "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4010, longlat, 6378300.789, 6356566.435, "+proj=longlat +a=6378300.789 +b=6356566.435 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4011, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4012, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4013, longlat, 6378249.145, 6356514.966398753, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4014, longlat, 6378249.2, 6356514.996941779, "+proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4015, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4016, longlat, evrstSS, "+proj=longlat +ellps=evrstSS +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4018, longlat, 6377304.063, 6356103.038993155, "+proj=longlat +a=6377304.063 +b=6356103.038993155 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4019, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4020, longlat, helmert, "+proj=longlat +ellps=helmert +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4021, longlat, 6378160, 6356774.50408554, "+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4022, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4024, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4025, longlat, WGS66, "+proj=longlat +ellps=WGS66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4027, longlat, 6376523, 6355862.933255573, "+proj=longlat +a=6376523 +b=6355862.933255573 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4028, longlat, 6378298.3, 6356657.142669561, "+proj=longlat +a=6378298.3 +b=6356657.142669561 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4029, longlat, 6378300, 6356751.689189189, "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4030, longlat, WGS84, "+proj=longlat +ellps=WGS84 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4031, longlat, WGS84, "+proj=longlat +ellps=WGS84 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4032, longlat, 6378136.2, 6356751.516927429, "+proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4033, longlat, 6378136.3, 6356751.616592146, "+proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4034, longlat, 6378249.144808011, 6356514.966204134, "+proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 4035, longlat, 6371000, "+proj=longlat +a=6371000 +b=6371000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4036, longlat, GRS67, "+proj=longlat +ellps=GRS67 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4041, longlat, 6378135, 6356750.304921594, "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4042, longlat, 6377299.36559538, 6356098.359005157, "+proj=longlat +a=6377299.36559538 +b=6356098.359005157 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4043, longlat, WGS72, "+proj=longlat +ellps=WGS72 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4044, longlat, 6377301.243, 6356100.230165384, "+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4045, longlat, 6377299.151, 6356098.145120132, "+proj=longlat +a=6377299.151 +b=6356098.145120132 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 4047, longlat, 6371007, "+proj=longlat +a=6371007 +b=6371007 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 4052, longlat, 6370997, "+proj=longlat +a=6370997 +b=6370997 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 4053, longlat, 6371228, "+proj=longlat +a=6371228 +b=6371228 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4054, longlat, 6378273, 6356889.449, "+proj=longlat +a=6378273 +b=6356889.449 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (epsg, 4055, longlat, 6378137, "+proj=longlat +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4120, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4121, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4122, longlat, 6378135, 6356750.304921594, "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4123, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4124, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4125, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4126, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4127, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4128, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4129, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4130, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4131, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4132, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4133, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4134, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4135, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4136, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4137, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4138, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4139, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4140, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4141, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4142, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4143, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4144, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4145, longlat, 6377301.243, 6356100.230165384, "+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4146, longlat, 6377299.151, 6356098.145120132, "+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4147, longlat, krass, "+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4148, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4149, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4150, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4151, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4152, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4153, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4154, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4155, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4156, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4157, longlat, 6378293.645208759, 6356617.987679838, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4158, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4159, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4160, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4161, longlat, intl, "+proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4162, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4163, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4164, longlat, krass, "+proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4165, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4166, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4167, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4168, longlat, 6378300, 6356751.689189189, "+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4169, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4170, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4171, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4172, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4173, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4174, longlat, 6378300, 6356751.689189189, "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4175, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4176, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4178, longlat, krass, "+proj=longlat +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4179, longlat, krass, "+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4180, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4181, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4182, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4183, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4184, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4185, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4188, longlat, airy, "+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4189, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4190, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4191, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4192, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4193, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4194, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4195, longlat, intl, "+proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4196, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4197, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4198, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4199, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4200, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4201, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4202, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4203, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4204, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4205, longlat, krass, "+proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4206, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4207, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4208, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4209, longlat, 6378249.145, 6356514.966398753, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4210, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4211, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4212, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4213, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4214, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4215, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4216, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4218, longlat, intl, "+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4219, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4220, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4221, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4222, longlat, 6378249.145, 6356514.966398753, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4223, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4224, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4225, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4226, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4227, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4228, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4229, longlat, helmert, "+proj=longlat +ellps=helmert +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4230, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4231, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4232, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4233, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4234, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4235, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4236, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4237, longlat, GRS67, "+proj=longlat +ellps=GRS67 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4238, longlat, 6378160, 6356774.50408554, "+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4239, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4240, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4241, longlat, 6378249.144808011, 6356514.966204134, "+proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4242, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4243, longlat, 6377299.36559538, 6356098.359005157, "+proj=longlat +a=6377299.36559538 +b=6356098.359005157 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4244, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4245, longlat, 6377304.063, 6356103.038993155, "+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4246, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4247, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4248, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4249, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4250, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4251, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4252, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4253, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4254, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4255, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4256, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4257, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4258, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4259, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4260, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4261, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4262, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4263, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4264, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4265, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4266, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 4267, longlat, clrk66, NAD27, "+proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4268, longlat, 6378450.047548896, 6356826.621488444, "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 4269, longlat, GRS80, NAD83, "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4270, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4271, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 4272, longlat, intl, nzgd49, "+proj=longlat +ellps=intl +datum=nzgd49 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4273, longlat, 6377492.018, 6356173.508712696, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4274, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4275, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4276, longlat, WGS66, "+proj=longlat +ellps=WGS66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 4277, longlat, airy, OSGB36, "+proj=longlat +ellps=airy +datum=OSGB36 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4278, longlat, airy, "+proj=longlat +ellps=airy +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4279, longlat, airy, "+proj=longlat +ellps=airy +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4280, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4281, longlat, 6378300.789, 6356566.435, "+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4282, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4283, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4284, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4285, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4286, longlat, helmert, "+proj=longlat +ellps=helmert +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4287, longlat, intl, "+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4288, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4289, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4291, longlat, GRS67, "+proj=longlat +ellps=GRS67 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4292, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4293, longlat, bess_nam, "+proj=longlat +ellps=bess_nam +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4294, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4295, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4296, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4297, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4298, longlat, evrstSS, "+proj=longlat +ellps=evrstSS +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4299, longlat, 6377340.189, 6356034.447938534, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4300, longlat, 6377340.189, 6356034.447938534, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4301, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4302, longlat, 6378293.645208759, 6356617.987679838, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4303, longlat, helmert, "+proj=longlat +ellps=helmert +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4304, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4306, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4307, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4308, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4309, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4310, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4311, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4312, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4313, longlat, intl, "+proj=longlat +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 4314, longlat, bessel, potsdam, "+proj=longlat +ellps=bessel +datum=potsdam +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4315, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4316, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4317, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4318, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4319, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4322, longlat, WGS72, "+proj=longlat +ellps=WGS72 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4324, longlat, WGS72, "+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 4326, longlat, WGS84, WGS84, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 4327, longlat, WGS84, WGS84, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4328, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 4329, longlat, WGS84, WGS84, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4330, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4331, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4332, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4333, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4334, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4335, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4336, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4337, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4338, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4339, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4340, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4341, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4342, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4343, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4344, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4345, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4346, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4347, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4348, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4349, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4350, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4351, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4352, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4353, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4354, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4355, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4356, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4357, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,-0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4358, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4359, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4360, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4361, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4362, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4363, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4364, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4365, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4366, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4367, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4368, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4369, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4370, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4371, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=2.0,2.0,-2.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4372, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4373, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4374, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4375, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4376, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4377, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4378, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4379, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4380, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4381, longlat, intl, "+proj=longlat +ellps=intl +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4382, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4383, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4384, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4385, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4386, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4387, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4388, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4389, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4600, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4601, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4602, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4603, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4604, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4605, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4606, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4607, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4608, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4609, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4610, longlat, 6378140, 6356755.288157528, "+proj=longlat +a=6378140 +b=6356755.288157528 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4611, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4612, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4613, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4614, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4615, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4616, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4617, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4618, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4619, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4620, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4621, longlat, intl, "+proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4622, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4623, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4624, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4625, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4626, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4627, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4628, longlat, intl, "+proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4629, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4630, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4631, longlat, intl, "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4632, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4633, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4634, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4635, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4636, longlat, intl, "+proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4637, longlat, intl, "+proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4638, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4639, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4640, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4641, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4642, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4643, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4644, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4645, longlat, intl, "+proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4646, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4657, longlat, 6377019.27, 6355762.5391, "+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4658, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4659, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4660, longlat, intl, "+proj=longlat +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4661, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4662, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4663, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4664, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4665, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4666, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4667, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4668, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4669, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4670, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4671, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4672, longlat, intl, "+proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4673, longlat, intl, "+proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4674, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4675, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4676, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4677, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4678, longlat, krass, "+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4679, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.19,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4680, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4681, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4682, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4683, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4684, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4685, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4686, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4687, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4688, longlat, intl, "+proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4689, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4690, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4691, longlat, intl, "+proj=longlat +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4692, longlat, intl, "+proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4693, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4694, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4695, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4696, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4697, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4698, longlat, intl, "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4699, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4700, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4701, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4702, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4703, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4704, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4705, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4706, longlat, helmert, "+proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4707, longlat, intl, "+proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4708, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4709, longlat, intl, "+proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4710, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4711, longlat, intl, "+proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4712, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4713, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4714, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4715, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4716, longlat, intl, "+proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4717, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4718, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4719, longlat, intl, "+proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4720, longlat, WGS72, "+proj=longlat +ellps=WGS72 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4721, longlat, intl, "+proj=longlat +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4722, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4723, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4724, longlat, intl, "+proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4725, longlat, intl, "+proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4726, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4727, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4728, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4729, longlat, intl, "+proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4730, longlat, intl, "+proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4731, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4732, longlat, 6378270, 6356794.343434343, "+proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4733, longlat, intl, "+proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4734, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4735, longlat, intl, "+proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4736, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4737, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4738, longlat, 6378293.645208759, 6356617.987679838, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4739, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4740, longlat, 6378136, 6356751.361745712, "+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,-0,-0,0.076,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4741, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4742, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4743, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4744, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4745, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4746, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4747, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4748, longlat, 6378306.3696, 6356571.996, "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4749, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4750, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4751, longlat, 6377295.664, 6356094.667915204, "+proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4752, longlat, 6378306.3696, 6356571.996, "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4753, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4754, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4755, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4756, longlat, WGS84, "+proj=longlat +ellps=WGS84 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4757, longlat, WGS84, "+proj=longlat +ellps=WGS84 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4758, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4759, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4760, longlat, WGS66, "+proj=longlat +ellps=WGS66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4761, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4762, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4763, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4764, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4765, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4801, longlat, bessel, "+proj=longlat +ellps=bessel +pm=bern +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4802, longlat, intl, "+proj=longlat +ellps=intl +pm=bogota +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4803, longlat, intl, "+proj=longlat +ellps=intl +pm=lisbon +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4804, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4805, longlat, bessel, "+proj=longlat +ellps=bessel +pm=ferro +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4806, longlat, intl, "+proj=longlat +ellps=intl +pm=rome +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4807, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4808, longlat, bessel, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4809, longlat, intl, "+proj=longlat +ellps=intl +pm=brussels +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4810, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4811, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4813, longlat, bessel, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4814, longlat, bessel, "+proj=longlat +ellps=bessel +pm=stockholm +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4815, longlat, bessel, "+proj=longlat +ellps=bessel +pm=athens +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4816, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4817, longlat, 6377492.018, 6356173.508712696, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4818, longlat, bessel, "+proj=longlat +ellps=bessel +pm=ferro +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4819, longlat, clrk80, "+proj=longlat +ellps=clrk80 +pm=paris +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4820, longlat, bessel, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4821, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4882, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4883, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4884, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4885, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4886, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4887, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4888, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4889, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4890, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4891, longlat, WGS66, "+proj=longlat +ellps=WGS66 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4892, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4893, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4894, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4895, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4896, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4897, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4898, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4899, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4900, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4901, longlat, 6376523, 6355862.933255573, "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.3372291666985 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4902, longlat, 6376523, 6355862.933255573, "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4903, longlat, 6378298.3, 6356657.142669561, "+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4904, longlat, bessel, "+proj=longlat +ellps=bessel +pm=lisbon +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4906, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4907, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4908, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4909, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4913, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4914, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4915, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4916, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4917, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4918, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4919, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4920, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4921, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4922, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 4923, longlat, 6378136, 6356751.361745712, "+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0.0,0.0,1.5,-0.0,0.0,-0.076,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4924, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4925, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4926, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4927, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4928, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4929, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4930, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4931, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4932, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4933, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4934, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4935, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4936, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4937, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4938, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4939, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4940, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4941, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4942, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4943, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4944, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4945, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4946, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4947, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4948, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4949, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4950, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4951, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4952, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4953, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,-0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4954, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4955, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4956, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4957, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4958, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4959, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4960, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4961, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4962, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4963, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4964, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4965, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4966, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4967, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=2.0,2.0,-2.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4968, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4969, longlat, intl, "+proj=longlat +ellps=intl +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4970, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4971, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4972, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4973, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4974, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4975, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4976, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4977, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4978, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 4979, longlat, WGS84, WGS84, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4980, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4981, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4982, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4983, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4984, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4985, longlat, WGS72, "+proj=longlat +ellps=WGS72 +towgs84=0.0,0.0,4.5,0.0,0.0,0.554,0.045171992568114105 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4986, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4987, longlat, WGS72, "+proj=longlat +ellps=WGS72 +towgs84=0.0,0.0,1.9,0.0,0.0,0.814,-0.07838062637389662 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4988, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4989, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4990, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4991, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4992, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4993, longlat, krass, "+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4994, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4995, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,-4.903,-1.578,-0.21864069462192215 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4996, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4997, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 4998, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 4999, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,-0.0003,0.007,-0.001918262698097996 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5600, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5601, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5602, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5603, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5604, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5605, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5606, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5607, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5608, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5609, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5610, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5611, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5612, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5613, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5614, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5615, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5616, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5617, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5618, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5619, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5620, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5701, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5702, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5703, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5704, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5705, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5706, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5709, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5710, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5711, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5712, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5713, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5714, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5715, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5716, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5717, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5718, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5719, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5720, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5721, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5722, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5723, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5724, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5725, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5726, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5727, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5728, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5729, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5730, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5731, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5732, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5733, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5734, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5735, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5736, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5737, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5738, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5739, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5740, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5741, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5742, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5743, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5744, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5745, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5746, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5747, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5748, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5749, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5750, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5751, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5752, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5753, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5754, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5755, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5756, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5757, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5758, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5759, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5760, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5761, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5762, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5763, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5764, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5765, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5766, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5767, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5768, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5769, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5770, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5771, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5772, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5773, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5774, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5775, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5776, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5777, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5778, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5779, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5780, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5781, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5782, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5783, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5784, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5785, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5786, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5787, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5788, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5789, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5790, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5791, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5792, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5793, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5794, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5795, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5796, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5797, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5798, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5799, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5800, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5801, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5802, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5803, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5804, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5805, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5806, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5807, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5808, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5809, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5810, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5811, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5812, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5813, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5814, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5815, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5816, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5817, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5818, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5819, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5820, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 5821, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7400, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7401, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7402, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7403, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7404, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7405, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7406, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7407, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7408, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7409, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7410, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7411, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7412, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7413, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7414, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7415, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7416, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7417, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7418, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7419, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7420, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7421, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 7422, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20004, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20005, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20006, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20007, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20008, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20009, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20010, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20011, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20012, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20013, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20014, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20015, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20016, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20017, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20018, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20019, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20020, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20021, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20022, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20023, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20024, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20025, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20026, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20027, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20028, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20029, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20030, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20031, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20032, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20064, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20065, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20066, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20067, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20068, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20069, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20070, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20071, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20072, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20073, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20074, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20075, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20076, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20077, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20078, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20079, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20080, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20081, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20082, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20083, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20084, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20085, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20086, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20087, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20088, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20089, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20090, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20091, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20092, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20135, utm, clrk80, "+proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20136, utm, clrk80, "+proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20137, utm, clrk80, "+proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20138, utm, clrk80, "+proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20248, utm, aust_SA, "+proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20249, utm, aust_SA, "+proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20250, utm, aust_SA, "+proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20251, utm, aust_SA, "+proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20252, utm, aust_SA, "+proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20253, utm, aust_SA, "+proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20254, utm, aust_SA, "+proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20255, utm, aust_SA, "+proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20256, utm, aust_SA, "+proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20257, utm, aust_SA, "+proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20258, utm, aust_SA, "+proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20348, utm, aust_SA, "+proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20349, utm, aust_SA, "+proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20350, utm, aust_SA, "+proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20351, utm, aust_SA, "+proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20352, utm, aust_SA, "+proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20353, utm, aust_SA, "+proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20354, utm, aust_SA, "+proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20355, utm, aust_SA, "+proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20356, utm, aust_SA, "+proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20357, utm, aust_SA, "+proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20358, utm, aust_SA, "+proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20436, utm, intl, "+proj=utm +zone=36 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20437, utm, intl, "+proj=utm +zone=37 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20438, utm, intl, "+proj=utm +zone=38 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20439, utm, intl, "+proj=utm +zone=39 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20440, utm, intl, "+proj=utm +zone=40 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20499, utm, intl, "+proj=utm +zone=39 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20538, utm, krass, "+proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20539, utm, krass, "+proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20790, tmerc, intl, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +pm=lisbon +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20791, tmerc, intl, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +pm=lisbon +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20822, utm, intl, "+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20823, utm, intl, "+proj=utm +zone=23 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 20824, utm, intl, "+proj=utm +zone=24 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 20934, utm, 6378249.145, 6356514.966398753, "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 20935, utm, 6378249.145, 6356514.966398753, "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 20936, utm, 6378249.145, 6356514.966398753, "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21035, utm, clrk80, "+proj=utm +zone=35 +south +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21036, utm, clrk80, "+proj=utm +zone=36 +south +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21037, utm, clrk80, "+proj=utm +zone=37 +south +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21095, utm, clrk80, "+proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21096, utm, clrk80, "+proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21097, utm, clrk80, "+proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21100, merc, bessel, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21148, utm, bessel, "+proj=utm +zone=48 +south +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21149, utm, bessel, "+proj=utm +zone=49 +south +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21150, utm, bessel, "+proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21291, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21292, tmerc, clrk80, "+proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21413, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21414, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21415, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21416, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21417, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21418, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21419, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21420, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21421, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21422, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21423, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21453, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21454, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21455, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21456, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21457, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21458, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21459, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21460, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21461, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21462, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21463, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21473, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21474, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21475, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21476, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21477, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21478, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21479, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21480, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21481, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21482, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21483, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21500, lcc, intl, "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21780, somerc, bessel, "+proj=somerc +lat_0=46.95240555555556 +lon_0=0 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +pm=bern +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21781, somerc, bessel, "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 21782, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21817, utm, intl, "+proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21818, utm, intl, "+proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21891, tmerc, intl, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21892, tmerc, intl, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21893, tmerc, intl, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21894, tmerc, intl, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21896, tmerc, intl, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21897, tmerc, intl, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21898, tmerc, intl, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 21899, tmerc, intl, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22032, utm, clrk80, "+proj=utm +zone=32 +south +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22033, utm, clrk80, "+proj=utm +zone=33 +south +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22091, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22092, tmerc, clrk80, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22171, tmerc, GRS80, "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22172, tmerc, GRS80, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22173, tmerc, GRS80, "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22174, tmerc, GRS80, "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22175, tmerc, GRS80, "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22176, tmerc, GRS80, "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22177, tmerc, GRS80, "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22181, tmerc, WGS84, "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22182, tmerc, WGS84, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22183, tmerc, WGS84, "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22184, tmerc, WGS84, "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22185, tmerc, WGS84, "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22186, tmerc, WGS84, "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22187, tmerc, WGS84, "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22191, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22192, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22193, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22194, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22195, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22196, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22197, tmerc, intl, "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22234, utm, 6378249.145, 6356514.966398753, "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22235, utm, 6378249.145, 6356514.966398753, "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22236, utm, 6378249.145, 6356514.966398753, "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22275, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22277, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22279, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22281, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22283, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22285, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22287, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22289, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22291, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22293, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 22300, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22332, utm, 6378249.2, 6356515, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22391, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22392, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22521, utm, intl, "+proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22522, utm, intl, "+proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22523, utm, intl, "+proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22524, utm, intl, "+proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22525, utm, intl, "+proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22700, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22770, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22780, sterea, 6378249.2, 6356515, "+proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 22832, utm, 6378249.2, 6356515, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22991, tmerc, helmert, "+proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=1100000 +ellps=helmert +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22992, tmerc, helmert, "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22993, tmerc, helmert, "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=200000 +ellps=helmert +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 22994, tmerc, helmert, "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=1200000 +ellps=helmert +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23028, utm, intl, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23029, utm, intl, "+proj=utm +zone=29 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23030, utm, intl, "+proj=utm +zone=30 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23031, utm, intl, "+proj=utm +zone=31 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23032, utm, intl, "+proj=utm +zone=32 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23033, utm, intl, "+proj=utm +zone=33 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23034, utm, intl, "+proj=utm +zone=34 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23035, utm, intl, "+proj=utm +zone=35 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23036, utm, intl, "+proj=utm +zone=36 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23037, utm, intl, "+proj=utm +zone=37 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23038, utm, intl, "+proj=utm +zone=38 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23090, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23095, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23239, utm, clrk80, "+proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23240, utm, clrk80, "+proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23433, utm, 6378249.2, 6356515, "+proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23700, somerc, GRS67, "+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23830, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23831, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23832, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23833, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23834, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23835, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23836, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23837, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23838, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23839, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23840, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23841, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23842, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23843, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23844, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23845, tmerc, WGS84, "+proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23846, utm, 6378160, 6356774.50408554, "+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23847, utm, 6378160, 6356774.50408554, "+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23848, utm, 6378160, 6356774.50408554, "+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23849, utm, 6378160, 6356774.50408554, "+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23850, utm, 6378160, 6356774.50408554, "+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23851, utm, 6378160, 6356774.50408554, "+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23852, utm, 6378160, 6356774.50408554, "+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23853, utm, 6378160, 6356774.50408554, "+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23866, utm, WGS84, "+proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23867, utm, WGS84, "+proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23868, utm, WGS84, "+proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23869, utm, WGS84, "+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23870, utm, WGS84, "+proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23871, utm, WGS84, "+proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23872, utm, WGS84, "+proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23877, utm, WGS84, "+proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23878, utm, WGS84, "+proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23879, utm, WGS84, "+proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23880, utm, WGS84, "+proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23881, utm, WGS84, "+proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23882, utm, WGS84, "+proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23883, utm, WGS84, "+proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 23884, utm, WGS84, "+proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23886, utm, 6378160, 6356774.50408554, "+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23887, utm, 6378160, 6356774.50408554, "+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23888, utm, 6378160, 6356774.50408554, "+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23889, utm, 6378160, 6356774.50408554, "+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23890, utm, 6378160, 6356774.50408554, "+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23891, utm, 6378160, 6356774.50408554, "+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23892, utm, 6378160, 6356774.50408554, "+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23893, utm, 6378160, 6356774.50408554, "+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23894, utm, 6378160, 6356774.50408554, "+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23946, utm, 6377276.345, 6356075.41314024, "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23947, utm, 6377276.345, 6356075.41314024, "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 23948, utm, 6377276.345, 6356075.41314024, "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24047, utm, 6377276.345, 6356075.41314024, "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24048, utm, 6377276.345, 6356075.41314024, "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24100, lcc, 6378249.144808011, 6356514.966204134, "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49597 +y_0=121918.90616 +a=6378249.144808011 +b=6356514.966204134 +to_meter=0.3047972654 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24200, lcc, clrk66, "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24305, utm, 6377276.345, 6356075.41314024, "+proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24306, utm, 6377276.345, 6356075.41314024, "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24311, utm, 6377301.243, 6356100.230165384, "+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24312, utm, 6377301.243, 6356100.230165384, "+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24313, utm, 6377301.243, 6356100.230165384, "+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24342, utm, 6377299.151, 6356098.145120132, "+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24343, utm, 6377299.151, 6356098.145120132, "+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24344, utm, 6377299.151, 6356098.145120132, "+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24345, utm, 6377299.151, 6356098.145120132, "+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24346, utm, 6377299.151, 6356098.145120132, "+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24347, utm, 6377299.151, 6356098.145120132, "+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24370, lcc, 6377299.36559538, 6356098.359005157, "+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24371, lcc, 6377299.36559538, 6356098.359005157, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24372, lcc, 6377299.36559538, 6356098.359005157, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24373, lcc, 6377299.36559538, 6356098.359005157, "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24374, lcc, 6377299.36559538, 6356098.359005157, "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24375, lcc, 6377276.345, 6356075.41314024, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24376, lcc, 6377301.243, 6356100.230165384, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24377, lcc, 6377301.243, 6356100.230165384, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24378, lcc, 6377299.151, 6356098.145120132, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24379, lcc, 6377299.151, 6356098.145120132, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24380, lcc, 6377299.151, 6356098.145120132, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24381, lcc, 6377299.151, 6356098.145120132, "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24382, lcc, 6377299.36559538, 6356098.359005157, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005157 +to_meter=0.9143985307444408 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24383, lcc, 6377299.151, 6356098.145120132, "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24500, cass, 6377304.063, 6356103.038993155, "+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24547, utm, 6377304.063, 6356103.038993155, "+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24548, utm, 6377304.063, 6356103.038993155, "+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 24571, omerc, 6377304.063, 6356103.038993155, "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24600, lcc, clrk80, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24718, utm, intl, "+proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24719, utm, intl, "+proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24720, utm, intl, "+proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24817, utm, intl, "+proj=utm +zone=17 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24818, utm, intl, "+proj=utm +zone=18 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24819, utm, intl, "+proj=utm +zone=19 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24820, utm, intl, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24821, utm, intl, "+proj=utm +zone=21 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24877, utm, intl, "+proj=utm +zone=17 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24878, utm, intl, "+proj=utm +zone=18 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24879, utm, intl, "+proj=utm +zone=19 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24880, utm, intl, "+proj=utm +zone=20 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24881, utm, intl, "+proj=utm +zone=21 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24882, utm, intl, "+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24891, tmerc, intl, "+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=222000 +y_0=1426834.743 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24892, tmerc, intl, "+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 24893, tmerc, intl, "+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0=1324000 +y_0=1040084.558 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25000, tmerc, clrk80, "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 25231, utm, 6378249.2, 6356515, "+proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25391, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25392, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25393, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25394, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25395, tmerc, clrk66, "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25700, merc, bessel, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25828, utm, GRS80, "+proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25829, utm, GRS80, "+proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25830, utm, GRS80, "+proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25831, utm, GRS80, "+proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25832, utm, GRS80, "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25833, utm, GRS80, "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25834, utm, GRS80, "+proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25835, utm, GRS80, "+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25836, utm, GRS80, "+proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25837, utm, GRS80, "+proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25838, utm, GRS80, "+proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25884, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 25932, utm, intl, "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26191, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26192, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26193, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26194, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26195, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26237, utm, bessel, "+proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26331, utm, clrk80, "+proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26332, utm, clrk80, "+proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26391, tmerc, clrk80, "+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.26 +y_0=0 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26392, tmerc, clrk80, "+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.98 +y_0=0 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26393, tmerc, clrk80, "+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26432, utm, intl, "+proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26591, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26592, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26632, utm, 6378249.2, 6356515, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26692, utm, 6378249.2, 6356515, "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26701, utm, clrk66, NAD27, "+proj=utm +zone=1 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26702, utm, clrk66, NAD27, "+proj=utm +zone=2 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26703, utm, clrk66, NAD27, "+proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26704, utm, clrk66, NAD27, "+proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26705, utm, clrk66, NAD27, "+proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26706, utm, clrk66, NAD27, "+proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26707, utm, clrk66, NAD27, "+proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26708, utm, clrk66, NAD27, "+proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26709, utm, clrk66, NAD27, "+proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26710, utm, clrk66, NAD27, "+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26711, utm, clrk66, NAD27, "+proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26712, utm, clrk66, NAD27, "+proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26713, utm, clrk66, NAD27, "+proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26714, utm, clrk66, NAD27, "+proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26715, utm, clrk66, NAD27, "+proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26716, utm, clrk66, NAD27, "+proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26717, utm, clrk66, NAD27, "+proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26718, utm, clrk66, NAD27, "+proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26719, utm, clrk66, NAD27, "+proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26720, utm, clrk66, NAD27, "+proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26721, utm, clrk66, NAD27, "+proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26722, utm, clrk66, NAD27, "+proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26729, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26730, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26731, omerc, clrk66, NAD27, "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26732, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26733, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26734, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26735, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26736, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26737, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360.4267208534 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26738, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26739, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26740, lcc, clrk66, NAD27, "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26741, lcc, clrk66, NAD27, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26742, lcc, clrk66, NAD27, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26743, lcc, clrk66, NAD27, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26744, lcc, clrk66, NAD27, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26745, lcc, clrk66, NAD27, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26746, lcc, clrk66, NAD27, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26747, lcc, clrk66, NAD27, "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26748, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26749, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26750, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26751, lcc, clrk66, NAD27, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26752, lcc, clrk66, NAD27, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26753, lcc, clrk66, NAD27, "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26754, lcc, clrk66, NAD27, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26755, lcc, clrk66, NAD27, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26756, lcc, clrk66, NAD27, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26757, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26758, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26759, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26760, lcc, clrk66, NAD27, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26766, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26767, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26768, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26769, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26770, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26771, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26772, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26773, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26774, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26775, lcc, clrk66, NAD27, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26776, lcc, clrk66, NAD27, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26777, lcc, clrk66, NAD27, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26778, lcc, clrk66, NAD27, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26779, lcc, clrk66, NAD27, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26780, lcc, clrk66, NAD27, "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26781, lcc, clrk66, NAD27, "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26782, lcc, clrk66, NAD27, "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26783, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26784, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26785, lcc, clrk66, NAD27, "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26786, lcc, clrk66, NAD27, "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26787, lcc, clrk66, NAD27, "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26791, lcc, clrk66, NAD27, "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26792, lcc, clrk66, NAD27, "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26793, lcc, clrk66, NAD27, "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26794, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26795, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26796, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26797, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26798, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26799, lcc, clrk66, NAD27, "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=1268253.006858014 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26801, tmerc, 6378450.047548896, 6356826.621488444, "+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26802, tmerc, 6378450.047548896, 6356826.621488444, "+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26803, tmerc, 6378450.047548896, 6356826.621488444, "+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26811, lcc, 6378450.047548896, 6356826.621488444, "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26812, lcc, 6378450.047548896, 6356826.621488444, "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 26813, lcc, 6378450.047548896, 6356826.621488444, "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26814, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26815, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26819, lcc, GRS80, NAD83, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26820, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26821, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26822, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26823, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26824, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26825, tmerc, GRS80, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26826, tmerc, GRS80, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26830, lcc, GRS80, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26831, lcc, GRS80, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26832, lcc, GRS80, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26833, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26834, lcc, GRS80, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26835, lcc, GRS80, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26836, tmerc, GRS80, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26837, tmerc, GRS80, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26841, lcc, GRS80, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26842, lcc, GRS80, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26843, lcc, GRS80, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26844, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26845, lcc, GRS80, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26846, lcc, GRS80, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26847, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26848, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26849, lcc, GRS80, NAD83, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26850, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26851, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26852, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26853, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26854, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26855, tmerc, GRS80, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26856, tmerc, GRS80, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26857, lcc, GRS80, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26858, lcc, GRS80, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26859, lcc, GRS80, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26860, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26861, lcc, GRS80, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26862, lcc, GRS80, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26863, tmerc, GRS80, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26864, tmerc, GRS80, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26865, lcc, GRS80, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26866, lcc, GRS80, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26867, lcc, GRS80, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26868, lcc, GRS80, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26869, lcc, GRS80, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26870, lcc, GRS80, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26891, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26892, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26893, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26894, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26895, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26896, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26897, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26898, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 26899, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26901, utm, GRS80, NAD83, "+proj=utm +zone=1 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26902, utm, GRS80, NAD83, "+proj=utm +zone=2 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26903, utm, GRS80, NAD83, "+proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26904, utm, GRS80, NAD83, "+proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26905, utm, GRS80, NAD83, "+proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26906, utm, GRS80, NAD83, "+proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26907, utm, GRS80, NAD83, "+proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26908, utm, GRS80, NAD83, "+proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26909, utm, GRS80, NAD83, "+proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26910, utm, GRS80, NAD83, "+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26911, utm, GRS80, NAD83, "+proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26912, utm, GRS80, NAD83, "+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26913, utm, GRS80, NAD83, "+proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26914, utm, GRS80, NAD83, "+proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26915, utm, GRS80, NAD83, "+proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26916, utm, GRS80, NAD83, "+proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26917, utm, GRS80, NAD83, "+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26918, utm, GRS80, NAD83, "+proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26919, utm, GRS80, NAD83, "+proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26920, utm, GRS80, NAD83, "+proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26921, utm, GRS80, NAD83, "+proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26922, utm, GRS80, NAD83, "+proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26923, utm, GRS80, NAD83, "+proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26929, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26930, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26931, omerc, GRS80, NAD83, "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26932, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26933, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26934, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26935, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26936, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26937, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26938, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26939, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26940, lcc, GRS80, NAD83, "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26941, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26942, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26943, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26944, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26945, lcc, GRS80, NAD83, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26946, lcc, GRS80, NAD83, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26948, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26949, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26950, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26951, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26952, lcc, GRS80, NAD83, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26953, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26954, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26955, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26956, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26957, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26958, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26959, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26960, lcc, GRS80, NAD83, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26961, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26962, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26963, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26964, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26965, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26966, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26967, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26968, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26969, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26970, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26971, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26972, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26973, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26974, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26975, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26976, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26977, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26978, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26979, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26980, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26981, lcc, GRS80, NAD83, "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26982, lcc, GRS80, NAD83, "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26983, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26984, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26985, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26986, lcc, GRS80, NAD83, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26987, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26988, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26989, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26990, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26991, lcc, GRS80, NAD83, "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26992, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26993, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26994, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26995, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26996, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26997, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 26998, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 27037, utm, clrk80, "+proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 27038, utm, clrk80, "+proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 27039, utm, clrk80, "+proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 27040, utm, clrk80, "+proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 27120, utm, intl, "+proj=utm +zone=20 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27200, nzmg, intl, nzgd49, "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27205, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27206, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27207, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27208, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27209, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27210, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27211, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27212, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27213, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27214, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27215, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27216, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27217, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27218, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27219, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27220, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27221, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27222, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27223, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27224, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27225, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27226, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27227, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27228, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27229, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27230, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27231, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.99996 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27232, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58 +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27258, utm, intl, nzgd49, "+proj=utm +zone=58 +south +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27259, utm, intl, nzgd49, "+proj=utm +zone=59 +south +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27260, utm, intl, nzgd49, "+proj=utm +zone=60 +south +ellps=intl +datum=nzgd49 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27291, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27292, tmerc, intl, nzgd49, "+proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27391, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27392, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27393, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27394, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27395, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27396, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27397, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27398, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 27429, utm, intl, "+proj=utm +zone=29 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 27492, tmerc, intl, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 27493, tmerc, intl, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27500, lcc, 6376523, 6355862.933255573, "+proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=5.4 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=2.3372291666985 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27561, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27562, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27563, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27564, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27571, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27572, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27573, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27574, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27581, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27582, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27583, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27584, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27591, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27592, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27593, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 27594, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 27700, tmerc, airy, OSGB36, "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 28191, cass, 6378300.789, 6356566.435, "+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 28192, tmerc, 6378300.789, 6356566.435, "+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 28193, cass, 6378300.789, 6356566.435, "+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 28232, utm, 6378249.2, 6356515, "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28348, utm, GRS80, "+proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28349, utm, GRS80, "+proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28350, utm, GRS80, "+proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28351, utm, GRS80, "+proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28352, utm, GRS80, "+proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28353, utm, GRS80, "+proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28354, utm, GRS80, "+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28355, utm, GRS80, "+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28356, utm, GRS80, "+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28357, utm, GRS80, "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28358, utm, GRS80, "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28402, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28403, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28404, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28405, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28406, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28407, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28408, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28409, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28410, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28411, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28412, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28413, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28414, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28415, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28416, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28417, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28418, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28419, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28420, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28421, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28422, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28423, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28424, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28425, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28426, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28427, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28428, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28429, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28430, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28431, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28432, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28462, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28463, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28464, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28465, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28466, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28467, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28468, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28469, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28470, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28471, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28472, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28473, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28474, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28475, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28476, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28477, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28478, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28479, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28480, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28481, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28482, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28483, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28484, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28485, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28486, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28487, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28488, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28489, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28490, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28491, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28492, tmerc, krass, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28600, tmerc, intl, "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28991, sterea, bessel, "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 28992, sterea, bessel, "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29100, poly, GRS67, "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29101, poly, aust_SA, "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29118, utm, GRS67, "+proj=utm +zone=18 +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29119, utm, GRS67, "+proj=utm +zone=19 +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29120, utm, GRS67, "+proj=utm +zone=20 +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29121, utm, GRS67, "+proj=utm +zone=21 +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29122, utm, GRS67, "+proj=utm +zone=22 +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29168, utm, aust_SA, "+proj=utm +zone=18 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29169, utm, aust_SA, "+proj=utm +zone=19 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29170, utm, aust_SA, "+proj=utm +zone=20 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29171, utm, aust_SA, "+proj=utm +zone=21 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29172, utm, aust_SA, "+proj=utm +zone=22 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29177, utm, GRS67, "+proj=utm +zone=17 +south +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29178, utm, GRS67, "+proj=utm +zone=18 +south +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29179, utm, GRS67, "+proj=utm +zone=19 +south +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29180, utm, GRS67, "+proj=utm +zone=20 +south +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29181, utm, GRS67, "+proj=utm +zone=21 +south +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29182, utm, GRS67, "+proj=utm +zone=22 +south +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29183, utm, GRS67, "+proj=utm +zone=23 +south +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29184, utm, GRS67, "+proj=utm +zone=24 +south +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29185, utm, GRS67, "+proj=utm +zone=25 +south +ellps=GRS67 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29187, utm, aust_SA, "+proj=utm +zone=17 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29188, utm, aust_SA, "+proj=utm +zone=18 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29189, utm, aust_SA, "+proj=utm +zone=19 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29190, utm, aust_SA, "+proj=utm +zone=20 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29191, utm, aust_SA, "+proj=utm +zone=21 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29192, utm, aust_SA, "+proj=utm +zone=22 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29193, utm, aust_SA, "+proj=utm +zone=23 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29194, utm, aust_SA, "+proj=utm +zone=24 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29195, utm, aust_SA, "+proj=utm +zone=25 +south +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29220, utm, intl, "+proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29221, utm, intl, "+proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29333, utm, bess_nam, "+proj=utm +zone=33 +south +ellps=bess_nam +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 29371, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 29373, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 29375, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 29377, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 29379, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 29381, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 29383, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 29385, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 29635, utm, 6378249.2, 6356515, "+proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 29636, utm, 6378249.2, 6356515, "+proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29700, omerc, intl, "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 29701, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29702, omerc, intl, "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29738, utm, intl, "+proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29739, utm, intl, "+proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29849, utm, evrstSS, "+proj=utm +zone=49 +ellps=evrstSS +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29850, utm, evrstSS, "+proj=utm +zone=50 +ellps=evrstSS +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29871, omerc, evrstSS, "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 +ellps=evrstSS +to_meter=20.11676512155263 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29872, omerc, evrstSS, "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985 +ellps=evrstSS +to_meter=0.3047994715386762 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29873, omerc, evrstSS, "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.87 +y_0=442857.65 +ellps=evrstSS +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 29900, tmerc, 6377340.189, 6356034.447938534, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 29901, tmerc, airy, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0=250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 29902, tmerc, 6377340.189, 6356034.447938534, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 29903, tmerc, 6377340.189, 6356034.447938534, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30161, tmerc, bessel, "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30162, tmerc, bessel, "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30163, tmerc, bessel, "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30164, tmerc, bessel, "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30165, tmerc, bessel, "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30166, tmerc, bessel, "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30167, tmerc, bessel, "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30168, tmerc, bessel, "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30169, tmerc, bessel, "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30170, tmerc, bessel, "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30171, tmerc, bessel, "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30172, tmerc, bessel, "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30173, tmerc, bessel, "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30174, tmerc, bessel, "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30175, tmerc, bessel, "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30176, tmerc, bessel, "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30177, tmerc, bessel, "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30178, tmerc, bessel, "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30179, tmerc, bessel, "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 30200, cass, 6378293.645208759, 6356617.987679838, "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30339, utm, helmert, "+proj=utm +zone=39 +ellps=helmert +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30340, utm, helmert, "+proj=utm +zone=40 +ellps=helmert +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 30491, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 30492, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 30493, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 30494, lcc, 6378249.2, 6356515, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30729, utm, clrk80, "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30730, utm, clrk80, "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30731, utm, clrk80, "+proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30732, utm, clrk80, "+proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30791, lcc, clrk80, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30792, lcc, clrk80, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 30800, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 31028, utm, 6378249.2, 6356515, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31121, utm, intl, "+proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31154, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31170, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31171, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31251, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31252, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31253, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31254, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31255, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31256, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31257, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31258, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31259, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31265, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31266, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31267, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31268, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31275, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31276, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31277, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31278, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31279, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31281, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31282, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31283, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31284, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31285, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31286, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31287, lcc, bessel, "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31288, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31289, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31290, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31291, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31292, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31293, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31294, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31295, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31296, tmerc, bessel, "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31297, lcc, bessel, "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 31300, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31370, lcc, intl, "+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 31461, tmerc, bessel, potsdam, "+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 31462, tmerc, bessel, potsdam, "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 31463, tmerc, bessel, potsdam, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 31464, tmerc, bessel, potsdam, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 31465, tmerc, bessel, potsdam, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 31466, tmerc, bessel, potsdam, "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 31467, tmerc, bessel, potsdam, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 31468, tmerc, bessel, potsdam, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 31469, tmerc, bessel, potsdam, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 31528, utm, 6378249.2, 6356515, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 31529, utm, 6378249.2, 6356515, "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31600, sterea, intl, "+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31700, sterea, krass, "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31838, utm, WGS84, "+proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31839, utm, WGS84, "+proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31900, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31901, tmerc, GRS80, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31965, utm, GRS80, "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31966, utm, GRS80, "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31967, utm, GRS80, "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31968, utm, GRS80, "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31969, utm, GRS80, "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31970, utm, GRS80, "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31971, utm, GRS80, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31972, utm, GRS80, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31973, utm, GRS80, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31974, utm, GRS80, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31975, utm, GRS80, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31976, utm, GRS80, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31977, utm, GRS80, "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31978, utm, GRS80, "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31979, utm, GRS80, "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31980, utm, GRS80, "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31981, utm, GRS80, "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31982, utm, GRS80, "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31983, utm, GRS80, "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31984, utm, GRS80, "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31985, utm, GRS80, "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31986, utm, GRS80, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31987, utm, GRS80, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31988, utm, GRS80, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31989, utm, GRS80, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31990, utm, GRS80, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31991, utm, GRS80, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31992, utm, GRS80, "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31993, utm, GRS80, "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31994, utm, GRS80, "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31995, utm, GRS80, "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31996, utm, GRS80, "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31997, utm, GRS80, "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31998, utm, GRS80, "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 31999, utm, GRS80, "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32000, utm, GRS80, "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32001, lcc, clrk66, NAD27, "+proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32002, lcc, clrk66, NAD27, "+proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32003, lcc, clrk66, NAD27, "+proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32005, lcc, clrk66, NAD27, "+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32006, lcc, clrk66, NAD27, "+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32007, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32008, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32009, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32010, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32011, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32012, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32013, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32014, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32015, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32016, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32017, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32018, lcc, clrk66, NAD27, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32019, lcc, clrk66, NAD27, "+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32020, lcc, clrk66, NAD27, "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32021, lcc, clrk66, NAD27, "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32022, lcc, clrk66, NAD27, "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32023, lcc, clrk66, NAD27, "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32024, lcc, clrk66, NAD27, "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32025, lcc, clrk66, NAD27, "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32026, lcc, clrk66, NAD27, "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32027, lcc, clrk66, NAD27, "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32028, lcc, clrk66, NAD27, "+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32029, lcc, clrk66, NAD27, "+proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32030, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32031, lcc, clrk66, NAD27, "+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32033, lcc, clrk66, NAD27, "+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32034, lcc, clrk66, NAD27, "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32035, lcc, clrk66, NAD27, "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32036, lcc, clrk66, NAD27, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32037, lcc, clrk66, NAD27, "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32038, lcc, clrk66, NAD27, "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32039, lcc, clrk66, NAD27, "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32040, lcc, clrk66, NAD27, "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32041, lcc, clrk66, NAD27, "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32042, lcc, clrk66, NAD27, "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32043, lcc, clrk66, NAD27, "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32044, lcc, clrk66, NAD27, "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32045, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32046, lcc, clrk66, NAD27, "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32047, lcc, clrk66, NAD27, "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32048, lcc, clrk66, NAD27, "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32049, lcc, clrk66, NAD27, "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32050, lcc, clrk66, NAD27, "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32051, lcc, clrk66, NAD27, "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32052, lcc, clrk66, NAD27, "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32053, lcc, clrk66, NAD27, "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32054, lcc, clrk66, NAD27, "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32055, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32056, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32057, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32058, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32061, lcc, clrk66, NAD27, "+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32062, lcc, clrk66, NAD27, "+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32064, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32065, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32066, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32067, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32074, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32075, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32076, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32077, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32081, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32082, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32083, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32084, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32085, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32086, tmerc, clrk66, NAD27, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32098, lcc, clrk66, NAD27, "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32099, lcc, clrk66, NAD27, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32100, lcc, GRS80, NAD83, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32104, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32107, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32108, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32109, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32110, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32111, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32112, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32113, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32114, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32115, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32116, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32117, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32118, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32119, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32120, lcc, GRS80, NAD83, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32121, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32122, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32123, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32124, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32125, lcc, GRS80, NAD83, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32126, lcc, GRS80, NAD83, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32127, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32128, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32129, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32130, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32133, lcc, GRS80, NAD83, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32134, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32135, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32136, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32137, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32138, lcc, GRS80, NAD83, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32139, lcc, GRS80, NAD83, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32140, lcc, GRS80, NAD83, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32141, lcc, GRS80, NAD83, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32142, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32143, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32144, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32145, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32146, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32147, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32148, lcc, GRS80, NAD83, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32149, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32150, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32151, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32152, lcc, GRS80, NAD83, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32153, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32154, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32155, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32156, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32157, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32158, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32161, lcc, GRS80, NAD83, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32164, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32165, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32166, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32167, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32180, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32181, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32182, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32183, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32184, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32185, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32186, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32187, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32188, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32189, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32190, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32191, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32192, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32193, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32194, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32195, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32196, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32197, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32198, lcc, GRS80, NAD83, "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32199, lcc, GRS80, NAD83, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32201, utm, WGS72, "+proj=utm +zone=1 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32202, utm, WGS72, "+proj=utm +zone=2 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32203, utm, WGS72, "+proj=utm +zone=3 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32204, utm, WGS72, "+proj=utm +zone=4 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32205, utm, WGS72, "+proj=utm +zone=5 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32206, utm, WGS72, "+proj=utm +zone=6 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32207, utm, WGS72, "+proj=utm +zone=7 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32208, utm, WGS72, "+proj=utm +zone=8 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32209, utm, WGS72, "+proj=utm +zone=9 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32210, utm, WGS72, "+proj=utm +zone=10 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32211, utm, WGS72, "+proj=utm +zone=11 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32212, utm, WGS72, "+proj=utm +zone=12 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32213, utm, WGS72, "+proj=utm +zone=13 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32214, utm, WGS72, "+proj=utm +zone=14 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32215, utm, WGS72, "+proj=utm +zone=15 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32216, utm, WGS72, "+proj=utm +zone=16 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32217, utm, WGS72, "+proj=utm +zone=17 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32218, utm, WGS72, "+proj=utm +zone=18 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32219, utm, WGS72, "+proj=utm +zone=19 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32220, utm, WGS72, "+proj=utm +zone=20 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32221, utm, WGS72, "+proj=utm +zone=21 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32222, utm, WGS72, "+proj=utm +zone=22 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32223, utm, WGS72, "+proj=utm +zone=23 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32224, utm, WGS72, "+proj=utm +zone=24 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32225, utm, WGS72, "+proj=utm +zone=25 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32226, utm, WGS72, "+proj=utm +zone=26 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32227, utm, WGS72, "+proj=utm +zone=27 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32228, utm, WGS72, "+proj=utm +zone=28 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32229, utm, WGS72, "+proj=utm +zone=29 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32230, utm, WGS72, "+proj=utm +zone=30 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32231, utm, WGS72, "+proj=utm +zone=31 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32232, utm, WGS72, "+proj=utm +zone=32 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32233, utm, WGS72, "+proj=utm +zone=33 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32234, utm, WGS72, "+proj=utm +zone=34 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32235, utm, WGS72, "+proj=utm +zone=35 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32236, utm, WGS72, "+proj=utm +zone=36 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32237, utm, WGS72, "+proj=utm +zone=37 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32238, utm, WGS72, "+proj=utm +zone=38 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32239, utm, WGS72, "+proj=utm +zone=39 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32240, utm, WGS72, "+proj=utm +zone=40 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32241, utm, WGS72, "+proj=utm +zone=41 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32242, utm, WGS72, "+proj=utm +zone=42 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32243, utm, WGS72, "+proj=utm +zone=43 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32244, utm, WGS72, "+proj=utm +zone=44 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32245, utm, WGS72, "+proj=utm +zone=45 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32246, utm, WGS72, "+proj=utm +zone=46 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32247, utm, WGS72, "+proj=utm +zone=47 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32248, utm, WGS72, "+proj=utm +zone=48 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32249, utm, WGS72, "+proj=utm +zone=49 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32250, utm, WGS72, "+proj=utm +zone=50 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32251, utm, WGS72, "+proj=utm +zone=51 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32252, utm, WGS72, "+proj=utm +zone=52 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32253, utm, WGS72, "+proj=utm +zone=53 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32254, utm, WGS72, "+proj=utm +zone=54 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32255, utm, WGS72, "+proj=utm +zone=55 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32256, utm, WGS72, "+proj=utm +zone=56 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32257, utm, WGS72, "+proj=utm +zone=57 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32258, utm, WGS72, "+proj=utm +zone=58 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32259, utm, WGS72, "+proj=utm +zone=59 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32260, utm, WGS72, "+proj=utm +zone=60 +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32301, utm, WGS72, "+proj=utm +zone=1 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32302, utm, WGS72, "+proj=utm +zone=2 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32303, utm, WGS72, "+proj=utm +zone=3 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32304, utm, WGS72, "+proj=utm +zone=4 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32305, utm, WGS72, "+proj=utm +zone=5 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32306, utm, WGS72, "+proj=utm +zone=6 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32307, utm, WGS72, "+proj=utm +zone=7 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32308, utm, WGS72, "+proj=utm +zone=8 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32309, utm, WGS72, "+proj=utm +zone=9 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32310, utm, WGS72, "+proj=utm +zone=10 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32311, utm, WGS72, "+proj=utm +zone=11 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32312, utm, WGS72, "+proj=utm +zone=12 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32313, utm, WGS72, "+proj=utm +zone=13 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32314, utm, WGS72, "+proj=utm +zone=14 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32315, utm, WGS72, "+proj=utm +zone=15 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32316, utm, WGS72, "+proj=utm +zone=16 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32317, utm, WGS72, "+proj=utm +zone=17 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32318, utm, WGS72, "+proj=utm +zone=18 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32319, utm, WGS72, "+proj=utm +zone=19 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32320, utm, WGS72, "+proj=utm +zone=20 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32321, utm, WGS72, "+proj=utm +zone=21 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32322, utm, WGS72, "+proj=utm +zone=22 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32323, utm, WGS72, "+proj=utm +zone=23 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32324, utm, WGS72, "+proj=utm +zone=24 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32325, utm, WGS72, "+proj=utm +zone=25 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32326, utm, WGS72, "+proj=utm +zone=26 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32327, utm, WGS72, "+proj=utm +zone=27 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32328, utm, WGS72, "+proj=utm +zone=28 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32329, utm, WGS72, "+proj=utm +zone=29 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32330, utm, WGS72, "+proj=utm +zone=30 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32331, utm, WGS72, "+proj=utm +zone=31 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32332, utm, WGS72, "+proj=utm +zone=32 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32333, utm, WGS72, "+proj=utm +zone=33 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32334, utm, WGS72, "+proj=utm +zone=34 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32335, utm, WGS72, "+proj=utm +zone=35 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32336, utm, WGS72, "+proj=utm +zone=36 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32337, utm, WGS72, "+proj=utm +zone=37 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32338, utm, WGS72, "+proj=utm +zone=38 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32339, utm, WGS72, "+proj=utm +zone=39 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32340, utm, WGS72, "+proj=utm +zone=40 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32341, utm, WGS72, "+proj=utm +zone=41 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32342, utm, WGS72, "+proj=utm +zone=42 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32343, utm, WGS72, "+proj=utm +zone=43 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32344, utm, WGS72, "+proj=utm +zone=44 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32345, utm, WGS72, "+proj=utm +zone=45 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32346, utm, WGS72, "+proj=utm +zone=46 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32347, utm, WGS72, "+proj=utm +zone=47 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32348, utm, WGS72, "+proj=utm +zone=48 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32349, utm, WGS72, "+proj=utm +zone=49 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32350, utm, WGS72, "+proj=utm +zone=50 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32351, utm, WGS72, "+proj=utm +zone=51 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32352, utm, WGS72, "+proj=utm +zone=52 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32353, utm, WGS72, "+proj=utm +zone=53 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32354, utm, WGS72, "+proj=utm +zone=54 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32355, utm, WGS72, "+proj=utm +zone=55 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32356, utm, WGS72, "+proj=utm +zone=56 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32357, utm, WGS72, "+proj=utm +zone=57 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32358, utm, WGS72, "+proj=utm +zone=58 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32359, utm, WGS72, "+proj=utm +zone=59 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32360, utm, WGS72, "+proj=utm +zone=60 +south +ellps=WGS72 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32401, utm, WGS72, "+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32402, utm, WGS72, "+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32403, utm, WGS72, "+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32404, utm, WGS72, "+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32405, utm, WGS72, "+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32406, utm, WGS72, "+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32407, utm, WGS72, "+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32408, utm, WGS72, "+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32409, utm, WGS72, "+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32410, utm, WGS72, "+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32411, utm, WGS72, "+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32412, utm, WGS72, "+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32413, utm, WGS72, "+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32414, utm, WGS72, "+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32415, utm, WGS72, "+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32416, utm, WGS72, "+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32417, utm, WGS72, "+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32418, utm, WGS72, "+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32419, utm, WGS72, "+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32420, utm, WGS72, "+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32421, utm, WGS72, "+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32422, utm, WGS72, "+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32423, utm, WGS72, "+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32424, utm, WGS72, "+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32425, utm, WGS72, "+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32426, utm, WGS72, "+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32427, utm, WGS72, "+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32428, utm, WGS72, "+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32429, utm, WGS72, "+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32430, utm, WGS72, "+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32431, utm, WGS72, "+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32432, utm, WGS72, "+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32433, utm, WGS72, "+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32434, utm, WGS72, "+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32435, utm, WGS72, "+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32436, utm, WGS72, "+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32437, utm, WGS72, "+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32438, utm, WGS72, "+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32439, utm, WGS72, "+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32440, utm, WGS72, "+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32441, utm, WGS72, "+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32442, utm, WGS72, "+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32443, utm, WGS72, "+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32444, utm, WGS72, "+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32445, utm, WGS72, "+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32446, utm, WGS72, "+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32447, utm, WGS72, "+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32448, utm, WGS72, "+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32449, utm, WGS72, "+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32450, utm, WGS72, "+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32451, utm, WGS72, "+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32452, utm, WGS72, "+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32453, utm, WGS72, "+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32454, utm, WGS72, "+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32455, utm, WGS72, "+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32456, utm, WGS72, "+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32457, utm, WGS72, "+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32458, utm, WGS72, "+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32459, utm, WGS72, "+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32460, utm, WGS72, "+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32501, utm, WGS72, "+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32502, utm, WGS72, "+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32503, utm, WGS72, "+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32504, utm, WGS72, "+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32505, utm, WGS72, "+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32506, utm, WGS72, "+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32507, utm, WGS72, "+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32508, utm, WGS72, "+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32509, utm, WGS72, "+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32510, utm, WGS72, "+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32511, utm, WGS72, "+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32512, utm, WGS72, "+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32513, utm, WGS72, "+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32514, utm, WGS72, "+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32515, utm, WGS72, "+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32516, utm, WGS72, "+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32517, utm, WGS72, "+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32518, utm, WGS72, "+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32519, utm, WGS72, "+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32520, utm, WGS72, "+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32521, utm, WGS72, "+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32522, utm, WGS72, "+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32523, utm, WGS72, "+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32524, utm, WGS72, "+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32525, utm, WGS72, "+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32526, utm, WGS72, "+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32527, utm, WGS72, "+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32528, utm, WGS72, "+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32529, utm, WGS72, "+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32530, utm, WGS72, "+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32531, utm, WGS72, "+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32532, utm, WGS72, "+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32533, utm, WGS72, "+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32534, utm, WGS72, "+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32535, utm, WGS72, "+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32536, utm, WGS72, "+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32537, utm, WGS72, "+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32538, utm, WGS72, "+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32539, utm, WGS72, "+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32540, utm, WGS72, "+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32541, utm, WGS72, "+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32542, utm, WGS72, "+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32543, utm, WGS72, "+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32544, utm, WGS72, "+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32545, utm, WGS72, "+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32546, utm, WGS72, "+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32547, utm, WGS72, "+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32548, utm, WGS72, "+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32549, utm, WGS72, "+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32550, utm, WGS72, "+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32551, utm, WGS72, "+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32552, utm, WGS72, "+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32553, utm, WGS72, "+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32554, utm, WGS72, "+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32555, utm, WGS72, "+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32556, utm, WGS72, "+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32557, utm, WGS72, "+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32558, utm, WGS72, "+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32559, utm, WGS72, "+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 32560, utm, WGS72, "+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 32600, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32601, utm, WGS84, WGS84, "+proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32602, utm, WGS84, WGS84, "+proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32603, utm, WGS84, WGS84, "+proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32604, utm, WGS84, WGS84, "+proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32605, utm, WGS84, WGS84, "+proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32606, utm, WGS84, WGS84, "+proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32607, utm, WGS84, WGS84, "+proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32608, utm, WGS84, WGS84, "+proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32609, utm, WGS84, WGS84, "+proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32610, utm, WGS84, WGS84, "+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32611, utm, WGS84, WGS84, "+proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32612, utm, WGS84, WGS84, "+proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32613, utm, WGS84, WGS84, "+proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32614, utm, WGS84, WGS84, "+proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32615, utm, WGS84, WGS84, "+proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32616, utm, WGS84, WGS84, "+proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32617, utm, WGS84, WGS84, "+proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32618, utm, WGS84, WGS84, "+proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32619, utm, WGS84, WGS84, "+proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32620, utm, WGS84, WGS84, "+proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32621, utm, WGS84, WGS84, "+proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32622, utm, WGS84, WGS84, "+proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32623, utm, WGS84, WGS84, "+proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32624, utm, WGS84, WGS84, "+proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32625, utm, WGS84, WGS84, "+proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32626, utm, WGS84, WGS84, "+proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32627, utm, WGS84, WGS84, "+proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32628, utm, WGS84, WGS84, "+proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32629, utm, WGS84, WGS84, "+proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32630, utm, WGS84, WGS84, "+proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32631, utm, WGS84, WGS84, "+proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32632, utm, WGS84, WGS84, "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32633, utm, WGS84, WGS84, "+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32634, utm, WGS84, WGS84, "+proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32635, utm, WGS84, WGS84, "+proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32636, utm, WGS84, WGS84, "+proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32637, utm, WGS84, WGS84, "+proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32638, utm, WGS84, WGS84, "+proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32639, utm, WGS84, WGS84, "+proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32640, utm, WGS84, WGS84, "+proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32641, utm, WGS84, WGS84, "+proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32642, utm, WGS84, WGS84, "+proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32643, utm, WGS84, WGS84, "+proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32644, utm, WGS84, WGS84, "+proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32645, utm, WGS84, WGS84, "+proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32646, utm, WGS84, WGS84, "+proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32647, utm, WGS84, WGS84, "+proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32648, utm, WGS84, WGS84, "+proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32649, utm, WGS84, WGS84, "+proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32650, utm, WGS84, WGS84, "+proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32651, utm, WGS84, WGS84, "+proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32652, utm, WGS84, WGS84, "+proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32653, utm, WGS84, WGS84, "+proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32654, utm, WGS84, WGS84, "+proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32655, utm, WGS84, WGS84, "+proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32656, utm, WGS84, WGS84, "+proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32657, utm, WGS84, WGS84, "+proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32658, utm, WGS84, WGS84, "+proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32659, utm, WGS84, WGS84, "+proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32660, utm, WGS84, WGS84, "+proj=utm +zone=60 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32661, stere, WGS84, WGS84, "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32662, eqc, WGS84, WGS84, "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 32663, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32664, tmerc, WGS84, WGS84, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32665, tmerc, WGS84, WGS84, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32666, tmerc, WGS84, WGS84, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32667, tmerc, WGS84, WGS84, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 32700, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32701, utm, WGS84, WGS84, "+proj=utm +zone=1 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32702, utm, WGS84, WGS84, "+proj=utm +zone=2 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32703, utm, WGS84, WGS84, "+proj=utm +zone=3 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32704, utm, WGS84, WGS84, "+proj=utm +zone=4 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32705, utm, WGS84, WGS84, "+proj=utm +zone=5 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32706, utm, WGS84, WGS84, "+proj=utm +zone=6 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32707, utm, WGS84, WGS84, "+proj=utm +zone=7 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32708, utm, WGS84, WGS84, "+proj=utm +zone=8 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32709, utm, WGS84, WGS84, "+proj=utm +zone=9 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32710, utm, WGS84, WGS84, "+proj=utm +zone=10 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32711, utm, WGS84, WGS84, "+proj=utm +zone=11 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32712, utm, WGS84, WGS84, "+proj=utm +zone=12 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32713, utm, WGS84, WGS84, "+proj=utm +zone=13 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32714, utm, WGS84, WGS84, "+proj=utm +zone=14 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32715, utm, WGS84, WGS84, "+proj=utm +zone=15 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32716, utm, WGS84, WGS84, "+proj=utm +zone=16 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32717, utm, WGS84, WGS84, "+proj=utm +zone=17 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32718, utm, WGS84, WGS84, "+proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32719, utm, WGS84, WGS84, "+proj=utm +zone=19 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32720, utm, WGS84, WGS84, "+proj=utm +zone=20 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32721, utm, WGS84, WGS84, "+proj=utm +zone=21 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32722, utm, WGS84, WGS84, "+proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32723, utm, WGS84, WGS84, "+proj=utm +zone=23 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32724, utm, WGS84, WGS84, "+proj=utm +zone=24 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32725, utm, WGS84, WGS84, "+proj=utm +zone=25 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32726, utm, WGS84, WGS84, "+proj=utm +zone=26 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32727, utm, WGS84, WGS84, "+proj=utm +zone=27 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32728, utm, WGS84, WGS84, "+proj=utm +zone=28 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32729, utm, WGS84, WGS84, "+proj=utm +zone=29 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32730, utm, WGS84, WGS84, "+proj=utm +zone=30 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32731, utm, WGS84, WGS84, "+proj=utm +zone=31 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32732, utm, WGS84, WGS84, "+proj=utm +zone=32 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32733, utm, WGS84, WGS84, "+proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32734, utm, WGS84, WGS84, "+proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32735, utm, WGS84, WGS84, "+proj=utm +zone=35 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32736, utm, WGS84, WGS84, "+proj=utm +zone=36 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32737, utm, WGS84, WGS84, "+proj=utm +zone=37 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32738, utm, WGS84, WGS84, "+proj=utm +zone=38 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32739, utm, WGS84, WGS84, "+proj=utm +zone=39 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32740, utm, WGS84, WGS84, "+proj=utm +zone=40 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32741, utm, WGS84, WGS84, "+proj=utm +zone=41 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32742, utm, WGS84, WGS84, "+proj=utm +zone=42 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32743, utm, WGS84, WGS84, "+proj=utm +zone=43 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32744, utm, WGS84, WGS84, "+proj=utm +zone=44 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32745, utm, WGS84, WGS84, "+proj=utm +zone=45 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32746, utm, WGS84, WGS84, "+proj=utm +zone=46 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32747, utm, WGS84, WGS84, "+proj=utm +zone=47 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32748, utm, WGS84, WGS84, "+proj=utm +zone=48 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32749, utm, WGS84, WGS84, "+proj=utm +zone=49 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32750, utm, WGS84, WGS84, "+proj=utm +zone=50 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32751, utm, WGS84, WGS84, "+proj=utm +zone=51 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32752, utm, WGS84, WGS84, "+proj=utm +zone=52 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32753, utm, WGS84, WGS84, "+proj=utm +zone=53 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32754, utm, WGS84, WGS84, "+proj=utm +zone=54 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32755, utm, WGS84, WGS84, "+proj=utm +zone=55 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32756, utm, WGS84, WGS84, "+proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32757, utm, WGS84, WGS84, "+proj=utm +zone=57 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32758, utm, WGS84, WGS84, "+proj=utm +zone=58 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32759, utm, WGS84, WGS84, "+proj=utm +zone=59 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32760, utm, WGS84, WGS84, "+proj=utm +zone=60 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32761, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 32766, tmerc, WGS84, WGS84, "+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61206405, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61216405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61226405, longlat, 6378135, 6356750.304921594, "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61236405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,-0.345,1.376,0.30857215014565614 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61246405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,-2.141,7.023,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61266405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61266413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61276405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-82.875,-57.097,-156.768,-2.158,-1.524,0.982,-0.07404906544270759 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61286405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61296405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61306405, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,-0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61306413, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,-0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61316405, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=182.0,915.0,344.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61326405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-244.72,-162.773,400.75,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61336405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,0.0003,0.007,-0.002887707287459349 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61346405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-191.808,-250.512,167.861,-0.792,-1.653,8.558,4.270300283733636 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61356405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=58.0,-283.0,-182.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61366405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61376405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61386405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61396405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=11.0,72.0,-101.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61406405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61406413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61416405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-48.0,55.0,52.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61426405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-125.0,53.0,467.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61436405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-124.76,53.0,466.79,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61446405, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=214.0,804.0,268.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61456405, longlat, 6377301.243, 6356100.230165384, "+proj=longlat +a=6377301.243 +b=6356100.230165384 +towgs84=275.57,676.78,229.6,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61466405, longlat, 6377299.151, 6356098.145120132, "+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295.0,736.0,257.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61476405, longlat, krass, "+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61486405, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61486413, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61496405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61506405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61516405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61516413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61526405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61526413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,0.0257899075194932,-0.009650098960270402,-0.011659943232342112,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61536405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61546405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-123.02,-158.95,-168.47,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61556405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83.0,37.0,124.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61566405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=559.0,68.7,451.5,7.92,4.073,4.251,1.1777720436709203 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61576405, longlat, 6378293.645208759, 6356617.987679838, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61586405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-0.465,372.095,171.736,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61596405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-114.7,-98.5,-150.7,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61606405, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61616405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=27.5,14.0,186.4,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61626405, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61636405, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61636413, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61646405, longlat, krass, "+proj=longlat +ellps=krass +towgs84=-76.0,-138.0,67.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61656405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-173.0,253.0,27.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61666405, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61676405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61676413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61686405, longlat, 6378300, 6356751.689189189, "+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199.0,32.0,322.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61696405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-115.0,118.0,426.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61706405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61706413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61716405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61716413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61736405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61736413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61746405, longlat, 6378300, 6356751.689189189, "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61756405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-88.0,4.0,101.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61766405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61766413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61786405, longlat, krass, "+proj=longlat +ellps=krass +towgs84=24.0,-123.0,-94.0,0.02,0.25,0.13,0.226891286871806 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61796405, longlat, krass, "+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.17326243724756094 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61806405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61806413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61816405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-193.0,13.7,-39.3,-0.41,-2.933,2.688,0.08869386668625144 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61826405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-422.651,-172.995,84.02,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61836405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-104.0,167.0,-38.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61846405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-203.0,141.0,53.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61886405, longlat, airy, "+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,1.6810581709138355 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61896405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61896413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61906405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61906413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61916405, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61926405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 61936405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61946405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=163.511,127.533,-159.789,0.0,0.0,0.814,-0.12375888374825782 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61956405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=105.0,326.0,-102.5,0.0,0.0,0.814,-0.12375888374825782 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61966405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-45.0,417.0,-3.5,0.0,0.0,0.814,-0.12375888374825782 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61976405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61986405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 61996405, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62006405, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62016405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-165.0,-11.0,206.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62026405, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +towgs84=-124.133,-42.003,137.4,-0.008,-0.557,-0.178,-0.3824149507821167 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62036405, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +towgs84=-117.763,-51.51,139.061,0.292,-0.443,-0.277,-0.03939657799319541 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62046405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-18.944,-379.364,-24.063,0.04,0.764,-6.431,0.7543103964456315 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62056405, longlat, krass, "+proj=longlat +ellps=krass +towgs84=-43.0,-163.0,45.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62066405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62076405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-288.885,-91.744,126.244,-1.691,-0.41,0.211,-0.948405579124149 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62086405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-161.0,310.0,-145.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62096405, longlat, 6378249.145, 6356514.966398753, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-138.0,-105.0,-289.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62106405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-157.0,-2.0,-299.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62116405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=-377.7,675.1,-52.2,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62126405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62136405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106.0,-87.0,188.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62146405, longlat, krass, "+proj=longlat +ellps=krass +towgs84=15.8,-154.4,-82.3,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62156405, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62166405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-73.0,213.0,296.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62186405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=304.5,306.5,-318.1,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62196405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=-384.0,664.0,-48.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62206405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-50.9,-347.6,-231.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62216405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-154.5,150.7,100.4,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62226405, longlat, 6378249.145, 6356514.966398753, "+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-136.0,-108.0,-292.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62236405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-260.1,5.5,432.2,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62246405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-134.0,229.0,-29.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62256405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-206.0,172.0,-6.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62276405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83.58,-397.54,458.78,-17.595,-2.847,4.256,0.6652040001468859 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62296405, longlat, helmert, "+proj=longlat +ellps=helmert +towgs84=-130.0,110.0,-13.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62306405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-157.89,-17.16,-78.41,2.118,2.697,-1.434,-1.1097046576093785 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62316405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-82.981,-99.719,-110.709,-0.10470001565102613,0.031001600378938583,0.08040202147511816,-0.06482902860346239 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62326405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-346.0,-1.0,224.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62336405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-133.0,-321.0,50.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62366405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-637.0,-549.0,-203.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62376405, longlat, GRS67, "+proj=longlat +ellps=GRS67 +towgs84=57.01,-69.97,-9.29,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62386405, longlat, 6378160, 6356774.50408554, "+proj=longlat +a=6378160 +b=6356774.50408554 +towgs84=-1.977,-13.06,-9.993,0.364,-0.254,-0.689,-0.2138966040782389 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62396405, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217.0,823.0,299.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62406405, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=204.64,834.74,293.8,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62416405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62426405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-33.722,153.789,94.959,-8.581,4.478,-4.54,1.8460700159115124 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62436405, longlat, 6377299.36559538, 6356098.357204818, "+proj=longlat +a=6377299.36559538 +b=6356098.357204818 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62446405, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97.0,787.0,86.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62456405, longlat, 6377304.063, 6356103.038993155, "+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11.0,851.0,5.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62466405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62476405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62486405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-307.7,265.3,-363.5,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62496405, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62506405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-130.0,29.0,364.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62516405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-90.0,40.0,88.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62526405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62536405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=-133.0,-77.0,-51.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62546405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0002681442481212253 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62556405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-333.0,-222.0,114.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62566405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=41.0,-220.0,-134.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62576405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62586405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62586413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62596405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-254.1,-5.36,-100.29,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62616405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31.0,146.0,47.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62626405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=639.0,405.0,60.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62636405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-90.2,-87.32,114.17,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62646405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62656405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-50.2,-50.4,84.8,-0.69,-2.012,0.459,-5.791915759418465 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62666405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-80.7,-132.5,41.1,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 62676405, longlat, clrk66, NAD27, "+proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62686405, longlat, 6378450.047548896, 6356826.621488444, "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 62696405, longlat, GRS80, NAD83, "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62706405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-245.0,-153.9,382.8,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62716405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-2.0,374.0,172.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 62726405, longlat, intl, nzgd49, "+proj=longlat +ellps=intl +datum=nzgd49 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62736405, longlat, 6377492.018, 6356173.508712696, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93.0,474.5,7.889,0.05,-6.61,1.2809044467944684 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62746405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-239.749,88.181,30.488,0.263,-0.082,-1.211,0.4597642531247778 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62756405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168.0,-60.0,320.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62766405, longlat, WGS66, "+proj=longlat +ellps=WGS66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 62776405, longlat, airy, OSGB36, "+proj=longlat +ellps=airy +datum=OSGB36 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62786405, longlat, airy, "+proj=longlat +ellps=airy +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62796405, longlat, airy, "+proj=longlat +ellps=airy +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62806405, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62816405, longlat, 6378300.789, 6356566.435, "+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,0.20626480624709637 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62826405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-178.3,-316.7,-131.5,5.278,6.077,10.979,3.953271276531849 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62836405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62836413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62846405, longlat, krass, "+proj=longlat +ellps=krass +towgs84=-40.595,-18.55,-69.339,2.508,-1.832,2.611,-0.8867324020562674 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62856405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-128.033,-283.697,21.052,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62866405, longlat, helmert, "+proj=longlat +ellps=helmert +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62886405, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62896405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=565.04,49.91,465.84,-0.40939438743923684,-0.35970519561431136,1.868491000350572,0.8409828680306614 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62926405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-355.0,21.0,72.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62936405, longlat, bess_nam, "+proj=longlat +ellps=bess_nam +towgs84=616.0,97.0,-251.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62956405, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62976405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-189.0,-242.0,-91.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 62986405, longlat, evrstSS, "+proj=longlat +ellps=evrstSS +towgs84=-533.4,669.2,-52.5,0.0,0.0,4.28,1.9388891787227058 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 62996405, longlat, 6377340.189, 6356034.447938534, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,1.6810581709138355 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 63006405, longlat, 6377340.189, 6356034.447938534, "+proj=longlat +a=6377340.189 +b=6356034.447938534 +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,1.6810581709138355 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63016405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=-147.0,506.0,687.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 63026405, longlat, 6378293.645208759, 6356617.987679838, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63036405, longlat, helmert, "+proj=longlat +ellps=helmert +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 63046405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73.0,-247.0,227.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63066405, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63076405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-169.559,-72.34,303.102,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63086405, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63096405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-155.0,171.0,37.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 63106405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63116405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-265.0,120.0,-358.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63126405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=426.9,142.6,460.1,4.91,4.49,-12.42,3.5271281868253483 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63136405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-106.8686,52.2978,-103.7239,0.3366,0.457,-1.8422,0.26292574852317374 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 63146405, longlat, bessel, potsdam, "+proj=longlat +ellps=bessel +datum=potsdam +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 63156405, longlat, 6378249.2, 6356515, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23.0,259.0,-9.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63166405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=103.25,-100.4,-307.19,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63176405, longlat, krass, "+proj=longlat +ellps=krass +towgs84=28.0,-121.0,-77.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63186405, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63196405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=226.702,-193.337,-35.371,-2.229,4.391,-9.238,0.20209825716090501 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63226405, longlat, WGS72, "+proj=longlat +ellps=WGS72 +towgs84=0.0,0.0,4.5,0.0,0.0,0.554,0.045171992568114105 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 63246405, longlat, WGS72, "+proj=longlat +ellps=WGS72 +towgs84=0.0,0.0,1.9,0.0,0.0,0.814,-0.07838062637389662 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 63266405, longlat, WGS84, WGS84, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266406, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266407, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266408, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266409, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266410, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 63266411, longlat, WGS84, WGS84, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266412, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 63266413, longlat, WGS84, WGS84, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266414, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266415, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266416, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266417, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266418, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(epsg, 63266419, longlat, WGS84, WGS84, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (epsg, 63266420, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66006405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66016405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-255.0,-15.0,71.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66026405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=725.0,685.0,536.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66036405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=72.0,213.7,93.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66046405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=174.0,359.0,365.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66056405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=9.0,183.0,236.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66066405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-149.0,128.0,296.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66076405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66086405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66096405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 66106405, longlat, 6378140, 6356755.288157528, "+proj=longlat +a=6378140 +b=6356755.288157528 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66116405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.243649,-1.158827,-0.22570443917666022 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66126405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66126413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66136405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66146405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,0.7543238036580374 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66156405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-499.0,-249.0,314.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66166405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-289.0,-124.0,60.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66186405, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66196405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66196413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66206405, longlat, clrk80, "+proj=longlat +ellps=clrk80 +towgs84=-106.0,-129.0,165.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66216405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=137.0,248.0,-430.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66226405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-472.29,-5.63,-304.12,0.4362,-0.8374,0.2563,0.39157310817948776 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66236405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-186.0,230.0,110.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66246405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=2.0,2.0,-2.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66246413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=2.0,2.0,-2.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66256405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=126.93,547.94,130.41,-2.7867,5.1612,-0.8584,2.851136537311739 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66266405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=94.0,-948.0,-1262.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66276405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66276413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66286405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=162.0,117.0,154.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66296405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=72.438,345.918,79.486,1.6045,-0.8823,-0.5565,0.2835316026672587 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66306405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=259.551,297.612,197.833,-1.4866,2.1224,0.4612,5.574285762347154 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66316405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=145.0,-187.0,103.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66326405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-382.0,-59.0,-262.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66336405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=335.47,222.58,-230.94,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66346405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-11.64,-348.6,291.98,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66356405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,0.9240250790257423 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66366405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=365.0,194.0,166.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66376405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=325.0,154.0,172.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66386405, longlat, clrk66, "+proj=longlat +ellps=clrk66 +towgs84=30.0,430.0,368.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66396405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=253.0,-132.0,-127.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66406405, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66406413, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66416405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=287.58,177.78,-135.41,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66426405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-13.0,-348.0,292.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66436405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-23.039820110761912 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66446405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-10.18,-350.43,291.37,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66456405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66456413, longlat, intl, "+proj=longlat +ellps=intl +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66466405, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 66576405, longlat, 6377019.27, 6355762.5391, "+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28.0,199.0,5.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66586405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-73.0,46.0,-86.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66596405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66596413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66606405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=982.6087,552.753,-540.873,6.681626625276941,-31.61149240864225,-19.848161004816845,3.466280068982454 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66616405, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66616413, longlat, GRS80, "+proj=longlat +ellps=GRS80 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66636405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-210.502,-66.902,-48.476,2.094,15.067,5.817,0.10003843102984174 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66646405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-208.719,129.685,52.092,-0.195,0.014,-0.327,0.040840431636925086 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66656405, longlat, intl, "+proj=longlat +ellps=intl +towgs84=-103.088,162.481,-28.276,0.167,-0.082,-0.168,-0.31022226859563296 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66666405, longlat, bessel, "+proj=longlat +ellps=bessel +towgs84=631.392,-66.551,481.442,1.09,4.445,4.487,-0.9137530916746368 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 66676405, longlat, WGS84, "+proj=longlat +ellps=WGS84 +towgs84=0.0,0.0,0.0,0.0,0.0,0.0,0.0 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68016405, longlat, bessel, "+proj=longlat +ellps=bessel +pm=bern +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68026405, longlat, intl, "+proj=longlat +ellps=intl +pm=bogota +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68036405, longlat, intl, "+proj=longlat +ellps=intl +pm=lisbon +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68046405, longlat, bessel, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68056405, longlat, bessel, "+proj=longlat +ellps=bessel +pm=ferro +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68066405, longlat, intl, "+proj=longlat +ellps=intl +pm=rome +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68086405, longlat, bessel, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68096405, longlat, intl, "+proj=longlat +ellps=intl +pm=brussels +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68136405, longlat, bessel, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68146405, longlat, bessel, "+proj=longlat +ellps=bessel +pm=stockholm +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68156405, longlat, bessel, "+proj=longlat +ellps=bessel +pm=athens +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68186405, longlat, bessel, "+proj=longlat +ellps=bessel +pm=ferro +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (epsg, 68206405, longlat, bessel, "+proj=longlat +ellps=bessel +pm=jakarta +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(epsg, 69036405, longlat, 6378298.3, 6356657.142669561, "+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid +no_defs")
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+}}} // namespace boost::geometry::projections
+
+
+#endif
+
diff --git a/boost/geometry/srs/projections/esri.hpp b/boost/geometry/srs/projections/esri.hpp
new file mode 100644
index 0000000000..577da84a1d
--- /dev/null
+++ b/boost/geometry/srs/projections/esri.hpp
@@ -0,0 +1,491 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ESRI_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ESRI_HPP
+
+
+#include <boost/geometry/srs/projections/code.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+ inline std::string esri_to_string(int code)
+ {
+ static const code_element arr[] = {
+ {37001, "+proj=longlat +ellps=WGS66 +no_defs"},
+ {37002, "+proj=longlat +a=6378166 +b=6356784.283607107 +no_defs"},
+ {37003, "+proj=longlat +a=6378150 +b=6356768.337244385 +no_defs"},
+ {37004, "+proj=longlat +ellps=fschr60m +no_defs"},
+ {37005, "+proj=longlat +a=6378270 +b=6356794.343434343 +no_defs"},
+ {37006, "+proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs"},
+ {37007, "+proj=longlat +a=6376896 +b=6355834.846687363 +no_defs"},
+ {37008, "+proj=longlat +a=6370997 +b=6370997 +no_defs"},
+ {37201, "+proj=longlat +ellps=intl +no_defs"},
+ {37202, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs"},
+ {37203, "+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs"},
+ {37204, "+proj=longlat +ellps=intl +no_defs"},
+ {37205, "+proj=longlat +ellps=intl +no_defs"},
+ {37206, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {37207, "+proj=longlat +ellps=fschr60m +no_defs"},
+ {37208, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {37211, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {37212, "+proj=longlat +ellps=intl +no_defs"},
+ {37213, "+proj=longlat +ellps=intl +no_defs"},
+ {37214, "+proj=longlat +ellps=intl +no_defs"},
+ {37215, "+proj=longlat +ellps=intl +no_defs"},
+ {37216, "+proj=longlat +ellps=intl +no_defs"},
+ {37217, "+proj=longlat +ellps=intl +no_defs"},
+ {37218, "+proj=longlat +ellps=intl +no_defs"},
+ {37219, "+proj=longlat +ellps=intl +no_defs"},
+ {37220, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {37221, "+proj=longlat +ellps=intl +no_defs"},
+ {37222, "+proj=longlat +ellps=intl +no_defs"},
+ {37223, "+proj=longlat +a=6378249.2 +b=6356514.999904194 +no_defs"},
+ {37224, "+proj=longlat +ellps=intl +no_defs"},
+ {37226, "+proj=longlat +ellps=intl +no_defs"},
+ {37227, "+proj=longlat +ellps=intl +no_defs"},
+ {37228, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {37229, "+proj=longlat +a=6378270 +b=6356794.343434343 +no_defs"},
+ {37230, "+proj=longlat +ellps=intl +no_defs"},
+ {37231, "+proj=longlat +ellps=aust_SA +no_defs"},
+ {37232, "+proj=longlat +ellps=intl +no_defs"},
+ {37233, "+proj=longlat +ellps=intl +no_defs"},
+ {37234, "+proj=longlat +ellps=intl +no_defs"},
+ {37235, "+proj=longlat +ellps=intl +no_defs"},
+ {37237, "+proj=longlat +ellps=intl +no_defs"},
+ {37238, "+proj=longlat +ellps=intl +no_defs"},
+ {37239, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {37240, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {37241, "+proj=longlat +ellps=intl +no_defs"},
+ {37242, "+proj=longlat +ellps=intl +no_defs"},
+ {37243, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {37245, "+proj=longlat +ellps=intl +no_defs"},
+ {37246, "+proj=longlat +ellps=intl +no_defs"},
+ {37247, "+proj=longlat +ellps=intl +no_defs"},
+ {37249, "+proj=longlat +ellps=intl +no_defs"},
+ {37250, "+proj=longlat +ellps=intl +no_defs"},
+ {37251, "+proj=longlat +ellps=intl +no_defs"},
+ {37252, "+proj=longlat +ellps=clrk66 +no_defs"},
+ {37253, "+proj=longlat +ellps=intl +no_defs"},
+ {37254, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {37255, "+proj=longlat +ellps=bessel +no_defs"},
+ {37257, "+proj=longlat +ellps=krass +no_defs"},
+ {37259, "+proj=longlat +ellps=intl +no_defs"},
+ {37260, "+proj=longlat +ellps=clrk66 +no_defs"},
+ //{53001, ""},
+ {53002, "+proj=eqc +lat_ts=60 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53003, "+proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53004, "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53008, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53009, "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53010, "+proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ //{53011, ""},
+ {53012, "+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ //{53013, ""},
+ //{53014, ""},
+ //{53015, ""},
+ {53016, "+proj=gall +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ //{53017, ""},
+ //{53018, ""},
+ //{53019, ""},
+ {53021, "+proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ //{53022, ""},
+ //{53023, ""},
+ {53024, "+proj=bonne +lon_0=0 +lat_1=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53025, "+proj=omerc +lat_0=40 +lon_1=0 +lat_1=0 +lon_2=0 +lat_2=0 +k=1 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53026, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53027, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53028, "+proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53029, "+proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53030, "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53031, "+proj=tpeqd +lat_1=0 +lon_1=0 +lat_2=60 +lon_2=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ {53032, "+proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"},
+ //{54001, ""},
+ {54002, "+proj=eqc +lat_ts=60 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54003, "+proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54004, "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54008, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54009, "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54010, "+proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ //{54011, ""},
+ {54012, "+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ //{54013, ""},
+ //{54014, ""},
+ //{54015, ""},
+ {54016, "+proj=gall +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ //{54017, ""},
+ //{54018, ""},
+ //{54019, ""},
+ {54021, "+proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ //{54022, ""},
+ //{54023, ""},
+ {54024, "+proj=bonne +lon_0=0 +lat_1=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54025, "+proj=omerc +lat_0=40 +lon_1=0 +lat_1=0 +lon_2=0 +lat_2=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54026, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54027, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54028, "+proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54029, "+proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54030, "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54031, "+proj=tpeqd +lat_1=0 +lon_1=0 +lat_2=60 +lon_2=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {54032, "+proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {65061, "+proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000.00000000001 +y_0=50000.00000000001 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {65161, "+proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000 +y_0=50000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102001, "+proj=aea +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102002, "+proj=lcc +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102003, "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102004, "+proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102005, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102006, "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102007, "+proj=aea +lat_1=8 +lat_2=18 +lat_0=13 +lon_0=-157 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102008, "+proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102009, "+proj=lcc +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102010, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=60 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102011, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102012, "+proj=lcc +lat_1=30 +lat_2=62 +lat_0=0 +lon_0=105 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102013, "+proj=aea +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {102014, "+proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {102015, "+proj=lcc +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m +no_defs"},
+ {102016, "+proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102017, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102018, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102019, "+proj=aeqd +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102020, "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102021, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102022, "+proj=aea +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102023, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=-23 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102024, "+proj=lcc +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102025, "+proj=aea +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102026, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=15 +lat_2=65 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102027, "+proj=lcc +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102028, "+proj=aea +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102029, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=7 +lat_2=-32 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102030, "+proj=lcc +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"},
+ {102031, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=43 +lat_2=62 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {102032, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=-5 +lat_2=-42 +x_0=0 +y_0=0 +ellps=aust_SA +units=m +no_defs"},
+ {102033, "+proj=aea +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m +no_defs"},
+ {102065, "+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {102066, "+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m +no_defs"},
+ {102067, "+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {102091, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {102092, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {102101, "+proj=tmerc +lat_0=58 +lon_0=6.05625 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102102, "+proj=tmerc +lat_0=58 +lon_0=8.389583333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102103, "+proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102104, "+proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102105, "+proj=tmerc +lat_0=58 +lon_0=16.88958333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102106, "+proj=tmerc +lat_0=58 +lon_0=20.88958333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102107, "+proj=tmerc +lat_0=58 +lon_0=24.88958333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102108, "+proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102110, "+proj=lcc +lat_1=44 +lat_2=49 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m +no_defs"},
+ {102114, "+proj=utm +zone=4 +ellps=clrk66 +units=m +no_defs"},
+ {102115, "+proj=utm +zone=5 +ellps=clrk66 +units=m +no_defs"},
+ {102120, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs"},
+ {102121, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102122, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=clrk66 +datum=NAD27 +units=m +no_defs"},
+ {102123, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"},
+ {102132, "+proj=utm +zone=32 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102133, "+proj=utm +zone=33 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102134, "+proj=utm +zone=34 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102135, "+proj=utm +zone=35 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs"},
+ {102140, "+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +units=m +no_defs"},
+ {102141, "+proj=utm +zone=49 +ellps=intl +units=m +no_defs"},
+ {102142, "+proj=utm +zone=50 +ellps=intl +units=m +no_defs"},
+ {102151, "+proj=utm +zone=51 +ellps=bessel +units=m +no_defs"},
+ {102152, "+proj=utm +zone=52 +ellps=bessel +units=m +no_defs"},
+ {102153, "+proj=utm +zone=53 +ellps=bessel +units=m +no_defs"},
+ {102154, "+proj=utm +zone=54 +ellps=bessel +units=m +no_defs"},
+ {102155, "+proj=utm +zone=55 +ellps=bessel +units=m +no_defs"},
+ {102156, "+proj=utm +zone=56 +ellps=bessel +units=m +no_defs"},
+ {102160, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=200180.598 +y_0=299913.01 +ellps=intl +units=m +no_defs"},
+ {102161, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs"},
+ {102162, "+proj=utm +zone=26 +ellps=intl +units=m +no_defs"},
+ {102163, "+proj=bonne +lon_0=-8.131906111111112 +lat_1=39.66666666666666 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs"},
+ {102164, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +units=m +no_defs"},
+ {102165, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs"},
+ {102166, "+proj=utm +zone=25 +ellps=intl +units=m +no_defs"},
+ {102167, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs"},
+ {102168, "+proj=utm +zone=26 +ellps=intl +units=m +no_defs"},
+ {102169, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs"},
+ {102191, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs"},
+ {102192, "+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs"},
+ {102193, "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs"},
+ {102229, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102230, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.9999333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102241, "+proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {102242, "+proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {102243, "+proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {102244, "+proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {102245, "+proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {102246, "+proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {102248, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102249, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102250, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333333333333 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102251, "+proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102252, "+proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs"},
+ {102253, "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs"},
+ {102254, "+proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs"},
+ {102255, "+proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs"},
+ {102256, "+proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m +no_defs"},
+ {102257, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102258, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411764705882 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102259, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411764705882 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102260, "+proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102261, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.9999666666666667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102262, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.9999666666666667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102263, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102264, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102265, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102266, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102267, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102268, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473684210526 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102269, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473684210526 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102270, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333333333333 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102271, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102272, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.9999411764705882 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102273, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9999666666666667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m +no_defs"},
+ {102274, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9999666666666667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m +no_defs"},
+ {102277, "+proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102278, "+proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs"},
+ {102279, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102280, "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"},
+ {102281, "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102282, "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102283, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102284, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.9999666666666667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102285, "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102286, "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m +no_defs"},
+ {102287, "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102288, "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102289, "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102290, "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102291, "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {102292, "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {102293, "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {102294, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102295, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102296, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9999333333333333 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102297, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9999333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102298, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9999411764705882 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102300, "+proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102304, "+proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102307, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m +no_defs"},
+ {102308, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs"},
+ {102309, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs"},
+ {102310, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9999666666666667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102311, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102312, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.9999090909090909 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102313, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102314, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.9999166666666667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102315, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102316, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102317, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102318, "+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102320, "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102321, "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102322, "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102323, "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102324, "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102325, "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102326, "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102327, "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102330, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102334, "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102335, "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102336, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102337, "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs"},
+ {102338, "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs"},
+ {102339, "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs"},
+ {102340, "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs"},
+ {102341, "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs"},
+ {102342, "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs"},
+ {102343, "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs"},
+ {102344, "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs"},
+ {102345, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.9999642857142857 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102346, "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs"},
+ {102347, "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs"},
+ {102348, "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102349, "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102350, "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102351, "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102352, "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102353, "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102354, "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102355, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102356, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {102357, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"},
+ {102358, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs"},
+ {102361, "+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs"},
+ {102491, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs"},
+ {102492, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs"},
+ {102581, "+proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=2.337229166666667 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs"},
+ {102582, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs"},
+ {102583, "+proj=lcc +lat_1=44.1 +lat_0=44.1 +lon_0=2.337229166666667 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs"},
+ {102584, "+proj=lcc +lat_1=42.165 +lat_0=42.165 +lon_0=2.337229166666667 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs"},
+ {102591, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs"},
+ {102592, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs"},
+ {102629, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102630, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.9999333333333333 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102631, "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=-36.86989764583333 +k=0.9999 +x_0=4999999.999999999 +y_0=-4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102632, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102633, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102634, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102635, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102636, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102637, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102638, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102639, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102640, "+proj=lcc +lat_1=51.83333333333334 +lat_2=53.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102641, "+proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102642, "+proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102643, "+proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102644, "+proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102645, "+proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102646, "+proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102648, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102649, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102650, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333333333333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102651, "+proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102652, "+proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102653, "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102654, "+proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102655, "+proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102656, "+proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102657, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102658, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411764705882 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102659, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411764705882 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102660, "+proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102661, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.9999666666666667 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102662, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.9999666666666667 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102663, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102664, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102665, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102666, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102667, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102668, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473684210526 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102669, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473684210526 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102670, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333333333333 +x_0=799999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102671, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102672, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.9999411764705882 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102673, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9999666666666667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102674, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9999666666666667 +x_0=900000.0000000001 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102675, "+proj=lcc +lat_1=42.06666666666667 +lat_2=43.26666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102676, "+proj=lcc +lat_1=40.61666666666667 +lat_2=41.78333333333333 +lat_0=40 +lon_0=-93.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102677, "+proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102678, "+proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102679, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102680, "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0000000002 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102681, "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102682, "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102683, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102684, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.9999666666666667 +x_0=900000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102685, "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102686, "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102687, "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102688, "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102689, "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000.000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102690, "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102691, "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102692, "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102693, "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102694, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102695, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102696, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9999333333333333 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102697, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9999333333333333 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102698, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9999411764705882 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102700, "+proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102704, "+proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102707, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=7999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102708, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.0000000002 +y_0=6000000.000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102709, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=799999.9999999999 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102710, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9999666666666667 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102711, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102712, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.9999090909090909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102713, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102714, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.9999166666666667 +x_0=829999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102715, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102716, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102717, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102718, "+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102719, "+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2199999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102720, "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102721, "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102722, "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102723, "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102724, "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102725, "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102726, "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102727, "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102728, "+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102729, "+proj=lcc +lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102730, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102733, "+proj=lcc +lat_1=32.5 +lat_2=34.83333333333334 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102734, "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102735, "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102736, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102737, "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102738, "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000.0000000001 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102739, "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102740, "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000.0000000001 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102741, "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102742, "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102743, "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102744, "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102745, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.9999642857142857 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102746, "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102747, "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102748, "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102749, "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102750, "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102751, "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102752, "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102753, "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102754, "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102755, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102756, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102757, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102758, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102761, "+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {102766, "+proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=49999.99999999999 +y_0=49999.99999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"},
+ {103300, "+proj=lcc +lat_1=49.8333339 +lat_2=51.16666733333333 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +units=m +no_defs"},
+ {104000, "+proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs"},
+ {104101, "+proj=longlat +ellps=bessel +no_defs"},
+ {104102, "+proj=longlat +ellps=bessel +no_defs"},
+ {104103, "+proj=longlat +ellps=clrk80 +no_defs"},
+ {104104, "+proj=longlat +ellps=intl +no_defs"},
+ {104105, "+proj=longlat +ellps=bessel +no_defs"},
+ {104106, "+proj=longlat +ellps=intl +no_defs"},
+ {104107, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {104108, "+proj=longlat +ellps=GRS80 +no_defs"},
+ {104261, "+proj=longlat +a=6378249.2 +b=6356514.999904194 +no_defs"},
+ {104304, "+proj=longlat +a=6378249.2 +b=6356514.999904194 +no_defs"},
+ {104305, "+proj=longlat +ellps=clrk80 +no_defs"}
+ };
+
+ const code_element * first = arr;
+ const code_element * last = arr + sizeof(arr) / sizeof(code_element);
+ const code_element * el = binary_find_code_element(first, last, code);
+
+ return el != last ? el->proj4_str : "";
+ }
+
+}
+#endif // DOXYGEN_NO_DETAIL
+
+
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/esri_params.hpp b/boost/geometry/srs/projections/esri_params.hpp
new file mode 100644
index 0000000000..01673092f8
--- /dev/null
+++ b/boost/geometry/srs/projections/esri_params.hpp
@@ -0,0 +1,48 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_ESRI_PARAMS_HPP
+#define BOOST_GEOMETRY_SRS_PROJECTIONS_ESRI_PARAMS_HPP
+
+
+#include <string>
+
+#include <boost/geometry/srs/spheroid.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs
+{
+
+
+struct esri
+{
+ explicit esri(int c)
+ : code(c)
+ {}
+
+ int code;
+};
+
+
+template <int Code>
+struct static_esri
+{
+ static const int code = Code;
+};
+
+
+} // namespace srs
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_ESRI_PARAMS_HPP
diff --git a/boost/geometry/srs/projections/esri_traits.hpp b/boost/geometry/srs/projections/esri_traits.hpp
new file mode 100644
index 0000000000..961bd3695f
--- /dev/null
+++ b/boost/geometry/srs/projections/esri_traits.hpp
@@ -0,0 +1,499 @@
+// Boost.Geometry
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ESRI_TRAITS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ESRI_TRAITS_HPP
+
+
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/srs/projections/factory.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/srid_traits.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+/*!
+ \brief ESRI traits
+ \details With help of the ESRI traits library users can statically use projections
+ or coordinate systems specifying an ESRI code. The correct projections for transformations
+ are used automically then, still keeping static polymorphism.
+ \ingroup projection
+ \tparam ESRI esri code
+*/
+template <size_t ESRI>
+struct esri_traits
+{
+ // Specializations define:
+ // - type to get projection type
+ // - function par to get parameters
+};
+
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37001, longlat, WGS66, "+proj=longlat +ellps=WGS66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 37002, longlat, 6378166, 6356784.283607107, "+proj=longlat +a=6378166 +b=6356784.283607107 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 37003, longlat, 6378150, 6356768.337244385, "+proj=longlat +a=6378150 +b=6356768.337244385 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37004, longlat, fschr60m, "+proj=longlat +ellps=fschr60m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 37005, longlat, 6378270, 6356794.343434343, "+proj=longlat +a=6378270 +b=6356794.343434343 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 37006, longlat, 6377295.664, 6356094.667915204, "+proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 37007, longlat, 6376896, 6355834.846687363, "+proj=longlat +a=6376896 +b=6355834.846687363 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 37008, longlat, 6370997, "+proj=longlat +a=6370997 +b=6370997 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37201, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 37202, longlat, 6377276.345, 6356075.41314024, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 37203, longlat, 6377301.243, 6356100.230165384, "+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37204, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37205, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37206, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37207, longlat, fschr60m, "+proj=longlat +ellps=fschr60m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37208, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37211, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37212, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37213, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37214, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37215, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37216, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37217, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37218, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37219, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37220, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37221, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37222, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 37223, longlat, 6378249.2, 6356514.999904194, "+proj=longlat +a=6378249.2 +b=6356514.999904194 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37224, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37226, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37227, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37228, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 37229, longlat, 6378270, 6356794.343434343, "+proj=longlat +a=6378270 +b=6356794.343434343 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37230, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37231, longlat, aust_SA, "+proj=longlat +ellps=aust_SA +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37232, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37233, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37234, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37235, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37237, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37238, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37239, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37240, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37241, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37242, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37243, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37245, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37246, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37247, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37249, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37250, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37251, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37252, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37253, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37254, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37255, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37257, longlat, krass, "+proj=longlat +ellps=krass +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37259, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 37260, longlat, clrk66, "+proj=longlat +ellps=clrk66 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53001, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53002, eqc, 6371000, "+proj=eqc +lat_ts=60 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53003, mill, 6371000, "+proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53004, merc, 6371000, "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53008, sinu, 6371000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53009, moll, 6371000, "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53010, eck6, 6371000, "+proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53011, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53012, eck4, 6371000, "+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53013, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53014, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53015, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53016, gall, 6371000, "+proj=gall +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53017, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53018, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53019, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53021, poly, 6371000, "+proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53022, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 53023, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53024, bonne, 6371000, "+proj=bonne +lon_0=0 +lat_1=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53025, omerc, 6371000, "+proj=omerc +lat_0=40 +lon_1=0 +lat_1=0 +lon_2=0 +lat_2=0 +k=1 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53026, stere, 6371000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53027, eqdc, 6371000, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53028, cass, 6371000, "+proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53029, vandg, 6371000, "+proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53030, robin, 6371000, "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53031, tpeqd, 6371000, "+proj=tpeqd +lat_1=0 +lon_1=0 +lat_2=60 +lon_2=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 53032, aeqd, 6371000, "+proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54001, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54002, eqc, WGS84, WGS84, "+proj=eqc +lat_ts=60 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 54003, mill, 6371007.1810824294, "+proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54004, merc, WGS84, WGS84, "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54008, sinu, WGS84, WGS84, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54009, moll, WGS84, WGS84, "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54010, eck6, WGS84, WGS84, "+proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54011, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54012, eck4, WGS84, WGS84, "+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54013, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54014, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54015, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54016, gall, WGS84, WGS84, "+proj=gall +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54017, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54018, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54019, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54021, poly, WGS84, WGS84, "+proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54022, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (esri, 54023, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54024, bonne, WGS84, WGS84, "+proj=bonne +lon_0=0 +lat_1=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54025, omerc, WGS84, WGS84, "+proj=omerc +lat_0=40 +lon_1=0 +lat_1=0 +lon_2=0 +lat_2=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54026, stere, WGS84, WGS84, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54027, eqdc, WGS84, WGS84, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54028, cass, WGS84, WGS84, "+proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (esri, 54029, vandg, 6371007.1810824294, "+proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54030, robin, WGS84, WGS84, "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54031, tpeqd, WGS84, WGS84, "+proj=tpeqd +lat_1=0 +lon_1=0 +lat_2=60 +lon_2=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 54032, aeqd, WGS84, WGS84, "+proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 65061, poly, clrk66, NAD27, "+proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000.00000000001 +y_0=50000.00000000001 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 65161, poly, GRS80, NAD83, "+proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000 +y_0=50000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102001, aea, GRS80, NAD83, "+proj=aea +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102002, lcc, GRS80, NAD83, "+proj=lcc +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102003, aea, GRS80, NAD83, "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102004, lcc, GRS80, NAD83, "+proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102005, eqdc, GRS80, NAD83, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102006, aea, GRS80, NAD83, "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102007, aea, GRS80, NAD83, "+proj=aea +lat_1=8 +lat_2=18 +lat_0=13 +lon_0=-157 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102008, aea, GRS80, NAD83, "+proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102009, lcc, GRS80, NAD83, "+proj=lcc +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102010, eqdc, GRS80, NAD83, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=60 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102011, sinu, WGS84, WGS84, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102012, lcc, WGS84, WGS84, "+proj=lcc +lat_1=30 +lat_2=62 +lat_0=0 +lon_0=105 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102013, aea, intl, "+proj=aea +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102014, lcc, intl, "+proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102015, lcc, aust_SA, "+proj=lcc +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102016, aeqd, WGS84, WGS84, "+proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102017, laea, WGS84, WGS84, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102018, stere, WGS84, WGS84, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102019, aeqd, WGS84, WGS84, "+proj=aeqd +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102020, laea, WGS84, WGS84, "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102021, stere, WGS84, WGS84, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102022, aea, WGS84, WGS84, "+proj=aea +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102023, eqdc, WGS84, WGS84, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=-23 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102024, lcc, WGS84, WGS84, "+proj=lcc +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102025, aea, WGS84, WGS84, "+proj=aea +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102026, eqdc, WGS84, WGS84, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=15 +lat_2=65 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102027, lcc, WGS84, WGS84, "+proj=lcc +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102028, aea, WGS84, WGS84, "+proj=aea +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102029, eqdc, WGS84, WGS84, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=7 +lat_2=-32 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102030, lcc, WGS84, WGS84, "+proj=lcc +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102031, eqdc, intl, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=43 +lat_2=62 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102032, eqdc, aust_SA, "+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=-5 +lat_2=-42 +x_0=0 +y_0=0 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102033, aea, aust_SA, "+proj=aea +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102065, krovak, bessel, "+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102066, krovak, bessel, "+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102067, krovak, bessel, "+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102091, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102092, tmerc, intl, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102101, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=6.05625 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102102, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=8.389583333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102103, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102104, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102105, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=16.88958333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102106, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=20.88958333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102107, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=24.88958333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102108, tmerc, 6377492.018, 6356173.508712696, "+proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102110, lcc, GRS80, "+proj=lcc +lat_1=44 +lat_2=49 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102114, utm, clrk66, "+proj=utm +zone=4 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102115, utm, clrk66, "+proj=utm +zone=5 +ellps=clrk66 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102120, omerc, clrk66, NAD27, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102121, omerc, GRS80, NAD83, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102122, omerc, clrk66, NAD27, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=clrk66 +datum=NAD27 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102123, omerc, GRS80, NAD83, "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102132, utm, 6377492.018, 6356173.508712696, "+proj=utm +zone=32 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102133, utm, 6377492.018, 6356173.508712696, "+proj=utm +zone=33 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102134, utm, 6377492.018, 6356173.508712696, "+proj=utm +zone=34 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102135, utm, 6377492.018, 6356173.508712696, "+proj=utm +zone=35 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102140, tmerc, intl, "+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102141, utm, intl, "+proj=utm +zone=49 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102142, utm, intl, "+proj=utm +zone=50 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102151, utm, bessel, "+proj=utm +zone=51 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102152, utm, bessel, "+proj=utm +zone=52 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102153, utm, bessel, "+proj=utm +zone=53 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102154, utm, bessel, "+proj=utm +zone=54 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102155, utm, bessel, "+proj=utm +zone=55 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102156, utm, bessel, "+proj=utm +zone=56 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102160, tmerc, intl, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=200180.598 +y_0=299913.01 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102161, tmerc, intl, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102162, utm, intl, "+proj=utm +zone=26 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102163, bonne, bessel, "+proj=bonne +lon_0=-8.131906111111112 +lat_1=39.66666666666666 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102164, tmerc, intl, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102165, tmerc, intl, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102166, utm, intl, "+proj=utm +zone=25 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102167, utm, intl, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102168, utm, intl, "+proj=utm +zone=26 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102169, utm, intl, "+proj=utm +zone=28 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102191, lcc, 6378249.2, 6356514.999904194, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102192, lcc, 6378249.2, 6356514.999904194, "+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102193, lcc, 6378249.2, 6356514.999904194, "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102229, tmerc, GRS80, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102230, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.9999333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102241, lcc, GRS80, "+proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102242, lcc, GRS80, "+proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102243, lcc, GRS80, "+proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102244, lcc, GRS80, "+proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102245, lcc, GRS80, "+proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102246, lcc, GRS80, "+proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102248, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102249, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102250, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333333333333 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102251, lcc, GRS80, "+proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102252, lcc, GRS80, "+proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102253, lcc, GRS80, "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102254, lcc, GRS80, "+proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102255, lcc, GRS80, "+proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102256, lcc, GRS80, "+proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102257, tmerc, GRS80, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102258, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411764705882 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102259, tmerc, GRS80, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411764705882 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102260, lcc, GRS80, "+proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102261, tmerc, GRS80, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.9999666666666667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102262, tmerc, GRS80, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.9999666666666667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102263, tmerc, GRS80, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102264, tmerc, GRS80, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102265, tmerc, GRS80, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102266, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102267, tmerc, GRS80, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102268, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473684210526 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102269, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473684210526 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102270, tmerc, GRS80, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333333333333 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102271, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102272, tmerc, GRS80, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.9999411764705882 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102273, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9999666666666667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102274, tmerc, GRS80, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9999666666666667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102277, lcc, GRS80, "+proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102278, lcc, GRS80, "+proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102279, lcc, GRS80, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102280, lcc, GRS80, "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102281, lcc, GRS80, "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102282, lcc, GRS80, "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102283, tmerc, GRS80, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102284, tmerc, GRS80, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.9999666666666667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102285, lcc, GRS80, "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102286, lcc, GRS80, "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102287, lcc, GRS80, "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102288, lcc, GRS80, "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102289, lcc, GRS80, "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102290, lcc, GRS80, "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102291, lcc, GRS80, "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102292, lcc, GRS80, "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102293, lcc, GRS80, "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102294, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102295, tmerc, GRS80, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102296, tmerc, GRS80, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9999333333333333 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102297, tmerc, GRS80, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9999333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102298, tmerc, GRS80, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9999411764705882 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102300, lcc, GRS80, "+proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102304, lcc, GRS80, "+proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102307, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102308, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102309, tmerc, GRS80, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102310, tmerc, GRS80, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9999666666666667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102311, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102312, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.9999090909090909 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102313, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102314, tmerc, GRS80, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.9999166666666667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102315, tmerc, GRS80, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102316, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102317, tmerc, GRS80, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102318, lcc, GRS80, "+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102320, lcc, GRS80, "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102321, lcc, GRS80, "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102322, lcc, GRS80, "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102323, lcc, GRS80, "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102324, lcc, GRS80, "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102325, lcc, GRS80, "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102326, lcc, GRS80, "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102327, lcc, GRS80, "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102330, tmerc, GRS80, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102334, lcc, GRS80, "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102335, lcc, GRS80, "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102336, lcc, GRS80, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102337, lcc, GRS80, "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102338, lcc, GRS80, "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102339, lcc, GRS80, "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102340, lcc, GRS80, "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102341, lcc, GRS80, "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102342, lcc, GRS80, "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102343, lcc, GRS80, "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102344, lcc, GRS80, "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102345, tmerc, GRS80, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.9999642857142857 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102346, lcc, GRS80, "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102347, lcc, GRS80, "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102348, lcc, GRS80, "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102349, lcc, GRS80, "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102350, lcc, GRS80, "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102351, lcc, GRS80, "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102352, lcc, GRS80, "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102353, lcc, GRS80, "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102354, lcc, GRS80, "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102355, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102356, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102357, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102358, tmerc, GRS80, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102361, lcc, GRS80, "+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102491, lcc, 6378249.2, 6356514.999904194, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102492, lcc, 6378249.2, 6356514.999904194, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102581, lcc, 6378249.2, 6356514.999904194, "+proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=2.337229166666667 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102582, lcc, 6378249.2, 6356514.999904194, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102583, lcc, 6378249.2, 6356514.999904194, "+proj=lcc +lat_1=44.1 +lat_0=44.1 +lon_0=2.337229166666667 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 102584, lcc, 6378249.2, 6356514.999904194, "+proj=lcc +lat_1=42.165 +lat_0=42.165 +lon_0=2.337229166666667 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102591, lcc, clrk80, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 102592, lcc, clrk80, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102629, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102630, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.9999333333333333 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102631, omerc, GRS80, NAD83, "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=-36.86989764583333 +k=0.9999 +x_0=4999999.999999999 +y_0=-4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102632, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102633, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102634, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102635, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102636, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102637, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102638, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102639, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102640, lcc, GRS80, NAD83, "+proj=lcc +lat_1=51.83333333333334 +lat_2=53.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102641, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102642, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102643, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102644, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102645, lcc, GRS80, NAD83, "+proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102646, lcc, GRS80, NAD83, "+proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102648, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102649, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102650, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333333333333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102651, lcc, GRS80, NAD83, "+proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102652, lcc, GRS80, NAD83, "+proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102653, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102654, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102655, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102656, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102657, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102658, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411764705882 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102659, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411764705882 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102660, lcc, GRS80, NAD83, "+proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102661, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.9999666666666667 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102662, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.9999666666666667 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102663, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102664, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102665, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102666, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102667, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102668, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473684210526 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102669, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473684210526 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102670, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333333333333 +x_0=799999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102671, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102672, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.9999411764705882 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102673, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9999666666666667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102674, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9999666666666667 +x_0=900000.0000000001 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102675, lcc, GRS80, NAD83, "+proj=lcc +lat_1=42.06666666666667 +lat_2=43.26666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102676, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.61666666666667 +lat_2=41.78333333333333 +lat_0=40 +lon_0=-93.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102677, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102678, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102679, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102680, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0000000002 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102681, lcc, GRS80, NAD83, "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102682, lcc, GRS80, NAD83, "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102683, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102684, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.9999666666666667 +x_0=900000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102685, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102686, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102687, lcc, GRS80, NAD83, "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102688, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102689, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000.000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102690, lcc, GRS80, NAD83, "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102691, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102692, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102693, lcc, GRS80, NAD83, "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102694, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102695, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102696, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9999333333333333 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102697, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9999333333333333 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102698, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9999411764705882 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102700, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102704, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102707, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=7999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102708, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.0000000002 +y_0=6000000.000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102709, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=799999.9999999999 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102710, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9999666666666667 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102711, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102712, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.9999090909090909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102713, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102714, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.9999166666666667 +x_0=829999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102715, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102716, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102717, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102718, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102719, lcc, GRS80, NAD83, "+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2199999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102720, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102721, lcc, GRS80, NAD83, "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102722, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102723, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102724, lcc, GRS80, NAD83, "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102725, lcc, GRS80, NAD83, "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102726, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102727, lcc, GRS80, NAD83, "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102728, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102729, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102730, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102733, lcc, GRS80, NAD83, "+proj=lcc +lat_1=32.5 +lat_2=34.83333333333334 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102734, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102735, lcc, GRS80, NAD83, "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102736, lcc, GRS80, NAD83, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102737, lcc, GRS80, NAD83, "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102738, lcc, GRS80, NAD83, "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000.0000000001 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102739, lcc, GRS80, NAD83, "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102740, lcc, GRS80, NAD83, "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000.0000000001 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102741, lcc, GRS80, NAD83, "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102742, lcc, GRS80, NAD83, "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102743, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102744, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102745, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.9999642857142857 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102746, lcc, GRS80, NAD83, "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102747, lcc, GRS80, NAD83, "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102748, lcc, GRS80, NAD83, "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102749, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102750, lcc, GRS80, NAD83, "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102751, lcc, GRS80, NAD83, "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102752, lcc, GRS80, NAD83, "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102753, lcc, GRS80, NAD83, "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102754, lcc, GRS80, NAD83, "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102755, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102756, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102757, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102758, tmerc, GRS80, NAD83, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102761, lcc, GRS80, NAD83, "+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 102766, poly, GRS80, NAD83, "+proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=49999.99999999999 +y_0=49999.99999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 103300, lcc, intl, "+proj=lcc +lat_1=49.8333339 +lat_2=51.16666733333333 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(esri, 104000, longlat, clrk66, NAD27, "+proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 104101, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 104102, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 104103, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 104104, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 104105, longlat, bessel, "+proj=longlat +ellps=bessel +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 104106, longlat, intl, "+proj=longlat +ellps=intl +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 104107, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 104108, longlat, GRS80, "+proj=longlat +ellps=GRS80 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 104261, longlat, 6378249.2, 6356514.999904194, "+proj=longlat +a=6378249.2 +b=6356514.999904194 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(esri, 104304, longlat, 6378249.2, 6356514.999904194, "+proj=longlat +a=6378249.2 +b=6356514.999904194 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E (esri, 104305, longlat, clrk80, "+proj=longlat +ellps=clrk80 +no_defs")
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+}}} // namespace boost::geometry::projections
+
+
+#endif
+
diff --git a/boost/geometry/srs/projections/exception.hpp b/boost/geometry/srs/projections/exception.hpp
new file mode 100644
index 0000000000..222207024e
--- /dev/null
+++ b/boost/geometry/srs/projections/exception.hpp
@@ -0,0 +1,97 @@
+// Boost.Geometry
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_EXCEPTION_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_EXCEPTION_HPP
+
+
+#include <boost/geometry/core/exception.hpp>
+#include <boost/geometry/srs/projections/impl/pj_strerrno.hpp>
+
+#include <boost/throw_exception.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+
+// TODO: make more for forward/inverse/init/setup
+class projection_exception : public geometry::exception
+{
+public:
+ explicit projection_exception(int code = 0)
+ : m_code(code)
+ , m_msg(projections::detail::pj_strerrno(code))
+ {}
+
+ explicit projection_exception(std::string const& msg)
+ : m_code(0)
+ , m_msg(msg)
+ {}
+
+ projection_exception(int code, std::string const& msg)
+ : m_code(code)
+ , m_msg(msg)
+ {}
+
+ virtual char const* what() const throw()
+ {
+ //return "Boost.Geometry Projection exception";
+ return m_msg.what();
+ }
+
+ int code() const { return m_code; }
+private :
+ int m_code;
+ std::runtime_error m_msg;
+};
+
+
+struct projection_not_named_exception
+ : projection_exception
+{
+ projection_not_named_exception()
+ : projection_exception(-4)
+ {}
+};
+
+struct projection_unknown_id_exception
+ : projection_exception
+{
+ projection_unknown_id_exception(std::string const& proj_name)
+ : projection_exception(-5, msg(proj_name))
+ {}
+
+private:
+ static std::string msg(std::string const& proj_name)
+ {
+ return projections::detail::pj_strerrno(-5) + " (" + proj_name + ")";
+ }
+};
+
+struct projection_not_invertible_exception
+ : projection_exception
+{
+ projection_not_invertible_exception(std::string const& proj_name)
+ : projection_exception(-17, msg(proj_name))
+ {}
+
+private:
+ static std::string msg(std::string const& proj_name)
+ {
+ return std::string("projection (") + proj_name + ") is not invertible";
+ }
+};
+
+
+}} // namespace boost::geometry
+#endif // BOOST_GEOMETRY_PROJECTIONS_EXCEPTION_HPP
diff --git a/boost/geometry/srs/projections/factory.hpp b/boost/geometry/srs/projections/factory.hpp
new file mode 100644
index 0000000000..b94d8395ac
--- /dev/null
+++ b/boost/geometry/srs/projections/factory.hpp
@@ -0,0 +1,282 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_FACTORY_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_FACTORY_HPP
+
+#include <map>
+#include <string>
+
+#include <boost/shared_ptr.hpp>
+
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/proj/aea.hpp>
+#include <boost/geometry/srs/projections/proj/aeqd.hpp>
+#include <boost/geometry/srs/projections/proj/airy.hpp>
+#include <boost/geometry/srs/projections/proj/aitoff.hpp>
+#include <boost/geometry/srs/projections/proj/august.hpp>
+#include <boost/geometry/srs/projections/proj/bacon.hpp>
+#include <boost/geometry/srs/projections/proj/bipc.hpp>
+#include <boost/geometry/srs/projections/proj/boggs.hpp>
+#include <boost/geometry/srs/projections/proj/bonne.hpp>
+#include <boost/geometry/srs/projections/proj/cass.hpp>
+#include <boost/geometry/srs/projections/proj/cc.hpp>
+#include <boost/geometry/srs/projections/proj/cea.hpp>
+#include <boost/geometry/srs/projections/proj/chamb.hpp>
+#include <boost/geometry/srs/projections/proj/collg.hpp>
+#include <boost/geometry/srs/projections/proj/crast.hpp>
+#include <boost/geometry/srs/projections/proj/denoy.hpp>
+#include <boost/geometry/srs/projections/proj/eck1.hpp>
+#include <boost/geometry/srs/projections/proj/eck2.hpp>
+#include <boost/geometry/srs/projections/proj/eck3.hpp>
+#include <boost/geometry/srs/projections/proj/eck4.hpp>
+#include <boost/geometry/srs/projections/proj/eck5.hpp>
+#include <boost/geometry/srs/projections/proj/eqc.hpp>
+#include <boost/geometry/srs/projections/proj/eqdc.hpp>
+#include <boost/geometry/srs/projections/proj/etmerc.hpp>
+#include <boost/geometry/srs/projections/proj/fahey.hpp>
+#include <boost/geometry/srs/projections/proj/fouc_s.hpp>
+#include <boost/geometry/srs/projections/proj/gall.hpp>
+#include <boost/geometry/srs/projections/proj/geocent.hpp>
+#include <boost/geometry/srs/projections/proj/geos.hpp>
+#include <boost/geometry/srs/projections/proj/gins8.hpp>
+#include <boost/geometry/srs/projections/proj/gn_sinu.hpp>
+#include <boost/geometry/srs/projections/proj/gnom.hpp>
+#include <boost/geometry/srs/projections/proj/goode.hpp>
+#include <boost/geometry/srs/projections/proj/gstmerc.hpp>
+#include <boost/geometry/srs/projections/proj/hammer.hpp>
+#include <boost/geometry/srs/projections/proj/hatano.hpp>
+#include <boost/geometry/srs/projections/proj/healpix.hpp>
+#include <boost/geometry/srs/projections/proj/krovak.hpp>
+#include <boost/geometry/srs/projections/proj/igh.hpp>
+#include <boost/geometry/srs/projections/proj/imw_p.hpp>
+#include <boost/geometry/srs/projections/proj/isea.hpp>
+#include <boost/geometry/srs/projections/proj/laea.hpp>
+#include <boost/geometry/srs/projections/proj/labrd.hpp>
+#include <boost/geometry/srs/projections/proj/lagrng.hpp>
+#include <boost/geometry/srs/projections/proj/larr.hpp>
+#include <boost/geometry/srs/projections/proj/lask.hpp>
+#include <boost/geometry/srs/projections/proj/latlong.hpp>
+#include <boost/geometry/srs/projections/proj/lcc.hpp>
+#include <boost/geometry/srs/projections/proj/lcca.hpp>
+#include <boost/geometry/srs/projections/proj/loxim.hpp>
+#include <boost/geometry/srs/projections/proj/lsat.hpp>
+#include <boost/geometry/srs/projections/proj/mbtfpp.hpp>
+#include <boost/geometry/srs/projections/proj/mbtfpq.hpp>
+#include <boost/geometry/srs/projections/proj/mbt_fps.hpp>
+#include <boost/geometry/srs/projections/proj/merc.hpp>
+#include <boost/geometry/srs/projections/proj/mill.hpp>
+#include <boost/geometry/srs/projections/proj/mod_ster.hpp>
+#include <boost/geometry/srs/projections/proj/moll.hpp>
+#include <boost/geometry/srs/projections/proj/natearth.hpp>
+#include <boost/geometry/srs/projections/proj/nell.hpp>
+#include <boost/geometry/srs/projections/proj/nell_h.hpp>
+#include <boost/geometry/srs/projections/proj/nocol.hpp>
+#include <boost/geometry/srs/projections/proj/nsper.hpp>
+#include <boost/geometry/srs/projections/proj/nzmg.hpp>
+#include <boost/geometry/srs/projections/proj/ob_tran.hpp>
+#include <boost/geometry/srs/projections/proj/ocea.hpp>
+#include <boost/geometry/srs/projections/proj/oea.hpp>
+#include <boost/geometry/srs/projections/proj/omerc.hpp>
+#include <boost/geometry/srs/projections/proj/ortho.hpp>
+#include <boost/geometry/srs/projections/proj/qsc.hpp>
+#include <boost/geometry/srs/projections/proj/poly.hpp>
+#include <boost/geometry/srs/projections/proj/putp2.hpp>
+#include <boost/geometry/srs/projections/proj/putp3.hpp>
+#include <boost/geometry/srs/projections/proj/putp4p.hpp>
+#include <boost/geometry/srs/projections/proj/putp5.hpp>
+#include <boost/geometry/srs/projections/proj/putp6.hpp>
+#include <boost/geometry/srs/projections/proj/robin.hpp>
+#include <boost/geometry/srs/projections/proj/rouss.hpp>
+#include <boost/geometry/srs/projections/proj/rpoly.hpp>
+#include <boost/geometry/srs/projections/proj/sconics.hpp>
+#include <boost/geometry/srs/projections/proj/somerc.hpp>
+#include <boost/geometry/srs/projections/proj/stere.hpp>
+#include <boost/geometry/srs/projections/proj/sterea.hpp>
+#include <boost/geometry/srs/projections/proj/sts.hpp>
+#include <boost/geometry/srs/projections/proj/tcc.hpp>
+#include <boost/geometry/srs/projections/proj/tcea.hpp>
+#include <boost/geometry/srs/projections/proj/tmerc.hpp>
+#include <boost/geometry/srs/projections/proj/tpeqd.hpp>
+#include <boost/geometry/srs/projections/proj/urm5.hpp>
+#include <boost/geometry/srs/projections/proj/urmfps.hpp>
+#include <boost/geometry/srs/projections/proj/vandg.hpp>
+#include <boost/geometry/srs/projections/proj/vandg2.hpp>
+#include <boost/geometry/srs/projections/proj/vandg4.hpp>
+#include <boost/geometry/srs/projections/proj/wag2.hpp>
+#include <boost/geometry/srs/projections/proj/wag3.hpp>
+#include <boost/geometry/srs/projections/proj/wag7.hpp>
+#include <boost/geometry/srs/projections/proj/wink1.hpp>
+#include <boost/geometry/srs/projections/proj/wink2.hpp>
+
+namespace boost { namespace geometry { namespace projections
+{
+
+namespace detail
+{
+
+template <typename CT, typename Parameters>
+class factory : public detail::base_factory<CT, Parameters>
+{
+private:
+
+ typedef std::map
+ <
+ std::string,
+ boost::shared_ptr
+ <
+ detail::factory_entry
+ <
+ CT,
+ Parameters
+ >
+ >
+ > prj_registry;
+ prj_registry m_registry;
+
+public:
+
+ factory()
+ {
+ detail::aea_init(*this);
+ detail::aeqd_init(*this);
+ detail::airy_init(*this);
+ detail::aitoff_init(*this);
+ detail::august_init(*this);
+ detail::bacon_init(*this);
+ detail::bipc_init(*this);
+ detail::boggs_init(*this);
+ detail::bonne_init(*this);
+ detail::cass_init(*this);
+ detail::cc_init(*this);
+ detail::cea_init(*this);
+ detail::chamb_init(*this);
+ detail::collg_init(*this);
+ detail::crast_init(*this);
+ detail::denoy_init(*this);
+ detail::eck1_init(*this);
+ detail::eck2_init(*this);
+ detail::eck3_init(*this);
+ detail::eck4_init(*this);
+ detail::eck5_init(*this);
+ detail::eqc_init(*this);
+ detail::eqdc_init(*this);
+ detail::etmerc_init(*this);
+ detail::fahey_init(*this);
+ detail::fouc_s_init(*this);
+ detail::gall_init(*this);
+ detail::geocent_init(*this);
+ detail::geos_init(*this);
+ detail::gins8_init(*this);
+ detail::gn_sinu_init(*this);
+ detail::gnom_init(*this);
+ detail::goode_init(*this);
+ detail::gstmerc_init(*this);
+ detail::hammer_init(*this);
+ detail::hatano_init(*this);
+ detail::healpix_init(*this);
+ detail::krovak_init(*this);
+ detail::igh_init(*this);
+ detail::imw_p_init(*this);
+ detail::isea_init(*this);
+ detail::labrd_init(*this);
+ detail::laea_init(*this);
+ detail::lagrng_init(*this);
+ detail::larr_init(*this);
+ detail::lask_init(*this);
+ detail::latlong_init(*this);
+ detail::lcc_init(*this);
+ detail::lcca_init(*this);
+ detail::loxim_init(*this);
+ detail::lsat_init(*this);
+ detail::mbtfpp_init(*this);
+ detail::mbtfpq_init(*this);
+ detail::mbt_fps_init(*this);
+ detail::merc_init(*this);
+ detail::mill_init(*this);
+ detail::mod_ster_init(*this);
+ detail::moll_init(*this);
+ detail::natearth_init(*this);
+ detail::nell_init(*this);
+ detail::nell_h_init(*this);
+ detail::nocol_init(*this);
+ detail::nsper_init(*this);
+ detail::nzmg_init(*this);
+ detail::ob_tran_init(*this);
+ detail::ocea_init(*this);
+ detail::oea_init(*this);
+ detail::omerc_init(*this);
+ detail::ortho_init(*this);
+ detail::qsc_init(*this);
+ detail::poly_init(*this);
+ detail::putp2_init(*this);
+ detail::putp3_init(*this);
+ detail::putp4p_init(*this);
+ detail::putp5_init(*this);
+ detail::putp6_init(*this);
+ detail::robin_init(*this);
+ detail::rouss_init(*this);
+ detail::rpoly_init(*this);
+ detail::sconics_init(*this);
+ detail::somerc_init(*this);
+ detail::stere_init(*this);
+ detail::sterea_init(*this);
+ detail::sts_init(*this);
+ detail::tcc_init(*this);
+ detail::tcea_init(*this);
+ detail::tmerc_init(*this);
+ detail::tpeqd_init(*this);
+ detail::urm5_init(*this);
+ detail::urmfps_init(*this);
+ detail::vandg_init(*this);
+ detail::vandg2_init(*this);
+ detail::vandg4_init(*this);
+ detail::wag2_init(*this);
+ detail::wag3_init(*this);
+ detail::wag7_init(*this);
+ detail::wink1_init(*this);
+ detail::wink2_init(*this);
+ }
+
+ virtual ~factory() {}
+
+ virtual void add_to_factory(std::string const& name,
+ detail::factory_entry<CT, Parameters>* sub)
+ {
+ m_registry[name].reset(sub);
+ }
+
+ inline detail::base_v<CT, Parameters>* create_new(Parameters const& parameters) const
+ {
+ typename prj_registry::const_iterator it = m_registry.find(parameters.name);
+ if (it != m_registry.end())
+ {
+ return it->second->create_new(parameters);
+ }
+
+ return 0;
+ }
+};
+
+template <typename CT>
+inline detail::base_v<CT, projections::parameters<CT> >*
+ create_new(projections::parameters<CT> const& parameters)
+{
+ static factory<CT, projections::parameters<CT> > fac;
+ return fac.create_new(parameters);
+}
+
+} // namespace detail
+
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_FACTORY_HPP
diff --git a/boost/geometry/srs/projections/iau2000.hpp b/boost/geometry/srs/projections/iau2000.hpp
new file mode 100644
index 0000000000..086ac2d708
--- /dev/null
+++ b/boost/geometry/srs/projections/iau2000.hpp
@@ -0,0 +1,2424 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IAU2000_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IAU2000_HPP
+
+
+#include <boost/geometry/srs/projections/code.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+ inline std::string iau2000_to_string(int code)
+ {
+ static const code_element arr[] = {
+ {19900, "+proj=longlat +a=2439700 +b=2439700 +no_defs"},
+ {19901, "+proj=longlat +a=2439700 +b=2439700 +no_defs"},
+ //{19910, ""},
+ //{19911, ""},
+ //{19912, ""},
+ //{19913, ""},
+ {19914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ //{19968, ""},
+ //{19969, ""},
+ //{19970, ""},
+ //{19971, ""},
+ {19972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ {19973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs"},
+ //{19974, ""},
+ //{19975, ""},
+ //{19976, ""},
+ //{19977, ""},
+ //{19978, ""},
+ //{19979, ""},
+ {29900, "+proj=longlat +a=6051800 +b=6051800 +no_defs"},
+ {29901, "+proj=longlat +a=6051800 +b=6051800 +no_defs"},
+ //{29910, ""},
+ //{29911, ""},
+ //{29912, ""},
+ //{29913, ""},
+ {29914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ //{29968, ""},
+ //{29969, ""},
+ //{29970, ""},
+ //{29971, ""},
+ {29972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ {29973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs"},
+ //{29974, ""},
+ //{29975, ""},
+ //{29976, ""},
+ //{29977, ""},
+ //{29978, ""},
+ //{29979, ""},
+ {30100, "+proj=longlat +a=1737400 +b=1737400 +no_defs"},
+ {30101, "+proj=longlat +a=1737400 +b=1737400 +no_defs"},
+ //{30110, ""},
+ //{30111, ""},
+ //{30112, ""},
+ //{30113, ""},
+ {30114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ //{30168, ""},
+ //{30169, ""},
+ //{30170, ""},
+ //{30171, ""},
+ {30172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ {30173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs"},
+ //{30174, ""},
+ //{30175, ""},
+ //{30176, ""},
+ //{30177, ""},
+ //{30178, ""},
+ //{30179, ""},
+ {39900, "+proj=longlat +a=6378140 +b=6356750 +no_defs"},
+ {39901, "+proj=longlat +a=6378140 +b=6356750 +no_defs"},
+ //{39910, ""},
+ //{39911, ""},
+ //{39912, ""},
+ //{39913, ""},
+ {39914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ //{39968, ""},
+ //{39969, ""},
+ //{39970, ""},
+ //{39971, ""},
+ {39972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ {39973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs"},
+ //{39974, ""},
+ //{39975, ""},
+ //{39976, ""},
+ //{39977, ""},
+ //{39978, ""},
+ //{39979, ""},
+ {40100, "+proj=longlat +a=13400 +b=9200 +no_defs"},
+ {40101, "+proj=longlat +a=13400 +b=9200 +no_defs"},
+ //{40110, ""},
+ //{40111, ""},
+ //{40112, ""},
+ //{40113, ""},
+ {40114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ //{40168, ""},
+ //{40169, ""},
+ //{40170, ""},
+ //{40171, ""},
+ {40172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ {40173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs"},
+ //{40174, ""},
+ //{40175, ""},
+ //{40176, ""},
+ //{40177, ""},
+ //{40178, ""},
+ //{40179, ""},
+ {40200, "+proj=longlat +a=7500 +b=5200 +no_defs"},
+ {40201, "+proj=longlat +a=7500 +b=5200 +no_defs"},
+ //{40210, ""},
+ //{40211, ""},
+ //{40212, ""},
+ //{40213, ""},
+ {40214, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40215, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40216, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40217, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40218, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40219, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40220, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40221, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40260, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40261, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40262, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40263, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40264, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40265, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40266, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40267, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ //{40268, ""},
+ //{40269, ""},
+ //{40270, ""},
+ //{40271, ""},
+ {40272, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ {40273, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs"},
+ //{40274, ""},
+ //{40275, ""},
+ //{40276, ""},
+ //{40277, ""},
+ //{40278, ""},
+ //{40279, ""},
+ {49900, "+proj=longlat +a=3396190 +b=3376200 +no_defs"},
+ {49901, "+proj=longlat +a=3396190 +b=3376200 +no_defs"},
+ //{49910, ""},
+ //{49911, ""},
+ //{49912, ""},
+ //{49913, ""},
+ {49914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ //{49968, ""},
+ //{49969, ""},
+ //{49970, ""},
+ //{49971, ""},
+ {49972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ {49973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs"},
+ //{49974, ""},
+ //{49975, ""},
+ //{49976, ""},
+ //{49977, ""},
+ //{49978, ""},
+ //{49979, ""},
+ {50100, "+proj=longlat +a=1829400 +b=1815700 +no_defs"},
+ {50101, "+proj=longlat +a=1829400 +b=1815700 +no_defs"},
+ //{50110, ""},
+ //{50111, ""},
+ //{50112, ""},
+ //{50113, ""},
+ {50114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ //{50168, ""},
+ //{50169, ""},
+ //{50170, ""},
+ //{50171, ""},
+ {50172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ {50173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs"},
+ //{50174, ""},
+ //{50175, ""},
+ //{50176, ""},
+ //{50177, ""},
+ //{50178, ""},
+ //{50179, ""},
+ {50200, "+proj=longlat +a=1564130 +b=1560930 +no_defs"},
+ {50201, "+proj=longlat +a=1564130 +b=1560930 +no_defs"},
+ //{50210, ""},
+ //{50211, ""},
+ //{50212, ""},
+ //{50213, ""},
+ {50214, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50215, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50216, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50217, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50218, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50219, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50220, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50221, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50260, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50261, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50262, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50263, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50264, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50265, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50266, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50267, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ //{50268, ""},
+ //{50269, ""},
+ //{50270, ""},
+ //{50271, ""},
+ {50272, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ {50273, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs"},
+ //{50274, ""},
+ //{50275, ""},
+ //{50276, ""},
+ //{50277, ""},
+ //{50278, ""},
+ //{50279, ""},
+ {50300, "+proj=longlat +a=2632400 +b=2632350 +no_defs"},
+ {50301, "+proj=longlat +a=2632400 +b=2632350 +no_defs"},
+ //{50310, ""},
+ //{50311, ""},
+ //{50312, ""},
+ //{50313, ""},
+ {50314, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50315, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50316, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50317, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50318, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50319, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50320, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50321, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50360, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50361, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50362, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50363, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50364, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50365, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50366, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50367, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ //{50368, ""},
+ //{50369, ""},
+ //{50370, ""},
+ //{50371, ""},
+ {50372, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ {50373, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs"},
+ //{50374, ""},
+ //{50375, ""},
+ //{50376, ""},
+ //{50377, ""},
+ //{50378, ""},
+ //{50379, ""},
+ {50400, "+proj=longlat +a=2409400 +b=2409300 +no_defs"},
+ {50401, "+proj=longlat +a=2409400 +b=2409300 +no_defs"},
+ //{50410, ""},
+ //{50411, ""},
+ //{50412, ""},
+ //{50413, ""},
+ {50414, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50415, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50416, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50417, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50418, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50419, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50420, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50421, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50460, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50461, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50462, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50463, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50464, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50465, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50466, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50467, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ //{50468, ""},
+ //{50469, ""},
+ //{50470, ""},
+ //{50471, ""},
+ {50472, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ {50473, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs"},
+ //{50474, ""},
+ //{50475, ""},
+ //{50476, ""},
+ //{50477, ""},
+ //{50478, ""},
+ //{50479, ""},
+ {50500, "+proj=longlat +a=125000 +b=64000 +no_defs"},
+ {50501, "+proj=longlat +a=125000 +b=64000 +no_defs"},
+ //{50510, ""},
+ //{50511, ""},
+ //{50512, ""},
+ //{50513, ""},
+ {50514, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50515, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50516, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50517, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50518, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50519, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50520, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50521, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50560, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50561, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50562, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50563, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50564, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50565, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50566, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50567, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ //{50568, ""},
+ //{50569, ""},
+ //{50570, ""},
+ //{50571, ""},
+ {50572, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ {50573, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs"},
+ //{50574, ""},
+ //{50575, ""},
+ //{50576, ""},
+ //{50577, ""},
+ //{50578, ""},
+ //{50579, ""},
+ {50600, "+proj=longlat +a=85000 +b=85000 +no_defs"},
+ {50601, "+proj=longlat +a=85000 +b=85000 +no_defs"},
+ //{50610, ""},
+ //{50611, ""},
+ //{50612, ""},
+ //{50613, ""},
+ {50614, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50615, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50616, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50617, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50618, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50619, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50620, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50621, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50660, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50661, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50662, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50663, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50664, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50665, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50666, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50667, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ //{50668, ""},
+ //{50669, ""},
+ //{50670, ""},
+ //{50671, ""},
+ {50672, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ {50673, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs"},
+ //{50674, ""},
+ //{50675, ""},
+ //{50676, ""},
+ //{50677, ""},
+ //{50678, ""},
+ //{50679, ""},
+ {50700, "+proj=longlat +a=40000 +b=40000 +no_defs"},
+ {50701, "+proj=longlat +a=40000 +b=40000 +no_defs"},
+ //{50710, ""},
+ //{50711, ""},
+ //{50712, ""},
+ //{50713, ""},
+ {50714, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50715, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50716, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50717, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50718, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50719, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50720, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50721, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50760, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50761, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50762, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50763, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50764, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50765, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50766, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50767, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ //{50768, ""},
+ //{50769, ""},
+ //{50770, ""},
+ //{50771, ""},
+ {50772, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {50773, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ //{50774, ""},
+ //{50775, ""},
+ //{50776, ""},
+ //{50777, ""},
+ //{50778, ""},
+ //{50779, ""},
+ {50800, "+proj=longlat +a=18000 +b=18000 +no_defs"},
+ {50801, "+proj=longlat +a=18000 +b=18000 +no_defs"},
+ //{50810, ""},
+ //{50811, ""},
+ //{50812, ""},
+ //{50813, ""},
+ {50814, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50815, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50816, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50817, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50818, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50819, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50820, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50821, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50860, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50861, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50862, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50863, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50864, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50865, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50866, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50867, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ //{50868, ""},
+ //{50869, ""},
+ //{50870, ""},
+ //{50871, ""},
+ {50872, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ {50873, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs"},
+ //{50874, ""},
+ //{50875, ""},
+ //{50876, ""},
+ //{50877, ""},
+ //{50878, ""},
+ //{50879, ""},
+ {50900, "+proj=longlat +a=14000 +b=14000 +no_defs"},
+ {50901, "+proj=longlat +a=14000 +b=14000 +no_defs"},
+ //{50910, ""},
+ //{50911, ""},
+ //{50912, ""},
+ //{50913, ""},
+ {50914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ //{50968, ""},
+ //{50969, ""},
+ //{50970, ""},
+ //{50971, ""},
+ {50972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ {50973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs"},
+ //{50974, ""},
+ //{50975, ""},
+ //{50976, ""},
+ //{50977, ""},
+ //{50978, ""},
+ //{50979, ""},
+ {51000, "+proj=longlat +a=12000 +b=12000 +no_defs"},
+ {51001, "+proj=longlat +a=12000 +b=12000 +no_defs"},
+ //{51010, ""},
+ //{51011, ""},
+ //{51012, ""},
+ //{51013, ""},
+ {51014, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51015, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51016, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51017, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51018, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51019, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51020, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51021, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51060, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51061, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51062, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51063, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51064, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51065, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51066, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51067, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ //{51068, ""},
+ //{51069, ""},
+ //{51070, ""},
+ //{51071, ""},
+ {51072, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ {51073, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs"},
+ //{51074, ""},
+ //{51075, ""},
+ //{51076, ""},
+ //{51077, ""},
+ //{51078, ""},
+ //{51079, ""},
+ {51100, "+proj=longlat +a=15000 +b=15000 +no_defs"},
+ {51101, "+proj=longlat +a=15000 +b=15000 +no_defs"},
+ //{51110, ""},
+ //{51111, ""},
+ //{51112, ""},
+ //{51113, ""},
+ {51114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ //{51168, ""},
+ //{51169, ""},
+ //{51170, ""},
+ //{51171, ""},
+ {51172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {51173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ //{51174, ""},
+ //{51175, ""},
+ //{51176, ""},
+ //{51177, ""},
+ //{51178, ""},
+ //{51179, ""},
+ {51200, "+proj=longlat +a=10000 +b=10000 +no_defs"},
+ {51201, "+proj=longlat +a=10000 +b=10000 +no_defs"},
+ //{51210, ""},
+ //{51211, ""},
+ //{51212, ""},
+ //{51213, ""},
+ {51214, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51215, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51216, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51217, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51218, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51219, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51220, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51221, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51260, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51261, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51262, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51263, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51264, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51265, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51266, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51267, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ //{51268, ""},
+ //{51269, ""},
+ //{51270, ""},
+ //{51271, ""},
+ {51272, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {51273, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ //{51274, ""},
+ //{51275, ""},
+ //{51276, ""},
+ //{51277, ""},
+ //{51278, ""},
+ //{51279, ""},
+ {51300, "+proj=longlat +a=5000 +b=5000 +no_defs"},
+ {51301, "+proj=longlat +a=5000 +b=5000 +no_defs"},
+ //{51310, ""},
+ //{51311, ""},
+ //{51312, ""},
+ //{51313, ""},
+ {51314, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51315, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51316, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51317, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51318, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51319, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51320, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51321, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51360, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51361, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51362, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51363, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51364, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51365, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51366, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51367, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ //{51368, ""},
+ //{51369, ""},
+ //{51370, ""},
+ //{51371, ""},
+ {51372, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ {51373, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs"},
+ //{51374, ""},
+ //{51375, ""},
+ //{51376, ""},
+ //{51377, ""},
+ //{51378, ""},
+ //{51379, ""},
+ {51400, "+proj=longlat +a=58000 +b=42000 +no_defs"},
+ {51401, "+proj=longlat +a=58000 +b=42000 +no_defs"},
+ //{51410, ""},
+ //{51411, ""},
+ //{51412, ""},
+ //{51413, ""},
+ {51414, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51415, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51416, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51417, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51418, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51419, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51420, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51421, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51460, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51461, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51462, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51463, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51464, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51465, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51466, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51467, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ //{51468, ""},
+ //{51469, ""},
+ //{51470, ""},
+ //{51471, ""},
+ {51472, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ {51473, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs"},
+ //{51474, ""},
+ //{51475, ""},
+ //{51476, ""},
+ //{51477, ""},
+ //{51478, ""},
+ //{51479, ""},
+ {51500, "+proj=longlat +a=10000 +b=7000 +no_defs"},
+ {51501, "+proj=longlat +a=10000 +b=7000 +no_defs"},
+ //{51510, ""},
+ //{51511, ""},
+ //{51512, ""},
+ //{51513, ""},
+ {51514, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51515, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51516, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51517, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51518, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51519, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51520, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51521, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51560, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51561, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51562, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51563, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51564, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51565, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51566, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51567, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ //{51568, ""},
+ //{51569, ""},
+ //{51570, ""},
+ //{51571, ""},
+ {51572, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ {51573, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs"},
+ //{51574, ""},
+ //{51575, ""},
+ //{51576, ""},
+ //{51577, ""},
+ //{51578, ""},
+ //{51579, ""},
+ {51600, "+proj=longlat +a=21500 +b=21500 +no_defs"},
+ {51601, "+proj=longlat +a=21500 +b=21500 +no_defs"},
+ //{51610, ""},
+ //{51611, ""},
+ //{51612, ""},
+ //{51613, ""},
+ {51614, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51615, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51616, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51617, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51618, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51619, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51620, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51621, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51660, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51661, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51662, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51663, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51664, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51665, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51666, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51667, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ //{51668, ""},
+ //{51669, ""},
+ //{51670, ""},
+ //{51671, ""},
+ {51672, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ {51673, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs"},
+ //{51674, ""},
+ //{51675, ""},
+ //{51676, ""},
+ //{51677, ""},
+ //{51678, ""},
+ //{51679, ""},
+ {59900, "+proj=longlat +a=71492000 +b=66854000 +no_defs"},
+ {59901, "+proj=longlat +a=71492000 +b=66854000 +no_defs"},
+ //{59910, ""},
+ //{59911, ""},
+ //{59912, ""},
+ //{59913, ""},
+ {59914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ //{59968, ""},
+ //{59969, ""},
+ //{59970, ""},
+ //{59971, ""},
+ {59972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ {59973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs"},
+ //{59974, ""},
+ //{59975, ""},
+ //{59976, ""},
+ //{59977, ""},
+ //{59978, ""},
+ //{59979, ""},
+ {60100, "+proj=longlat +a=209100 +b=191400 +no_defs"},
+ {60101, "+proj=longlat +a=209100 +b=191400 +no_defs"},
+ //{60110, ""},
+ //{60111, ""},
+ //{60112, ""},
+ //{60113, ""},
+ {60114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ //{60168, ""},
+ //{60169, ""},
+ //{60170, ""},
+ //{60171, ""},
+ {60172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ {60173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs"},
+ //{60174, ""},
+ //{60175, ""},
+ //{60176, ""},
+ //{60177, ""},
+ //{60178, ""},
+ //{60179, ""},
+ {60200, "+proj=longlat +a=256300 +b=244600 +no_defs"},
+ {60201, "+proj=longlat +a=256300 +b=244600 +no_defs"},
+ //{60210, ""},
+ //{60211, ""},
+ //{60212, ""},
+ //{60213, ""},
+ {60214, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60215, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60216, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60217, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60218, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60219, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60220, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60221, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60260, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60261, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60262, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60263, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60264, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60265, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60266, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60267, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ //{60268, ""},
+ //{60269, ""},
+ //{60270, ""},
+ //{60271, ""},
+ {60272, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ {60273, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs"},
+ //{60274, ""},
+ //{60275, ""},
+ //{60276, ""},
+ //{60277, ""},
+ //{60278, ""},
+ //{60279, ""},
+ {60300, "+proj=longlat +a=535600 +b=525800 +no_defs"},
+ {60301, "+proj=longlat +a=535600 +b=525800 +no_defs"},
+ //{60310, ""},
+ //{60311, ""},
+ //{60312, ""},
+ //{60313, ""},
+ {60314, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60315, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60316, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60317, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60318, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60319, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60320, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60321, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60360, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60361, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60362, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60363, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60364, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60365, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60366, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60367, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ //{60368, ""},
+ //{60369, ""},
+ //{60370, ""},
+ //{60371, ""},
+ {60372, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ {60373, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs"},
+ //{60374, ""},
+ //{60375, ""},
+ //{60376, ""},
+ //{60377, ""},
+ //{60378, ""},
+ //{60379, ""},
+ {60400, "+proj=longlat +a=560000 +b=560000 +no_defs"},
+ {60401, "+proj=longlat +a=560000 +b=560000 +no_defs"},
+ //{60410, ""},
+ //{60411, ""},
+ //{60412, ""},
+ //{60413, ""},
+ {60414, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60415, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60416, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60417, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60418, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60419, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60420, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60421, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60460, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60461, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60462, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60463, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60464, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60465, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60466, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60467, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ //{60468, ""},
+ //{60469, ""},
+ //{60470, ""},
+ //{60471, ""},
+ {60472, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ {60473, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs"},
+ //{60474, ""},
+ //{60475, ""},
+ //{60476, ""},
+ //{60477, ""},
+ //{60478, ""},
+ //{60479, ""},
+ {60500, "+proj=longlat +a=764000 +b=764000 +no_defs"},
+ {60501, "+proj=longlat +a=764000 +b=764000 +no_defs"},
+ //{60510, ""},
+ //{60511, ""},
+ //{60512, ""},
+ //{60513, ""},
+ {60514, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60515, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60516, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60517, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60518, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60519, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60520, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60521, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60560, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60561, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60562, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60563, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60564, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60565, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60566, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60567, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ //{60568, ""},
+ //{60569, ""},
+ //{60570, ""},
+ //{60571, ""},
+ {60572, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ {60573, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs"},
+ //{60574, ""},
+ //{60575, ""},
+ //{60576, ""},
+ //{60577, ""},
+ //{60578, ""},
+ //{60579, ""},
+ {60600, "+proj=longlat +a=2575000 +b=2575000 +no_defs"},
+ {60601, "+proj=longlat +a=2575000 +b=2575000 +no_defs"},
+ //{60610, ""},
+ //{60611, ""},
+ //{60612, ""},
+ //{60613, ""},
+ {60614, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60615, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60616, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60617, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60618, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60619, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60620, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60621, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60660, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60661, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60662, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60663, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60664, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60665, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60666, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60667, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ //{60668, ""},
+ //{60669, ""},
+ //{60670, ""},
+ //{60671, ""},
+ {60672, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ {60673, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs"},
+ //{60674, ""},
+ //{60675, ""},
+ //{60676, ""},
+ //{60677, ""},
+ //{60678, ""},
+ //{60679, ""},
+ {60700, "+proj=longlat +a=164000 +b=107000 +no_defs"},
+ {60701, "+proj=longlat +a=164000 +b=107000 +no_defs"},
+ //{60710, ""},
+ //{60711, ""},
+ //{60712, ""},
+ //{60713, ""},
+ {60714, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60715, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60716, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60717, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60718, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60719, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60720, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60721, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60760, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60761, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60762, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60763, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60764, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60765, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60766, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60767, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ //{60768, ""},
+ //{60769, ""},
+ //{60770, ""},
+ //{60771, ""},
+ {60772, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ {60773, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs"},
+ //{60774, ""},
+ //{60775, ""},
+ //{60776, ""},
+ //{60777, ""},
+ //{60778, ""},
+ //{60779, ""},
+ {60800, "+proj=longlat +a=718000 +b=718000 +no_defs"},
+ {60801, "+proj=longlat +a=718000 +b=718000 +no_defs"},
+ //{60810, ""},
+ //{60811, ""},
+ //{60812, ""},
+ //{60813, ""},
+ {60814, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60815, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60816, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60817, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60818, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60819, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60820, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60821, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60860, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60861, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60862, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60863, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60864, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60865, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60866, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60867, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ //{60868, ""},
+ //{60869, ""},
+ //{60870, ""},
+ //{60871, ""},
+ {60872, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ {60873, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs"},
+ //{60874, ""},
+ //{60875, ""},
+ //{60876, ""},
+ //{60877, ""},
+ //{60878, ""},
+ //{60879, ""},
+ {60900, "+proj=longlat +a=115000 +b=105000 +no_defs"},
+ {60901, "+proj=longlat +a=115000 +b=105000 +no_defs"},
+ //{60910, ""},
+ //{60911, ""},
+ //{60912, ""},
+ //{60913, ""},
+ {60914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ //{60968, ""},
+ //{60969, ""},
+ //{60970, ""},
+ //{60971, ""},
+ {60972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ {60973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs"},
+ //{60974, ""},
+ //{60975, ""},
+ //{60976, ""},
+ //{60977, ""},
+ //{60978, ""},
+ //{60979, ""},
+ {61000, "+proj=longlat +a=97000 +b=77000 +no_defs"},
+ {61001, "+proj=longlat +a=97000 +b=77000 +no_defs"},
+ //{61010, ""},
+ //{61011, ""},
+ //{61012, ""},
+ //{61013, ""},
+ {61014, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61015, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61016, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61017, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61018, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61019, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61020, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61021, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61060, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61061, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61062, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61063, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61064, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61065, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61066, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61067, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ //{61068, ""},
+ //{61069, ""},
+ //{61070, ""},
+ //{61071, ""},
+ {61072, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ {61073, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs"},
+ //{61074, ""},
+ //{61075, ""},
+ //{61076, ""},
+ //{61077, ""},
+ //{61078, ""},
+ //{61079, ""},
+ {61100, "+proj=longlat +a=69000 +b=55000 +no_defs"},
+ {61101, "+proj=longlat +a=69000 +b=55000 +no_defs"},
+ //{61110, ""},
+ //{61111, ""},
+ //{61112, ""},
+ //{61113, ""},
+ {61114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ //{61168, ""},
+ //{61169, ""},
+ //{61170, ""},
+ //{61171, ""},
+ {61172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ {61173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs"},
+ //{61174, ""},
+ //{61175, ""},
+ //{61176, ""},
+ //{61177, ""},
+ //{61178, ""},
+ //{61179, ""},
+ {61200, "+proj=longlat +a=16000 +b=16000 +no_defs"},
+ {61201, "+proj=longlat +a=16000 +b=16000 +no_defs"},
+ //{61210, ""},
+ //{61211, ""},
+ //{61212, ""},
+ //{61213, ""},
+ {61214, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61215, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61216, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61217, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61218, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61219, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61220, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61221, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61260, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61261, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61262, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61263, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61264, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61265, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61266, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61267, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ //{61268, ""},
+ //{61269, ""},
+ //{61270, ""},
+ //{61271, ""},
+ {61272, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ {61273, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs"},
+ //{61274, ""},
+ //{61275, ""},
+ //{61276, ""},
+ //{61277, ""},
+ //{61278, ""},
+ //{61279, ""},
+ {61300, "+proj=longlat +a=15000 +b=7500 +no_defs"},
+ {61301, "+proj=longlat +a=15000 +b=7500 +no_defs"},
+ //{61310, ""},
+ //{61311, ""},
+ //{61312, ""},
+ //{61313, ""},
+ {61314, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61315, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61316, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61317, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61318, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61319, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61320, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61321, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61360, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61361, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61362, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61363, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61364, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61365, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61366, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61367, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ //{61368, ""},
+ //{61369, ""},
+ //{61370, ""},
+ //{61371, ""},
+ {61372, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ {61373, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs"},
+ //{61374, ""},
+ //{61375, ""},
+ //{61376, ""},
+ //{61377, ""},
+ //{61378, ""},
+ //{61379, ""},
+ {61400, "+proj=longlat +a=15000 +b=8000 +no_defs"},
+ {61401, "+proj=longlat +a=15000 +b=8000 +no_defs"},
+ //{61410, ""},
+ //{61411, ""},
+ //{61412, ""},
+ //{61413, ""},
+ {61414, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61415, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61416, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61417, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61418, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61419, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61420, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61421, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61460, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61461, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61462, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61463, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61464, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61465, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61466, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61467, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ //{61468, ""},
+ //{61469, ""},
+ //{61470, ""},
+ //{61471, ""},
+ {61472, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ {61473, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs"},
+ //{61474, ""},
+ //{61475, ""},
+ //{61476, ""},
+ //{61477, ""},
+ //{61478, ""},
+ //{61479, ""},
+ {61500, "+proj=longlat +a=18500 +b=13500 +no_defs"},
+ {61501, "+proj=longlat +a=18500 +b=13500 +no_defs"},
+ //{61510, ""},
+ //{61511, ""},
+ //{61512, ""},
+ //{61513, ""},
+ {61514, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61515, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61516, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61517, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61518, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61519, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61520, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61521, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61560, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61561, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61562, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61563, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61564, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61565, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61566, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61567, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ //{61568, ""},
+ //{61569, ""},
+ //{61570, ""},
+ //{61571, ""},
+ {61572, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ {61573, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs"},
+ //{61574, ""},
+ //{61575, ""},
+ //{61576, ""},
+ //{61577, ""},
+ //{61578, ""},
+ //{61579, ""},
+ {61600, "+proj=longlat +a=74000 +b=34000 +no_defs"},
+ {61601, "+proj=longlat +a=74000 +b=34000 +no_defs"},
+ //{61610, ""},
+ //{61611, ""},
+ //{61612, ""},
+ //{61613, ""},
+ {61614, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61615, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61616, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61617, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61618, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61619, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61620, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61621, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61660, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61661, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61662, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61663, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61664, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61665, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61666, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61667, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ //{61668, ""},
+ //{61669, ""},
+ //{61670, ""},
+ //{61671, ""},
+ {61672, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ {61673, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs"},
+ //{61674, ""},
+ //{61675, ""},
+ //{61676, ""},
+ //{61677, ""},
+ //{61678, ""},
+ //{61679, ""},
+ {61700, "+proj=longlat +a=55000 +b=31000 +no_defs"},
+ {61701, "+proj=longlat +a=55000 +b=31000 +no_defs"},
+ //{61710, ""},
+ //{61711, ""},
+ //{61712, ""},
+ //{61713, ""},
+ {61714, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61715, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61716, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61717, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61718, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61719, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61720, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61721, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61760, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61761, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61762, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61763, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61764, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61765, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61766, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61767, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ //{61768, ""},
+ //{61769, ""},
+ //{61770, ""},
+ //{61771, ""},
+ {61772, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ {61773, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs"},
+ //{61774, ""},
+ //{61775, ""},
+ //{61776, ""},
+ //{61777, ""},
+ //{61778, ""},
+ //{61779, ""},
+ {61800, "+proj=longlat +a=10000 +b=10000 +no_defs"},
+ {61801, "+proj=longlat +a=10000 +b=10000 +no_defs"},
+ //{61810, ""},
+ //{61811, ""},
+ //{61812, ""},
+ //{61813, ""},
+ {61814, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61815, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61816, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61817, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61818, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61819, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61820, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61821, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61860, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61861, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61862, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61863, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61864, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61865, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61866, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61867, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ //{61868, ""},
+ //{61869, ""},
+ //{61870, ""},
+ //{61871, ""},
+ {61872, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ {61873, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs"},
+ //{61874, ""},
+ //{61875, ""},
+ //{61876, ""},
+ //{61877, ""},
+ //{61878, ""},
+ //{61879, ""},
+ {69900, "+proj=longlat +a=60268000 +b=54364000 +no_defs"},
+ {69901, "+proj=longlat +a=60268000 +b=54364000 +no_defs"},
+ //{69910, ""},
+ //{69911, ""},
+ //{69912, ""},
+ //{69913, ""},
+ {69914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ //{69968, ""},
+ //{69969, ""},
+ //{69970, ""},
+ //{69971, ""},
+ {69972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ {69973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs"},
+ //{69974, ""},
+ //{69975, ""},
+ //{69976, ""},
+ //{69977, ""},
+ //{69978, ""},
+ //{69979, ""},
+ {70100, "+proj=longlat +a=581100 +b=577700 +no_defs"},
+ {70101, "+proj=longlat +a=581100 +b=577700 +no_defs"},
+ //{70110, ""},
+ //{70111, ""},
+ //{70112, ""},
+ //{70113, ""},
+ {70114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ //{70168, ""},
+ //{70169, ""},
+ //{70170, ""},
+ //{70171, ""},
+ {70172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ {70173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs"},
+ //{70174, ""},
+ //{70175, ""},
+ //{70176, ""},
+ //{70177, ""},
+ //{70178, ""},
+ //{70179, ""},
+ {70200, "+proj=longlat +a=584700 +b=584700 +no_defs"},
+ {70201, "+proj=longlat +a=584700 +b=584700 +no_defs"},
+ //{70210, ""},
+ //{70211, ""},
+ //{70212, ""},
+ //{70213, ""},
+ {70214, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70215, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70216, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70217, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70218, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70219, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70220, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70221, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70260, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70261, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70262, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70263, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70264, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70265, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70266, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70267, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ //{70268, ""},
+ //{70269, ""},
+ //{70270, ""},
+ //{70271, ""},
+ {70272, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ {70273, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs"},
+ //{70274, ""},
+ //{70275, ""},
+ //{70276, ""},
+ //{70277, ""},
+ //{70278, ""},
+ //{70279, ""},
+ {70300, "+proj=longlat +a=788900 +b=788900 +no_defs"},
+ {70301, "+proj=longlat +a=788900 +b=788900 +no_defs"},
+ //{70310, ""},
+ //{70311, ""},
+ //{70312, ""},
+ //{70313, ""},
+ {70314, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70315, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70316, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70317, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70318, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70319, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70320, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70321, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70360, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70361, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70362, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70363, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70364, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70365, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70366, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70367, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ //{70368, ""},
+ //{70369, ""},
+ //{70370, ""},
+ //{70371, ""},
+ {70372, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ {70373, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs"},
+ //{70374, ""},
+ //{70375, ""},
+ //{70376, ""},
+ //{70377, ""},
+ //{70378, ""},
+ //{70379, ""},
+ {70400, "+proj=longlat +a=761400 +b=761400 +no_defs"},
+ {70401, "+proj=longlat +a=761400 +b=761400 +no_defs"},
+ //{70410, ""},
+ //{70411, ""},
+ //{70412, ""},
+ //{70413, ""},
+ {70414, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70415, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70416, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70417, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70418, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70419, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70420, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70421, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70460, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70461, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70462, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70463, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70464, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70465, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70466, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70467, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ //{70468, ""},
+ //{70469, ""},
+ //{70470, ""},
+ //{70471, ""},
+ {70472, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ {70473, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs"},
+ //{70474, ""},
+ //{70475, ""},
+ //{70476, ""},
+ //{70477, ""},
+ //{70478, ""},
+ //{70479, ""},
+ {70500, "+proj=longlat +a=240400 +b=232900 +no_defs"},
+ {70501, "+proj=longlat +a=240400 +b=232900 +no_defs"},
+ //{70510, ""},
+ //{70511, ""},
+ //{70512, ""},
+ //{70513, ""},
+ {70514, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70515, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70516, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70517, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70518, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70519, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70520, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70521, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70560, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70561, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70562, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70563, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70564, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70565, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70566, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70567, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ //{70568, ""},
+ //{70569, ""},
+ //{70570, ""},
+ //{70571, ""},
+ {70572, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ {70573, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs"},
+ //{70574, ""},
+ //{70575, ""},
+ //{70576, ""},
+ //{70577, ""},
+ //{70578, ""},
+ //{70579, ""},
+ {70600, "+proj=longlat +a=13000 +b=13000 +no_defs"},
+ {70601, "+proj=longlat +a=13000 +b=13000 +no_defs"},
+ //{70610, ""},
+ //{70611, ""},
+ //{70612, ""},
+ //{70613, ""},
+ {70614, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70615, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70616, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70617, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70618, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70619, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70620, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70621, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70660, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70661, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70662, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70663, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70664, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70665, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70666, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70667, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ //{70668, ""},
+ //{70669, ""},
+ //{70670, ""},
+ //{70671, ""},
+ {70672, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ {70673, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs"},
+ //{70674, ""},
+ //{70675, ""},
+ //{70676, ""},
+ //{70677, ""},
+ //{70678, ""},
+ //{70679, ""},
+ {70700, "+proj=longlat +a=15000 +b=15000 +no_defs"},
+ {70701, "+proj=longlat +a=15000 +b=15000 +no_defs"},
+ //{70710, ""},
+ //{70711, ""},
+ //{70712, ""},
+ //{70713, ""},
+ {70714, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70715, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70716, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70717, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70718, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70719, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70720, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70721, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70760, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70761, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70762, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70763, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70764, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70765, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70766, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70767, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ //{70768, ""},
+ //{70769, ""},
+ //{70770, ""},
+ //{70771, ""},
+ {70772, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ {70773, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs"},
+ //{70774, ""},
+ //{70775, ""},
+ //{70776, ""},
+ //{70777, ""},
+ //{70778, ""},
+ //{70779, ""},
+ {70800, "+proj=longlat +a=21000 +b=21000 +no_defs"},
+ {70801, "+proj=longlat +a=21000 +b=21000 +no_defs"},
+ //{70810, ""},
+ //{70811, ""},
+ //{70812, ""},
+ //{70813, ""},
+ {70814, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70815, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70816, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70817, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70818, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70819, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70820, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70821, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70860, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70861, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70862, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70863, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70864, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70865, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70866, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70867, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ //{70868, ""},
+ //{70869, ""},
+ //{70870, ""},
+ //{70871, ""},
+ {70872, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ {70873, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs"},
+ //{70874, ""},
+ //{70875, ""},
+ //{70876, ""},
+ //{70877, ""},
+ //{70878, ""},
+ //{70879, ""},
+ {70900, "+proj=longlat +a=31000 +b=31000 +no_defs"},
+ {70901, "+proj=longlat +a=31000 +b=31000 +no_defs"},
+ //{70910, ""},
+ //{70911, ""},
+ //{70912, ""},
+ //{70913, ""},
+ {70914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ //{70968, ""},
+ //{70969, ""},
+ //{70970, ""},
+ //{70971, ""},
+ {70972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ {70973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs"},
+ //{70974, ""},
+ //{70975, ""},
+ //{70976, ""},
+ //{70977, ""},
+ //{70978, ""},
+ //{70979, ""},
+ {71000, "+proj=longlat +a=27000 +b=27000 +no_defs"},
+ {71001, "+proj=longlat +a=27000 +b=27000 +no_defs"},
+ //{71010, ""},
+ //{71011, ""},
+ //{71012, ""},
+ //{71013, ""},
+ {71014, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71015, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71016, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71017, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71018, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71019, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71020, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71021, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71060, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71061, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71062, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71063, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71064, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71065, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71066, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71067, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ //{71068, ""},
+ //{71069, ""},
+ //{71070, ""},
+ //{71071, ""},
+ {71072, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71073, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ //{71074, ""},
+ //{71075, ""},
+ //{71076, ""},
+ //{71077, ""},
+ //{71078, ""},
+ //{71079, ""},
+ {71100, "+proj=longlat +a=42000 +b=42000 +no_defs"},
+ {71101, "+proj=longlat +a=42000 +b=42000 +no_defs"},
+ //{71110, ""},
+ //{71111, ""},
+ //{71112, ""},
+ //{71113, ""},
+ {71114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ //{71168, ""},
+ //{71169, ""},
+ //{71170, ""},
+ //{71171, ""},
+ {71172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ {71173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs"},
+ //{71174, ""},
+ //{71175, ""},
+ //{71176, ""},
+ //{71177, ""},
+ //{71178, ""},
+ //{71179, ""},
+ {71200, "+proj=longlat +a=54000 +b=54000 +no_defs"},
+ {71201, "+proj=longlat +a=54000 +b=54000 +no_defs"},
+ //{71210, ""},
+ //{71211, ""},
+ //{71212, ""},
+ //{71213, ""},
+ {71214, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71215, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71216, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71217, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71218, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71219, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71220, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71221, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71260, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71261, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71262, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71263, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71264, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71265, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71266, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71267, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ //{71268, ""},
+ //{71269, ""},
+ //{71270, ""},
+ //{71271, ""},
+ {71272, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ {71273, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs"},
+ //{71274, ""},
+ //{71275, ""},
+ //{71276, ""},
+ //{71277, ""},
+ //{71278, ""},
+ //{71279, ""},
+ {71300, "+proj=longlat +a=27000 +b=27000 +no_defs"},
+ {71301, "+proj=longlat +a=27000 +b=27000 +no_defs"},
+ //{71310, ""},
+ //{71311, ""},
+ //{71312, ""},
+ //{71313, ""},
+ {71314, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71315, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71316, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71317, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71318, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71319, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71320, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71321, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71360, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71361, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71362, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71363, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71364, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71365, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71366, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71367, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ //{71368, ""},
+ //{71369, ""},
+ //{71370, ""},
+ //{71371, ""},
+ {71372, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ {71373, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs"},
+ //{71374, ""},
+ //{71375, ""},
+ //{71376, ""},
+ //{71377, ""},
+ //{71378, ""},
+ //{71379, ""},
+ {71400, "+proj=longlat +a=33000 +b=33000 +no_defs"},
+ {71401, "+proj=longlat +a=33000 +b=33000 +no_defs"},
+ //{71410, ""},
+ //{71411, ""},
+ //{71412, ""},
+ //{71413, ""},
+ {71414, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71415, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71416, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71417, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71418, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71419, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71420, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71421, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71460, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71461, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71462, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71463, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71464, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71465, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71466, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71467, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ //{71468, ""},
+ //{71469, ""},
+ //{71470, ""},
+ //{71471, ""},
+ {71472, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ {71473, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs"},
+ //{71474, ""},
+ //{71475, ""},
+ //{71476, ""},
+ //{71477, ""},
+ //{71478, ""},
+ //{71479, ""},
+ {71500, "+proj=longlat +a=77000 +b=77000 +no_defs"},
+ {71501, "+proj=longlat +a=77000 +b=77000 +no_defs"},
+ //{71510, ""},
+ //{71511, ""},
+ //{71512, ""},
+ //{71513, ""},
+ {71514, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71515, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71516, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71517, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71518, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71519, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71520, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71521, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71560, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71561, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71562, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71563, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71564, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71565, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71566, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71567, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ //{71568, ""},
+ //{71569, ""},
+ //{71570, ""},
+ //{71571, ""},
+ {71572, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ {71573, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs"},
+ //{71574, ""},
+ //{71575, ""},
+ //{71576, ""},
+ //{71577, ""},
+ //{71578, ""},
+ //{71579, ""},
+ {79900, "+proj=longlat +a=25559000 +b=24973000 +no_defs"},
+ {79901, "+proj=longlat +a=25559000 +b=24973000 +no_defs"},
+ //{79910, ""},
+ //{79911, ""},
+ //{79912, ""},
+ //{79913, ""},
+ {79914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ //{79968, ""},
+ //{79969, ""},
+ //{79970, ""},
+ //{79971, ""},
+ {79972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ {79973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs"},
+ //{79974, ""},
+ //{79975, ""},
+ //{79976, ""},
+ //{79977, ""},
+ //{79978, ""},
+ //{79979, ""},
+ {80100, "+proj=longlat +a=1352600 +b=1352600 +no_defs"},
+ {80101, "+proj=longlat +a=1352600 +b=1352600 +no_defs"},
+ //{80110, ""},
+ //{80111, ""},
+ //{80112, ""},
+ //{80113, ""},
+ {80114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ //{80168, ""},
+ //{80169, ""},
+ //{80170, ""},
+ //{80171, ""},
+ {80172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ {80173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs"},
+ //{80174, ""},
+ //{80175, ""},
+ //{80176, ""},
+ //{80177, ""},
+ //{80178, ""},
+ //{80179, ""},
+ {80200, "+proj=longlat +a=170000 +b=170000 +no_defs"},
+ {80201, "+proj=longlat +a=170000 +b=170000 +no_defs"},
+ //{80210, ""},
+ //{80211, ""},
+ //{80212, ""},
+ //{80213, ""},
+ {80214, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80215, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80216, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80217, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80218, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80219, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80220, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80221, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80260, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80261, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80262, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80263, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80264, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80265, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80266, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80267, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ //{80268, ""},
+ //{80269, ""},
+ //{80270, ""},
+ //{80271, ""},
+ {80272, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ {80273, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs"},
+ //{80274, ""},
+ //{80275, ""},
+ //{80276, ""},
+ //{80277, ""},
+ //{80278, ""},
+ //{80279, ""},
+ {80300, "+proj=longlat +a=29000 +b=29000 +no_defs"},
+ {80301, "+proj=longlat +a=29000 +b=29000 +no_defs"},
+ //{80310, ""},
+ //{80311, ""},
+ //{80312, ""},
+ //{80313, ""},
+ {80314, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80315, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80316, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80317, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80318, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80319, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80320, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80321, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80360, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80361, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80362, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80363, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80364, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80365, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80366, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80367, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ //{80368, ""},
+ //{80369, ""},
+ //{80370, ""},
+ //{80371, ""},
+ {80372, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ {80373, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs"},
+ //{80374, ""},
+ //{80375, ""},
+ //{80376, ""},
+ //{80377, ""},
+ //{80378, ""},
+ //{80379, ""},
+ {80400, "+proj=longlat +a=40000 +b=40000 +no_defs"},
+ {80401, "+proj=longlat +a=40000 +b=40000 +no_defs"},
+ //{80410, ""},
+ //{80411, ""},
+ //{80412, ""},
+ //{80413, ""},
+ {80414, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80415, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80416, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80417, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80418, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80419, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80420, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80421, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80460, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80461, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80462, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80463, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80464, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80465, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80466, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80467, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ //{80468, ""},
+ //{80469, ""},
+ //{80470, ""},
+ //{80471, ""},
+ {80472, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ {80473, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs"},
+ //{80474, ""},
+ //{80475, ""},
+ //{80476, ""},
+ //{80477, ""},
+ //{80478, ""},
+ //{80479, ""},
+ {80500, "+proj=longlat +a=74000 +b=74000 +no_defs"},
+ {80501, "+proj=longlat +a=74000 +b=74000 +no_defs"},
+ //{80510, ""},
+ //{80511, ""},
+ //{80512, ""},
+ //{80513, ""},
+ {80514, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80515, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80516, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80517, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80518, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80519, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80520, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80521, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80560, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80561, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80562, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80563, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80564, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80565, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80566, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80567, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ //{80568, ""},
+ //{80569, ""},
+ //{80570, ""},
+ //{80571, ""},
+ {80572, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ {80573, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs"},
+ //{80574, ""},
+ //{80575, ""},
+ //{80576, ""},
+ //{80577, ""},
+ //{80578, ""},
+ //{80579, ""},
+ {80600, "+proj=longlat +a=79000 +b=79000 +no_defs"},
+ {80601, "+proj=longlat +a=79000 +b=79000 +no_defs"},
+ //{80610, ""},
+ //{80611, ""},
+ //{80612, ""},
+ //{80613, ""},
+ {80614, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80615, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80616, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80617, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80618, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80619, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80620, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80621, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80660, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80661, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80662, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80663, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80664, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80665, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80666, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80667, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ //{80668, ""},
+ //{80669, ""},
+ //{80670, ""},
+ //{80671, ""},
+ {80672, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ {80673, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs"},
+ //{80674, ""},
+ //{80675, ""},
+ //{80676, ""},
+ //{80677, ""},
+ //{80678, ""},
+ //{80679, ""},
+ {80700, "+proj=longlat +a=96000 +b=96000 +no_defs"},
+ {80701, "+proj=longlat +a=96000 +b=96000 +no_defs"},
+ //{80710, ""},
+ //{80711, ""},
+ //{80712, ""},
+ //{80713, ""},
+ {80714, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80715, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80716, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80717, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80718, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80719, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80720, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80721, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80760, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80761, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80762, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80763, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80764, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80765, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80766, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80767, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ //{80768, ""},
+ //{80769, ""},
+ //{80770, ""},
+ //{80771, ""},
+ {80772, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ {80773, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs"},
+ //{80774, ""},
+ //{80775, ""},
+ //{80776, ""},
+ //{80777, ""},
+ //{80778, ""},
+ //{80779, ""},
+ {80800, "+proj=longlat +a=218000 +b=201000 +no_defs"},
+ {80801, "+proj=longlat +a=218000 +b=201000 +no_defs"},
+ //{80810, ""},
+ //{80811, ""},
+ //{80812, ""},
+ //{80813, ""},
+ {80814, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80815, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80816, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80817, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80818, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80819, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80820, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80821, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80860, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80861, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80862, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80863, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80864, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80865, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80866, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80867, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ //{80868, ""},
+ //{80869, ""},
+ //{80870, ""},
+ //{80871, ""},
+ {80872, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ {80873, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs"},
+ //{80874, ""},
+ //{80875, ""},
+ //{80876, ""},
+ //{80877, ""},
+ //{80878, ""},
+ //{80879, ""},
+ {89900, "+proj=longlat +a=24764000 +b=24341000 +no_defs"},
+ {89901, "+proj=longlat +a=24764000 +b=24341000 +no_defs"},
+ //{89910, ""},
+ //{89911, ""},
+ //{89912, ""},
+ //{89913, ""},
+ {89914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ //{89968, ""},
+ //{89969, ""},
+ //{89970, ""},
+ //{89971, ""},
+ {89972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ {89973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs"},
+ //{89974, ""},
+ //{89975, ""},
+ //{89976, ""},
+ //{89977, ""},
+ //{89978, ""},
+ //{89979, ""},
+ {90100, "+proj=longlat +a=593000 +b=593000 +no_defs"},
+ {90101, "+proj=longlat +a=593000 +b=593000 +no_defs"},
+ //{90110, ""},
+ //{90111, ""},
+ //{90112, ""},
+ //{90113, ""},
+ {90114, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90115, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90116, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90117, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90118, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90119, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90120, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90121, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90160, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90161, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90162, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90163, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90164, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90165, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90166, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90167, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ //{90168, ""},
+ //{90169, ""},
+ //{90170, ""},
+ //{90171, ""},
+ {90172, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ {90173, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs"},
+ //{90174, ""},
+ //{90175, ""},
+ //{90176, ""},
+ //{90177, ""},
+ //{90178, ""},
+ //{90179, ""},
+ {99900, "+proj=longlat +a=1195000 +b=1195000 +no_defs"},
+ {99901, "+proj=longlat +a=1195000 +b=1195000 +no_defs"},
+ //{99910, ""},
+ //{99911, ""},
+ //{99912, ""},
+ //{99913, ""},
+ {99914, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99915, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99916, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99917, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99918, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99919, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99920, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99921, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99960, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99961, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99962, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99963, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99964, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99965, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99966, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99967, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ //{99968, ""},
+ //{99969, ""},
+ //{99970, ""},
+ //{99971, ""},
+ {99972, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"},
+ {99973, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs"}
+//{99974, ""},
+//{99975, ""},
+//{99976, ""},
+//{99977, ""},
+//{99978, ""},
+//{99979, ""}
+ };
+
+ const code_element * first = arr;
+ const code_element * last = arr + sizeof(arr) / sizeof(code_element);
+ const code_element * el = binary_find_code_element(first, last, code);
+
+ return el != last ? el->proj4_str : "";
+ }
+
+}
+#endif // DOXYGEN_NO_DETAIL
+
+
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/iau2000_params.hpp b/boost/geometry/srs/projections/iau2000_params.hpp
new file mode 100644
index 0000000000..1cc8539a05
--- /dev/null
+++ b/boost/geometry/srs/projections/iau2000_params.hpp
@@ -0,0 +1,48 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_IAU2000_PARAMS_HPP
+#define BOOST_GEOMETRY_SRS_PROJECTIONS_IAU2000_PARAMS_HPP
+
+
+#include <string>
+
+#include <boost/geometry/srs/spheroid.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs
+{
+
+
+struct iau2000
+{
+ explicit iau2000(int c)
+ : code(c)
+ {}
+
+ int code;
+};
+
+
+template <int Code>
+struct static_iau2000
+{
+ static const int code = Code;
+};
+
+
+} // namespace srs
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_IAU2000_PARAMS_HPP
diff --git a/boost/geometry/srs/projections/iau2000_traits.hpp b/boost/geometry/srs/projections/iau2000_traits.hpp
new file mode 100644
index 0000000000..2c329db631
--- /dev/null
+++ b/boost/geometry/srs/projections/iau2000_traits.hpp
@@ -0,0 +1,2432 @@
+// Boost.Geometry
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IAU2000_TRAITS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IAU2000_TRAITS_HPP
+
+
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/srs/projections/factory.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/srid_traits.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+/*!
+ \brief IAU2000 traits
+ \details With help of the IAU2000 traits library users can statically use projections
+ or coordinate systems specifying an IAU2000 code. The correct projections for transformations
+ are used automically then, still keeping static polymorphism.
+ \ingroup projection
+ \tparam IAU2000 iau2000 code
+*/
+template <size_t IAU2000>
+struct iau2000_traits
+{
+ // Specializations define:
+ // - type to get projection type
+ // - function par to get parameters
+};
+
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19900, longlat, 2439700, "+proj=longlat +a=2439700 +b=2439700 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19901, longlat, 2439700, "+proj=longlat +a=2439700 +b=2439700 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19914, sinu, 2439700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19915, sinu, 2439700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19916, sinu, 2439700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19917, sinu, 2439700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19918, stere, 2439700, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19919, stere, 2439700, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19920, stere, 2439700, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19921, stere, 2439700, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19960, sinu, 2439700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19961, sinu, 2439700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19962, stere, 2439700, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19963, stere, 2439700, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19964, tmerc, 2439700, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19965, tmerc, 2439700, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19966, ortho, 2439700, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19967, ortho, 2439700, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19972, laea, 2439700, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 19973, laea, 2439700, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2439700 +b=2439700 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 19979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29900, longlat, 6051800, "+proj=longlat +a=6051800 +b=6051800 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29901, longlat, 6051800, "+proj=longlat +a=6051800 +b=6051800 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29914, sinu, 6051800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29915, sinu, 6051800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29916, sinu, 6051800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29917, sinu, 6051800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29918, stere, 6051800, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29919, stere, 6051800, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29920, stere, 6051800, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29921, stere, 6051800, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29960, sinu, 6051800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29961, sinu, 6051800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29962, stere, 6051800, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29963, stere, 6051800, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29964, tmerc, 6051800, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29965, tmerc, 6051800, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29966, ortho, 6051800, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29967, ortho, 6051800, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29972, laea, 6051800, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 29973, laea, 6051800, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6051800 +b=6051800 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 29979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30100, longlat, 1737400, "+proj=longlat +a=1737400 +b=1737400 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30101, longlat, 1737400, "+proj=longlat +a=1737400 +b=1737400 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30114, sinu, 1737400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30115, sinu, 1737400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30116, sinu, 1737400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30117, sinu, 1737400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30118, stere, 1737400, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30119, stere, 1737400, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30120, stere, 1737400, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30121, stere, 1737400, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30160, sinu, 1737400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30161, sinu, 1737400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30162, stere, 1737400, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30163, stere, 1737400, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30164, tmerc, 1737400, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30165, tmerc, 1737400, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30166, ortho, 1737400, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30167, ortho, 1737400, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30172, laea, 1737400, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 30173, laea, 1737400, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 30179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39900, longlat, 6378140, 6356750, "+proj=longlat +a=6378140 +b=6356750 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39901, longlat, 6378140, 6356750, "+proj=longlat +a=6378140 +b=6356750 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39914, sinu, 6378140, 6356750, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39915, sinu, 6378140, 6356750, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39916, sinu, 6378140, 6356750, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39917, sinu, 6378140, 6356750, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39918, stere, 6378140, 6356750, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39919, stere, 6378140, 6356750, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39920, stere, 6378140, 6356750, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39921, stere, 6378140, 6356750, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39960, sinu, 6378140, 6356750, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39961, sinu, 6378140, 6356750, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39962, stere, 6378140, 6356750, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39963, stere, 6378140, 6356750, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39964, tmerc, 6378140, 6356750, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39965, tmerc, 6378140, 6356750, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39966, ortho, 6378140, 6356750, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39967, ortho, 6378140, 6356750, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39972, laea, 6378140, 6356750, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 39973, laea, 6378140, 6356750, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6378140 +b=6356750 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 39979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40100, longlat, 13400, 9200, "+proj=longlat +a=13400 +b=9200 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40101, longlat, 13400, 9200, "+proj=longlat +a=13400 +b=9200 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40114, sinu, 13400, 9200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40115, sinu, 13400, 9200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40116, sinu, 13400, 9200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40117, sinu, 13400, 9200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40118, stere, 13400, 9200, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40119, stere, 13400, 9200, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40120, stere, 13400, 9200, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40121, stere, 13400, 9200, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40160, sinu, 13400, 9200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40161, sinu, 13400, 9200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40162, stere, 13400, 9200, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40163, stere, 13400, 9200, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40164, tmerc, 13400, 9200, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40165, tmerc, 13400, 9200, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40166, ortho, 13400, 9200, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40167, ortho, 13400, 9200, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40172, laea, 13400, 9200, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40173, laea, 13400, 9200, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13400 +b=9200 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40200, longlat, 7500, 5200, "+proj=longlat +a=7500 +b=5200 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40201, longlat, 7500, 5200, "+proj=longlat +a=7500 +b=5200 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40210, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40211, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40212, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40213, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40214, sinu, 7500, 5200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40215, sinu, 7500, 5200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40216, sinu, 7500, 5200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40217, sinu, 7500, 5200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40218, stere, 7500, 5200, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40219, stere, 7500, 5200, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40220, stere, 7500, 5200, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40221, stere, 7500, 5200, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40260, sinu, 7500, 5200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40261, sinu, 7500, 5200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40262, stere, 7500, 5200, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40263, stere, 7500, 5200, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40264, tmerc, 7500, 5200, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40265, tmerc, 7500, 5200, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40266, ortho, 7500, 5200, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40267, ortho, 7500, 5200, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40268, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40269, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40270, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40271, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40272, laea, 7500, 5200, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 40273, laea, 7500, 5200, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=7500 +b=5200 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40274, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40275, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40276, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40277, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40278, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 40279, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49900, longlat, 3396190, 3376200, "+proj=longlat +a=3396190 +b=3376200 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49901, longlat, 3396190, 3376200, "+proj=longlat +a=3396190 +b=3376200 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49914, sinu, 3396190, 3376200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49915, sinu, 3396190, 3376200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49916, sinu, 3396190, 3376200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49917, sinu, 3396190, 3376200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49918, stere, 3396190, 3376200, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49919, stere, 3396190, 3376200, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49920, stere, 3396190, 3376200, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49921, stere, 3396190, 3376200, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49960, sinu, 3396190, 3376200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49961, sinu, 3396190, 3376200, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49962, stere, 3396190, 3376200, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49963, stere, 3396190, 3376200, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49964, tmerc, 3396190, 3376200, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49965, tmerc, 3396190, 3376200, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49966, ortho, 3396190, 3376200, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49967, ortho, 3396190, 3376200, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49972, laea, 3396190, 3376200, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 49973, laea, 3396190, 3376200, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=3396190 +b=3376200 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 49979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50100, longlat, 1829400, 1815700, "+proj=longlat +a=1829400 +b=1815700 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50101, longlat, 1829400, 1815700, "+proj=longlat +a=1829400 +b=1815700 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50114, sinu, 1829400, 1815700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50115, sinu, 1829400, 1815700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50116, sinu, 1829400, 1815700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50117, sinu, 1829400, 1815700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50118, stere, 1829400, 1815700, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50119, stere, 1829400, 1815700, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50120, stere, 1829400, 1815700, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50121, stere, 1829400, 1815700, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50160, sinu, 1829400, 1815700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50161, sinu, 1829400, 1815700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50162, stere, 1829400, 1815700, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50163, stere, 1829400, 1815700, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50164, tmerc, 1829400, 1815700, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50165, tmerc, 1829400, 1815700, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50166, ortho, 1829400, 1815700, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50167, ortho, 1829400, 1815700, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50172, laea, 1829400, 1815700, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50173, laea, 1829400, 1815700, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1829400 +b=1815700 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50200, longlat, 1564130, 1560930, "+proj=longlat +a=1564130 +b=1560930 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50201, longlat, 1564130, 1560930, "+proj=longlat +a=1564130 +b=1560930 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50210, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50211, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50212, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50213, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50214, sinu, 1564130, 1560930, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50215, sinu, 1564130, 1560930, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50216, sinu, 1564130, 1560930, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50217, sinu, 1564130, 1560930, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50218, stere, 1564130, 1560930, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50219, stere, 1564130, 1560930, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50220, stere, 1564130, 1560930, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50221, stere, 1564130, 1560930, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50260, sinu, 1564130, 1560930, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50261, sinu, 1564130, 1560930, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50262, stere, 1564130, 1560930, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50263, stere, 1564130, 1560930, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50264, tmerc, 1564130, 1560930, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50265, tmerc, 1564130, 1560930, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50266, ortho, 1564130, 1560930, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50267, ortho, 1564130, 1560930, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50268, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50269, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50270, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50271, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50272, laea, 1564130, 1560930, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50273, laea, 1564130, 1560930, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1564130 +b=1560930 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50274, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50275, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50276, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50277, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50278, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50279, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50300, longlat, 2632400, 2632350, "+proj=longlat +a=2632400 +b=2632350 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50301, longlat, 2632400, 2632350, "+proj=longlat +a=2632400 +b=2632350 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50310, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50311, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50312, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50313, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50314, sinu, 2632400, 2632350, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50315, sinu, 2632400, 2632350, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50316, sinu, 2632400, 2632350, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50317, sinu, 2632400, 2632350, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50318, stere, 2632400, 2632350, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50319, stere, 2632400, 2632350, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50320, stere, 2632400, 2632350, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50321, stere, 2632400, 2632350, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50360, sinu, 2632400, 2632350, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50361, sinu, 2632400, 2632350, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50362, stere, 2632400, 2632350, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50363, stere, 2632400, 2632350, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50364, tmerc, 2632400, 2632350, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50365, tmerc, 2632400, 2632350, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50366, ortho, 2632400, 2632350, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50367, ortho, 2632400, 2632350, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50368, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50369, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50370, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50371, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50372, laea, 2632400, 2632350, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50373, laea, 2632400, 2632350, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2632400 +b=2632350 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50374, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50375, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50376, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50377, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50378, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50379, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50400, longlat, 2409400, 2409300, "+proj=longlat +a=2409400 +b=2409300 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50401, longlat, 2409400, 2409300, "+proj=longlat +a=2409400 +b=2409300 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50410, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50411, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50412, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50413, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50414, sinu, 2409400, 2409300, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50415, sinu, 2409400, 2409300, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50416, sinu, 2409400, 2409300, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50417, sinu, 2409400, 2409300, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50418, stere, 2409400, 2409300, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50419, stere, 2409400, 2409300, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50420, stere, 2409400, 2409300, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50421, stere, 2409400, 2409300, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50460, sinu, 2409400, 2409300, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50461, sinu, 2409400, 2409300, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50462, stere, 2409400, 2409300, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50463, stere, 2409400, 2409300, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50464, tmerc, 2409400, 2409300, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50465, tmerc, 2409400, 2409300, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50466, ortho, 2409400, 2409300, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50467, ortho, 2409400, 2409300, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50468, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50469, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50470, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50471, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50472, laea, 2409400, 2409300, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50473, laea, 2409400, 2409300, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2409400 +b=2409300 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50474, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50475, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50476, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50477, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50478, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50479, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50500, longlat, 125000, 64000, "+proj=longlat +a=125000 +b=64000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50501, longlat, 125000, 64000, "+proj=longlat +a=125000 +b=64000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50510, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50511, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50512, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50513, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50514, sinu, 125000, 64000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50515, sinu, 125000, 64000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50516, sinu, 125000, 64000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50517, sinu, 125000, 64000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50518, stere, 125000, 64000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50519, stere, 125000, 64000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50520, stere, 125000, 64000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50521, stere, 125000, 64000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50560, sinu, 125000, 64000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50561, sinu, 125000, 64000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50562, stere, 125000, 64000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50563, stere, 125000, 64000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50564, tmerc, 125000, 64000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50565, tmerc, 125000, 64000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50566, ortho, 125000, 64000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50567, ortho, 125000, 64000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50568, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50569, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50570, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50571, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50572, laea, 125000, 64000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 50573, laea, 125000, 64000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=125000 +b=64000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50574, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50575, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50576, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50577, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50578, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50579, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50600, longlat, 85000, "+proj=longlat +a=85000 +b=85000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50601, longlat, 85000, "+proj=longlat +a=85000 +b=85000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50610, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50611, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50612, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50613, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50614, sinu, 85000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50615, sinu, 85000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50616, sinu, 85000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50617, sinu, 85000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50618, stere, 85000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50619, stere, 85000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50620, stere, 85000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50621, stere, 85000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50660, sinu, 85000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50661, sinu, 85000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50662, stere, 85000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50663, stere, 85000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50664, tmerc, 85000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50665, tmerc, 85000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50666, ortho, 85000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50667, ortho, 85000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50668, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50669, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50670, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50671, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50672, laea, 85000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50673, laea, 85000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=85000 +b=85000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50674, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50675, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50676, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50677, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50678, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50679, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50700, longlat, 40000, "+proj=longlat +a=40000 +b=40000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50701, longlat, 40000, "+proj=longlat +a=40000 +b=40000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50710, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50711, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50712, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50713, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50714, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50715, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50716, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50717, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50718, stere, 40000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50719, stere, 40000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50720, stere, 40000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50721, stere, 40000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50760, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50761, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50762, stere, 40000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50763, stere, 40000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50764, tmerc, 40000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50765, tmerc, 40000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50766, ortho, 40000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50767, ortho, 40000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50768, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50769, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50770, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50771, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50772, laea, 40000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50773, laea, 40000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50774, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50775, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50776, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50777, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50778, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50779, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50800, longlat, 18000, "+proj=longlat +a=18000 +b=18000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50801, longlat, 18000, "+proj=longlat +a=18000 +b=18000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50810, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50811, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50812, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50813, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50814, sinu, 18000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50815, sinu, 18000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50816, sinu, 18000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50817, sinu, 18000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50818, stere, 18000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50819, stere, 18000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50820, stere, 18000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50821, stere, 18000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50860, sinu, 18000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50861, sinu, 18000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50862, stere, 18000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50863, stere, 18000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50864, tmerc, 18000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50865, tmerc, 18000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50866, ortho, 18000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50867, ortho, 18000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50868, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50869, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50870, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50871, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50872, laea, 18000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50873, laea, 18000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18000 +b=18000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50874, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50875, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50876, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50877, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50878, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50879, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50900, longlat, 14000, "+proj=longlat +a=14000 +b=14000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50901, longlat, 14000, "+proj=longlat +a=14000 +b=14000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50914, sinu, 14000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50915, sinu, 14000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50916, sinu, 14000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50917, sinu, 14000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50918, stere, 14000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50919, stere, 14000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50920, stere, 14000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50921, stere, 14000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50960, sinu, 14000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50961, sinu, 14000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50962, stere, 14000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50963, stere, 14000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50964, tmerc, 14000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50965, tmerc, 14000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50966, ortho, 14000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50967, ortho, 14000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50972, laea, 14000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 50973, laea, 14000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=14000 +b=14000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 50979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51000, longlat, 12000, "+proj=longlat +a=12000 +b=12000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51001, longlat, 12000, "+proj=longlat +a=12000 +b=12000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51010, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51011, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51012, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51013, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51014, sinu, 12000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51015, sinu, 12000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51016, sinu, 12000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51017, sinu, 12000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51018, stere, 12000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51019, stere, 12000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51020, stere, 12000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51021, stere, 12000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51060, sinu, 12000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51061, sinu, 12000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51062, stere, 12000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51063, stere, 12000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51064, tmerc, 12000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51065, tmerc, 12000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51066, ortho, 12000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51067, ortho, 12000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51068, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51069, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51070, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51071, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51072, laea, 12000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51073, laea, 12000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=12000 +b=12000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51074, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51075, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51076, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51077, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51078, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51079, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51100, longlat, 15000, "+proj=longlat +a=15000 +b=15000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51101, longlat, 15000, "+proj=longlat +a=15000 +b=15000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51114, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51115, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51116, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51117, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51118, stere, 15000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51119, stere, 15000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51120, stere, 15000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51121, stere, 15000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51160, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51161, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51162, stere, 15000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51163, stere, 15000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51164, tmerc, 15000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51165, tmerc, 15000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51166, ortho, 15000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51167, ortho, 15000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51172, laea, 15000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51173, laea, 15000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51200, longlat, 10000, "+proj=longlat +a=10000 +b=10000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51201, longlat, 10000, "+proj=longlat +a=10000 +b=10000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51210, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51211, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51212, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51213, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51214, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51215, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51216, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51217, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51218, stere, 10000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51219, stere, 10000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51220, stere, 10000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51221, stere, 10000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51260, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51261, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51262, stere, 10000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51263, stere, 10000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51264, tmerc, 10000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51265, tmerc, 10000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51266, ortho, 10000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51267, ortho, 10000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51268, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51269, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51270, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51271, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51272, laea, 10000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51273, laea, 10000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51274, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51275, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51276, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51277, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51278, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51279, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51300, longlat, 5000, "+proj=longlat +a=5000 +b=5000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51301, longlat, 5000, "+proj=longlat +a=5000 +b=5000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51310, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51311, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51312, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51313, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51314, sinu, 5000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51315, sinu, 5000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51316, sinu, 5000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51317, sinu, 5000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51318, stere, 5000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51319, stere, 5000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51320, stere, 5000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51321, stere, 5000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51360, sinu, 5000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51361, sinu, 5000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51362, stere, 5000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51363, stere, 5000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51364, tmerc, 5000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51365, tmerc, 5000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51366, ortho, 5000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51367, ortho, 5000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51368, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51369, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51370, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51371, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51372, laea, 5000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51373, laea, 5000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=5000 +b=5000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51374, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51375, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51376, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51377, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51378, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51379, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51400, longlat, 58000, 42000, "+proj=longlat +a=58000 +b=42000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51401, longlat, 58000, 42000, "+proj=longlat +a=58000 +b=42000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51410, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51411, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51412, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51413, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51414, sinu, 58000, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51415, sinu, 58000, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51416, sinu, 58000, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51417, sinu, 58000, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51418, stere, 58000, 42000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51419, stere, 58000, 42000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51420, stere, 58000, 42000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51421, stere, 58000, 42000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51460, sinu, 58000, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51461, sinu, 58000, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51462, stere, 58000, 42000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51463, stere, 58000, 42000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51464, tmerc, 58000, 42000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51465, tmerc, 58000, 42000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51466, ortho, 58000, 42000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51467, ortho, 58000, 42000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51468, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51469, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51470, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51471, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51472, laea, 58000, 42000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51473, laea, 58000, 42000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=58000 +b=42000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51474, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51475, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51476, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51477, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51478, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51479, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51500, longlat, 10000, 7000, "+proj=longlat +a=10000 +b=7000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51501, longlat, 10000, 7000, "+proj=longlat +a=10000 +b=7000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51510, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51511, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51512, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51513, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51514, sinu, 10000, 7000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51515, sinu, 10000, 7000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51516, sinu, 10000, 7000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51517, sinu, 10000, 7000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51518, stere, 10000, 7000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51519, stere, 10000, 7000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51520, stere, 10000, 7000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51521, stere, 10000, 7000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51560, sinu, 10000, 7000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51561, sinu, 10000, 7000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51562, stere, 10000, 7000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51563, stere, 10000, 7000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51564, tmerc, 10000, 7000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51565, tmerc, 10000, 7000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51566, ortho, 10000, 7000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51567, ortho, 10000, 7000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51568, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51569, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51570, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51571, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51572, laea, 10000, 7000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 51573, laea, 10000, 7000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=7000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51574, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51575, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51576, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51577, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51578, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51579, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51600, longlat, 21500, "+proj=longlat +a=21500 +b=21500 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51601, longlat, 21500, "+proj=longlat +a=21500 +b=21500 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51610, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51611, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51612, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51613, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51614, sinu, 21500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51615, sinu, 21500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51616, sinu, 21500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51617, sinu, 21500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51618, stere, 21500, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51619, stere, 21500, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51620, stere, 21500, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51621, stere, 21500, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51660, sinu, 21500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51661, sinu, 21500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51662, stere, 21500, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51663, stere, 21500, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51664, tmerc, 21500, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51665, tmerc, 21500, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51666, ortho, 21500, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51667, ortho, 21500, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51668, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51669, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51670, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51671, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51672, laea, 21500, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 51673, laea, 21500, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21500 +b=21500 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51674, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51675, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51676, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51677, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51678, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 51679, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59900, longlat, 71492000, 66854000, "+proj=longlat +a=71492000 +b=66854000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59901, longlat, 71492000, 66854000, "+proj=longlat +a=71492000 +b=66854000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59914, sinu, 71492000, 66854000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59915, sinu, 71492000, 66854000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59916, sinu, 71492000, 66854000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59917, sinu, 71492000, 66854000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59918, stere, 71492000, 66854000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59919, stere, 71492000, 66854000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59920, stere, 71492000, 66854000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59921, stere, 71492000, 66854000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59960, sinu, 71492000, 66854000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59961, sinu, 71492000, 66854000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59962, stere, 71492000, 66854000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59963, stere, 71492000, 66854000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59964, tmerc, 71492000, 66854000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59965, tmerc, 71492000, 66854000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59966, ortho, 71492000, 66854000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59967, ortho, 71492000, 66854000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59972, laea, 71492000, 66854000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 59973, laea, 71492000, 66854000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=71492000 +b=66854000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 59979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60100, longlat, 209100, 191400, "+proj=longlat +a=209100 +b=191400 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60101, longlat, 209100, 191400, "+proj=longlat +a=209100 +b=191400 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60114, sinu, 209100, 191400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60115, sinu, 209100, 191400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60116, sinu, 209100, 191400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60117, sinu, 209100, 191400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60118, stere, 209100, 191400, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60119, stere, 209100, 191400, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60120, stere, 209100, 191400, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60121, stere, 209100, 191400, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60160, sinu, 209100, 191400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60161, sinu, 209100, 191400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60162, stere, 209100, 191400, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60163, stere, 209100, 191400, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60164, tmerc, 209100, 191400, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60165, tmerc, 209100, 191400, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60166, ortho, 209100, 191400, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60167, ortho, 209100, 191400, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60172, laea, 209100, 191400, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60173, laea, 209100, 191400, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=209100 +b=191400 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60200, longlat, 256300, 244600, "+proj=longlat +a=256300 +b=244600 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60201, longlat, 256300, 244600, "+proj=longlat +a=256300 +b=244600 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60210, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60211, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60212, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60213, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60214, sinu, 256300, 244600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60215, sinu, 256300, 244600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60216, sinu, 256300, 244600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60217, sinu, 256300, 244600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60218, stere, 256300, 244600, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60219, stere, 256300, 244600, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60220, stere, 256300, 244600, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60221, stere, 256300, 244600, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60260, sinu, 256300, 244600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60261, sinu, 256300, 244600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60262, stere, 256300, 244600, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60263, stere, 256300, 244600, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60264, tmerc, 256300, 244600, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60265, tmerc, 256300, 244600, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60266, ortho, 256300, 244600, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60267, ortho, 256300, 244600, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60268, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60269, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60270, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60271, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60272, laea, 256300, 244600, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60273, laea, 256300, 244600, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=256300 +b=244600 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60274, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60275, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60276, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60277, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60278, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60279, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60300, longlat, 535600, 525800, "+proj=longlat +a=535600 +b=525800 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60301, longlat, 535600, 525800, "+proj=longlat +a=535600 +b=525800 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60310, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60311, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60312, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60313, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60314, sinu, 535600, 525800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60315, sinu, 535600, 525800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60316, sinu, 535600, 525800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60317, sinu, 535600, 525800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60318, stere, 535600, 525800, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60319, stere, 535600, 525800, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60320, stere, 535600, 525800, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60321, stere, 535600, 525800, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60360, sinu, 535600, 525800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60361, sinu, 535600, 525800, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60362, stere, 535600, 525800, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60363, stere, 535600, 525800, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60364, tmerc, 535600, 525800, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60365, tmerc, 535600, 525800, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60366, ortho, 535600, 525800, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60367, ortho, 535600, 525800, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60368, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60369, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60370, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60371, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60372, laea, 535600, 525800, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60373, laea, 535600, 525800, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=535600 +b=525800 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60374, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60375, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60376, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60377, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60378, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60379, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60400, longlat, 560000, "+proj=longlat +a=560000 +b=560000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60401, longlat, 560000, "+proj=longlat +a=560000 +b=560000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60410, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60411, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60412, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60413, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60414, sinu, 560000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60415, sinu, 560000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60416, sinu, 560000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60417, sinu, 560000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60418, stere, 560000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60419, stere, 560000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60420, stere, 560000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60421, stere, 560000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60460, sinu, 560000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60461, sinu, 560000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60462, stere, 560000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60463, stere, 560000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60464, tmerc, 560000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60465, tmerc, 560000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60466, ortho, 560000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60467, ortho, 560000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60468, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60469, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60470, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60471, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60472, laea, 560000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60473, laea, 560000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=560000 +b=560000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60474, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60475, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60476, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60477, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60478, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60479, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60500, longlat, 764000, "+proj=longlat +a=764000 +b=764000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60501, longlat, 764000, "+proj=longlat +a=764000 +b=764000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60510, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60511, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60512, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60513, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60514, sinu, 764000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60515, sinu, 764000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60516, sinu, 764000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60517, sinu, 764000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60518, stere, 764000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60519, stere, 764000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60520, stere, 764000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60521, stere, 764000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60560, sinu, 764000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60561, sinu, 764000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60562, stere, 764000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60563, stere, 764000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60564, tmerc, 764000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60565, tmerc, 764000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60566, ortho, 764000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60567, ortho, 764000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60568, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60569, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60570, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60571, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60572, laea, 764000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60573, laea, 764000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=764000 +b=764000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60574, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60575, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60576, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60577, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60578, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60579, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60600, longlat, 2575000, "+proj=longlat +a=2575000 +b=2575000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60601, longlat, 2575000, "+proj=longlat +a=2575000 +b=2575000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60610, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60611, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60612, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60613, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60614, sinu, 2575000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60615, sinu, 2575000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60616, sinu, 2575000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60617, sinu, 2575000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60618, stere, 2575000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60619, stere, 2575000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60620, stere, 2575000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60621, stere, 2575000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60660, sinu, 2575000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60661, sinu, 2575000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60662, stere, 2575000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60663, stere, 2575000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60664, tmerc, 2575000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60665, tmerc, 2575000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60666, ortho, 2575000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60667, ortho, 2575000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60668, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60669, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60670, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60671, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60672, laea, 2575000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60673, laea, 2575000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=2575000 +b=2575000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60674, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60675, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60676, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60677, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60678, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60679, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60700, longlat, 164000, 107000, "+proj=longlat +a=164000 +b=107000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60701, longlat, 164000, 107000, "+proj=longlat +a=164000 +b=107000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60710, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60711, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60712, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60713, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60714, sinu, 164000, 107000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60715, sinu, 164000, 107000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60716, sinu, 164000, 107000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60717, sinu, 164000, 107000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60718, stere, 164000, 107000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60719, stere, 164000, 107000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60720, stere, 164000, 107000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60721, stere, 164000, 107000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60760, sinu, 164000, 107000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60761, sinu, 164000, 107000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60762, stere, 164000, 107000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60763, stere, 164000, 107000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60764, tmerc, 164000, 107000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60765, tmerc, 164000, 107000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60766, ortho, 164000, 107000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60767, ortho, 164000, 107000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60768, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60769, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60770, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60771, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60772, laea, 164000, 107000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60773, laea, 164000, 107000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=164000 +b=107000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60774, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60775, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60776, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60777, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60778, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60779, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60800, longlat, 718000, "+proj=longlat +a=718000 +b=718000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60801, longlat, 718000, "+proj=longlat +a=718000 +b=718000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60810, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60811, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60812, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60813, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60814, sinu, 718000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60815, sinu, 718000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60816, sinu, 718000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60817, sinu, 718000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60818, stere, 718000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60819, stere, 718000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60820, stere, 718000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60821, stere, 718000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60860, sinu, 718000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60861, sinu, 718000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60862, stere, 718000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60863, stere, 718000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60864, tmerc, 718000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60865, tmerc, 718000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60866, ortho, 718000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60867, ortho, 718000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60868, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60869, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60870, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60871, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60872, laea, 718000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 60873, laea, 718000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=718000 +b=718000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60874, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60875, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60876, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60877, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60878, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60879, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60900, longlat, 115000, 105000, "+proj=longlat +a=115000 +b=105000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60901, longlat, 115000, 105000, "+proj=longlat +a=115000 +b=105000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60914, sinu, 115000, 105000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60915, sinu, 115000, 105000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60916, sinu, 115000, 105000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60917, sinu, 115000, 105000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60918, stere, 115000, 105000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60919, stere, 115000, 105000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60920, stere, 115000, 105000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60921, stere, 115000, 105000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60960, sinu, 115000, 105000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60961, sinu, 115000, 105000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60962, stere, 115000, 105000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60963, stere, 115000, 105000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60964, tmerc, 115000, 105000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60965, tmerc, 115000, 105000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60966, ortho, 115000, 105000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60967, ortho, 115000, 105000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60972, laea, 115000, 105000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 60973, laea, 115000, 105000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=115000 +b=105000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 60979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61000, longlat, 97000, 77000, "+proj=longlat +a=97000 +b=77000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61001, longlat, 97000, 77000, "+proj=longlat +a=97000 +b=77000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61010, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61011, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61012, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61013, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61014, sinu, 97000, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61015, sinu, 97000, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61016, sinu, 97000, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61017, sinu, 97000, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61018, stere, 97000, 77000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61019, stere, 97000, 77000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61020, stere, 97000, 77000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61021, stere, 97000, 77000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61060, sinu, 97000, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61061, sinu, 97000, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61062, stere, 97000, 77000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61063, stere, 97000, 77000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61064, tmerc, 97000, 77000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61065, tmerc, 97000, 77000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61066, ortho, 97000, 77000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61067, ortho, 97000, 77000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61068, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61069, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61070, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61071, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61072, laea, 97000, 77000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61073, laea, 97000, 77000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=97000 +b=77000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61074, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61075, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61076, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61077, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61078, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61079, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61100, longlat, 69000, 55000, "+proj=longlat +a=69000 +b=55000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61101, longlat, 69000, 55000, "+proj=longlat +a=69000 +b=55000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61114, sinu, 69000, 55000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61115, sinu, 69000, 55000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61116, sinu, 69000, 55000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61117, sinu, 69000, 55000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61118, stere, 69000, 55000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61119, stere, 69000, 55000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61120, stere, 69000, 55000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61121, stere, 69000, 55000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61160, sinu, 69000, 55000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61161, sinu, 69000, 55000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61162, stere, 69000, 55000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61163, stere, 69000, 55000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61164, tmerc, 69000, 55000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61165, tmerc, 69000, 55000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61166, ortho, 69000, 55000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61167, ortho, 69000, 55000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61172, laea, 69000, 55000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61173, laea, 69000, 55000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=69000 +b=55000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61200, longlat, 16000, "+proj=longlat +a=16000 +b=16000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61201, longlat, 16000, "+proj=longlat +a=16000 +b=16000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61210, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61211, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61212, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61213, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61214, sinu, 16000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61215, sinu, 16000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61216, sinu, 16000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61217, sinu, 16000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61218, stere, 16000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61219, stere, 16000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61220, stere, 16000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61221, stere, 16000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61260, sinu, 16000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61261, sinu, 16000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61262, stere, 16000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61263, stere, 16000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61264, tmerc, 16000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61265, tmerc, 16000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61266, ortho, 16000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61267, ortho, 16000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61268, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61269, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61270, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61271, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61272, laea, 16000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61273, laea, 16000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=16000 +b=16000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61274, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61275, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61276, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61277, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61278, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61279, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61300, longlat, 15000, 7500, "+proj=longlat +a=15000 +b=7500 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61301, longlat, 15000, 7500, "+proj=longlat +a=15000 +b=7500 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61310, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61311, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61312, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61313, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61314, sinu, 15000, 7500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61315, sinu, 15000, 7500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61316, sinu, 15000, 7500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61317, sinu, 15000, 7500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61318, stere, 15000, 7500, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61319, stere, 15000, 7500, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61320, stere, 15000, 7500, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61321, stere, 15000, 7500, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61360, sinu, 15000, 7500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61361, sinu, 15000, 7500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61362, stere, 15000, 7500, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61363, stere, 15000, 7500, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61364, tmerc, 15000, 7500, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61365, tmerc, 15000, 7500, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61366, ortho, 15000, 7500, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61367, ortho, 15000, 7500, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61368, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61369, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61370, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61371, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61372, laea, 15000, 7500, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61373, laea, 15000, 7500, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=7500 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61374, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61375, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61376, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61377, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61378, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61379, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61400, longlat, 15000, 8000, "+proj=longlat +a=15000 +b=8000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61401, longlat, 15000, 8000, "+proj=longlat +a=15000 +b=8000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61410, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61411, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61412, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61413, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61414, sinu, 15000, 8000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61415, sinu, 15000, 8000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61416, sinu, 15000, 8000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61417, sinu, 15000, 8000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61418, stere, 15000, 8000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61419, stere, 15000, 8000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61420, stere, 15000, 8000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61421, stere, 15000, 8000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61460, sinu, 15000, 8000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61461, sinu, 15000, 8000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61462, stere, 15000, 8000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61463, stere, 15000, 8000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61464, tmerc, 15000, 8000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61465, tmerc, 15000, 8000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61466, ortho, 15000, 8000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61467, ortho, 15000, 8000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61468, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61469, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61470, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61471, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61472, laea, 15000, 8000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61473, laea, 15000, 8000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=8000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61474, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61475, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61476, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61477, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61478, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61479, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61500, longlat, 18500, 13500, "+proj=longlat +a=18500 +b=13500 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61501, longlat, 18500, 13500, "+proj=longlat +a=18500 +b=13500 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61510, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61511, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61512, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61513, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61514, sinu, 18500, 13500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61515, sinu, 18500, 13500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61516, sinu, 18500, 13500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61517, sinu, 18500, 13500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61518, stere, 18500, 13500, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61519, stere, 18500, 13500, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61520, stere, 18500, 13500, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61521, stere, 18500, 13500, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61560, sinu, 18500, 13500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61561, sinu, 18500, 13500, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61562, stere, 18500, 13500, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61563, stere, 18500, 13500, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61564, tmerc, 18500, 13500, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61565, tmerc, 18500, 13500, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61566, ortho, 18500, 13500, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61567, ortho, 18500, 13500, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61568, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61569, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61570, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61571, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61572, laea, 18500, 13500, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61573, laea, 18500, 13500, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=18500 +b=13500 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61574, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61575, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61576, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61577, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61578, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61579, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61600, longlat, 74000, 34000, "+proj=longlat +a=74000 +b=34000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61601, longlat, 74000, 34000, "+proj=longlat +a=74000 +b=34000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61610, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61611, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61612, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61613, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61614, sinu, 74000, 34000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61615, sinu, 74000, 34000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61616, sinu, 74000, 34000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61617, sinu, 74000, 34000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61618, stere, 74000, 34000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61619, stere, 74000, 34000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61620, stere, 74000, 34000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61621, stere, 74000, 34000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61660, sinu, 74000, 34000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61661, sinu, 74000, 34000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61662, stere, 74000, 34000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61663, stere, 74000, 34000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61664, tmerc, 74000, 34000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61665, tmerc, 74000, 34000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61666, ortho, 74000, 34000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61667, ortho, 74000, 34000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61668, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61669, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61670, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61671, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61672, laea, 74000, 34000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61673, laea, 74000, 34000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=34000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61674, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61675, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61676, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61677, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61678, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61679, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61700, longlat, 55000, 31000, "+proj=longlat +a=55000 +b=31000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61701, longlat, 55000, 31000, "+proj=longlat +a=55000 +b=31000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61710, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61711, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61712, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61713, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61714, sinu, 55000, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61715, sinu, 55000, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61716, sinu, 55000, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61717, sinu, 55000, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61718, stere, 55000, 31000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61719, stere, 55000, 31000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61720, stere, 55000, 31000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61721, stere, 55000, 31000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61760, sinu, 55000, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61761, sinu, 55000, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61762, stere, 55000, 31000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61763, stere, 55000, 31000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61764, tmerc, 55000, 31000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61765, tmerc, 55000, 31000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61766, ortho, 55000, 31000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61767, ortho, 55000, 31000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61768, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61769, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61770, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61771, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61772, laea, 55000, 31000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 61773, laea, 55000, 31000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=55000 +b=31000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61774, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61775, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61776, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61777, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61778, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61779, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61800, longlat, 10000, "+proj=longlat +a=10000 +b=10000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61801, longlat, 10000, "+proj=longlat +a=10000 +b=10000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61810, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61811, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61812, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61813, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61814, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61815, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61816, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61817, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61818, stere, 10000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61819, stere, 10000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61820, stere, 10000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61821, stere, 10000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61860, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61861, sinu, 10000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61862, stere, 10000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61863, stere, 10000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61864, tmerc, 10000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61865, tmerc, 10000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61866, ortho, 10000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61867, ortho, 10000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61868, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61869, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61870, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61871, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61872, laea, 10000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 61873, laea, 10000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=10000 +b=10000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61874, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61875, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61876, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61877, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61878, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 61879, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69900, longlat, 60268000, 54364000, "+proj=longlat +a=60268000 +b=54364000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69901, longlat, 60268000, 54364000, "+proj=longlat +a=60268000 +b=54364000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69914, sinu, 60268000, 54364000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69915, sinu, 60268000, 54364000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69916, sinu, 60268000, 54364000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69917, sinu, 60268000, 54364000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69918, stere, 60268000, 54364000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69919, stere, 60268000, 54364000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69920, stere, 60268000, 54364000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69921, stere, 60268000, 54364000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69960, sinu, 60268000, 54364000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69961, sinu, 60268000, 54364000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69962, stere, 60268000, 54364000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69963, stere, 60268000, 54364000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69964, tmerc, 60268000, 54364000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69965, tmerc, 60268000, 54364000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69966, ortho, 60268000, 54364000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69967, ortho, 60268000, 54364000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69972, laea, 60268000, 54364000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 69973, laea, 60268000, 54364000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=60268000 +b=54364000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 69979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70100, longlat, 581100, 577700, "+proj=longlat +a=581100 +b=577700 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70101, longlat, 581100, 577700, "+proj=longlat +a=581100 +b=577700 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70114, sinu, 581100, 577700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70115, sinu, 581100, 577700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70116, sinu, 581100, 577700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70117, sinu, 581100, 577700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70118, stere, 581100, 577700, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70119, stere, 581100, 577700, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70120, stere, 581100, 577700, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70121, stere, 581100, 577700, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70160, sinu, 581100, 577700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70161, sinu, 581100, 577700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70162, stere, 581100, 577700, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70163, stere, 581100, 577700, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70164, tmerc, 581100, 577700, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70165, tmerc, 581100, 577700, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70166, ortho, 581100, 577700, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70167, ortho, 581100, 577700, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70172, laea, 581100, 577700, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70173, laea, 581100, 577700, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=581100 +b=577700 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70200, longlat, 584700, "+proj=longlat +a=584700 +b=584700 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70201, longlat, 584700, "+proj=longlat +a=584700 +b=584700 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70210, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70211, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70212, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70213, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70214, sinu, 584700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70215, sinu, 584700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70216, sinu, 584700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70217, sinu, 584700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70218, stere, 584700, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70219, stere, 584700, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70220, stere, 584700, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70221, stere, 584700, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70260, sinu, 584700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70261, sinu, 584700, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70262, stere, 584700, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70263, stere, 584700, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70264, tmerc, 584700, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70265, tmerc, 584700, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70266, ortho, 584700, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70267, ortho, 584700, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70268, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70269, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70270, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70271, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70272, laea, 584700, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70273, laea, 584700, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=584700 +b=584700 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70274, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70275, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70276, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70277, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70278, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70279, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70300, longlat, 788900, "+proj=longlat +a=788900 +b=788900 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70301, longlat, 788900, "+proj=longlat +a=788900 +b=788900 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70310, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70311, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70312, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70313, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70314, sinu, 788900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70315, sinu, 788900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70316, sinu, 788900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70317, sinu, 788900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70318, stere, 788900, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70319, stere, 788900, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70320, stere, 788900, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70321, stere, 788900, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70360, sinu, 788900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70361, sinu, 788900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70362, stere, 788900, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70363, stere, 788900, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70364, tmerc, 788900, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70365, tmerc, 788900, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70366, ortho, 788900, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70367, ortho, 788900, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70368, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70369, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70370, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70371, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70372, laea, 788900, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70373, laea, 788900, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=788900 +b=788900 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70374, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70375, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70376, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70377, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70378, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70379, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70400, longlat, 761400, "+proj=longlat +a=761400 +b=761400 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70401, longlat, 761400, "+proj=longlat +a=761400 +b=761400 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70410, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70411, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70412, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70413, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70414, sinu, 761400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70415, sinu, 761400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70416, sinu, 761400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70417, sinu, 761400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70418, stere, 761400, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70419, stere, 761400, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70420, stere, 761400, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70421, stere, 761400, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70460, sinu, 761400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70461, sinu, 761400, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70462, stere, 761400, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70463, stere, 761400, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70464, tmerc, 761400, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70465, tmerc, 761400, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70466, ortho, 761400, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70467, ortho, 761400, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70468, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70469, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70470, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70471, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70472, laea, 761400, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70473, laea, 761400, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=761400 +b=761400 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70474, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70475, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70476, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70477, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70478, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70479, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70500, longlat, 240400, 232900, "+proj=longlat +a=240400 +b=232900 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70501, longlat, 240400, 232900, "+proj=longlat +a=240400 +b=232900 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70510, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70511, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70512, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70513, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70514, sinu, 240400, 232900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70515, sinu, 240400, 232900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70516, sinu, 240400, 232900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70517, sinu, 240400, 232900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70518, stere, 240400, 232900, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70519, stere, 240400, 232900, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70520, stere, 240400, 232900, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70521, stere, 240400, 232900, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70560, sinu, 240400, 232900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70561, sinu, 240400, 232900, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70562, stere, 240400, 232900, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70563, stere, 240400, 232900, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70564, tmerc, 240400, 232900, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70565, tmerc, 240400, 232900, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70566, ortho, 240400, 232900, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70567, ortho, 240400, 232900, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70568, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70569, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70570, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70571, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70572, laea, 240400, 232900, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 70573, laea, 240400, 232900, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=240400 +b=232900 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70574, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70575, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70576, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70577, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70578, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70579, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70600, longlat, 13000, "+proj=longlat +a=13000 +b=13000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70601, longlat, 13000, "+proj=longlat +a=13000 +b=13000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70610, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70611, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70612, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70613, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70614, sinu, 13000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70615, sinu, 13000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70616, sinu, 13000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70617, sinu, 13000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70618, stere, 13000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70619, stere, 13000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70620, stere, 13000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70621, stere, 13000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70660, sinu, 13000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70661, sinu, 13000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70662, stere, 13000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70663, stere, 13000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70664, tmerc, 13000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70665, tmerc, 13000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70666, ortho, 13000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70667, ortho, 13000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70668, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70669, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70670, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70671, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70672, laea, 13000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70673, laea, 13000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=13000 +b=13000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70674, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70675, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70676, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70677, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70678, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70679, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70700, longlat, 15000, "+proj=longlat +a=15000 +b=15000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70701, longlat, 15000, "+proj=longlat +a=15000 +b=15000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70710, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70711, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70712, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70713, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70714, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70715, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70716, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70717, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70718, stere, 15000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70719, stere, 15000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70720, stere, 15000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70721, stere, 15000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70760, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70761, sinu, 15000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70762, stere, 15000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70763, stere, 15000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70764, tmerc, 15000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70765, tmerc, 15000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70766, ortho, 15000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70767, ortho, 15000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70768, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70769, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70770, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70771, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70772, laea, 15000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70773, laea, 15000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=15000 +b=15000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70774, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70775, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70776, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70777, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70778, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70779, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70800, longlat, 21000, "+proj=longlat +a=21000 +b=21000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70801, longlat, 21000, "+proj=longlat +a=21000 +b=21000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70810, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70811, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70812, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70813, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70814, sinu, 21000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70815, sinu, 21000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70816, sinu, 21000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70817, sinu, 21000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70818, stere, 21000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70819, stere, 21000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70820, stere, 21000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70821, stere, 21000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70860, sinu, 21000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70861, sinu, 21000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70862, stere, 21000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70863, stere, 21000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70864, tmerc, 21000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70865, tmerc, 21000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70866, ortho, 21000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70867, ortho, 21000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70868, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70869, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70870, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70871, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70872, laea, 21000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70873, laea, 21000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=21000 +b=21000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70874, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70875, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70876, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70877, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70878, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70879, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70900, longlat, 31000, "+proj=longlat +a=31000 +b=31000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70901, longlat, 31000, "+proj=longlat +a=31000 +b=31000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70914, sinu, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70915, sinu, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70916, sinu, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70917, sinu, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70918, stere, 31000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70919, stere, 31000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70920, stere, 31000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70921, stere, 31000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70960, sinu, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70961, sinu, 31000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70962, stere, 31000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70963, stere, 31000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70964, tmerc, 31000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70965, tmerc, 31000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70966, ortho, 31000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70967, ortho, 31000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70972, laea, 31000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 70973, laea, 31000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=31000 +b=31000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 70979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71000, longlat, 27000, "+proj=longlat +a=27000 +b=27000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71001, longlat, 27000, "+proj=longlat +a=27000 +b=27000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71010, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71011, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71012, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71013, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71014, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71015, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71016, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71017, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71018, stere, 27000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71019, stere, 27000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71020, stere, 27000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71021, stere, 27000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71060, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71061, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71062, stere, 27000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71063, stere, 27000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71064, tmerc, 27000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71065, tmerc, 27000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71066, ortho, 27000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71067, ortho, 27000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71068, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71069, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71070, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71071, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71072, laea, 27000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71073, laea, 27000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71074, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71075, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71076, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71077, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71078, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71079, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71100, longlat, 42000, "+proj=longlat +a=42000 +b=42000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71101, longlat, 42000, "+proj=longlat +a=42000 +b=42000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71114, sinu, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71115, sinu, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71116, sinu, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71117, sinu, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71118, stere, 42000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71119, stere, 42000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71120, stere, 42000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71121, stere, 42000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71160, sinu, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71161, sinu, 42000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71162, stere, 42000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71163, stere, 42000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71164, tmerc, 42000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71165, tmerc, 42000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71166, ortho, 42000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71167, ortho, 42000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71172, laea, 42000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71173, laea, 42000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=42000 +b=42000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71200, longlat, 54000, "+proj=longlat +a=54000 +b=54000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71201, longlat, 54000, "+proj=longlat +a=54000 +b=54000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71210, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71211, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71212, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71213, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71214, sinu, 54000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71215, sinu, 54000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71216, sinu, 54000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71217, sinu, 54000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71218, stere, 54000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71219, stere, 54000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71220, stere, 54000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71221, stere, 54000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71260, sinu, 54000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71261, sinu, 54000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71262, stere, 54000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71263, stere, 54000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71264, tmerc, 54000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71265, tmerc, 54000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71266, ortho, 54000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71267, ortho, 54000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71268, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71269, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71270, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71271, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71272, laea, 54000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71273, laea, 54000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=54000 +b=54000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71274, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71275, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71276, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71277, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71278, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71279, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71300, longlat, 27000, "+proj=longlat +a=27000 +b=27000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71301, longlat, 27000, "+proj=longlat +a=27000 +b=27000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71310, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71311, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71312, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71313, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71314, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71315, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71316, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71317, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71318, stere, 27000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71319, stere, 27000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71320, stere, 27000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71321, stere, 27000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71360, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71361, sinu, 27000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71362, stere, 27000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71363, stere, 27000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71364, tmerc, 27000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71365, tmerc, 27000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71366, ortho, 27000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71367, ortho, 27000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71368, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71369, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71370, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71371, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71372, laea, 27000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71373, laea, 27000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=27000 +b=27000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71374, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71375, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71376, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71377, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71378, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71379, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71400, longlat, 33000, "+proj=longlat +a=33000 +b=33000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71401, longlat, 33000, "+proj=longlat +a=33000 +b=33000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71410, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71411, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71412, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71413, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71414, sinu, 33000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71415, sinu, 33000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71416, sinu, 33000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71417, sinu, 33000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71418, stere, 33000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71419, stere, 33000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71420, stere, 33000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71421, stere, 33000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71460, sinu, 33000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71461, sinu, 33000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71462, stere, 33000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71463, stere, 33000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71464, tmerc, 33000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71465, tmerc, 33000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71466, ortho, 33000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71467, ortho, 33000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71468, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71469, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71470, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71471, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71472, laea, 33000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71473, laea, 33000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=33000 +b=33000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71474, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71475, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71476, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71477, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71478, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71479, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71500, longlat, 77000, "+proj=longlat +a=77000 +b=77000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71501, longlat, 77000, "+proj=longlat +a=77000 +b=77000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71510, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71511, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71512, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71513, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71514, sinu, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71515, sinu, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71516, sinu, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71517, sinu, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71518, stere, 77000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71519, stere, 77000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71520, stere, 77000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71521, stere, 77000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71560, sinu, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71561, sinu, 77000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71562, stere, 77000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71563, stere, 77000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71564, tmerc, 77000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71565, tmerc, 77000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71566, ortho, 77000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71567, ortho, 77000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71568, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71569, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71570, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71571, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71572, laea, 77000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 71573, laea, 77000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=77000 +b=77000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71574, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71575, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71576, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71577, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71578, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 71579, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79900, longlat, 25559000, 24973000, "+proj=longlat +a=25559000 +b=24973000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79901, longlat, 25559000, 24973000, "+proj=longlat +a=25559000 +b=24973000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79914, sinu, 25559000, 24973000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79915, sinu, 25559000, 24973000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79916, sinu, 25559000, 24973000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79917, sinu, 25559000, 24973000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79918, stere, 25559000, 24973000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79919, stere, 25559000, 24973000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79920, stere, 25559000, 24973000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79921, stere, 25559000, 24973000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79960, sinu, 25559000, 24973000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79961, sinu, 25559000, 24973000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79962, stere, 25559000, 24973000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79963, stere, 25559000, 24973000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79964, tmerc, 25559000, 24973000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79965, tmerc, 25559000, 24973000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79966, ortho, 25559000, 24973000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79967, ortho, 25559000, 24973000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79972, laea, 25559000, 24973000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 79973, laea, 25559000, 24973000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=25559000 +b=24973000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 79979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80100, longlat, 1352600, "+proj=longlat +a=1352600 +b=1352600 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80101, longlat, 1352600, "+proj=longlat +a=1352600 +b=1352600 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80114, sinu, 1352600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80115, sinu, 1352600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80116, sinu, 1352600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80117, sinu, 1352600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80118, stere, 1352600, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80119, stere, 1352600, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80120, stere, 1352600, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80121, stere, 1352600, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80160, sinu, 1352600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80161, sinu, 1352600, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80162, stere, 1352600, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80163, stere, 1352600, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80164, tmerc, 1352600, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80165, tmerc, 1352600, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80166, ortho, 1352600, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80167, ortho, 1352600, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80172, laea, 1352600, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80173, laea, 1352600, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1352600 +b=1352600 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80200, longlat, 170000, "+proj=longlat +a=170000 +b=170000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80201, longlat, 170000, "+proj=longlat +a=170000 +b=170000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80210, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80211, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80212, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80213, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80214, sinu, 170000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80215, sinu, 170000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80216, sinu, 170000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80217, sinu, 170000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80218, stere, 170000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80219, stere, 170000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80220, stere, 170000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80221, stere, 170000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80260, sinu, 170000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80261, sinu, 170000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80262, stere, 170000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80263, stere, 170000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80264, tmerc, 170000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80265, tmerc, 170000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80266, ortho, 170000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80267, ortho, 170000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80268, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80269, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80270, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80271, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80272, laea, 170000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80273, laea, 170000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=170000 +b=170000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80274, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80275, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80276, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80277, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80278, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80279, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80300, longlat, 29000, "+proj=longlat +a=29000 +b=29000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80301, longlat, 29000, "+proj=longlat +a=29000 +b=29000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80310, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80311, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80312, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80313, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80314, sinu, 29000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80315, sinu, 29000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80316, sinu, 29000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80317, sinu, 29000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80318, stere, 29000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80319, stere, 29000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80320, stere, 29000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80321, stere, 29000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80360, sinu, 29000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80361, sinu, 29000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80362, stere, 29000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80363, stere, 29000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80364, tmerc, 29000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80365, tmerc, 29000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80366, ortho, 29000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80367, ortho, 29000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80368, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80369, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80370, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80371, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80372, laea, 29000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80373, laea, 29000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=29000 +b=29000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80374, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80375, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80376, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80377, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80378, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80379, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80400, longlat, 40000, "+proj=longlat +a=40000 +b=40000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80401, longlat, 40000, "+proj=longlat +a=40000 +b=40000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80410, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80411, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80412, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80413, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80414, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80415, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80416, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80417, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80418, stere, 40000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80419, stere, 40000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80420, stere, 40000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80421, stere, 40000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80460, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80461, sinu, 40000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80462, stere, 40000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80463, stere, 40000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80464, tmerc, 40000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80465, tmerc, 40000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80466, ortho, 40000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80467, ortho, 40000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80468, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80469, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80470, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80471, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80472, laea, 40000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80473, laea, 40000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=40000 +b=40000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80474, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80475, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80476, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80477, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80478, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80479, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80500, longlat, 74000, "+proj=longlat +a=74000 +b=74000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80501, longlat, 74000, "+proj=longlat +a=74000 +b=74000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80510, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80511, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80512, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80513, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80514, sinu, 74000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80515, sinu, 74000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80516, sinu, 74000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80517, sinu, 74000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80518, stere, 74000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80519, stere, 74000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80520, stere, 74000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80521, stere, 74000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80560, sinu, 74000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80561, sinu, 74000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80562, stere, 74000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80563, stere, 74000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80564, tmerc, 74000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80565, tmerc, 74000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80566, ortho, 74000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80567, ortho, 74000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80568, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80569, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80570, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80571, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80572, laea, 74000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80573, laea, 74000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=74000 +b=74000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80574, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80575, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80576, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80577, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80578, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80579, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80600, longlat, 79000, "+proj=longlat +a=79000 +b=79000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80601, longlat, 79000, "+proj=longlat +a=79000 +b=79000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80610, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80611, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80612, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80613, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80614, sinu, 79000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80615, sinu, 79000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80616, sinu, 79000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80617, sinu, 79000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80618, stere, 79000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80619, stere, 79000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80620, stere, 79000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80621, stere, 79000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80660, sinu, 79000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80661, sinu, 79000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80662, stere, 79000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80663, stere, 79000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80664, tmerc, 79000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80665, tmerc, 79000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80666, ortho, 79000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80667, ortho, 79000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80668, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80669, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80670, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80671, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80672, laea, 79000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80673, laea, 79000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=79000 +b=79000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80674, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80675, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80676, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80677, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80678, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80679, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80700, longlat, 96000, "+proj=longlat +a=96000 +b=96000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80701, longlat, 96000, "+proj=longlat +a=96000 +b=96000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80710, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80711, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80712, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80713, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80714, sinu, 96000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80715, sinu, 96000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80716, sinu, 96000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80717, sinu, 96000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80718, stere, 96000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80719, stere, 96000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80720, stere, 96000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80721, stere, 96000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80760, sinu, 96000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80761, sinu, 96000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80762, stere, 96000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80763, stere, 96000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80764, tmerc, 96000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80765, tmerc, 96000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80766, ortho, 96000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80767, ortho, 96000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80768, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80769, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80770, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80771, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80772, laea, 96000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 80773, laea, 96000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=96000 +b=96000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80774, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80775, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80776, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80777, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80778, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80779, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80800, longlat, 218000, 201000, "+proj=longlat +a=218000 +b=201000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80801, longlat, 218000, 201000, "+proj=longlat +a=218000 +b=201000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80810, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80811, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80812, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80813, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80814, sinu, 218000, 201000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80815, sinu, 218000, 201000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80816, sinu, 218000, 201000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80817, sinu, 218000, 201000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80818, stere, 218000, 201000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80819, stere, 218000, 201000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80820, stere, 218000, 201000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80821, stere, 218000, 201000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80860, sinu, 218000, 201000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80861, sinu, 218000, 201000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80862, stere, 218000, 201000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80863, stere, 218000, 201000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80864, tmerc, 218000, 201000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80865, tmerc, 218000, 201000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80866, ortho, 218000, 201000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80867, ortho, 218000, 201000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80868, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80869, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80870, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80871, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80872, laea, 218000, 201000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 80873, laea, 218000, 201000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=218000 +b=201000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80874, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80875, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80876, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80877, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80878, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 80879, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89900, longlat, 24764000, 24341000, "+proj=longlat +a=24764000 +b=24341000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89901, longlat, 24764000, 24341000, "+proj=longlat +a=24764000 +b=24341000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89914, sinu, 24764000, 24341000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89915, sinu, 24764000, 24341000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89916, sinu, 24764000, 24341000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89917, sinu, 24764000, 24341000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89918, stere, 24764000, 24341000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89919, stere, 24764000, 24341000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89920, stere, 24764000, 24341000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89921, stere, 24764000, 24341000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89960, sinu, 24764000, 24341000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89961, sinu, 24764000, 24341000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89962, stere, 24764000, 24341000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89963, stere, 24764000, 24341000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89964, tmerc, 24764000, 24341000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89965, tmerc, 24764000, 24341000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89966, ortho, 24764000, 24341000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89967, ortho, 24764000, 24341000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89972, laea, 24764000, 24341000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(iau2000, 89973, laea, 24764000, 24341000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=24764000 +b=24341000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 89979, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90100, longlat, 593000, "+proj=longlat +a=593000 +b=593000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90101, longlat, 593000, "+proj=longlat +a=593000 +b=593000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90110, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90111, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90112, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90113, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90114, sinu, 593000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90115, sinu, 593000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90116, sinu, 593000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90117, sinu, 593000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90118, stere, 593000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90119, stere, 593000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90120, stere, 593000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90121, stere, 593000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90160, sinu, 593000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90161, sinu, 593000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90162, stere, 593000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90163, stere, 593000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90164, tmerc, 593000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90165, tmerc, 593000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90166, ortho, 593000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90167, ortho, 593000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90168, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90169, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90170, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90171, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90172, laea, 593000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 90173, laea, 593000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=593000 +b=593000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90174, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90175, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90176, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90177, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90178, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 90179, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99900, longlat, 1195000, "+proj=longlat +a=1195000 +b=1195000 +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99901, longlat, 1195000, "+proj=longlat +a=1195000 +b=1195000 +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99910, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99911, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99912, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99913, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99914, sinu, 1195000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99915, sinu, 1195000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99916, sinu, 1195000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99917, sinu, 1195000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99918, stere, 1195000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99919, stere, 1195000, "+proj=stere +lat_0=90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99920, stere, 1195000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99921, stere, 1195000, "+proj=stere +lat_0=-90 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99960, sinu, 1195000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99961, sinu, 1195000, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99962, stere, 1195000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99963, stere, 1195000, "+proj=stere +lat_0=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99964, tmerc, 1195000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99965, tmerc, 1195000, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99966, ortho, 1195000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99967, ortho, 1195000, "+proj=ortho +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99968, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99969, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99970, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99971, "")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99972, laea, 1195000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S (iau2000, 99973, laea, 1195000, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=1195000 +b=1195000 +units=m +no_defs")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99974, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99975, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99976, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99977, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99978, "")
+//BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS (iau2000, 99979, "")
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+}}} // namespace boost::geometry::projections
+
+
+#endif
+
diff --git a/boost/geometry/srs/projections/impl/aasincos.hpp b/boost/geometry/srs/projections/impl/aasincos.hpp
new file mode 100644
index 0000000000..4678029bc0
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/aasincos.hpp
@@ -0,0 +1,114 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_AASINCOS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_AASINCOS_HPP
+
+
+#include <cmath>
+
+#include <boost/geometry/util/math.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+namespace detail
+{
+
+namespace aasincos
+{
+ template <typename T>
+ inline T ONE_TOL() { return 1.00000000000001; }
+ //template <typename T>
+ //inline T TOL() { return 0.000000001; }
+ template <typename T>
+ inline T ATOL() { return 1e-50; }
+}
+
+template <typename T>
+inline T aasin(T const& v)
+{
+ T av = 0;
+
+ if ((av = geometry::math::abs(v)) >= 1.0)
+ {
+ if (av > aasincos::ONE_TOL<T>())
+ {
+ BOOST_THROW_EXCEPTION( projection_exception(-19) );
+ }
+ return (v < 0.0 ? -geometry::math::half_pi<T>() : geometry::math::half_pi<T>());
+ }
+
+ return asin(v);
+}
+
+template <typename T>
+inline T aacos(T const& v)
+{
+ T av = 0;
+
+ if ((av = geometry::math::abs(v)) >= 1.0)
+ {
+ if (av > aasincos::ONE_TOL<T>())
+ {
+ BOOST_THROW_EXCEPTION( projection_exception(-19) );
+ }
+ return (v < 0.0 ? geometry::math::pi<T>() : 0.0);
+ }
+
+ return acos(v);
+}
+
+template <typename T>
+inline T asqrt(T const& v)
+{
+ return ((v <= 0) ? 0 : sqrt(v));
+}
+
+template <typename T>
+inline T aatan2(T const& n, T const& d)
+{
+ return ((geometry::math::abs(n) < aasincos::ATOL<T>()
+ && geometry::math::abs(d) < aasincos::ATOL<T>()) ? 0.0 : atan2(n, d));
+}
+
+
+} // namespace detail
+
+
+}}} // namespace boost::geometry::projections
+
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_AASINCOS_HPP
diff --git a/boost/geometry/srs/projections/impl/adjlon.hpp b/boost/geometry/srs/projections/impl/adjlon.hpp
new file mode 100644
index 0000000000..7f0c9ac4ca
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/adjlon.hpp
@@ -0,0 +1,70 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_ADJLON_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_ADJLON_HPP
+
+#include <boost/math/constants/constants.hpp>
+#include <boost/geometry/util/math.hpp>
+
+namespace boost { namespace geometry { namespace projections
+{
+
+namespace detail
+{
+
+/* reduce argument to range +/- PI */
+template <typename T>
+inline T adjlon (T lon)
+{
+ if (geometry::math::abs(lon) <= boost::math::constants::pi<T>())
+ {
+ return lon;
+ }
+
+ /* adjust to 0..2pi rad */
+ lon += boost::math::constants::pi<T>();
+ /* remove integral # of 'revolutions'*/
+ lon -= boost::math::constants::two_pi<T>() *
+ std::floor(lon / boost::math::constants::two_pi<T>());
+ /* adjust back to -pi..pi rad */
+ lon -= boost::math::constants::pi<T>();
+
+ return lon;
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_ADJLON_HPP
diff --git a/boost/geometry/srs/projections/impl/base_dynamic.hpp b/boost/geometry/srs/projections/impl/base_dynamic.hpp
new file mode 100644
index 0000000000..3979c34300
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/base_dynamic.hpp
@@ -0,0 +1,151 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP
+
+#include <string>
+
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+
+namespace boost { namespace geometry { namespace projections
+{
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+/*!
+ \brief projection virtual base class
+ \details class containing virtual methods
+ \ingroup projection
+ \tparam CT calculation type
+ \tparam P parameters type
+*/
+template <typename CT, typename P>
+class base_v
+{
+public :
+ /// Forward projection, from Latitude-Longitude to Cartesian
+ template <typename LL, typename XY>
+ inline bool forward(LL const& lp, XY& xy) const
+ {
+ try
+ {
+ pj_fwd(*this, this->params(), lp, xy);
+ return true;
+ }
+ catch (...)
+ {
+ return false;
+ }
+ }
+
+ /// Inverse projection, from Cartesian to Latitude-Longitude
+ template <typename LL, typename XY>
+ inline bool inverse(XY const& xy, LL& lp) const
+ {
+ try
+ {
+ pj_inv(*this, this->params(), xy, lp);
+ return true;
+ }
+ catch (projection_not_invertible_exception &)
+ {
+ BOOST_RETHROW
+ }
+ catch (...)
+ {
+ return false;
+ }
+ }
+
+ /// Forward projection using lon / lat and x / y separately
+ virtual void fwd(CT& lp_lon, CT& lp_lat, CT& xy_x, CT& xy_y) const = 0;
+
+ /// Inverse projection using x / y and lon / lat
+ virtual void inv(CT& xy_x, CT& xy_y, CT& lp_lon, CT& lp_lat) const = 0;
+
+ /// Returns name of projection
+ virtual std::string name() const = 0;
+
+ /// Returns parameters of projection
+ virtual P const& params() const = 0;
+
+ /// Returns mutable parameters of projection
+ virtual P& mutable_params() = 0;
+
+ virtual ~base_v() {}
+};
+
+// Base-virtual-forward
+template <typename Prj, typename CT, typename P>
+class base_v_f : public base_v<CT, P>
+{
+public:
+ base_v_f(P const& params)
+ : m_proj(params)
+ {}
+
+ template <typename ProjP>
+ base_v_f(P const& params, ProjP const& proj_params)
+ : m_proj(params, proj_params)
+ {}
+
+ virtual void fwd(CT& lp_lon, CT& lp_lat, CT& xy_x, CT& xy_y) const
+ {
+ m_proj.fwd(lp_lon, lp_lat, xy_x, xy_y);
+ }
+
+ virtual void inv(CT& , CT& , CT& , CT& ) const
+ {
+ BOOST_THROW_EXCEPTION(projection_not_invertible_exception(params().name));
+ }
+
+ virtual std::string name() const { return m_proj.name(); }
+
+ virtual P const& params() const { return m_proj.params(); }
+
+ virtual P& mutable_params() { return m_proj.mutable_params(); }
+
+protected:
+ Prj m_proj;
+};
+
+// Base-virtual-forward/inverse
+template <typename Prj, typename CT, typename P>
+class base_v_fi : public base_v_f<Prj, CT, P>
+{
+ typedef base_v_f<Prj, CT, P> base_t;
+
+public:
+ base_v_fi(P const& params)
+ : base_t(params)
+ {}
+
+ template <typename ProjP>
+ base_v_fi(P const& params, ProjP const& proj_params)
+ : base_t(params, proj_params)
+ {}
+
+ virtual void inv(CT& xy_x, CT& xy_y, CT& lp_lon, CT& lp_lat) const
+ {
+ this->m_proj.inv(xy_x, xy_y, lp_lon, lp_lat);
+ }
+};
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP
diff --git a/boost/geometry/srs/projections/impl/base_static.hpp b/boost/geometry/srs/projections/impl/base_static.hpp
new file mode 100644
index 0000000000..aa205bcee5
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/base_static.hpp
@@ -0,0 +1,139 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_STATIC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_STATIC_HPP
+
+#if defined(_MSC_VER)
+// For CRTP, *this is acceptable in constructor -> turn warning off
+#pragma warning( disable : 4355 )
+#endif // defined(_MSC_VER)
+
+
+#include <string>
+
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/srs/projections/impl/pj_fwd.hpp>
+#include <boost/geometry/srs/projections/impl/pj_inv.hpp>
+
+#include <boost/mpl/assert.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+template <typename Prj, typename CSTag, typename BGP, typename CT, typename P>
+struct static_projection_type
+{
+ BOOST_MPL_ASSERT_MSG((false),
+ NOT_IMPLEMENTED_FOR_THIS_PROJECTION_OR_CSTAG,
+ (Prj, CSTag));
+};
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(PROJ, P_SPHERE, P_SPHEROID) \
+template <typename BGP, typename CT, typename P> \
+struct static_projection_type<PROJ, srs_sphere_tag, BGP, CT, P> \
+{ \
+ typedef P_SPHERE<CT, P> type; \
+}; \
+template <typename BGP, typename CT, typename P> \
+struct static_projection_type<PROJ, srs_spheroid_tag, BGP, CT, P> \
+{ \
+ typedef P_SPHEROID<CT, P> type; \
+}; \
+
+// Base-template-forward
+template <typename Prj, typename CT, typename P>
+struct base_t_f
+{
+public:
+
+ inline base_t_f(Prj const& prj, P const& params)
+ : m_par(params), m_prj(prj)
+ {}
+
+ inline P const& params() const { return m_par; }
+
+ inline P& mutable_params() { return m_par; }
+
+ template <typename LL, typename XY>
+ inline bool forward(LL const& lp, XY& xy) const
+ {
+ try
+ {
+ pj_fwd(m_prj, m_par, lp, xy);
+ return true;
+ }
+ catch(...)
+ {
+ return false;
+ }
+ }
+
+ template <typename XY, typename LL>
+ inline bool inverse(XY const& , LL& ) const
+ {
+ BOOST_MPL_ASSERT_MSG((false),
+ PROJECTION_IS_NOT_INVERTABLE,
+ (Prj));
+ return false;
+ }
+
+ inline std::string name() const
+ {
+ return this->m_par.name;
+ }
+
+protected:
+
+ P m_par;
+ const Prj& m_prj;
+};
+
+// Base-template-forward/inverse
+template <typename Prj, typename CT, typename P>
+struct base_t_fi : public base_t_f<Prj, CT, P>
+{
+public :
+ inline base_t_fi(Prj const& prj, P const& params)
+ : base_t_f<Prj, CT, P>(prj, params)
+ {}
+
+ template <typename XY, typename LL>
+ inline bool inverse(XY const& xy, LL& lp) const
+ {
+ try
+ {
+ pj_inv(this->m_prj, this->m_par, xy, lp);
+ return true;
+ }
+ catch(...)
+ {
+ return false;
+ }
+ }
+};
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+
+}}} // namespace boost::geometry::projections
+
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_STATIC_HPP
diff --git a/boost/geometry/srs/projections/impl/dms_parser.hpp b/boost/geometry/srs/projections/impl/dms_parser.hpp
new file mode 100644
index 0000000000..bbecc9b1a2
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/dms_parser.hpp
@@ -0,0 +1,278 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_DMS_PARSER_HPP
+#define BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_DMS_PARSER_HPP
+
+// This file is totally revised from PROJ4 dmstor.c
+
+// PROJ4 is originally written by Gerald Evenden (then of the USGS)
+// PROJ4 is maintained by Frank Warmerdam
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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 <string>
+
+#include <boost/static_assert.hpp>
+
+#if !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST)
+#include <boost/lexical_cast.hpp>
+#endif // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST)
+
+#include <boost/algorithm/string.hpp>
+
+#include <boost/config.hpp>
+
+#include <boost/geometry/core/cs.hpp>
+
+#include <boost/geometry/util/math.hpp>
+
+namespace boost { namespace geometry { namespace projections
+{
+
+namespace detail
+{
+
+template <typename T>
+struct dms_result
+{
+ enum axis_selector {axis_lat = 1, axis_lon = 0};
+
+ private :
+ T m_angle;
+ axis_selector m_axis;
+
+ public :
+
+ explicit dms_result(T const& v, axis_selector ax)
+ : m_angle(v)
+ , m_axis(ax)
+ {}
+
+ inline axis_selector axis() const { return m_axis; }
+
+ inline T angle() const { return m_angle; }
+
+ template <typename CH, typename TR>
+ inline friend std::basic_ostream<CH, TR>& operator<<(std::basic_ostream<CH, TR>& os,
+ const dms_result& d)
+ {
+ os << d.m_angle;
+ return os;
+ }
+
+};
+
+
+template <typename T
+ , bool as_radian = true
+ , char N = 'N', char E = 'E', char S = 'S', char W = 'W' // translatable
+ , char MIN = '\'', char SEC = '"' // other char's possible
+ , char D = 'D', char R = 'R' // degree sign might be small o
+ >
+struct dms_parser
+{
+
+
+ // Question from Barend: can we compile-time select that it is case-sensitive/case-insensitive?
+ // We have to change the switch then -> specializations
+
+ // For now: make it (compile-time) case sensitive
+ static const int diff = 'a' - 'A';
+#ifndef __GNUC__
+ BOOST_STATIC_ASSERT((diff > 0)); // make sure we've the right assumption. GCC does not accept this here.
+#endif
+ static const char n_alter = N <= 'Z' ? N + diff : N - diff;
+ static const char e_alter = E <= 'Z' ? E + diff : E - diff;
+ static const char s_alter = S <= 'Z' ? S + diff : S - diff;
+ static const char w_alter = W <= 'Z' ? W + diff : W - diff;
+
+ static const char r_alter = R <= 'Z' ? R + diff : R - diff;
+
+ // degree is normally D (proj4) but might be superscript o
+ // Note d_alter is not correct then, so map it to NULL now, guarded by the while
+ static const char d_alter =
+ ((D >= 'A' && D <= 'Z') || (D >= 'a' && D <= 'z')) ? (D <= 'Z' ? D + diff : D - diff) : '\0';
+
+
+ struct dms_value
+ {
+ T dms[3];
+ bool has_dms[3];
+
+ dms_value()
+#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+ : dms{0, 0, 0}
+ , has_dms{false, false, false}
+#endif
+ {
+#ifdef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+ std::fill(dms, dms + 3, T(0));
+ std::fill(has_dms, has_dms + 3, false);
+#endif
+ }
+ };
+
+
+ template <size_t I>
+ static inline void assign_dms(dms_value& dms, std::string& value, bool& has_value)
+ {
+#if !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST)
+ dms.dms[I] = boost::lexical_cast<T>(value.c_str());
+#else // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST)
+ dms.dms[I] = std::atof(value.c_str());
+#endif // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST)
+ dms.has_dms[I] = true;
+ has_value = false;
+ value.clear();
+ }
+
+ static inline void process(dms_value& dms, std::string& value, bool& has_value)
+ {
+ if (has_value)
+ {
+ // Assign last one, sequentially
+ if (! dms.has_dms[0]) assign_dms<0>(dms, value, has_value);
+ else if (! dms.has_dms[1]) assign_dms<1>(dms, value, has_value);
+ else if (! dms.has_dms[2]) assign_dms<2>(dms, value, has_value);
+ }
+ }
+
+ dms_result<T> apply(std::string const& is) const
+ {
+ return apply(is.c_str());
+ }
+
+ dms_result<T> apply(const char* is) const
+ {
+ dms_value dms;
+ bool has_value = false;
+ std::string value;
+
+ T factor = 1.0; // + denotes N/E values, -1 denotes S/W values
+ typename dms_result<T>::axis_selector axis = dms_result<T>::axis_lon; // true denotes N/S values
+ bool in_radian = false; // true denotes values as "0.1R"
+
+ while(*is)
+ {
+ switch(*is)
+ {
+ case '-' :
+ if (! has_value && ! dms.has_dms[0])
+ {
+ factor = -factor;
+ }
+ break;
+ case N :
+ case n_alter :
+ axis = dms_result<T>::axis_lat;
+ break;
+ case S :
+ case s_alter :
+ axis = dms_result<T>::axis_lat;
+ factor = -factor;
+ break;
+ case E :
+ case e_alter :
+ axis = dms_result<T>::axis_lon;
+ break;
+ case W :
+ case w_alter :
+ axis = dms_result<T>::axis_lon;
+ factor = -factor;
+ break;
+ case D :
+ case d_alter :
+ if (! dms.has_dms[0] && has_value)
+ {
+ assign_dms<0>(dms, value, has_value);
+ }
+ break;
+ case R :
+ case r_alter :
+ if (! dms.has_dms[0] && has_value)
+ {
+ // specified value is in radian!
+ in_radian = true;
+ assign_dms<0>(dms, value, has_value);
+ }
+ break;
+ case MIN:
+ if (! dms.has_dms[1] && has_value)
+ {
+ assign_dms<1>(dms, value, has_value);
+ }
+ break;
+ case SEC :
+ if (! dms.has_dms[2] && has_value)
+ {
+ assign_dms<2>(dms, value, has_value);
+ }
+ break;
+ case ' ' :
+ case '\t' :
+ case '\n' :
+ process(dms, value, has_value);
+ break;
+ default :
+ value += *is;
+ has_value = true;
+ break;
+ }
+ is++;
+ }
+
+ // Assign last one, if any
+ process(dms, value, has_value);
+
+ T const d2r = math::d2r<T>();
+ T const r2d = math::r2d<T>();
+
+ return dms_result<T>(factor *
+ (in_radian && as_radian
+ ? dms.dms[0]
+ : in_radian && ! as_radian
+ ? dms.dms[0] * r2d
+ : ! in_radian && as_radian
+ ? dms.dms[0] * d2r + dms.dms[1] * d2r / 60.0 + dms.dms[2] * d2r / 3600.0
+ : dms.dms[0] + dms.dms[1] / 60.0 + dms.dms[2] / 3600.0)
+ , axis);
+ }
+};
+
+
+} // namespace detail
+
+
+}}} // namespace boost::geometry::projections
+
+
+#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_DMS_PARSER_HPP
diff --git a/boost/geometry/srs/projections/impl/factory_entry.hpp b/boost/geometry/srs/projections/impl/factory_entry.hpp
new file mode 100644
index 0000000000..7c587af5b6
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/factory_entry.hpp
@@ -0,0 +1,51 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_FACTORY_ENTRY_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_FACTORY_ENTRY_HPP
+
+#include <string>
+
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+
+namespace boost { namespace geometry { namespace projections
+{
+
+namespace detail
+{
+
+// forward declaration needed by some projections
+template <typename CT, typename Parameters>
+class factory;
+
+template <typename CT, typename P>
+class factory_entry
+{
+public:
+
+ virtual ~factory_entry() {}
+ virtual base_v<CT, P>* create_new(P const& par) const = 0;
+};
+
+template <typename CT, typename P>
+class base_factory
+{
+public:
+
+ virtual ~base_factory() {}
+ virtual void add_to_factory(std::string const& name, factory_entry<CT, P>* sub) = 0;
+};
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_FACTORY_ENTRY_HPP
diff --git a/boost/geometry/srs/projections/impl/function_overloads.hpp b/boost/geometry/srs/projections/impl/function_overloads.hpp
new file mode 100644
index 0000000000..43d33c6bea
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/function_overloads.hpp
@@ -0,0 +1,46 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_FUNCTION_OVERLOADS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_FUNCTION_OVERLOADS_HPP
+
+#include <cmath>
+
+namespace boost { namespace geometry { namespace projections
+{
+
+// Functions to resolve ambiguity when compiling with coordinates of different types
+/*
+template <typename T>
+inline T atan2(T const& a, T const& b)
+{
+ using std::atan2;
+ return atan2(a, b);
+}
+template <typename T>
+inline T pow(T const& a, T const& b)
+{
+ using std::pow;
+ return pow(a, b);
+}
+*/
+
+template <typename T>
+inline int int_floor(T const& f)
+{
+ using std::floor;
+ return int(floor(f));
+}
+
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_FUNCTION_OVERLOADS_HPP
diff --git a/boost/geometry/srs/projections/impl/geocent.hpp b/boost/geometry/srs/projections/impl/geocent.hpp
new file mode 100644
index 0000000000..8ae2f393ce
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/geocent.hpp
@@ -0,0 +1,487 @@
+// Boost.Geometry
+// This file is manually converted from PROJ4
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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:
+
+/***************************************************************************/
+/* RSC IDENTIFIER: GEOCENTRIC
+ *
+ * ABSTRACT
+ *
+ * This component provides conversions between Geodetic coordinates (latitude,
+ * longitude in radians and height in meters) and Geocentric coordinates
+ * (X, Y, Z) in meters.
+ *
+ * ERROR HANDLING
+ *
+ * This component checks parameters for valid values. If an invalid value
+ * is found, the error code is combined with the current error code using
+ * the bitwise or. This combining allows multiple error codes to be
+ * returned. The possible error codes are:
+ *
+ * GEOCENT_NO_ERROR : No errors occurred in function
+ * GEOCENT_LAT_ERROR : Latitude out of valid range
+ * (-90 to 90 degrees)
+ * GEOCENT_LON_ERROR : Longitude out of valid range
+ * (-180 to 360 degrees)
+ * GEOCENT_A_ERROR : Semi-major axis lessthan or equal to zero
+ * GEOCENT_B_ERROR : Semi-minor axis lessthan or equal to zero
+ * GEOCENT_A_LESS_B_ERROR : Semi-major axis less than semi-minor axis
+ *
+ *
+ * REUSE NOTES
+ *
+ * GEOCENTRIC is intended for reuse by any application that performs
+ * coordinate conversions between geodetic coordinates and geocentric
+ * coordinates.
+ *
+ *
+ * REFERENCES
+ *
+ * An Improved Algorithm for Geocentric to Geodetic Coordinate Conversion,
+ * Ralph Toms, February 1996 UCRL-JC-123138.
+ *
+ * Further information on GEOCENTRIC can be found in the Reuse Manual.
+ *
+ * GEOCENTRIC originated from : U.S. Army Topographic Engineering Center
+ * Geospatial Information Division
+ * 7701 Telegraph Road
+ * Alexandria, VA 22310-3864
+ *
+ * LICENSES
+ *
+ * None apply to this component.
+ *
+ * RESTRICTIONS
+ *
+ * GEOCENTRIC has no restrictions.
+ *
+ * ENVIRONMENT
+ *
+ * GEOCENTRIC was tested and certified in the following environments:
+ *
+ * 1. Solaris 2.5 with GCC version 2.8.1
+ * 2. Windows 95 with MS Visual C++ version 6
+ *
+ * MODIFICATIONS
+ *
+ * Date Description
+ * ---- -----------
+ * 25-02-97 Original Code
+ *
+ */
+
+
+#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_GEOCENT_HPP
+#define BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_GEOCENT_HPP
+
+
+#include <boost/geometry/util/math.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+namespace detail
+{
+
+/***************************************************************************/
+/*
+ * DEFINES
+ */
+static const long GEOCENT_NO_ERROR = 0x0000;
+static const long GEOCENT_LAT_ERROR = 0x0001;
+static const long GEOCENT_LON_ERROR = 0x0002;
+static const long GEOCENT_A_ERROR = 0x0004;
+static const long GEOCENT_B_ERROR = 0x0008;
+static const long GEOCENT_A_LESS_B_ERROR = 0x0010;
+
+template <typename T>
+struct GeocentricInfo
+{
+ T Geocent_a; /* Semi-major axis of ellipsoid in meters */
+ T Geocent_b; /* Semi-minor axis of ellipsoid */
+ T Geocent_a2; /* Square of semi-major axis */
+ T Geocent_b2; /* Square of semi-minor axis */
+ T Geocent_e2; /* Eccentricity squared */
+ T Geocent_ep2; /* 2nd eccentricity squared */
+};
+
+template <typename T>
+inline T COS_67P5()
+{
+ /*return 0.38268343236508977*/;
+ return cos(T(67.5) * math::d2r<T>()); /* cosine of 67.5 degrees */
+}
+template <typename T>
+inline T AD_C()
+{
+ return 1.0026000; /* Toms region 1 constant */
+}
+
+
+/***************************************************************************/
+/*
+ * FUNCTIONS
+ */
+
+template <typename T>
+inline long pj_Set_Geocentric_Parameters (GeocentricInfo<T> & gi, T const& a, T const& b)
+
+{ /* BEGIN Set_Geocentric_Parameters */
+/*
+ * The function Set_Geocentric_Parameters receives the ellipsoid parameters
+ * as inputs and sets the corresponding state variables.
+ *
+ * a : Semi-major axis, in meters. (input)
+ * b : Semi-minor axis, in meters. (input)
+ */
+ long Error_Code = GEOCENT_NO_ERROR;
+
+ if (a <= 0.0)
+ Error_Code |= GEOCENT_A_ERROR;
+ if (b <= 0.0)
+ Error_Code |= GEOCENT_B_ERROR;
+ if (a < b)
+ Error_Code |= GEOCENT_A_LESS_B_ERROR;
+ if (!Error_Code)
+ {
+ gi.Geocent_a = a;
+ gi.Geocent_b = b;
+ gi.Geocent_a2 = a * a;
+ gi.Geocent_b2 = b * b;
+ gi.Geocent_e2 = (gi.Geocent_a2 - gi.Geocent_b2) / gi.Geocent_a2;
+ gi.Geocent_ep2 = (gi.Geocent_a2 - gi.Geocent_b2) / gi.Geocent_b2;
+ }
+ return (Error_Code);
+} /* END OF Set_Geocentric_Parameters */
+
+
+template <typename T>
+inline void pj_Get_Geocentric_Parameters (GeocentricInfo<T> const& gi,
+ T & a,
+ T & b)
+{ /* BEGIN Get_Geocentric_Parameters */
+/*
+ * The function Get_Geocentric_Parameters returns the ellipsoid parameters
+ * to be used in geocentric coordinate conversions.
+ *
+ * a : Semi-major axis, in meters. (output)
+ * b : Semi-minor axis, in meters. (output)
+ */
+
+ a = gi.Geocent_a;
+ b = gi.Geocent_b;
+} /* END OF Get_Geocentric_Parameters */
+
+
+template <typename T>
+inline long pj_Convert_Geodetic_To_Geocentric (GeocentricInfo<T> const& gi,
+ T Longitude, T Latitude, T Height,
+ T & X, T & Y, T & Z)
+{ /* BEGIN Convert_Geodetic_To_Geocentric */
+/*
+ * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
+ * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
+ * according to the current ellipsoid parameters.
+ *
+ * Latitude : Geodetic latitude in radians (input)
+ * Longitude : Geodetic longitude in radians (input)
+ * Height : Geodetic height, in meters (input)
+ * X : Calculated Geocentric X coordinate, in meters (output)
+ * Y : Calculated Geocentric Y coordinate, in meters (output)
+ * Z : Calculated Geocentric Z coordinate, in meters (output)
+ *
+ */
+ long Error_Code = GEOCENT_NO_ERROR;
+ T Rn; /* Earth radius at location */
+ T Sin_Lat; /* sin(Latitude) */
+ T Sin2_Lat; /* Square of sin(Latitude) */
+ T Cos_Lat; /* cos(Latitude) */
+
+ static const T PI = math::pi<T>();
+ static const T PI_OVER_2 = math::half_pi<T>();
+
+ /*
+ ** Don't blow up if Latitude is just a little out of the value
+ ** range as it may just be a rounding issue. Also removed longitude
+ ** test, it should be wrapped by cos() and sin(). NFW for PROJ.4, Sep/2001.
+ */
+ if( Latitude < -PI_OVER_2 && Latitude > -1.001 * PI_OVER_2 )
+ Latitude = -PI_OVER_2;
+ else if( Latitude > PI_OVER_2 && Latitude < 1.001 * PI_OVER_2 )
+ Latitude = PI_OVER_2;
+ else if ((Latitude < -PI_OVER_2) || (Latitude > PI_OVER_2))
+ { /* Latitude out of range */
+ Error_Code |= GEOCENT_LAT_ERROR;
+ }
+
+ if (!Error_Code)
+ { /* no errors */
+ if (Longitude > PI)
+ Longitude -= (2*PI);
+ Sin_Lat = sin(Latitude);
+ Cos_Lat = cos(Latitude);
+ Sin2_Lat = Sin_Lat * Sin_Lat;
+ Rn = gi.Geocent_a / (sqrt(1.0e0 - gi.Geocent_e2 * Sin2_Lat));
+ X = (Rn + Height) * Cos_Lat * cos(Longitude);
+ Y = (Rn + Height) * Cos_Lat * sin(Longitude);
+ Z = ((Rn * (1 - gi.Geocent_e2)) + Height) * Sin_Lat;
+ }
+ return (Error_Code);
+} /* END OF Convert_Geodetic_To_Geocentric */
+
+/*
+ * The function Convert_Geocentric_To_Geodetic converts geocentric
+ * coordinates (X, Y, Z) to geodetic coordinates (latitude, longitude,
+ * and height), according to the current ellipsoid parameters.
+ *
+ * X : Geocentric X coordinate, in meters. (input)
+ * Y : Geocentric Y coordinate, in meters. (input)
+ * Z : Geocentric Z coordinate, in meters. (input)
+ * Latitude : Calculated latitude value in radians. (output)
+ * Longitude : Calculated longitude value in radians. (output)
+ * Height : Calculated height value, in meters. (output)
+ */
+
+#define BOOST_GEOMETRY_PROJECTIONS_USE_ITERATIVE_METHOD
+
+template <typename T>
+inline void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo<T> const& gi,
+ T X, T Y, T Z,
+ T & Longitude, T & Latitude, T & Height)
+{ /* BEGIN Convert_Geocentric_To_Geodetic */
+
+ static const T PI_OVER_2 = math::half_pi<T>();
+
+#if !defined(BOOST_GEOMETRY_PROJECTIONS_USE_ITERATIVE_METHOD)
+
+ static const T COS_67P5 = detail::COS_67P5<T>();
+ static const T AD_C = detail::AD_C<T>();
+
+/*
+ * The method used here is derived from 'An Improved Algorithm for
+ * Geocentric to Geodetic Coordinate Conversion', by Ralph Toms, Feb 1996
+ */
+
+/* Note: Variable names follow the notation used in Toms, Feb 1996 */
+
+ T W; /* distance from Z axis */
+ T W2; /* square of distance from Z axis */
+ T T0; /* initial estimate of vertical component */
+ T T1; /* corrected estimate of vertical component */
+ T S0; /* initial estimate of horizontal component */
+ T S1; /* corrected estimate of horizontal component */
+ T Sin_B0; /* sin(B0), B0 is estimate of Bowring aux variable */
+ T Sin3_B0; /* cube of sin(B0) */
+ T Cos_B0; /* cos(B0) */
+ T Sin_p1; /* sin(phi1), phi1 is estimated latitude */
+ T Cos_p1; /* cos(phi1) */
+ T Rn; /* Earth radius at location */
+ T Sum; /* numerator of cos(phi1) */
+ bool At_Pole; /* indicates location is in polar region */
+
+ At_Pole = false;
+ if (X != 0.0)
+ {
+ Longitude = atan2(Y,X);
+ }
+ else
+ {
+ if (Y > 0)
+ {
+ Longitude = PI_OVER_2;
+ }
+ else if (Y < 0)
+ {
+ Longitude = -PI_OVER_2;
+ }
+ else
+ {
+ At_Pole = true;
+ Longitude = 0.0;
+ if (Z > 0.0)
+ { /* north pole */
+ Latitude = PI_OVER_2;
+ }
+ else if (Z < 0.0)
+ { /* south pole */
+ Latitude = -PI_OVER_2;
+ }
+ else
+ { /* center of earth */
+ Latitude = PI_OVER_2;
+ Height = -Geocent_b;
+ return;
+ }
+ }
+ }
+ W2 = X*X + Y*Y;
+ W = sqrt(W2);
+ T0 = Z * AD_C;
+ S0 = sqrt(T0 * T0 + W2);
+ Sin_B0 = T0 / S0;
+ Cos_B0 = W / S0;
+ Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0;
+ T1 = Z + gi.Geocent_b * gi.Geocent_ep2 * Sin3_B0;
+ Sum = W - gi.Geocent_a * gi.Geocent_e2 * Cos_B0 * Cos_B0 * Cos_B0;
+ S1 = sqrt(T1*T1 + Sum * Sum);
+ Sin_p1 = T1 / S1;
+ Cos_p1 = Sum / S1;
+ Rn = gi.Geocent_a / sqrt(1.0 - gi.Geocent_e2 * Sin_p1 * Sin_p1);
+ if (Cos_p1 >= COS_67P5)
+ {
+ Height = W / Cos_p1 - Rn;
+ }
+ else if (Cos_p1 <= -COS_67P5)
+ {
+ Height = W / -Cos_p1 - Rn;
+ }
+ else
+ {
+ Height = Z / Sin_p1 + Rn * (gi.Geocent_e2 - 1.0);
+ }
+ if (At_Pole == false)
+ {
+ Latitude = atan(Sin_p1 / Cos_p1);
+ }
+#else /* defined(BOOST_GEOMETRY_PROJECTIONS_USE_ITERATIVE_METHOD) */
+/*
+* Reference...
+* ============
+* Wenzel, H.-G.(1985): Hochauflösende Kugelfunktionsmodelle für
+* das Gravitationspotential der Erde. Wiss. Arb. Univ. Hannover
+* Nr. 137, p. 130-131.
+
+* Programmed by GGA- Leibniz-Institute of Applied Geophysics
+* Stilleweg 2
+* D-30655 Hannover
+* Federal Republic of Germany
+* Internet: www.gga-hannover.de
+*
+* Hannover, March 1999, April 2004.
+* see also: comments in statements
+* remarks:
+* Mathematically exact and because of symmetry of rotation-ellipsoid,
+* each point (X,Y,Z) has at least two solutions (Latitude1,Longitude1,Height1) and
+* (Latitude2,Longitude2,Height2). Is point=(0.,0.,Z) (P=0.), so you get even
+* four solutions, every two symmetrical to the semi-minor axis.
+* Here Height1 and Height2 have at least a difference in order of
+* radius of curvature (e.g. (0,0,b)=> (90.,0.,0.) or (-90.,0.,-2b);
+* (a+100.)*(sqrt(2.)/2.,sqrt(2.)/2.,0.) => (0.,45.,100.) or
+* (0.,225.,-(2a+100.))).
+* The algorithm always computes (Latitude,Longitude) with smallest |Height|.
+* For normal computations, that means |Height|<10000.m, algorithm normally
+* converges after to 2-3 steps!!!
+* But if |Height| has the amount of length of ellipsoid's axis
+* (e.g. -6300000.m), algorithm needs about 15 steps.
+*/
+
+/* local definitions and variables */
+/* end-criterium of loop, accuracy of sin(Latitude) */
+static const T genau = 1.E-12;
+static const T genau2 = (genau*genau);
+static const int maxiter = 30;
+
+ T P; /* distance between semi-minor axis and location */
+ T RR; /* distance between center and location */
+ T CT; /* sin of geocentric latitude */
+ T ST; /* cos of geocentric latitude */
+ T RX;
+ T RK;
+ T RN; /* Earth radius at location */
+ T CPHI0; /* cos of start or old geodetic latitude in iterations */
+ T SPHI0; /* sin of start or old geodetic latitude in iterations */
+ T CPHI; /* cos of searched geodetic latitude */
+ T SPHI; /* sin of searched geodetic latitude */
+ T SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */
+ int iter; /* # of continuous iteration, max. 30 is always enough (s.a.) */
+
+ P = sqrt(X*X+Y*Y);
+ RR = sqrt(X*X+Y*Y+Z*Z);
+
+/* special cases for latitude and longitude */
+ if (P/gi.Geocent_a < genau) {
+
+/* special case, if P=0. (X=0., Y=0.) */
+ Longitude = 0.;
+
+/* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis
+ * of ellipsoid (=center of mass), Latitude becomes PI/2 */
+ if (RR/gi.Geocent_a < genau) {
+ Latitude = PI_OVER_2;
+ Height = -gi.Geocent_b;
+ return ;
+
+ }
+ }
+ else {
+/* ellipsoidal (geodetic) longitude
+ * interval: -PI < Longitude <= +PI */
+ Longitude=atan2(Y,X);
+ }
+
+/* --------------------------------------------------------------
+ * Following iterative algorithm was developed by
+ * "Institut für Erdmessung", University of Hannover, July 1988.
+ * Internet: www.ife.uni-hannover.de
+ * Iterative computation of CPHI,SPHI and Height.
+ * Iteration of CPHI and SPHI to 10**-12 radian resp.
+ * 2*10**-7 arcsec.
+ * --------------------------------------------------------------
+ */
+ CT = Z/RR;
+ ST = P/RR;
+ RX = 1.0/sqrt(1.0-gi.Geocent_e2*(2.0-gi.Geocent_e2)*ST*ST);
+ CPHI0 = ST*(1.0-gi.Geocent_e2)*RX;
+ SPHI0 = CT*RX;
+ iter = 0;
+
+/* loop to find sin(Latitude) resp. Latitude
+ * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */
+ do
+ {
+ iter++;
+ RN = gi.Geocent_a/sqrt(1.0-gi.Geocent_e2*SPHI0*SPHI0);
+
+/* ellipsoidal (geodetic) height */
+ Height = P*CPHI0+Z*SPHI0-RN*(1.0-gi.Geocent_e2*SPHI0*SPHI0);
+
+ RK = gi.Geocent_e2*RN/(RN+Height);
+ RX = 1.0/sqrt(1.0-RK*(2.0-RK)*ST*ST);
+ CPHI = ST*(1.0-RK)*RX;
+ SPHI = CT*RX;
+ SDPHI = SPHI*CPHI0-CPHI*SPHI0;
+ CPHI0 = CPHI;
+ SPHI0 = SPHI;
+ }
+ while (SDPHI*SDPHI > genau2 && iter < maxiter);
+
+/* ellipsoidal (geodetic) latitude */
+ Latitude=atan(SPHI/fabs(CPHI));
+
+ return;
+#endif /* defined(BOOST_GEOMETRY_PROJECTIONS_USE_ITERATIVE_METHOD) */
+} /* END OF Convert_Geocentric_To_Geodetic */
+
+
+} // namespace detail
+
+
+}}} // namespace boost::geometry::projections
+
+
+#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_GEOCENT_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_auth.hpp b/boost/geometry/srs/projections/impl/pj_auth.hpp
new file mode 100644
index 0000000000..899d0b25b1
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_auth.hpp
@@ -0,0 +1,95 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_AUTH_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_AUTH_HPP
+
+#include <cassert>
+#include <cmath>
+
+#include <boost/geometry/core/assert.hpp>
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail {
+
+static const int APA_SIZE = 3;
+
+/* determine latitude from authalic latitude */
+template <typename T>
+inline bool pj_authset(T const& es, T* APA)
+{
+ BOOST_GEOMETRY_ASSERT(0 != APA);
+
+ static const T P00 = .33333333333333333333;
+ static const T P01 = .17222222222222222222;
+ static const T P02 = .10257936507936507936;
+ static const T P10 = .06388888888888888888;
+ static const T P11 = .06640211640211640211;
+ static const T P20 = .01641501294219154443;
+
+ T t = 0;
+
+ // if (APA = (double *)pj_malloc(APA_SIZE * sizeof(double)))
+ {
+ APA[0] = es * P00;
+ t = es * es;
+ APA[0] += t * P01;
+ APA[1] = t * P10;
+ t *= es;
+ APA[0] += t * P02;
+ APA[1] += t * P11;
+ APA[2] = t * P20;
+ }
+ return true;
+}
+
+template <typename T>
+inline T pj_authlat(T const& beta, const T* APA)
+{
+ BOOST_GEOMETRY_ASSERT(0 != APA);
+
+ T const t = beta + beta;
+
+ return(beta + APA[0] * sin(t) + APA[1] * sin(t + t) + APA[2] * sin(t + t + t));
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_AUTH_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_datum_set.hpp b/boost/geometry/srs/projections/impl/pj_datum_set.hpp
new file mode 100644
index 0000000000..5301dc7cfe
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_datum_set.hpp
@@ -0,0 +1,213 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUM_SET_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUM_SET_HPP
+
+
+#include <string>
+#include <vector>
+
+#include <boost/algorithm/string.hpp>
+
+#include <boost/geometry/srs/projections/exception.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/pj_datums.hpp>
+#include <boost/geometry/srs/projections/impl/pj_param.hpp>
+#include <boost/geometry/srs/projections/par4.hpp>
+#include <boost/geometry/srs/projections/proj4.hpp>
+
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail {
+
+
+/* SEC_TO_RAD = Pi/180/3600 */
+template <typename T>
+inline T SEC_TO_RAD() { return 4.84813681109535993589914102357e-6; }
+
+template <typename BGParams, typename T>
+inline void pj_datum_add_defn(BGParams const& , std::vector<pvalue<T> >& pvalues)
+{
+ /* -------------------------------------------------------------------- */
+ /* Is there a datum definition in the parameter list? If so, */
+ /* add the defining values to the parameter list. Note that */
+ /* this will append the ellipse definition as well as the */
+ /* towgs84= and related parameters. It should also be pointed */
+ /* out that the addition is permanent rather than temporary */
+ /* like most other keyword expansion so that the ellipse */
+ /* definition will last into the pj_ell_set() function called */
+ /* after this one. */
+ /* -------------------------------------------------------------------- */
+ std::string name = pj_param(pvalues, "sdatum").s;
+ if(! name.empty())
+ {
+ /* find the datum definition */
+ const int n = sizeof(pj_datums) / sizeof(pj_datums[0]);
+ int index = -1;
+ for (int i = 0; i < n && index == -1; i++)
+ {
+ if(pj_datums[i].id == name)
+ {
+ index = i;
+ }
+ }
+
+ if (index == -1)
+ {
+ BOOST_THROW_EXCEPTION( projection_exception(-9) );
+ }
+
+ if(! pj_datums[index].ellipse_id.empty())
+ {
+ std::string entry("ellps=");
+ entry +=pj_datums[index].ellipse_id;
+ pvalues.push_back(pj_mkparam<T>(entry));
+ }
+
+ if(! pj_datums[index].defn.empty())
+ {
+ pvalues.push_back(pj_mkparam<T>(pj_datums[index].defn));
+ }
+ }
+}
+
+template <BOOST_GEOMETRY_PROJECTIONS_DETAIL_TYPENAME_PX, typename T>
+inline void pj_datum_add_defn(srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX> const& /*bg_params*/,
+ std::vector<pvalue<T> >& pvalues)
+{
+ typedef srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX> bg_parameters_type;
+ typedef typename srs::par4::detail::tuples_find_if
+ <
+ bg_parameters_type,
+ //srs::par4::detail::is_datum
+ srs::par4::detail::is_param_t<srs::par4::datum>::pred
+ >::type datum_type;
+ typedef typename srs::par4::detail::datum_traits
+ <
+ datum_type
+ > datum_traits;
+
+ // is unknown if datum parameter found but traits are not specialized
+ static const bool not_set_or_known = boost::is_same<datum_type, void>::value
+ || ! boost::is_same<typename datum_traits::ellps_type, void>::value;
+ BOOST_MPL_ASSERT_MSG((not_set_or_known), UNKNOWN_DATUM, (bg_parameters_type));
+
+ std::string defn = datum_traits::definition();
+
+ if (! defn.empty())
+ {
+ pvalues.push_back(pj_mkparam<T>(defn));
+ }
+}
+
+/************************************************************************/
+/* pj_datum_set() */
+/************************************************************************/
+
+template <typename BGParams, typename T>
+inline void pj_datum_set(BGParams const& bg_params, std::vector<pvalue<T> >& pvalues, parameters<T>& projdef)
+{
+ static const T SEC_TO_RAD = detail::SEC_TO_RAD<T>();
+
+ projdef.datum_type = PJD_UNKNOWN;
+
+ pj_datum_add_defn(bg_params, pvalues);
+
+/* -------------------------------------------------------------------- */
+/* Check for nadgrids parameter. */
+/* -------------------------------------------------------------------- */
+ std::string nadgrids = pj_param(pvalues, "snadgrids").s;
+ std::string towgs84 = pj_param(pvalues, "stowgs84").s;
+ if(! nadgrids.empty())
+ {
+ /* We don't actually save the value separately. It will continue
+ to exist int he param list for use in pj_apply_gridshift.c */
+
+ projdef.datum_type = PJD_GRIDSHIFT;
+ }
+
+/* -------------------------------------------------------------------- */
+/* Check for towgs84 parameter. */
+/* -------------------------------------------------------------------- */
+ else if(! towgs84.empty())
+ {
+ int parm_count = 0;
+
+ int n = sizeof(projdef.datum_params) / sizeof(projdef.datum_params[0]);
+
+ /* parse out the pvalues */
+ std::vector<std::string> parm;
+ boost::split(parm, towgs84, boost::is_any_of(" ,"));
+ for (std::vector<std::string>::const_iterator it = parm.begin();
+ it != parm.end() && parm_count < n;
+ ++it)
+ {
+ projdef.datum_params[parm_count++] = atof(it->c_str());
+ }
+
+ if( projdef.datum_params[3] != 0.0
+ || projdef.datum_params[4] != 0.0
+ || projdef.datum_params[5] != 0.0
+ || projdef.datum_params[6] != 0.0 )
+ {
+ projdef.datum_type = PJD_7PARAM;
+
+ /* transform from arc seconds to radians */
+ projdef.datum_params[3] *= SEC_TO_RAD;
+ projdef.datum_params[4] *= SEC_TO_RAD;
+ projdef.datum_params[5] *= SEC_TO_RAD;
+ /* transform from parts per million to scaling factor */
+ projdef.datum_params[6] =
+ (projdef.datum_params[6]/1000000.0) + 1;
+ }
+ else
+ {
+ projdef.datum_type = PJD_3PARAM;
+ }
+
+ /* Note that pj_init() will later switch datum_type to
+ PJD_WGS84 if shifts are all zero, and ellipsoid is WGS84 or GRS80 */
+ }
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUM_SET_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_datums.hpp b/boost/geometry/srs/projections/impl/pj_datums.hpp
new file mode 100644
index 0000000000..55da24a2ca
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_datums.hpp
@@ -0,0 +1,112 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUMS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUMS_HPP
+
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail {
+
+/*
+ * The ellipse code must match one from pj_ellps.c. The datum id should
+ * be kept to 12 characters or less if possible. Use the official OGC
+ * datum name for the comments if available.
+ */
+
+static const PJ_DATUMS pj_datums[] =
+{
+ /* id definition ellipse comments */
+ /* -- ---------- ------- -------- */
+ {"WGS84", "towgs84=0,0,0",
+ "WGS84", ""},
+
+ {"GGRS87", "towgs84=-199.87,74.79,246.62",
+ "GRS80", "Greek_Geodetic_Reference_System_1987"},
+
+ {"NAD83", "towgs84=0,0,0",
+ "GRS80", "North_American_Datum_1983"},
+
+ {"NAD27", "nadgrids=@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
+ "clrk66", "North_American_Datum_1927"},
+
+ {"potsdam", "towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7",
+ "bessel", "Potsdam Rauenberg 1950 DHDN"},
+
+ {"carthage", "towgs84=-263.0,6.0,431.0",
+ "clrk80ign", "Carthage 1934 Tunisia"},
+
+ {"hermannskogel", "towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
+ "bessel", "Hermannskogel"},
+
+ {"ire65", "towgs84=482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
+ "mod_airy", "Ireland 1965"},
+
+ {"nzgd49", "towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
+ "intl", "New Zealand Geodetic Datum 1949"},
+
+ {"OSGB36", "towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
+ "airy", "Airy 1830"}
+};
+
+
+static const PJ_PRIME_MERIDIANS pj_prime_meridians[] =
+{
+ /* id definition */
+ /* -- ---------- */
+ { "greenwich", "0dE" },
+ { "lisbon", "9d07'54.862\"W" },
+ { "paris", "2d20'14.025\"E" },
+ { "bogota", "74d04'51.3\"W" },
+ { "madrid", "3d41'16.58\"W" },
+ { "rome", "12d27'8.4\"E" },
+ { "bern", "7d26'22.5\"E" },
+ { "jakarta", "106d48'27.79\"E" },
+ { "ferro", "17d40'W" },
+ { "brussels", "4d22'4.71\"E" },
+ { "stockholm", "18d3'29.8\"E" },
+ { "athens", "23d42'58.815\"E" },
+ { "oslo", "10d43'22.5\"E" }
+};
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUMS_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_ell_set.hpp b/boost/geometry/srs/projections/impl/pj_ell_set.hpp
new file mode 100644
index 0000000000..6f5f14b780
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_ell_set.hpp
@@ -0,0 +1,205 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_ELL_SET_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_ELL_SET_HPP
+
+#include <string>
+#include <vector>
+
+#include <boost/geometry/formulas/eccentricity_sqr.hpp>
+#include <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/pj_ellps.hpp>
+#include <boost/geometry/srs/projections/impl/pj_param.hpp>
+#include <boost/geometry/srs/projections/proj4.hpp>
+
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail {
+
+/* set ellipsoid parameters a and es */
+template <typename T>
+inline T SIXTH() { return .1666666666666666667; } /* 1/6 */
+template <typename T>
+inline T RA4() { return .04722222222222222222; } /* 17/360 */
+template <typename T>
+inline T RA6() { return .02215608465608465608; } /* 67/3024 */
+template <typename T>
+inline T RV4() { return .06944444444444444444; } /* 5/72 */
+template <typename T>
+inline T RV6() { return .04243827160493827160; } /* 55/1296 */
+
+/* initialize geographic shape parameters */
+template <typename BGParams, typename T>
+inline void pj_ell_set(BGParams const& /*bg_params*/, std::vector<pvalue<T> >& parameters, T &a, T &es)
+{
+ T b = 0.0;
+ T e = 0.0;
+ std::string name;
+
+ /* check for varying forms of ellipsoid input */
+ a = es = 0.;
+
+ /* R takes precedence */
+ if (pj_param(parameters, "tR").i)
+ a = pj_param(parameters, "dR").f;
+ else { /* probable elliptical figure */
+
+ /* check if ellps present and temporarily append its values to pl */
+ name = pj_param(parameters, "sellps").s;
+ if (! name.empty())
+ {
+ const int n = sizeof(pj_ellps) / sizeof(pj_ellps[0]);
+ int index = -1;
+ for (int i = 0; i < n && index == -1; i++)
+ {
+ if(pj_ellps[i].id == name)
+ {
+ index = i;
+ }
+ }
+
+ if (index == -1) {
+ BOOST_THROW_EXCEPTION( projection_exception(-9) );
+ }
+
+ parameters.push_back(pj_mkparam<T>(pj_ellps[index].major));
+ parameters.push_back(pj_mkparam<T>(pj_ellps[index].ell));
+ }
+ a = pj_param(parameters, "da").f;
+ if (pj_param(parameters, "tes").i) /* eccentricity squared */
+ es = pj_param(parameters, "des").f;
+ else if (pj_param(parameters, "te").i) { /* eccentricity */
+ e = pj_param(parameters, "de").f;
+ es = e * e;
+ } else if (pj_param(parameters, "trf").i) { /* recip flattening */
+ es = pj_param(parameters, "drf").f;
+ if (!es) {
+ BOOST_THROW_EXCEPTION( projection_exception(-10) );
+ }
+ es = 1./ es;
+ es = es * (2. - es);
+ } else if (pj_param(parameters, "tf").i) { /* flattening */
+ es = pj_param(parameters, "df").f;
+ es = es * (2. - es);
+ } else if (pj_param(parameters, "tb").i) { /* minor axis */
+ b = pj_param(parameters, "db").f;
+ es = 1. - (b * b) / (a * a);
+ } /* else es == 0. and sphere of radius a */
+ if (!b)
+ b = a * sqrt(1. - es);
+ /* following options turn ellipsoid into equivalent sphere */
+ if (pj_param(parameters, "bR_A").i) { /* sphere--area of ellipsoid */
+ a *= 1. - es * (SIXTH<T>() + es * (RA4<T>() + es * RA6<T>()));
+ es = 0.;
+ } else if (pj_param(parameters, "bR_V").i) { /* sphere--vol. of ellipsoid */
+ a *= 1. - es * (SIXTH<T>() + es * (RV4<T>() + es * RV6<T>()));
+ es = 0.;
+ } else if (pj_param(parameters, "bR_a").i) { /* sphere--arithmetic mean */
+ a = .5 * (a + b);
+ es = 0.;
+ } else if (pj_param(parameters, "bR_g").i) { /* sphere--geometric mean */
+ a = sqrt(a * b);
+ es = 0.;
+ } else if (pj_param(parameters, "bR_h").i) { /* sphere--harmonic mean */
+ a = 2. * a * b / (a + b);
+ es = 0.;
+ } else {
+ int i = pj_param(parameters, "tR_lat_a").i;
+ if (i || /* sphere--arith. */
+ pj_param(parameters, "tR_lat_g").i) { /* or geom. mean at latitude */
+ T tmp;
+
+ tmp = sin(pj_param(parameters, i ? "rR_lat_a" : "rR_lat_g").f);
+ if (geometry::math::abs(tmp) > geometry::math::half_pi<T>()) {
+ BOOST_THROW_EXCEPTION( projection_exception(-11) );
+ }
+ tmp = 1. - es * tmp * tmp;
+ a *= i ? .5 * (1. - es + tmp) / ( tmp * sqrt(tmp)) :
+ sqrt(1. - es) / tmp;
+ es = 0.;
+ }
+ }
+ }
+
+ /* some remaining checks */
+ if (es < 0.) {
+ BOOST_THROW_EXCEPTION( projection_exception(-12) );
+ }
+ if (a <= 0.) {
+ BOOST_THROW_EXCEPTION( projection_exception(-13) );
+ }
+}
+
+template <BOOST_GEOMETRY_PROJECTIONS_DETAIL_TYPENAME_PX, typename T>
+inline void pj_ell_set(srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX> const& bg_params,
+ std::vector<pvalue<T> >& /*parameters*/, T &a, T &es)
+{
+ typedef srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX> static_parameters_type;
+ typedef typename srs::par4::detail::pick_ellps
+ <
+ static_parameters_type
+ > pick_ellps;
+
+ typename pick_ellps::model_type model = pick_ellps::model(bg_params);
+
+ a = geometry::get_radius<0>(model);
+ T b = geometry::get_radius<2>(model);
+ es = 0.;
+ if (a != b)
+ {
+ es = formula::eccentricity_sqr<T>(model);
+
+ // Ignore all other parameters passed in string, at least for now
+ }
+
+ /* some remaining checks */
+ if (es < 0.) {
+ BOOST_THROW_EXCEPTION( projection_exception(-12) );
+ }
+ if (a <= 0.) {
+ BOOST_THROW_EXCEPTION( projection_exception(-13) );
+ }
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_ELL_SET_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_ellps.hpp b/boost/geometry/srs/projections/impl/pj_ellps.hpp
new file mode 100644
index 0000000000..586802778c
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_ellps.hpp
@@ -0,0 +1,98 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_ELLPS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_ELLPS_HPP
+
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail {
+
+static const PJ_ELLPS pj_ellps[] =
+{
+ {"MERIT", "a=6378137.0", "rf=298.257", "MERIT 1983"},
+ {"SGS85", "a=6378136.0", "rf=298.257", "Soviet Geodetic System 85"},
+ {"GRS80", "a=6378137.0", "rf=298.257222101", "GRS 1980(IUGG, 1980)"},
+ {"IAU76", "a=6378140.0", "rf=298.257", "IAU 1976"},
+ {"airy", "a=6377563.396", "b=6356256.910", "Airy 1830"},
+ {"APL4.9", "a=6378137.0.", "rf=298.25", "Appl. Physics. 1965"},
+ {"NWL9D", "a=6378145.0.", "rf=298.25", "Naval Weapons Lab., 1965"},
+ {"mod_airy", "a=6377340.189", "b=6356034.446", "Modified Airy"},
+ {"andrae", "a=6377104.43", "rf=300.0", "Andrae 1876 (Den., Iclnd.)"},
+ {"aust_SA", "a=6378160.0", "rf=298.25", "Australian Natl & S. Amer. 1969"},
+ {"GRS67", "a=6378160.0", "rf=298.2471674270", "GRS 67(IUGG 1967)"},
+ {"bessel", "a=6377397.155", "rf=299.1528128", "Bessel 1841"},
+ {"bess_nam", "a=6377483.865", "rf=299.1528128", "Bessel 1841 (Namibia)"},
+ {"clrk66", "a=6378206.4", "b=6356583.8", "Clarke 1866"},
+ {"clrk80", "a=6378249.145", "rf=293.4663", "Clarke 1880 mod."},
+ {"clrk80ign", "a=6378249.2", "rf=293.4660212936269", "Clarke 1880 (IGN)."},
+ {"CPM", "a=6375738.7", "rf=334.29", "Comm. des Poids et Mesures 1799"},
+ {"delmbr", "a=6376428.", "rf=311.5", "Delambre 1810 (Belgium)"},
+ {"engelis", "a=6378136.05", "rf=298.2566", "Engelis 1985"},
+ {"evrst30", "a=6377276.345", "rf=300.8017", "Everest 1830"},
+ {"evrst48", "a=6377304.063", "rf=300.8017", "Everest 1948"},
+ {"evrst56", "a=6377301.243", "rf=300.8017", "Everest 1956"},
+ {"evrst69", "a=6377295.664", "rf=300.8017", "Everest 1969"},
+ {"evrstSS", "a=6377298.556", "rf=300.8017", "Everest (Sabah & Sarawak)"},
+ {"fschr60", "a=6378166.", "rf=298.3", "Fischer (Mercury Datum) 1960"},
+ {"fschr60m", "a=6378155.", "rf=298.3", "Modified Fischer 1960"},
+ {"fschr68", "a=6378150.", "rf=298.3", "Fischer 1968"},
+ {"helmert", "a=6378200.", "rf=298.3", "Helmert 1906"},
+ {"hough", "a=6378270.0", "rf=297.", "Hough"},
+ {"intl", "a=6378388.0", "rf=297.", "International 1909 (Hayford)"},
+ {"krass", "a=6378245.0", "rf=298.3", "Krassovsky, 1942"},
+ {"kaula", "a=6378163.", "rf=298.24", "Kaula 1961"},
+ {"lerch", "a=6378139.", "rf=298.257", "Lerch 1979"},
+ {"mprts", "a=6397300.", "rf=191.", "Maupertius 1738"},
+ {"new_intl", "a=6378157.5", "b=6356772.2", "New International 1967"},
+ {"plessis", "a=6376523.", "b=6355863.", "Plessis 1817 (France)"},
+ {"SEasia", "a=6378155.0", "b=6356773.3205", "Southeast Asia"},
+ {"walbeck", "a=6376896.0", "b=6355834.8467", "Walbeck"},
+ {"WGS60", "a=6378165.0", "rf=298.3", "WGS 60"},
+ {"WGS66", "a=6378145.0", "rf=298.25", "WGS 66"},
+ {"WGS72", "a=6378135.0", "rf=298.26", "WGS 72"},
+ {"WGS84", "a=6378137.0", "rf=298.257223563", "WGS 84"},
+ {"sphere", "a=6370997.0", "b=6370997.0", "Normal Sphere (r=6370997)"}
+};
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_ELLPS_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_fwd.hpp b/boost/geometry/srs/projections/impl/pj_fwd.hpp
new file mode 100644
index 0000000000..73101b7f40
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_fwd.hpp
@@ -0,0 +1,101 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_FWD_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_FWD_HPP
+
+#include <boost/geometry/core/radian_access.hpp>
+#include <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/adjlon.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+
+#include <boost/math/constants/constants.hpp>
+
+/* general forward projection */
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail {
+
+/* forward projection entry */
+template <typename Prj, typename LL, typename XY, typename P>
+inline void pj_fwd(Prj const& prj, P const& par, LL const& ll, XY& xy)
+{
+ typedef typename P::type calc_t;
+ static const calc_t EPS = 1.0e-12;
+
+ using namespace detail;
+
+ calc_t lp_lon = geometry::get_as_radian<0>(ll);
+ calc_t lp_lat = geometry::get_as_radian<1>(ll);
+ calc_t const t = geometry::math::abs(lp_lat) - geometry::math::half_pi<calc_t>();
+
+ /* check for forward and latitude or longitude overange */
+ if (t > EPS || geometry::math::abs(lp_lon) > 10.)
+ {
+ BOOST_THROW_EXCEPTION( projection_exception(-14) );
+ }
+
+ if (geometry::math::abs(t) <= EPS)
+ {
+ lp_lat = lp_lat < 0. ? -geometry::math::half_pi<calc_t>() : geometry::math::half_pi<calc_t>();
+ }
+ else if (par.geoc)
+ {
+ lp_lat = atan(par.rone_es * tan(lp_lat));
+ }
+
+ lp_lon -= par.lam0; /* compute del lp.lam */
+ if (! par.over)
+ {
+ lp_lon = adjlon(lp_lon); /* post_forward del longitude */
+ }
+
+ calc_t x = 0;
+ calc_t y = 0;
+
+ prj.fwd(lp_lon, lp_lat, x, y);
+ geometry::set<0>(xy, par.fr_meter * (par.a * x + par.x0));
+ geometry::set<1>(xy, par.fr_meter * (par.a * y + par.y0));
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_FWD_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_gauss.hpp b/boost/geometry/srs/projections/impl/pj_gauss.hpp
new file mode 100644
index 0000000000..2c90870434
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_gauss.hpp
@@ -0,0 +1,142 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_GAUSS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_GAUSS_HPP
+
+
+#include <boost/geometry/util/math.hpp>
+
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail { namespace gauss {
+
+
+static const int MAX_ITER = 20;
+
+template <typename T>
+struct GAUSS
+{
+ T C;
+ T K;
+ T e;
+ T ratexp;
+};
+
+template <typename T>
+inline T srat(T const& esinp, T const& exp)
+{
+ return (pow((1.0 - esinp) / (1.0 + esinp), exp));
+}
+
+template <typename T>
+inline GAUSS<T> gauss_ini(T const& e, T const& phi0, T& chi, T& rc)
+{
+ static const T FORTPI = detail::FORTPI<T>();
+
+ using std::asin;
+ using std::cos;
+ using std::sin;
+ using std::sqrt;
+ using std::tan;
+
+ T sphi = 0;
+ T cphi = 0;
+ T es = 0;
+
+ GAUSS<T> en;
+ es = e * e;
+ en.e = e;
+ sphi = sin(phi0);
+ cphi = cos(phi0);
+ cphi *= cphi;
+
+ rc = sqrt(1.0 - es) / (1.0 - es * sphi * sphi);
+ en.C = sqrt(1.0 + es * cphi * cphi / (1.0 - es));
+ chi = asin(sphi / en.C);
+ en.ratexp = 0.5 * en.C * e;
+ en.K = tan(0.5 * chi + FORTPI)
+ / (pow(tan(0.5 * phi0 + FORTPI), en.C) * srat(en.e * sphi, en.ratexp));
+
+ return en;
+}
+
+template <typename T>
+inline void gauss(GAUSS<T> const& en, T& lam, T& phi)
+{
+ static const T FORTPI = detail::FORTPI<T>();
+
+ phi = 2.0 * atan(en.K * pow(tan(0.5 * phi + FORTPI), en.C)
+ * srat(en.e * sin(phi), en.ratexp) ) - geometry::math::half_pi<T>();
+
+ lam *= en.C;
+}
+
+template <typename T>
+inline void inv_gauss(GAUSS<T> const& en, T& lam, T& phi)
+{
+ static const T FORTPI = detail::FORTPI<T>();
+ static const T DEL_TOL = 1e-14;
+
+ lam /= en.C;
+ const T num = pow(tan(0.5 * phi + FORTPI) / en.K, 1.0 / en.C);
+
+ int i = 0;
+ for (i = MAX_ITER; i; --i)
+ {
+ const T elp_phi = 2.0 * atan(num * srat(en.e * sin(phi), - 0.5 * en.e)) - geometry::math::half_pi<T>();
+
+ if (geometry::math::abs(elp_phi - phi) < DEL_TOL)
+ {
+ break;
+ }
+ phi = elp_phi;
+ }
+
+ /* convergence failed */
+ if (!i)
+ {
+ BOOST_THROW_EXCEPTION( projection_exception(-17) );
+ }
+}
+
+}} // namespace detail::gauss
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_GAUSS_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_init.hpp b/boost/geometry/srs/projections/impl/pj_init.hpp
new file mode 100644
index 0000000000..8b93343bcd
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_init.hpp
@@ -0,0 +1,395 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_INIT_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_INIT_HPP
+
+#include <cstdlib>
+#include <string>
+#include <vector>
+
+#include <boost/algorithm/string.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/range.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/geometry/util/math.hpp>
+#include <boost/geometry/util/condition.hpp>
+
+#include <boost/geometry/srs/projections/impl/dms_parser.hpp>
+#include <boost/geometry/srs/projections/impl/pj_datum_set.hpp>
+#include <boost/geometry/srs/projections/impl/pj_datums.hpp>
+#include <boost/geometry/srs/projections/impl/pj_ell_set.hpp>
+#include <boost/geometry/srs/projections/impl/pj_param.hpp>
+#include <boost/geometry/srs/projections/impl/pj_units.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/proj4.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+
+namespace detail
+{
+
+template <typename BGParams, typename T>
+inline void pj_push_defaults(BGParams const& /*bg_params*/, parameters<T>& pin)
+{
+ pin.params.push_back(pj_mkparam<T>("ellps=WGS84"));
+
+ if (pin.name == "aea")
+ {
+ pin.params.push_back(pj_mkparam<T>("lat_1=29.5"));
+ pin.params.push_back(pj_mkparam<T>("lat_2=45.5 "));
+ }
+ else if (pin.name == "lcc")
+ {
+ pin.params.push_back(pj_mkparam<T>("lat_1=33"));
+ pin.params.push_back(pj_mkparam<T>("lat_2=45"));
+ }
+ else if (pin.name == "lagrng")
+ {
+ pin.params.push_back(pj_mkparam<T>("W=2"));
+ }
+}
+
+template <BOOST_GEOMETRY_PROJECTIONS_DETAIL_TYPENAME_PX, typename T>
+inline void pj_push_defaults(srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX> const& /*bg_params*/,
+ parameters<T>& pin)
+{
+ typedef srs::static_proj4<BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX> static_parameters_type;
+ typedef typename srs::par4::detail::pick_proj_tag
+ <
+ static_parameters_type
+ >::type proj_tag;
+
+ // statically defaulting to WGS84
+ //pin.params.push_back(pj_mkparam("ellps=WGS84"));
+
+ if (BOOST_GEOMETRY_CONDITION((boost::is_same<proj_tag, srs::par4::aea>::value)))
+ {
+ pin.params.push_back(pj_mkparam<T>("lat_1=29.5"));
+ pin.params.push_back(pj_mkparam<T>("lat_2=45.5 "));
+ }
+ else if (BOOST_GEOMETRY_CONDITION((boost::is_same<proj_tag, srs::par4::lcc>::value)))
+ {
+ pin.params.push_back(pj_mkparam<T>("lat_1=33"));
+ pin.params.push_back(pj_mkparam<T>("lat_2=45"));
+ }
+ else if (BOOST_GEOMETRY_CONDITION((boost::is_same<proj_tag, srs::par4::lagrng>::value)))
+ {
+ pin.params.push_back(pj_mkparam<T>("W=2"));
+ }
+}
+
+template <typename T>
+inline void pj_init_units(std::vector<pvalue<T> > const& params,
+ std::string const& sunits,
+ std::string const& sto_meter,
+ T & to_meter,
+ T & fr_meter,
+ T const& default_to_meter,
+ T const& default_fr_meter)
+{
+ std::string s;
+ std::string units = pj_param(params, sunits).s;
+ if (! units.empty())
+ {
+ const int n = sizeof(pj_units) / sizeof(pj_units[0]);
+ int index = -1;
+ for (int i = 0; i < n && index == -1; i++)
+ {
+ if(pj_units[i].id == units)
+ {
+ index = i;
+ }
+ }
+
+ if (index == -1) {
+ BOOST_THROW_EXCEPTION( projection_exception(-7) );
+ }
+ s = pj_units[index].to_meter;
+ }
+
+ if (s.empty())
+ {
+ s = pj_param(params, sto_meter).s;
+ }
+
+ if (! s.empty())
+ {
+ std::size_t const pos = s.find('/');
+ if (pos == std::string::npos)
+ {
+ to_meter = lexical_cast<T>(s);
+ }
+ else
+ {
+ T const numerator = lexical_cast<T>(s.substr(0, pos));
+ T const denominator = lexical_cast<T>(s.substr(pos + 1));
+ if (numerator == 0.0 || denominator == 0.0)
+ {
+ BOOST_THROW_EXCEPTION( projection_exception(-99) );
+ }
+ to_meter = numerator / denominator;
+ }
+ if (to_meter == 0.0)
+ {
+ BOOST_THROW_EXCEPTION( projection_exception(-99) );
+ }
+ fr_meter = 1. / to_meter;
+ }
+ else
+ {
+ to_meter = default_to_meter;
+ fr_meter = default_fr_meter;
+ }
+}
+
+/************************************************************************/
+/* pj_init() */
+/* */
+/* Main entry point for initialing a PJ projections */
+/* definition. Note that the projection specific function is */
+/* called to do the initial allocation so it can be created */
+/* large enough to hold projection specific parameters. */
+/************************************************************************/
+template <typename T, typename BGParams, typename R>
+inline parameters<T> pj_init(BGParams const& bg_params, R const& arguments, bool use_defaults = true)
+{
+ parameters<T> pin;
+ for (std::vector<std::string>::const_iterator it = boost::begin(arguments);
+ it != boost::end(arguments); it++)
+ {
+ pin.params.push_back(pj_mkparam<T>(*it));
+ }
+
+ /* check if +init present */
+ if (pj_param(pin.params, "tinit").i)
+ {
+ // maybe TODO: handle "init" parameter
+ //if (!(curr = get_init(&arguments, curr, pj_param(pin.params, "sinit").s)))
+ }
+
+ // find projection -> implemented in projection factory
+ pin.name = pj_param(pin.params, "sproj").s;
+ // exception thrown in projection<>
+ // TODO: consider throwing here both projection_unknown_id_exception and
+ // projection_not_named_exception in order to throw before other exceptions
+ //if (pin.name.empty())
+ //{ BOOST_THROW_EXCEPTION( projection_not_named_exception() ); }
+
+ // set defaults, unless inhibited
+ // GL-Addition, if use_defaults is false then defaults are ignored
+ if (use_defaults && ! pj_param(pin.params, "bno_defs").i)
+ {
+ // proj4 gets defaults from "proj_def.dat", file of 94/02/23 with a few defaults.
+ // Here manually
+ pj_push_defaults(bg_params, pin);
+ //curr = get_defaults(&arguments, curr, name);
+ }
+
+ /* allocate projection structure */
+ // done by BGParams constructor:
+ // pin.is_latlong = 0;
+ // pin.is_geocent = 0;
+ // pin.long_wrap_center = 0.0;
+ // pin.long_wrap_center = 0.0;
+ pin.is_long_wrap_set = false;
+
+ /* set datum parameters */
+ pj_datum_set(bg_params, pin.params, pin);
+
+ /* set ellipsoid/sphere parameters */
+ pj_ell_set(bg_params, pin.params, pin.a, pin.es);
+
+ pin.a_orig = pin.a;
+ pin.es_orig = pin.es;
+
+ pin.e = sqrt(pin.es);
+ pin.ra = 1. / pin.a;
+ pin.one_es = 1. - pin.es;
+ if (pin.one_es == 0.) {
+ BOOST_THROW_EXCEPTION( projection_exception(-6) );
+ }
+ pin.rone_es = 1./pin.one_es;
+
+ /* Now that we have ellipse information check for WGS84 datum */
+ if( pin.datum_type == PJD_3PARAM
+ && pin.datum_params[0] == 0.0
+ && pin.datum_params[1] == 0.0
+ && pin.datum_params[2] == 0.0
+ && pin.a == 6378137.0
+ && geometry::math::abs(pin.es - 0.006694379990) < 0.000000000050 )/*WGS84/GRS80*/
+ {
+ pin.datum_type = PJD_WGS84;
+ }
+
+ /* set pin.geoc coordinate system */
+ pin.geoc = (pin.es && pj_param(pin.params, "bgeoc").i);
+
+ /* over-ranging flag */
+ pin.over = pj_param(pin.params, "bover").i;
+
+ /* longitude center for wrapping */
+ pin.is_long_wrap_set = pj_param(pin.params, "tlon_wrap").i != 0;
+ if (pin.is_long_wrap_set)
+ pin.long_wrap_center = pj_param(pin.params, "rlon_wrap").f;
+
+ /* central meridian */
+ pin.lam0 = pj_param(pin.params, "rlon_0").f;
+
+ /* central latitude */
+ pin.phi0 = pj_param(pin.params, "rlat_0").f;
+
+ /* false easting and northing */
+ pin.x0 = pj_param(pin.params, "dx_0").f;
+ pin.y0 = pj_param(pin.params, "dy_0").f;
+
+ /* general scaling factor */
+ if (pj_param(pin.params, "tk_0").i)
+ pin.k0 = pj_param(pin.params, "dk_0").f;
+ else if (pj_param(pin.params, "tk").i)
+ pin.k0 = pj_param(pin.params, "dk").f;
+ else
+ pin.k0 = 1.;
+ if (pin.k0 <= 0.) {
+ BOOST_THROW_EXCEPTION( projection_exception(-31) );
+ }
+
+ /* set units */
+ pj_init_units(pin.params, "sunits", "sto_meter",
+ pin.to_meter, pin.fr_meter, 1., 1.);
+ pj_init_units(pin.params, "svunits", "svto_meter",
+ pin.vto_meter, pin.vfr_meter, pin.to_meter, pin.fr_meter);
+
+ /* prime meridian */
+ std::string pm = pj_param(pin.params, "spm").s;
+ if (! pm.empty())
+ {
+ std::string value;
+
+ int n = sizeof(pj_prime_meridians) / sizeof(pj_prime_meridians[0]);
+ for (int i = 0; i < n ; i++)
+ {
+ if(pj_prime_meridians[i].id == pm)
+ {
+ value = pj_prime_meridians[i].defn;
+ break;
+ }
+ }
+
+ dms_parser<T, true> parser;
+
+ // TODO: Handle case when lexical_cast is not used consistently.
+ // This should probably be done in dms_parser.
+ BOOST_TRY
+ {
+ if (value.empty()) {
+ pin.from_greenwich = parser.apply(pm).angle();
+ } else {
+ pin.from_greenwich = parser.apply(value).angle();
+ }
+ }
+ BOOST_CATCH(boost::bad_lexical_cast const&)
+ {
+ BOOST_THROW_EXCEPTION( projection_exception(-46) );
+ }
+ BOOST_CATCH_END
+ }
+ else
+ {
+ pin.from_greenwich = 0.0;
+ }
+
+ return pin;
+}
+
+/************************************************************************/
+/* pj_init_plus() */
+/* */
+/* Same as pj_init() except it takes one argument string with */
+/* individual arguments preceeded by '+', such as "+proj=utm */
+/* +zone=11 +ellps=WGS84". */
+/************************************************************************/
+template <typename T, typename BGParams>
+inline parameters<T> pj_init_plus(BGParams const& bg_params, std::string const& definition, bool use_defaults = true)
+{
+ const char* sep = " +";
+
+ /* split into arguments based on '+' and trim white space */
+
+ // boost::split splits on one character, here it should be on " +", so implementation below
+ // todo: put in different routine or sort out
+ std::vector<std::string> arguments;
+ std::string def = boost::trim_copy(definition);
+ boost::trim_left_if(def, boost::is_any_of(sep));
+
+ std::string::size_type loc = def.find(sep);
+ while (loc != std::string::npos)
+ {
+ std::string par = def.substr(0, loc);
+ boost::trim(par);
+ if (! par.empty())
+ {
+ arguments.push_back(par);
+ }
+
+ def.erase(0, loc);
+ boost::trim_left_if(def, boost::is_any_of(sep));
+ loc = def.find(sep);
+ }
+
+ if (! def.empty())
+ {
+ arguments.push_back(def);
+ }
+
+ /*boost::split(arguments, definition, boost::is_any_of("+"));
+ for (std::vector<std::string>::iterator it = arguments.begin(); it != arguments.end(); it++)
+ {
+ boost::trim(*it);
+ }*/
+ return pj_init<T>(bg_params, arguments, use_defaults);
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_INIT_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_inv.hpp b/boost/geometry/srs/projections/impl/pj_inv.hpp
new file mode 100644
index 0000000000..91cf4c50f6
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_inv.hpp
@@ -0,0 +1,82 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PJ_INV_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PJ_INV_HPP
+
+
+
+#include <boost/geometry/srs/projections/impl/adjlon.hpp>
+#include <boost/geometry/core/radian_access.hpp>
+#include <boost/geometry/util/math.hpp>
+
+/* general inverse projection */
+
+namespace boost { namespace geometry { namespace projections
+{
+
+namespace detail
+{
+
+ /* inverse projection entry */
+template <typename PRJ, typename LL, typename XY, typename PAR>
+inline void pj_inv(PRJ const& prj, PAR const& par, XY const& xy, LL& ll)
+{
+ typedef typename PAR::type calc_t;
+ static const calc_t EPS = 1.0e-12;
+
+ /* can't do as much preliminary checking as with forward */
+ /* descale and de-offset */
+ calc_t xy_x = (geometry::get<0>(xy) * par.to_meter - par.x0) * par.ra;
+ calc_t xy_y = (geometry::get<1>(xy) * par.to_meter - par.y0) * par.ra;
+ calc_t lon = 0, lat = 0;
+ prj.inv(xy_x, xy_y, lon, lat); /* inverse project */
+ lon += par.lam0; /* reduce from del lp.lam */
+ if (!par.over)
+ lon = adjlon(lon); /* adjust longitude to CM */
+ if (par.geoc && geometry::math::abs(geometry::math::abs(lat)-geometry::math::half_pi<calc_t>()) > EPS)
+ lat = atan(par.one_es * tan(lat));
+
+ geometry::set_from_radian<0>(ll, lon);
+ geometry::set_from_radian<1>(ll, lat);
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/impl/pj_mlfn.hpp b/boost/geometry/srs/projections/impl/pj_mlfn.hpp
new file mode 100644
index 0000000000..1317dd2e2f
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_mlfn.hpp
@@ -0,0 +1,121 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PJ_MLFN_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PJ_MLFN_HPP
+
+
+
+#include <boost/geometry/util/math.hpp>
+
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail {
+
+static const int EN_SIZE = 5;
+
+template <typename T>
+inline bool pj_enfn(T const& es, T* en)
+{
+ static const T C00 = 1.;
+ static const T C02 = .25;
+ static const T C04 = .046875;
+ static const T C06 = .01953125;
+ static const T C08 = .01068115234375;
+ static const T C22 = .75;
+ static const T C44 = .46875;
+ static const T C46 = .01302083333333333333;
+ static const T C48 = .00712076822916666666;
+ static const T C66 = .36458333333333333333;
+ static const T C68 = .00569661458333333333;
+ static const T C88 = .3076171875;
+
+ T t; //, *en;
+
+ //if (en = (double *)pj_malloc(EN_SIZE * sizeof(double)))
+ {
+ en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));
+ en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));
+ en[2] = (t = es * es) * (C44 - es * (C46 + es * C48));
+ en[3] = (t *= es) * (C66 - es * C68);
+ en[4] = t * es * C88;
+ }
+ // return en;
+ return true;
+}
+
+template <typename T>
+inline T pj_mlfn(T const& phi, T sphi, T cphi, const T *en)
+{
+ cphi *= sphi;
+ sphi *= sphi;
+ return(en[0] * phi - cphi * (en[1] + sphi*(en[2]
+ + sphi*(en[3] + sphi*en[4]))));
+}
+
+template <typename T>
+inline T pj_inv_mlfn(T const& arg, T const& es, const T *en)
+{
+ /* meridinal distance for ellipsoid and inverse
+ ** 8th degree - accurate to < 1e-5 meters when used in conjuction
+ ** with typical major axis values.
+ ** Inverse determines phi to EPS (1e-11) radians, about 1e-6 seconds.
+ */
+ static const T EPS = 1e-11;
+ static const int MAX_ITER = 10;
+
+ T s, t, phi, k = 1./(1.-es);
+ int i;
+
+ phi = arg;
+ for (i = MAX_ITER; i ; --i) { /* rarely goes over 2 iterations */
+ s = sin(phi);
+ t = 1. - es * s * s;
+ phi -= t = (pj_mlfn(phi, s, cos(phi), en) - arg) * (t * sqrt(t)) * k;
+ if (geometry::math::abs(t) < EPS)
+ return phi;
+ }
+ BOOST_THROW_EXCEPTION( projection_exception(-17) );
+ return phi;
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/impl/pj_msfn.hpp b/boost/geometry/srs/projections/impl/pj_msfn.hpp
new file mode 100644
index 0000000000..f99cc2c843
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_msfn.hpp
@@ -0,0 +1,59 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PJ_MSFN_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PJ_MSFN_HPP
+
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail {
+
+
+/* determine constant small m */
+template <typename T>
+inline T pj_msfn(T const& sinphi, T const& cosphi, T const& es)
+{
+ return (cosphi / sqrt (1. - es * sinphi * sinphi));
+}
+
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/impl/pj_param.hpp b/boost/geometry/srs/projections/impl/pj_param.hpp
new file mode 100644
index 0000000000..4f33ad837f
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_param.hpp
@@ -0,0 +1,161 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PJ_PARAM_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PJ_PARAM_HPP
+
+
+#include <string>
+#include <vector>
+
+#include <boost/geometry/srs/projections/impl/dms_parser.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+
+
+namespace boost { namespace geometry { namespace projections {
+
+namespace detail {
+
+
+
+/* create pvalue list entry */
+template <typename T>
+inline pvalue<T> pj_mkparam(std::string const& str)
+{
+ std::string name = str;
+ std::string value;
+ boost::trim_left_if(name, boost::is_any_of("+"));
+ std::string::size_type loc = name.find("=");
+ if (loc != std::string::npos)
+ {
+ value = name.substr(loc + 1);
+ name.erase(loc);
+ }
+
+
+ pvalue<T> newitem;
+ newitem.param = name;
+ newitem.s = value;
+ newitem.used = 0;
+ newitem.i = atoi(value.c_str());
+ newitem.f = atof(value.c_str());
+ return newitem;
+}
+
+/************************************************************************/
+/* pj_param() */
+/* */
+/* Test for presence or get pvalue value. The first */
+/* character in `opt' is a pvalue type which can take the */
+/* values: */
+/* */
+/* `t' - test for presence, return TRUE/FALSE in pvalue.i */
+/* `i' - integer value returned in pvalue.i */
+/* `d' - simple valued real input returned in pvalue.f */
+/* `r' - degrees (DMS translation applied), returned as */
+/* radians in pvalue.f */
+/* `s' - string returned in pvalue.s */
+/* `b' - test for t/T/f/F, return in pvalue.i */
+/* */
+/************************************************************************/
+
+template <typename T>
+inline pvalue<T> pj_param(std::vector<pvalue<T> > const& pl, std::string opt)
+{
+ char type = opt[0];
+ opt.erase(opt.begin());
+
+ pvalue<T> value;
+
+ /* simple linear lookup */
+ typedef typename std::vector<pvalue<T> >::const_iterator iterator;
+ for (iterator it = pl.begin(); it != pl.end(); it++)
+ {
+ if (it->param == opt)
+ {
+ //it->used = 1;
+ switch (type)
+ {
+ case 't':
+ value.i = 1;
+ break;
+ case 'i': /* integer input */
+ value.i = atoi(it->s.c_str());
+ break;
+ case 'd': /* simple real input */
+ value.f = atof(it->s.c_str());
+ break;
+ case 'r': /* degrees input */
+ {
+ dms_parser<T, true> parser;
+ value.f = parser.apply(it->s.c_str()).angle();
+ }
+ break;
+ case 's': /* char string */
+ value.s = it->s;
+ break;
+ case 'b': /* boolean */
+ switch (it->s[0])
+ {
+ case 'F': case 'f':
+ value.i = 0;
+ break;
+ case '\0': case 'T': case 't':
+ value.i = 1;
+ break;
+ default:
+ value.i = 0;
+ break;
+ }
+ break;
+ }
+ return value;
+ }
+
+ }
+
+ value.i = 0;
+ value.f = 0.0;
+ value.s = "";
+ return value;
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/impl/pj_phi2.hpp b/boost/geometry/srs/projections/impl/pj_phi2.hpp
new file mode 100644
index 0000000000..71f0cf1249
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_phi2.hpp
@@ -0,0 +1,73 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PHI2_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PHI2_HPP
+
+#include <boost/geometry/util/math.hpp>
+
+namespace boost { namespace geometry { namespace projections {
+namespace detail {
+
+template <typename T>
+inline T pj_phi2(T const& ts, T const& e)
+{
+ static const T TOL = 1.0e-10;
+ static const int N_ITER = 15;
+
+ T eccnth, Phi, con, dphi;
+ int i;
+
+ eccnth = .5 * e;
+ Phi = geometry::math::half_pi<T>() - 2. * atan (ts);
+ i = N_ITER;
+ do {
+ con = e * sin (Phi);
+ dphi = geometry::math::half_pi<T>() - 2. * atan (ts * pow((1. - con) /
+ (1. + con), eccnth)) - Phi;
+ Phi += dphi;
+ } while ( geometry::math::abs(dphi) > TOL && --i);
+ if (i <= 0)
+ BOOST_THROW_EXCEPTION( projection_exception(-18) );
+ return Phi;
+}
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/impl/pj_qsfn.hpp b/boost/geometry/srs/projections/impl/pj_qsfn.hpp
new file mode 100644
index 0000000000..606fab5e4e
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_qsfn.hpp
@@ -0,0 +1,95 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PJ_QSFN_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PJ_QSFN_HPP
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+namespace detail {
+
+/* determine small q */
+template <typename T>
+inline T pj_qsfn(T const& sinphi, T const& e, T const& one_es)
+{
+ static const T EPSILON = 1.0e-7;
+
+ if (e >= EPSILON)
+ {
+ T con = e * sinphi;
+ return (one_es * (sinphi / (1. - con * con) -
+ (.5 / e) * log ((1. - con) / (1. + con))));
+ } else
+ return (sinphi + sinphi);
+}
+
+
+static const int MAX_C = 9;
+
+template <typename T>
+struct AUTHALIC
+{
+ T C[MAX_C], CP[MAX_C], CQ[MAX_C];
+};
+
+/**
+ * @brief determine authalic latitude
+ * @param[in] phi geographic latitude
+ * @param[in] a initialized structure pointer
+ * @return authalic latitude
+ */
+template <typename T>
+inline T proj_qsfn(T const& phi, AUTHALIC<T> const& a)
+{
+ T s, s2, sum;
+ int i = MAX_C;
+
+ s = sin(phi);
+ s2 = s * s;
+ sum = a.CQ[MAX_C - 1];
+ while (--i) sum = a.CQ[i] + s2 * sum;
+ return(s * sum);
+}
+
+} // namespace detail
+
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/impl/pj_strerrno.hpp b/boost/geometry/srs/projections/impl/pj_strerrno.hpp
new file mode 100644
index 0000000000..22e0c48af4
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_strerrno.hpp
@@ -0,0 +1,144 @@
+// 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
+{
+
+ 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 */
+};
+
+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
diff --git a/boost/geometry/srs/projections/impl/pj_transform.hpp b/boost/geometry/srs/projections/impl/pj_transform.hpp
new file mode 100644
index 0000000000..8c2095642f
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_transform.hpp
@@ -0,0 +1,1009 @@
+// 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:
+
+// Copyright (c) 2000, Frank Warmerdam
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_PJ_TRANSFORM_HPP
+#define BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_PJ_TRANSFORM_HPP
+
+
+#include <boost/geometry/core/access.hpp>
+#include <boost/geometry/core/radian_access.hpp>
+
+#include <boost/geometry/srs/projections/impl/geocent.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/invalid_point.hpp>
+
+#include <boost/geometry/util/range.hpp>
+
+#include <cstring>
+#include <cmath>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+namespace detail
+{
+
+// -----------------------------------------------------------
+// Boost.Geometry helpers begin
+// -----------------------------------------------------------
+
+template
+<
+ typename Point,
+ bool HasCoord2 = (dimension<Point>::value > 2)
+>
+struct z_access
+{
+ typedef typename coordinate_type<Point>::type type;
+ static inline type get(Point const& point)
+ {
+ return geometry::get<2>(point);
+ }
+ static inline void set(Point & point, type const& h)
+ {
+ return geometry::set<2>(point, h);
+ }
+};
+
+template <typename Point>
+struct z_access<Point, false>
+{
+ typedef typename coordinate_type<Point>::type type;
+ static inline type get(Point const& )
+ {
+ return type(0);
+ }
+ static inline void set(Point & , type const& )
+ {}
+};
+
+template <typename XYorXYZ>
+inline typename z_access<XYorXYZ>::type
+get_z(XYorXYZ const& xy_or_xyz)
+{
+ return z_access<XYorXYZ>::get(xy_or_xyz);
+}
+
+template <typename XYorXYZ>
+inline void set_z(XYorXYZ & xy_or_xyz,
+ typename z_access<XYorXYZ>::type const& z)
+{
+ return z_access<XYorXYZ>::set(xy_or_xyz, z);
+}
+
+template
+<
+ typename Range,
+ bool AddZ = (dimension<typename boost::range_value<Range>::type>::value < 3)
+>
+struct range_wrapper
+{
+ typedef Range range_type;
+ typedef typename boost::range_value<Range>::type point_type;
+ typedef typename coordinate_type<point_type>::type coord_t;
+
+ range_wrapper(Range & range)
+ : m_range(range)
+ {}
+
+ range_type & get_range() { return m_range; }
+
+ coord_t get_z(std::size_t i) { return detail::get_z(range::at(m_range, i)); }
+ void set_z(std::size_t i, coord_t const& v) { return detail::set_z(range::at(m_range, i), v); }
+
+private:
+ Range & m_range;
+};
+
+template <typename Range>
+struct range_wrapper<Range, true>
+{
+ typedef Range range_type;
+ typedef typename boost::range_value<Range>::type point_type;
+ typedef typename coordinate_type<point_type>::type coord_t;
+
+ range_wrapper(Range & range)
+ : m_range(range)
+ , m_zs(boost::size(range), coord_t(0))
+ {}
+
+ range_type & get_range() { return m_range; }
+
+ coord_t get_z(std::size_t i) { return m_zs[i]; }
+ void set_z(std::size_t i, coord_t const& v) { m_zs[i] = v; }
+
+private:
+ Range & m_range;
+ std::vector<coord_t> m_zs;
+};
+
+// -----------------------------------------------------------
+// Boost.Geometry helpers end
+// -----------------------------------------------------------
+
+/*#ifndef SRS_WGS84_SEMIMAJOR
+#define SRS_WGS84_SEMIMAJOR 6378137.0
+#endif
+
+#ifndef SRS_WGS84_ESQUARED
+#define SRS_WGS84_ESQUARED 0.0066943799901413165
+#endif*/
+
+template <typename Par>
+inline typename Par::type Dx_BF(Par const& defn) { return defn.datum_params[0]; }
+template <typename Par>
+inline typename Par::type Dy_BF(Par const& defn) { return defn.datum_params[1]; }
+template <typename Par>
+inline typename Par::type Dz_BF(Par const& defn) { return defn.datum_params[2]; }
+template <typename Par>
+inline typename Par::type Rx_BF(Par const& defn) { return defn.datum_params[3]; }
+template <typename Par>
+inline typename Par::type Ry_BF(Par const& defn) { return defn.datum_params[4]; }
+template <typename Par>
+inline typename Par::type Rz_BF(Par const& defn) { return defn.datum_params[5]; }
+template <typename Par>
+inline typename Par::type M_BF(Par const& defn) { return defn.datum_params[6]; }
+
+/*
+** This table is intended to indicate for any given error code in
+** the range 0 to -44, whether that error will occur for all locations (ie.
+** it is a problem with the coordinate system as a whole) in which case the
+** value would be 0, or if the problem is with the point being transformed
+** in which case the value is 1.
+**
+** At some point we might want to move this array in with the error message
+** list or something, but while experimenting with it this should be fine.
+*/
+
+static const int transient_error[50] = {
+ /* 0 1 2 3 4 5 6 7 8 9 */
+ /* 0 to 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 10 to 19 */ 0, 0, 0, 0, 1, 1, 0, 1, 1, 1,
+ /* 20 to 29 */ 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ /* 30 to 39 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 40 to 49 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 };
+
+
+template <typename T, typename Range>
+inline int pj_geocentric_to_geodetic( T const& a, T const& es,
+ Range & range );
+template <typename T, typename Range>
+inline int pj_geodetic_to_geocentric( T const& a, T const& es,
+ Range & range );
+
+/************************************************************************/
+/* pj_transform() */
+/* */
+/* Currently this function doesn't recognise if two projections */
+/* are identical (to short circuit reprojection) because it is */
+/* difficult to compare PJ structures (since there are some */
+/* projection specific components). */
+/************************************************************************/
+
+template <typename SrcPrj, typename DstPrj2, typename Par, typename Range>
+inline bool pj_transform(SrcPrj const& srcprj, Par const& srcdefn,
+ DstPrj2 const& dstprj, Par const& dstdefn,
+ Range & range)
+
+{
+ typedef typename boost::range_value<Range>::type point_type;
+ typedef typename coordinate_type<point_type>::type coord_t;
+ static const std::size_t dimension = geometry::dimension<point_type>::value;
+ std::size_t point_count = boost::size(range);
+ bool result = true;
+
+/* -------------------------------------------------------------------- */
+/* Transform unusual input coordinate axis orientation to */
+/* standard form if needed. */
+/* -------------------------------------------------------------------- */
+ // Ignored
+
+/* -------------------------------------------------------------------- */
+/* Transform Z to meters if it isn't already. */
+/* -------------------------------------------------------------------- */
+ if( srcdefn.vto_meter != 1.0 && dimension > 2 )
+ {
+ for( std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = geometry::range::at(range, i);
+ set_z(point, get_z(point) * srcdefn.vto_meter);
+ }
+ }
+
+/* -------------------------------------------------------------------- */
+/* Transform geocentric source coordinates to lat/long. */
+/* -------------------------------------------------------------------- */
+ if( srcdefn.is_geocent )
+ {
+ // Point should be cartesian 3D (ECEF)
+ if (dimension < 3)
+ BOOST_THROW_EXCEPTION( projection_exception(PJD_ERR_GEOCENTRIC) );
+ //return PJD_ERR_GEOCENTRIC;
+
+ if( srcdefn.to_meter != 1.0 )
+ {
+ for(std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(range, i);
+ if( ! is_invalid_point(point) )
+ {
+ set<0>(point, get<0>(point) * srcdefn.to_meter);
+ set<1>(point, get<1>(point) * srcdefn.to_meter);
+ }
+ }
+ }
+
+ range_wrapper<Range, false> rng(range);
+ int err = pj_geocentric_to_geodetic( srcdefn.a_orig, srcdefn.es_orig,
+ rng );
+ if( err != 0 )
+ BOOST_THROW_EXCEPTION( projection_exception(err) );
+ //return err;
+
+ // NOTE: here 3D cartesian ECEF is converted into 3D geodetic LLH
+ }
+
+/* -------------------------------------------------------------------- */
+/* Transform source points to lat/long, if they aren't */
+/* already. */
+/* -------------------------------------------------------------------- */
+ else if( !srcdefn.is_latlong )
+ {
+ // Point should be cartesian 2D or 3D (map projection)
+
+ /* Check first if projection is invertible. */
+ /*if( (srcdefn->inv3d == NULL) && (srcdefn->inv == NULL))
+ {
+ pj_ctx_set_errno( pj_get_ctx(srcdefn), -17 );
+ pj_log( pj_get_ctx(srcdefn), PJ_LOG_ERROR,
+ "pj_transform(): source projection not invertible" );
+ return -17;
+ }*/
+
+ /* If invertible - First try inv3d if defined */
+ //if (srcdefn->inv3d != NULL)
+ //{
+ // /* Three dimensions must be defined */
+ // if ( z == NULL)
+ // {
+ // pj_ctx_set_errno( pj_get_ctx(srcdefn), PJD_ERR_GEOCENTRIC);
+ // return PJD_ERR_GEOCENTRIC;
+ // }
+
+ // for (i=0; i < point_count; i++)
+ // {
+ // XYZ projected_loc;
+ // XYZ geodetic_loc;
+
+ // projected_loc.u = x[point_offset*i];
+ // projected_loc.v = y[point_offset*i];
+ // projected_loc.w = z[point_offset*i];
+
+ // if (projected_loc.u == HUGE_VAL)
+ // continue;
+
+ // geodetic_loc = pj_inv3d(projected_loc, srcdefn);
+ // if( srcdefn->ctx->last_errno != 0 )
+ // {
+ // if( (srcdefn->ctx->last_errno != 33 /*EDOM*/
+ // && srcdefn->ctx->last_errno != 34 /*ERANGE*/ )
+ // && (srcdefn->ctx->last_errno > 0
+ // || srcdefn->ctx->last_errno < -44 || point_count == 1
+ // || transient_error[-srcdefn->ctx->last_errno] == 0 ) )
+ // return srcdefn->ctx->last_errno;
+ // else
+ // {
+ // geodetic_loc.u = HUGE_VAL;
+ // geodetic_loc.v = HUGE_VAL;
+ // geodetic_loc.w = HUGE_VAL;
+ // }
+ // }
+
+ // x[point_offset*i] = geodetic_loc.u;
+ // y[point_offset*i] = geodetic_loc.v;
+ // z[point_offset*i] = geodetic_loc.w;
+
+ // }
+
+ //}
+ //else
+ {
+ /* Fallback to the original PROJ.4 API 2d inversion - inv */
+ for( std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(range, i);
+
+ if( is_invalid_point(point) )
+ continue;
+
+ try
+ {
+ pj_inv(srcprj, srcdefn, point, point);
+ }
+ catch(projection_exception const& e)
+ {
+ if( (e.code() != 33 /*EDOM*/
+ && e.code() != 34 /*ERANGE*/ )
+ && (e.code() > 0
+ || e.code() < -44 /*|| point_count == 1*/
+ || transient_error[-e.code()] == 0) ) {
+ BOOST_RETHROW
+ } else {
+ set_invalid_point(point);
+ result = false;
+ if (point_count == 1)
+ return result;
+ }
+ }
+ }
+ }
+ }
+
+/* -------------------------------------------------------------------- */
+/* But if they are already lat long, adjust for the prime */
+/* meridian if there is one in effect. */
+/* -------------------------------------------------------------------- */
+ if( srcdefn.from_greenwich != 0.0 )
+ {
+ for( std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(range, i);
+
+ if( ! is_invalid_point(point) )
+ set<0>(point, get<0>(point) + srcdefn.from_greenwich);
+ }
+ }
+
+/* -------------------------------------------------------------------- */
+/* Do we need to translate from geoid to ellipsoidal vertical */
+/* datum? */
+/* -------------------------------------------------------------------- */
+ /*if( srcdefn->has_geoid_vgrids && z != NULL )
+ {
+ if( pj_apply_vgridshift( srcdefn, "sgeoidgrids",
+ &(srcdefn->vgridlist_geoid),
+ &(srcdefn->vgridlist_geoid_count),
+ 0, point_count, point_offset, x, y, z ) != 0 )
+ return pj_ctx_get_errno(srcdefn->ctx);
+ }*/
+
+/* -------------------------------------------------------------------- */
+/* Convert datums if needed, and possible. */
+/* -------------------------------------------------------------------- */
+ if ( ! pj_datum_transform( srcdefn, dstdefn, range ) )
+ {
+ result = false;
+ }
+
+/* -------------------------------------------------------------------- */
+/* Do we need to translate from ellipsoidal to geoid vertical */
+/* datum? */
+/* -------------------------------------------------------------------- */
+ /*if( dstdefn->has_geoid_vgrids && z != NULL )
+ {
+ if( pj_apply_vgridshift( dstdefn, "sgeoidgrids",
+ &(dstdefn->vgridlist_geoid),
+ &(dstdefn->vgridlist_geoid_count),
+ 1, point_count, point_offset, x, y, z ) != 0 )
+ return dstdefn->ctx->last_errno;
+ }*/
+
+/* -------------------------------------------------------------------- */
+/* But if they are staying lat long, adjust for the prime */
+/* meridian if there is one in effect. */
+/* -------------------------------------------------------------------- */
+ if( dstdefn.from_greenwich != 0.0 )
+ {
+ for( std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(range, i);
+
+ if( ! is_invalid_point(point) )
+ set<0>(point, get<0>(point) - dstdefn.from_greenwich);
+ }
+ }
+
+/* -------------------------------------------------------------------- */
+/* Transform destination latlong to geocentric if required. */
+/* -------------------------------------------------------------------- */
+ if( dstdefn.is_geocent )
+ {
+ // Point should be cartesian 3D (ECEF)
+ if (dimension < 3)
+ BOOST_THROW_EXCEPTION( projection_exception(PJD_ERR_GEOCENTRIC) );
+ //return PJD_ERR_GEOCENTRIC;
+
+ // NOTE: In the original code the return value of the following
+ // function is not checked
+ range_wrapper<Range, false> rng(range);
+ int err = pj_geodetic_to_geocentric( dstdefn.a_orig, dstdefn.es_orig,
+ rng );
+ if( err == -14 )
+ result = false;
+ else
+ BOOST_THROW_EXCEPTION( projection_exception(err) );
+
+ if( dstdefn.fr_meter != 1.0 )
+ {
+ for( std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(range, i);
+ if( ! is_invalid_point(point) )
+ {
+ set<0>(point, get<0>(point) * dstdefn.fr_meter);
+ set<1>(point, get<1>(point) * dstdefn.fr_meter);
+ }
+ }
+ }
+ }
+
+/* -------------------------------------------------------------------- */
+/* Transform destination points to projection coordinates, if */
+/* desired. */
+/* -------------------------------------------------------------------- */
+ else if( !dstdefn.is_latlong )
+ {
+
+ //if( dstdefn->fwd3d != NULL)
+ //{
+ // for( i = 0; i < point_count; i++ )
+ // {
+ // XYZ projected_loc;
+ // LPZ geodetic_loc;
+
+ // geodetic_loc.u = x[point_offset*i];
+ // geodetic_loc.v = y[point_offset*i];
+ // geodetic_loc.w = z[point_offset*i];
+
+ // if (geodetic_loc.u == HUGE_VAL)
+ // continue;
+
+ // projected_loc = pj_fwd3d( geodetic_loc, dstdefn);
+ // if( dstdefn->ctx->last_errno != 0 )
+ // {
+ // if( (dstdefn->ctx->last_errno != 33 /*EDOM*/
+ // && dstdefn->ctx->last_errno != 34 /*ERANGE*/ )
+ // && (dstdefn->ctx->last_errno > 0
+ // || dstdefn->ctx->last_errno < -44 || point_count == 1
+ // || transient_error[-dstdefn->ctx->last_errno] == 0 ) )
+ // return dstdefn->ctx->last_errno;
+ // else
+ // {
+ // projected_loc.u = HUGE_VAL;
+ // projected_loc.v = HUGE_VAL;
+ // projected_loc.w = HUGE_VAL;
+ // }
+ // }
+
+ // x[point_offset*i] = projected_loc.u;
+ // y[point_offset*i] = projected_loc.v;
+ // z[point_offset*i] = projected_loc.w;
+ // }
+
+ //}
+ //else
+ {
+ for(std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(range, i);
+
+ if( is_invalid_point(point) )
+ continue;
+
+ try {
+ pj_fwd(dstprj, dstdefn, point, point);
+ } catch (projection_exception const& e) {
+
+ if( (e.code() != 33 /*EDOM*/
+ && e.code() != 34 /*ERANGE*/ )
+ && (e.code() > 0
+ || e.code() < -44 /*|| point_count == 1*/
+ || transient_error[-e.code()] == 0) ) {
+ BOOST_RETHROW
+ } else {
+ set_invalid_point(point);
+ result = false;
+ if (point_count == 1)
+ return result;
+ }
+ }
+ }
+ }
+ }
+
+/* -------------------------------------------------------------------- */
+/* If a wrapping center other than 0 is provided, rewrap around */
+/* the suggested center (for latlong coordinate systems only). */
+/* -------------------------------------------------------------------- */
+ else if( dstdefn.is_latlong && dstdefn.is_long_wrap_set )
+ {
+ for( std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(range, i);
+ coord_t x = get_as_radian<0>(point);
+
+ if( is_invalid_point(point) )
+ continue;
+
+ // TODO - units-dependant constants could be used instead
+ while( x < dstdefn.long_wrap_center - math::pi<coord_t>() )
+ x += math::two_pi<coord_t>();
+ while( x > dstdefn.long_wrap_center + math::pi<coord_t>() )
+ x -= math::two_pi<coord_t>();
+
+ set_from_radian<0>(point, x);
+ }
+ }
+
+/* -------------------------------------------------------------------- */
+/* Transform Z from meters if needed. */
+/* -------------------------------------------------------------------- */
+ if( dstdefn.vto_meter != 1.0 && dimension > 2 )
+ {
+ for( std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = geometry::range::at(range, i);
+ set_z(point, get_z(point) * dstdefn.vfr_meter);
+ }
+ }
+
+/* -------------------------------------------------------------------- */
+/* Transform normalized axes into unusual output coordinate axis */
+/* orientation if needed. */
+/* -------------------------------------------------------------------- */
+ // Ignored
+
+ return result;
+}
+
+/************************************************************************/
+/* pj_geodetic_to_geocentric() */
+/************************************************************************/
+
+template <typename T, typename Range, bool AddZ>
+inline int pj_geodetic_to_geocentric( T const& a, T const& es,
+ range_wrapper<Range, AddZ> & range_wrapper )
+
+{
+ //typedef typename boost::range_iterator<Range>::type iterator;
+ typedef typename boost::range_value<Range>::type point_type;
+ //typedef typename coordinate_type<point_type>::type coord_t;
+
+ Range & rng = range_wrapper.get_range();
+ std::size_t point_count = boost::size(rng);
+
+ int ret_errno = 0;
+
+ T const b = (es == 0.0) ? a : a * sqrt(1-es);
+
+ GeocentricInfo<T> gi;
+ if( pj_Set_Geocentric_Parameters( gi, a, b ) != 0 )
+ {
+ return PJD_ERR_GEOCENTRIC;
+ }
+
+ for( std::size_t i = 0 ; i < point_count ; ++i )
+ {
+ point_type & point = range::at(rng, i);
+
+ if( is_invalid_point(point) )
+ continue;
+
+ T X = 0, Y = 0, Z = 0;
+ if( pj_Convert_Geodetic_To_Geocentric( gi,
+ get_as_radian<0>(point),
+ get_as_radian<1>(point),
+ range_wrapper.get_z(i), // Height
+ X, Y, Z ) != 0 )
+ {
+ ret_errno = -14;
+ set_invalid_point(point);
+ /* but keep processing points! */
+ }
+ else
+ {
+ set<0>(point, X);
+ set<1>(point, Y);
+ range_wrapper.set_z(i, Z);
+ }
+ }
+
+ return ret_errno;
+}
+
+/************************************************************************/
+/* pj_geodetic_to_geocentric() */
+/************************************************************************/
+
+template <typename T, typename Range, bool AddZ>
+inline int pj_geocentric_to_geodetic( T const& a, T const& es,
+ range_wrapper<Range, AddZ> & range_wrapper )
+
+{
+ //typedef typename boost::range_iterator<Range>::type iterator;
+ typedef typename boost::range_value<Range>::type point_type;
+ //typedef typename coordinate_type<point_type>::type coord_t;
+
+ Range & rng = range_wrapper.get_range();
+ std::size_t point_count = boost::size(rng);
+
+ T const b = (es == 0.0) ? a : a * sqrt(1-es);
+
+ GeocentricInfo<T> gi;
+ if( pj_Set_Geocentric_Parameters( gi, a, b ) != 0 )
+ {
+ return PJD_ERR_GEOCENTRIC;
+ }
+
+ for( std::size_t i = 0 ; i < point_count ; ++i )
+ {
+ point_type & point = range::at(rng, i);
+
+ if( is_invalid_point(point) )
+ continue;
+
+ T Longitude = 0, Latitude = 0, Height = 0;
+ pj_Convert_Geocentric_To_Geodetic( gi,
+ get<0>(point),
+ get<1>(point),
+ range_wrapper.get_z(i), // z
+ Longitude, Latitude, Height );
+
+ set_from_radian<0>(point, Longitude);
+ set_from_radian<1>(point, Latitude);
+ range_wrapper.set_z(i, Height); // Height
+ }
+
+ return 0;
+}
+
+/************************************************************************/
+/* pj_compare_datums() */
+/* */
+/* Returns TRUE if the two datums are identical, otherwise */
+/* FALSE. */
+/************************************************************************/
+
+template <typename Par>
+inline bool pj_compare_datums( Par & srcdefn, Par & dstdefn )
+{
+ if( srcdefn.datum_type != dstdefn.datum_type )
+ {
+ return false;
+ }
+ else if( srcdefn.a_orig != dstdefn.a_orig
+ || math::abs(srcdefn.es_orig - dstdefn.es_orig) > 0.000000000050 )
+ {
+ /* the tolerance for es is to ensure that GRS80 and WGS84 are
+ considered identical */
+ return false;
+ }
+ else if( srcdefn.datum_type == PJD_3PARAM )
+ {
+ return (srcdefn.datum_params[0] == dstdefn.datum_params[0]
+ && srcdefn.datum_params[1] == dstdefn.datum_params[1]
+ && srcdefn.datum_params[2] == dstdefn.datum_params[2]);
+ }
+ else if( srcdefn.datum_type == PJD_7PARAM )
+ {
+ return (srcdefn.datum_params[0] == dstdefn.datum_params[0]
+ && srcdefn.datum_params[1] == dstdefn.datum_params[1]
+ && srcdefn.datum_params[2] == dstdefn.datum_params[2]
+ && srcdefn.datum_params[3] == dstdefn.datum_params[3]
+ && srcdefn.datum_params[4] == dstdefn.datum_params[4]
+ && srcdefn.datum_params[5] == dstdefn.datum_params[5]
+ && srcdefn.datum_params[6] == dstdefn.datum_params[6]);
+ }
+ else if( srcdefn.datum_type == PJD_GRIDSHIFT )
+ {
+ return pj_param(srcdefn.params,"snadgrids").s
+ == pj_param(dstdefn.params,"snadgrids").s;
+ }
+ else
+ return true;
+}
+
+/************************************************************************/
+/* pj_geocentic_to_wgs84() */
+/************************************************************************/
+
+template <typename Par, typename Range, bool AddZ>
+inline int pj_geocentric_to_wgs84( Par const& defn,
+ range_wrapper<Range, AddZ> & range_wrapper )
+
+{
+ typedef typename boost::range_value<Range>::type point_type;
+ typedef typename coordinate_type<point_type>::type coord_t;
+
+ Range & rng = range_wrapper.get_range();
+ std::size_t point_count = boost::size(rng);
+
+ if( defn.datum_type == PJD_3PARAM )
+ {
+ for(std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(rng, i);
+
+ if( is_invalid_point(point) )
+ continue;
+
+ set<0>(point, get<0>(point) + Dx_BF(defn));
+ set<1>(point, get<1>(point) + Dy_BF(defn));
+ range_wrapper.set_z(i, range_wrapper.get_z(i) + Dz_BF(defn));
+ }
+ }
+ else if( defn.datum_type == PJD_7PARAM )
+ {
+ for(std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(rng, i);
+
+ if( is_invalid_point(point) )
+ continue;
+
+ coord_t x = get<0>(point);
+ coord_t y = get<1>(point);
+ coord_t z = range_wrapper.get_z(i);
+
+ coord_t x_out, y_out, z_out;
+
+ x_out = M_BF(defn)*( x - Rz_BF(defn)*y + Ry_BF(defn)*z) + Dx_BF(defn);
+ y_out = M_BF(defn)*( Rz_BF(defn)*x + y - Rx_BF(defn)*z) + Dy_BF(defn);
+ z_out = M_BF(defn)*(-Ry_BF(defn)*x + Rx_BF(defn)*y + z) + Dz_BF(defn);
+
+ set<0>(point, x_out);
+ set<1>(point, y_out);
+ range_wrapper.set_z(i, z_out);
+ }
+ }
+
+ return 0;
+}
+
+/************************************************************************/
+/* pj_geocentic_from_wgs84() */
+/************************************************************************/
+
+template <typename Par, typename Range, bool AddZ>
+inline int pj_geocentric_from_wgs84( Par const& defn,
+ range_wrapper<Range, AddZ> & range_wrapper )
+
+{
+ typedef typename boost::range_value<Range>::type point_type;
+ typedef typename coordinate_type<point_type>::type coord_t;
+
+ Range & rng = range_wrapper.get_range();
+ std::size_t point_count = boost::size(rng);
+
+ if( defn.datum_type == PJD_3PARAM )
+ {
+ for(std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(rng, i);
+
+ if( is_invalid_point(point) )
+ continue;
+
+ set<0>(point, get<0>(point) - Dx_BF(defn));
+ set<1>(point, get<1>(point) - Dy_BF(defn));
+ range_wrapper.set_z(i, range_wrapper.get_z(i) - Dz_BF(defn));
+ }
+ }
+ else if( defn.datum_type == PJD_7PARAM )
+ {
+ for(std::size_t i = 0; i < point_count; i++ )
+ {
+ point_type & point = range::at(rng, i);
+
+ if( is_invalid_point(point) )
+ continue;
+
+ coord_t x = get<0>(point);
+ coord_t y = get<1>(point);
+ coord_t z = range_wrapper.get_z(i);
+
+ coord_t x_tmp = (x - Dx_BF(defn)) / M_BF(defn);
+ coord_t y_tmp = (y - Dy_BF(defn)) / M_BF(defn);
+ coord_t z_tmp = (z - Dz_BF(defn)) / M_BF(defn);
+
+ x = x_tmp + Rz_BF(defn)*y_tmp - Ry_BF(defn)*z_tmp;
+ y = -Rz_BF(defn)*x_tmp + y_tmp + Rx_BF(defn)*z_tmp;
+ z = Ry_BF(defn)*x_tmp - Rx_BF(defn)*y_tmp + z_tmp;
+
+ set<0>(point, x);
+ set<1>(point, y);
+ range_wrapper.set_z(i, z);
+ }
+ }
+
+ return 0;
+}
+
+
+inline bool pj_datum_check_error(int err)
+{
+ return err != 0 && (err > 0 || transient_error[-err] == 0);
+}
+
+/************************************************************************/
+/* pj_datum_transform() */
+/* */
+/* The input should be long/lat/z coordinates in radians in the */
+/* source datum, and the output should be long/lat/z */
+/* coordinates in radians in the destination datum. */
+/************************************************************************/
+
+template <typename Par, typename Range>
+inline bool pj_datum_transform( Par const& srcdefn, Par const& dstdefn,
+ Range & range )
+
+{
+ typedef typename Par::type calc_t;
+ bool result = true;
+
+ calc_t src_a, src_es, dst_a, dst_es;
+
+/* -------------------------------------------------------------------- */
+/* We cannot do any meaningful datum transformation if either */
+/* the source or destination are of an unknown datum type */
+/* (ie. only a +ellps declaration, no +datum). This is new */
+/* behavior for PROJ 4.6.0. */
+/* -------------------------------------------------------------------- */
+ if( srcdefn.datum_type == PJD_UNKNOWN
+ || dstdefn.datum_type == PJD_UNKNOWN )
+ return result;
+
+/* -------------------------------------------------------------------- */
+/* Short cut if the datums are identical. */
+/* -------------------------------------------------------------------- */
+ if( pj_compare_datums( srcdefn, dstdefn ) )
+ return result;
+
+ src_a = srcdefn.a_orig;
+ src_es = srcdefn.es_orig;
+
+ dst_a = dstdefn.a_orig;
+ dst_es = dstdefn.es_orig;
+
+/* -------------------------------------------------------------------- */
+/* Create a temporary Z array if one is not provided. */
+/* -------------------------------------------------------------------- */
+
+ range_wrapper<Range> z_range(range);
+
+/* -------------------------------------------------------------------- */
+/* If this datum requires grid shifts, then apply it to geodetic */
+/* coordinates. */
+/* -------------------------------------------------------------------- */
+ /*if( srcdefn.datum_type == PJD_GRIDSHIFT )
+ {
+ try {
+ pj_apply_gridshift_2( srcdefn, 0, point_count, point_offset, x, y, z );
+ } catch (projection_exception const& e) {
+ if (pj_datum_check_error(e.code())) {
+ BOOST_RETHROW
+ }
+ }
+
+ src_a = SRS_WGS84_SEMIMAJOR;
+ src_es = SRS_WGS84_ESQUARED;
+ }
+
+ if( dstdefn.datum_type == PJD_GRIDSHIFT )
+ {
+ dst_a = SRS_WGS84_SEMIMAJOR;
+ dst_es = SRS_WGS84_ESQUARED;
+ }*/
+
+/* ==================================================================== */
+/* Do we need to go through geocentric coordinates? */
+/* ==================================================================== */
+ if( src_es != dst_es || src_a != dst_a
+ || srcdefn.datum_type == PJD_3PARAM
+ || srcdefn.datum_type == PJD_7PARAM
+ || dstdefn.datum_type == PJD_3PARAM
+ || dstdefn.datum_type == PJD_7PARAM)
+ {
+/* -------------------------------------------------------------------- */
+/* Convert to geocentric coordinates. */
+/* -------------------------------------------------------------------- */
+ int err = pj_geodetic_to_geocentric( src_a, src_es, z_range );
+ if (pj_datum_check_error(err))
+ BOOST_THROW_EXCEPTION( projection_exception(err) );
+ else if (err != 0)
+ result = false;
+
+/* -------------------------------------------------------------------- */
+/* Convert between datums. */
+/* -------------------------------------------------------------------- */
+ if( srcdefn.datum_type == PJD_3PARAM
+ || srcdefn.datum_type == PJD_7PARAM )
+ {
+ try {
+ pj_geocentric_to_wgs84( srcdefn, z_range );
+ } catch (projection_exception const& e) {
+ if (pj_datum_check_error(e.code())) {
+ BOOST_RETHROW
+ }
+ }
+ }
+
+ if( dstdefn.datum_type == PJD_3PARAM
+ || dstdefn.datum_type == PJD_7PARAM )
+ {
+ try {
+ pj_geocentric_from_wgs84( dstdefn, z_range );
+ } catch (projection_exception const& e) {
+ if (pj_datum_check_error(e.code())) {
+ BOOST_RETHROW
+ }
+ }
+ }
+
+/* -------------------------------------------------------------------- */
+/* Convert back to geodetic coordinates. */
+/* -------------------------------------------------------------------- */
+ err = pj_geocentric_to_geodetic( dst_a, dst_es, z_range );
+ if (pj_datum_check_error(err))
+ BOOST_THROW_EXCEPTION( projection_exception(err) );
+ else if (err != 0)
+ result = false;
+ }
+
+/* -------------------------------------------------------------------- */
+/* Apply grid shift to destination if required. */
+/* -------------------------------------------------------------------- */
+ /*if( dstdefn.datum_type == PJD_GRIDSHIFT )
+ {
+ try {
+ pj_apply_gridshift_2( dstdefn, 1, point_count, point_offset, x, y, z );
+ } catch (projection_exception const& e) {
+ if (pj_datum_check_error(e.code()))
+ BOOST_RETHROW
+ }
+ }*/
+
+ return result;
+}
+
+} // namespace detail
+
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_PJ_TRANSFORM_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_tsfn.hpp b/boost/geometry/srs/projections/impl/pj_tsfn.hpp
new file mode 100644
index 0000000000..d39a0fb2fc
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_tsfn.hpp
@@ -0,0 +1,58 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PJ_TSFN_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PJ_TSFN_HPP
+
+#include <boost/geometry/util/math.hpp>
+
+namespace boost { namespace geometry { namespace projections {
+namespace detail {
+
+ /* determine small t */
+ template <typename T>
+ inline T pj_tsfn(T const& phi, T sinphi, T const& e)
+ {
+ sinphi *= e;
+ return (tan (.5 * (geometry::math::half_pi<T>() - phi)) /
+ pow((1. - sinphi) / (1. + sinphi), .5 * e));
+ }
+
+} // namespace detail
+}}} // namespace boost::geometry::projections
+#endif
diff --git a/boost/geometry/srs/projections/impl/pj_units.hpp b/boost/geometry/srs/projections/impl/pj_units.hpp
new file mode 100644
index 0000000000..269b8ff92e
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_units.hpp
@@ -0,0 +1,79 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_UNITS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_UNITS_HPP
+
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+
+namespace boost { namespace geometry { namespace projections {
+namespace detail {
+
+/* Field 2 that contains the multiplier to convert named units to meters
+** may be expressed by either a simple floating point constant or a
+** numerator/denomenator values (e.g. 1/1000) */
+
+static const PJ_UNITS pj_units[] =
+{
+ { "km", "1000.", "Kilometer" },
+ { "m", "1.", "Meter" },
+ { "dm", "1/10", "Decimeter" },
+ { "cm", "1/100", "Centimeter" },
+ { "mm", "1/1000", "Millimeter" },
+ { "kmi", "1852.0", "International Nautical Mile" },
+ { "in", "0.0254", "International Inch" },
+ { "ft", "0.3048", "International Foot" },
+ { "yd", "0.9144", "International Yard" },
+ { "mi", "1609.344", "International Statute Mile" },
+ { "fath", "1.8288", "International Fathom" },
+ { "ch", "20.1168", "International Chain" },
+ { "link", "0.201168", "International Link" },
+ { "us-in", "1./39.37", "U.S. Surveyor's Inch" },
+ { "us-ft", "0.304800609601219", "U.S. Surveyor's Foot" },
+ { "us-yd", "0.914401828803658", "U.S. Surveyor's Yard" },
+ { "us-ch", "20.11684023368047", "U.S. Surveyor's Chain" },
+ { "us-mi", "1609.347218694437", "U.S. Surveyor's Statute Mile" },
+ { "ind-yd", "0.91439523", "Indian Yard" },
+ { "ind-ft", "0.30479841", "Indian Foot" },
+ { "ind-ch", "20.11669506", "Indian Chain" }
+};
+
+} // detail
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_UNITS_HPP
diff --git a/boost/geometry/srs/projections/impl/pj_zpoly1.hpp b/boost/geometry/srs/projections/impl/pj_zpoly1.hpp
new file mode 100644
index 0000000000..613b6d2b35
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/pj_zpoly1.hpp
@@ -0,0 +1,106 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ZPOLY1_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ZPOLY1_HPP
+
+
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+
+
+namespace boost { namespace geometry { namespace projections { namespace detail {
+
+ /* evaluate complex polynomial */
+
+ /* note: coefficients are always from C_1 to C_n
+ ** i.e. C_0 == (0., 0)
+ ** n should always be >= 1 though no checks are made
+ */
+ template <typename T>
+ inline COMPLEX<T>
+ pj_zpoly1(COMPLEX<T> z, const COMPLEX<T> *C, int n)
+ {
+ COMPLEX<T> a;
+ T t;
+
+ a = *(C += n);
+ while (n-- > 0)
+ {
+ a.r = (--C)->r + z.r * (t = a.r) - z.i * a.i;
+ a.i = C->i + z.r * a.i + z.i * t;
+ }
+ a.r = z.r * (t = a.r) - z.i * a.i;
+ a.i = z.r * a.i + z.i * t;
+ return a;
+ }
+
+ /* evaluate complex polynomial and derivative */
+ template <typename T>
+ inline COMPLEX<T>
+ pj_zpolyd1(COMPLEX<T> z, const COMPLEX<T> *C, int n, COMPLEX<T> *der)
+ {
+ T t;
+ bool first = true;
+
+ COMPLEX<T> a = *(C += n);
+ COMPLEX<T> b = a;
+ while (n-- > 0)
+ {
+ if (first)
+ {
+ first = false;
+ }
+ else
+ {
+ b.r = a.r + z.r * (t = b.r) - z.i * b.i;
+ b.i = a.i + z.r * b.i + z.i * t;
+ }
+ a.r = (--C)->r + z.r * (t = a.r) - z.i * a.i;
+ a.i = C->i + z.r * a.i + z.i * t;
+ }
+ b.r = a.r + z.r * (t = b.r) - z.i * b.i;
+ b.i = a.i + z.r * b.i + z.i * t;
+ a.r = z.r * (t = a.r) - z.i * a.i;
+ a.i = z.r * a.i + z.i * t;
+ *der = b;
+ return a;
+ }
+
+}}}} // namespace boost::geometry::projections::detail
+
+#endif
diff --git a/boost/geometry/srs/projections/impl/proj_mdist.hpp b/boost/geometry/srs/projections/impl/proj_mdist.hpp
new file mode 100644
index 0000000000..1c325df1c6
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/proj_mdist.hpp
@@ -0,0 +1,144 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PROJ_MDIST_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PROJ_MDIST_HPP
+
+
+#include <boost/geometry/util/math.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+namespace detail
+{
+ static const int MDIST_MAX_ITER = 20;
+
+ template <typename T>
+ struct MDIST
+ {
+ int nb;
+ T es;
+ T E;
+ T b[MDIST_MAX_ITER];
+ };
+
+ template <typename CT>
+ inline bool proj_mdist_ini(CT const& es, MDIST<CT>& b)
+ {
+ CT numf, numfi, twon1, denf, denfi, ens, T, twon;
+ CT den, El, Es;
+ CT E[MDIST_MAX_ITER];
+ int i, j;
+
+ /* generate E(e^2) and its terms E[] */
+ ens = es;
+ numf = twon1 = denfi = 1.;
+ denf = 1.;
+ twon = 4.;
+ Es = El = E[0] = 1.;
+ for (i = 1; i < MDIST_MAX_ITER ; ++i)
+ {
+ numf *= (twon1 * twon1);
+ den = twon * denf * denf * twon1;
+ T = numf/den;
+ Es -= (E[i] = T * ens);
+ ens *= es;
+ twon *= 4.;
+ denf *= ++denfi;
+ twon1 += 2.;
+ if (Es == El) /* jump out if no change */
+ break;
+ El = Es;
+ }
+ b.nb = i - 1;
+ b.es = es;
+ b.E = Es;
+ /* generate b_n coefficients--note: collapse with prefix ratios */
+ b.b[0] = Es = 1. - Es;
+ numf = denf = 1.;
+ numfi = 2.;
+ denfi = 3.;
+ for (j = 1; j < i; ++j)
+ {
+ Es -= E[j];
+ numf *= numfi;
+ denf *= denfi;
+ b.b[j] = Es * numf / denf;
+ numfi += 2.;
+ denfi += 2.;
+ }
+ return true;
+ }
+
+ template <typename T>
+ inline T proj_mdist(T const& phi, T const& sphi, T const& cphi, MDIST<T> const& b)
+ {
+ T sc, sum, sphi2, D;
+ int i;
+
+ sc = sphi * cphi;
+ sphi2 = sphi * sphi;
+ D = phi * b.E - b.es * sc / sqrt(1. - b.es * sphi2);
+ sum = b.b[i = b.nb];
+ while (i) sum = b.b[--i] + sphi2 * sum;
+ return(D + sc * sum);
+ }
+
+ template <typename T>
+ inline T proj_inv_mdist(T const& dist, MDIST<T> const& b)
+ {
+ static const T TOL = 1e-14;
+ T s, t, phi, k;
+ int i;
+
+ k = 1./(1.- b.es);
+ i = MDIST_MAX_ITER;
+ phi = dist;
+ while ( i-- ) {
+ s = sin(phi);
+ t = 1. - b.es * s * s;
+ phi -= t = (proj_mdist(phi, s, cos(phi), b) - dist) *
+ (t * sqrt(t)) * k;
+ if (geometry::math::abs(t) < TOL) /* that is no change */
+ return phi;
+ }
+ /* convergence failed */
+ BOOST_THROW_EXCEPTION( projection_exception(-17) );
+ }
+} // namespace detail
+
+}}} // namespace boost::geometry::projections
+
+#endif
diff --git a/boost/geometry/srs/projections/impl/projects.hpp b/boost/geometry/srs/projections/impl/projects.hpp
new file mode 100644
index 0000000000..232ae67ae9
--- /dev/null
+++ b/boost/geometry/srs/projections/impl/projects.hpp
@@ -0,0 +1,272 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// This file is manually converted from PROJ4 (projects.h)
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam)
+
+// Original copyright notice:
+
+// 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.
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PROJECTS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PROJECTS_HPP
+
+
+#include <cstring>
+#include <string>
+#include <vector>
+
+#include <boost/geometry/srs/projections/exception.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_pod.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+/* some useful constants */
+template <typename T>
+inline T ONEPI() { return boost::math::constants::pi<T>(); }
+template <typename T>
+inline T HALFPI() { return boost::math::constants::half_pi<T>(); }
+template <typename T>
+inline T FORTPI() { return boost::math::constants::pi<T>() / T(4); }
+template <typename T>
+inline T TWOPI() { return boost::math::constants::two_pi<T>(); }
+template <typename T>
+inline T TWO_D_PI() { return boost::math::constants::two_div_pi<T>(); }
+template <typename T>
+inline T HALFPI_SQR() { return 2.4674011002723396547086227499689; }
+template <typename T>
+inline T PI_SQR() { return boost::math::constants::pi_sqr<T>(); }
+template <typename T>
+inline T THIRD() { return 0.3333333333333333333333333333333; }
+template <typename T>
+inline T TWOTHIRD() { return 0.6666666666666666666666666666666; }
+template <typename T>
+inline T PI_HALFPI() { return 4.7123889803846898576939650749193; }
+template <typename T>
+inline T TWOPI_HALFPI() { return 7.8539816339744830961566084581988; }
+template <typename T>
+inline T PI_DIV_3() { return 1.0471975511965977461542144610932; }
+
+/* datum_type values */
+static const int PJD_UNKNOWN = 0;
+static const int PJD_3PARAM = 1;
+static const int PJD_7PARAM = 2;
+static const int PJD_GRIDSHIFT = 3;
+static const int PJD_WGS84 = 4; /* WGS84 (or anything considered equivelent) */
+
+/* library errors */
+static const int PJD_ERR_GEOCENTRIC = -45;
+static const int PJD_ERR_AXIS = -47;
+static const int PJD_ERR_GRID_AREA = -48;
+static const int PJD_ERR_CATALOG = -49;
+
+template <typename T>
+struct pvalue
+{
+ std::string param;
+ int used;
+
+ int i;
+ T f;
+ std::string s;
+};
+
+template <typename T>
+struct pj_const_pod
+{
+ int over; /* over-range flag */
+ int geoc; /* geocentric latitude flag */
+ int is_latlong; /* proj=latlong ... not really a projection at all */
+ int is_geocent; /* proj=geocent ... not really a projection at all */
+ T
+ a, /* major axis or radius if es==0 */
+ a_orig, /* major axis before any +proj related adjustment */
+ es, /* e ^ 2 */
+ es_orig, /* es before any +proj related adjustment */
+ e, /* eccentricity */
+ ra, /* 1/A */
+ one_es, /* 1 - e^2 */
+ rone_es, /* 1/one_es */
+ lam0, phi0, /* central longitude, latitude */
+ x0, y0, /* easting and northing */
+ k0, /* general scaling factor */
+ to_meter, fr_meter, /* cartesian scaling */
+ vto_meter, vfr_meter; /* Vertical scaling. Internal unit [m] */
+
+ int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */
+ T datum_params[7];
+ T from_greenwich; /* prime meridian offset (in radians) */
+ T long_wrap_center; /* 0.0 for -180 to 180, actually in radians*/
+ bool is_long_wrap_set;
+
+ // Initialize all variables to zero
+ pj_const_pod()
+ {
+ std::memset(this, 0, sizeof(pj_const_pod));
+ }
+};
+
+template <typename T>
+struct pj_const_non_pod
+{
+ int over; /* over-range flag */
+ int geoc; /* geocentric latitude flag */
+ int is_latlong; /* proj=latlong ... not really a projection at all */
+ int is_geocent; /* proj=geocent ... not really a projection at all */
+ T
+ a, /* major axis or radius if es==0 */
+ a_orig, /* major axis before any +proj related adjustment */
+ es, /* e ^ 2 */
+ es_orig, /* es before any +proj related adjustment */
+ e, /* eccentricity */
+ ra, /* 1/A */
+ one_es, /* 1 - e^2 */
+ rone_es, /* 1/one_es */
+ lam0, phi0, /* central longitude, latitude */
+ x0, y0, /* easting and northing */
+ k0, /* general scaling factor */
+ to_meter, fr_meter, /* cartesian scaling */
+ vto_meter, vfr_meter; /* Vertical scaling. Internal unit [m] */
+
+ int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */
+ T datum_params[7];
+ T from_greenwich; /* prime meridian offset (in radians) */
+ T long_wrap_center; /* 0.0 for -180 to 180, actually in radians*/
+ bool is_long_wrap_set;
+
+ // Initialize all variables to zero
+ pj_const_non_pod()
+ : over(0), geoc(0), is_latlong(0), is_geocent(0)
+ , a(0), a_orig(0), es(0), es_orig(0), e(0), ra(0)
+ , one_es(0), rone_es(0), lam0(0), phi0(0), x0(0), y0(0), k0(0)
+ , to_meter(0), fr_meter(0), vto_meter(0), vfr_meter(0)
+ , datum_type(PJD_UNKNOWN)
+ , from_greenwich(0), long_wrap_center(0), is_long_wrap_set(false)
+ {
+ datum_params[0] = 0;
+ datum_params[1] = 0;
+ datum_params[2] = 0;
+ datum_params[3] = 0;
+ datum_params[4] = 0;
+ datum_params[5] = 0;
+ datum_params[6] = 0;
+ }
+};
+
+template <typename T>
+struct pj_const
+ : boost::mpl::if_c
+ <
+ boost::is_pod<T>::value,
+ pj_const_pod<T>,
+ pj_const_non_pod<T>
+ >::type
+{};
+
+// PROJ4 complex. Might be replaced with std::complex
+template <typename T>
+struct COMPLEX { T r, i; };
+
+struct PJ_ELLPS
+{
+ std::string id; /* ellipse keyword name */
+ std::string major; /* a= value */
+ std::string ell; /* elliptical parameter */
+ std::string name; /* comments */
+};
+
+struct PJ_DATUMS
+{
+ std::string id; /* datum keyword */
+ std::string defn; /* ie. "to_wgs84=..." */
+ std::string ellipse_id; /* ie from ellipse table */
+ std::string comments; /* EPSG code, etc */
+};
+
+struct PJ_PRIME_MERIDIANS
+{
+ std::string id; /* prime meridian keyword */
+ std::string defn; /* offset from greenwich in DMS format. */
+};
+
+struct PJ_UNITS
+{
+ std::string id; /* units keyword */
+ std::string to_meter; /* multiply by value to get meters */
+ std::string name; /* comments */
+};
+
+template <typename T>
+struct DERIVS
+{
+ T x_l, x_p; /* derivatives of x for lambda-phi */
+ T y_l, y_p; /* derivatives of y for lambda-phi */
+};
+
+template <typename T>
+struct FACTORS
+{
+ DERIVS<T> der;
+ T h, k; /* meridinal, parallel scales */
+ T omega, thetap; /* angular distortion, theta prime */
+ T conv; /* convergence */
+ T s; /* areal scale factor */
+ T a, b; /* max-min scale error */
+ int code; /* info as to analytics, see following */
+};
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+/*!
+ \brief parameters, projection parameters
+ \details This structure initializes all projections
+ \ingroup projection
+*/
+template <typename T>
+struct parameters : public detail::pj_const<T>
+{
+ typedef T type;
+
+ std::string name;
+ std::vector<detail::pvalue<T> > params;
+};
+
+}}} // namespace boost::geometry::projections
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PROJECTS_HPP
diff --git a/boost/geometry/srs/projections/invalid_point.hpp b/boost/geometry/srs/projections/invalid_point.hpp
new file mode 100644
index 0000000000..41bc8252c5
--- /dev/null
+++ b/boost/geometry/srs/projections/invalid_point.hpp
@@ -0,0 +1,38 @@
+// Boost.Geometry
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_INVALID_POINT_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_INVALID_POINT_HPP
+
+
+#include <cmath>
+
+#include <boost/geometry/core/access.hpp>
+
+
+namespace boost { namespace geometry { namespace projections
+{
+
+// Originally in pj_transform()
+template <typename Point>
+inline void set_invalid_point(Point & point)
+{
+ geometry::set<0>(point, HUGE_VAL);
+ geometry::set<1>(point, HUGE_VAL);
+}
+
+template <typename Point>
+inline bool is_invalid_point(Point const& point)
+{
+ return geometry::get<0>(point) == HUGE_VAL;
+}
+
+}}} // namespace boost::geometry::projections
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_INVALID_POINT_HPP
diff --git a/boost/geometry/srs/projections/par4.hpp b/boost/geometry/srs/projections/par4.hpp
new file mode 100644
index 0000000000..2b8656ae3e
--- /dev/null
+++ b/boost/geometry/srs/projections/par4.hpp
@@ -0,0 +1,501 @@
+// Boost.Geometry
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_PAR4_HPP
+#define BOOST_GEOMETRY_SRS_PROJECTIONS_PAR4_HPP
+
+
+#include <boost/geometry/core/tag.hpp>
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/srs/sphere.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_void.hpp>
+
+
+namespace boost { namespace geometry { namespace srs { namespace par4
+{
+
+// proj
+// defined in projections' implementation files
+
+// ellps
+struct MERIT {};
+struct SGS85 {};
+struct GRS80 {};
+struct IAU76 {};
+struct airy {};
+struct APL4_9 {};
+struct NWL9D {};
+struct mod_airy {};
+struct andrae {};
+struct aust_SA {};
+struct GRS67 {};
+struct bessel {};
+struct bess_nam {};
+struct clrk66 {};
+struct clrk80 {};
+struct clrk80ign {};
+struct CPM {};
+struct delmbr {};
+struct engelis {};
+struct evrst30 {};
+struct evrst48 {};
+struct evrst56 {};
+struct evrst69 {};
+struct evrstSS {};
+struct fschr60 {};
+struct fschr60m {};
+struct fschr68 {};
+struct helmert {};
+struct hough {};
+struct intl {};
+struct krass {};
+struct kaula {};
+struct lerch {};
+struct mprts {};
+struct new_intl {};
+struct plessis {};
+struct SEasia {};
+struct walbeck {};
+struct WGS60 {};
+struct WGS66 {};
+struct WGS72 {};
+struct WGS84 {};
+struct sphere {};
+
+// datum
+//struct WGS84 {}; // already defined above
+struct GGRS87 {};
+struct NAD83 {};
+struct NAD27 {};
+struct potsdam {};
+struct carthage {};
+struct hermannskogel {};
+struct ire65 {};
+struct nzgd49 {};
+struct OSGB36 {};
+
+template <typename P>
+struct proj
+{
+ typedef P type;
+};
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+template
+<
+ typename E,
+ typename Tag = typename geometry::tag<E>::type
+>
+struct ellps_impl
+ : private E // empty base optimization
+{
+ typedef E type;
+
+ ellps_impl() : E() {}
+ explicit ellps_impl(E const& e) : E(e) {}
+
+ E const& model() const { return *this; }
+};
+
+template <typename E>
+struct ellps_impl<E, void>
+{
+ typedef E type;
+};
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+template<typename E>
+struct ellps
+ : par4::detail::ellps_impl<E>
+{
+ ellps() {}
+ explicit ellps(E const& e)
+ : par4::detail::ellps_impl<E>(e)
+ {}
+};
+
+template <typename D>
+struct datum
+{
+ typedef D type;
+};
+
+template <typename P>
+struct o_proj
+{
+ typedef P type;
+};
+
+struct guam {};
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+inline double b_from_a_rf(double a, double rf)
+{
+ return a * (1.0 - 1.0 / rf);
+}
+
+template
+<
+ typename Ellps,
+ typename Tag = typename geometry::tag<typename Ellps::type>::type
+>
+struct ellps_traits
+{
+ typedef typename Ellps::type model_type;
+ static model_type model(Ellps const& e) { return e.model(); }
+};
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_B(NAME, A, B) \
+template <> \
+struct ellps_traits<ellps<par4::NAME>, void> \
+{ \
+ typedef srs::spheroid<double> model_type; \
+ static model_type model(ellps<par4::NAME> const&) { return model_type(A, B); } \
+};
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(NAME, A, RF) \
+template <> \
+struct ellps_traits<ellps<par4::NAME>, void> \
+{ \
+ typedef srs::spheroid<double> model_type; \
+ static model_type model(ellps<par4::NAME> const&) { return model_type(A, b_from_a_rf(A, RF)); } \
+};
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_SPHERE(NAME, R) \
+template <> \
+struct ellps_traits<ellps<par4::NAME>, void> \
+{ \
+ typedef srs::sphere<double> model_type; \
+ static model_type model(ellps<par4::NAME> const&) { return model_type(R); } \
+};
+
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(MERIT, 6378137.0, 298.257)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(SGS85, 6378136.0, 298.257)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(GRS80, 6378137.0, 298.257222101)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(IAU76, 6378140.0, 298.257)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_B (airy, 6377563.396, 6356256.910)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(APL4_9, 6378137.0, 298.25)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(NWL9D, 6378145.0, 298.25)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_B (mod_airy, 6377340.189, 6356034.446)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(andrae, 6377104.43, 300.0)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(aust_SA, 6378160.0, 298.25)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(GRS67, 6378160.0, 298.2471674270)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(bessel, 6377397.155, 299.1528128)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(bess_nam, 6377483.865, 299.1528128)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_B (clrk66, 6378206.4, 6356583.8)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(clrk80, 6378249.145, 293.4663)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(clrk80ign, 6378249.2, 293.4660212936269)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(CPM, 6375738.7, 334.29)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(delmbr, 6376428.0, 311.5)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(engelis, 6378136.05, 298.2566)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(evrst30, 6377276.345, 300.8017)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(evrst48, 6377304.063, 300.8017)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(evrst56, 6377301.243, 300.8017)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(evrst69, 6377295.664, 300.8017)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(evrstSS, 6377298.556, 300.8017)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(fschr60, 6378166.0, 298.3)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(fschr60m, 6378155.0, 298.3)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(fschr68, 6378150.0, 298.3)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(helmert, 6378200.0, 298.3)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(hough, 6378270.0, 297.0)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(intl, 6378388.0, 297.0)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(krass, 6378245.0, 298.3)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(kaula, 6378163.0, 298.24)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(lerch, 6378139.0, 298.257)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(mprts, 6397300.0, 191.0)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_B (new_intl, 6378157.5, 6356772.2)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_B (plessis, 6376523.0, 6355863.0)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_B (SEasia, 6378155.0, 6356773.3205)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_B (walbeck, 6376896.0, 6355834.8467)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(WGS60, 6378165.0, 298.3)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(WGS66, 6378145.0, 298.25)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(WGS72, 6378135.0, 298.26)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS_A_RF(WGS84, 6378137.0, 298.257223563)
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_SPHERE (sphere, 6370997.0)
+
+
+template <typename D>
+struct datum_traits
+{
+ typedef void ellps_type;
+ static std::string id() { return ""; }
+ static std::string definition() { return ""; }
+};
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(NAME, ID, ELLPS, DEF) \
+template <> \
+struct datum_traits< datum<par4::NAME> > \
+{ \
+ typedef par4::ellps<par4::ELLPS> ellps_type; \
+ static std::string id() { return ID; } \
+ static std::string definition() { return DEF; } \
+};
+
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(WGS84, "WGS84", WGS84, "towgs84=0,0,0")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(GGRS87, "GGRS87", GRS80, "towgs84=-199.87,74.79,246.62")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(NAD83, "NAD83", GRS80, "towgs84=0,0,0")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(NAD27, "NAD27", clrk66, "nadgrids=@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(potsdam, "potsdam", bessel, "towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(carthage, "carthage", clrk80ign, "towgs84=-263.0,6.0,431.0")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(hermannskogel, "hermannskogel", bessel, "towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(ire65, "ire65", mod_airy, "towgs84=482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(nzgd49, "nzgd49", intl, "towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993")
+BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_DATUM(OSGB36, "OSGB36", airy, "towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894")
+
+
+template
+<
+ typename Tuple,
+ template <typename> class IsSamePred,
+ int I = 0,
+ int N = boost::tuples::length<Tuple>::value
+>
+struct tuples_find_index_if
+ : boost::mpl::if_c
+ <
+ IsSamePred<typename boost::tuples::element<I, Tuple>::type>::value,
+ boost::integral_constant<int, I>,
+ typename tuples_find_index_if<Tuple, IsSamePred, I+1, N>::type
+ >::type
+{};
+
+template
+<
+ typename Tuple,
+ template <typename> class IsSamePred,
+ int N
+>
+struct tuples_find_index_if<Tuple, IsSamePred, N, N>
+ : boost::integral_constant<int, N>
+{};
+
+template
+<
+ typename Tuple,
+ template <typename> class IsSamePred,
+ int I = tuples_find_index_if<Tuple, IsSamePred>::value,
+ int N = boost::tuples::length<Tuple>::value
+>
+struct tuples_find_if
+ : boost::tuples::element<I, Tuple>
+{};
+
+template
+<
+ typename Tuple,
+ template <typename> class IsSamePred,
+ int N
+>
+struct tuples_find_if<Tuple, IsSamePred, N, N>
+{
+ typedef void type;
+};
+
+/*template <typename Param>
+struct is_param
+{
+ template <typename T, int D = 0>
+ struct is_same_impl : boost::false_type {};
+ template <int D>
+ struct is_same_impl<Param, D> : boost::true_type {};
+
+ template <typename T>
+ struct is_same : is_same_impl<T> {};
+};
+
+template <template <typename> class Param>
+struct is_param_t
+{
+ template <typename T>
+ struct is_same : boost::false_type {};
+ template <typename T>
+ struct is_same<Param<T> > : boost::true_type {};
+};*/
+
+// NOTE: The following metafunctions are implemented one for each parameter
+// because mingw-gcc-4.1.2 is unable to compile a solution based on template
+// template parameter and member struct template partial specialization
+// (see above).
+
+/*template <typename T>
+struct is_proj : boost::false_type {};
+template <typename T>
+struct is_proj<proj<T> > : boost::true_type {};
+
+template <typename T>
+struct is_ellps : boost::false_type {};
+template <typename T>
+struct is_ellps<ellps<T> > : boost::true_type {};
+
+template <typename T>
+struct is_datum : boost::false_type {};
+template <typename T>
+struct is_datum<datum<T> > : boost::true_type {};
+
+template <typename T>
+struct is_o_proj : boost::false_type {};
+template <typename T>
+struct is_o_proj<o_proj<T> > : boost::true_type {};
+
+template <typename T>
+struct is_guam : boost::false_type {};
+template <>
+struct is_guam<guam> : boost::true_type {};*/
+
+// NOTE: The following implementation seems to work as well.
+
+// TEST
+
+template <typename T, template <typename> class Param>
+struct is_same_t : boost::false_type {};
+template <typename T, template <typename> class Param>
+struct is_same_t<Param<T>, Param> : boost::true_type {};
+
+template <typename Param>
+struct is_param
+{
+ template <typename T>
+ struct pred : boost::is_same<T, Param> {};
+};
+
+template <template <typename> class Param>
+struct is_param_t
+{
+ template <typename T>
+ struct pred : is_same_t<T, Param> {};
+};
+
+// pick proj static name
+
+template <typename Tuple>
+struct pick_proj_tag
+{
+ typedef typename tuples_find_if
+ <
+ Tuple,
+ // is_proj
+ is_param_t<proj>::pred
+ >::type proj_type;
+
+ static const bool is_non_void = ! boost::is_void<proj_type>::value;
+
+ BOOST_MPL_ASSERT_MSG((is_non_void), PROJECTION_NOT_NAMED, (Tuple));
+
+ typedef typename proj_type::type type;
+};
+
+
+template <typename Ellps, typename Datum, int EllpsIndex>
+struct pick_ellps_impl
+{
+ typedef Ellps type;
+ typedef typename ellps_traits<Ellps>::model_type model_type;
+ template <typename Tuple>
+ static model_type model(Tuple const& tup)
+ {
+ return ellps_traits<Ellps>::model(boost::get<EllpsIndex>(tup));
+ }
+};
+
+template <typename Ellps, int EllpsIndex>
+struct pick_ellps_impl<Ellps, void, EllpsIndex>
+{
+ typedef Ellps type;
+ typedef typename ellps_traits<Ellps>::model_type model_type;
+ template <typename Tuple>
+ static model_type model(Tuple const& tup)
+ {
+ return ellps_traits<Ellps>::model(boost::get<EllpsIndex>(tup));
+ }
+};
+
+template <typename Datum, int EllpsIndex>
+struct pick_ellps_impl<void, Datum, EllpsIndex>
+{
+ typedef typename datum_traits<Datum>::ellps_type type;
+
+ static const bool is_datum_known = ! boost::is_void<type>::value;
+ BOOST_MPL_ASSERT_MSG((is_datum_known), UNKNOWN_DATUM, (types<Datum>));
+
+ typedef typename ellps_traits<type>::model_type model_type;
+ template <typename Tuple>
+ static model_type model(Tuple const& )
+ {
+ return ellps_traits<type>::model(type());
+ }
+};
+
+template <int EllpsIndex>
+struct pick_ellps_impl<void, void, EllpsIndex>
+{
+ // default ellipsoid
+ typedef ellps<WGS84> type;
+ typedef typename ellps_traits<type>::model_type model_type;
+ template <typename Tuple>
+ static model_type model(Tuple const& )
+ {
+ return ellps_traits<type>::model(type());
+ }
+};
+
+// Pick spheroid/sphere model from ellps or datum
+// mimic pj_init() calling pj_datum_set() and pj_ell_set()
+template <typename Tuple>
+struct pick_ellps
+ : pick_ellps_impl
+ <
+ typename tuples_find_if<Tuple, /*is_ellps*/is_param_t<ellps>::pred>::type,
+ typename tuples_find_if<Tuple, /*is_datum*/is_param_t<datum>::pred>::type,
+ tuples_find_index_if<Tuple, /*is_ellps*/is_param_t<ellps>::pred>::value
+ >
+{};
+
+
+template <typename Tuple>
+struct pick_o_proj_tag
+{
+ typedef typename tuples_find_if
+ <
+ Tuple,
+ //is_o_proj
+ is_param_t<o_proj>::pred
+ >::type proj_type;
+
+ static const bool is_non_void = ! boost::is_void<proj_type>::value;
+
+ BOOST_MPL_ASSERT_MSG((is_non_void), PROJECTION_NOT_NAMED, (Tuple));
+
+ typedef typename proj_type::type type;
+};
+
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+
+}}}} // namespace boost::geometry::srs::par4
+
+
+#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_PAR4_HPP
diff --git a/boost/geometry/srs/projections/proj/aea.hpp b/boost/geometry/srs/projections/proj/aea.hpp
new file mode 100644
index 0000000000..1df5896c34
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/aea.hpp
@@ -0,0 +1,349 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_AEA_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_AEA_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Purpose: Implementation of the aea (Albers Equal Area) projection.
+// Author: Gerald Evenden
+// Copyright (c) 1995, Gerald Evenden
+
+// 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 <boost/core/ignore_unused.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+#include <boost/geometry/srs/projections/impl/pj_msfn.hpp>
+#include <boost/geometry/srs/projections/impl/pj_qsfn.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct aea {};
+ struct leac {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace aea
+ {
+
+ static const double EPS10 = 1.e-10;
+ static const double TOL7 = 1.e-7;
+ static const double EPSILON = 1.0e-7;
+ static const double TOL = 1.0e-10;
+ static const int N_ITER = 15;
+
+ template <typename T>
+ struct par_aea
+ {
+ T ec;
+ T n;
+ T c;
+ T dd;
+ T n2;
+ T rho0;
+ T phi1;
+ T phi2;
+ T en[EN_SIZE];
+ int ellips;
+ };
+
+ /* determine latitude angle phi-1 */
+ template <typename T>
+ inline T phi1_(T const& qs, T const& Te, T const& Tone_es)
+ {
+ int i;
+ T Phi, sinpi, cospi, con, com, dphi;
+
+ Phi = asin (.5 * qs);
+ if (Te < EPSILON)
+ return( Phi );
+ i = N_ITER;
+ do {
+ sinpi = sin (Phi);
+ cospi = cos (Phi);
+ con = Te * sinpi;
+ com = 1. - con * con;
+ dphi = .5 * com * com / cospi * (qs / Tone_es -
+ sinpi / com + .5 / Te * log ((1. - con) /
+ (1. + con)));
+ Phi += dphi;
+ } while (fabs(dphi) > TOL && --i);
+ return( i ? Phi : HUGE_VAL );
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_aea_ellipsoid : public base_t_fi<base_aea_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_aea<CalculationType> m_proj_parm;
+
+ inline base_aea_ellipsoid(const Parameters& par)
+ : base_t_fi<base_aea_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid & spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType rho = 0.0;
+ if ((rho = this->m_proj_parm.c - (this->m_proj_parm.ellips ? this->m_proj_parm.n * pj_qsfn(sin(lp_lat),
+ this->m_par.e, this->m_par.one_es) : this->m_proj_parm.n2 * sin(lp_lat))) < 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ rho = this->m_proj_parm.dd * sqrt(rho);
+ xy_x = rho * sin( lp_lon *= this->m_proj_parm.n );
+ xy_y = this->m_proj_parm.rho0 - rho * cos(lp_lon);
+ }
+
+ // INVERSE(e_inverse) ellipsoid & spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType rho = 0.0;
+ if( (rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho0 - xy_y)) != 0.0 ) {
+ if (this->m_proj_parm.n < 0.) {
+ rho = -rho;
+ xy_x = -xy_x;
+ xy_y = -xy_y;
+ }
+ lp_lat = rho / this->m_proj_parm.dd;
+ if (this->m_proj_parm.ellips) {
+ lp_lat = (this->m_proj_parm.c - lp_lat * lp_lat) / this->m_proj_parm.n;
+ if (fabs(this->m_proj_parm.ec - fabs(lp_lat)) > TOL7) {
+ if ((lp_lat = phi1_(lp_lat, this->m_par.e, this->m_par.one_es)) == HUGE_VAL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ } else
+ lp_lat = lp_lat < 0. ? -HALFPI : HALFPI;
+ } else if (fabs(lp_lat = (this->m_proj_parm.c - lp_lat * lp_lat) / this->m_proj_parm.n2) <= 1.)
+ lp_lat = asin(lp_lat);
+ else
+ lp_lat = lp_lat < 0. ? -HALFPI : HALFPI;
+ lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n;
+ } else {
+ lp_lon = 0.;
+ lp_lat = this->m_proj_parm.n > 0. ? HALFPI : - HALFPI;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "aea_ellipsoid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_aea<T>& proj_parm)
+ {
+ T cosphi, sinphi;
+ int secant;
+
+ if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-21) );
+ proj_parm.n = sinphi = sin(proj_parm.phi1);
+ cosphi = cos(proj_parm.phi1);
+ secant = fabs(proj_parm.phi1 - proj_parm.phi2) >= EPS10;
+ if( (proj_parm.ellips = (par.es > 0.))) {
+ T ml1, m1;
+
+ if (!pj_enfn(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ m1 = pj_msfn(sinphi, cosphi, par.es);
+ ml1 = pj_qsfn(sinphi, par.e, par.one_es);
+ if (secant) { /* secant cone */
+ T ml2, m2;
+
+ sinphi = sin(proj_parm.phi2);
+ cosphi = cos(proj_parm.phi2);
+ m2 = pj_msfn(sinphi, cosphi, par.es);
+ ml2 = pj_qsfn(sinphi, par.e, par.one_es);
+ proj_parm.n = (m1 * m1 - m2 * m2) / (ml2 - ml1);
+ }
+ proj_parm.ec = 1. - .5 * par.one_es * log((1. - par.e) /
+ (1. + par.e)) / par.e;
+ proj_parm.c = m1 * m1 + proj_parm.n * ml1;
+ proj_parm.dd = 1. / proj_parm.n;
+ proj_parm.rho0 = proj_parm.dd * sqrt(proj_parm.c - proj_parm.n * pj_qsfn(sin(par.phi0),
+ par.e, par.one_es));
+ } else {
+ if (secant) proj_parm.n = .5 * (proj_parm.n + sin(proj_parm.phi2));
+ proj_parm.n2 = proj_parm.n + proj_parm.n;
+ proj_parm.c = cosphi * cosphi + proj_parm.n2 * sinphi;
+ proj_parm.dd = 1. / proj_parm.n;
+ proj_parm.rho0 = proj_parm.dd * sqrt(proj_parm.c - proj_parm.n2 * sin(par.phi0));
+ }
+ }
+
+
+ // Albers Equal Area
+ template <typename Parameters, typename T>
+ inline void setup_aea(Parameters& par, par_aea<T>& proj_parm)
+ {
+ proj_parm.phi1 = pj_param(par.params, "rlat_1").f;
+ proj_parm.phi2 = pj_param(par.params, "rlat_2").f;
+ setup(par, proj_parm);
+ }
+
+ // Lambert Equal Area Conic
+ template <typename Parameters, typename T>
+ inline void setup_leac(Parameters& par, par_aea<T>& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ proj_parm.phi2 = pj_param(par.params, "rlat_1").f;
+ proj_parm.phi1 = pj_param(par.params, "bsouth").i ? -HALFPI : HALFPI;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::aea
+ #endif // doxygen
+
+ /*!
+ \brief Albers Equal Area projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ - lat_2: Latitude of second standard parallel (degrees)
+ \par Example
+ \image html ex_aea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct aea_ellipsoid : public detail::aea::base_aea_ellipsoid<CalculationType, Parameters>
+ {
+ inline aea_ellipsoid(const Parameters& par) : detail::aea::base_aea_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::aea::setup_aea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Lambert Equal Area Conic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ - south: Denotes southern hemisphere UTM zone (boolean)
+ \par Example
+ \image html ex_leac.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct leac_ellipsoid : public detail::aea::base_aea_ellipsoid<CalculationType, Parameters>
+ {
+ inline leac_ellipsoid(const Parameters& par) : detail::aea::base_aea_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::aea::setup_leac(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::aea, aea_ellipsoid, aea_ellipsoid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::leac, leac_ellipsoid, leac_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class aea_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<aea_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class leac_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<leac_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void aea_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("aea", new aea_entry<CalculationType, Parameters>);
+ factory.add_to_factory("leac", new leac_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_AEA_HPP
+
diff --git a/boost/geometry/srs/projections/proj/aeqd.hpp b/boost/geometry/srs/projections/proj/aeqd.hpp
new file mode 100644
index 0000000000..de499213db
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/aeqd.hpp
@@ -0,0 +1,654 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_AEQD_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_AEQD_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Purpose: Implementation of the aeqd (Azimuthal Equidistant) projection.
+// Author: Gerald Evenden
+// Copyright (c) 1995, Gerald Evenden
+
+// 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 <boost/config.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+
+#include <boost/geometry/srs/projections/par4.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct aeqd {};
+ //struct aeqd_guam {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace aeqd
+ {
+
+ static const double EPS10 = 1.e-10;
+ static const double TOL = 1.e-14;
+ static const int N_POLE = 0;
+ static const int S_POLE = 1;
+ static const int EQUIT = 2;
+ static const int OBLIQ = 3;
+
+ template <typename T>
+ struct par_aeqd
+ {
+ T sinph0;
+ T cosph0;
+ T en[EN_SIZE];
+ T M1;
+ T N1;
+ T Mp;
+ T He;
+ T G;
+ int mode;
+ };
+
+ template <typename T, typename Par, typename ProjParm>
+ inline void e_forward(T& lp_lon, T& lp_lat, T& xy_x, T& xy_y, Par const& par, ProjParm const& proj_parm)
+ {
+ T coslam, cosphi, sinphi, rho, s, H, H2, c, Az, t, ct, st, cA, sA;
+
+ coslam = cos(lp_lon);
+ cosphi = cos(lp_lat);
+ sinphi = sin(lp_lat);
+ switch (proj_parm.mode) {
+ case N_POLE:
+ coslam = - coslam;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ xy_x = (rho = fabs(proj_parm.Mp - pj_mlfn(lp_lat, sinphi, cosphi, proj_parm.en))) *
+ sin(lp_lon);
+ xy_y = rho * coslam;
+ break;
+ case EQUIT:
+ case OBLIQ:
+ if (fabs(lp_lon) < EPS10 && fabs(lp_lat - par.phi0) < EPS10) {
+ xy_x = xy_y = 0.;
+ break;
+ }
+ t = atan2(par.one_es * sinphi + par.es * proj_parm.N1 * proj_parm.sinph0 *
+ sqrt(1. - par.es * sinphi * sinphi), cosphi);
+ ct = cos(t); st = sin(t);
+ Az = atan2(sin(lp_lon) * ct, proj_parm.cosph0 * st - proj_parm.sinph0 * coslam * ct);
+ cA = cos(Az); sA = sin(Az);
+ s = aasin(fabs(sA) < TOL ?
+ (proj_parm.cosph0 * st - proj_parm.sinph0 * coslam * ct) / cA :
+ sin(lp_lon) * ct / sA );
+ H = proj_parm.He * cA;
+ H2 = H * H;
+ c = proj_parm.N1 * s * (1. + s * s * (- H2 * (1. - H2)/6. +
+ s * ( proj_parm.G * H * (1. - 2. * H2 * H2) / 8. +
+ s * ((H2 * (4. - 7. * H2) - 3. * proj_parm.G * proj_parm.G * (1. - 7. * H2)) /
+ 120. - s * proj_parm.G * H / 48.))));
+ xy_x = c * sA;
+ xy_y = c * cA;
+ break;
+ }
+ }
+
+ template <typename T, typename Par, typename ProjParm>
+ inline void e_inverse(T& xy_x, T& xy_y, T& lp_lon, T& lp_lat, Par const& par, ProjParm const& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T c, Az, cosAz, A, B, D, E, F, psi, t;
+
+ if ((c = boost::math::hypot(xy_x, xy_y)) < EPS10) {
+ lp_lat = par.phi0;
+ lp_lon = 0.;
+ return;
+ }
+ if (proj_parm.mode == OBLIQ || proj_parm.mode == EQUIT) {
+ cosAz = cos(Az = atan2(xy_x, xy_y));
+ t = proj_parm.cosph0 * cosAz;
+ B = par.es * t / par.one_es;
+ A = - B * t;
+ B *= 3. * (1. - A) * proj_parm.sinph0;
+ D = c / proj_parm.N1;
+ E = D * (1. - D * D * (A * (1. + A) / 6. + B * (1. + 3.*A) * D / 24.));
+ F = 1. - E * E * (A / 2. + B * E / 6.);
+ psi = aasin(proj_parm.sinph0 * cos(E) + t * sin(E));
+ lp_lon = aasin(sin(Az) * sin(E) / cos(psi));
+ if ((t = fabs(psi)) < EPS10)
+ lp_lat = 0.;
+ else if (fabs(t - HALFPI) < 0.)
+ lp_lat = HALFPI;
+ else
+ lp_lat = atan((1. - par.es * F * proj_parm.sinph0 / sin(psi)) * tan(psi) /
+ par.one_es);
+ } else { /* Polar */
+ lp_lat = pj_inv_mlfn(proj_parm.mode == N_POLE ? proj_parm.Mp - c : proj_parm.Mp + c,
+ par.es, proj_parm.en);
+ lp_lon = atan2(xy_x, proj_parm.mode == N_POLE ? -xy_y : xy_y);
+ }
+ }
+
+ template <typename T, typename Par, typename ProjParm>
+ inline void e_guam_fwd(T& lp_lon, T& lp_lat, T& xy_x, T& xy_y, Par const& par, ProjParm const& proj_parm)
+ {
+ T cosphi, sinphi, t;
+
+ cosphi = cos(lp_lat);
+ sinphi = sin(lp_lat);
+ t = 1. / sqrt(1. - par.es * sinphi * sinphi);
+ xy_x = lp_lon * cosphi * t;
+ xy_y = pj_mlfn(lp_lat, sinphi, cosphi, proj_parm.en) - proj_parm.M1 +
+ .5 * lp_lon * lp_lon * cosphi * sinphi * t;
+ }
+
+ template <typename T, typename Par, typename ProjParm>
+ inline void e_guam_inv(T& xy_x, T& xy_y, T& lp_lon, T& lp_lat, Par const& par, ProjParm const& proj_parm)
+ {
+ T x2, t;
+ int i;
+
+ x2 = 0.5 * xy_x * xy_x;
+ lp_lat = par.phi0;
+ for (i = 0; i < 3; ++i) {
+ t = par.e * sin(lp_lat);
+ lp_lat = pj_inv_mlfn(proj_parm.M1 + xy_y -
+ x2 * tan(lp_lat) * (t = sqrt(1. - t * t)), par.es, proj_parm.en);
+ }
+ lp_lon = xy_x * t / cos(lp_lat);
+ }
+
+ template <typename T, typename Par, typename ProjParm>
+ inline void s_forward(T& lp_lon, T& lp_lat, T& xy_x, T& xy_y, Par const& /*par*/, ProjParm const& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T coslam, cosphi, sinphi;
+
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ coslam = cos(lp_lon);
+ switch (proj_parm.mode) {
+ case EQUIT:
+ xy_y = cosphi * coslam;
+ goto oblcon;
+ case OBLIQ:
+ xy_y = proj_parm.sinph0 * sinphi + proj_parm.cosph0 * cosphi * coslam;
+ oblcon:
+ if (fabs(fabs(xy_y) - 1.) < TOL)
+ if (xy_y < 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else
+ xy_x = xy_y = 0.;
+ else {
+ xy_y = acos(xy_y);
+ xy_y /= sin(xy_y);
+ xy_x = xy_y * cosphi * sin(lp_lon);
+ xy_y *= (proj_parm.mode == EQUIT) ? sinphi :
+ proj_parm.cosph0 * sinphi - proj_parm.sinph0 * cosphi * coslam;
+ }
+ break;
+ case N_POLE:
+ lp_lat = -lp_lat;
+ coslam = -coslam;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ if (fabs(lp_lat - HALFPI) < EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = (xy_y = (HALFPI + lp_lat)) * sin(lp_lon);
+ xy_y *= coslam;
+ break;
+ }
+ }
+
+ template <typename T, typename Par, typename ProjParm>
+ inline void s_inverse(T& xy_x, T& xy_y, T& lp_lon, T& lp_lat, Par const& par, ProjParm const& proj_parm)
+ {
+ static const T ONEPI = detail::ONEPI<T>();
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T cosc, c_rh, sinc;
+
+ if ((c_rh = boost::math::hypot(xy_x, xy_y)) > ONEPI) {
+ if (c_rh - EPS10 > ONEPI)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ c_rh = ONEPI;
+ } else if (c_rh < EPS10) {
+ lp_lat = par.phi0;
+ lp_lon = 0.;
+ return;
+ }
+ if (proj_parm.mode == OBLIQ || proj_parm.mode == EQUIT) {
+ sinc = sin(c_rh);
+ cosc = cos(c_rh);
+ if (proj_parm.mode == EQUIT) {
+ lp_lat = aasin(xy_y * sinc / c_rh);
+ xy_x *= sinc;
+ xy_y = cosc * c_rh;
+ } else {
+ lp_lat = aasin(cosc * proj_parm.sinph0 + xy_y * sinc * proj_parm.cosph0 /
+ c_rh);
+ xy_y = (cosc - proj_parm.sinph0 * sin(lp_lat)) * c_rh;
+ xy_x *= sinc * proj_parm.cosph0;
+ }
+ lp_lon = atan2(xy_x, xy_y);
+ } else if (proj_parm.mode == N_POLE) {
+ lp_lat = HALFPI - c_rh;
+ lp_lon = atan2(xy_x, -xy_y);
+ } else {
+ lp_lat = c_rh - HALFPI;
+ lp_lon = atan2(xy_x, xy_y);
+ }
+ }
+
+ // Azimuthal Equidistant
+ template <typename Parameters, typename T>
+ inline void setup_aeqd(Parameters& par, par_aeqd<T>& proj_parm, bool is_sphere, bool is_guam)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ par.phi0 = pj_param(par.params, "rlat_0").f;
+ if (fabs(fabs(par.phi0) - HALFPI) < EPS10) {
+ proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE;
+ proj_parm.sinph0 = par.phi0 < 0. ? -1. : 1.;
+ proj_parm.cosph0 = 0.;
+ } else if (fabs(par.phi0) < EPS10) {
+ proj_parm.mode = EQUIT;
+ proj_parm.sinph0 = 0.;
+ proj_parm.cosph0 = 1.;
+ } else {
+ proj_parm.mode = OBLIQ;
+ proj_parm.sinph0 = sin(par.phi0);
+ proj_parm.cosph0 = cos(par.phi0);
+ }
+ if (is_sphere) {
+ } else {
+ if (!pj_enfn(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ if (is_guam) {
+ proj_parm.M1 = pj_mlfn(par.phi0, proj_parm.sinph0, proj_parm.cosph0, proj_parm.en);
+ } else {
+ switch (proj_parm.mode) {
+ case N_POLE:
+ proj_parm.Mp = pj_mlfn<T>(HALFPI, 1., 0., proj_parm.en);
+ break;
+ case S_POLE:
+ proj_parm.Mp = pj_mlfn<T>(-HALFPI, -1., 0., proj_parm.en);
+ break;
+ case EQUIT:
+ case OBLIQ:
+ proj_parm.N1 = 1. / sqrt(1. - par.es * proj_parm.sinph0 * proj_parm.sinph0);
+ proj_parm.G = proj_parm.sinph0 * (proj_parm.He = par.e / sqrt(par.one_es));
+ proj_parm.He *= proj_parm.cosph0;
+ break;
+ }
+ }
+ }
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_aeqd_e : public base_t_fi<base_aeqd_e<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_aeqd<CalculationType> m_proj_parm;
+
+ inline base_aeqd_e(const Parameters& par)
+ : base_t_fi<base_aeqd_e<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) elliptical
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ e_forward(lp_lon, lp_lat, xy_x, xy_y, this->m_par, this->m_proj_parm);
+ }
+
+ // INVERSE(e_inverse) elliptical
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ e_inverse(xy_x, xy_y, lp_lon, lp_lat, this->m_par, this->m_proj_parm);
+ }
+
+ static inline std::string get_name()
+ {
+ return "aeqd_e";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_aeqd_e_guam : public base_t_fi<base_aeqd_e_guam<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_aeqd<CalculationType> m_proj_parm;
+
+ inline base_aeqd_e_guam(const Parameters& par)
+ : base_t_fi<base_aeqd_e_guam<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_guam_fwd) Guam elliptical
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ e_guam_fwd(lp_lon, lp_lat, xy_x, xy_y, this->m_par, this->m_proj_parm);
+ }
+
+ // INVERSE(e_guam_inv) Guam elliptical
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ e_guam_inv(xy_x, xy_y, lp_lon, lp_lat, this->m_par, this->m_proj_parm);
+ }
+
+ static inline std::string get_name()
+ {
+ return "aeqd_e_guam";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename BGParameters, typename CalculationType, typename Parameters>
+ struct base_aeqd_e_static : public base_t_fi<base_aeqd_e_static<BGParameters, CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_aeqd<CalculationType> m_proj_parm;
+
+ static const bool is_guam = ! boost::is_same
+ <
+ typename srs::par4::detail::tuples_find_if
+ <
+ BGParameters,
+ //srs::par4::detail::is_guam
+ srs::par4::detail::is_param<srs::par4::guam>::pred
+ >::type,
+ void
+ >::value;
+
+ inline base_aeqd_e_static(const Parameters& par)
+ : base_t_fi<base_aeqd_e_static<BGParameters, CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par)
+ {}
+
+ // FORWARD(e_forward or e_guam_fwd) elliptical
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ if (is_guam)
+ e_guam_fwd(lp_lon, lp_lat, xy_x, xy_y, this->m_par, this->m_proj_parm);
+ else
+ e_forward(lp_lon, lp_lat, xy_x, xy_y, this->m_par, this->m_proj_parm);
+ }
+
+ // INVERSE(e_inverse or e_guam_inv) elliptical
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ if (is_guam)
+ e_guam_inv(xy_x, xy_y, lp_lon, lp_lat, this->m_par, this->m_proj_parm);
+ else
+ e_inverse(xy_x, xy_y, lp_lon, lp_lat, this->m_par, this->m_proj_parm);
+ }
+
+ static inline std::string get_name()
+ {
+ return "aeqd_e_static";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_aeqd_s : public base_t_fi<base_aeqd_s<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_aeqd<CalculationType> m_proj_parm;
+
+ inline base_aeqd_s(const Parameters& par)
+ : base_t_fi<base_aeqd_s<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spherical
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ s_forward(lp_lon, lp_lat, xy_x, xy_y, this->m_par, this->m_proj_parm);
+ }
+
+ // INVERSE(s_inverse) spherical
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ s_inverse(xy_x, xy_y, lp_lon, lp_lat, this->m_par, this->m_proj_parm);
+ }
+
+ static inline std::string get_name()
+ {
+ return "aeqd_s";
+ }
+
+ };
+
+ }} // namespace detail::aeqd
+ #endif // doxygen
+
+ /*!
+ \brief Azimuthal Equidistant projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_0: Latitude of origin (degrees)
+ - guam (boolean)
+ \par Example
+ \image html ex_aeqd.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct aeqd_e : public detail::aeqd::base_aeqd_e<CalculationType, Parameters>
+ {
+ inline aeqd_e(const Parameters& par) : detail::aeqd::base_aeqd_e<CalculationType, Parameters>(par)
+ {
+ detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm, false, false);
+ }
+ };
+
+ /*!
+ \brief Azimuthal Equidistant projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_0: Latitude of origin (degrees)
+ - guam (boolean)
+ \par Example
+ \image html ex_aeqd.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct aeqd_e_guam : public detail::aeqd::base_aeqd_e_guam<CalculationType, Parameters>
+ {
+ inline aeqd_e_guam(const Parameters& par) : detail::aeqd::base_aeqd_e_guam<CalculationType, Parameters>(par)
+ {
+ detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm, false, true);
+ }
+ };
+
+ /*!
+ \brief Azimuthal Equidistant projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_0: Latitude of origin (degrees)
+ - guam (boolean)
+ \par Example
+ \image html ex_aeqd.gif
+ */
+ template <typename BGParameters, typename CalculationType, typename Parameters>
+ struct aeqd_e_static : public detail::aeqd::base_aeqd_e_static<BGParameters, CalculationType, Parameters>
+ {
+ inline aeqd_e_static(const Parameters& par) : detail::aeqd::base_aeqd_e_static<BGParameters, CalculationType, Parameters>(par)
+ {
+ detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm,
+ false,
+ detail::aeqd::base_aeqd_e_static<BGParameters, CalculationType, Parameters>::is_guam);
+ }
+ };
+
+ /*!
+ \brief Azimuthal Equidistant projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_0: Latitude of origin (degrees)
+ - guam (boolean)
+ \par Example
+ \image html ex_aeqd.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct aeqd_s : public detail::aeqd::base_aeqd_s<CalculationType, Parameters>
+ {
+ inline aeqd_s(const Parameters& par) : detail::aeqd::base_aeqd_s<CalculationType, Parameters>(par)
+ {
+ detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm, true, false);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ template <typename BGP, typename CT, typename P>
+ struct static_projection_type<srs::par4::aeqd, srs_sphere_tag, BGP, CT, P>
+ {
+ typedef aeqd_s<CT, P> type;
+ };
+ template <typename BGP, typename CT, typename P>
+ struct static_projection_type<srs::par4::aeqd, srs_spheroid_tag, BGP, CT, P>
+ {
+ typedef aeqd_e_static<BGP, CT, P> type;
+ };
+ //BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::aeqd, aeqd_s, aeqd_e_static)
+ //BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::aeqd_guam, aeqd_guam, aeqd_guam)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class aeqd_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ bool const guam = pj_param(par.params, "bguam").i != 0;
+
+ if (par.es && ! guam)
+ return new base_v_fi<aeqd_e<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else if (par.es && guam)
+ return new base_v_fi<aeqd_e_guam<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<aeqd_s<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void aeqd_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("aeqd", new aeqd_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_AEQD_HPP
+
diff --git a/boost/geometry/srs/projections/proj/airy.hpp b/boost/geometry/srs/projections/proj/airy.hpp
new file mode 100644
index 0000000000..557d95f3e4
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/airy.hpp
@@ -0,0 +1,257 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_AIRY_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_AIRY_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Purpose: Implementation of the airy (Airy) projection.
+// Author: Gerald Evenden
+// Copyright (c) 1995, Gerald Evenden
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+#include <boost/geometry/srs/projections/par4.hpp> // airy tag
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ // already defined in par4.hpp as ellps name
+ //struct airy {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace airy
+ {
+
+ static const double EPS = 1.e-10;
+ static const int N_POLE = 0;
+ static const int S_POLE = 1;
+ static const int EQUIT = 2;
+ static const int OBLIQ = 3;
+
+ template <typename T>
+ struct par_airy
+ {
+ T p_halfpi;
+ T sinph0;
+ T cosph0;
+ T Cb;
+ int mode;
+ int no_cut; /* do not cut at hemisphere limit */
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_airy_spheroid : public base_t_f<base_airy_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_airy<CalculationType> m_proj_parm;
+
+ inline base_airy_spheroid(const Parameters& par)
+ : base_t_f<base_airy_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType sinlam, coslam, cosphi, sinphi, t, s, Krho, cosz;
+
+ sinlam = sin(lp_lon);
+ coslam = cos(lp_lon);
+ switch (this->m_proj_parm.mode) {
+ case EQUIT:
+ case OBLIQ:
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ cosz = cosphi * coslam;
+ if (this->m_proj_parm.mode == OBLIQ)
+ cosz = this->m_proj_parm.sinph0 * sinphi + this->m_proj_parm.cosph0 * cosz;
+ if (!this->m_proj_parm.no_cut && cosz < -EPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ if (fabs(s = 1. - cosz) > EPS) {
+ t = 0.5 * (1. + cosz);
+ Krho = -log(t)/s - this->m_proj_parm.Cb / t;
+ } else
+ Krho = 0.5 - this->m_proj_parm.Cb;
+ xy_x = Krho * cosphi * sinlam;
+ if (this->m_proj_parm.mode == OBLIQ)
+ xy_y = Krho * (this->m_proj_parm.cosph0 * sinphi -
+ this->m_proj_parm.sinph0 * cosphi * coslam);
+ else
+ xy_y = Krho * sinphi;
+ break;
+ case S_POLE:
+ case N_POLE:
+ lp_lat = fabs(this->m_proj_parm.p_halfpi - lp_lat);
+ if (!this->m_proj_parm.no_cut && (lp_lat - EPS) > HALFPI)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ if ((lp_lat *= 0.5) > EPS) {
+ t = tan(lp_lat);
+ Krho = -2.*(log(cos(lp_lat)) / t + t * this->m_proj_parm.Cb);
+ xy_x = Krho * sinlam;
+ xy_y = Krho * coslam;
+ if (this->m_proj_parm.mode == N_POLE)
+ xy_y = -xy_y;
+ } else
+ xy_x = xy_y = 0.;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "airy_spheroid";
+ }
+
+ };
+
+ // Airy
+ template <typename Parameters, typename T>
+ inline void setup_airy(Parameters& par, par_airy<T>& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T beta;
+
+ proj_parm.no_cut = pj_param(par.params, "bno_cut").i;
+ beta = 0.5 * (HALFPI - pj_param(par.params, "rlat_b").f);
+ if (fabs(beta) < EPS)
+ proj_parm.Cb = -0.5;
+ else {
+ proj_parm.Cb = 1./tan(beta);
+ proj_parm.Cb *= proj_parm.Cb * log(cos(beta));
+ }
+ if (fabs(fabs(par.phi0) - HALFPI) < EPS)
+ if (par.phi0 < 0.) {
+ proj_parm.p_halfpi = -HALFPI;
+ proj_parm.mode = S_POLE;
+ } else {
+ proj_parm.p_halfpi = HALFPI;
+ proj_parm.mode = N_POLE;
+ }
+ else {
+ if (fabs(par.phi0) < EPS)
+ proj_parm.mode = EQUIT;
+ else {
+ proj_parm.mode = OBLIQ;
+ proj_parm.sinph0 = sin(par.phi0);
+ proj_parm.cosph0 = cos(par.phi0);
+ }
+ }
+ par.es = 0.;
+ }
+
+ }} // namespace detail::airy
+ #endif // doxygen
+
+ /*!
+ \brief Airy projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Projection parameters
+ - no_cut: Do not cut at hemisphere limit (boolean)
+ - lat_b (degrees)
+ \par Example
+ \image html ex_airy.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct airy_spheroid : public detail::airy::base_airy_spheroid<CalculationType, Parameters>
+ {
+ inline airy_spheroid(const Parameters& par) : detail::airy::base_airy_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::airy::setup_airy(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::airy, airy_spheroid, airy_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class airy_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<airy_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void airy_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("airy", new airy_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_AIRY_HPP
+
diff --git a/boost/geometry/srs/projections/proj/aitoff.hpp b/boost/geometry/srs/projections/proj/aitoff.hpp
new file mode 100644
index 0000000000..7d34a23287
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/aitoff.hpp
@@ -0,0 +1,324 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_AITOFF_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_AITOFF_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Purpose: Implementation of the aitoff (Aitoff) and wintri (Winkel Tripel)
+// projections.
+// Author: Gerald Evenden
+// Copyright (c) 1995, Gerald Evenden
+
+// 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 <boost/core/ignore_unused.hpp>
+#include <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct aitoff {};
+ struct wintri {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace aitoff
+ {
+ template <typename T>
+ struct par_aitoff
+ {
+ T cosphi1;
+ int mode;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_aitoff_spheroid : public base_t_fi<base_aitoff_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_aitoff<CalculationType> m_proj_parm;
+
+ inline base_aitoff_spheroid(const Parameters& par)
+ : base_t_fi<base_aitoff_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType c, d;
+
+ if((d = acos(cos(lp_lat) * cos(c = 0.5 * lp_lon)))) {/* basic Aitoff */
+ xy_x = 2. * d * cos(lp_lat) * sin(c) * (xy_y = 1. / sin(d));
+ xy_y *= d * sin(lp_lat);
+ } else
+ xy_x = xy_y = 0.;
+ if (this->m_proj_parm.mode) { /* Winkel Tripel */
+ xy_x = (xy_x + lp_lon * this->m_proj_parm.cosphi1) * 0.5;
+ xy_y = (xy_y + lp_lat) * 0.5;
+ }
+ }
+ /***********************************************************************************
+ *
+ * Inverse functions added by Drazen Tutic and Lovro Gradiser based on paper:
+ *
+ * I.Özbug Biklirici and Cengizhan Ipbüker. A General Algorithm for the Inverse
+ * Transformation of Map Projections Using Jacobian Matrices. In Proceedings of the
+ * Third International Symposium Mathematical & Computational Applications,
+ * pages 175{182, Turkey, September 2002.
+ *
+ * Expected accuracy is defined by EPSILON = 1e-12. Should be appropriate for
+ * most applications of Aitoff and Winkel Tripel projections.
+ *
+ * Longitudes of 180W and 180E can be mixed in solution obtained.
+ *
+ * Inverse for Aitoff projection in poles is undefined, longitude value of 0 is assumed.
+ *
+ * Contact : dtutic@geof.hr
+ * Date: 2015-02-16
+ *
+ ************************************************************************************/
+
+ // INVERSE(s_inverse) sphere
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+ static const CalculationType TWOPI = detail::TWOPI<CalculationType>();
+ static const CalculationType EPSILON = 1e-12;
+
+ int iter, MAXITER = 10, round = 0, MAXROUND = 20;
+ CalculationType D, C, f1, f2, f1p, f1l, f2p, f2l, dp, dl, sl, sp, cp, cl, x, y;
+
+ if ((fabs(xy_x) < EPSILON) && (fabs(xy_y) < EPSILON )) { lp_lat = 0.; lp_lon = 0.; return; }
+
+ /* intial values for Newton-Raphson method */
+ lp_lat = xy_y; lp_lon = xy_x;
+ do {
+ iter = 0;
+ do {
+ sl = sin(lp_lon * 0.5); cl = cos(lp_lon * 0.5);
+ sp = sin(lp_lat); cp = cos(lp_lat);
+ D = cp * cl;
+ C = 1. - D * D;
+ D = acos(D) / pow(C, 1.5);
+ f1 = 2. * D * C * cp * sl;
+ f2 = D * C * sp;
+ f1p = 2.* (sl * cl * sp * cp / C - D * sp * sl);
+ f1l = cp * cp * sl * sl / C + D * cp * cl * sp * sp;
+ f2p = sp * sp * cl / C + D * sl * sl * cp;
+ f2l = 0.5 * (sp * cp * sl / C - D * sp * cp * cp * sl * cl);
+ if (this->m_proj_parm.mode) { /* Winkel Tripel */
+ f1 = 0.5 * (f1 + lp_lon * this->m_proj_parm.cosphi1);
+ f2 = 0.5 * (f2 + lp_lat);
+ f1p *= 0.5;
+ f1l = 0.5 * (f1l + this->m_proj_parm.cosphi1);
+ f2p = 0.5 * (f2p + 1.);
+ f2l *= 0.5;
+ }
+ f1 -= xy_x; f2 -= xy_y;
+ dl = (f2 * f1p - f1 * f2p) / (dp = f1p * f2l - f2p * f1l);
+ dp = (f1 * f2l - f2 * f1l) / dp;
+ while (dl > ONEPI) dl -= ONEPI; /* set to interval [-ONEPI, ONEPI] */
+ while (dl < -ONEPI) dl += ONEPI; /* set to interval [-ONEPI, ONEPI] */
+ lp_lat -= dp; lp_lon -= dl;
+ } while ((fabs(dp) > EPSILON || fabs(dl) > EPSILON) && (iter++ < MAXITER));
+ if (lp_lat > TWOPI) lp_lat -= 2.*(lp_lat-TWOPI); /* correct if symmetrical solution for Aitoff */
+ if (lp_lat < -TWOPI) lp_lat -= 2.*(lp_lat+TWOPI); /* correct if symmetrical solution for Aitoff */
+ if ((fabs(fabs(lp_lat) - TWOPI) < EPSILON) && (!this->m_proj_parm.mode)) lp_lon = 0.; /* if pole in Aitoff, return longitude of 0 */
+
+ /* calculate x,y coordinates with solution obtained */
+ if((D = acos(cos(lp_lat) * cos(C = 0.5 * lp_lon)))) {/* Aitoff */
+ x = 2. * D * cos(lp_lat) * sin(C) * (y = 1. / sin(D));
+ y *= D * sin(lp_lat);
+ } else
+ x = y = 0.;
+ if (this->m_proj_parm.mode) { /* Winkel Tripel */
+ x = (x + lp_lon * this->m_proj_parm.cosphi1) * 0.5;
+ y = (y + lp_lat) * 0.5;
+ }
+ /* if too far from given values of x,y, repeat with better approximation of phi,lam */
+ } while (((fabs(xy_x-x) > EPSILON) || (fabs(xy_y-y) > EPSILON)) && (round++ < MAXROUND));
+
+ //if (iter == MAXITER && round == MAXROUND) fprintf(stderr, "Warning: Accuracy of 1e-12 not reached. Last increments: dlat=%e and dlon=%e\n", dp, dl);
+ }
+
+ static inline std::string get_name()
+ {
+ return "aitoff_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_aitoff<T>& proj_parm)
+ {
+ boost::ignore_unused(proj_parm);
+ par.es = 0.;
+ }
+
+
+ // Aitoff
+ template <typename Parameters, typename T>
+ inline void setup_aitoff(Parameters& par, par_aitoff<T>& proj_parm)
+ {
+ proj_parm.mode = 0;
+ setup(par, proj_parm);
+ }
+
+ // Winkel Tripel
+ template <typename Parameters, typename T>
+ inline void setup_wintri(Parameters& par, par_aitoff<T>& proj_parm)
+ {
+ static const T TWO_D_PI = detail::TWO_D_PI<T>();
+
+ proj_parm.mode = 1;
+ if (pj_param(par.params, "tlat_1").i) {
+ if ((proj_parm.cosphi1 = cos(pj_param(par.params, "rlat_1").f)) == 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-22) );
+ } else /* 50d28' or phi1=acos(2/pi) */
+ proj_parm.cosphi1 = TWO_D_PI;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::aitoff
+ #endif // doxygen
+
+ /*!
+ \brief Aitoff projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ \par Example
+ \image html ex_aitoff.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct aitoff_spheroid : public detail::aitoff::base_aitoff_spheroid<CalculationType, Parameters>
+ {
+ inline aitoff_spheroid(const Parameters& par) : detail::aitoff::base_aitoff_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::aitoff::setup_aitoff(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Winkel Tripel projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ \par Example
+ \image html ex_wintri.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wintri_spheroid : public detail::aitoff::base_aitoff_spheroid<CalculationType, Parameters>
+ {
+ inline wintri_spheroid(const Parameters& par) : detail::aitoff::base_aitoff_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::aitoff::setup_wintri(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::aitoff, aitoff_spheroid, aitoff_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wintri, wintri_spheroid, wintri_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class aitoff_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<aitoff_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class wintri_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<wintri_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void aitoff_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("aitoff", new aitoff_entry<CalculationType, Parameters>);
+ factory.add_to_factory("wintri", new wintri_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_AITOFF_HPP
+
diff --git a/boost/geometry/srs/projections/proj/august.hpp b/boost/geometry/srs/projections/proj/august.hpp
new file mode 100644
index 0000000000..7358cfb12f
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/august.hpp
@@ -0,0 +1,168 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_AUGUST_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_AUGUST_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct august {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace august
+ {
+
+ //static const double M = 1.333333333333333;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_august_spheroid : public base_t_f<base_august_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_august_spheroid(const Parameters& par)
+ : base_t_f<base_august_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType M = 1.333333333333333333333333333333333333;
+
+ CalculationType t, c1, c, x1, x12, y1, y12;
+
+ t = tan(.5 * lp_lat);
+ c1 = sqrt(1. - t * t);
+ c = 1. + c1 * cos(lp_lon *= .5);
+ x1 = sin(lp_lon) * c1 / c;
+ y1 = t / c;
+ xy_x = M * x1 * (3. + (x12 = x1 * x1) - 3. * (y12 = y1 * y1));
+ xy_y = M * y1 * (3. + 3. * x12 - y12);
+ }
+
+ static inline std::string get_name()
+ {
+ return "august_spheroid";
+ }
+
+ };
+
+ // August Epicycloidal
+ template <typename Parameters>
+ inline void setup_august(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::august
+ #endif // doxygen
+
+ /*!
+ \brief August Epicycloidal projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_august.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct august_spheroid : public detail::august::base_august_spheroid<CalculationType, Parameters>
+ {
+ inline august_spheroid(const Parameters& par) : detail::august::base_august_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::august::setup_august(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::august, august_spheroid, august_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class august_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<august_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void august_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("august", new august_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_AUGUST_HPP
+
diff --git a/boost/geometry/srs/projections/proj/bacon.hpp b/boost/geometry/srs/projections/proj/bacon.hpp
new file mode 100644
index 0000000000..5e8d37980f
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/bacon.hpp
@@ -0,0 +1,272 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_BACON_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_BACON_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct apian {};
+ struct ortel {};
+ struct bacon {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace bacon
+ {
+
+ //static const double HLFPI2 = 2.46740110027233965467;
+ static const double EPS = 1e-10;
+
+ struct par_bacon
+ {
+ int bacn;
+ int ortl;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_bacon_spheroid : public base_t_f<base_bacon_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_bacon m_proj_parm;
+
+ inline base_bacon_spheroid(const Parameters& par)
+ : base_t_f<base_bacon_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType HLFPI2 = detail::HALFPI_SQR<CalculationType>();
+
+ CalculationType ax, f;
+
+ xy_y = this->m_proj_parm.bacn ? HALFPI * sin(lp_lat) : lp_lat;
+ if ((ax = fabs(lp_lon)) >= EPS) {
+ if (this->m_proj_parm.ortl && ax >= HALFPI)
+ xy_x = sqrt(HLFPI2 - lp_lat * lp_lat + EPS) + ax - HALFPI;
+ else {
+ f = 0.5 * (HLFPI2 / ax + ax);
+ xy_x = ax - f + sqrt(f * f - xy_y * xy_y);
+ }
+ if (lp_lon < 0.) xy_x = - xy_x;
+ } else
+ xy_x = 0.;
+ }
+
+ static inline std::string get_name()
+ {
+ return "bacon_spheroid";
+ }
+
+ };
+
+ // Apian Globular I
+ template <typename Parameters>
+ inline void setup_apian(Parameters& par, par_bacon& proj_parm)
+ {
+ proj_parm.bacn = proj_parm.ortl = 0;
+ par.es = 0.;
+ }
+
+ // Ortelius Oval
+ template <typename Parameters>
+ inline void setup_ortel(Parameters& par, par_bacon& proj_parm)
+ {
+ proj_parm.bacn = 0;
+ proj_parm.ortl = 1;
+ par.es = 0.;
+ }
+
+ // Bacon Globular
+ template <typename Parameters>
+ inline void setup_bacon(Parameters& par, par_bacon& proj_parm)
+ {
+ proj_parm.bacn = 1;
+ proj_parm.ortl = 0;
+ par.es = 0.;
+ }
+
+ }} // namespace detail::bacon
+ #endif // doxygen
+
+ /*!
+ \brief Apian Globular I projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_apian.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct apian_spheroid : public detail::bacon::base_bacon_spheroid<CalculationType, Parameters>
+ {
+ inline apian_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::bacon::setup_apian(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Ortelius Oval projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_ortel.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct ortel_spheroid : public detail::bacon::base_bacon_spheroid<CalculationType, Parameters>
+ {
+ inline ortel_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::bacon::setup_ortel(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Bacon Globular projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_bacon.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct bacon_spheroid : public detail::bacon::base_bacon_spheroid<CalculationType, Parameters>
+ {
+ inline bacon_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::bacon::setup_bacon(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::apian, apian_spheroid, apian_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::bacon, bacon_spheroid, bacon_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::ortel, ortel_spheroid, ortel_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class apian_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<apian_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class ortel_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<ortel_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class bacon_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<bacon_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void bacon_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("apian", new apian_entry<CalculationType, Parameters>);
+ factory.add_to_factory("ortel", new ortel_entry<CalculationType, Parameters>);
+ factory.add_to_factory("bacon", new bacon_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_BACON_HPP
+
diff --git a/boost/geometry/srs/projections/proj/bipc.hpp b/boost/geometry/srs/projections/proj/bipc.hpp
new file mode 100644
index 0000000000..6f014d0e66
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/bipc.hpp
@@ -0,0 +1,297 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_BIPC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_BIPC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct bipc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace bipc
+ {
+
+ static const double EPS = 1e-10;
+ static const double EPS10 = 1e-10;
+ static const double ONEEPS = 1.000000001;
+ static const int NITER = 10;
+ static const double lamB = -.34894976726250681539;
+ static const double n = .63055844881274687180;
+ static const double F = 1.89724742567461030582;
+ static const double Azab = .81650043674686363166;
+ static const double Azba = 1.82261843856185925133;
+ static const double T = 1.27246578267089012270;
+ static const double rhoc = 1.20709121521568721927;
+ static const double cAzc = .69691523038678375519;
+ static const double sAzc = .71715351331143607555;
+ static const double C45 = .70710678118654752469;
+ static const double S45 = .70710678118654752410;
+ static const double C20 = .93969262078590838411;
+ static const double S20 = -.34202014332566873287;
+ static const double R110 = 1.91986217719376253360;
+ static const double R104 = 1.81514242207410275904;
+
+ struct par_bipc
+ {
+ int noskew;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_bipc_spheroid : public base_t_fi<base_bipc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_bipc m_proj_parm;
+
+ inline base_bipc_spheroid(const Parameters& par)
+ : base_t_fi<base_bipc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+
+ CalculationType cphi, sphi, tphi, t, al, Az, z, Av, cdlam, sdlam, r;
+ int tag;
+
+ cphi = cos(lp_lat);
+ sphi = sin(lp_lat);
+ cdlam = cos(sdlam = lamB - lp_lon);
+ sdlam = sin(sdlam);
+ if (fabs(fabs(lp_lat) - HALFPI) < EPS10) {
+ Az = lp_lat < 0. ? ONEPI : 0.;
+ tphi = HUGE_VAL;
+ } else {
+ tphi = sphi / cphi;
+ Az = atan2(sdlam , C45 * (tphi - cdlam));
+ }
+ if( (tag = (Az > Azba)) ) {
+ cdlam = cos(sdlam = lp_lon + R110);
+ sdlam = sin(sdlam);
+ z = S20 * sphi + C20 * cphi * cdlam;
+ if (fabs(z) > 1.) {
+ if (fabs(z) > ONEEPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else
+ z = z < 0. ? -1. : 1.;
+ } else
+ z = acos(z);
+ if (tphi != HUGE_VAL)
+ Az = atan2(sdlam, (C20 * tphi - S20 * cdlam));
+ Av = Azab;
+ xy_y = rhoc;
+ } else {
+ z = S45 * (sphi + cphi * cdlam);
+ if (fabs(z) > 1.) {
+ if (fabs(z) > ONEEPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else
+ z = z < 0. ? -1. : 1.;
+ } else
+ z = acos(z);
+ Av = Azba;
+ xy_y = -rhoc;
+ }
+ if (z < 0.) BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ r = F * (t = pow(tan(.5 * z), n));
+ if ((al = .5 * (R104 - z)) < 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ al = (t + pow(al, n)) / T;
+ if (fabs(al) > 1.) {
+ if (fabs(al) > ONEEPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else
+ al = al < 0. ? -1. : 1.;
+ } else
+ al = acos(al);
+ if (fabs(t = n * (Av - Az)) < al)
+ r /= cos(al + (tag ? t : -t));
+ xy_x = r * sin(t);
+ xy_y += (tag ? -r : r) * cos(t);
+ if (this->m_proj_parm.noskew) {
+ t = xy_x;
+ xy_x = -xy_x * cAzc - xy_y * sAzc;
+ xy_y = -xy_y * cAzc + t * sAzc;
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType t, r, rp, rl, al, z, fAz, Az, s, c, Av;
+ int neg, i;
+
+ if (this->m_proj_parm.noskew) {
+ t = xy_x;
+ xy_x = -xy_x * cAzc + xy_y * sAzc;
+ xy_y = -xy_y * cAzc - t * sAzc;
+ }
+ if( (neg = (xy_x < 0.)) ) {
+ xy_y = rhoc - xy_y;
+ s = S20;
+ c = C20;
+ Av = Azab;
+ } else {
+ xy_y += rhoc;
+ s = S45;
+ c = C45;
+ Av = Azba;
+ }
+ rl = rp = r = boost::math::hypot(xy_x, xy_y);
+ fAz = fabs(Az = atan2(xy_x, xy_y));
+ for (i = NITER; i ; --i) {
+ z = 2. * atan(pow(r / F,1 / n));
+ al = acos((pow(tan(.5 * z), n) +
+ pow(tan(.5 * (R104 - z)), n)) / T);
+ if (fAz < al)
+ r = rp * cos(al + (neg ? Az : -Az));
+ if (fabs(rl - r) < EPS)
+ break;
+ rl = r;
+ }
+ if (! i)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ Az = Av - Az / n;
+ lp_lat = asin(s * cos(z) + c * sin(z) * cos(Az));
+ lp_lon = atan2(sin(Az), c / tan(z) - s * cos(Az));
+ if (neg)
+ lp_lon -= R110;
+ else
+ lp_lon = lamB - lp_lon;
+ }
+
+ static inline std::string get_name()
+ {
+ return "bipc_spheroid";
+ }
+
+ };
+
+ // Bipolar conic of western hemisphere
+ template <typename Parameters>
+ inline void setup_bipc(Parameters& par, par_bipc& proj_parm)
+ {
+ proj_parm.noskew = pj_param(par.params, "bns").i;
+ par.es = 0.;
+ }
+
+ }} // namespace detail::bipc
+ #endif // doxygen
+
+ /*!
+ \brief Bipolar conic of western hemisphere projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ \par Projection parameters
+ - ns (boolean)
+ \par Example
+ \image html ex_bipc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct bipc_spheroid : public detail::bipc::base_bipc_spheroid<CalculationType, Parameters>
+ {
+ inline bipc_spheroid(const Parameters& par) : detail::bipc::base_bipc_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::bipc::setup_bipc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::bipc, bipc_spheroid, bipc_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class bipc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<bipc_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void bipc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("bipc", new bipc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_BIPC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/boggs.hpp b/boost/geometry/srs/projections/proj/boggs.hpp
new file mode 100644
index 0000000000..6c371e430f
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/boggs.hpp
@@ -0,0 +1,185 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_BOGGS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_BOGGS_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct boggs {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace boggs
+ {
+
+ static const int NITER = 20;
+ static const double EPS = 1e-7;
+ static const double ONETOL = 1.000001;
+ static const double FXC = 2.00276;
+ static const double FXC2 = 1.11072;
+ static const double FYC = 0.49931;
+ static const double FYC2 = 1.41421356237309504880;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_boggs_spheroid : public base_t_f<base_boggs_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_boggs_spheroid(const Parameters& par)
+ : base_t_f<base_boggs_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+
+ CalculationType theta, th1, c;
+ int i;
+
+ theta = lp_lat;
+ if (fabs(fabs(lp_lat) - HALFPI) < EPS)
+ xy_x = 0.;
+ else {
+ c = sin(theta) * ONEPI;
+ for (i = NITER; i; --i) {
+ theta -= th1 = (theta + sin(theta) - c) /
+ (1. + cos(theta));
+ if (fabs(th1) < EPS) break;
+ }
+ theta *= 0.5;
+ xy_x = FXC * lp_lon / (1. / cos(lp_lat) + FXC2 / cos(theta));
+ }
+ xy_y = FYC * (lp_lat + FYC2 * sin(theta));
+ }
+
+ static inline std::string get_name()
+ {
+ return "boggs_spheroid";
+ }
+
+ };
+
+ // Boggs Eumorphic
+ template <typename Parameters>
+ inline void setup_boggs(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::boggs
+ #endif // doxygen
+
+ /*!
+ \brief Boggs Eumorphic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - no inverse
+ - Spheroid
+ \par Example
+ \image html ex_boggs.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct boggs_spheroid : public detail::boggs::base_boggs_spheroid<CalculationType, Parameters>
+ {
+ inline boggs_spheroid(const Parameters& par) : detail::boggs::base_boggs_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::boggs::setup_boggs(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::boggs, boggs_spheroid, boggs_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class boggs_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<boggs_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void boggs_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("boggs", new boggs_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_BOGGS_HPP
+
diff --git a/boost/geometry/srs/projections/proj/bonne.hpp b/boost/geometry/srs/projections/proj/bonne.hpp
new file mode 100644
index 0000000000..52120a905f
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/bonne.hpp
@@ -0,0 +1,298 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_BONNE_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_BONNE_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct bonne {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace bonne
+ {
+
+ static const double EPS10 = 1e-10;
+
+ template <typename T>
+ struct par_bonne
+ {
+ T phi1;
+ T cphi1;
+ T am1;
+ T m1;
+ T en[EN_SIZE];
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_bonne_ellipsoid : public base_t_fi<base_bonne_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_bonne<CalculationType> m_proj_parm;
+
+ inline base_bonne_ellipsoid(const Parameters& par)
+ : base_t_fi<base_bonne_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType rh, E, c;
+
+ rh = this->m_proj_parm.am1 + this->m_proj_parm.m1 - pj_mlfn(lp_lat, E = sin(lp_lat), c = cos(lp_lat), this->m_proj_parm.en);
+ E = c * lp_lon / (rh * sqrt(1. - this->m_par.es * E * E));
+ xy_x = rh * sin(E);
+ xy_y = this->m_proj_parm.am1 - rh * cos(E);
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType s, rh;
+
+ rh = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.am1 - xy_y);
+ lp_lat = pj_inv_mlfn(this->m_proj_parm.am1 + this->m_proj_parm.m1 - rh, this->m_par.es, this->m_proj_parm.en);
+ if ((s = fabs(lp_lat)) < HALFPI) {
+ s = sin(lp_lat);
+ lp_lon = rh * atan2(xy_x, xy_y) *
+ sqrt(1. - this->m_par.es * s * s) / cos(lp_lat);
+ } else if (fabs(s - HALFPI) <= EPS10)
+ lp_lon = 0.;
+ else
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ }
+
+ static inline std::string get_name()
+ {
+ return "bonne_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_bonne_spheroid : public base_t_fi<base_bonne_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_bonne<CalculationType> m_proj_parm;
+
+ inline base_bonne_spheroid(const Parameters& par)
+ : base_t_fi<base_bonne_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType E, rh;
+
+ rh = this->m_proj_parm.cphi1 + this->m_proj_parm.phi1 - lp_lat;
+ if (fabs(rh) > EPS10) {
+ xy_x = rh * sin(E = lp_lon * cos(lp_lat) / rh);
+ xy_y = this->m_proj_parm.cphi1 - rh * cos(E);
+ } else
+ xy_x = xy_y = 0.;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType rh;
+
+ rh = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.cphi1 - xy_y);
+ lp_lat = this->m_proj_parm.cphi1 + this->m_proj_parm.phi1 - rh;
+ if (fabs(lp_lat) > HALFPI)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ if (fabs(fabs(lp_lat) - HALFPI) <= EPS10)
+ lp_lon = 0.;
+ else
+ lp_lon = rh * atan2(xy_x, xy_y) / cos(lp_lat);
+ }
+
+ static inline std::string get_name()
+ {
+ return "bonne_spheroid";
+ }
+
+ };
+
+ // Bonne (Werner lat_1=90)
+ template <typename Parameters, typename T>
+ inline void setup_bonne(Parameters& par, par_bonne<T>& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T c;
+
+ proj_parm.phi1 = pj_param(par.params, "rlat_1").f;
+ if (fabs(proj_parm.phi1) < EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-23) );
+ if (par.es) {
+ pj_enfn(par.es, proj_parm.en);
+ proj_parm.m1 = pj_mlfn(proj_parm.phi1, proj_parm.am1 = sin(proj_parm.phi1),
+ c = cos(proj_parm.phi1), proj_parm.en);
+ proj_parm.am1 = c / (sqrt(1. - par.es * proj_parm.am1 * proj_parm.am1) * proj_parm.am1);
+ } else {
+ if (fabs(proj_parm.phi1) + EPS10 >= HALFPI)
+ proj_parm.cphi1 = 0.;
+ else
+ proj_parm.cphi1 = 1. / tan(proj_parm.phi1);
+ }
+ }
+
+ }} // namespace detail::bonne
+ #endif // doxygen
+
+ /*!
+ \brief Bonne (Werner lat_1=90) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ \par Example
+ \image html ex_bonne.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct bonne_ellipsoid : public detail::bonne::base_bonne_ellipsoid<CalculationType, Parameters>
+ {
+ inline bonne_ellipsoid(const Parameters& par) : detail::bonne::base_bonne_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::bonne::setup_bonne(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Bonne (Werner lat_1=90) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ \par Example
+ \image html ex_bonne.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct bonne_spheroid : public detail::bonne::base_bonne_spheroid<CalculationType, Parameters>
+ {
+ inline bonne_spheroid(const Parameters& par) : detail::bonne::base_bonne_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::bonne::setup_bonne(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::bonne, bonne_spheroid, bonne_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class bonne_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<bonne_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<bonne_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void bonne_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("bonne", new bonne_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_BONNE_HPP
+
diff --git a/boost/geometry/srs/projections/proj/cass.hpp b/boost/geometry/srs/projections/proj/cass.hpp
new file mode 100644
index 0000000000..b5f32b5aab
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/cass.hpp
@@ -0,0 +1,292 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_CASS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_CASS_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct cass {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace cass
+ {
+
+ //static const double EPS10 = 1e-10;
+ //static const double C1 = .16666666666666666666;
+ //static const double C2 = .00833333333333333333;
+ //static const double C3 = .04166666666666666666;
+ //static const double C4 = .33333333333333333333;
+ //static const double C5 = .06666666666666666666;
+
+ template <typename T>
+ inline T C1() { return .16666666666666666666666666666666666666; }
+ template <typename T>
+ inline T C2() { return .00833333333333333333333333333333333333; }
+ template <typename T>
+ inline T C3() { return .04166666666666666666666666666666666666; }
+ template <typename T>
+ inline T C4() { return .33333333333333333333333333333333333333; }
+ template <typename T>
+ inline T C5() { return .06666666666666666666666666666666666666; }
+
+ template <typename T>
+ struct par_cass
+ {
+ T m0;
+ T en[EN_SIZE];
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_cass_ellipsoid : public base_t_fi<base_cass_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_cass<CalculationType> m_proj_parm;
+
+ inline base_cass_ellipsoid(const Parameters& par)
+ : base_t_fi<base_cass_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType C1 = cass::C1<CalculationType>();
+ static const CalculationType C2 = cass::C2<CalculationType>();
+ static const CalculationType C3 = cass::C3<CalculationType>();
+
+ CalculationType n = sin(lp_lat);
+ CalculationType c = cos(lp_lat);
+ xy_y = pj_mlfn(lp_lat, n, c, this->m_proj_parm.en);
+ n = 1./sqrt(1. - this->m_par.es * n * n);
+ CalculationType tn = tan(lp_lat); CalculationType t = tn * tn;
+ CalculationType a1 = lp_lon * c;
+ c *= this->m_par.es * c / (1 - this->m_par.es);
+ CalculationType a2 = a1 * a1;
+ xy_x = n * a1 * (1. - a2 * t *
+ (C1 - (8. - t + 8. * c) * a2 * C2));
+ xy_y -= this->m_proj_parm.m0 - n * tn * a2 *
+ (.5 + (5. - t + 6. * c) * a2 * C3);
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType C3 = cass::C3<CalculationType>();
+ static const CalculationType C4 = cass::C4<CalculationType>();
+ static const CalculationType C5 = cass::C5<CalculationType>();
+
+ CalculationType ph1;
+
+ ph1 = pj_inv_mlfn(this->m_proj_parm.m0 + xy_y, this->m_par.es, this->m_proj_parm.en);
+ CalculationType tn = tan(ph1); CalculationType t = tn * tn;
+ CalculationType n = sin(ph1);
+ CalculationType r = 1. / (1. - this->m_par.es * n * n);
+ n = sqrt(r);
+ r *= (1. - this->m_par.es) * n;
+ CalculationType dd = xy_x / n;
+ CalculationType d2 = dd * dd;
+ lp_lat = ph1 - (n * tn / r) * d2 *
+ (.5 - (1. + 3. * t) * d2 * C3);
+ lp_lon = dd * (1. + t * d2 *
+ (-C4 + (1. + 3. * t) * d2 * C5)) / cos(ph1);
+ }
+
+ static inline std::string get_name()
+ {
+ return "cass_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_cass_spheroid : public base_t_fi<base_cass_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_cass<CalculationType> m_proj_parm;
+
+ inline base_cass_spheroid(const Parameters& par)
+ : base_t_fi<base_cass_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = asin(cos(lp_lat) * sin(lp_lon));
+ xy_y = atan2(tan(lp_lat) , cos(lp_lon)) - this->m_par.phi0;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType dd = xy_y + this->m_par.phi0;
+ lp_lat = asin(sin(dd) * cos(xy_x));
+ lp_lon = atan2(tan(xy_x), cos(dd));
+ }
+
+ static inline std::string get_name()
+ {
+ return "cass_spheroid";
+ }
+
+ };
+
+ // Cassini
+ template <typename Parameters, typename T>
+ inline void setup_cass(Parameters& par, par_cass<T>& proj_parm)
+ {
+ if (par.es) {
+ if (!pj_enfn(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ proj_parm.m0 = pj_mlfn(par.phi0, sin(par.phi0), cos(par.phi0), proj_parm.en);
+ } else {
+ }
+ }
+
+ }} // namespace detail::cass
+ #endif // doxygen
+
+ /*!
+ \brief Cassini projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_cass.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct cass_ellipsoid : public detail::cass::base_cass_ellipsoid<CalculationType, Parameters>
+ {
+ inline cass_ellipsoid(const Parameters& par) : detail::cass::base_cass_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::cass::setup_cass(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Cassini projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_cass.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct cass_spheroid : public detail::cass::base_cass_spheroid<CalculationType, Parameters>
+ {
+ inline cass_spheroid(const Parameters& par) : detail::cass::base_cass_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::cass::setup_cass(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::cass, cass_spheroid, cass_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class cass_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<cass_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<cass_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void cass_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("cass", new cass_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_CASS_HPP
+
diff --git a/boost/geometry/srs/projections/proj/cc.hpp b/boost/geometry/srs/projections/proj/cc.hpp
new file mode 100644
index 0000000000..c7fc1f20ab
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/cc.hpp
@@ -0,0 +1,171 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_CC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_CC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct cc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace cc
+ {
+
+ static const double EPS10 = 1.e-10;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_cc_spheroid : public base_t_fi<base_cc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ inline base_cc_spheroid(const Parameters& par)
+ : base_t_fi<base_cc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ if (fabs(fabs(lp_lat) - HALFPI) <= EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = lp_lon;
+ xy_y = tan(lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = atan(xy_y);
+ lp_lon = xy_x;
+ }
+
+ static inline std::string get_name()
+ {
+ return "cc_spheroid";
+ }
+
+ };
+
+ // Central Cylindrical
+ template <typename Parameters>
+ inline void setup_cc(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::cc
+ #endif // doxygen
+
+ /*!
+ \brief Central Cylindrical projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Example
+ \image html ex_cc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct cc_spheroid : public detail::cc::base_cc_spheroid<CalculationType, Parameters>
+ {
+ inline cc_spheroid(const Parameters& par) : detail::cc::base_cc_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::cc::setup_cc(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::cc, cc_spheroid, cc_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class cc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<cc_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void cc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("cc", new cc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_CC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/cea.hpp b/boost/geometry/srs/projections/proj/cea.hpp
new file mode 100644
index 0000000000..b6d8707e08
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/cea.hpp
@@ -0,0 +1,269 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_CEA_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_CEA_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_auth.hpp>
+#include <boost/geometry/srs/projections/impl/pj_qsfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct cea {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace cea
+ {
+
+ static const double EPS = 1e-10;
+
+ template <typename T>
+ struct par_cea
+ {
+ T qp;
+ T apa[APA_SIZE];
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_cea_ellipsoid : public base_t_fi<base_cea_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_cea<CalculationType> m_proj_parm;
+
+ inline base_cea_ellipsoid(const Parameters& par)
+ : base_t_fi<base_cea_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = this->m_par.k0 * lp_lon;
+ xy_y = .5 * pj_qsfn(sin(lp_lat), this->m_par.e, this->m_par.one_es) / this->m_par.k0;
+ }
+
+ // INVERSE(e_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = pj_authlat(asin( 2. * xy_y * this->m_par.k0 / this->m_proj_parm.qp), this->m_proj_parm.apa);
+ lp_lon = xy_x / this->m_par.k0;
+ }
+
+ static inline std::string get_name()
+ {
+ return "cea_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_cea_spheroid : public base_t_fi<base_cea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_cea<CalculationType> m_proj_parm;
+
+ inline base_cea_spheroid(const Parameters& par)
+ : base_t_fi<base_cea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = this->m_par.k0 * lp_lon;
+ xy_y = sin(lp_lat) / this->m_par.k0;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType t;
+
+ if ((t = fabs(xy_y *= this->m_par.k0)) - EPS <= 1.) {
+ if (t >= 1.)
+ lp_lat = xy_y < 0. ? -HALFPI : HALFPI;
+ else
+ lp_lat = asin(xy_y);
+ lp_lon = xy_x / this->m_par.k0;
+ } else
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ }
+
+ static inline std::string get_name()
+ {
+ return "cea_spheroid";
+ }
+
+ };
+
+ // Equal Area Cylindrical
+ template <typename Parameters, typename T>
+ inline void setup_cea(Parameters& par, par_cea<T>& proj_parm)
+ {
+ T t = 0;
+
+ if (pj_param(par.params, "tlat_ts").i &&
+ (par.k0 = cos(t = pj_param(par.params, "rlat_ts").f)) < 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-24) );
+ if (par.es) {
+ t = sin(t);
+ par.k0 /= sqrt(1. - par.es * t * t);
+ par.e = sqrt(par.es);
+ if (!pj_authset(par.es, proj_parm.apa))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ proj_parm.qp = pj_qsfn(1., par.e, par.one_es);
+ } else {
+ }
+ }
+
+ }} // namespace detail::cea
+ #endif // doxygen
+
+ /*!
+ \brief Equal Area Cylindrical projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ \par Example
+ \image html ex_cea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct cea_ellipsoid : public detail::cea::base_cea_ellipsoid<CalculationType, Parameters>
+ {
+ inline cea_ellipsoid(const Parameters& par) : detail::cea::base_cea_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::cea::setup_cea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Equal Area Cylindrical projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ \par Example
+ \image html ex_cea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct cea_spheroid : public detail::cea::base_cea_spheroid<CalculationType, Parameters>
+ {
+ inline cea_spheroid(const Parameters& par) : detail::cea::base_cea_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::cea::setup_cea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::cea, cea_spheroid, cea_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class cea_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<cea_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<cea_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void cea_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("cea", new cea_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_CEA_HPP
+
diff --git a/boost/geometry/srs/projections/proj/chamb.hpp b/boost/geometry/srs/projections/proj/chamb.hpp
new file mode 100644
index 0000000000..9fd123bb2e
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/chamb.hpp
@@ -0,0 +1,288 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_CHAMB_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_CHAMB_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <cstdio>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct chamb {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace chamb
+ {
+
+ //static const double THIRD = 0.333333333333333333;
+ static const double TOL = 1e-9;
+
+ // specific for 'chamb'
+ template <typename T>
+ struct VECT { T r, Az; };
+ template <typename T>
+ struct XY { T x, y; };
+
+ template <typename T>
+ struct par_chamb
+ {
+ struct { /* control point data */
+ T phi, lam;
+ T cosphi, sinphi;
+ VECT<T> v;
+ XY<T> p;
+ T Az;
+ } c[3];
+ XY<T> p;
+ T beta_0, beta_1, beta_2;
+ };
+
+ template <typename T>
+ inline VECT<T> /* distance and azimuth from point 1 to point 2 */
+ vect(T const& dphi, T const& c1, T const& s1, T const& c2, T const& s2, T const& dlam)
+ {
+ VECT<T> v;
+ T cdl, dp, dl;
+
+ cdl = cos(dlam);
+ if (fabs(dphi) > 1. || fabs(dlam) > 1.)
+ v.r = aacos(s1 * s2 + c1 * c2 * cdl);
+ else { /* more accurate for smaller distances */
+ dp = sin(.5 * dphi);
+ dl = sin(.5 * dlam);
+ v.r = 2. * aasin(sqrt(dp * dp + c1 * c2 * dl * dl));
+ }
+ if (fabs(v.r) > TOL)
+ v.Az = atan2(c2 * sin(dlam), c1 * s2 - s1 * c2 * cdl);
+ else
+ v.r = v.Az = 0.;
+ return v;
+ }
+
+ template <typename T>
+ inline T /* law of cosines */
+ lc(T const& b, T const& c, T const& a)
+ {
+ return aacos(.5 * (b * b + c * c - a * a) / (b * c));
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_chamb_spheroid : public base_t_f<base_chamb_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_chamb<CalculationType> m_proj_parm;
+
+ inline base_chamb_spheroid(const Parameters& par)
+ : base_t_f<base_chamb_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType THIRD = detail::THIRD<CalculationType>();
+
+ CalculationType sinphi, cosphi, a;
+ VECT<CalculationType> v[3];
+ int i, j;
+
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ for (i = 0; i < 3; ++i) { /* dist/azimiths from control */
+ v[i] = vect(lp_lat - this->m_proj_parm.c[i].phi, this->m_proj_parm.c[i].cosphi, this->m_proj_parm.c[i].sinphi,
+ cosphi, sinphi, lp_lon - this->m_proj_parm.c[i].lam);
+ if ( ! v[i].r)
+ break;
+ v[i].Az = adjlon(v[i].Az - this->m_proj_parm.c[i].v.Az);
+ }
+ if (i < 3) /* current point at control point */
+ { xy_x = this->m_proj_parm.c[i].p.x; xy_y = this->m_proj_parm.c[i].p.y; }
+ else { /* point mean of intersepts */
+ { xy_x = this->m_proj_parm.p.x; xy_y = this->m_proj_parm.p.y; }
+ for (i = 0; i < 3; ++i) {
+ j = i == 2 ? 0 : i + 1;
+ a = lc(this->m_proj_parm.c[i].v.r, v[i].r, v[j].r);
+ if (v[i].Az < 0.)
+ a = -a;
+ if (! i) { /* coord comp unique to each arc */
+ xy_x += v[i].r * cos(a);
+ xy_y -= v[i].r * sin(a);
+ } else if (i == 1) {
+ a = this->m_proj_parm.beta_1 - a;
+ xy_x -= v[i].r * cos(a);
+ xy_y -= v[i].r * sin(a);
+ } else {
+ a = this->m_proj_parm.beta_2 - a;
+ xy_x += v[i].r * cos(a);
+ xy_y += v[i].r * sin(a);
+ }
+ }
+ xy_x *= THIRD; /* mean of arc intercepts */
+ xy_y *= THIRD;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "chamb_spheroid";
+ }
+
+ };
+
+ // Chamberlin Trimetric
+ template <typename Parameters, typename T>
+ inline void setup_chamb(Parameters& par, par_chamb<T>& proj_parm)
+ {
+ static const T ONEPI = detail::ONEPI<T>();
+
+ int i, j;
+ char line[10];
+
+ for (i = 0; i < 3; ++i) { /* get control point locations */
+ (void)sprintf(line, "rlat_%d", i+1);
+ proj_parm.c[i].phi = pj_param(par.params, line).f;
+ (void)sprintf(line, "rlon_%d", i+1);
+ proj_parm.c[i].lam = pj_param(par.params, line).f;
+ proj_parm.c[i].lam = adjlon(proj_parm.c[i].lam - par.lam0);
+ proj_parm.c[i].cosphi = cos(proj_parm.c[i].phi);
+ proj_parm.c[i].sinphi = sin(proj_parm.c[i].phi);
+ }
+ for (i = 0; i < 3; ++i) { /* inter ctl pt. distances and azimuths */
+ j = i == 2 ? 0 : i + 1;
+ proj_parm.c[i].v = vect(proj_parm.c[j].phi - proj_parm.c[i].phi, proj_parm.c[i].cosphi, proj_parm.c[i].sinphi,
+ proj_parm.c[j].cosphi, proj_parm.c[j].sinphi, proj_parm.c[j].lam - proj_parm.c[i].lam);
+ if (! proj_parm.c[i].v.r)
+ BOOST_THROW_EXCEPTION( projection_exception(-25) );
+ /* co-linearity problem ignored for now */
+ }
+ proj_parm.beta_0 = lc(proj_parm.c[0].v.r, proj_parm.c[2].v.r, proj_parm.c[1].v.r);
+ proj_parm.beta_1 = lc(proj_parm.c[0].v.r, proj_parm.c[1].v.r, proj_parm.c[2].v.r);
+ proj_parm.beta_2 = ONEPI - proj_parm.beta_0;
+ proj_parm.p.y = 2. * (proj_parm.c[0].p.y = proj_parm.c[1].p.y = proj_parm.c[2].v.r * sin(proj_parm.beta_0));
+ proj_parm.c[2].p.y = 0.;
+ proj_parm.c[0].p.x = - (proj_parm.c[1].p.x = 0.5 * proj_parm.c[0].v.r);
+ proj_parm.p.x = proj_parm.c[2].p.x = proj_parm.c[0].p.x + proj_parm.c[2].v.r * cos(proj_parm.beta_0);
+ par.es = 0.;
+ }
+
+ }} // namespace detail::chamb
+ #endif // doxygen
+
+ /*!
+ \brief Chamberlin Trimetric projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Projection parameters
+ - lat_1: Latitude of control point 1 (degrees)
+ - lon_1: Longitude of control point 1 (degrees)
+ - lat_2: Latitude of control point 2 (degrees)
+ - lon_2: Longitude of control point 2 (degrees)
+ - lat_3: Latitude of control point 3 (degrees)
+ - lon_3: Longitude of control point 3 (degrees)
+ \par Example
+ \image html ex_chamb.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct chamb_spheroid : public detail::chamb::base_chamb_spheroid<CalculationType, Parameters>
+ {
+ inline chamb_spheroid(const Parameters& par) : detail::chamb::base_chamb_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::chamb::setup_chamb(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::chamb, chamb_spheroid, chamb_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class chamb_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<chamb_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void chamb_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("chamb", new chamb_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_CHAMB_HPP
+
diff --git a/boost/geometry/srs/projections/proj/collg.hpp b/boost/geometry/srs/projections/proj/collg.hpp
new file mode 100644
index 0000000000..0bc347a305
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/collg.hpp
@@ -0,0 +1,183 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_COLLG_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_COLLG_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct collg {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace collg
+ {
+
+ static const double FXC = 1.12837916709551257390;
+ static const double FYC = 1.77245385090551602729;
+ static const double ONEEPS = 1.0000001;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_collg_spheroid : public base_t_fi<base_collg_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_collg_spheroid(const Parameters& par)
+ : base_t_fi<base_collg_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ if ((xy_y = 1. - sin(lp_lat)) <= 0.)
+ xy_y = 0.;
+ else
+ xy_y = sqrt(xy_y);
+ xy_x = FXC * lp_lon * xy_y;
+ xy_y = FYC * (1. - xy_y);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = xy_y / FYC - 1.;
+ if (fabs(lp_lat = 1. - lp_lat * lp_lat) < 1.)
+ lp_lat = asin(lp_lat);
+ else if (fabs(lp_lat) > ONEEPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else
+ lp_lat = lp_lat < 0. ? -geometry::math::half_pi<double>() : geometry::math::half_pi<double>();
+ if ((lp_lon = 1. - sin(lp_lat)) <= 0.)
+ lp_lon = 0.;
+ else
+ lp_lon = xy_x / (FXC * sqrt(lp_lon));
+ }
+
+ static inline std::string get_name()
+ {
+ return "collg_spheroid";
+ }
+
+ };
+
+ // Collignon
+ template <typename Parameters>
+ inline void setup_collg(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace collg
+ #endif // doxygen
+
+ /*!
+ \brief Collignon projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_collg.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct collg_spheroid : public detail::collg::base_collg_spheroid<CalculationType, Parameters>
+ {
+ inline collg_spheroid(const Parameters& par) : detail::collg::base_collg_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::collg::setup_collg(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::collg, collg_spheroid, collg_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class collg_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<collg_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void collg_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("collg", new collg_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_COLLG_HPP
+
diff --git a/boost/geometry/srs/projections/proj/crast.hpp b/boost/geometry/srs/projections/proj/crast.hpp
new file mode 100644
index 0000000000..4aea886071
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/crast.hpp
@@ -0,0 +1,175 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_CRAST_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_CRAST_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct crast {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace crast
+ {
+
+ static const double XM = 0.97720502380583984317;
+ static const double RXM = 1.02332670794648848847;
+ static const double YM = 3.06998012383946546542;
+ static const double RYM = 0.32573500793527994772;
+ //static const double THIRD = 0.333333333333333333;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_crast_spheroid : public base_t_fi<base_crast_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_crast_spheroid(const Parameters& par)
+ : base_t_fi<base_crast_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType THIRD = detail::THIRD<CalculationType>();
+
+ lp_lat *= THIRD;
+ xy_x = XM * lp_lon * (2. * cos(lp_lat + lp_lat) - 1.);
+ xy_y = YM * sin(lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType THIRD = detail::THIRD<CalculationType>();
+
+ lp_lat = 3. * asin(xy_y * RYM);
+ lp_lon = xy_x * RXM / (2. * cos((lp_lat + lp_lat) * THIRD) - 1);
+ }
+
+ static inline std::string get_name()
+ {
+ return "crast_spheroid";
+ }
+
+ };
+
+ // Craster Parabolic (Putnins P4)
+ template <typename Parameters>
+ inline void setup_crast(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::crast
+ #endif // doxygen
+
+ /*!
+ \brief Craster Parabolic (Putnins P4) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_crast.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct crast_spheroid : public detail::crast::base_crast_spheroid<CalculationType, Parameters>
+ {
+ inline crast_spheroid(const Parameters& par) : detail::crast::base_crast_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::crast::setup_crast(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::crast, crast_spheroid, crast_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class crast_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<crast_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void crast_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("crast", new crast_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_CRAST_HPP
+
diff --git a/boost/geometry/srs/projections/proj/denoy.hpp b/boost/geometry/srs/projections/proj/denoy.hpp
new file mode 100644
index 0000000000..afedae8734
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/denoy.hpp
@@ -0,0 +1,174 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_DENOY_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_DENOY_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct denoy {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace denoy
+ {
+
+ static const double C0 = 0.95;
+ //static const double C1 = -.08333333333333333333;
+ //static const double C3 = .00166666666666666666;
+ static const double D1 = 0.9;
+ static const double D5 = 0.03;
+
+ template <typename T>
+ inline T C1() { return -.0833333333333333333333333333333; }
+ template <typename T>
+ inline T C3() { return .0016666666666666666666666666666; }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_denoy_spheroid : public base_t_f<base_denoy_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_denoy_spheroid(const Parameters& par)
+ : base_t_f<base_denoy_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType C1 = denoy::C1<CalculationType>();
+ static const CalculationType C3 = denoy::C3<CalculationType>();
+
+ xy_y = lp_lat;
+ xy_x = lp_lon;
+ lp_lon = fabs(lp_lon);
+ xy_x *= cos((C0 + lp_lon * (C1 + lp_lon * lp_lon * C3)) *
+ (lp_lat * (D1 + D5 * lp_lat * lp_lat * lp_lat * lp_lat)));
+ }
+
+ static inline std::string get_name()
+ {
+ return "denoy_spheroid";
+ }
+
+ };
+
+ // Denoyer Semi-Elliptical
+ template <typename Parameters>
+ inline void setup_denoy(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::denoy
+ #endif // doxygen
+
+ /*!
+ \brief Denoyer Semi-Elliptical projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - no inverse
+ - Spheroid
+ \par Example
+ \image html ex_denoy.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct denoy_spheroid : public detail::denoy::base_denoy_spheroid<CalculationType, Parameters>
+ {
+ inline denoy_spheroid(const Parameters& par) : detail::denoy::base_denoy_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::denoy::setup_denoy(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::denoy, denoy_spheroid, denoy_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class denoy_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<denoy_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void denoy_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("denoy", new denoy_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_DENOY_HPP
+
diff --git a/boost/geometry/srs/projections/proj/eck1.hpp b/boost/geometry/srs/projections/proj/eck1.hpp
new file mode 100644
index 0000000000..41f0f6424f
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/eck1.hpp
@@ -0,0 +1,167 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ECK1_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ECK1_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct eck1 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace eck1
+ {
+
+ static const double FC = .92131773192356127802;
+ static const double RP = .31830988618379067154;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_eck1_spheroid : public base_t_fi<base_eck1_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_eck1_spheroid(const Parameters& par)
+ : base_t_fi<base_eck1_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = FC * lp_lon * (1. - RP * fabs(lp_lat));
+ xy_y = FC * lp_lat;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = xy_y / FC;
+ lp_lon = xy_x / (FC * (1. - RP * fabs(lp_lat)));
+ }
+
+ static inline std::string get_name()
+ {
+ return "eck1_spheroid";
+ }
+
+ };
+
+ // Eckert I
+ template <typename Parameters>
+ inline void setup_eck1(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::eck1
+ #endif // doxygen
+
+ /*!
+ \brief Eckert I projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_eck1.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct eck1_spheroid : public detail::eck1::base_eck1_spheroid<CalculationType, Parameters>
+ {
+ inline eck1_spheroid(const Parameters& par) : detail::eck1::base_eck1_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::eck1::setup_eck1(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::eck1, eck1_spheroid, eck1_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class eck1_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<eck1_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void eck1_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("eck1", new eck1_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ECK1_HPP
+
diff --git a/boost/geometry/srs/projections/proj/eck2.hpp b/boost/geometry/srs/projections/proj/eck2.hpp
new file mode 100644
index 0000000000..737057bfcd
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/eck2.hpp
@@ -0,0 +1,184 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ECK2_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ECK2_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct eck2 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace eck2
+ {
+
+ static const double FXC = 0.46065886596178063902;
+ static const double FYC = 1.44720250911653531871;
+ //static const double C13 = 0.33333333333333333333;
+ static const double ONEEPS = 1.0000001;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_eck2_spheroid : public base_t_fi<base_eck2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_eck2_spheroid(const Parameters& par)
+ : base_t_fi<base_eck2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = FXC * lp_lon * (xy_y = sqrt(4. - 3. * sin(fabs(lp_lat))));
+ xy_y = FYC * (2. - xy_y);
+ if ( lp_lat < 0.) xy_y = -xy_y;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType C13 = detail::THIRD<CalculationType>();
+
+ lp_lon = xy_x / (FXC * ( lp_lat = 2. - fabs(xy_y) / FYC) );
+ lp_lat = (4. - lp_lat * lp_lat) * C13;
+ if (fabs(lp_lat) >= 1.) {
+ if (fabs(lp_lat) > ONEEPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else
+ lp_lat = lp_lat < 0. ? -HALFPI : HALFPI;
+ } else
+ lp_lat = asin(lp_lat);
+ if (xy_y < 0)
+ lp_lat = -lp_lat;
+ }
+
+ static inline std::string get_name()
+ {
+ return "eck2_spheroid";
+ }
+
+ };
+
+ // Eckert II
+ template <typename Parameters>
+ inline void setup_eck2(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::eck2
+ #endif // doxygen
+
+ /*!
+ \brief Eckert II projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_eck2.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct eck2_spheroid : public detail::eck2::base_eck2_spheroid<CalculationType, Parameters>
+ {
+ inline eck2_spheroid(const Parameters& par) : detail::eck2::base_eck2_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::eck2::setup_eck2(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::eck2, eck2_spheroid, eck2_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class eck2_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<eck2_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void eck2_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("eck2", new eck2_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ECK2_HPP
+
diff --git a/boost/geometry/srs/projections/proj/eck3.hpp b/boost/geometry/srs/projections/proj/eck3.hpp
new file mode 100644
index 0000000000..dbc1beb625
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/eck3.hpp
@@ -0,0 +1,321 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ECK3_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ECK3_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/core/ignore_unused.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct eck3 {};
+ struct putp1 {};
+ struct wag6 {};
+ struct kav7 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace eck3
+ {
+
+ template <typename T>
+ struct par_eck3
+ {
+ T C_x, C_y, A, B;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_eck3_spheroid : public base_t_fi<base_eck3_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_eck3<CalculationType> m_proj_parm;
+
+ inline base_eck3_spheroid(const Parameters& par)
+ : base_t_fi<base_eck3_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_y = this->m_proj_parm.C_y * lp_lat;
+ xy_x = this->m_proj_parm.C_x * lp_lon * (this->m_proj_parm.A + asqrt(1. - this->m_proj_parm.B * lp_lat * lp_lat));
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = xy_y / this->m_proj_parm.C_y;
+ lp_lon = xy_x / (this->m_proj_parm.C_x * (this->m_proj_parm.A + asqrt(1. - this->m_proj_parm.B * lp_lat * lp_lat)));
+ }
+
+ static inline std::string get_name()
+ {
+ return "eck3_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_eck3<T>& proj_parm)
+ {
+ boost::ignore_unused(proj_parm);
+ par.es = 0.;
+ }
+
+
+ // Eckert III
+ template <typename Parameters, typename T>
+ inline void setup_eck3(Parameters& par, par_eck3<T>& proj_parm)
+ {
+ proj_parm.C_x = .42223820031577120149;
+ proj_parm.C_y = .84447640063154240298;
+ proj_parm.A = 1.;
+ proj_parm.B = 0.4052847345693510857755;
+ setup(par, proj_parm);
+ }
+
+ // Putnins P1
+ template <typename Parameters, typename T>
+ inline void setup_putp1(Parameters& par, par_eck3<T>& proj_parm)
+ {
+ proj_parm.C_x = 1.89490;
+ proj_parm.C_y = 0.94745;
+ proj_parm.A = -0.5;
+ proj_parm.B = 0.30396355092701331433;
+ setup(par, proj_parm);
+ }
+
+ // Wagner VI
+ template <typename Parameters, typename T>
+ inline void setup_wag6(Parameters& par, par_eck3<T>& proj_parm)
+ {
+ proj_parm.C_x = proj_parm.C_y = 0.94745;
+ proj_parm.A = 0.;
+ proj_parm.B = 0.30396355092701331433;
+ setup(par, proj_parm);
+ }
+
+ // Kavraisky VII
+ template <typename Parameters, typename T>
+ inline void setup_kav7(Parameters& par, par_eck3<T>& proj_parm)
+ {
+ proj_parm.C_x = 0.2632401569273184856851;
+ proj_parm.C_x = 0.8660254037844;
+ proj_parm.C_y = 1.;
+ proj_parm.A = 0.;
+ proj_parm.B = 0.30396355092701331433;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::eck3
+ #endif // doxygen
+
+ /*!
+ \brief Eckert III projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_eck3.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct eck3_spheroid : public detail::eck3::base_eck3_spheroid<CalculationType, Parameters>
+ {
+ inline eck3_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::eck3::setup_eck3(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Putnins P1 projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_putp1.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct putp1_spheroid : public detail::eck3::base_eck3_spheroid<CalculationType, Parameters>
+ {
+ inline putp1_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::eck3::setup_putp1(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Wagner VI projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_wag6.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wag6_spheroid : public detail::eck3::base_eck3_spheroid<CalculationType, Parameters>
+ {
+ inline wag6_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::eck3::setup_wag6(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Kavraisky VII projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_kav7.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct kav7_spheroid : public detail::eck3::base_eck3_spheroid<CalculationType, Parameters>
+ {
+ inline kav7_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::eck3::setup_kav7(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::eck3, eck3_spheroid, eck3_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::putp1, putp1_spheroid, putp1_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wag6, wag6_spheroid, wag6_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::kav7, kav7_spheroid, kav7_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class eck3_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<eck3_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class putp1_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<putp1_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class wag6_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<wag6_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class kav7_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<kav7_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void eck3_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("eck3", new eck3_entry<CalculationType, Parameters>);
+ factory.add_to_factory("putp1", new putp1_entry<CalculationType, Parameters>);
+ factory.add_to_factory("wag6", new wag6_entry<CalculationType, Parameters>);
+ factory.add_to_factory("kav7", new kav7_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ECK3_HPP
+
diff --git a/boost/geometry/srs/projections/proj/eck4.hpp b/boost/geometry/srs/projections/proj/eck4.hpp
new file mode 100644
index 0000000000..4307b59439
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/eck4.hpp
@@ -0,0 +1,195 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ECK4_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ECK4_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct eck4 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace eck4
+ {
+
+ static const double C_x = .42223820031577120149;
+ static const double C_y = 1.32650042817700232218;
+ static const double RC_y = .75386330736002178205;
+ static const double C_p = 3.57079632679489661922;
+ static const double RC_p = .28004957675577868795;
+ static const double EPS = 1e-7;
+ static const int NITER = 6;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_eck4_spheroid : public base_t_fi<base_eck4_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_eck4_spheroid(const Parameters& par)
+ : base_t_fi<base_eck4_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType p, V, s, c;
+ int i;
+
+ p = C_p * sin(lp_lat);
+ V = lp_lat * lp_lat;
+ lp_lat *= 0.895168 + V * ( 0.0218849 + V * 0.00826809 );
+ for (i = NITER; i ; --i) {
+ c = cos(lp_lat);
+ s = sin(lp_lat);
+ lp_lat -= V = (lp_lat + s * (c + 2.) - p) /
+ (1. + c * (c + 2.) - s * s);
+ if (fabs(V) < EPS)
+ break;
+ }
+ if (!i) {
+ xy_x = C_x * lp_lon;
+ xy_y = lp_lat < 0. ? -C_y : C_y;
+ } else {
+ xy_x = C_x * lp_lon * (1. + cos(lp_lat));
+ xy_y = C_y * sin(lp_lat);
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType c;
+
+ lp_lat = aasin(xy_y / C_y);
+ lp_lon = xy_x / (C_x * (1. + (c = cos(lp_lat))));
+ lp_lat = aasin((lp_lat + sin(lp_lat) * (c + 2.)) / C_p);
+ }
+
+ static inline std::string get_name()
+ {
+ return "eck4_spheroid";
+ }
+
+ };
+
+ // Eckert IV
+ template <typename Parameters>
+ inline void setup_eck4(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::eck4
+ #endif // doxygen
+
+ /*!
+ \brief Eckert IV projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_eck4.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct eck4_spheroid : public detail::eck4::base_eck4_spheroid<CalculationType, Parameters>
+ {
+ inline eck4_spheroid(const Parameters& par) : detail::eck4::base_eck4_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::eck4::setup_eck4(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::eck4, eck4_spheroid, eck4_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class eck4_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<eck4_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void eck4_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("eck4", new eck4_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ECK4_HPP
+
diff --git a/boost/geometry/srs/projections/proj/eck5.hpp b/boost/geometry/srs/projections/proj/eck5.hpp
new file mode 100644
index 0000000000..bc075702e8
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/eck5.hpp
@@ -0,0 +1,168 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ECK5_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ECK5_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct eck5 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace eck5
+ {
+
+ static const double XF = 0.44101277172455148219;
+ static const double RXF = 2.26750802723822639137;
+ static const double YF = 0.88202554344910296438;
+ static const double RYF = 1.13375401361911319568;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_eck5_spheroid : public base_t_fi<base_eck5_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_eck5_spheroid(const Parameters& par)
+ : base_t_fi<base_eck5_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = XF * (1. + cos(lp_lat)) * lp_lon;
+ xy_y = YF * lp_lat;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lon = RXF * xy_x / (1. + cos( lp_lat = RYF * xy_y));
+ }
+
+ static inline std::string get_name()
+ {
+ return "eck5_spheroid";
+ }
+
+ };
+
+ // Eckert V
+ template <typename Parameters>
+ inline void setup_eck5(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::eck5
+ #endif // doxygen
+
+ /*!
+ \brief Eckert V projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_eck5.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct eck5_spheroid : public detail::eck5::base_eck5_spheroid<CalculationType, Parameters>
+ {
+ inline eck5_spheroid(const Parameters& par) : detail::eck5::base_eck5_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::eck5::setup_eck5(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::eck5, eck5_spheroid, eck5_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class eck5_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<eck5_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void eck5_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("eck5", new eck5_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ECK5_HPP
+
diff --git a/boost/geometry/srs/projections/proj/eqc.hpp b/boost/geometry/srs/projections/proj/eqc.hpp
new file mode 100644
index 0000000000..5234ce9b8d
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/eqc.hpp
@@ -0,0 +1,175 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_EQC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_EQC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct eqc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace eqc
+ {
+ template <typename T>
+ struct par_eqc
+ {
+ T rc;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_eqc_spheroid : public base_t_fi<base_eqc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_eqc<CalculationType> m_proj_parm;
+
+ inline base_eqc_spheroid(const Parameters& par)
+ : base_t_fi<base_eqc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = this->m_proj_parm.rc * lp_lon;
+ xy_y = lp_lat - this->m_par.phi0;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lon = xy_x / this->m_proj_parm.rc;
+ lp_lat = xy_y + this->m_par.phi0;
+ }
+
+ static inline std::string get_name()
+ {
+ return "eqc_spheroid";
+ }
+
+ };
+
+ // Equidistant Cylindrical (Plate Caree)
+ template <typename Parameters, typename T>
+ inline void setup_eqc(Parameters& par, par_eqc<T>& proj_parm)
+ {
+ if ((proj_parm.rc = cos(pj_param(par.params, "rlat_ts").f)) <= 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-24) );
+ par.es = 0.;
+ }
+
+ }} // namespace detail::eqc
+ #endif // doxygen
+
+ /*!
+ \brief Equidistant Cylindrical (Plate Caree) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ - lat_0: Latitude of origin
+ \par Example
+ \image html ex_eqc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct eqc_spheroid : public detail::eqc::base_eqc_spheroid<CalculationType, Parameters>
+ {
+ inline eqc_spheroid(const Parameters& par) : detail::eqc::base_eqc_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::eqc::setup_eqc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::eqc, eqc_spheroid, eqc_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class eqc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<eqc_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void eqc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("eqc", new eqc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_EQC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/eqdc.hpp b/boost/geometry/srs/projections/proj/eqdc.hpp
new file mode 100644
index 0000000000..1af11338a4
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/eqdc.hpp
@@ -0,0 +1,250 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_EQDC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_EQDC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+#include <boost/geometry/srs/projections/impl/pj_msfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct eqdc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace eqdc
+ {
+
+ static const double EPS10 = 1.e-10;
+
+ template <typename T>
+ struct par_eqdc
+ {
+ T phi1;
+ T phi2;
+ T n;
+ T rho0;
+ T c;
+ T en[EN_SIZE];
+ int ellips;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_eqdc_ellipsoid : public base_t_fi<base_eqdc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_eqdc<CalculationType> m_proj_parm;
+
+ inline base_eqdc_ellipsoid(const Parameters& par)
+ : base_t_fi<base_eqdc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) sphere & ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType rho = 0.0;
+ rho = this->m_proj_parm.c - (this->m_proj_parm.ellips ? pj_mlfn(lp_lat, sin(lp_lat),
+ cos(lp_lat), this->m_proj_parm.en) : lp_lat);
+ xy_x = rho * sin( lp_lon *= this->m_proj_parm.n );
+ xy_y = this->m_proj_parm.rho0 - rho * cos(lp_lon);
+ }
+
+ // INVERSE(e_inverse) sphere & ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType rho = 0.0;
+ if ((rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho0 - xy_y)) != 0.0 ) {
+ if (this->m_proj_parm.n < 0.) {
+ rho = -rho;
+ xy_x = -xy_x;
+ xy_y = -xy_y;
+ }
+ lp_lat = this->m_proj_parm.c - rho;
+ if (this->m_proj_parm.ellips)
+ lp_lat = pj_inv_mlfn(lp_lat, this->m_par.es, this->m_proj_parm.en);
+ lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n;
+ } else {
+ lp_lon = 0.;
+ lp_lat = this->m_proj_parm.n > 0. ? geometry::math::half_pi<double>() : - geometry::math::half_pi<double>();
+ }
+ }
+
+ // SPECIAL(fac)
+ #ifdef SPECIAL_FACTORS_NOT_CONVERTED
+ inline void fac(Geographic lp, Factors &fac) const
+ {
+ CalculationType sinphi, cosphi;
+
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ this->m_fac.code |= IS_ANAL_HK;
+ this->m_fac.h = 1.;
+ this->m_fac.k = this->m_proj_parm.n * (this->m_proj_parm.c - (this->m_proj_parm.ellips ? pj_mlfn(lp_lat, sinphi,
+ cosphi, this->m_proj_parm.en) : lp_lat)) / pj_msfn(sinphi, cosphi, this->m_par.es);
+ }
+ #endif
+
+ static inline std::string get_name()
+ {
+ return "eqdc_ellipsoid";
+ }
+
+ };
+
+ // Equidistant Conic
+ template <typename Parameters, typename T>
+ inline void setup_eqdc(Parameters& par, par_eqdc<T>& proj_parm)
+ {
+ T cosphi, sinphi;
+ int secant;
+
+ proj_parm.phi1 = pj_param(par.params, "rlat_1").f;
+ proj_parm.phi2 = pj_param(par.params, "rlat_2").f;
+ if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-21) );
+ if (!pj_enfn(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ proj_parm.n = sinphi = sin(proj_parm.phi1);
+ cosphi = cos(proj_parm.phi1);
+ secant = fabs(proj_parm.phi1 - proj_parm.phi2) >= EPS10;
+ if( (proj_parm.ellips = (par.es > 0.)) ) {
+ double ml1, m1;
+
+ m1 = pj_msfn(sinphi, cosphi, par.es);
+ ml1 = pj_mlfn(proj_parm.phi1, sinphi, cosphi, proj_parm.en);
+ if (secant) { /* secant cone */
+ sinphi = sin(proj_parm.phi2);
+ cosphi = cos(proj_parm.phi2);
+ proj_parm.n = (m1 - pj_msfn(sinphi, cosphi, par.es)) /
+ (pj_mlfn(proj_parm.phi2, sinphi, cosphi, proj_parm.en) - ml1);
+ }
+ proj_parm.c = ml1 + m1 / proj_parm.n;
+ proj_parm.rho0 = proj_parm.c - pj_mlfn(par.phi0, sin(par.phi0),
+ cos(par.phi0), proj_parm.en);
+ } else {
+ if (secant)
+ proj_parm.n = (cosphi - cos(proj_parm.phi2)) / (proj_parm.phi2 - proj_parm.phi1);
+ proj_parm.c = proj_parm.phi1 + cos(proj_parm.phi1) / proj_parm.n;
+ proj_parm.rho0 = proj_parm.c - par.phi0;
+ }
+ }
+
+ }} // namespace detail::eqdc
+ #endif // doxygen
+
+ /*!
+ \brief Equidistant Conic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ - lat_2: Latitude of second standard parallel (degrees)
+ \par Example
+ \image html ex_eqdc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct eqdc_ellipsoid : public detail::eqdc::base_eqdc_ellipsoid<CalculationType, Parameters>
+ {
+ inline eqdc_ellipsoid(const Parameters& par) : detail::eqdc::base_eqdc_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::eqdc::setup_eqdc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::eqdc, eqdc_ellipsoid, eqdc_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class eqdc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<eqdc_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void eqdc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("eqdc", new eqdc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_EQDC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/etmerc.hpp b/boost/geometry/srs/projections/proj/etmerc.hpp
new file mode 100644
index 0000000000..479c128f11
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/etmerc.hpp
@@ -0,0 +1,395 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ETMERC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ETMERC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Copyright (c) 2008 Gerald I. Evenden
+
+// 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 <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct etmerc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace etmerc
+ {
+
+ static const int PROJ_ETMERC_ORDER = 6;
+
+ template <typename T>
+ struct par_etmerc
+ {
+ T Qn; /* Merid. quad., scaled to the projection */
+ T Zb; /* Radius vector in polar coord. systems */
+ T cgb[6]; /* Constants for Gauss -> Geo lat */
+ T cbg[6]; /* Constants for Geo lat -> Gauss */
+ T utg[6]; /* Constants for transv. merc. -> geo */
+ T gtu[6]; /* Constants for geo -> transv. merc. */
+ };
+
+ /* The code in this file is largly based upon procedures:
+ *
+ * Written by: Knud Poder and Karsten Engsager
+ *
+ * Based on math from: R.Koenig and K.H. Weise, "Mathematische
+ * Grundlagen der hoeheren Geodaesie und Kartographie,
+ * Springer-Verlag, Berlin/Goettingen" Heidelberg, 1951.
+ *
+ * Modified and used here by permission of Reference Networks
+ * Division, Kort og Matrikelstyrelsen (KMS), Copenhagen, Denmark
+ */
+
+
+
+
+
+ template <typename T>
+ inline T
+ log1py(T const& x) { /* Compute log(1+x) accurately */
+ volatile T
+ y = 1 + x,
+ z = y - 1;
+ /* Here's the explanation for this magic: y = 1 + z, exactly, and z
+ * approx x, thus log(y)/z (which is nearly constant near z = 0) returns
+ * a good approximation to the true log(1 + x)/x. The multiplication x *
+ * (log(y)/z) introduces little additional error. */
+ return z == 0 ? x : x * log(y) / z;
+ }
+
+ template <typename T>
+ inline T
+ asinhy(T const& x) { /* Compute asinh(x) accurately */
+ T y = fabs(x); /* Enforce odd parity */
+ y = log1py(y * (1 + y/(boost::math::hypot(1.0, y) + 1)));
+ return x < 0 ? -y : y;
+ }
+
+ template <typename T>
+ inline T
+ gatg(const T *p1, int len_p1, T const& B) {
+ const T *p;
+ T h = 0, h1, h2 = 0, cos_2B;
+
+ cos_2B = 2*cos(2*B);
+ for (p = p1 + len_p1, h1 = *--p; p - p1; h2 = h1, h1 = h)
+ h = -h2 + cos_2B*h1 + *--p;
+ return (B + h*sin(2*B));
+ }
+
+ template <typename T>
+ inline T
+ clenS(const T *a, int size, T const& arg_r, T const& arg_i, T *R, T *I) {
+ T r, i, hr, hr1, hr2, hi, hi1, hi2;
+ T sin_arg_r, cos_arg_r, sinh_arg_i, cosh_arg_i;
+
+ /* arguments */
+ const T* p = a + size;
+ sin_arg_r = sin(arg_r);
+ cos_arg_r = cos(arg_r);
+ sinh_arg_i = sinh(arg_i);
+ cosh_arg_i = cosh(arg_i);
+ r = 2*cos_arg_r*cosh_arg_i;
+ i = -2*sin_arg_r*sinh_arg_i;
+ /* summation loop */
+ for (hi1 = hr1 = hi = 0, hr = *--p; a - p;) {
+ hr2 = hr1;
+ hi2 = hi1;
+ hr1 = hr;
+ hi1 = hi;
+ hr = -hr2 + r*hr1 - i*hi1 + *--p;
+ hi = -hi2 + i*hr1 + r*hi1;
+ }
+ r = sin_arg_r*cosh_arg_i;
+ i = cos_arg_r*sinh_arg_i;
+ *R = r*hr - i*hi;
+ *I = r*hi + i*hr;
+ return(*R);
+ }
+
+ template <typename T>
+ inline T
+ clens(const T *a, int size, T const& arg_r) {
+ T r, hr, hr1, hr2, cos_arg_r;
+
+ const T* p = a + size;
+ cos_arg_r = cos(arg_r);
+ r = 2*cos_arg_r;
+ /* summation loop */
+ for (hr1 = 0, hr = *--p; a - p;) {
+ hr2 = hr1;
+ hr1 = hr;
+ hr = -hr2 + r*hr1 + *--p;
+ }
+ return(sin(arg_r)*hr);
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_etmerc_ellipsoid : public base_t_fi<base_etmerc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_etmerc<CalculationType> m_proj_parm;
+
+ inline base_etmerc_ellipsoid(const Parameters& par)
+ : base_t_fi<base_etmerc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType sin_Cn, cos_Cn, cos_Ce, sin_Ce, dCn, dCe;
+ CalculationType Cn = lp_lat, Ce = lp_lon;
+
+ /* ell. LAT, LNG -> Gaussian LAT, LNG */
+ Cn = gatg(this->m_proj_parm.cbg, PROJ_ETMERC_ORDER, Cn);
+ /* Gaussian LAT, LNG -> compl. sph. LAT */
+ sin_Cn = sin(Cn);
+ cos_Cn = cos(Cn);
+ sin_Ce = sin(Ce);
+ cos_Ce = cos(Ce);
+
+ Cn = atan2(sin_Cn, cos_Ce*cos_Cn);
+ Ce = atan2(sin_Ce*cos_Cn, boost::math::hypot(sin_Cn, cos_Cn*cos_Ce));
+ /* compl. sph. N, E -> ell. norm. N, E */
+ Ce = asinhy(tan(Ce)); /* Replaces: Ce = log(tan(FORTPI + Ce*0.5)); */
+ Cn += clenS(this->m_proj_parm.gtu, PROJ_ETMERC_ORDER, 2*Cn, 2*Ce, &dCn, &dCe);
+ Ce += dCe;
+ if (fabs(Ce) <= 2.623395162778) {
+ xy_y = this->m_proj_parm.Qn * Cn + this->m_proj_parm.Zb; /* Northing */
+ xy_x = this->m_proj_parm.Qn * Ce; /* Easting */
+ } else
+ xy_x = xy_y = HUGE_VAL;
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType sin_Cn, cos_Cn, cos_Ce, sin_Ce, dCn, dCe;
+ CalculationType Cn = xy_y, Ce = xy_x;
+
+ /* normalize N, E */
+ Cn = (Cn - this->m_proj_parm.Zb)/this->m_proj_parm.Qn;
+ Ce = Ce/this->m_proj_parm.Qn;
+ if (fabs(Ce) <= 2.623395162778) { /* 150 degrees */
+ /* norm. N, E -> compl. sph. LAT, LNG */
+ Cn += clenS(this->m_proj_parm.utg, PROJ_ETMERC_ORDER, 2*Cn, 2*Ce, &dCn, &dCe);
+ Ce += dCe;
+ Ce = atan(sinh(Ce)); /* Replaces: Ce = 2*(atan(exp(Ce)) - FORTPI); */
+ /* compl. sph. LAT -> Gaussian LAT, LNG */
+ sin_Cn = sin(Cn);
+ cos_Cn = cos(Cn);
+ sin_Ce = sin(Ce);
+ cos_Ce = cos(Ce);
+ Ce = atan2(sin_Ce, cos_Ce*cos_Cn);
+ Cn = atan2(sin_Cn*cos_Ce, boost::math::hypot(sin_Ce, cos_Ce*cos_Cn));
+ /* Gaussian LAT, LNG -> ell. LAT, LNG */
+ lp_lat = gatg(this->m_proj_parm.cgb, PROJ_ETMERC_ORDER, Cn);
+ lp_lon = Ce;
+ }
+ else
+ lp_lat = lp_lon = HUGE_VAL;
+ }
+
+ static inline std::string get_name()
+ {
+ return "etmerc_ellipsoid";
+ }
+
+ };
+
+ // Extended Transverse Mercator
+ template <typename Parameters, typename T>
+ inline void setup_etmerc(Parameters& par, par_etmerc<T>& proj_parm)
+ {
+ T f, n, np, Z;
+
+ if (par.es <= 0)
+ BOOST_THROW_EXCEPTION( projection_exception(-34) );
+ f = par.es / (1 + sqrt(1 - par.es)); /* Replaces: f = 1 - sqrt(1-par.es); */
+ /* third flattening */
+ np = n = f/(2 - f);
+
+ /* COEF. OF TRIG SERIES GEO <-> GAUSS */
+ /* cgb := Gaussian -> Geodetic, KW p190 - 191 (61) - (62) */
+ /* cbg := Geodetic -> Gaussian, KW p186 - 187 (51) - (52) */
+ /* PROJ_ETMERC_ORDER = 6th degree : Engsager and Poder: ICC2007 */
+ proj_parm.cgb[0] = n*( 2 + n*(-2/3.0 + n*(-2 + n*(116/45.0 + n*(26/45.0 +
+ n*(-2854/675.0 ))))));
+ proj_parm.cbg[0] = n*(-2 + n*( 2/3.0 + n*( 4/3.0 + n*(-82/45.0 + n*(32/45.0 +
+ n*( 4642/4725.0))))));
+ np *= n;
+ proj_parm.cgb[1] = np*(7/3.0 + n*( -8/5.0 + n*(-227/45.0 + n*(2704/315.0 +
+ n*( 2323/945.0)))));
+ proj_parm.cbg[1] = np*(5/3.0 + n*(-16/15.0 + n*( -13/9.0 + n*( 904/315.0 +
+ n*(-1522/945.0)))));
+ np *= n;
+ /* n^5 coeff corrected from 1262/105 -> -1262/105 */
+ proj_parm.cgb[2] = np*( 56/15.0 + n*(-136/35.0 + n*(-1262/105.0 +
+ n*( 73814/2835.0))));
+ proj_parm.cbg[2] = np*(-26/15.0 + n*( 34/21.0 + n*( 8/5.0 +
+ n*(-12686/2835.0))));
+ np *= n;
+ /* n^5 coeff corrected from 322/35 -> 332/35 */
+ proj_parm.cgb[3] = np*(4279/630.0 + n*(-332/35.0 + n*(-399572/14175.0)));
+ proj_parm.cbg[3] = np*(1237/630.0 + n*( -12/5.0 + n*( -24832/14175.0)));
+ np *= n;
+ proj_parm.cgb[4] = np*(4174/315.0 + n*(-144838/6237.0 ));
+ proj_parm.cbg[4] = np*(-734/315.0 + n*( 109598/31185.0));
+ np *= n;
+ proj_parm.cgb[5] = np*(601676/22275.0 );
+ proj_parm.cbg[5] = np*(444337/155925.0);
+
+ /* Constants of the projections */
+ /* Transverse Mercator (UTM, ITM, etc) */
+ np = n*n;
+ /* Norm. mer. quad, K&W p.50 (96), p.19 (38b), p.5 (2) */
+ proj_parm.Qn = par.k0/(1 + n) * (1 + np*(1/4.0 + np*(1/64.0 + np/256.0)));
+ /* coef of trig series */
+ /* utg := ell. N, E -> sph. N, E, KW p194 (65) */
+ /* gtu := sph. N, E -> ell. N, E, KW p196 (69) */
+ proj_parm.utg[0] = n*(-0.5 + n*( 2/3.0 + n*(-37/96.0 + n*( 1/360.0 +
+ n*( 81/512.0 + n*(-96199/604800.0))))));
+ proj_parm.gtu[0] = n*( 0.5 + n*(-2/3.0 + n*( 5/16.0 + n*(41/180.0 +
+ n*(-127/288.0 + n*( 7891/37800.0 ))))));
+ proj_parm.utg[1] = np*(-1/48.0 + n*(-1/15.0 + n*(437/1440.0 + n*(-46/105.0 +
+ n*( 1118711/3870720.0)))));
+ proj_parm.gtu[1] = np*(13/48.0 + n*(-3/5.0 + n*(557/1440.0 + n*(281/630.0 +
+ n*(-1983433/1935360.0)))));
+ np *= n;
+ proj_parm.utg[2] = np*(-17/480.0 + n*( 37/840.0 + n*( 209/4480.0 +
+ n*( -5569/90720.0 ))));
+ proj_parm.gtu[2] = np*( 61/240.0 + n*(-103/140.0 + n*(15061/26880.0 +
+ n*(167603/181440.0))));
+ np *= n;
+ proj_parm.utg[3] = np*(-4397/161280.0 + n*( 11/504.0 + n*( 830251/7257600.0)));
+ proj_parm.gtu[3] = np*(49561/161280.0 + n*(-179/168.0 + n*(6601661/7257600.0)));
+ np *= n;
+ proj_parm.utg[4] = np*(-4583/161280.0 + n*( 108847/3991680.0));
+ proj_parm.gtu[4] = np*(34729/80640.0 + n*(-3418889/1995840.0));
+ np *= n;
+ proj_parm.utg[5] = np*(-20648693/638668800.0);
+ proj_parm.gtu[5] = np*(212378941/319334400.0);
+ /* Gaussian latitude value of the origin latitude */
+ Z = gatg(proj_parm.cbg, PROJ_ETMERC_ORDER, par.phi0);
+ /* Origin northing minus true northing at the origin latitude */
+ /* i.e. true northing = N - proj_parm.Zb */
+ proj_parm.Zb = - proj_parm.Qn*(Z + clens(proj_parm.gtu, PROJ_ETMERC_ORDER, 2*Z));
+ }
+
+ }} // namespace detail::etmerc
+ #endif // doxygen
+
+ /*!
+ \brief Extended Transverse Mercator projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale
+ - lat_0: Latitude of origin
+ \par Example
+ \image html ex_etmerc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct etmerc_ellipsoid : public detail::etmerc::base_etmerc_ellipsoid<CalculationType, Parameters>
+ {
+ inline etmerc_ellipsoid(const Parameters& par) : detail::etmerc::base_etmerc_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::etmerc::setup_etmerc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::etmerc, etmerc_ellipsoid, etmerc_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class etmerc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<etmerc_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void etmerc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("etmerc", new etmerc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ETMERC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/fahey.hpp b/boost/geometry/srs/projections/proj/fahey.hpp
new file mode 100644
index 0000000000..8ea43ee94b
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/fahey.hpp
@@ -0,0 +1,168 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_FAHEY_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_FAHEY_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct fahey {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace fahey
+ {
+
+ static const double TOL = 1e-6;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_fahey_spheroid : public base_t_fi<base_fahey_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_fahey_spheroid(const Parameters& par)
+ : base_t_fi<base_fahey_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_y = 1.819152 * ( xy_x = tan(0.5 * lp_lat) );
+ xy_x = 0.819152 * lp_lon * asqrt(1 - xy_x * xy_x);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = 2. * atan(xy_y /= 1.819152);
+ lp_lon = fabs(xy_y = 1. - xy_y * xy_y) < TOL ? 0. :
+ xy_x / (0.819152 * sqrt(xy_y));
+ }
+
+ static inline std::string get_name()
+ {
+ return "fahey_spheroid";
+ }
+
+ };
+
+ // Fahey
+ template <typename Parameters>
+ inline void setup_fahey(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::fahey
+ #endif // doxygen
+
+ /*!
+ \brief Fahey projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_fahey.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct fahey_spheroid : public detail::fahey::base_fahey_spheroid<CalculationType, Parameters>
+ {
+ inline fahey_spheroid(const Parameters& par) : detail::fahey::base_fahey_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::fahey::setup_fahey(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::fahey, fahey_spheroid, fahey_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class fahey_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<fahey_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void fahey_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("fahey", new fahey_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_FAHEY_HPP
+
diff --git a/boost/geometry/srs/projections/proj/fouc_s.hpp b/boost/geometry/srs/projections/proj/fouc_s.hpp
new file mode 100644
index 0000000000..0f34593161
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/fouc_s.hpp
@@ -0,0 +1,201 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_FOUC_S_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_FOUC_S_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct fouc_s {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace fouc_s
+ {
+
+ static const int MAX_ITER = 10;
+ static const double LOOP_TOL = 1e-7;
+
+ template <typename T>
+ struct par_fouc_s
+ {
+ T n, n1;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_fouc_s_spheroid : public base_t_fi<base_fouc_s_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_fouc_s<CalculationType> m_proj_parm;
+
+ inline base_fouc_s_spheroid(const Parameters& par)
+ : base_t_fi<base_fouc_s_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType t;
+
+ t = cos(lp_lat);
+ xy_x = lp_lon * t / (this->m_proj_parm.n + this->m_proj_parm.n1 * t);
+ xy_y = this->m_proj_parm.n * lp_lat + this->m_proj_parm.n1 * sin(lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType V;
+ int i;
+
+ if (this->m_proj_parm.n) {
+ lp_lat = xy_y;
+ for (i = MAX_ITER; i ; --i) {
+ lp_lat -= V = (this->m_proj_parm.n * lp_lat + this->m_proj_parm.n1 * sin(lp_lat) - xy_y ) /
+ (this->m_proj_parm.n + this->m_proj_parm.n1 * cos(lp_lat));
+ if (fabs(V) < LOOP_TOL)
+ break;
+ }
+ if (!i)
+ lp_lat = xy_y < 0. ? -geometry::math::half_pi<double>() : geometry::math::half_pi<double>();
+ } else
+ lp_lat = aasin(xy_y);
+ V = cos(lp_lat);
+ lp_lon = xy_x * (this->m_proj_parm.n + this->m_proj_parm.n1 * V) / V;
+ }
+
+ static inline std::string get_name()
+ {
+ return "fouc_s_spheroid";
+ }
+
+ };
+
+ // Foucaut Sinusoidal
+ template <typename Parameters, typename T>
+ inline void setup_fouc_s(Parameters& par, par_fouc_s<T>& proj_parm)
+ {
+ proj_parm.n = pj_param(par.params, "dn").f;
+ if (proj_parm.n < 0. || proj_parm.n > 1.)
+ BOOST_THROW_EXCEPTION( projection_exception(-99) );
+ proj_parm.n1 = 1. - proj_parm.n;
+ par.es = 0;
+ }
+
+ }} // namespace detail::fouc_s
+ #endif // doxygen
+
+ /*!
+ \brief Foucaut Sinusoidal projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Projection parameters
+ - n (real)
+ \par Example
+ \image html ex_fouc_s.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct fouc_s_spheroid : public detail::fouc_s::base_fouc_s_spheroid<CalculationType, Parameters>
+ {
+ inline fouc_s_spheroid(const Parameters& par) : detail::fouc_s::base_fouc_s_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::fouc_s::setup_fouc_s(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::fouc_s, fouc_s_spheroid, fouc_s_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class fouc_s_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<fouc_s_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void fouc_s_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("fouc_s", new fouc_s_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_FOUC_S_HPP
+
diff --git a/boost/geometry/srs/projections/proj/gall.hpp b/boost/geometry/srs/projections/proj/gall.hpp
new file mode 100644
index 0000000000..fc1ad144d7
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/gall.hpp
@@ -0,0 +1,169 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_GALL_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_GALL_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct gall {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace gall
+ {
+
+ static const double YF = 1.70710678118654752440;
+ static const double XF = 0.70710678118654752440;
+ static const double RYF = 0.58578643762690495119;
+ static const double RXF = 1.41421356237309504880;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_gall_spheroid : public base_t_fi<base_gall_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_gall_spheroid(const Parameters& par)
+ : base_t_fi<base_gall_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = XF * lp_lon;
+ xy_y = YF * tan(.5 * lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lon = RXF * xy_x;
+ lp_lat = 2. * atan(xy_y * RYF);
+ }
+
+ static inline std::string get_name()
+ {
+ return "gall_spheroid";
+ }
+
+ };
+
+ // Gall (Gall Stereographic)
+ template <typename Parameters>
+ inline void setup_gall(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::gall
+ #endif // doxygen
+
+ /*!
+ \brief Gall (Gall Stereographic) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Example
+ \image html ex_gall.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct gall_spheroid : public detail::gall::base_gall_spheroid<CalculationType, Parameters>
+ {
+ inline gall_spheroid(const Parameters& par) : detail::gall::base_gall_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::gall::setup_gall(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::gall, gall_spheroid, gall_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class gall_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<gall_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void gall_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("gall", new gall_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_GALL_HPP
+
diff --git a/boost/geometry/srs/projections/proj/geocent.hpp b/boost/geometry/srs/projections/proj/geocent.hpp
new file mode 100644
index 0000000000..bfcbb145fa
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/geocent.hpp
@@ -0,0 +1,169 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_GEOCENT_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_GEOCENT_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Purpose: Stub projection for geocentric. The transformation isn't
+// really done here since this code is 2D. The real transformation
+// is handled by pj_transform.c.
+// Author: Frank Warmerdam, warmerdam@pobox.com
+// Copyright (c) 2002, Frank Warmerdam
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct geocent {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace geocent
+ {
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_geocent_other : public base_t_fi<base_geocent_other<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_geocent_other(const Parameters& par)
+ : base_t_fi<base_geocent_other<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(forward)
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = lp_lon;
+ xy_y = lp_lat;
+ }
+
+ // INVERSE(inverse)
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = xy_y;
+ lp_lon = xy_x;
+ }
+
+ static inline std::string get_name()
+ {
+ return "geocent_other";
+ }
+
+ };
+
+ // Geocentric
+ template <typename Parameters>
+ inline void setup_geocent(Parameters& par)
+ {
+ par.is_geocent = 1;
+ par.x0 = 0.0;
+ par.y0 = 0.0;
+ }
+
+ }} // namespace detail::geocent
+ #endif // doxygen
+
+ /*!
+ \brief Geocentric projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Example
+ \image html ex_geocent.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct geocent_other : public detail::geocent::base_geocent_other<CalculationType, Parameters>
+ {
+ inline geocent_other(const Parameters& par) : detail::geocent::base_geocent_other<CalculationType, Parameters>(par)
+ {
+ detail::geocent::setup_geocent(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::geocent, geocent_other, geocent_other)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class geocent_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<geocent_other<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void geocent_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("geocent", new geocent_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_GEOCENT_HPP
+
diff --git a/boost/geometry/srs/projections/proj/geos.hpp b/boost/geometry/srs/projections/proj/geos.hpp
new file mode 100644
index 0000000000..798f7f6247
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/geos.hpp
@@ -0,0 +1,377 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_GEOS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_GEOS_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Copyright (c) 2004 Gerald I. Evenden
+// Copyright (c) 2012 Martin Raspaud
+// See also (section 4.4.3.2):
+// http://www.eumetsat.int/en/area4/msg/news/us_doc/cgms_03_26.pdf
+
+// 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 <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct geos {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace geos
+ {
+ template <typename T>
+ struct par_geos
+ {
+ T h;
+ T radius_p;
+ T radius_p2;
+ T radius_p_inv2;
+ T radius_g;
+ T radius_g_1;
+ T C;
+ std::string sweep_axis;
+ int flip_axis;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_geos_ellipsoid : public base_t_fi<base_geos_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_geos<CalculationType> m_proj_parm;
+
+ inline base_geos_ellipsoid(const Parameters& par)
+ : base_t_fi<base_geos_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType r, Vx, Vy, Vz, tmp;
+
+ /* Calculation of geocentric latitude. */
+ lp_lat = atan (this->m_proj_parm.radius_p2 * tan (lp_lat));
+ /* Calculation of the three components of the vector from satellite to
+ ** position on earth surface (lon,lat).*/
+ r = (this->m_proj_parm.radius_p) / boost::math::hypot(this->m_proj_parm.radius_p * cos (lp_lat), sin (lp_lat));
+ Vx = r * cos (lp_lon) * cos (lp_lat);
+ Vy = r * sin (lp_lon) * cos (lp_lat);
+ Vz = r * sin (lp_lat);
+ /* Check visibility. */
+ if (((this->m_proj_parm.radius_g - Vx) * Vx - Vy * Vy - Vz * Vz * this->m_proj_parm.radius_p_inv2) < 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ /* Calculation based on view angles from satellite. */
+ tmp = this->m_proj_parm.radius_g - Vx;
+ if(this->m_proj_parm.flip_axis)
+ {
+ xy_x = this->m_proj_parm.radius_g_1 * atan (Vy / boost::math::hypot (Vz, tmp));
+ xy_y = this->m_proj_parm.radius_g_1 * atan (Vz / tmp);
+ }
+ else
+ {
+ xy_x = this->m_proj_parm.radius_g_1 * atan (Vy / tmp);
+ xy_y = this->m_proj_parm.radius_g_1 * atan (Vz / boost::math::hypot (Vy, tmp));
+ }
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType Vx, Vy, Vz, a, b, det, k;
+
+ /* Setting three components of vector from satellite to position.*/
+ Vx = -1.0;
+ if(this->m_proj_parm.flip_axis)
+ {
+ Vz = tan (xy_y / this->m_proj_parm.radius_g_1);
+ Vy = tan (xy_x / this->m_proj_parm.radius_g_1) * boost::math::hypot(1.0, Vz);
+ }
+ else
+ {
+ Vy = tan (xy_x / this->m_proj_parm.radius_g_1);
+ Vz = tan (xy_y / this->m_proj_parm.radius_g_1) * boost::math::hypot(1.0, Vy);
+ }
+ /* Calculation of terms in cubic equation and determinant.*/
+ a = Vz / this->m_proj_parm.radius_p;
+ a = Vy * Vy + a * a + Vx * Vx;
+ b = 2 * this->m_proj_parm.radius_g * Vx;
+ if ((det = (b * b) - 4 * a * this->m_proj_parm.C) < 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ /* Calculation of three components of vector from satellite to position.*/
+ k = (-b - sqrt(det)) / (2. * a);
+ Vx = this->m_proj_parm.radius_g + k * Vx;
+ Vy *= k;
+ Vz *= k;
+ /* Calculation of longitude and latitude.*/
+ lp_lon = atan2 (Vy, Vx);
+ lp_lat = atan (Vz * cos (lp_lon) / Vx);
+ lp_lat = atan (this->m_proj_parm.radius_p_inv2 * tan (lp_lat));
+ }
+
+ static inline std::string get_name()
+ {
+ return "geos_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_geos_spheroid : public base_t_fi<base_geos_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_geos<CalculationType> m_proj_parm;
+
+ inline base_geos_spheroid(const Parameters& par)
+ : base_t_fi<base_geos_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType Vx, Vy, Vz, tmp;
+
+ /* Calculation of the three components of the vector from satellite to
+ ** position on earth surface (lon,lat).*/
+ tmp = cos(lp_lat);
+ Vx = cos (lp_lon) * tmp;
+ Vy = sin (lp_lon) * tmp;
+ Vz = sin (lp_lat);
+ /* Check visibility.*/
+ if (((this->m_proj_parm.radius_g - Vx) * Vx - Vy * Vy - Vz * Vz) < 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ /* Calculation based on view angles from satellite.*/
+ tmp = this->m_proj_parm.radius_g - Vx;
+ if(this->m_proj_parm.flip_axis)
+ {
+ xy_x = this->m_proj_parm.radius_g_1 * atan(Vy / boost::math::hypot(Vz, tmp));
+ xy_y = this->m_proj_parm.radius_g_1 * atan(Vz / tmp);
+ }
+ else
+ {
+ xy_x = this->m_proj_parm.radius_g_1 * atan(Vy / tmp);
+ xy_y = this->m_proj_parm.radius_g_1 * atan(Vz / boost::math::hypot(Vy, tmp));
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType Vx, Vy, Vz, a, b, det, k;
+
+ /* Setting three components of vector from satellite to position.*/
+ Vx = -1.0;
+ if(this->m_proj_parm.flip_axis)
+ {
+ Vz = tan (xy_y / (this->m_proj_parm.radius_g - 1.0));
+ Vy = tan (xy_x / (this->m_proj_parm.radius_g - 1.0)) * sqrt (1.0 + Vz * Vz);
+ }
+ else
+ {
+ Vy = tan (xy_x / (this->m_proj_parm.radius_g - 1.0));
+ Vz = tan (xy_y / (this->m_proj_parm.radius_g - 1.0)) * sqrt (1.0 + Vy * Vy);
+ }
+ /* Calculation of terms in cubic equation and determinant.*/
+ a = Vy * Vy + Vz * Vz + Vx * Vx;
+ b = 2 * this->m_proj_parm.radius_g * Vx;
+ if ((det = (b * b) - 4 * a * this->m_proj_parm.C) < 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ /* Calculation of three components of vector from satellite to position.*/
+ k = (-b - sqrt(det)) / (2 * a);
+ Vx = this->m_proj_parm.radius_g + k * Vx;
+ Vy *= k;
+ Vz *= k;
+ /* Calculation of longitude and latitude.*/
+ lp_lon = atan2 (Vy, Vx);
+ lp_lat = atan (Vz * cos (lp_lon) / Vx);
+ }
+
+ static inline std::string get_name()
+ {
+ return "geos_spheroid";
+ }
+
+ };
+
+ // Geostationary Satellite View
+ template <typename Parameters, typename T>
+ inline void setup_geos(Parameters& par, par_geos<T>& proj_parm)
+ {
+ if ((proj_parm.h = pj_param(par.params, "dh").f) <= 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-30) );
+ if (par.phi0)
+ BOOST_THROW_EXCEPTION( projection_exception(-46) );
+ proj_parm.sweep_axis = pj_param(par.params, "ssweep").s;
+ if (proj_parm.sweep_axis.empty())
+ proj_parm.flip_axis = 0;
+ else {
+ if (proj_parm.sweep_axis[1] != '\0' ||
+ (proj_parm.sweep_axis[0] != 'x' &&
+ proj_parm.sweep_axis[0] != 'y'))
+ BOOST_THROW_EXCEPTION( projection_exception(-49) );
+ if (proj_parm.sweep_axis[0] == 'x')
+ proj_parm.flip_axis = 1;
+ else
+ proj_parm.flip_axis = 0;
+ }
+ proj_parm.radius_g_1 = proj_parm.h / par.a;
+ proj_parm.radius_g = 1. + proj_parm.radius_g_1;
+ proj_parm.C = proj_parm.radius_g * proj_parm.radius_g - 1.0;
+ if (par.es) {
+ proj_parm.radius_p = sqrt (par.one_es);
+ proj_parm.radius_p2 = par.one_es;
+ proj_parm.radius_p_inv2 = par.rone_es;
+ } else {
+ proj_parm.radius_p = proj_parm.radius_p2 = proj_parm.radius_p_inv2 = 1.0;
+ }
+ }
+
+ }} // namespace detail::geos
+ #endif // doxygen
+
+ /*!
+ \brief Geostationary Satellite View projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - h: Height (real)
+ - sweep: Sweep axis ('x' or 'y') (string)
+ \par Example
+ \image html ex_geos.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct geos_ellipsoid : public detail::geos::base_geos_ellipsoid<CalculationType, Parameters>
+ {
+ inline geos_ellipsoid(const Parameters& par) : detail::geos::base_geos_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::geos::setup_geos(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Geostationary Satellite View projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - h: Height (real)
+ - sweep: Sweep axis ('x' or 'y') (string)
+ \par Example
+ \image html ex_geos.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct geos_spheroid : public detail::geos::base_geos_spheroid<CalculationType, Parameters>
+ {
+ inline geos_spheroid(const Parameters& par) : detail::geos::base_geos_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::geos::setup_geos(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::geos, geos_spheroid, geos_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class geos_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<geos_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<geos_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void geos_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("geos", new geos_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_GEOS_HPP
+
diff --git a/boost/geometry/srs/projections/proj/gins8.hpp b/boost/geometry/srs/projections/proj/gins8.hpp
new file mode 100644
index 0000000000..f6c0059b07
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/gins8.hpp
@@ -0,0 +1,170 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_GINS8_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_GINS8_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct gins8 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace gins8
+ {
+
+ static const double Cl = 0.000952426;
+ static const double Cp = 0.162388;
+ //static const double C12 = 0.08333333333333333;
+
+ template <typename T>
+ inline T C12() { return 0.083333333333333333333333333333333333; }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_gins8_spheroid : public base_t_f<base_gins8_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_gins8_spheroid(const Parameters& par)
+ : base_t_f<base_gins8_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType C12 = gins8::C12<CalculationType>();
+
+ CalculationType t = lp_lat * lp_lat;
+
+ xy_y = lp_lat * (1. + t * C12);
+ xy_x = lp_lon * (1. - Cp * t);
+ t = lp_lon * lp_lon;
+ xy_x *= (0.87 - Cl * t * t);
+ }
+
+ static inline std::string get_name()
+ {
+ return "gins8_spheroid";
+ }
+
+ };
+
+ // Ginsburg VIII (TsNIIGAiK)
+ template <typename Parameters>
+ inline void setup_gins8(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::gins8
+ #endif // doxygen
+
+ /*!
+ \brief Ginsburg VIII (TsNIIGAiK) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_gins8.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct gins8_spheroid : public detail::gins8::base_gins8_spheroid<CalculationType, Parameters>
+ {
+ inline gins8_spheroid(const Parameters& par) : detail::gins8::base_gins8_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::gins8::setup_gins8(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::gins8, gins8_spheroid, gins8_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class gins8_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<gins8_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void gins8_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("gins8", new gins8_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_GINS8_HPP
+
diff --git a/boost/geometry/srs/projections/proj/gn_sinu.hpp b/boost/geometry/srs/projections/proj/gn_sinu.hpp
new file mode 100644
index 0000000000..c41b278255
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/gn_sinu.hpp
@@ -0,0 +1,426 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_GN_SINU_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_GN_SINU_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct gn_sinu {};
+ struct sinu {};
+ struct eck6 {};
+ struct mbtfps {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace gn_sinu
+ {
+
+ static const double EPS10 = 1e-10;
+ static const int MAX_ITER = 8;
+ static const double LOOP_TOL = 1e-7;
+
+ template <typename T>
+ struct par_gn_sinu
+ {
+ T en[EN_SIZE];
+ T m, n, C_x, C_y;
+ };
+
+ /* Ellipsoidal Sinusoidal only */
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_gn_sinu_ellipsoid : public base_t_fi<base_gn_sinu_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_gn_sinu<CalculationType> m_proj_parm;
+
+ inline base_gn_sinu_ellipsoid(const Parameters& par)
+ : base_t_fi<base_gn_sinu_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType s, c;
+
+ xy_y = pj_mlfn(lp_lat, s = sin(lp_lat), c = cos(lp_lat), this->m_proj_parm.en);
+ xy_x = lp_lon * c / sqrt(1. - this->m_par.es * s * s);
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType s;
+
+ if ((s = fabs(lp_lat = pj_inv_mlfn(xy_y, this->m_par.es, this->m_proj_parm.en))) < HALFPI) {
+ s = sin(lp_lat);
+ lp_lon = xy_x * sqrt(1. - this->m_par.es * s * s) / cos(lp_lat);
+ } else if ((s - EPS10) < HALFPI)
+ lp_lon = 0.;
+ else
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ }
+ /* General spherical sinusoidals */
+
+ static inline std::string get_name()
+ {
+ return "gn_sinu_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_gn_sinu_spheroid : public base_t_fi<base_gn_sinu_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_gn_sinu<CalculationType> m_proj_parm;
+
+ inline base_gn_sinu_spheroid(const Parameters& par)
+ : base_t_fi<base_gn_sinu_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ if (!this->m_proj_parm.m)
+ lp_lat = this->m_proj_parm.n != 1. ? aasin(this->m_proj_parm.n * sin(lp_lat)): lp_lat;
+ else {
+ CalculationType k, V;
+ int i;
+
+ k = this->m_proj_parm.n * sin(lp_lat);
+ for (i = MAX_ITER; i ; --i) {
+ lp_lat -= V = (this->m_proj_parm.m * lp_lat + sin(lp_lat) - k) /
+ (this->m_proj_parm.m + cos(lp_lat));
+ if (fabs(V) < LOOP_TOL)
+ break;
+ }
+ if (!i)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ }
+ xy_x = this->m_proj_parm.C_x * lp_lon * (this->m_proj_parm.m + cos(lp_lat));
+ xy_y = this->m_proj_parm.C_y * lp_lat;
+ }
+
+ // INVERSE(s_inverse) sphere
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ xy_y /= this->m_proj_parm.C_y;
+ lp_lat = this->m_proj_parm.m ? aasin((this->m_proj_parm.m * xy_y + sin(xy_y)) / this->m_proj_parm.n) :
+ ( this->m_proj_parm.n != 1. ? aasin(sin(xy_y) / this->m_proj_parm.n) : xy_y );
+ lp_lon = xy_x / (this->m_proj_parm.C_x * (this->m_proj_parm.m + cos(xy_y)));
+ }
+
+ static inline std::string get_name()
+ {
+ return "gn_sinu_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_gn_sinu<T>& proj_parm)
+ {
+ par.es = 0;
+ proj_parm.C_x = (proj_parm.C_y = sqrt((proj_parm.m + 1.) / proj_parm.n))/(proj_parm.m + 1.);
+ }
+
+
+ // General Sinusoidal Series
+ template <typename Parameters, typename T>
+ inline void setup_gn_sinu(Parameters& par, par_gn_sinu<T>& proj_parm)
+ {
+ if (pj_param(par.params, "tn").i && pj_param(par.params, "tm").i) {
+ proj_parm.n = pj_param(par.params, "dn").f;
+ proj_parm.m = pj_param(par.params, "dm").f;
+ } else
+ BOOST_THROW_EXCEPTION( projection_exception(-99) );
+ setup(par, proj_parm);
+ }
+
+ // Sinusoidal (Sanson-Flamsteed)
+ template <typename Parameters, typename T>
+ inline void setup_sinu(Parameters& par, par_gn_sinu<T>& proj_parm)
+ {
+ if (!pj_enfn(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ if (par.es) {
+ } else {
+ proj_parm.n = 1.;
+ proj_parm.m = 0.;
+ setup(par, proj_parm);
+ }
+ }
+
+ // Eckert VI
+ template <typename Parameters, typename T>
+ inline void setup_eck6(Parameters& par, par_gn_sinu<T>& proj_parm)
+ {
+ proj_parm.m = 1.;
+ proj_parm.n = 2.570796326794896619231321691;
+ setup(par, proj_parm);
+ }
+
+ // McBryde-Thomas Flat-Polar Sinusoidal
+ template <typename Parameters, typename T>
+ inline void setup_mbtfps(Parameters& par, par_gn_sinu<T>& proj_parm)
+ {
+ proj_parm.m = 0.5;
+ proj_parm.n = 1.785398163397448309615660845;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::gn_sinu
+ #endif // doxygen
+
+ /*!
+ \brief General Sinusoidal Series projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Projection parameters
+ - m (real)
+ - n (real)
+ \par Example
+ \image html ex_gn_sinu.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct gn_sinu_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid<CalculationType, Parameters>
+ {
+ inline gn_sinu_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::gn_sinu::setup_gn_sinu(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Sinusoidal (Sanson-Flamsteed) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_sinu.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct sinu_ellipsoid : public detail::gn_sinu::base_gn_sinu_ellipsoid<CalculationType, Parameters>
+ {
+ inline sinu_ellipsoid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::gn_sinu::setup_sinu(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Sinusoidal (Sanson-Flamsteed) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_sinu.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct sinu_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid<CalculationType, Parameters>
+ {
+ inline sinu_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::gn_sinu::setup_sinu(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Eckert VI projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_eck6.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct eck6_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid<CalculationType, Parameters>
+ {
+ inline eck6_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::gn_sinu::setup_eck6(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief McBryde-Thomas Flat-Polar Sinusoidal projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_mbtfps.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct mbtfps_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid<CalculationType, Parameters>
+ {
+ inline mbtfps_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::gn_sinu::setup_mbtfps(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::gn_sinu, gn_sinu_spheroid, gn_sinu_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::sinu, sinu_spheroid, sinu_ellipsoid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::eck6, eck6_spheroid, eck6_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::mbtfps, mbtfps_spheroid, mbtfps_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class gn_sinu_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<gn_sinu_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class sinu_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<sinu_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<sinu_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class eck6_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<eck6_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class mbtfps_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<mbtfps_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void gn_sinu_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("gn_sinu", new gn_sinu_entry<CalculationType, Parameters>);
+ factory.add_to_factory("sinu", new sinu_entry<CalculationType, Parameters>);
+ factory.add_to_factory("eck6", new eck6_entry<CalculationType, Parameters>);
+ factory.add_to_factory("mbtfps", new mbtfps_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_GN_SINU_HPP
+
diff --git a/boost/geometry/srs/projections/proj/gnom.hpp b/boost/geometry/srs/projections/proj/gnom.hpp
new file mode 100644
index 0000000000..d691c136b6
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/gnom.hpp
@@ -0,0 +1,266 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_GNOM_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_GNOM_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/config.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct gnom {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace gnom
+ {
+
+ static const double EPS10 = 1.e-10;
+ static const int N_POLE = 0;
+ static const int S_POLE = 1;
+ static const int EQUIT = 2;
+ static const int OBLIQ = 3;
+
+ template <typename T>
+ struct par_gnom
+ {
+ T sinph0;
+ T cosph0;
+ int mode;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_gnom_spheroid : public base_t_fi<base_gnom_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_gnom<CalculationType> m_proj_parm;
+
+ inline base_gnom_spheroid(const Parameters& par)
+ : base_t_fi<base_gnom_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType coslam, cosphi, sinphi;
+
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ coslam = cos(lp_lon);
+ switch (this->m_proj_parm.mode) {
+ case EQUIT:
+ xy_y = cosphi * coslam;
+ break;
+ case OBLIQ:
+ xy_y = this->m_proj_parm.sinph0 * sinphi + this->m_proj_parm.cosph0 * cosphi * coslam;
+ break;
+ case S_POLE:
+ xy_y = - sinphi;
+ break;
+ case N_POLE:
+ xy_y = sinphi;
+ break;
+ }
+ if (xy_y <= EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = (xy_y = 1. / xy_y) * cosphi * sin(lp_lon);
+ switch (this->m_proj_parm.mode) {
+ case EQUIT:
+ xy_y *= sinphi;
+ break;
+ case OBLIQ:
+ xy_y *= this->m_proj_parm.cosph0 * sinphi - this->m_proj_parm.sinph0 * cosphi * coslam;
+ break;
+ case N_POLE:
+ coslam = - coslam;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ xy_y *= cosphi * coslam;
+ break;
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType rh, cosz, sinz;
+
+ rh = boost::math::hypot(xy_x, xy_y);
+ sinz = sin(lp_lat = atan(rh));
+ cosz = sqrt(1. - sinz * sinz);
+ if (fabs(rh) <= EPS10) {
+ lp_lat = this->m_par.phi0;
+ lp_lon = 0.;
+ } else {
+ switch (this->m_proj_parm.mode) {
+ case OBLIQ:
+ lp_lat = cosz * this->m_proj_parm.sinph0 + xy_y * sinz * this->m_proj_parm.cosph0 / rh;
+ if (fabs(lp_lat) >= 1.)
+ lp_lat = lp_lat > 0. ? HALFPI : -HALFPI;
+ else
+ lp_lat = asin(lp_lat);
+ xy_y = (cosz - this->m_proj_parm.sinph0 * sin(lp_lat)) * rh;
+ xy_x *= sinz * this->m_proj_parm.cosph0;
+ break;
+ case EQUIT:
+ lp_lat = xy_y * sinz / rh;
+ if (fabs(lp_lat) >= 1.)
+ lp_lat = lp_lat > 0. ? HALFPI : -HALFPI;
+ else
+ lp_lat = asin(lp_lat);
+ xy_y = cosz * rh;
+ xy_x *= sinz;
+ break;
+ case S_POLE:
+ lp_lat -= HALFPI;
+ break;
+ case N_POLE:
+ lp_lat = HALFPI - lp_lat;
+ xy_y = -xy_y;
+ break;
+ }
+ lp_lon = atan2(xy_x, xy_y);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "gnom_spheroid";
+ }
+
+ };
+
+ // Gnomonic
+ template <typename Parameters, typename T>
+ inline void setup_gnom(Parameters& par, par_gnom<T>& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ if (fabs(fabs(par.phi0) - HALFPI) < EPS10)
+ proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE;
+ else if (fabs(par.phi0) < EPS10)
+ proj_parm.mode = EQUIT;
+ else {
+ proj_parm.mode = OBLIQ;
+ proj_parm.sinph0 = sin(par.phi0);
+ proj_parm.cosph0 = cos(par.phi0);
+ }
+ par.es = 0.;
+ }
+
+ }} // namespace detail::gnom
+ #endif // doxygen
+
+ /*!
+ \brief Gnomonic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ \par Example
+ \image html ex_gnom.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct gnom_spheroid : public detail::gnom::base_gnom_spheroid<CalculationType, Parameters>
+ {
+ inline gnom_spheroid(const Parameters& par) : detail::gnom::base_gnom_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::gnom::setup_gnom(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::gnom, gnom_spheroid, gnom_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class gnom_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<gnom_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void gnom_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("gnom", new gnom_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_GNOM_HPP
+
diff --git a/boost/geometry/srs/projections/proj/goode.hpp b/boost/geometry/srs/projections/proj/goode.hpp
new file mode 100644
index 0000000000..ef4e5ebeee
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/goode.hpp
@@ -0,0 +1,187 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_GOODE_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_GOODE_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/proj/gn_sinu.hpp>
+#include <boost/geometry/srs/projections/proj/moll.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct goode {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace goode
+ {
+
+ static const double Y_COR = 0.05280;
+ static const double PHI_LIM = .71093078197902358062;
+
+ template <typename CalculationType, typename Parameters>
+ struct par_goode
+ {
+ sinu_ellipsoid<CalculationType, Parameters> sinu;
+ moll_spheroid<CalculationType, Parameters> moll;
+
+ par_goode(const Parameters& par) : sinu(par), moll(par) {}
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_goode_spheroid : public base_t_fi<base_goode_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_goode<CalculationType, Parameters> m_proj_parm;
+
+ inline base_goode_spheroid(const Parameters& par)
+ : base_t_fi<base_goode_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par), m_proj_parm(par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ if (fabs(lp_lat) <= PHI_LIM)
+ this->m_proj_parm.sinu.fwd(lp_lon, lp_lat, xy_x, xy_y);
+ else {
+ this->m_proj_parm.moll.fwd(lp_lon, lp_lat, xy_x, xy_y);
+ xy_y -= lp_lat >= 0.0 ? Y_COR : -Y_COR;
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ if (fabs(xy_y) <= PHI_LIM)
+ this->m_proj_parm.sinu.inv(xy_x, xy_y, lp_lon, lp_lat);
+ else {
+ xy_y += xy_y >= 0.0 ? Y_COR : -Y_COR;
+ this->m_proj_parm.moll.inv(xy_x, xy_y, lp_lon, lp_lat);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "goode_spheroid";
+ }
+
+ };
+
+ // Goode Homolosine
+ template <typename CalculationType, typename Parameters>
+ inline void setup_goode(Parameters& par, par_goode<CalculationType, Parameters>& /*proj_parm*/)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::goode
+ #endif // doxygen
+
+ /*!
+ \brief Goode Homolosine projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_goode.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct goode_spheroid : public detail::goode::base_goode_spheroid<CalculationType, Parameters>
+ {
+ inline goode_spheroid(const Parameters& par) : detail::goode::base_goode_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::goode::setup_goode(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::goode, goode_spheroid, goode_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class goode_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<goode_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void goode_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("goode", new goode_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_GOODE_HPP
+
diff --git a/boost/geometry/srs/projections/proj/gstmerc.hpp b/boost/geometry/srs/projections/proj/gstmerc.hpp
new file mode 100644
index 0000000000..5e3581328e
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/gstmerc.hpp
@@ -0,0 +1,202 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_GSTMERC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_GSTMERC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_phi2.hpp>
+#include <boost/geometry/srs/projections/impl/pj_tsfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct gstmerc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace gstmerc
+ {
+ template <typename T>
+ struct par_gstmerc
+ {
+ T lamc;
+ T phic;
+ T c;
+ T n1;
+ T n2;
+ T XS;
+ T YS;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_gstmerc_spheroid : public base_t_fi<base_gstmerc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_gstmerc<CalculationType> m_proj_parm;
+
+ inline base_gstmerc_spheroid(const Parameters& par)
+ : base_t_fi<base_gstmerc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType L, Ls, sinLs1, Ls1;
+ L= this->m_proj_parm.n1*lp_lon;
+ Ls= this->m_proj_parm.c+this->m_proj_parm.n1*log(pj_tsfn(-1.0*lp_lat,-1.0*sin(lp_lat),this->m_par.e));
+ sinLs1= sin(L)/cosh(Ls);
+ Ls1= log(pj_tsfn(-1.0*asin(sinLs1),0.0,0.0));
+ xy_x= (this->m_proj_parm.XS + this->m_proj_parm.n2*Ls1)*this->m_par.ra;
+ xy_y= (this->m_proj_parm.YS + this->m_proj_parm.n2*atan(sinh(Ls)/cos(L)))*this->m_par.ra;
+ /*fprintf(stderr,"fwd:\nL =%16.13f\nLs =%16.13f\nLs1 =%16.13f\nLP(%16.13f,%16.13f)=XY(%16.4f,%16.4f)\n",L,Ls,Ls1,lp_lon+this->m_par.lam0,lp_lat,(xy_x*this->m_par.a + this->m_par.x0)*this->m_par.to_meter,(xy_y*this->m_par.a + this->m_par.y0)*this->m_par.to_meter);*/
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType L, LC, sinC;
+ L= atan(sinh((xy_x*this->m_par.a - this->m_proj_parm.XS)/this->m_proj_parm.n2)/cos((xy_y*this->m_par.a - this->m_proj_parm.YS)/this->m_proj_parm.n2));
+ sinC= sin((xy_y*this->m_par.a - this->m_proj_parm.YS)/this->m_proj_parm.n2)/cosh((xy_x*this->m_par.a - this->m_proj_parm.XS)/this->m_proj_parm.n2);
+ LC= log(pj_tsfn(-1.0*asin(sinC),0.0,0.0));
+ lp_lon= L/this->m_proj_parm.n1;
+ lp_lat= -1.0*pj_phi2(exp((LC-this->m_proj_parm.c)/this->m_proj_parm.n1),this->m_par.e);
+ /*fprintf(stderr,"inv:\nL =%16.13f\nsinC =%16.13f\nLC =%16.13f\nXY(%16.4f,%16.4f)=LP(%16.13f,%16.13f)\n",L,sinC,LC,((xy_x/this->m_par.ra)+this->m_par.x0)/this->m_par.to_meter,((xy_y/this->m_par.ra)+this->m_par.y0)/this->m_par.to_meter,lp_lon+this->m_par.lam0,lp_lat);*/
+ }
+
+ static inline std::string get_name()
+ {
+ return "gstmerc_spheroid";
+ }
+
+ };
+
+ // Gauss-Schreiber Transverse Mercator (aka Gauss-Laborde Reunion)
+ template <typename Parameters, typename T>
+ inline void setup_gstmerc(Parameters& par, par_gstmerc<T>& proj_parm)
+ {
+ proj_parm.lamc= par.lam0;
+ proj_parm.n1= sqrt(1.0+par.es*pow(cos(par.phi0),4.0)/(1.0-par.es));
+ proj_parm.phic= asin(sin(par.phi0)/proj_parm.n1);
+ proj_parm.c= log(pj_tsfn(-1.0*proj_parm.phic,0.0,0.0))
+ -proj_parm.n1*log(pj_tsfn(-1.0*par.phi0,-1.0*sin(par.phi0),par.e));
+ proj_parm.n2= par.k0*par.a*sqrt(1.0-par.es)/(1.0-par.es*sin(par.phi0)*sin(par.phi0));
+ proj_parm.XS= 0;/* -par.x0 */
+ proj_parm.YS= -1.0*proj_parm.n2*proj_parm.phic;/* -par.y0 */
+ /*fprintf(stderr,"a (m) =%16.4f\ne =%16.13f\nl0(rad)=%16.13f\np0(rad)=%16.13f\nk0 =%16.4f\nX0 (m)=%16.4f\nY0 (m)=%16.4f\n\nlC(rad)=%16.13f\npC(rad)=%16.13f\nc =%16.13f\nn1 =%16.13f\nn2 (m) =%16.4f\nXS (m) =%16.4f\nYS (m) =%16.4f\n", par.a, par.e, par.lam0, par.phi0, par.k0, par.x0, par.y0, proj_parm.lamc, proj_parm.phic, proj_parm.c, proj_parm.n1, proj_parm.n2, proj_parm.XS +par.x0, proj_parm.YS + par.y0);*/
+ }
+
+ }} // namespace detail::gstmerc
+ #endif // doxygen
+
+ /*!
+ \brief Gauss-Schreiber Transverse Mercator (aka Gauss-Laborde Reunion) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_0: Latitude of origin
+ - lon_0: Central meridian
+ - k_0: Scale factor
+ \par Example
+ \image html ex_gstmerc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct gstmerc_spheroid : public detail::gstmerc::base_gstmerc_spheroid<CalculationType, Parameters>
+ {
+ inline gstmerc_spheroid(const Parameters& par) : detail::gstmerc::base_gstmerc_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::gstmerc::setup_gstmerc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::gstmerc, gstmerc_spheroid, gstmerc_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class gstmerc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<gstmerc_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void gstmerc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("gstmerc", new gstmerc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_GSTMERC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/hammer.hpp b/boost/geometry/srs/projections/proj/hammer.hpp
new file mode 100644
index 0000000000..58707a1499
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/hammer.hpp
@@ -0,0 +1,201 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_HAMMER_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_HAMMER_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct hammer {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace hammer
+ {
+ static const double EPS = 1.0e-10;
+
+ template <typename T>
+ struct par_hammer
+ {
+ T w;
+ T m, rm;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_hammer_spheroid : public base_t_fi<base_hammer_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_hammer<CalculationType> m_proj_parm;
+
+ inline base_hammer_spheroid(const Parameters& par)
+ : base_t_fi<base_hammer_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType cosphi, d;
+
+ d = sqrt(2./(1. + (cosphi = cos(lp_lat)) * cos(lp_lon *= this->m_proj_parm.w)));
+ xy_x = this->m_proj_parm.m * d * cosphi * sin(lp_lon);
+ xy_y = this->m_proj_parm.rm * d * sin(lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType z;
+
+ z = sqrt(1. - 0.25*this->m_proj_parm.w*this->m_proj_parm.w*xy_x*xy_x - 0.25*xy_y*xy_y);
+ if (geometry::math::abs(2.*z*z-1.) < EPS) {
+ lp_lon = HUGE_VAL;
+ lp_lat = HUGE_VAL;
+ BOOST_THROW_EXCEPTION( projection_exception(-14) );
+ } else {
+ lp_lon = aatan2(this->m_proj_parm.w * xy_x * z,2. * z * z - 1)/this->m_proj_parm.w;
+ lp_lat = aasin(z * xy_y);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "hammer_spheroid";
+ }
+
+ };
+
+ // Hammer & Eckert-Greifendorff
+ template <typename Parameters, typename T>
+ inline void setup_hammer(Parameters& par, par_hammer<T>& proj_parm)
+ {
+ if (pj_param(par.params, "tW").i) {
+ if ((proj_parm.w = fabs(pj_param(par.params, "dW").f)) <= 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-27) );
+ } else
+ proj_parm.w = .5;
+ if (pj_param(par.params, "tM").i) {
+ if ((proj_parm.m = fabs(pj_param(par.params, "dM").f)) <= 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-27) );
+ } else
+ proj_parm.m = 1.;
+ proj_parm.rm = 1. / proj_parm.m;
+ proj_parm.m /= proj_parm.w;
+ par.es = 0.;
+ }
+
+ }} // namespace detail::hammer
+ #endif // doxygen
+
+ /*!
+ \brief Hammer & Eckert-Greifendorff projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Projection parameters
+ - W (real)
+ - M (real)
+ \par Example
+ \image html ex_hammer.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct hammer_spheroid : public detail::hammer::base_hammer_spheroid<CalculationType, Parameters>
+ {
+ inline hammer_spheroid(const Parameters& par) : detail::hammer::base_hammer_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::hammer::setup_hammer(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::hammer, hammer_spheroid, hammer_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class hammer_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<hammer_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void hammer_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("hammer", new hammer_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_HAMMER_HPP
+
diff --git a/boost/geometry/srs/projections/proj/hatano.hpp b/boost/geometry/srs/projections/proj/hatano.hpp
new file mode 100644
index 0000000000..e37a78196b
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/hatano.hpp
@@ -0,0 +1,211 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_HATANO_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_HATANO_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct hatano {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace hatano
+ {
+
+ static const int NITER = 20;
+ static const double EPS = 1e-7;
+ static const double ONETOL = 1.000001;
+ static const double CN_ = 2.67595;
+ static const double CS_ = 2.43763;
+ static const double RCN = 0.37369906014686373063;
+ static const double RCS = 0.41023453108141924738;
+ static const double FYCN = 1.75859;
+ static const double FYCS = 1.93052;
+ static const double RYCN = 0.56863737426006061674;
+ static const double RYCS = 0.51799515156538134803;
+ static const double FXC = 0.85;
+ static const double RXC = 1.17647058823529411764;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_hatano_spheroid : public base_t_fi<base_hatano_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_hatano_spheroid(const Parameters& par)
+ : base_t_fi<base_hatano_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType th1, c;
+ int i;
+
+ c = sin(lp_lat) * (lp_lat < 0. ? CS_ : CN_);
+ for (i = NITER; i; --i) {
+ lp_lat -= th1 = (lp_lat + sin(lp_lat) - c) / (1. + cos(lp_lat));
+ if (fabs(th1) < EPS) break;
+ }
+ xy_x = FXC * lp_lon * cos(lp_lat *= .5);
+ xy_y = sin(lp_lat) * (lp_lat < 0. ? FYCS : FYCN);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType th;
+
+ th = xy_y * ( xy_y < 0. ? RYCS : RYCN);
+ if (fabs(th) > 1.) {
+ if (fabs(th) > ONETOL) {
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ } else {
+ th = th > 0. ? geometry::math::half_pi<double>() : - geometry::math::half_pi<double>();
+ }
+ } else {
+ th = asin(th);
+ }
+
+ lp_lon = RXC * xy_x / cos(th);
+ th += th;
+ lp_lat = (th + sin(th)) * (xy_y < 0. ? RCS : RCN);
+ if (fabs(lp_lat) > 1.) {
+ if (fabs(lp_lat) > ONETOL) {
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ } else {
+ lp_lat = lp_lat > 0. ? geometry::math::half_pi<double>() : - geometry::math::half_pi<double>();
+ }
+ } else {
+ lp_lat = asin(lp_lat);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "hatano_spheroid";
+ }
+
+ };
+
+ // Hatano Asymmetrical Equal Area
+ template <typename Parameters>
+ inline void setup_hatano(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::hatano
+ #endif // doxygen
+
+ /*!
+ \brief Hatano Asymmetrical Equal Area projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_hatano.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct hatano_spheroid : public detail::hatano::base_hatano_spheroid<CalculationType, Parameters>
+ {
+ inline hatano_spheroid(const Parameters& par) : detail::hatano::base_hatano_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::hatano::setup_hatano(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::hatano, hatano_spheroid, hatano_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class hatano_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<hatano_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void hatano_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("hatano", new hatano_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_HATANO_HPP
+
diff --git a/boost/geometry/srs/projections/proj/healpix.hpp b/boost/geometry/srs/projections/proj/healpix.hpp
new file mode 100644
index 0000000000..d2f5a8c081
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/healpix.hpp
@@ -0,0 +1,897 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_HEALPIX_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_HEALPIX_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Purpose: Implementation of the HEALPix and rHEALPix projections.
+// For background see <http://code.scenzgrid.org/index.php/p/scenzgrid-py/source/tree/master/docs/rhealpix_dggs.pdf>.
+// Authors: Alex Raichev (raichev@cs.auckland.ac.nz)
+// Michael Speth (spethm@landcareresearch.co.nz)
+// Notes: Raichev implemented these projections in Python and
+// Speth translated them into C here.
+// Copyright (c) 2001, Thomas Flemming, tf@ttqv.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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_auth.hpp>
+#include <boost/geometry/srs/projections/impl/pj_qsfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct healpix {};
+ struct rhealpix {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace healpix
+ {
+
+ static const double EPS = 1e-15;
+
+ template <typename T>
+ struct par_healpix
+ {
+ int north_square;
+ int south_square;
+ T qp;
+ T apa[APA_SIZE];
+ };
+
+ /* Matrix for counterclockwise rotation by pi/2: */
+ /* Matrix for counterclockwise rotation by pi: */
+ /* Matrix for counterclockwise rotation by 3*pi/2: */
+ /* Identity matrix */
+ /* IDENT, R1, R2, R3, R1 inverse, R2 inverse, R3 inverse:*/
+ /* Fuzz to handle rounding errors: */
+ template <typename T>
+ struct CapMap
+ {
+ int cn; /* An integer 0--3 indicating the position of the polar cap. */
+ T x, y; /* Coordinates of the pole point (point of most extreme latitude on the polar caps). */
+ enum Region {north, south, equatorial} region;
+ };
+ template <typename T>
+ struct Point
+ {
+ T x, y;
+ };
+ static double rot[7][2][2] = {{{1, 0},{0, 1}}, {{ 0,-1},{ 1, 0}}, {{-1, 0},{ 0,-1}}, {{ 0, 1},{-1, 0}}, {{ 0, 1},{-1, 0}}, {{-1, 0},{ 0,-1}}, {{ 0,-1},{ 1, 0}}};
+
+ /**
+ * Returns the sign of the double.
+ * @param v the parameter whose sign is returned.
+ * @return 1 for positive number, -1 for negative, and 0 for zero.
+ **/
+ template <typename T>
+ inline T pj_sign (T const& v)
+ {
+ return v > 0 ? 1 : (v < 0 ? -1 : 0);
+ }
+ /**
+ * Return the index of the matrix in {{{1, 0},{0, 1}}, {{ 0,-1},{ 1, 0}}, {{-1, 0},{ 0,-1}}, {{ 0, 1},{-1, 0}}, {{ 0, 1},{-1, 0}}, {{-1, 0},{ 0,-1}}, {{ 0,-1},{ 1, 0}}}.
+ * @param index ranges from -3 to 3.
+ */
+ inline int get_rotate_index(int index)
+ {
+ switch(index) {
+ case 0:
+ return 0;
+ case 1:
+ return 1;
+ case 2:
+ return 2;
+ case 3:
+ return 3;
+ case -1:
+ return 4;
+ case -2:
+ return 5;
+ case -3:
+ return 6;
+ }
+ return 0;
+ }
+ /**
+ * Return 1 if point (testx, testy) lies in the interior of the polygon
+ * determined by the vertices in vert, and return 0 otherwise.
+ * See http://paulbourke.net/geometry/polygonmesh/ for more details.
+ * @param nvert the number of vertices in the polygon.
+ * @param vert the (x, y)-coordinates of the polygon's vertices
+ **/
+ template <typename T>
+ inline int pnpoly(int nvert, T vert[][2], T const& testx, T const& testy)
+ {
+ int i, c = 0;
+ int counter = 0;
+ T xinters;
+ Point<T> p1, p2;
+ /* Check for boundrary cases */
+ for (i = 0; i < nvert; i++) {
+ if (testx == vert[i][0] && testy == vert[i][1]) {
+ return 1;
+ }
+ }
+ p1.x = vert[0][0];
+ p1.y = vert[0][1];
+ for (i = 1; i < nvert; i++) {
+ p2.x = vert[i % nvert][0];
+ p2.y = vert[i % nvert][1];
+ if (testy > (std::min)(p1.y, p2.y)) {
+ if (testy <= (std::max)(p1.y, p2.y)) {
+ if (testx <= (std::max)(p1.x, p2.x)) {
+ if (p1.y != p2.y) {
+ xinters = (testy-p1.y)*(p2.x-p1.x)/(p2.y-p1.y)+p1.x;
+ if (p1.x == p2.x || testx <= xinters) {
+ counter++;
+ }
+ }
+ }
+ }
+ }
+ p1 = p2;
+ }
+ if (counter % 2 == 0) {
+ return 0;
+ } else {
+ return 1;
+ }
+ return c;
+ }
+ /**
+ * Return 1 if (x, y) lies in (the interior or boundary of) the image of the
+ * HEALPix projection (in case proj=0) or in the image the rHEALPix projection
+ * (in case proj=1), and return 0 otherwise.
+ * @param north_square the position of the north polar square (rHEALPix only)
+ * @param south_square the position of the south polar square (rHEALPix only)
+ **/
+ template <typename T>
+ inline int in_image(T const& x, T const& y, int proj, int north_square, int south_square)
+ {
+ static const T ONEPI = detail::ONEPI<T>();
+
+ if (proj == 0) {
+ T healpixVertsJit[][2] = {
+ {-1.0*ONEPI- EPS, ONEPI/4.0},
+ {-3.0*ONEPI/4.0, ONEPI/2.0 + EPS},
+ {-1.0*ONEPI/2.0, ONEPI/4.0 + EPS},
+ {-1.0*ONEPI/4.0, ONEPI/2.0 + EPS},
+ {0.0, ONEPI/4.0 + EPS},
+ {ONEPI/4.0, ONEPI/2.0 + EPS},
+ {ONEPI/2.0, ONEPI/4.0 + EPS},
+ {3.0*ONEPI/4.0, ONEPI/2.0 + EPS},
+ {ONEPI+ EPS, ONEPI/4.0},
+ {ONEPI+ EPS, -1.0*ONEPI/4.0},
+ {3.0*ONEPI/4.0, -1.0*ONEPI/2.0 - EPS},
+ {ONEPI/2.0, -1.0*ONEPI/4.0 - EPS},
+ {ONEPI/4.0, -1.0*ONEPI/2.0 - EPS},
+ {0.0, -1.0*ONEPI/4.0 - EPS},
+ {-1.0*ONEPI/4.0, -1.0*ONEPI/2.0 - EPS},
+ {-1.0*ONEPI/2.0, -1.0*ONEPI/4.0 - EPS},
+ {-3.0*ONEPI/4.0, -1.0*ONEPI/2.0 - EPS},
+ {-1.0*ONEPI - EPS, -1.0*ONEPI/4.0}
+ };
+ return pnpoly((int)sizeof(healpixVertsJit)/
+ sizeof(healpixVertsJit[0]), healpixVertsJit, x, y);
+ } else {
+ T rhealpixVertsJit[][2] = {
+ {-1.0*ONEPI - EPS, ONEPI/4.0 + EPS},
+ {-1.0*ONEPI + north_square*ONEPI/2.0- EPS, ONEPI/4.0 + EPS},
+ {-1.0*ONEPI + north_square*ONEPI/2.0- EPS, 3*ONEPI/4.0 + EPS},
+ {-1.0*ONEPI + (north_square + 1.0)*ONEPI/2.0 + EPS, 3*ONEPI/4.0 + EPS},
+ {-1.0*ONEPI + (north_square + 1.0)*ONEPI/2.0 + EPS, ONEPI/4.0 + EPS},
+ {ONEPI + EPS, ONEPI/4.0 + EPS},
+ {ONEPI + EPS, -1.0*ONEPI/4.0 - EPS},
+ {-1.0*ONEPI + (south_square + 1.0)*ONEPI/2.0 + EPS, -1.0*ONEPI/4.0 - EPS},
+ {-1.0*ONEPI + (south_square + 1.0)*ONEPI/2.0 + EPS, -3.0*ONEPI/4.0 - EPS},
+ {-1.0*ONEPI + south_square*ONEPI/2.0 - EPS, -3.0*ONEPI/4.0 - EPS},
+ {-1.0*ONEPI + south_square*ONEPI/2.0 - EPS, -1.0*ONEPI/4.0 - EPS},
+ {-1.0*ONEPI - EPS, -1.0*ONEPI/4.0 - EPS}};
+ return pnpoly((int)sizeof(rhealpixVertsJit)/
+ sizeof(rhealpixVertsJit[0]), rhealpixVertsJit, x, y);
+ }
+ }
+ /**
+ * Return the authalic latitude of latitude alpha (if inverse=0) or
+ * return the approximate latitude of authalic latitude alpha (if inverse=1).
+ * P contains the relavent ellipsoid parameters.
+ **/
+ template <typename Parameters, typename T>
+ inline T auth_lat(const Parameters& par, const par_healpix<T>& proj_parm, T const& alpha, int inverse)
+ {
+ if (inverse == 0) {
+ /* Authalic latitude. */
+ T q = pj_qsfn(sin(alpha), par.e, 1.0 - par.es);
+ T qp = proj_parm.qp;
+ T ratio = q/qp;
+ if (fabsl(ratio) > 1) {
+ /* Rounding error. */
+ ratio = pj_sign(ratio);
+ }
+ return asin(ratio);
+ } else {
+ /* Approximation to inverse authalic latitude. */
+ return pj_authlat(alpha, proj_parm.apa);
+ }
+ }
+ /**
+ * Return the HEALPix projection of the longitude-latitude point lp on
+ * the unit sphere.
+ **/
+ template <typename T>
+ inline void healpix_sphere(T const& lp_lam, T const& lp_phi, T& xy_x, T& xy_y)
+ {
+ static const T ONEPI = detail::ONEPI<T>();
+
+ T lam = lp_lam;
+ T phi = lp_phi;
+ T phi0 = asin(T(2.0)/T(3.0));
+
+ /* equatorial region */
+ if ( fabsl(phi) <= phi0) {
+ xy_x = lam;
+ xy_y = 3.0*ONEPI/8.0*sin(phi);
+ } else {
+ T lamc;
+ T sigma = sqrt(3.0*(1 - fabsl(sin(phi))));
+ T cn = floor(2*lam / ONEPI + 2);
+ if (cn >= 4) {
+ cn = 3;
+ }
+ lamc = -3*ONEPI/4 + (ONEPI/2)*cn;
+ xy_x = lamc + (lam - lamc)*sigma;
+ xy_y = pj_sign(phi)*ONEPI/4*(2 - sigma);
+ }
+ return;
+ }
+ /**
+ * Return the inverse of healpix_sphere().
+ **/
+ template <typename T>
+ inline void healpix_sphere_inverse(T const& xy_x, T const& xy_y, T& lp_lam, T& lp_phi)
+ {
+ static const T ONEPI = detail::ONEPI<T>();
+
+ T x = xy_x;
+ T y = xy_y;
+ T y0 = ONEPI/4.0;
+ /* Equatorial region. */
+ if (fabsl(y) <= y0) {
+ lp_lam = x;
+ lp_phi = asin(8.0*y/(3.0*ONEPI));
+ } else if (fabsl(y) < ONEPI/2.0) {
+ T cn = floor(2.0*x/ONEPI + 2.0);
+ T xc, tau;
+ if (cn >= 4) {
+ cn = 3;
+ }
+ xc = -3.0*ONEPI/4.0 + (ONEPI/2.0)*cn;
+ tau = 2.0 - 4.0*fabsl(y)/ONEPI;
+ lp_lam = xc + (x - xc)/tau;
+ lp_phi = pj_sign(y)*asin(1.0 - pow(tau , 2.0)/3.0);
+ } else {
+ lp_lam = -1.0*ONEPI;
+ lp_phi = pj_sign(y)*ONEPI/2.0;
+ }
+ return;
+ }
+ /**
+ * Return the vector sum a + b, where a and b are 2-dimensional vectors.
+ * @param ret holds a + b.
+ **/
+ template <typename T>
+ inline void vector_add(T a[2], T b[2], T *ret)
+ {
+ int i;
+ for(i = 0; i < 2; i++) {
+ ret[i] = a[i] + b[i];
+ }
+ }
+ /**
+ * Return the vector difference a - b, where a and b are 2-dimensional vectors.
+ * @param ret holds a - b.
+ **/
+ template <typename T>
+ inline void vector_sub(T a[2], T b[2], T*ret)
+ {
+ int i;
+ for(i = 0; i < 2; i++) {
+ ret[i] = a[i] - b[i];
+ }
+ }
+ /**
+ * Return the 2 x 1 matrix product a*b, where a is a 2 x 2 matrix and
+ * b is a 2 x 1 matrix.
+ * @param ret holds a*b.
+ **/
+ template <typename T>
+ inline void dot_product(T a[2][2], T b[2], T *ret)
+ {
+ int i, j;
+ int length = 2;
+ for(i = 0; i < length; i++) {
+ ret[i] = 0;
+ for(j = 0; j < length; j++) {
+ ret[i] += a[i][j]*b[j];
+ }
+ }
+ }
+ /**
+ * Return the number of the polar cap, the pole point coordinates, and
+ * the region that (x, y) lies in.
+ * If inverse=0, then assume (x,y) lies in the image of the HEALPix
+ * projection of the unit sphere.
+ * If inverse=1, then assume (x,y) lies in the image of the
+ * (north_square, south_square)-rHEALPix projection of the unit sphere.
+ **/
+ template <typename T>
+ inline CapMap<T> get_cap(T x, T const& y, int north_square, int south_square,
+ int inverse)
+ {
+ static const T ONEPI = detail::ONEPI<T>();
+
+ CapMap<T> capmap;
+ T c;
+ capmap.x = x;
+ capmap.y = y;
+ if (inverse == 0) {
+ if (y > ONEPI/4.0) {
+ capmap.region = CapMap<T>::north;
+ c = ONEPI/2.0;
+ } else if (y < -1*ONEPI/4.0) {
+ capmap.region = CapMap<T>::south;
+ c = -1*ONEPI/2.0;
+ } else {
+ capmap.region = CapMap<T>::equatorial;
+ capmap.cn = 0;
+ return capmap;
+ }
+ /* polar region */
+ if (x < -1*ONEPI/2.0) {
+ capmap.cn = 0;
+ capmap.x = (-1*3.0*ONEPI/4.0);
+ capmap.y = c;
+ } else if (x >= -1*ONEPI/2.0 && x < 0) {
+ capmap.cn = 1;
+ capmap.x = -1*ONEPI/4.0;
+ capmap.y = c;
+ } else if (x >= 0 && x < ONEPI/2.0) {
+ capmap.cn = 2;
+ capmap.x = ONEPI/4.0;
+ capmap.y = c;
+ } else {
+ capmap.cn = 3;
+ capmap.x = 3.0*ONEPI/4.0;
+ capmap.y = c;
+ }
+ return capmap;
+ } else {
+ T eps;
+ if (y > ONEPI/4.0) {
+ capmap.region = CapMap<T>::north;
+ capmap.x = (-3.0*ONEPI/4.0 + north_square*ONEPI/2.0);
+ capmap.y = ONEPI/2.0;
+ x = x - north_square*ONEPI/2.0;
+ } else if (y < -1*ONEPI/4.0) {
+ capmap.region = CapMap<T>::south;
+ capmap.x = (-3.0*ONEPI/4.0 + south_square*ONEPI/2);
+ capmap.y = -1*ONEPI/2.0;
+ x = x - south_square*ONEPI/2.0;
+ } else {
+ capmap.region = CapMap<T>::equatorial;
+ capmap.cn = 0;
+ return capmap;
+ }
+ /* Polar Region, find the HEALPix polar cap number that
+ x, y moves to when rHEALPix polar square is disassembled. */
+ eps = 1e-15; /* Kludge. Fuzz to avoid some rounding errors. */
+ if (capmap.region == CapMap<T>::north) {
+ if (y >= -1*x - ONEPI/4.0 - eps && y < x + 5.0*ONEPI/4.0 - eps) {
+ capmap.cn = (north_square + 1) % 4;
+ } else if (y > -1*x -1*ONEPI/4.0 + eps && y >= x + 5.0*ONEPI/4.0 - eps) {
+ capmap.cn = (north_square + 2) % 4;
+ } else if (y <= -1*x -1*ONEPI/4.0 + eps && y > x + 5.0*ONEPI/4.0 + eps) {
+ capmap.cn = (north_square + 3) % 4;
+ } else {
+ capmap.cn = north_square;
+ }
+ } else if (capmap.region == CapMap<T>::south) {
+ if (y <= x + ONEPI/4.0 + eps && y > -1*x - 5.0*ONEPI/4 + eps) {
+ capmap.cn = (south_square + 1) % 4;
+ } else if (y < x + ONEPI/4.0 - eps && y <= -1*x - 5.0*ONEPI/4.0 + eps) {
+ capmap.cn = (south_square + 2) % 4;
+ } else if (y >= x + ONEPI/4.0 - eps && y < -1*x - 5.0*ONEPI/4.0 - eps) {
+ capmap.cn = (south_square + 3) % 4;
+ } else {
+ capmap.cn = south_square;
+ }
+ }
+ return capmap;
+ }
+ }
+ /**
+ * Rearrange point (x, y) in the HEALPix projection by
+ * combining the polar caps into two polar squares.
+ * Put the north polar square in position north_square and
+ * the south polar square in position south_square.
+ * If inverse=1, then uncombine the polar caps.
+ * @param north_square integer between 0 and 3.
+ * @param south_square integer between 0 and 3.
+ **/
+ template <typename T>
+ inline void combine_caps(T& xy_x, T& xy_y, int north_square, int south_square,
+ int inverse)
+ {
+ static const T ONEPI = detail::ONEPI<T>();
+
+ T v[2];
+ T a[2];
+ T vector[2];
+ T v_min_c[2];
+ T ret_dot[2];
+ CapMap<T> capmap = get_cap(xy_x, xy_y, north_square, south_square, inverse);
+ if (capmap.region == CapMap<T>::equatorial) {
+ xy_x = capmap.x;
+ xy_y = capmap.y;
+ return;
+ }
+ v[0] = xy_x;
+ v[1] = xy_y;
+ if (inverse == 0) {
+ /* Rotate (xy_x, xy_y) about its polar cap tip and then translate it to
+ north_square or south_square. */
+ int pole = 0;
+ T (*tmpRot)[2];
+ T c[2] = {capmap.x, capmap.y};
+ if (capmap.region == CapMap<T>::north) {
+ pole = north_square;
+ a[0] = (-3.0*ONEPI/4.0 + pole*ONEPI/2);
+ a[1] = (ONEPI/2.0 + pole*0);
+ tmpRot = rot[get_rotate_index(capmap.cn - pole)];
+ vector_sub(v, c, v_min_c);
+ dot_product(tmpRot, v_min_c, ret_dot);
+ vector_add(ret_dot, a, vector);
+ } else {
+ pole = south_square;
+ a[0] = (-3.0*ONEPI/4.0 + pole*ONEPI/2);
+ a[1] = (ONEPI/-2.0 + pole*0);
+ tmpRot = rot[get_rotate_index(-1*(capmap.cn - pole))];
+ vector_sub(v, c, v_min_c);
+ dot_product(tmpRot, v_min_c, ret_dot);
+ vector_add(ret_dot, a, vector);
+ }
+ xy_x = vector[0];
+ xy_y = vector[1];
+ return;
+ } else {
+ /* Inverse function.
+ Unrotate (xy_x, xy_y) and then translate it back. */
+ int pole = 0;
+ T (*tmpRot)[2];
+ T c[2] = {capmap.x, capmap.y};
+ /* disassemble */
+ if (capmap.region == CapMap<T>::north) {
+ pole = north_square;
+ a[0] = (-3.0*ONEPI/4.0 + capmap.cn*ONEPI/2);
+ a[1] = (ONEPI/2.0 + capmap.cn*0);
+ tmpRot = rot[get_rotate_index(-1*(capmap.cn - pole))];
+ vector_sub(v, c, v_min_c);
+ dot_product(tmpRot, v_min_c, ret_dot);
+ vector_add(ret_dot, a, vector);
+ } else {
+ pole = south_square;
+ a[0] = (-3.0*ONEPI/4.0 + capmap.cn*ONEPI/2);
+ a[1] = (ONEPI/-2.0 + capmap.cn*0);
+ tmpRot = rot[get_rotate_index(capmap.cn - pole)];
+ vector_sub(v, c, v_min_c);
+ dot_product(tmpRot, v_min_c, ret_dot);
+ vector_add(ret_dot, a, vector);
+ }
+ xy_x = vector[0];
+ xy_y = vector[1];
+ return;
+ }
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_healpix_ellipsoid : public base_t_fi<base_healpix_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_healpix<CalculationType> m_proj_parm;
+
+ inline base_healpix_ellipsoid(const Parameters& par)
+ : base_t_fi<base_healpix_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_healpix_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ lp_lat = auth_lat(this->params(), m_proj_parm, lp_lat, 0);
+ return healpix_sphere(lp_lon, lp_lat, xy_x, xy_y);
+ }
+
+ // INVERSE(e_healpix_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ /* Check whether (x, y) lies in the HEALPix image. */
+ if (in_image(xy_x, xy_y, 0, 0, 0) == 0) {
+ lp_lon = HUGE_VAL;
+ lp_lat = HUGE_VAL;
+ BOOST_THROW_EXCEPTION( projection_exception(-15) );
+ }
+ healpix_sphere_inverse(xy_x, xy_y, lp_lon, lp_lat);
+ lp_lat = auth_lat(this->params(), m_proj_parm, lp_lat, 1);
+ }
+
+ static inline std::string get_name()
+ {
+ return "healpix_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_healpix_spheroid : public base_t_fi<base_healpix_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_healpix<CalculationType> m_proj_parm;
+
+ inline base_healpix_spheroid(const Parameters& par)
+ : base_t_fi<base_healpix_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_healpix_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ return healpix_sphere(lp_lon, lp_lat, xy_x, xy_y);
+ }
+
+ // INVERSE(s_healpix_inverse) sphere
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ /* Check whether (x, y) lies in the HEALPix image */
+ if (in_image(xy_x, xy_y, 0, 0, 0) == 0) {
+ lp_lon = HUGE_VAL;
+ lp_lat = HUGE_VAL;
+ BOOST_THROW_EXCEPTION( projection_exception(-15) );
+ }
+ return healpix_sphere_inverse(xy_x, xy_y, lp_lon, lp_lat);
+ }
+
+ static inline std::string get_name()
+ {
+ return "healpix_spheroid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_rhealpix_ellipsoid : public base_t_fi<base_rhealpix_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_healpix<CalculationType> m_proj_parm;
+
+ inline base_rhealpix_ellipsoid(const Parameters& par)
+ : base_t_fi<base_rhealpix_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_rhealpix_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ lp_lat = auth_lat(this->params(), m_proj_parm, lp_lat, 0);
+ healpix_sphere(lp_lon, lp_lat, xy_x, xy_y);
+ combine_caps(xy_x, xy_y, this->m_proj_parm.north_square, this->m_proj_parm.south_square, 0);
+ }
+
+ // INVERSE(e_rhealpix_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ /* Check whether (x, y) lies in the rHEALPix image. */
+ if (in_image(xy_x, xy_y, 1, this->m_proj_parm.north_square, this->m_proj_parm.south_square) == 0) {
+ lp_lon = HUGE_VAL;
+ lp_lat = HUGE_VAL;
+ BOOST_THROW_EXCEPTION( projection_exception(-15) );
+ }
+ combine_caps(xy_x, xy_y, this->m_proj_parm.north_square, this->m_proj_parm.south_square, 1);
+ healpix_sphere_inverse(xy_x, xy_y, lp_lon, lp_lat);
+ lp_lat = auth_lat(this->params(), m_proj_parm, lp_lat, 1);
+ }
+
+ static inline std::string get_name()
+ {
+ return "rhealpix_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_rhealpix_spheroid : public base_t_fi<base_rhealpix_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_healpix<CalculationType> m_proj_parm;
+
+ inline base_rhealpix_spheroid(const Parameters& par)
+ : base_t_fi<base_rhealpix_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_rhealpix_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ healpix_sphere(lp_lon, lp_lat, xy_x, xy_y);
+ combine_caps(xy_x, xy_y, this->m_proj_parm.north_square, this->m_proj_parm.south_square, 0);
+ }
+
+ // INVERSE(s_rhealpix_inverse) sphere
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ /* Check whether (x, y) lies in the rHEALPix image. */
+ if (in_image(xy_x, xy_y, 1, this->m_proj_parm.north_square, this->m_proj_parm.south_square) == 0) {
+ lp_lon = HUGE_VAL;
+ lp_lat = HUGE_VAL;
+ BOOST_THROW_EXCEPTION( projection_exception(-15) );
+ }
+ combine_caps(xy_x, xy_y, this->m_proj_parm.north_square, this->m_proj_parm.south_square, 1);
+ return healpix_sphere_inverse(xy_x, xy_y, lp_lon, lp_lat);
+ }
+
+ static inline std::string get_name()
+ {
+ return "rhealpix_spheroid";
+ }
+
+ };
+
+ // HEALPix
+ template <typename Parameters, typename T>
+ inline void setup_healpix(Parameters& par, par_healpix<T>& proj_parm)
+ {
+ if (par.es) {
+ pj_authset(par.es, proj_parm.apa); /* For auth_lat(). */
+ proj_parm.qp = pj_qsfn(1.0, par.e, par.one_es); /* For auth_lat(). */
+ par.a = par.a*sqrt(0.5*proj_parm.qp); /* Set par.a to authalic radius. */
+ par.ra = 1.0/par.a;
+ } else {
+ }
+ }
+
+ // rHEALPix
+ template <typename Parameters, typename T>
+ inline void setup_rhealpix(Parameters& par, par_healpix<T>& proj_parm)
+ {
+ proj_parm.north_square = pj_param(par.params,"inorth_square").i;
+ proj_parm.south_square = pj_param(par.params,"isouth_square").i;
+ /* Check for valid north_square and south_square inputs. */
+ if (proj_parm.north_square < 0 || proj_parm.north_square > 3) {
+ BOOST_THROW_EXCEPTION( projection_exception(-47) );
+ }
+ if (proj_parm.south_square < 0 || proj_parm.south_square > 3) {
+ BOOST_THROW_EXCEPTION( projection_exception(-47) );
+ }
+ if (par.es) {
+ pj_authset(par.es, proj_parm.apa); /* For auth_lat(). */
+ proj_parm.qp = pj_qsfn(1.0, par.e, par.one_es); /* For auth_lat(). */
+ par.a = par.a*sqrt(0.5*proj_parm.qp); /* Set par.a to authalic radius. */
+ par.ra = 1.0/par.a;
+ } else {
+ }
+ }
+
+ }} // namespace detail::healpix
+ #endif // doxygen
+
+ /*!
+ \brief HEALPix projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_healpix.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct healpix_ellipsoid : public detail::healpix::base_healpix_ellipsoid<CalculationType, Parameters>
+ {
+ inline healpix_ellipsoid(const Parameters& par) : detail::healpix::base_healpix_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::healpix::setup_healpix(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief HEALPix projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_healpix.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct healpix_spheroid : public detail::healpix::base_healpix_spheroid<CalculationType, Parameters>
+ {
+ inline healpix_spheroid(const Parameters& par) : detail::healpix::base_healpix_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::healpix::setup_healpix(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief rHEALPix projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - north_square (integer)
+ - south_square (integer)
+ \par Example
+ \image html ex_rhealpix.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct rhealpix_ellipsoid : public detail::healpix::base_rhealpix_ellipsoid<CalculationType, Parameters>
+ {
+ inline rhealpix_ellipsoid(const Parameters& par) : detail::healpix::base_rhealpix_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::healpix::setup_rhealpix(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief rHEALPix projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - north_square (integer)
+ - south_square (integer)
+ \par Example
+ \image html ex_rhealpix.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct rhealpix_spheroid : public detail::healpix::base_rhealpix_spheroid<CalculationType, Parameters>
+ {
+ inline rhealpix_spheroid(const Parameters& par) : detail::healpix::base_rhealpix_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::healpix::setup_rhealpix(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::healpix, healpix_spheroid, healpix_ellipsoid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::rhealpix, rhealpix_spheroid, rhealpix_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class healpix_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<healpix_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<healpix_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class rhealpix_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<rhealpix_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<rhealpix_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void healpix_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("healpix", new healpix_entry<CalculationType, Parameters>);
+ factory.add_to_factory("rhealpix", new rhealpix_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_HEALPIX_HPP
+
diff --git a/boost/geometry/srs/projections/proj/igh.hpp b/boost/geometry/srs/projections/proj/igh.hpp
new file mode 100644
index 0000000000..219f74239e
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/igh.hpp
@@ -0,0 +1,377 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IGH_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IGH_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/proj/gn_sinu.hpp>
+#include <boost/geometry/srs/projections/proj/moll.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct igh {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace igh
+ {
+
+ template <typename CalculationType, typename Parameters>
+ struct par_igh
+ {
+ boost::shared_ptr<base_v<CalculationType, Parameters> > pj[12];
+ CalculationType dy0;
+ };
+
+ template <typename T>
+ inline T d4044118() { return (T(40) + T(44)/T(60.) + T(11.8)/T(3600.)) * geometry::math::d2r<T>(); } // 40d 44' 11.8" [degrees]
+
+ template <typename T>
+ inline T d10() { return T(10) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d20() { return T(20) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d30() { return T(30) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d40() { return T(40) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d50() { return T(50) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d60() { return T(60) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d80() { return T(80) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d90() { return T(90) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d100() { return T(100) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d140() { return T(140) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d160() { return T(160) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T d180() { return T(180) * geometry::math::d2r<T>(); }
+
+ static const double EPSLN = 1.e-10; // allow a little 'slack' on zone edge positions
+
+ // Converted from #define SETUP(n, proj, x_0, y_0, lon_0)
+ template <template <typename, typename> class Entry, typename Parameters, typename CalculationType>
+ inline void do_setup(int n, Parameters const& par, par_igh<CalculationType, Parameters>& proj_parm,
+ CalculationType const& x_0, CalculationType const& y_0,
+ CalculationType const& lon_0)
+ {
+ Entry<CalculationType, Parameters> entry;
+ proj_parm.pj[n-1].reset(entry.create_new(par));
+ proj_parm.pj[n-1]->mutable_params().x0 = x_0;
+ proj_parm.pj[n-1]->mutable_params().y0 = y_0;
+ proj_parm.pj[n-1]->mutable_params().lam0 = lon_0;
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_igh_spheroid : public base_t_fi<base_igh_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_igh<CalculationType, Parameters> m_proj_parm;
+
+ inline base_igh_spheroid(const Parameters& par)
+ : base_t_fi<base_igh_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType d4044118 = igh::d4044118<CalculationType>();
+ static const CalculationType d20 = igh::d20<CalculationType>();
+ static const CalculationType d40 = igh::d40<CalculationType>();
+ static const CalculationType d80 = igh::d80<CalculationType>();
+ static const CalculationType d100 = igh::d100<CalculationType>();
+
+ int z;
+ if (lp_lat >= d4044118) { // 1|2
+ z = (lp_lon <= -d40 ? 1: 2);
+ }
+ else if (lp_lat >= 0) { // 3|4
+ z = (lp_lon <= -d40 ? 3: 4);
+ }
+ else if (lp_lat >= -d4044118) { // 5|6|7|8
+ if (lp_lon <= -d100) z = 5; // 5
+ else if (lp_lon <= -d20) z = 6; // 6
+ else if (lp_lon <= d80) z = 7; // 7
+ else z = 8; // 8
+ }
+ else { // 9|10|11|12
+ if (lp_lon <= -d100) z = 9; // 9
+ else if (lp_lon <= -d20) z = 10; // 10
+ else if (lp_lon <= d80) z = 11; // 11
+ else z = 12; // 12
+ }
+
+ lp_lon -= this->m_proj_parm.pj[z-1]->params().lam0;
+ this->m_proj_parm.pj[z-1]->fwd(lp_lon, lp_lat, xy_x, xy_y);
+ xy_x += this->m_proj_parm.pj[z-1]->params().x0;
+ xy_y += this->m_proj_parm.pj[z-1]->params().y0;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType d4044118 = igh::d4044118<CalculationType>();
+ static const CalculationType d10 = igh::d10<CalculationType>();
+ static const CalculationType d20 = igh::d20<CalculationType>();
+ static const CalculationType d40 = igh::d40<CalculationType>();
+ static const CalculationType d50 = igh::d50<CalculationType>();
+ static const CalculationType d60 = igh::d60<CalculationType>();
+ static const CalculationType d80 = igh::d80<CalculationType>();
+ static const CalculationType d90 = igh::d90<CalculationType>();
+ static const CalculationType d100 = igh::d100<CalculationType>();
+ static const CalculationType d160 = igh::d160<CalculationType>();
+ static const CalculationType d180 = igh::d180<CalculationType>();
+
+ static const CalculationType c2 = 2.0;
+
+ const CalculationType y90 = this->m_proj_parm.dy0 + sqrt(c2); // lt=90 corresponds to y=y0+sqrt(2.0)
+
+ int z = 0;
+ if (xy_y > y90+EPSLN || xy_y < -y90+EPSLN) // 0
+ z = 0;
+ else if (xy_y >= d4044118) // 1|2
+ z = (xy_x <= -d40? 1: 2);
+ else if (xy_y >= 0) // 3|4
+ z = (xy_x <= -d40? 3: 4);
+ else if (xy_y >= -d4044118) { // 5|6|7|8
+ if (xy_x <= -d100) z = 5; // 5
+ else if (xy_x <= -d20) z = 6; // 6
+ else if (xy_x <= d80) z = 7; // 7
+ else z = 8; // 8
+ }
+ else { // 9|10|11|12
+ if (xy_x <= -d100) z = 9; // 9
+ else if (xy_x <= -d20) z = 10; // 10
+ else if (xy_x <= d80) z = 11; // 11
+ else z = 12; // 12
+ }
+
+ if (z)
+ {
+ int ok = 0;
+
+ xy_x -= this->m_proj_parm.pj[z-1]->params().x0;
+ xy_y -= this->m_proj_parm.pj[z-1]->params().y0;
+ this->m_proj_parm.pj[z-1]->inv(xy_x, xy_y, lp_lon, lp_lat);
+ lp_lon += this->m_proj_parm.pj[z-1]->params().lam0;
+
+ switch (z) {
+ case 1: ok = (lp_lon >= -d180-EPSLN && lp_lon <= -d40+EPSLN) ||
+ ((lp_lon >= -d40-EPSLN && lp_lon <= -d10+EPSLN) &&
+ (lp_lat >= d60-EPSLN && lp_lat <= d90+EPSLN)); break;
+ case 2: ok = (lp_lon >= -d40-EPSLN && lp_lon <= d180+EPSLN) ||
+ ((lp_lon >= -d180-EPSLN && lp_lon <= -d160+EPSLN) &&
+ (lp_lat >= d50-EPSLN && lp_lat <= d90+EPSLN)) ||
+ ((lp_lon >= -d50-EPSLN && lp_lon <= -d40+EPSLN) &&
+ (lp_lat >= d60-EPSLN && lp_lat <= d90+EPSLN)); break;
+ case 3: ok = (lp_lon >= -d180-EPSLN && lp_lon <= -d40+EPSLN); break;
+ case 4: ok = (lp_lon >= -d40-EPSLN && lp_lon <= d180+EPSLN); break;
+ case 5: ok = (lp_lon >= -d180-EPSLN && lp_lon <= -d100+EPSLN); break;
+ case 6: ok = (lp_lon >= -d100-EPSLN && lp_lon <= -d20+EPSLN); break;
+ case 7: ok = (lp_lon >= -d20-EPSLN && lp_lon <= d80+EPSLN); break;
+ case 8: ok = (lp_lon >= d80-EPSLN && lp_lon <= d180+EPSLN); break;
+ case 9: ok = (lp_lon >= -d180-EPSLN && lp_lon <= -d100+EPSLN); break;
+ case 10: ok = (lp_lon >= -d100-EPSLN && lp_lon <= -d20+EPSLN); break;
+ case 11: ok = (lp_lon >= -d20-EPSLN && lp_lon <= d80+EPSLN); break;
+ case 12: ok = (lp_lon >= d80-EPSLN && lp_lon <= d180+EPSLN); break;
+ }
+
+ z = (!ok? 0: z); // projectable?
+ }
+ // if (!z) pj_errno = -15; // invalid x or y
+ if (!z) lp_lon = HUGE_VAL;
+ if (!z) lp_lat = HUGE_VAL;
+ }
+
+ static inline std::string get_name()
+ {
+ return "igh_spheroid";
+ }
+
+ };
+
+ // Interrupted Goode Homolosine
+ template <typename CalculationType, typename Parameters>
+ inline void setup_igh(Parameters& par, par_igh<CalculationType, Parameters>& proj_parm)
+ {
+ static const CalculationType d0 = 0;
+ static const CalculationType d4044118 = igh::d4044118<CalculationType>();
+ static const CalculationType d20 = igh::d20<CalculationType>();
+ static const CalculationType d30 = igh::d30<CalculationType>();
+ static const CalculationType d60 = igh::d60<CalculationType>();
+ static const CalculationType d100 = igh::d100<CalculationType>();
+ static const CalculationType d140 = igh::d140<CalculationType>();
+ static const CalculationType d160 = igh::d160<CalculationType>();
+
+ /*
+ Zones:
+
+ -180 -40 180
+ +--------------+-------------------------+ Zones 1,2,9,10,11 & 12:
+ |1 |2 | Mollweide projection
+ | | |
+ +--------------+-------------------------+ Zones 3,4,5,6,7 & 8:
+ |3 |4 | Sinusoidal projection
+ | | |
+ 0 +-------+------+-+-----------+-----------+
+ |5 |6 |7 |8 |
+ | | | | |
+ +-------+--------+-----------+-----------+
+ |9 |10 |11 |12 |
+ | | | | |
+ +-------+--------+-----------+-----------+
+ -180 -100 -20 80 180
+ */
+
+
+ CalculationType lp_lam = 0, lp_phi = d4044118;
+ CalculationType xy1_x, xy1_y;
+ CalculationType xy3_x, xy3_y;
+
+ // sinusoidal zones
+ do_setup<sinu_entry>(3, par, proj_parm, -d100, d0, -d100);
+ do_setup<sinu_entry>(4, par, proj_parm, d30, d0, d30);
+ do_setup<sinu_entry>(5, par, proj_parm, -d160, d0, -d160);
+ do_setup<sinu_entry>(6, par, proj_parm, -d60, d0, -d60);
+ do_setup<sinu_entry>(7, par, proj_parm, d20, d0, d20);
+ do_setup<sinu_entry>(8, par, proj_parm, d140, d0, d140);
+
+ // mollweide zones
+ do_setup<moll_entry>(1, par, proj_parm, -d100, d0, -d100);
+
+ // y0 ?
+ proj_parm.pj[0]->fwd(lp_lam, lp_phi, xy1_x, xy1_y); // zone 1
+ proj_parm.pj[2]->fwd(lp_lam, lp_phi, xy3_x, xy3_y); // zone 3
+ // y0 + xy1_y = xy3_y for lt = 40d44'11.8"
+ proj_parm.dy0 = xy3_y - xy1_y;
+
+ proj_parm.pj[0]->mutable_params().y0 = proj_parm.dy0;
+
+ // mollweide zones (cont'd)
+ do_setup<moll_entry>( 2, par, proj_parm, d30, proj_parm.dy0, d30);
+ do_setup<moll_entry>( 9, par, proj_parm, -d160, -proj_parm.dy0, -d160);
+ do_setup<moll_entry>(10, par, proj_parm, -d60, -proj_parm.dy0, -d60);
+ do_setup<moll_entry>(11, par, proj_parm, d20, -proj_parm.dy0, d20);
+ do_setup<moll_entry>(12, par, proj_parm, d140, -proj_parm.dy0, d140);
+
+ par.es = 0.;
+ }
+
+ }} // namespace detail::igh
+ #endif // doxygen
+
+ /*!
+ \brief Interrupted Goode Homolosine projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_igh.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct igh_spheroid : public detail::igh::base_igh_spheroid<CalculationType, Parameters>
+ {
+ inline igh_spheroid(const Parameters& par) : detail::igh::base_igh_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::igh::setup_igh(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::igh, igh_spheroid, igh_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class igh_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<igh_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void igh_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("igh", new igh_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IGH_HPP
+
diff --git a/boost/geometry/srs/projections/proj/imw_p.hpp b/boost/geometry/srs/projections/proj/imw_p.hpp
new file mode 100644
index 0000000000..1a7fe9e915
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/imw_p.hpp
@@ -0,0 +1,320 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_IMW_P_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_IMW_P_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct imw_p {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace imw_p
+ {
+
+ static const double TOL = 1e-10;
+ static const double EPS = 1e-10;
+
+ template <typename T>
+ struct XY { T x, y; }; // specific for IMW_P
+
+ template <typename T>
+ struct par_imw_p
+ {
+ T P, Pp, Q, Qp, R_1, R_2, sphi_1, sphi_2, C2;
+ T phi_1, phi_2, lam_1;
+ T en[EN_SIZE];
+ int mode; /* = 0, phi_1 and phi_2 != 0, = 1, phi_1 = 0, = -1 phi_2 = 0 */
+ };
+
+ template <typename Parameters, typename T>
+ inline int
+ phi12(Parameters& par, par_imw_p<T>& proj_parm, T *del, T *sig)
+ {
+ int err = 0;
+
+ if (!pj_param(par.params, "tlat_1").i ||
+ !pj_param(par.params, "tlat_2").i) {
+ err = -41;
+ } else {
+ proj_parm.phi_1 = pj_param(par.params, "rlat_1").f;
+ proj_parm.phi_2 = pj_param(par.params, "rlat_2").f;
+ *del = 0.5 * (proj_parm.phi_2 - proj_parm.phi_1);
+ *sig = 0.5 * (proj_parm.phi_2 + proj_parm.phi_1);
+ err = (fabs(*del) < EPS || fabs(*sig) < EPS) ? -42 : 0;
+ }
+ return err;
+ }
+ template <typename Parameters, typename T>
+ inline XY<T>
+ loc_for(T const& lp_lam, T const& lp_phi, Parameters const& par, par_imw_p<T> const& proj_parm, T *yc)
+ {
+ XY<T> xy;
+
+ if (! lp_phi) {
+ xy.x = lp_lam;
+ xy.y = 0.;
+ } else {
+ T xa, ya, xb, yb, xc, D, B, m, sp, t, R, C;
+
+ sp = sin(lp_phi);
+ m = pj_mlfn(lp_phi, sp, cos(lp_phi), proj_parm.en);
+ xa = proj_parm.Pp + proj_parm.Qp * m;
+ ya = proj_parm.P + proj_parm.Q * m;
+ R = 1. / (tan(lp_phi) * sqrt(1. - par.es * sp * sp));
+ C = sqrt(R * R - xa * xa);
+ if (lp_phi < 0.) C = - C;
+ C += ya - R;
+ if (proj_parm.mode < 0) {
+ xb = lp_lam;
+ yb = proj_parm.C2;
+ } else {
+ t = lp_lam * proj_parm.sphi_2;
+ xb = proj_parm.R_2 * sin(t);
+ yb = proj_parm.C2 + proj_parm.R_2 * (1. - cos(t));
+ }
+ if (proj_parm.mode > 0) {
+ xc = lp_lam;
+ *yc = 0.;
+ } else {
+ t = lp_lam * proj_parm.sphi_1;
+ xc = proj_parm.R_1 * sin(t);
+ *yc = proj_parm.R_1 * (1. - cos(t));
+ }
+ D = (xb - xc)/(yb - *yc);
+ B = xc + D * (C + R - *yc);
+ xy.x = D * sqrt(R * R * (1 + D * D) - B * B);
+ if (lp_phi > 0)
+ xy.x = - xy.x;
+ xy.x = (B + xy.x) / (1. + D * D);
+ xy.y = sqrt(R * R - xy.x * xy.x);
+ if (lp_phi > 0)
+ xy.y = - xy.y;
+ xy.y += C + R;
+ }
+ return (xy);
+ }
+ template <typename Parameters, typename T>
+ inline void
+ xy(Parameters const& par, par_imw_p<T> const& proj_parm, T const& phi, T *x, T *y, T *sp, T *R)
+ {
+ T F;
+
+ *sp = sin(phi);
+ *R = 1./(tan(phi) * sqrt(1. - par.es * *sp * *sp ));
+ F = proj_parm.lam_1 * *sp;
+ *y = *R * (1 - cos(F));
+ *x = *R * sin(F);
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_imw_p_ellipsoid : public base_t_fi<base_imw_p_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_imw_p<CalculationType> m_proj_parm;
+
+ inline base_imw_p_ellipsoid(const Parameters& par)
+ : base_t_fi<base_imw_p_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType yc = 0;
+ XY<CalculationType> xy = loc_for(lp_lon, lp_lat, this->m_par, m_proj_parm, &yc);
+ xy_x = xy.x; xy_y = xy.y;
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ XY<CalculationType> t;
+ CalculationType yc = 0;
+
+ lp_lat = this->m_proj_parm.phi_2;
+ lp_lon = xy_x / cos(lp_lat);
+ do {
+ t = loc_for(lp_lon, lp_lat, this->m_par, m_proj_parm, &yc);
+ lp_lat = ((lp_lat - this->m_proj_parm.phi_1) * (xy_y - yc) / (t.y - yc)) + this->m_proj_parm.phi_1;
+ lp_lon = lp_lon * xy_x / t.x;
+ } while (fabs(t.x - xy_x) > TOL || fabs(t.y - xy_y) > TOL);
+ }
+
+ static inline std::string get_name()
+ {
+ return "imw_p_ellipsoid";
+ }
+
+ };
+
+ // International Map of the World Polyconic
+ template <typename Parameters, typename T>
+ inline void setup_imw_p(Parameters& par, par_imw_p<T>& proj_parm)
+ {
+ T del, sig, s, t, x1, x2, T2, y1, m1, m2, y2;
+ int i;
+
+ if (!pj_enfn(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ if( (i = phi12(par, proj_parm, &del, &sig)) != 0)
+ BOOST_THROW_EXCEPTION( projection_exception(i) );
+ if (proj_parm.phi_2 < proj_parm.phi_1) { /* make sure proj_parm.phi_1 most southerly */
+ del = proj_parm.phi_1;
+ proj_parm.phi_1 = proj_parm.phi_2;
+ proj_parm.phi_2 = del;
+ }
+ if (pj_param(par.params, "tlon_1").i)
+ proj_parm.lam_1 = pj_param(par.params, "rlon_1").f;
+ else { /* use predefined based upon latitude */
+ sig = fabs(sig * geometry::math::r2d<T>());
+ if (sig <= 60) sig = 2.;
+ else if (sig <= 76) sig = 4.;
+ else sig = 8.;
+ proj_parm.lam_1 = sig * geometry::math::d2r<T>();
+ }
+ proj_parm.mode = 0;
+ if (proj_parm.phi_1) xy(par, proj_parm, proj_parm.phi_1, &x1, &y1, &proj_parm.sphi_1, &proj_parm.R_1);
+ else {
+ proj_parm.mode = 1;
+ y1 = 0.;
+ x1 = proj_parm.lam_1;
+ }
+ if (proj_parm.phi_2) xy(par, proj_parm, proj_parm.phi_2, &x2, &T2, &proj_parm.sphi_2, &proj_parm.R_2);
+ else {
+ proj_parm.mode = -1;
+ T2 = 0.;
+ x2 = proj_parm.lam_1;
+ }
+ m1 = pj_mlfn(proj_parm.phi_1, proj_parm.sphi_1, cos(proj_parm.phi_1), proj_parm.en);
+ m2 = pj_mlfn(proj_parm.phi_2, proj_parm.sphi_2, cos(proj_parm.phi_2), proj_parm.en);
+ t = m2 - m1;
+ s = x2 - x1;
+ y2 = sqrt(t * t - s * s) + y1;
+ proj_parm.C2 = y2 - T2;
+ t = 1. / t;
+ proj_parm.P = (m2 * y1 - m1 * y2) * t;
+ proj_parm.Q = (y2 - y1) * t;
+ proj_parm.Pp = (m2 * x1 - m1 * x2) * t;
+ proj_parm.Qp = (x2 - x1) * t;
+ }
+
+ }} // namespace detail::imw_p
+ #endif // doxygen
+
+ /*!
+ \brief International Map of the World Polyconic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Mod. Polyconic
+ - Ellipsoid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel
+ - lat_2: Latitude of second standard parallel
+ - lon_1 (degrees)
+ \par Example
+ \image html ex_imw_p.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct imw_p_ellipsoid : public detail::imw_p::base_imw_p_ellipsoid<CalculationType, Parameters>
+ {
+ inline imw_p_ellipsoid(const Parameters& par) : detail::imw_p::base_imw_p_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::imw_p::setup_imw_p(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::imw_p, imw_p_ellipsoid, imw_p_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class imw_p_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<imw_p_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void imw_p_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("imw_p", new imw_p_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_IMW_P_HPP
+
diff --git a/boost/geometry/srs/projections/proj/isea.hpp b/boost/geometry/srs/projections/proj/isea.hpp
new file mode 100644
index 0000000000..4cffbc430f
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/isea.hpp
@@ -0,0 +1,1311 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ISEA_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ISEA_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// This code was entirely written by Nathan Wagner
+// and is in the public domain.
+
+// 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 <sstream>
+
+#include <boost/core/ignore_unused.hpp>
+#include <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct isea {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace isea
+ {
+
+ static const double E = 52.62263186;
+ static const double F = 10.81231696;
+ //static const double DEG60 = 1.04719755119659774614;
+ //static const double DEG120 = 2.09439510239319549229;
+ //static const double DEG72 = 1.25663706143591729537;
+ //static const double DEG90 = 1.57079632679489661922;
+ //static const double DEG144 = 2.51327412287183459075;
+ //static const double DEG36 = 0.62831853071795864768;
+ //static const double DEG108 = 1.88495559215387594306;
+ //static const double DEG180 = geometry::math::pi<double>();
+ static const double ISEA_SCALE = 0.8301572857837594396028083;
+ static const double V_LAT = 0.46364760899944494524;
+ static const double E_RAD = 0.91843818702186776133;
+ static const double F_RAD = 0.18871053072122403508;
+ static const double TABLE_G = 0.6615845383;
+ static const double TABLE_H = 0.1909830056;
+ static const double RPRIME = 0.91038328153090290025;
+ static const double PRECISION = 0.0000000000005;
+ static const double ISEA_STD_LAT = 1.01722196792335072101;
+ static const double ISEA_STD_LON = .19634954084936207740;
+
+ template <typename T>
+ inline T DEG30() { return T(30) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T DEG60() { return T(60) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T DEG120() { return T(120) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T DEG72() { return T(72) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T DEG90() { return geometry::math::half_pi<T>(); }
+ template <typename T>
+ inline T DEG144() { return T(144) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T DEG36() { return T(36) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T DEG108() { return T(108) * geometry::math::d2r<T>(); }
+ template <typename T>
+ inline T DEG180() { return geometry::math::pi<T>(); }
+
+ inline bool DOWNTRI(int tri) { return (((tri - 1) / 5) % 2 == 1); }
+
+ /*
+ * Proj 4 provides its own entry points into
+ * the code, so none of the library functions
+ * need to be global
+ */
+
+ struct hex {
+ int iso;
+ int x, y, z;
+ };
+
+ /* y *must* be positive down as the xy /iso conversion assumes this */
+ inline
+ int hex_xy(struct hex *h) {
+ if (!h->iso) return 1;
+ if (h->x >= 0) {
+ h->y = -h->y - (h->x+1)/2;
+ } else {
+ /* need to round toward -inf, not toward zero, so x-1 */
+ h->y = -h->y - h->x/2;
+ }
+ h->iso = 0;
+
+ return 1;
+ }
+
+ inline
+ int hex_iso(struct hex *h) {
+ if (h->iso) return 1;
+
+ if (h->x >= 0) {
+ h->y = (-h->y - (h->x+1)/2);
+ } else {
+ /* need to round toward -inf, not toward zero, so x-1 */
+ h->y = (-h->y - (h->x)/2);
+ }
+
+ h->z = -h->x - h->y;
+ h->iso = 1;
+ return 1;
+ }
+
+ template <typename T>
+ inline
+ int hexbin2(T const& width, T x, T y,
+ int *i, int *j) {
+ T z, rx, ry, rz;
+ T abs_dx, abs_dy, abs_dz;
+ int ix, iy, iz, s;
+ struct hex h;
+
+ x = x / cos(DEG30<T>()); /* rotated X coord */
+ y = y - x / 2.0; /* adjustment for rotated X */
+
+ /* adjust for actual hexwidth */
+ x /= width;
+ y /= width;
+
+ z = -x - y;
+
+ rx = floor(x + 0.5);
+ ix = (int)rx;
+ ry = floor(y + 0.5);
+ iy = (int)ry;
+ rz = floor(z + 0.5);
+ iz = (int)rz;
+
+ s = ix + iy + iz;
+
+ if (s) {
+ abs_dx = fabs(rx - x);
+ abs_dy = fabs(ry - y);
+ abs_dz = fabs(rz - z);
+
+ if (abs_dx >= abs_dy && abs_dx >= abs_dz) {
+ ix -= s;
+ } else if (abs_dy >= abs_dx && abs_dy >= abs_dz) {
+ iy -= s;
+ } else {
+ iz -= s;
+ }
+ }
+ h.x = ix;
+ h.y = iy;
+ h.z = iz;
+ h.iso = 1;
+
+ hex_xy(&h);
+ *i = h.x;
+ *j = h.y;
+ return ix * 100 + iy;
+ }
+
+ enum isea_poly { ISEA_NONE, ISEA_ICOSAHEDRON = 20 };
+ enum isea_topology { ISEA_HEXAGON=6, ISEA_TRIANGLE=3, ISEA_DIAMOND=4 };
+ enum isea_address_form { ISEA_GEO, ISEA_Q2DI, ISEA_SEQNUM, ISEA_INTERLEAVE,
+ ISEA_PLANE, ISEA_Q2DD, ISEA_PROJTRI, ISEA_VERTEX2DD, ISEA_HEX
+ };
+
+ template <typename T>
+ struct isea_dgg {
+ int polyhedron; /* ignored, icosahedron */
+ T o_lat, o_lon, o_az; /* orientation, radians */
+ int pole; /* true if standard snyder */
+ int topology; /* ignored, hexagon */
+ int aperture; /* valid values depend on partitioning method */
+ int resolution;
+ T radius; /* radius of the earth in meters, ignored 1.0 */
+ int output; /* an isea_address_form */
+ int triangle; /* triangle of last transformed point */
+ int quad; /* quad of last transformed point */
+ unsigned long serial;
+ };
+
+ template <typename T>
+ struct isea_pt {
+ T x, y;
+ };
+
+ template <typename T>
+ struct isea_geo {
+ T lon, lat;
+ };
+
+ template <typename T>
+ struct isea_address {
+ int type; /* enum isea_address_form */
+ int number;
+ T x,y; /* or i,j or lon,lat depending on type */
+ };
+
+ /* ENDINC */
+
+ enum snyder_polyhedron {
+ SNYDER_POLY_HEXAGON, SNYDER_POLY_PENTAGON,
+ SNYDER_POLY_TETRAHEDRON, SNYDER_POLY_CUBE,
+ SNYDER_POLY_OCTAHEDRON, SNYDER_POLY_DODECAHEDRON,
+ SNYDER_POLY_ICOSAHEDRON
+ };
+
+ template <typename T>
+ struct snyder_constants {
+ T g, G, theta, ea_w, ea_a, ea_b, g_w, g_a, g_b;
+ };
+
+ template <typename T>
+ inline const snyder_constants<T> * constants()
+ {
+ /* TODO put these in radians to avoid a later conversion */
+ static snyder_constants<T> result[] = {
+ {23.80018260, 62.15458023, 60.0, 3.75, 1.033, 0.968, 5.09, 1.195, 1.0},
+ {20.07675127, 55.69063953, 54.0, 2.65, 1.030, 0.983, 3.59, 1.141, 1.027},
+ {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
+ {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
+ {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
+ {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
+ {37.37736814, 36.0, 30.0, 17.27, 1.163, 0.860, 13.14, 1.584, 1.0}
+ };
+ return result;
+ }
+
+
+ /* sqrt(5)/M_PI */
+
+ /* 26.565051177 degrees */
+
+
+ template <typename T>
+ inline const isea_geo<T> * vertex()
+ {
+ static isea_geo<T> result[] = {
+ {0.0, DEG90<T>()},
+ {DEG180<T>(), V_LAT},
+ {-DEG108<T>(), V_LAT},
+ {-DEG36<T>(), V_LAT},
+ {DEG36<T>(), V_LAT},
+ {DEG108<T>(), V_LAT},
+ {-DEG144<T>(), -V_LAT},
+ {-DEG72<T>(), -V_LAT},
+ {0.0, -V_LAT},
+ {DEG72<T>(), -V_LAT},
+ {DEG144<T>(), -V_LAT},
+ {0.0, -DEG90<T>()}
+ };
+ return result;
+ }
+
+ /* TODO make an isea_pt array of the vertices as well */
+
+ static int tri_v1[] = {0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 10, 2, 3, 4, 5, 1, 11, 11, 11, 11, 11};
+
+ /* 52.62263186 */
+
+ /* 10.81231696 */
+
+ /* triangle Centers */
+ template <typename T>
+ inline const isea_geo<T> * icostriangles()
+ {
+ static isea_geo<T> result[] = {
+ {0.0, 0.0},
+ {-DEG144<T>(), E_RAD},
+ {-DEG72<T>(), E_RAD},
+ {0.0, E_RAD},
+ {DEG72<T>(), E_RAD},
+ {DEG144<T>(), E_RAD},
+ {-DEG144<T>(), F_RAD},
+ {-DEG72<T>(), F_RAD},
+ {0.0, F_RAD},
+ {DEG72<T>(), F_RAD},
+ {DEG144<T>(), F_RAD},
+ {-DEG108<T>(), -F_RAD},
+ {-DEG36<T>(), -F_RAD},
+ {DEG36<T>(), -F_RAD},
+ {DEG108<T>(), -F_RAD},
+ {DEG180<T>(), -F_RAD},
+ {-DEG108<T>(), -E_RAD},
+ {-DEG36<T>(), -E_RAD},
+ {DEG36<T>(), -E_RAD},
+ {DEG108<T>(), -E_RAD},
+ {DEG180<T>(), -E_RAD},
+ };
+ return result;
+ }
+
+ template <typename T>
+ inline T az_adjustment(int triangle)
+ {
+ T adj;
+
+ isea_geo<T> v;
+ isea_geo<T> c;
+
+ v = vertex<T>()[tri_v1[triangle]];
+ c = icostriangles<T>()[triangle];
+
+ /* TODO looks like the adjustment is always either 0 or 180 */
+ /* at least if you pick your vertex carefully */
+ adj = atan2(cos(v.lat) * sin(v.lon - c.lon),
+ cos(c.lat) * sin(v.lat)
+ - sin(c.lat) * cos(v.lat) * cos(v.lon - c.lon));
+ return adj;
+ }
+
+ /* R tan(g) sin(60) */
+
+ /* H = 0.25 R tan g = */
+
+
+ template <typename T>
+ inline isea_pt<T> isea_triangle_xy(int triangle)
+ {
+ isea_pt<T> c;
+ T Rprime = 0.91038328153090290025;
+
+ triangle = (triangle - 1) % 20;
+
+ c.x = TABLE_G * ((triangle % 5) - 2) * 2.0;
+ if (triangle > 9) {
+ c.x += TABLE_G;
+ }
+ switch (triangle / 5) {
+ case 0:
+ c.y = 5.0 * TABLE_H;
+ break;
+ case 1:
+ c.y = TABLE_H;
+ break;
+ case 2:
+ c.y = -TABLE_H;
+ break;
+ case 3:
+ c.y = -5.0 * TABLE_H;
+ break;
+ default:
+ /* should be impossible */
+ BOOST_THROW_EXCEPTION( projection_exception() );
+ };
+ c.x *= Rprime;
+ c.y *= Rprime;
+
+ return c;
+ }
+
+ /* snyder eq 14 */
+ template <typename T>
+ inline T sph_azimuth(T const& f_lon, T const& f_lat, T const& t_lon, T const& t_lat)
+ {
+ T az;
+
+ az = atan2(cos(t_lat) * sin(t_lon - f_lon),
+ cos(f_lat) * sin(t_lat)
+ - sin(f_lat) * cos(t_lat) * cos(t_lon - f_lon)
+ );
+ return az;
+ }
+
+ /* coord needs to be in radians */
+ template <typename T>
+ inline int isea_snyder_forward(isea_geo<T> * ll, isea_pt<T> * out)
+ {
+ int i;
+
+ /*
+ * spherical distance from center of polygon face to any of its
+ * vertexes on the globe
+ */
+ T g;
+
+ /*
+ * spherical angle between radius vector to center and adjacent edge
+ * of spherical polygon on the globe
+ */
+ T G;
+
+ /*
+ * plane angle between radius vector to center and adjacent edge of
+ * plane polygon
+ */
+ T theta;
+
+ /* additional variables from snyder */
+ T q, Rprime, H, Ag, Azprime, Az, dprime, f, rho,
+ x, y;
+
+ /* variables used to store intermediate results */
+ T cot_theta, tan_g, az_offset;
+
+ /* how many multiples of 60 degrees we adjust the azimuth */
+ int Az_adjust_multiples;
+
+ snyder_constants<T> c;
+
+ /*
+ * TODO by locality of reference, start by trying the same triangle
+ * as last time
+ */
+
+ /* TODO put these constants in as radians to begin with */
+ c = constants<T>()[SNYDER_POLY_ICOSAHEDRON];
+ theta = c.theta * geometry::math::d2r<T>();
+ g = c.g * geometry::math::d2r<T>();
+ G = c.G * geometry::math::d2r<T>();
+
+ for (i = 1; i <= 20; i++) {
+ T z;
+ isea_geo<T> center;
+
+ center = icostriangles<T>()[i];
+
+ /* step 1 */
+ #if 0
+ z = sph_distance(center.lon, center.lat, ll->lon, ll->lat);
+ #else
+ z = acos(sin(center.lat) * sin(ll->lat)
+ + cos(center.lat) * cos(ll->lat) * cos(ll->lon - center.lon));
+ #endif
+
+ /* not on this triangle */
+ if (z > g + 0.000005) { /* TODO DBL_EPSILON */
+ continue;
+ }
+ Az = sph_azimuth(ll->lon, ll->lat, center.lon, center.lat);
+
+ Az = atan2(cos(ll->lat) * sin(ll->lon - center.lon),
+ cos(center.lat) * sin(ll->lat)
+ - sin(center.lat) * cos(ll->lat) * cos(ll->lon - center.lon)
+ );
+
+ /* step 2 */
+
+ /* This calculates "some" vertex coordinate */
+ az_offset = az_adjustment<T>(i);
+
+ Az -= az_offset;
+
+ /* TODO I don't know why we do this. It's not in snyder */
+ /* maybe because we should have picked a better vertex */
+ if (Az < 0.0) {
+ Az += geometry::math::two_pi<T>();
+ }
+ /*
+ * adjust Az for the point to fall within the range of 0 to
+ * 2(90 - theta) or 60 degrees for the hexagon, by
+ * and therefore 120 degrees for the triangle
+ * of the icosahedron
+ * subtracting or adding multiples of 60 degrees to Az and
+ * recording the amount of adjustment
+ */
+
+ Az_adjust_multiples = 0;
+ while (Az < 0.0) {
+ Az += DEG120<T>();
+ Az_adjust_multiples--;
+ }
+ while (Az > DEG120<T>() + DBL_EPSILON) {
+ Az -= DEG120<T>();
+ Az_adjust_multiples++;
+ }
+
+ /* step 3 */
+ cot_theta = 1.0 / tan(theta);
+ tan_g = tan(g); /* TODO this is a constant */
+
+ /* Calculate q from eq 9. */
+ /* TODO cot_theta is cot(30) */
+ q = atan2(tan_g, cos(Az) + sin(Az) * cot_theta);
+
+ /* not in this triangle */
+ if (z > q + 0.000005) {
+ continue;
+ }
+ /* step 4 */
+
+ /* Apply equations 5-8 and 10-12 in order */
+
+ /* eq 5 */
+ /* Rprime = 0.9449322893 * R; */
+ /* R' in the paper is for the truncated */
+ Rprime = 0.91038328153090290025;
+
+ /* eq 6 */
+ H = acos(sin(Az) * sin(G) * cos(g) - cos(Az) * cos(G));
+
+ /* eq 7 */
+ /* Ag = (Az + G + H - DEG180) * M_PI * R * R / DEG180; */
+ Ag = Az + G + H - DEG180<T>();
+
+ /* eq 8 */
+ Azprime = atan2(2.0 * Ag, Rprime * Rprime * tan_g * tan_g - 2.0 * Ag * cot_theta);
+
+ /* eq 10 */
+ /* cot(theta) = 1.73205080756887729355 */
+ dprime = Rprime * tan_g / (cos(Azprime) + sin(Azprime) * cot_theta);
+
+ /* eq 11 */
+ f = dprime / (2.0 * Rprime * sin(q / 2.0));
+
+ /* eq 12 */
+ rho = 2.0 * Rprime * f * sin(z / 2.0);
+
+ /*
+ * add back the same 60 degree multiple adjustment from step
+ * 2 to Azprime
+ */
+
+ Azprime += DEG120<T>() * Az_adjust_multiples;
+
+ /* calculate rectangular coordinates */
+
+ x = rho * sin(Azprime);
+ y = rho * cos(Azprime);
+
+ /*
+ * TODO
+ * translate coordinates to the origin for the particular
+ * hexagon on the flattened polyhedral map plot
+ */
+
+ out->x = x;
+ out->y = y;
+
+ return i;
+ }
+
+ /*
+ * should be impossible, this implies that the coordinate is not on
+ * any triangle
+ */
+
+ //fprintf(stderr, "impossible transform: %f %f is not on any triangle\n",
+ // ll->lon * geometry::math::r2d<double>(), ll->lat * geometry::math::r2d<double>());
+ std::stringstream ss;
+ ss << "impossible transform: " << ll->lon * geometry::math::r2d<T>()
+ << " " << ll->lat * geometry::math::r2d<T>() << " is not on any triangle.";
+
+ BOOST_THROW_EXCEPTION( projection_exception(ss.str()) );
+
+ /* not reached */
+ return 0; /* supresses a warning */
+ }
+
+ /*
+ * return the new coordinates of any point in orginal coordinate system.
+ * Define a point (newNPold) in orginal coordinate system as the North Pole in
+ * new coordinate system, and the great circle connect the original and new
+ * North Pole as the lon0 longitude in new coordinate system, given any point
+ * in orginal coordinate system, this function return the new coordinates.
+ */
+
+
+ /* formula from Snyder, Map Projections: A working manual, p31 */
+ /*
+ * old north pole at np in new coordinates
+ * could be simplified a bit with fewer intermediates
+ *
+ * TODO take a result pointer
+ */
+ template <typename T>
+ inline isea_geo<T> snyder_ctran(isea_geo<T> * np, isea_geo<T> * pt)
+ {
+ isea_geo<T> npt;
+ T alpha, phi, lambda, lambda0, beta, lambdap, phip;
+ T sin_phip;
+ T lp_b; /* lambda prime minus beta */
+ T cos_p, sin_a;
+
+ phi = pt->lat;
+ lambda = pt->lon;
+ alpha = np->lat;
+ beta = np->lon;
+ lambda0 = beta;
+
+ cos_p = cos(phi);
+ sin_a = sin(alpha);
+
+ /* mpawm 5-7 */
+ sin_phip = sin_a * sin(phi) - cos(alpha) * cos_p * cos(lambda - lambda0);
+
+ /* mpawm 5-8b */
+
+ /* use the two argument form so we end up in the right quadrant */
+ lp_b = atan2(cos_p * sin(lambda - lambda0),
+ (sin_a * cos_p * cos(lambda - lambda0) + cos(alpha) * sin(phi)));
+
+ lambdap = lp_b + beta;
+
+ /* normalize longitude */
+ /* TODO can we just do a modulus ? */
+ lambdap = fmod(lambdap, geometry::math::two_pi<T>());
+ while (lambdap > geometry::math::pi<T>())
+ lambdap -= geometry::math::two_pi<T>();
+ while (lambdap < -geometry::math::pi<T>())
+ lambdap += geometry::math::two_pi<T>();
+
+ phip = asin(sin_phip);
+
+ npt.lat = phip;
+ npt.lon = lambdap;
+
+ return npt;
+ }
+
+ template <typename T>
+ inline isea_geo<T> isea_ctran(isea_geo<T> * np, isea_geo<T> * pt, T const& lon0)
+ {
+ isea_geo<T> npt;
+
+ np->lon += geometry::math::pi<T>();
+ npt = snyder_ctran(np, pt);
+ np->lon -= geometry::math::pi<T>();
+
+ npt.lon -= (geometry::math::pi<T>() - lon0 + np->lon);
+
+ /*
+ * snyder is down tri 3, isea is along side of tri1 from vertex 0 to
+ * vertex 1 these are 180 degrees apart
+ */
+ npt.lon += geometry::math::pi<T>();
+ /* normalize longitude */
+ npt.lon = fmod(npt.lon, geometry::math::two_pi<T>());
+ while (npt.lon > geometry::math::pi<T>())
+ npt.lon -= geometry::math::two_pi<T>();
+ while (npt.lon < -geometry::math::pi<T>())
+ npt.lon += geometry::math::two_pi<T>();
+
+ return npt;
+ }
+
+ /* in radians */
+
+ /* fuller's at 5.2454 west, 2.3009 N, adjacent at 7.46658 deg */
+
+ template <typename T>
+ inline int isea_grid_init(isea_dgg<T> * g)
+ {
+ if (!g)
+ return 0;
+
+ g->polyhedron = 20;
+ g->o_lat = ISEA_STD_LAT;
+ g->o_lon = ISEA_STD_LON;
+ g->o_az = 0.0;
+ g->aperture = 4;
+ g->resolution = 6;
+ g->radius = 1.0;
+ g->topology = 6;
+
+ return 1;
+ }
+
+ template <typename T>
+ inline int isea_orient_isea(isea_dgg<T> * g)
+ {
+ if (!g)
+ return 0;
+ g->o_lat = ISEA_STD_LAT;
+ g->o_lon = ISEA_STD_LON;
+ g->o_az = 0.0;
+ return 1;
+ }
+
+ template <typename T>
+ inline int isea_orient_pole(isea_dgg<T> * g)
+ {
+ if (!g)
+ return 0;
+ g->o_lat = geometry::math::half_pi<T>();
+ g->o_lon = 0.0;
+ g->o_az = 0;
+ return 1;
+ }
+
+ template <typename T>
+ inline int isea_transform(isea_dgg<T> * g, isea_geo<T> * in,
+ isea_pt<T> * out)
+ {
+ isea_geo<T> i, pole;
+ int tri;
+
+ pole.lat = g->o_lat;
+ pole.lon = g->o_lon;
+
+ i = isea_ctran(&pole, in, g->o_az);
+
+ tri = isea_snyder_forward(&i, out);
+ out->x *= g->radius;
+ out->y *= g->radius;
+ g->triangle = tri;
+
+ return tri;
+ }
+
+
+ template <typename T>
+ inline void isea_rotate(isea_pt<T> * pt, T const& degrees)
+ {
+ T rad;
+
+ T x, y;
+
+ rad = -degrees * geometry::math::d2r<T>();
+ while (rad >= geometry::math::two_pi<T>()) rad -= geometry::math::two_pi<T>();
+ while (rad <= -geometry::math::two_pi<T>()) rad += geometry::math::two_pi<T>();
+
+ x = pt->x * cos(rad) + pt->y * sin(rad);
+ y = -pt->x * sin(rad) + pt->y * cos(rad);
+
+ pt->x = x;
+ pt->y = y;
+ }
+
+ template <typename T>
+ inline int isea_tri_plane(int tri, isea_pt<T> *pt, T const& radius)
+ {
+ isea_pt<T> tc; /* center of triangle */
+
+ if (DOWNTRI(tri)) {
+ isea_rotate(pt, 180.0);
+ }
+ tc = isea_triangle_xy<T>(tri);
+ tc.x *= radius;
+ tc.y *= radius;
+ pt->x += tc.x;
+ pt->y += tc.y;
+
+ return tri;
+ }
+
+ /* convert projected triangle coords to quad xy coords, return quad number */
+ template <typename T>
+ inline int isea_ptdd(int tri, isea_pt<T> *pt)
+ {
+ int downtri, quad;
+
+ downtri = (((tri - 1) / 5) % 2 == 1);
+ boost::ignore_unused(downtri);
+ quad = ((tri - 1) % 5) + ((tri - 1) / 10) * 5 + 1;
+
+ isea_rotate(pt, downtri ? 240.0 : 60.0);
+ if (downtri) {
+ pt->x += 0.5;
+ /* pt->y += cos(30.0 * M_PI / 180.0); */
+ pt->y += .86602540378443864672;
+ }
+ return quad;
+ }
+
+ template <typename T>
+ inline int isea_dddi_ap3odd(isea_dgg<T> *g, int quad, isea_pt<T> *pt, isea_pt<T> *di)
+ {
+ isea_pt<T> v;
+ T hexwidth;
+ T sidelength; /* in hexes */
+ int d, i;
+ int maxcoord;
+ hex h;
+
+ /* This is the number of hexes from apex to base of a triangle */
+ sidelength = (pow(2.0, g->resolution) + 1.0) / 2.0;
+
+ /* apex to base is cos(30deg) */
+ hexwidth = cos(geometry::math::pi<T>() / 6.0) / sidelength;
+
+ /* TODO I think sidelength is always x.5, so
+ * (int)sidelength * 2 + 1 might be just as good
+ */
+ maxcoord = (int) (sidelength * 2.0 + 0.5);
+
+ v = *pt;
+ hexbin2(hexwidth, v.x, v.y, &h.x, &h.y);
+ h.iso = 0;
+ hex_iso(&h);
+
+ d = h.x - h.z;
+ i = h.x + h.y + h.y;
+
+ /*
+ * you want to test for max coords for the next quad in the same
+ * "row" first to get the case where both are max
+ */
+ if (quad <= 5) {
+ if (d == 0 && i == maxcoord) {
+ /* north pole */
+ quad = 0;
+ d = 0;
+ i = 0;
+ } else if (i == maxcoord) {
+ /* upper right in next quad */
+ quad += 1;
+ if (quad == 6)
+ quad = 1;
+ i = maxcoord - d;
+ d = 0;
+ } else if (d == maxcoord) {
+ /* lower right in quad to lower right */
+ quad += 5;
+ d = 0;
+ }
+ } else if (quad >= 6) {
+ if (i == 0 && d == maxcoord) {
+ /* south pole */
+ quad = 11;
+ d = 0;
+ i = 0;
+ } else if (d == maxcoord) {
+ /* lower right in next quad */
+ quad += 1;
+ if (quad == 11)
+ quad = 6;
+ d = maxcoord - i;
+ i = 0;
+ } else if (i == maxcoord) {
+ /* upper right in quad to upper right */
+ quad = (quad - 4) % 5;
+ i = 0;
+ }
+ }
+
+ di->x = d;
+ di->y = i;
+
+ g->quad = quad;
+ return quad;
+ }
+
+ template <typename T>
+ inline int isea_dddi(isea_dgg<T> *g, int quad, isea_pt<T> *pt, isea_pt<T> *di)
+ {
+ isea_pt<T> v;
+ T hexwidth;
+ int sidelength; /* in hexes */
+ hex h;
+
+ if (g->aperture == 3 && g->resolution % 2 != 0) {
+ return isea_dddi_ap3odd(g, quad, pt, di);
+ }
+ /* todo might want to do this as an iterated loop */
+ if (g->aperture >0) {
+ sidelength = (int) (pow(T(g->aperture), T(g->resolution / 2.0)) + 0.5);
+ } else {
+ sidelength = g->resolution;
+ }
+
+ hexwidth = 1.0 / sidelength;
+
+ v = *pt;
+ isea_rotate(&v, -30.0);
+ hexbin2(hexwidth, v.x, v.y, &h.x, &h.y);
+ h.iso = 0;
+ hex_iso(&h);
+
+ /* we may actually be on another quad */
+ if (quad <= 5) {
+ if (h.x == 0 && h.z == -sidelength) {
+ /* north pole */
+ quad = 0;
+ h.z = 0;
+ h.y = 0;
+ h.x = 0;
+ } else if (h.z == -sidelength) {
+ quad = quad + 1;
+ if (quad == 6)
+ quad = 1;
+ h.y = sidelength - h.x;
+ h.z = h.x - sidelength;
+ h.x = 0;
+ } else if (h.x == sidelength) {
+ quad += 5;
+ h.y = -h.z;
+ h.x = 0;
+ }
+ } else if (quad >= 6) {
+ if (h.z == 0 && h.x == sidelength) {
+ /* south pole */
+ quad = 11;
+ h.x = 0;
+ h.y = 0;
+ h.z = 0;
+ } else if (h.x == sidelength) {
+ quad = quad + 1;
+ if (quad == 11)
+ quad = 6;
+ h.x = h.y + sidelength;
+ h.y = 0;
+ h.z = -h.x;
+ } else if (h.y == -sidelength) {
+ quad -= 4;
+ h.y = 0;
+ h.z = -h.x;
+ }
+ }
+ di->x = h.x;
+ di->y = -h.z;
+
+ g->quad = quad;
+ return quad;
+ }
+
+ template <typename T>
+ inline int isea_ptdi(isea_dgg<T> *g, int tri, isea_pt<T> *pt,
+ isea_pt<T> *di)
+ {
+ isea_pt<T> v;
+ int quad;
+
+ v = *pt;
+ quad = isea_ptdd(tri, &v);
+ quad = isea_dddi(g, quad, &v, di);
+ return quad;
+ }
+
+ /* q2di to seqnum */
+ template <typename T>
+ inline int isea_disn(isea_dgg<T> *g, int quad, isea_pt<T> *di)
+ {
+ int sidelength;
+ int sn, height;
+ int hexes;
+
+ if (quad == 0) {
+ g->serial = 1;
+ return g->serial;
+ }
+ /* hexes in a quad */
+ hexes = (int) (pow(T(g->aperture), T(g->resolution)) + 0.5);
+ if (quad == 11) {
+ g->serial = 1 + 10 * hexes + 1;
+ return g->serial;
+ }
+ if (g->aperture == 3 && g->resolution % 2 == 1) {
+ height = (int) (pow(T(g->aperture), T((g->resolution - 1) / 2.0)));
+ sn = ((int) di->x) * height;
+ sn += ((int) di->y) / height;
+ sn += (quad - 1) * hexes;
+ sn += 2;
+ } else {
+ sidelength = (int) (pow(T(g->aperture), T(g->resolution / 2.0)) + 0.5);
+ sn = (int) ((quad - 1) * hexes + sidelength * di->x + di->y + 2);
+ }
+
+ g->serial = sn;
+ return sn;
+ }
+
+ /* TODO just encode the quad in the d or i coordinate
+ * quad is 0-11, which can be four bits.
+ * d' = d << 4 + q, d = d' >> 4, q = d' & 0xf
+ */
+ /* convert a q2di to global hex coord */
+ template <typename T>
+ inline int isea_hex(isea_dgg<T> *g, int tri, isea_pt<T> *pt,
+ isea_pt<T> *hex)
+ {
+ isea_pt<T> v;
+#ifdef BOOST_GEOMETRY_PROJECTIONS_FIXME
+ int sidelength;
+ int d, i, x, y;
+#endif // BOOST_GEOMETRY_PROJECTIONS_FIXME
+ int quad;
+
+ quad = isea_ptdi(g, tri, pt, &v);
+
+ hex->x = ((int)v.x << 4) + quad;
+ hex->y = v.y;
+
+ return 1;
+#ifdef BOOST_GEOMETRY_PROJECTIONS_FIXME
+ d = (int)v.x;
+ i = (int)v.y;
+
+ /* Aperture 3 odd resolutions */
+ if (g->aperture == 3 && g->resolution % 2 != 0) {
+ int offset = (int)(pow(T(3.0), T(g->resolution - 1)) + 0.5);
+
+ d += offset * ((g->quad-1) % 5);
+ i += offset * ((g->quad-1) % 5);
+
+ if (quad == 0) {
+ d = 0;
+ i = offset;
+ } else if (quad == 11) {
+ d = 2 * offset;
+ i = 0;
+ } else if (quad > 5) {
+ d += offset;
+ }
+
+ x = (2*d - i) /3;
+ y = (2*i - d) /3;
+
+ hex->x = x + offset / 3;
+ hex->y = y + 2 * offset / 3;
+ return 1;
+ }
+
+ /* aperture 3 even resolutions and aperture 4 */
+ sidelength = (int) (pow(T(g->aperture), T(g->resolution / 2.0)) + 0.5);
+ if (g->quad == 0) {
+ hex->x = 0;
+ hex->y = sidelength;
+ } else if (g->quad == 11) {
+ hex->x = sidelength * 2;
+ hex->y = 0;
+ } else {
+ hex->x = d + sidelength * ((g->quad-1) % 5);
+ if (g->quad > 5) hex->x += sidelength;
+ hex->y = i + sidelength * ((g->quad-1) % 5);
+ }
+
+ return 1;
+#endif // BOOST_GEOMETRY_PROJECTIONS_FIXME
+ }
+
+ template <typename T>
+ inline isea_pt<T> isea_forward(isea_dgg<T> *g, isea_geo<T> *in)
+ {
+ int tri, downtri;
+ isea_pt<T> out, coord;
+
+ tri = isea_transform(g, in, &out);
+
+ downtri = (((tri - 1) / 5) % 2 == 1);
+ boost::ignore_unused(downtri);
+
+ if (g->output == ISEA_PLANE) {
+ isea_tri_plane(tri, &out, g->radius);
+ return out;
+ }
+
+ /* convert to isea standard triangle size */
+ out.x = out.x / g->radius * ISEA_SCALE;
+ out.y = out.y / g->radius * ISEA_SCALE;
+ out.x += 0.5;
+ out.y += 2.0 * .14433756729740644112;
+
+ switch (g->output) {
+ case ISEA_PROJTRI:
+ /* nothing to do, already in projected triangle */
+ break;
+ case ISEA_VERTEX2DD:
+ g->quad = isea_ptdd(tri, &out);
+ break;
+ case ISEA_Q2DD:
+ /* Same as above, we just don't print as much */
+ g->quad = isea_ptdd(tri, &out);
+ break;
+ case ISEA_Q2DI:
+ g->quad = isea_ptdi(g, tri, &out, &coord);
+ return coord;
+ break;
+ case ISEA_SEQNUM:
+ isea_ptdi(g, tri, &out, &coord);
+ /* disn will set g->serial */
+ isea_disn(g, g->quad, &coord);
+ return coord;
+ break;
+ case ISEA_HEX:
+ isea_hex(g, tri, &out, &coord);
+ return coord;
+ break;
+ }
+
+ return out;
+ }
+ /*
+ * Proj 4 integration code follows
+ */
+
+ template <typename T>
+ struct par_isea
+ {
+ isea_dgg<T> dgg;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_isea_spheroid : public base_t_f<base_isea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_isea<CalculationType> m_proj_parm;
+
+ inline base_isea_spheroid(const Parameters& par)
+ : base_t_f<base_isea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward)
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ isea_pt<CalculationType> out;
+ isea_geo<CalculationType> in;
+
+ in.lon = lp_lon;
+ in.lat = lp_lat;
+
+ isea_dgg<CalculationType> copy = this->m_proj_parm.dgg;
+ out = isea_forward(&copy, &in);
+
+ xy_x = out.x;
+ xy_y = out.y;
+ }
+
+ static inline std::string get_name()
+ {
+ return "isea_spheroid";
+ }
+
+ };
+
+ // Icosahedral Snyder Equal Area
+ template <typename Parameters, typename T>
+ inline void setup_isea(Parameters& par, par_isea<T>& proj_parm)
+ {
+ std::string opt;
+
+ isea_grid_init(&proj_parm.dgg);
+
+ proj_parm.dgg.output = ISEA_PLANE;
+ /* proj_parm.dgg.radius = par.a; / * otherwise defaults to 1 */
+ /* calling library will scale, I think */
+
+ opt = pj_param(par.params, "sorient").s;
+ if (! opt.empty()) {
+ if (opt == std::string("isea")) {
+ isea_orient_isea(&proj_parm.dgg);
+ } else if (opt == std::string("pole")) {
+ isea_orient_pole(&proj_parm.dgg);
+ } else {
+ BOOST_THROW_EXCEPTION( projection_exception(-34) );
+ }
+ }
+
+ if (pj_param(par.params, "tazi").i) {
+ proj_parm.dgg.o_az = pj_param(par.params, "razi").f;
+ }
+
+ if (pj_param(par.params, "tlon_0").i) {
+ proj_parm.dgg.o_lon = pj_param(par.params, "rlon_0").f;
+ }
+
+ if (pj_param(par.params, "tlat_0").i) {
+ proj_parm.dgg.o_lat = pj_param(par.params, "rlat_0").f;
+ }
+
+ if (pj_param(par.params, "taperture").i) {
+ proj_parm.dgg.aperture = pj_param(par.params, "iaperture").i;
+ }
+
+ if (pj_param(par.params, "tresolution").i) {
+ proj_parm.dgg.resolution = pj_param(par.params, "iresolution").i;
+ }
+
+ opt = pj_param(par.params, "smode").s;
+ if (! opt.empty()) {
+ if (opt == std::string("plane")) {
+ proj_parm.dgg.output = ISEA_PLANE;
+ } else if (opt == std::string("di")) {
+ proj_parm.dgg.output = ISEA_Q2DI;
+ }
+ else if (opt == std::string("dd")) {
+ proj_parm.dgg.output = ISEA_Q2DD;
+ }
+ else if (opt == std::string("hex")) {
+ proj_parm.dgg.output = ISEA_HEX;
+ }
+ else {
+ /* TODO verify error code. Possibly eliminate magic */
+ BOOST_THROW_EXCEPTION( projection_exception(-34) );
+ }
+ }
+
+ if (pj_param(par.params, "trescale").i) {
+ proj_parm.dgg.radius = ISEA_SCALE;
+ }
+
+ if (pj_param(par.params, "tresolution").i) {
+ proj_parm.dgg.resolution = pj_param(par.params, "iresolution").i;
+ } else {
+ proj_parm.dgg.resolution = 4;
+ }
+
+ if (pj_param(par.params, "taperture").i) {
+ proj_parm.dgg.aperture = pj_param(par.params, "iaperture").i;
+ } else {
+ proj_parm.dgg.aperture = 3;
+ }
+ }
+
+ }} // namespace detail::isea
+ #endif // doxygen
+
+ /*!
+ \brief Icosahedral Snyder Equal Area projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Spheroid
+ \par Projection parameters
+ - orient (string)
+ - azi: Azimuth (or Gamma) (degrees)
+ - lon_0: Central meridian (degrees)
+ - lat_0: Latitude of origin (degrees)
+ - aperture (integer)
+ - resolution (integer)
+ - mode (string)
+ - rescale
+ \par Example
+ \image html ex_isea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct isea_spheroid : public detail::isea::base_isea_spheroid<CalculationType, Parameters>
+ {
+ inline isea_spheroid(const Parameters& par) : detail::isea::base_isea_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::isea::setup_isea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::isea, isea_spheroid, isea_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class isea_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<isea_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void isea_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("isea", new isea_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ISEA_HPP
+
diff --git a/boost/geometry/srs/projections/proj/krovak.hpp b/boost/geometry/srs/projections/proj/krovak.hpp
new file mode 100644
index 0000000000..09c24772ed
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/krovak.hpp
@@ -0,0 +1,360 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_KROVAK_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_KROVAK_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Purpose: Implementation of the krovak (Krovak) projection.
+// Definition: http://www.ihsenergy.com/epsg/guid7.html#1.4.3
+// Author: Thomas Flemming, tf@ttqv.com
+// Copyright (c) 2001, Thomas Flemming, tf@ttqv.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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct krovak {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace krovak
+ {
+ template <typename T>
+ struct par_krovak
+ {
+ T C_x;
+ };
+
+ /**
+ NOTES: According to EPSG the full Krovak projection method should have
+ the following parameters. Within PROJ.4 the azimuth, and pseudo
+ standard parallel are hardcoded in the algorithm and can't be
+ altered from outside. The others all have defaults to match the
+ common usage with Krovak projection.
+
+ lat_0 = latitude of centre of the projection
+
+ lon_0 = longitude of centre of the projection
+
+ ** = azimuth (true) of the centre line passing through the centre of the projection
+
+ ** = latitude of pseudo standard parallel
+
+ k = scale factor on the pseudo standard parallel
+
+ x_0 = False Easting of the centre of the projection at the apex of the cone
+
+ y_0 = False Northing of the centre of the projection at the apex of the cone
+
+ **/
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_krovak_ellipsoid : public base_t_fi<base_krovak_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_krovak<CalculationType> m_proj_parm;
+
+ inline base_krovak_ellipsoid(const Parameters& par)
+ : base_t_fi<base_krovak_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ /* calculate xy from lat/lon */
+
+ /* Constants, identical to inverse transform function */
+ CalculationType s45, s90, e2, e, alfa, uq, u0, g, k, k1, n0, ro0, ad, a, s0, n;
+ CalculationType gfi, u, fi0, deltav, s, d, eps, ro;
+
+
+ s45 = 0.785398163397448; /* 45 DEG */
+ s90 = 2 * s45;
+ fi0 = this->m_par.phi0; /* Latitude of projection centre 49 DEG 30' */
+
+ /* Ellipsoid is used as Parameter in for.c and inv.c, therefore a must
+ be set to 1 here.
+ Ellipsoid Bessel 1841 a = 6377397.155m 1/f = 299.1528128,
+ e2=0.006674372230614;
+ */
+ a = 1; /* 6377397.155; */
+ /* e2 = this->m_par.es;*/ /* 0.006674372230614; */
+ e2 = 0.006674372230614;
+ e = sqrt(e2);
+
+ alfa = sqrt(1. + (e2 * pow(cos(fi0), 4)) / (1. - e2));
+
+ uq = 1.04216856380474; /* DU(2, 59, 42, 42.69689) */
+ u0 = asin(sin(fi0) / alfa);
+ g = pow( (1. + e * sin(fi0)) / (1. - e * sin(fi0)) , alfa * e / 2. );
+
+ k = tan( u0 / 2. + s45) / pow (tan(fi0 / 2. + s45) , alfa) * g;
+
+ k1 = this->m_par.k0;
+ n0 = a * sqrt(1. - e2) / (1. - e2 * pow(sin(fi0), 2));
+ s0 = 1.37008346281555; /* Latitude of pseudo standard parallel 78 DEG 30'00" N */
+ n = sin(s0);
+ ro0 = k1 * n0 / tan(s0);
+ ad = s90 - uq;
+
+ /* Transformation */
+
+ gfi =pow ( ((1. + e * sin(lp_lat)) /
+ (1. - e * sin(lp_lat))) , (alfa * e / 2.));
+
+ u= 2. * (atan(k * pow( tan(lp_lat / 2. + s45), alfa) / gfi)-s45);
+
+ deltav = - lp_lon * alfa;
+
+ s = asin(cos(ad) * sin(u) + sin(ad) * cos(u) * cos(deltav));
+ d = asin(cos(u) * sin(deltav) / cos(s));
+ eps = n * d;
+ ro = ro0 * pow(tan(s0 / 2. + s45) , n) / pow(tan(s / 2. + s45) , n) ;
+
+ /* x and y are reverted! */
+ xy_y = ro * cos(eps) / a;
+ xy_x = ro * sin(eps) / a;
+
+ if( !pj_param(this->m_par.params, "tczech").i )
+ {
+ xy_y *= -1.0;
+ xy_x *= -1.0;
+ }
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ /* calculate lat/lon from xy */
+
+ /* Constants, identisch wie in der Umkehrfunktion */
+ CalculationType s45, s90, fi0, e2, e, alfa, uq, u0, g, k, k1, n0, ro0, ad, a, s0, n;
+ CalculationType u, deltav, s, d, eps, ro, fi1, xy0;
+ int ok;
+
+ s45 = 0.785398163397448; /* 45 DEG */
+ s90 = 2 * s45;
+ fi0 = this->m_par.phi0; /* Latitude of projection centre 49 DEG 30' */
+
+
+ /* Ellipsoid is used as Parameter in for.c and inv.c, therefore a must
+ be set to 1 here.
+ Ellipsoid Bessel 1841 a = 6377397.155m 1/f = 299.1528128,
+ e2=0.006674372230614;
+ */
+ a = 1; /* 6377397.155; */
+ /* e2 = this->m_par.es; */ /* 0.006674372230614; */
+ e2 = 0.006674372230614;
+ e = sqrt(e2);
+
+ alfa = sqrt(1. + (e2 * pow(cos(fi0), 4)) / (1. - e2));
+ uq = 1.04216856380474; /* DU(2, 59, 42, 42.69689) */
+ u0 = asin(sin(fi0) / alfa);
+ g = pow( (1. + e * sin(fi0)) / (1. - e * sin(fi0)) , alfa * e / 2. );
+
+ k = tan( u0 / 2. + s45) / pow (tan(fi0 / 2. + s45) , alfa) * g;
+
+ k1 = this->m_par.k0;
+ n0 = a * sqrt(1. - e2) / (1. - e2 * pow(sin(fi0), 2));
+ s0 = 1.37008346281555; /* Latitude of pseudo standard parallel 78 DEG 30'00" N */
+ n = sin(s0);
+ ro0 = k1 * n0 / tan(s0);
+ ad = s90 - uq;
+
+
+ /* Transformation */
+ /* revert y, x*/
+ xy0=xy_x;
+ xy_x=xy_y;
+ xy_y=xy0;
+
+ if( !pj_param(this->m_par.params, "tczech").i )
+ {
+ xy_x *= -1.0;
+ xy_y *= -1.0;
+ }
+
+ ro = sqrt(xy_x * xy_x + xy_y * xy_y);
+ eps = atan2(xy_y, xy_x);
+ d = eps / sin(s0);
+ s = 2. * (atan( pow(ro0 / ro, 1. / n) * tan(s0 / 2. + s45)) - s45);
+
+ u = asin(cos(ad) * sin(s) - sin(ad) * cos(s) * cos(d));
+ deltav = asin(cos(s) * sin(d) / cos(u));
+
+ lp_lon = this->m_par.lam0 - deltav / alfa;
+
+ /* ITERATION FOR lp_lat */
+ fi1 = u;
+
+ ok = 0;
+ do
+ {
+ lp_lat = 2. * ( atan( pow( k, -1. / alfa) *
+ pow( tan(u / 2. + s45) , 1. / alfa) *
+ pow( (1. + e * sin(fi1)) / (1. - e * sin(fi1)) , e / 2.)
+ ) - s45);
+
+ if (fabs(fi1 - lp_lat) < 0.000000000000001) ok=1;
+ fi1 = lp_lat;
+
+ }
+ while (ok==0);
+
+ lp_lon -= this->m_par.lam0;
+ }
+
+ static inline std::string get_name()
+ {
+ return "krovak_ellipsoid";
+ }
+
+ };
+
+ // Krovak
+ template <typename Parameters, typename T>
+ inline void setup_krovak(Parameters& par, par_krovak<T>& proj_parm)
+ {
+ T ts;
+ /* read some Parameters,
+ * here Latitude Truescale */
+
+ ts = pj_param(par.params, "rlat_ts").f;
+ proj_parm.C_x = ts;
+
+ /* we want Bessel as fixed ellipsoid */
+ par.a = 6377397.155;
+ par.e = sqrt(par.es = 0.006674372230614);
+
+ /* if latitude of projection center is not set, use 49d30'N */
+ if (!pj_param(par.params, "tlat_0").i)
+ par.phi0 = 0.863937979737193;
+
+ /* if center long is not set use 42d30'E of Ferro - 17d40' for Ferro */
+ /* that will correspond to using longitudes relative to greenwich */
+ /* as input and output, instead of lat/long relative to Ferro */
+ if (!pj_param(par.params, "tlon_0").i)
+ par.lam0 = 0.7417649320975901 - 0.308341501185665;
+
+ /* if scale not set default to 0.9999 */
+ if (!pj_param(par.params, "tk").i)
+ par.k0 = 0.9999;
+
+ /* always the same */
+ }
+
+ }} // namespace detail::krovak
+ #endif // doxygen
+
+ /*!
+ \brief Krovak projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Ellipsoid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ - lat_0: Latitude of origin
+ - lon_0: Central meridian
+ - k: Scale factor on the pseudo standard parallel
+ \par Example
+ \image html ex_krovak.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct krovak_ellipsoid : public detail::krovak::base_krovak_ellipsoid<CalculationType, Parameters>
+ {
+ inline krovak_ellipsoid(const Parameters& par) : detail::krovak::base_krovak_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::krovak::setup_krovak(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::krovak, krovak_ellipsoid, krovak_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class krovak_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<krovak_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void krovak_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("krovak", new krovak_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_KROVAK_HPP
+
diff --git a/boost/geometry/srs/projections/proj/labrd.hpp b/boost/geometry/srs/projections/proj/labrd.hpp
new file mode 100644
index 0000000000..0a51689308
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/labrd.hpp
@@ -0,0 +1,269 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LABRD_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LABRD_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct labrd {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace labrd
+ {
+ static const double EPS = 1.e-10;
+
+ template <typename T>
+ struct par_labrd
+ {
+ T Az, kRg, p0s, A, C, Ca, Cb, Cc, Cd;
+ int rot;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_labrd_ellipsoid : public base_t_fi<base_labrd_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_labrd<CalculationType> m_proj_parm;
+
+ inline base_labrd_ellipsoid(const Parameters& par)
+ : base_t_fi<base_labrd_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward)
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+
+ CalculationType V1, V2, ps, sinps, cosps, sinps2, cosps2, I1, I2, I3, I4, I5, I6,
+ x2, y2, t;
+
+ V1 = this->m_proj_parm.A * log( tan(FORTPI + .5 * lp_lat) );
+ t = this->m_par.e * sin(lp_lat);
+ V2 = .5 * this->m_par.e * this->m_proj_parm.A * log ((1. + t)/(1. - t));
+ ps = 2. * (atan(exp(V1 - V2 + this->m_proj_parm.C)) - FORTPI);
+ I1 = ps - this->m_proj_parm.p0s;
+ cosps = cos(ps); cosps2 = cosps * cosps;
+ sinps = sin(ps); sinps2 = sinps * sinps;
+ I4 = this->m_proj_parm.A * cosps;
+ I2 = .5 * this->m_proj_parm.A * I4 * sinps;
+ I3 = I2 * this->m_proj_parm.A * this->m_proj_parm.A * (5. * cosps2 - sinps2) / 12.;
+ I6 = I4 * this->m_proj_parm.A * this->m_proj_parm.A;
+ I5 = I6 * (cosps2 - sinps2) / 6.;
+ I6 *= this->m_proj_parm.A * this->m_proj_parm.A *
+ (5. * cosps2 * cosps2 + sinps2 * (sinps2 - 18. * cosps2)) / 120.;
+ t = lp_lon * lp_lon;
+ xy_x = this->m_proj_parm.kRg * lp_lon * (I4 + t * (I5 + t * I6));
+ xy_y = this->m_proj_parm.kRg * (I1 + t * (I2 + t * I3));
+ x2 = xy_x * xy_x;
+ y2 = xy_y * xy_y;
+ V1 = 3. * xy_x * y2 - xy_x * x2;
+ V2 = xy_y * y2 - 3. * x2 * xy_y;
+ xy_x += this->m_proj_parm.Ca * V1 + this->m_proj_parm.Cb * V2;
+ xy_y += this->m_proj_parm.Ca * V2 - this->m_proj_parm.Cb * V1;
+ }
+
+ // INVERSE(e_inverse) ellipsoid & spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+
+ CalculationType x2, y2, V1, V2, V3, V4, t, t2, ps, pe, tpe, s,
+ I7, I8, I9, I10, I11, d, Re;
+ int i;
+
+ x2 = xy_x * xy_x;
+ y2 = xy_y * xy_y;
+ V1 = 3. * xy_x * y2 - xy_x * x2;
+ V2 = xy_y * y2 - 3. * x2 * xy_y;
+ V3 = xy_x * (5. * y2 * y2 + x2 * (-10. * y2 + x2 ));
+ V4 = xy_y * (5. * x2 * x2 + y2 * (-10. * x2 + y2 ));
+ xy_x += - this->m_proj_parm.Ca * V1 - this->m_proj_parm.Cb * V2 + this->m_proj_parm.Cc * V3 + this->m_proj_parm.Cd * V4;
+ xy_y += this->m_proj_parm.Cb * V1 - this->m_proj_parm.Ca * V2 - this->m_proj_parm.Cd * V3 + this->m_proj_parm.Cc * V4;
+ ps = this->m_proj_parm.p0s + xy_y / this->m_proj_parm.kRg;
+ pe = ps + this->m_par.phi0 - this->m_proj_parm.p0s;
+ for ( i = 20; i; --i) {
+ V1 = this->m_proj_parm.A * log(tan(FORTPI + .5 * pe));
+ tpe = this->m_par.e * sin(pe);
+ V2 = .5 * this->m_par.e * this->m_proj_parm.A * log((1. + tpe)/(1. - tpe));
+ t = ps - 2. * (atan(exp(V1 - V2 + this->m_proj_parm.C)) - FORTPI);
+ pe += t;
+ if (fabs(t) < EPS)
+ break;
+ }
+ /*
+ if (!i) {
+ } else {
+ }
+ */
+ t = this->m_par.e * sin(pe);
+ t = 1. - t * t;
+ Re = this->m_par.one_es / ( t * sqrt(t) );
+ t = tan(ps);
+ t2 = t * t;
+ s = this->m_proj_parm.kRg * this->m_proj_parm.kRg;
+ d = Re * this->m_par.k0 * this->m_proj_parm.kRg;
+ I7 = t / (2. * d);
+ I8 = t * (5. + 3. * t2) / (24. * d * s);
+ d = cos(ps) * this->m_proj_parm.kRg * this->m_proj_parm.A;
+ I9 = 1. / d;
+ d *= s;
+ I10 = (1. + 2. * t2) / (6. * d);
+ I11 = (5. + t2 * (28. + 24. * t2)) / (120. * d * s);
+ x2 = xy_x * xy_x;
+ lp_lat = pe + x2 * (-I7 + I8 * x2);
+ lp_lon = xy_x * (I9 + x2 * (-I10 + x2 * I11));
+ }
+
+ static inline std::string get_name()
+ {
+ return "labrd_ellipsoid";
+ }
+
+ };
+
+ // Laborde
+ template <typename Parameters, typename T>
+ inline void setup_labrd(Parameters& par, par_labrd<T>& proj_parm)
+ {
+ static const T FORTPI = detail::FORTPI<T>();
+
+ T Az, sinp, R, N, t;
+
+ proj_parm.rot = pj_param(par.params, "bno_rot").i == 0;
+ Az = pj_param(par.params, "razi").f;
+ sinp = sin(par.phi0);
+ t = 1. - par.es * sinp * sinp;
+ N = 1. / sqrt(t);
+ R = par.one_es * N / t;
+ proj_parm.kRg = par.k0 * sqrt( N * R );
+ proj_parm.p0s = atan( sqrt(R / N) * tan(par.phi0) );
+ proj_parm.A = sinp / sin(proj_parm.p0s);
+ t = par.e * sinp;
+ proj_parm.C = .5 * par.e * proj_parm.A * log((1. + t)/(1. - t)) +
+ - proj_parm.A * log( tan(FORTPI + .5 * par.phi0))
+ + log( tan(FORTPI + .5 * proj_parm.p0s));
+ t = Az + Az;
+ proj_parm.Ca = (1. - cos(t)) * ( proj_parm.Cb = 1. / (12. * proj_parm.kRg * proj_parm.kRg) );
+ proj_parm.Cb *= sin(t);
+ proj_parm.Cc = 3. * (proj_parm.Ca * proj_parm.Ca - proj_parm.Cb * proj_parm.Cb);
+ proj_parm.Cd = 6. * proj_parm.Ca * proj_parm.Cb;
+ }
+
+ }} // namespace detail::labrd
+ #endif // doxygen
+
+ /*!
+ \brief Laborde projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Special for Madagascar
+ \par Projection parameters
+ - no_rot: No rotation (boolean)
+ - azi: Azimuth (or Gamma) (degrees)
+ \par Example
+ \image html ex_labrd.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct labrd_ellipsoid : public detail::labrd::base_labrd_ellipsoid<CalculationType, Parameters>
+ {
+ inline labrd_ellipsoid(const Parameters& par) : detail::labrd::base_labrd_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::labrd::setup_labrd(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::labrd, labrd_ellipsoid, labrd_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class labrd_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<labrd_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void labrd_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("labrd", new labrd_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LABRD_HPP
+
diff --git a/boost/geometry/srs/projections/proj/laea.hpp b/boost/geometry/srs/projections/proj/laea.hpp
new file mode 100644
index 0000000000..757d2b7ff0
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/laea.hpp
@@ -0,0 +1,447 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LAEA_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LAEA_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/config.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_auth.hpp>
+#include <boost/geometry/srs/projections/impl/pj_qsfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct laea {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace laea
+ {
+ static const double EPS10 = 1.e-10;
+ static const int NITER = 20;
+ static const double CONV = 1.e-10;
+ static const int N_POLE = 0;
+ static const int S_POLE = 1;
+ static const int EQUIT = 2;
+ static const int OBLIQ = 3;
+
+ template <typename T>
+ struct par_laea
+ {
+ T sinb1;
+ T cosb1;
+ T xmf;
+ T ymf;
+ T mmf;
+ T qp;
+ T dd;
+ T rq;
+ T apa[APA_SIZE];
+ int mode;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_laea_ellipsoid : public base_t_fi<base_laea_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_laea<CalculationType> m_proj_parm;
+
+ inline base_laea_ellipsoid(const Parameters& par)
+ : base_t_fi<base_laea_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType coslam, sinlam, sinphi, q, sinb=0.0, cosb=0.0, b=0.0;
+
+ coslam = cos(lp_lon);
+ sinlam = sin(lp_lon);
+ sinphi = sin(lp_lat);
+ q = pj_qsfn(sinphi, this->m_par.e, this->m_par.one_es);
+ if (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT) {
+ sinb = q / this->m_proj_parm.qp;
+ cosb = sqrt(1. - sinb * sinb);
+ }
+ switch (this->m_proj_parm.mode) {
+ case OBLIQ:
+ b = 1. + this->m_proj_parm.sinb1 * sinb + this->m_proj_parm.cosb1 * cosb * coslam;
+ break;
+ case EQUIT:
+ b = 1. + cosb * coslam;
+ break;
+ case N_POLE:
+ b = HALFPI + lp_lat;
+ q = this->m_proj_parm.qp - q;
+ break;
+ case S_POLE:
+ b = lp_lat - HALFPI;
+ q = this->m_proj_parm.qp + q;
+ break;
+ }
+ if (fabs(b) < EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ switch (this->m_proj_parm.mode) {
+ case OBLIQ:
+ xy_y = this->m_proj_parm.ymf * ( b = sqrt(2. / b) )
+ * (this->m_proj_parm.cosb1 * sinb - this->m_proj_parm.sinb1 * cosb * coslam);
+ goto eqcon;
+ break;
+ case EQUIT:
+ xy_y = (b = sqrt(2. / (1. + cosb * coslam))) * sinb * this->m_proj_parm.ymf;
+ eqcon:
+ xy_x = this->m_proj_parm.xmf * b * cosb * sinlam;
+ break;
+ case N_POLE:
+ case S_POLE:
+ if (q >= 0.) {
+ xy_x = (b = sqrt(q)) * sinlam;
+ xy_y = coslam * (this->m_proj_parm.mode == S_POLE ? b : -b);
+ } else
+ xy_x = xy_y = 0.;
+ break;
+ }
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType cCe, sCe, q, rho, ab=0.0;
+
+ switch (this->m_proj_parm.mode) {
+ case EQUIT:
+ case OBLIQ:
+ if ((rho = boost::math::hypot(xy_x /= this->m_proj_parm.dd, xy_y *= this->m_proj_parm.dd)) < EPS10) {
+ lp_lon = 0.;
+ lp_lat = this->m_par.phi0;
+ return;
+ }
+ cCe = cos(sCe = 2. * asin(.5 * rho / this->m_proj_parm.rq));
+ xy_x *= (sCe = sin(sCe));
+ if (this->m_proj_parm.mode == OBLIQ) {
+ q = this->m_proj_parm.qp * (ab = cCe * this->m_proj_parm.sinb1 + xy_y * sCe * this->m_proj_parm.cosb1 / rho);
+ xy_y = rho * this->m_proj_parm.cosb1 * cCe - xy_y * this->m_proj_parm.sinb1 * sCe;
+ } else {
+ q = this->m_proj_parm.qp * (ab = xy_y * sCe / rho);
+ xy_y = rho * cCe;
+ }
+ break;
+ case N_POLE:
+ xy_y = -xy_y;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ if (!(q = (xy_x * xy_x + xy_y * xy_y)) ) {
+ lp_lon = 0.;
+ lp_lat = this->m_par.phi0;
+ return;
+ }
+ /*
+ q = this->m_proj_parm.qp - q;
+ */
+ ab = 1. - q / this->m_proj_parm.qp;
+ if (this->m_proj_parm.mode == S_POLE)
+ ab = - ab;
+ break;
+ }
+ lp_lon = atan2(xy_x, xy_y);
+ lp_lat = pj_authlat(asin(ab), this->m_proj_parm.apa);
+ }
+
+ static inline std::string get_name()
+ {
+ return "laea_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_laea_spheroid : public base_t_fi<base_laea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_laea<CalculationType> m_proj_parm;
+
+ inline base_laea_spheroid(const Parameters& par)
+ : base_t_fi<base_laea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+
+ CalculationType coslam, cosphi, sinphi;
+
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ coslam = cos(lp_lon);
+ switch (this->m_proj_parm.mode) {
+ case EQUIT:
+ xy_y = 1. + cosphi * coslam;
+ goto oblcon;
+ case OBLIQ:
+ xy_y = 1. + this->m_proj_parm.sinb1 * sinphi + this->m_proj_parm.cosb1 * cosphi * coslam;
+ oblcon:
+ if (xy_y <= EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = (xy_y = sqrt(2. / xy_y)) * cosphi * sin(lp_lon);
+ xy_y *= this->m_proj_parm.mode == EQUIT ? sinphi :
+ this->m_proj_parm.cosb1 * sinphi - this->m_proj_parm.sinb1 * cosphi * coslam;
+ break;
+ case N_POLE:
+ coslam = -coslam;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ if (fabs(lp_lat + this->m_par.phi0) < EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_y = FORTPI - lp_lat * .5;
+ xy_y = 2. * (this->m_proj_parm.mode == S_POLE ? cos(xy_y) : sin(xy_y));
+ xy_x = xy_y * sin(lp_lon);
+ xy_y *= coslam;
+ break;
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType cosz=0.0, rh, sinz=0.0;
+
+ rh = boost::math::hypot(xy_x, xy_y);
+ if ((lp_lat = rh * .5 ) > 1.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ lp_lat = 2. * asin(lp_lat);
+ if (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT) {
+ sinz = sin(lp_lat);
+ cosz = cos(lp_lat);
+ }
+ switch (this->m_proj_parm.mode) {
+ case EQUIT:
+ lp_lat = fabs(rh) <= EPS10 ? 0. : asin(xy_y * sinz / rh);
+ xy_x *= sinz;
+ xy_y = cosz * rh;
+ break;
+ case OBLIQ:
+ lp_lat = fabs(rh) <= EPS10 ? this->m_par.phi0 :
+ asin(cosz * this->m_proj_parm.sinb1 + xy_y * sinz * this->m_proj_parm.cosb1 / rh);
+ xy_x *= sinz * this->m_proj_parm.cosb1;
+ xy_y = (cosz - sin(lp_lat) * this->m_proj_parm.sinb1) * rh;
+ break;
+ case N_POLE:
+ xy_y = -xy_y;
+ lp_lat = HALFPI - lp_lat;
+ break;
+ case S_POLE:
+ lp_lat -= HALFPI;
+ break;
+ }
+ lp_lon = (xy_y == 0. && (this->m_proj_parm.mode == EQUIT || this->m_proj_parm.mode == OBLIQ)) ?
+ 0. : atan2(xy_x, xy_y);
+ }
+
+ static inline std::string get_name()
+ {
+ return "laea_spheroid";
+ }
+
+ };
+
+ // Lambert Azimuthal Equal Area
+ template <typename Parameters, typename T>
+ inline void setup_laea(Parameters& par, par_laea<T>& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T t;
+
+ if (fabs((t = fabs(par.phi0)) - HALFPI) < EPS10)
+ proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE;
+ else if (fabs(t) < EPS10)
+ proj_parm.mode = EQUIT;
+ else
+ proj_parm.mode = OBLIQ;
+ if (par.es) {
+ double sinphi;
+
+ par.e = sqrt(par.es);
+ proj_parm.qp = pj_qsfn(1., par.e, par.one_es);
+ proj_parm.mmf = .5 / (1. - par.es);
+ pj_authset(par.es, proj_parm.apa);
+ switch (proj_parm.mode) {
+ case N_POLE:
+ case S_POLE:
+ proj_parm.dd = 1.;
+ break;
+ case EQUIT:
+ proj_parm.dd = 1. / (proj_parm.rq = sqrt(.5 * proj_parm.qp));
+ proj_parm.xmf = 1.;
+ proj_parm.ymf = .5 * proj_parm.qp;
+ break;
+ case OBLIQ:
+ proj_parm.rq = sqrt(.5 * proj_parm.qp);
+ sinphi = sin(par.phi0);
+ proj_parm.sinb1 = pj_qsfn(sinphi, par.e, par.one_es) / proj_parm.qp;
+ proj_parm.cosb1 = sqrt(1. - proj_parm.sinb1 * proj_parm.sinb1);
+ proj_parm.dd = cos(par.phi0) / (sqrt(1. - par.es * sinphi * sinphi) *
+ proj_parm.rq * proj_parm.cosb1);
+ proj_parm.ymf = (proj_parm.xmf = proj_parm.rq) / proj_parm.dd;
+ proj_parm.xmf *= proj_parm.dd;
+ break;
+ }
+ } else {
+ if (proj_parm.mode == OBLIQ) {
+ proj_parm.sinb1 = sin(par.phi0);
+ proj_parm.cosb1 = cos(par.phi0);
+ }
+ }
+ }
+
+ }} // namespace laea
+ #endif // doxygen
+
+ /*!
+ \brief Lambert Azimuthal Equal Area projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_laea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct laea_ellipsoid : public detail::laea::base_laea_ellipsoid<CalculationType, Parameters>
+ {
+ inline laea_ellipsoid(const Parameters& par) : detail::laea::base_laea_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::laea::setup_laea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Lambert Azimuthal Equal Area projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_laea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct laea_spheroid : public detail::laea::base_laea_spheroid<CalculationType, Parameters>
+ {
+ inline laea_spheroid(const Parameters& par) : detail::laea::base_laea_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::laea::setup_laea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::laea, laea_spheroid, laea_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class laea_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<laea_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<laea_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void laea_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("laea", new laea_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LAEA_HPP
+
diff --git a/boost/geometry/srs/projections/proj/lagrng.hpp b/boost/geometry/srs/projections/proj/lagrng.hpp
new file mode 100644
index 0000000000..8ed5c1389e
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/lagrng.hpp
@@ -0,0 +1,195 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LAGRNG_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LAGRNG_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct lagrng {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace lagrng
+ {
+
+ static const double TOL = 1e-10;
+
+ template <typename T>
+ struct par_lagrng
+ {
+ T hrw;
+ T rw;
+ T a1;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_lagrng_spheroid : public base_t_f<base_lagrng_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_lagrng<CalculationType> m_proj_parm;
+
+ inline base_lagrng_spheroid(const Parameters& par)
+ : base_t_f<base_lagrng_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType v, c;
+
+ if (fabs(fabs(lp_lat) - HALFPI) < TOL) {
+ xy_x = 0;
+ xy_y = lp_lat < 0 ? -2. : 2.;
+ } else {
+ lp_lat = sin(lp_lat);
+ v = this->m_proj_parm.a1 * pow((1. + lp_lat)/(1. - lp_lat), this->m_proj_parm.hrw);
+ if ((c = 0.5 * (v + 1./v) + cos(lp_lon *= this->m_proj_parm.rw)) < TOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = 2. * sin(lp_lon) / c;
+ xy_y = (v - 1./v) / c;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "lagrng_spheroid";
+ }
+
+ };
+
+ // Lagrange
+ template <typename Parameters, typename T>
+ inline void setup_lagrng(Parameters& par, par_lagrng<T>& proj_parm)
+ {
+ T phi1;
+
+ if ((proj_parm.rw = pj_param(par.params, "dW").f) <= 0)
+ BOOST_THROW_EXCEPTION( projection_exception(-27) );
+ proj_parm.hrw = 0.5 * (proj_parm.rw = 1. / proj_parm.rw);
+ phi1 = pj_param(par.params, "rlat_1").f;
+ if (fabs(fabs(phi1 = sin(phi1)) - 1.) < TOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-22) );
+ proj_parm.a1 = pow((1. - phi1)/(1. + phi1), proj_parm.hrw);
+ par.es = 0.;
+ }
+
+ }} // namespace detail::lagrng
+ #endif // doxygen
+
+ /*!
+ \brief Lagrange projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Projection parameters
+ - W (real)
+ - lat_1: Latitude of first standard parallel (degrees)
+ \par Example
+ \image html ex_lagrng.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct lagrng_spheroid : public detail::lagrng::base_lagrng_spheroid<CalculationType, Parameters>
+ {
+ inline lagrng_spheroid(const Parameters& par) : detail::lagrng::base_lagrng_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::lagrng::setup_lagrng(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::lagrng, lagrng_spheroid, lagrng_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class lagrng_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<lagrng_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void lagrng_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("lagrng", new lagrng_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LAGRNG_HPP
+
diff --git a/boost/geometry/srs/projections/proj/larr.hpp b/boost/geometry/srs/projections/proj/larr.hpp
new file mode 100644
index 0000000000..2b2735c0dd
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/larr.hpp
@@ -0,0 +1,164 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LARR_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LARR_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct larr {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace larr
+ {
+
+ //static const double SIXTH = .16666666666666666;
+
+ template <typename T>
+ inline T SIXTH() { return .16666666666666666666666666666666; }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_larr_spheroid : public base_t_f<base_larr_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_larr_spheroid(const Parameters& par)
+ : base_t_f<base_larr_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType SIXTH = larr::SIXTH<CalculationType>();
+
+ xy_x = 0.5 * lp_lon * (1. + sqrt(cos(lp_lat)));
+ xy_y = lp_lat / (cos(0.5 * lp_lat) * cos(SIXTH * lp_lon));
+ }
+
+ static inline std::string get_name()
+ {
+ return "larr_spheroid";
+ }
+
+ };
+
+ // Larrivee
+ template <typename Parameters>
+ inline void setup_larr(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::larr
+ #endif // doxygen
+
+ /*!
+ \brief Larrivee projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_larr.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct larr_spheroid : public detail::larr::base_larr_spheroid<CalculationType, Parameters>
+ {
+ inline larr_spheroid(const Parameters& par) : detail::larr::base_larr_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::larr::setup_larr(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::larr, larr_spheroid, larr_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class larr_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<larr_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void larr_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("larr", new larr_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LARR_HPP
+
diff --git a/boost/geometry/srs/projections/proj/lask.hpp b/boost/geometry/srs/projections/proj/lask.hpp
new file mode 100644
index 0000000000..9ee1a95efe
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/lask.hpp
@@ -0,0 +1,173 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LASK_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LASK_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct lask {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace lask
+ {
+
+ static const double a10 = 0.975534;
+ static const double a12 = -0.119161;
+ static const double a32 = -0.0143059;
+ static const double a14 = -0.0547009;
+ static const double b01 = 1.00384;
+ static const double b21 = 0.0802894;
+ static const double b03 = 0.0998909;
+ static const double b41 = 0.000199025;
+ static const double b23 = -0.0285500;
+ static const double b05 = -0.0491032;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_lask_spheroid : public base_t_f<base_lask_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_lask_spheroid(const Parameters& par)
+ : base_t_f<base_lask_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType l2, p2;
+
+ l2 = lp_lon * lp_lon;
+ p2 = lp_lat * lp_lat;
+ xy_x = lp_lon * (a10 + p2 * (a12 + l2 * a32 + p2 * a14));
+ xy_y = lp_lat * (b01 + l2 * (b21 + p2 * b23 + l2 * b41) +
+ p2 * (b03 + p2 * b05));
+ }
+
+ static inline std::string get_name()
+ {
+ return "lask_spheroid";
+ }
+
+ };
+
+ // Laskowski
+ template <typename Parameters>
+ inline void setup_lask(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::lask
+ #endif // doxygen
+
+ /*!
+ \brief Laskowski projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_lask.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct lask_spheroid : public detail::lask::base_lask_spheroid<CalculationType, Parameters>
+ {
+ inline lask_spheroid(const Parameters& par) : detail::lask::base_lask_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::lask::setup_lask(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::lask, lask_spheroid, lask_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class lask_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<lask_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void lask_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("lask", new lask_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LASK_HPP
+
diff --git a/boost/geometry/srs/projections/proj/latlong.hpp b/boost/geometry/srs/projections/proj/latlong.hpp
new file mode 100644
index 0000000000..e806381f2d
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/latlong.hpp
@@ -0,0 +1,292 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LATLONG_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LATLONG_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Purpose: Stub projection implementation for lat/long coordinates. We
+// don't actually change the coordinates, but we want proj=latlong
+// to act sort of like a projection.
+// Author: Frank Warmerdam, warmerdam@pobox.com
+// Copyright (c) 2000, Frank Warmerdam
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct lonlat {};
+ struct latlon {};
+ struct latlong {};
+ struct longlat {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace latlong
+ {
+
+ /* very loosely based upon DMA code by Bradford W. Drew */
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_latlong_other : public base_t_fi<base_latlong_other<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_latlong_other(const Parameters& par)
+ : base_t_fi<base_latlong_other<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(forward)
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = lp_lon / this->m_par.a;
+ xy_y = lp_lat / this->m_par.a;
+ }
+
+ // INVERSE(inverse)
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = xy_y * this->m_par.a;
+ lp_lon = xy_x * this->m_par.a;
+ }
+
+ static inline std::string get_name()
+ {
+ return "latlong_other";
+ }
+
+ };
+
+ // Lat/long (Geodetic)
+ template <typename Parameters>
+ inline void setup_lonlat(Parameters& par)
+ {
+ par.is_latlong = 1;
+ par.x0 = 0.0;
+ par.y0 = 0.0;
+ }
+
+ // Lat/long (Geodetic alias)
+ template <typename Parameters>
+ inline void setup_latlon(Parameters& par)
+ {
+ par.is_latlong = 1;
+ par.x0 = 0.0;
+ par.y0 = 0.0;
+ }
+
+ // Lat/long (Geodetic alias)
+ template <typename Parameters>
+ inline void setup_latlong(Parameters& par)
+ {
+ par.is_latlong = 1;
+ par.x0 = 0.0;
+ par.y0 = 0.0;
+ }
+
+ // Lat/long (Geodetic alias)
+ template <typename Parameters>
+ inline void setup_longlat(Parameters& par)
+ {
+ par.is_latlong = 1;
+ par.x0 = 0.0;
+ par.y0 = 0.0;
+ }
+
+ }} // namespace detail::latlong
+ #endif // doxygen
+
+ /*!
+ \brief Lat/long (Geodetic) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Example
+ \image html ex_lonlat.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct lonlat_other : public detail::latlong::base_latlong_other<CalculationType, Parameters>
+ {
+ inline lonlat_other(const Parameters& par) : detail::latlong::base_latlong_other<CalculationType, Parameters>(par)
+ {
+ detail::latlong::setup_lonlat(this->m_par);
+ }
+ };
+
+ /*!
+ \brief Lat/long (Geodetic alias) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Example
+ \image html ex_latlon.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct latlon_other : public detail::latlong::base_latlong_other<CalculationType, Parameters>
+ {
+ inline latlon_other(const Parameters& par) : detail::latlong::base_latlong_other<CalculationType, Parameters>(par)
+ {
+ detail::latlong::setup_latlon(this->m_par);
+ }
+ };
+
+ /*!
+ \brief Lat/long (Geodetic alias) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Example
+ \image html ex_latlong.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct latlong_other : public detail::latlong::base_latlong_other<CalculationType, Parameters>
+ {
+ inline latlong_other(const Parameters& par) : detail::latlong::base_latlong_other<CalculationType, Parameters>(par)
+ {
+ detail::latlong::setup_latlong(this->m_par);
+ }
+ };
+
+ /*!
+ \brief Lat/long (Geodetic alias) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Example
+ \image html ex_longlat.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct longlat_other : public detail::latlong::base_latlong_other<CalculationType, Parameters>
+ {
+ inline longlat_other(const Parameters& par) : detail::latlong::base_latlong_other<CalculationType, Parameters>(par)
+ {
+ detail::latlong::setup_longlat(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::lonlat, lonlat_other, lonlat_other)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::latlon, latlon_other, latlon_other)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::latlong, latlong_other, latlong_other)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::longlat, longlat_other, longlat_other)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class lonlat_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<lonlat_other<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class latlon_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<latlon_other<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class latlong_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<latlong_other<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class longlat_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<longlat_other<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void latlong_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("lonlat", new lonlat_entry<CalculationType, Parameters>);
+ factory.add_to_factory("latlon", new latlon_entry<CalculationType, Parameters>);
+ factory.add_to_factory("latlong", new latlong_entry<CalculationType, Parameters>);
+ factory.add_to_factory("longlat", new longlat_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LATLONG_HPP
+
diff --git a/boost/geometry/srs/projections/proj/lcc.hpp b/boost/geometry/srs/projections/proj/lcc.hpp
new file mode 100644
index 0000000000..609c08491c
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/lcc.hpp
@@ -0,0 +1,282 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LCC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LCC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_msfn.hpp>
+#include <boost/geometry/srs/projections/impl/pj_phi2.hpp>
+#include <boost/geometry/srs/projections/impl/pj_tsfn.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct lcc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace lcc
+ {
+ static const double EPS10 = 1.e-10;
+
+ template <typename T>
+ struct par_lcc
+ {
+ T phi1;
+ T phi2;
+ T n;
+ T rho0;
+ T c;
+ int ellips;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_lcc_ellipsoid : public base_t_fi<base_lcc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_lcc<CalculationType> m_proj_parm;
+
+ inline base_lcc_ellipsoid(const Parameters& par)
+ : base_t_fi<base_lcc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid & spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType rho;
+ if (fabs(fabs(lp_lat) - HALFPI) < EPS10) {
+ if ((lp_lat * this->m_proj_parm.n) <= 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ rho = 0.;
+ } else
+ rho = this->m_proj_parm.c * (this->m_proj_parm.ellips ? pow(pj_tsfn(lp_lat, sin(lp_lat),
+ this->m_par.e), this->m_proj_parm.n) : pow(tan(FORTPI + .5 * lp_lat), -this->m_proj_parm.n));
+ xy_x = this->m_par.k0 * (rho * sin( lp_lon *= this->m_proj_parm.n ) );
+ xy_y = this->m_par.k0 * (this->m_proj_parm.rho0 - rho * cos(lp_lon) );
+ }
+
+ // INVERSE(e_inverse) ellipsoid & spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType rho;
+ xy_x /= this->m_par.k0;
+ xy_y /= this->m_par.k0;
+ if( (rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho0 - xy_y)) != 0.0) {
+ if (this->m_proj_parm.n < 0.) {
+ rho = -rho;
+ xy_x = -xy_x;
+ xy_y = -xy_y;
+ }
+ if (this->m_proj_parm.ellips) {
+ if ((lp_lat = pj_phi2(pow(rho / this->m_proj_parm.c, 1./this->m_proj_parm.n), this->m_par.e))
+ == HUGE_VAL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ } else
+ lp_lat = 2. * atan(pow(this->m_proj_parm.c / rho, 1./this->m_proj_parm.n)) - HALFPI;
+ lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n;
+ } else {
+ lp_lon = 0.;
+ lp_lat = this->m_proj_parm.n > 0. ? HALFPI : -HALFPI;
+ }
+ }
+
+ // SPECIAL(fac)
+ #ifdef SPECIAL_FACTORS_NOT_CONVERTED
+ inline void fac(Geographic lp, Factors &fac) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType rho;
+ if (fabs(fabs(lp_lat) - HALFPI) < EPS10) {
+ if ((lp_lat * this->m_proj_parm.n) <= 0.) return;
+ rho = 0.;
+ } else
+ rho = this->m_proj_parm.c * (this->m_proj_parm.ellips ? pow(pj_tsfn(lp_lat, sin(lp_lat),
+ this->m_par.e), this->m_proj_parm.n) : pow(tan(FORTPI + .5 * lp_lat), -this->m_proj_parm.n));
+ this->m_fac.code |= IS_ANAL_HK + IS_ANAL_CONV;
+ this->m_fac.k = this->m_fac.h = this->m_par.k0 * this->m_proj_parm.n * rho /
+ pj_msfn(sin(lp_lat), cos(lp_lat), this->m_par.es);
+ this->m_fac.conv = - this->m_proj_parm.n * lp_lon;
+ }
+ #endif
+
+ static inline std::string get_name()
+ {
+ return "lcc_ellipsoid";
+ }
+
+ };
+
+ // Lambert Conformal Conic
+ template <typename Parameters, typename T>
+ inline void setup_lcc(Parameters& par, par_lcc<T>& proj_parm)
+ {
+ static const T FORTPI = detail::FORTPI<T>();
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T cosphi, sinphi;
+ int secant;
+
+ proj_parm.phi1 = pj_param(par.params, "rlat_1").f;
+ if (pj_param(par.params, "tlat_2").i)
+ proj_parm.phi2 = pj_param(par.params, "rlat_2").f;
+ else {
+ proj_parm.phi2 = proj_parm.phi1;
+ if (!pj_param(par.params, "tlat_0").i)
+ par.phi0 = proj_parm.phi1;
+ }
+ if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-21) );
+ proj_parm.n = sinphi = sin(proj_parm.phi1);
+ cosphi = cos(proj_parm.phi1);
+ secant = fabs(proj_parm.phi1 - proj_parm.phi2) >= EPS10;
+ if( (proj_parm.ellips = (par.es != 0.)) ) {
+ double ml1, m1;
+
+ par.e = sqrt(par.es);
+ m1 = pj_msfn(sinphi, cosphi, par.es);
+ ml1 = pj_tsfn(proj_parm.phi1, sinphi, par.e);
+ if (secant) { /* secant cone */
+ proj_parm.n = log(m1 /
+ pj_msfn(sinphi = sin(proj_parm.phi2), cos(proj_parm.phi2), par.es));
+ proj_parm.n /= log(ml1 / pj_tsfn(proj_parm.phi2, sinphi, par.e));
+ }
+ proj_parm.c = (proj_parm.rho0 = m1 * pow(ml1, -proj_parm.n) / proj_parm.n);
+ proj_parm.rho0 *= (fabs(fabs(par.phi0) - HALFPI) < EPS10) ? 0. :
+ pow(pj_tsfn(par.phi0, sin(par.phi0), par.e), proj_parm.n);
+ } else {
+ if (secant)
+ proj_parm.n = log(cosphi / cos(proj_parm.phi2)) /
+ log(tan(FORTPI + .5 * proj_parm.phi2) /
+ tan(FORTPI + .5 * proj_parm.phi1));
+ proj_parm.c = cosphi * pow(tan(FORTPI + .5 * proj_parm.phi1), proj_parm.n) / proj_parm.n;
+ proj_parm.rho0 = (fabs(fabs(par.phi0) - HALFPI) < EPS10) ? 0. :
+ proj_parm.c * pow(tan(FORTPI + .5 * par.phi0), -proj_parm.n);
+ }
+ }
+
+ }} // namespace detail::lcc
+ #endif // doxygen
+
+ /*!
+ \brief Lambert Conformal Conic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ - lat_2: Latitude of second standard parallel (degrees)
+ - lat_0: Latitude of origin
+ \par Example
+ \image html ex_lcc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct lcc_ellipsoid : public detail::lcc::base_lcc_ellipsoid<CalculationType, Parameters>
+ {
+ inline lcc_ellipsoid(const Parameters& par) : detail::lcc::base_lcc_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::lcc::setup_lcc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::lcc, lcc_ellipsoid, lcc_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class lcc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<lcc_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void lcc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("lcc", new lcc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LCC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/lcca.hpp b/boost/geometry/srs/projections/proj/lcca.hpp
new file mode 100644
index 0000000000..a1a2069d8f
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/lcca.hpp
@@ -0,0 +1,231 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LCCA_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LCCA_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/core/ignore_unused.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct lcca {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace lcca
+ {
+
+ static const int MAX_ITER = 10;
+ static const double DEL_TOL = 1e-12;
+
+ template <typename T>
+ struct par_lcca
+ {
+ T en[EN_SIZE];
+ T r0, l, M0;
+ T C;
+ };
+
+ template <typename T> /* func to compute dr */
+ inline T fS(T const& S, T const& C)
+ {
+ return(S * ( 1. + S * S * C));
+ }
+
+ template <typename T> /* deriv of fs */
+ inline T fSp(T const& S, T const& C)
+ {
+ return(1. + 3.* S * S * C);
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_lcca_ellipsoid : public base_t_fi<base_lcca_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_lcca<CalculationType> m_proj_parm;
+
+ inline base_lcca_ellipsoid(const Parameters& par)
+ : base_t_fi<base_lcca_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType S, r, dr;
+
+ S = pj_mlfn(lp_lat, sin(lp_lat), cos(lp_lat), this->m_proj_parm.en) - this->m_proj_parm.M0;
+ dr = fS(S, this->m_proj_parm.C);
+ r = this->m_proj_parm.r0 - dr;
+ xy_x = this->m_par.k0 * (r * sin( lp_lon *= this->m_proj_parm.l ) );
+ xy_y = this->m_par.k0 * (this->m_proj_parm.r0 - r * cos(lp_lon) );
+ }
+
+ // INVERSE(e_inverse) ellipsoid & spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType theta, dr, S, dif;
+ int i;
+
+ xy_x /= this->m_par.k0;
+ xy_y /= this->m_par.k0;
+ theta = atan2(xy_x , this->m_proj_parm.r0 - xy_y);
+ dr = xy_y - xy_x * tan(0.5 * theta);
+ lp_lon = theta / this->m_proj_parm.l;
+ S = dr;
+ for (i = MAX_ITER; i ; --i) {
+ S -= (dif = (fS(S, this->m_proj_parm.C) - dr) / fSp(S, this->m_proj_parm.C));
+ if (fabs(dif) < DEL_TOL) break;
+ }
+ if (!i)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ lp_lat = pj_inv_mlfn(S + this->m_proj_parm.M0, this->m_par.es, this->m_proj_parm.en);
+ }
+
+ static inline std::string get_name()
+ {
+ return "lcca_ellipsoid";
+ }
+
+ };
+
+ // Lambert Conformal Conic Alternative
+ template <typename Parameters, typename T>
+ inline void setup_lcca(Parameters& par, par_lcca<T>& proj_parm)
+ {
+ T s2p0, N0, R0, tan0, tan20;
+
+ if (!pj_enfn(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ if (!pj_param(par.params, "tlat_0").i)
+ BOOST_THROW_EXCEPTION( projection_exception(50) );
+ if (par.phi0 == 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(51) );
+ proj_parm.l = sin(par.phi0);
+ proj_parm.M0 = pj_mlfn(par.phi0, proj_parm.l, cos(par.phi0), proj_parm.en);
+ s2p0 = proj_parm.l * proj_parm.l;
+ R0 = 1. / (1. - par.es * s2p0);
+ N0 = sqrt(R0);
+ R0 *= par.one_es * N0;
+ tan0 = tan(par.phi0);
+ tan20 = tan0 * tan0;
+ proj_parm.r0 = N0 / tan0;
+ proj_parm.C = 1. / (6. * R0 * N0);
+ boost::ignore_unused(tan20);
+ }
+
+ }} // namespace detail::lcca
+ #endif // doxygen
+
+ /*!
+ \brief Lambert Conformal Conic Alternative projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_0: Latitude of origin
+ \par Example
+ \image html ex_lcca.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct lcca_ellipsoid : public detail::lcca::base_lcca_ellipsoid<CalculationType, Parameters>
+ {
+ inline lcca_ellipsoid(const Parameters& par) : detail::lcca::base_lcca_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::lcca::setup_lcca(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::lcca, lcca_ellipsoid, lcca_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class lcca_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<lcca_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void lcca_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("lcca", new lcca_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LCCA_HPP
+
diff --git a/boost/geometry/srs/projections/proj/loxim.hpp b/boost/geometry/srs/projections/proj/loxim.hpp
new file mode 100644
index 0000000000..f88eb4ca6e
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/loxim.hpp
@@ -0,0 +1,205 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LOXIM_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LOXIM_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct loxim {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace loxim
+ {
+ static const double EPS = 1e-8;
+
+ template <typename T>
+ struct par_loxim
+ {
+ T phi1;
+ T cosphi1;
+ T tanphi1;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_loxim_spheroid : public base_t_fi<base_loxim_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_loxim<CalculationType> m_proj_parm;
+
+ inline base_loxim_spheroid(const Parameters& par)
+ : base_t_fi<base_loxim_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ xy_y = lp_lat - this->m_proj_parm.phi1;
+ if (fabs(xy_y) < EPS)
+ xy_x = lp_lon * this->m_proj_parm.cosphi1;
+ else {
+ xy_x = FORTPI + 0.5 * lp_lat;
+ if (fabs(xy_x) < EPS || fabs(fabs(xy_x) - HALFPI) < EPS)
+ xy_x = 0.;
+ else
+ xy_x = lp_lon * xy_y / log( tan(xy_x) / this->m_proj_parm.tanphi1 );
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ lp_lat = xy_y + this->m_proj_parm.phi1;
+ if (fabs(xy_y) < EPS)
+ lp_lon = xy_x / this->m_proj_parm.cosphi1;
+ else
+ if (fabs( lp_lon = FORTPI + 0.5 * lp_lat ) < EPS ||
+ fabs(fabs(lp_lon) - HALFPI) < EPS)
+ lp_lon = 0.;
+ else
+ lp_lon = xy_x * log( tan(lp_lon) / this->m_proj_parm.tanphi1 ) / xy_y ;
+ }
+
+ static inline std::string get_name()
+ {
+ return "loxim_spheroid";
+ }
+
+ };
+
+ // Loximuthal
+ template <typename Parameters, typename T>
+ inline void setup_loxim(Parameters& par, par_loxim<T>& proj_parm)
+ {
+ static const T FORTPI = detail::FORTPI<T>();
+
+ proj_parm.phi1 = pj_param(par.params, "rlat_1").f;
+ if ((proj_parm.cosphi1 = cos(proj_parm.phi1)) < EPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-22) );
+ proj_parm.tanphi1 = tan(FORTPI + 0.5 * proj_parm.phi1);
+ par.es = 0.;
+ }
+
+ }} // namespace detail::loxim
+ #endif // doxygen
+
+ /*!
+ \brief Loximuthal projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ \par Example
+ \image html ex_loxim.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct loxim_spheroid : public detail::loxim::base_loxim_spheroid<CalculationType, Parameters>
+ {
+ inline loxim_spheroid(const Parameters& par) : detail::loxim::base_loxim_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::loxim::setup_loxim(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::loxim, loxim_spheroid, loxim_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class loxim_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<loxim_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void loxim_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("loxim", new loxim_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LOXIM_HPP
+
diff --git a/boost/geometry/srs/projections/proj/lsat.hpp b/boost/geometry/srs/projections/proj/lsat.hpp
new file mode 100644
index 0000000000..d305339d5b
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/lsat.hpp
@@ -0,0 +1,341 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_LSAT_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_LSAT_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct lsat {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace lsat
+ {
+ static const double TOL = 1e-7;
+ //static const double PI_HALFPI = 4.71238898038468985766;
+ //static const double TWOPI_HALFPI = 7.85398163397448309610;
+
+ template <typename T>
+ struct par_lsat
+ {
+ T a2, a4, b, c1, c3;
+ T q, t, u, w, p22, sa, ca, xj, rlm, rlm2;
+ };
+
+ /* based upon Snyder and Linck, USGS-NMD */
+ template <typename T>
+ inline void
+ seraz0(T lam, T const& mult, par_lsat<T>& proj_parm)
+ {
+ T sdsq, h, s, fc, sd, sq, d__1;
+
+ lam *= geometry::math::d2r<T>();
+ sd = sin(lam);
+ sdsq = sd * sd;
+ s = proj_parm.p22 * proj_parm.sa * cos(lam) * sqrt((1. + proj_parm.t * sdsq) / ((
+ 1. + proj_parm.w * sdsq) * (1. + proj_parm.q * sdsq)));
+ d__1 = 1. + proj_parm.q * sdsq;
+ h = sqrt((1. + proj_parm.q * sdsq) / (1. + proj_parm.w * sdsq)) * ((1. +
+ proj_parm.w * sdsq) / (d__1 * d__1) - proj_parm.p22 * proj_parm.ca);
+ sq = sqrt(proj_parm.xj * proj_parm.xj + s * s);
+ proj_parm.b += fc = mult * (h * proj_parm.xj - s * s) / sq;
+ proj_parm.a2 += fc * cos(lam + lam);
+ proj_parm.a4 += fc * cos(lam * 4.);
+ fc = mult * s * (h + proj_parm.xj) / sq;
+ proj_parm.c1 += fc * cos(lam);
+ proj_parm.c3 += fc * cos(lam * 3.);
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_lsat_ellipsoid : public base_t_fi<base_lsat_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_lsat<CalculationType> m_proj_parm;
+
+ inline base_lsat_ellipsoid(const Parameters& par)
+ : base_t_fi<base_lsat_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType PI_HALFPI = detail::PI_HALFPI<CalculationType>();
+ static const CalculationType TWOPI_HALFPI = detail::TWOPI_HALFPI<CalculationType>();
+
+ int l, nn;
+ CalculationType lamt, xlam, sdsq, c, d, s, lamdp, phidp, lampp, tanph,
+ lamtp, cl, sd, sp, fac, sav, tanphi;
+
+ if (lp_lat > HALFPI)
+ lp_lat = HALFPI;
+ else if (lp_lat < -HALFPI)
+ lp_lat = -HALFPI;
+ lampp = lp_lat >= 0. ? HALFPI : PI_HALFPI;
+ tanphi = tan(lp_lat);
+ for (nn = 0;;) {
+ sav = lampp;
+ lamtp = lp_lon + this->m_proj_parm.p22 * lampp;
+ cl = cos(lamtp);
+ if (fabs(cl) < TOL)
+ lamtp -= TOL;
+ fac = lampp - sin(lampp) * (cl < 0. ? -HALFPI : HALFPI);
+ for (l = 50; l; --l) {
+ lamt = lp_lon + this->m_proj_parm.p22 * sav;
+ if (fabs(c = cos(lamt)) < TOL)
+ lamt -= TOL;
+ xlam = (this->m_par.one_es * tanphi * this->m_proj_parm.sa + sin(lamt) * this->m_proj_parm.ca) / c;
+ lamdp = atan(xlam) + fac;
+ if (fabs(fabs(sav) - fabs(lamdp)) < TOL)
+ break;
+ sav = lamdp;
+ }
+ if (!l || ++nn >= 3 || (lamdp > this->m_proj_parm.rlm && lamdp < this->m_proj_parm.rlm2))
+ break;
+ if (lamdp <= this->m_proj_parm.rlm)
+ lampp = TWOPI_HALFPI;
+ else if (lamdp >= this->m_proj_parm.rlm2)
+ lampp = HALFPI;
+ }
+ if (l) {
+ sp = sin(lp_lat);
+ phidp = aasin((this->m_par.one_es * this->m_proj_parm.ca * sp - this->m_proj_parm.sa * cos(lp_lat) *
+ sin(lamt)) / sqrt(1. - this->m_par.es * sp * sp));
+ tanph = log(tan(FORTPI + .5 * phidp));
+ sd = sin(lamdp);
+ sdsq = sd * sd;
+ s = this->m_proj_parm.p22 * this->m_proj_parm.sa * cos(lamdp) * sqrt((1. + this->m_proj_parm.t * sdsq)
+ / ((1. + this->m_proj_parm.w * sdsq) * (1. + this->m_proj_parm.q * sdsq)));
+ d = sqrt(this->m_proj_parm.xj * this->m_proj_parm.xj + s * s);
+ xy_x = this->m_proj_parm.b * lamdp + this->m_proj_parm.a2 * sin(2. * lamdp) + this->m_proj_parm.a4 *
+ sin(lamdp * 4.) - tanph * s / d;
+ xy_y = this->m_proj_parm.c1 * sd + this->m_proj_parm.c3 * sin(lamdp * 3.) + tanph * this->m_proj_parm.xj / d;
+ } else
+ xy_x = xy_y = HUGE_VAL;
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ int nn;
+ CalculationType lamt, sdsq, s, lamdp, phidp, sppsq, dd, sd, sl, fac, scl, sav, spp;
+
+ lamdp = xy_x / this->m_proj_parm.b;
+ nn = 50;
+ do {
+ sav = lamdp;
+ sd = sin(lamdp);
+ sdsq = sd * sd;
+ s = this->m_proj_parm.p22 * this->m_proj_parm.sa * cos(lamdp) * sqrt((1. + this->m_proj_parm.t * sdsq)
+ / ((1. + this->m_proj_parm.w * sdsq) * (1. + this->m_proj_parm.q * sdsq)));
+ lamdp = xy_x + xy_y * s / this->m_proj_parm.xj - this->m_proj_parm.a2 * sin(
+ 2. * lamdp) - this->m_proj_parm.a4 * sin(lamdp * 4.) - s / this->m_proj_parm.xj * (
+ this->m_proj_parm.c1 * sin(lamdp) + this->m_proj_parm.c3 * sin(lamdp * 3.));
+ lamdp /= this->m_proj_parm.b;
+ } while (fabs(lamdp - sav) >= TOL && --nn);
+ sl = sin(lamdp);
+ fac = exp(sqrt(1. + s * s / this->m_proj_parm.xj / this->m_proj_parm.xj) * (xy_y -
+ this->m_proj_parm.c1 * sl - this->m_proj_parm.c3 * sin(lamdp * 3.)));
+ phidp = 2. * (atan(fac) - FORTPI);
+ dd = sl * sl;
+ if (fabs(cos(lamdp)) < TOL)
+ lamdp -= TOL;
+ spp = sin(phidp);
+ sppsq = spp * spp;
+ lamt = atan(((1. - sppsq * this->m_par.rone_es) * tan(lamdp) *
+ this->m_proj_parm.ca - spp * this->m_proj_parm.sa * sqrt((1. + this->m_proj_parm.q * dd) * (
+ 1. - sppsq) - sppsq * this->m_proj_parm.u) / cos(lamdp)) / (1. - sppsq
+ * (1. + this->m_proj_parm.u)));
+ sl = lamt >= 0. ? 1. : -1.;
+ scl = cos(lamdp) >= 0. ? 1. : -1;
+ lamt -= HALFPI * (1. - scl) * sl;
+ lp_lon = lamt - this->m_proj_parm.p22 * lamdp;
+ if (fabs(this->m_proj_parm.sa) < TOL)
+ lp_lat = aasin(spp / sqrt(this->m_par.one_es * this->m_par.one_es + this->m_par.es * sppsq));
+ else
+ lp_lat = atan((tan(lamdp) * cos(lamt) - this->m_proj_parm.ca * sin(lamt)) /
+ (this->m_par.one_es * this->m_proj_parm.sa));
+ }
+
+ static inline std::string get_name()
+ {
+ return "lsat_ellipsoid";
+ }
+
+ };
+
+ // Space oblique for LANDSAT
+ template <typename Parameters, typename T>
+ inline void setup_lsat(Parameters& par, par_lsat<T>& proj_parm)
+ {
+ int land, path;
+ T lam, alf, esc, ess;
+
+ land = pj_param(par.params, "ilsat").i;
+ if (land <= 0 || land > 5)
+ BOOST_THROW_EXCEPTION( projection_exception(-28) );
+ path = pj_param(par.params, "ipath").i;
+ if (path <= 0 || path > (land <= 3 ? 251 : 233))
+ BOOST_THROW_EXCEPTION( projection_exception(-29) );
+ if (land <= 3) {
+ par.lam0 = geometry::math::d2r<T>() * 128.87 - geometry::math::two_pi<T>() / 251. * path;
+ proj_parm.p22 = 103.2669323;
+ alf = geometry::math::d2r<T>() * 99.092;
+ } else {
+ par.lam0 = geometry::math::d2r<T>() * 129.3 - geometry::math::two_pi<T>() / 233. * path;
+ proj_parm.p22 = 98.8841202;
+ alf = geometry::math::d2r<T>() * 98.2;
+ }
+ proj_parm.p22 /= 1440.;
+ proj_parm.sa = sin(alf);
+ proj_parm.ca = cos(alf);
+ if (fabs(proj_parm.ca) < 1e-9)
+ proj_parm.ca = 1e-9;
+ esc = par.es * proj_parm.ca * proj_parm.ca;
+ ess = par.es * proj_parm.sa * proj_parm.sa;
+ proj_parm.w = (1. - esc) * par.rone_es;
+ proj_parm.w = proj_parm.w * proj_parm.w - 1.;
+ proj_parm.q = ess * par.rone_es;
+ proj_parm.t = ess * (2. - par.es) * par.rone_es * par.rone_es;
+ proj_parm.u = esc * par.rone_es;
+ proj_parm.xj = par.one_es * par.one_es * par.one_es;
+ proj_parm.rlm = geometry::math::pi<T>() * (1. / 248. + .5161290322580645);
+ proj_parm.rlm2 = proj_parm.rlm + geometry::math::two_pi<T>();
+ proj_parm.a2 = proj_parm.a4 = proj_parm.b = proj_parm.c1 = proj_parm.c3 = 0.;
+ seraz0(0., 1., proj_parm);
+ for (lam = 9.; lam <= 81.0001; lam += 18.)
+ seraz0(lam, 4., proj_parm);
+ for (lam = 18; lam <= 72.0001; lam += 18.)
+ seraz0(lam, 2., proj_parm);
+ seraz0(90., 1., proj_parm);
+ proj_parm.a2 /= 30.;
+ proj_parm.a4 /= 60.;
+ proj_parm.b /= 30.;
+ proj_parm.c1 /= 15.;
+ proj_parm.c3 /= 45.;
+ }
+
+ }} // namespace detail::lsat
+ #endif // doxygen
+
+ /*!
+ \brief Space oblique for LANDSAT projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lsat (integer)
+ - path (integer)
+ \par Example
+ \image html ex_lsat.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct lsat_ellipsoid : public detail::lsat::base_lsat_ellipsoid<CalculationType, Parameters>
+ {
+ inline lsat_ellipsoid(const Parameters& par) : detail::lsat::base_lsat_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::lsat::setup_lsat(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::lsat, lsat_ellipsoid, lsat_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class lsat_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<lsat_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void lsat_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("lsat", new lsat_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_LSAT_HPP
+
diff --git a/boost/geometry/srs/projections/proj/mbt_fps.hpp b/boost/geometry/srs/projections/proj/mbt_fps.hpp
new file mode 100644
index 0000000000..3823725f1c
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/mbt_fps.hpp
@@ -0,0 +1,194 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_MBT_FPS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_MBT_FPS_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct mbt_fps {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace mbt_fps
+ {
+
+ static const int MAX_ITER = 10;
+ static const double LOOP_TOL = 1e-7;
+ static const double C1 = 0.45503;
+ static const double C2 = 1.36509;
+ static const double C3 = 1.41546;
+ static const double C_x = 0.22248;
+ static const double C_y = 1.44492;
+ //static const double C1_2 = 0.33333333333333333333333333;
+
+ template <typename T>
+ inline T C1_2() { return detail::THIRD<T>(); }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_mbt_fps_spheroid : public base_t_fi<base_mbt_fps_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_mbt_fps_spheroid(const Parameters& par)
+ : base_t_fi<base_mbt_fps_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType C1_2 = mbt_fps::C1_2<CalculationType>();
+
+ CalculationType k, V, t;
+ int i;
+
+ k = C3 * sin(lp_lat);
+ for (i = MAX_ITER; i ; --i) {
+ t = lp_lat / C2;
+ lp_lat -= V = (C1 * sin(t) + sin(lp_lat) - k) /
+ (C1_2 * cos(t) + cos(lp_lat));
+ if (fabs(V) < LOOP_TOL)
+ break;
+ }
+ t = lp_lat / C2;
+ xy_x = C_x * lp_lon * (1. + 3. * cos(lp_lat)/cos(t) );
+ xy_y = C_y * sin(t);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType t;
+
+ lp_lat = C2 * (t = aasin(xy_y / C_y));
+ lp_lon = xy_x / (C_x * (1. + 3. * cos(lp_lat)/cos(t)));
+ lp_lat = aasin((C1 * sin(t) + sin(lp_lat)) / C3);
+ }
+
+ static inline std::string get_name()
+ {
+ return "mbt_fps_spheroid";
+ }
+
+ };
+
+ // McBryde-Thomas Flat-Pole Sine (No. 2)
+ template <typename Parameters>
+ inline void setup_mbt_fps(Parameters& par)
+ {
+ par.es = 0;
+ }
+
+ }} // namespace detail::mbt_fps
+ #endif // doxygen
+
+ /*!
+ \brief McBryde-Thomas Flat-Pole Sine (No. 2) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Example
+ \image html ex_mbt_fps.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct mbt_fps_spheroid : public detail::mbt_fps::base_mbt_fps_spheroid<CalculationType, Parameters>
+ {
+ inline mbt_fps_spheroid(const Parameters& par) : detail::mbt_fps::base_mbt_fps_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::mbt_fps::setup_mbt_fps(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::mbt_fps, mbt_fps_spheroid, mbt_fps_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class mbt_fps_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<mbt_fps_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void mbt_fps_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("mbt_fps", new mbt_fps_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_MBT_FPS_HPP
+
diff --git a/boost/geometry/srs/projections/proj/mbtfpp.hpp b/boost/geometry/srs/projections/proj/mbtfpp.hpp
new file mode 100644
index 0000000000..123d1e4b02
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/mbtfpp.hpp
@@ -0,0 +1,199 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_MBTFPP_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_MBTFPP_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct mbtfpp {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace mbtfpp
+ {
+
+ static const double CS_ = .95257934441568037152;
+ static const double FXC = .92582009977255146156;
+ static const double FYC = 3.40168025708304504493;
+ //static const double C23 = .66666666666666666666;
+ //static const double C13 = .33333333333333333333;
+ static const double ONEEPS = 1.0000001;
+
+ template <typename T>
+ inline T C23() { return detail::TWOTHIRD<T>(); }
+ template <typename T>
+ inline T C13() { return detail::THIRD<T>(); }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_mbtfpp_spheroid : public base_t_fi<base_mbtfpp_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_mbtfpp_spheroid(const Parameters& par)
+ : base_t_fi<base_mbtfpp_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType C23 = mbtfpp::C23<CalculationType>();
+ static const CalculationType C13 = mbtfpp::C13<CalculationType>();
+
+ lp_lat = asin(CS_ * sin(lp_lat));
+ xy_x = FXC * lp_lon * (2. * cos(C23 * lp_lat) - 1.);
+ xy_y = FYC * sin(C13 * lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType C23 = mbtfpp::C23<CalculationType>();
+
+ lp_lat = xy_y / FYC;
+ if (fabs(lp_lat) >= 1.) {
+ if (fabs(lp_lat) > ONEEPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else
+ lp_lat = (lp_lat < 0.) ? -HALFPI : HALFPI;
+ } else
+ lp_lat = asin(lp_lat);
+ lp_lon = xy_x / ( FXC * (2. * cos(C23 * (lp_lat *= 3.)) - 1.) );
+ if (fabs(lp_lat = sin(lp_lat) / CS_) >= 1.) {
+ if (fabs(lp_lat) > ONEEPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else
+ lp_lat = (lp_lat < 0.) ? -HALFPI : HALFPI;
+ } else
+ lp_lat = asin(lp_lat);
+ }
+
+ static inline std::string get_name()
+ {
+ return "mbtfpp_spheroid";
+ }
+
+ };
+
+ // McBride-Thomas Flat-Polar Parabolic
+ template <typename Parameters>
+ inline void setup_mbtfpp(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::mbtfpp
+ #endif // doxygen
+
+ /*!
+ \brief McBride-Thomas Flat-Polar Parabolic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Example
+ \image html ex_mbtfpp.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct mbtfpp_spheroid : public detail::mbtfpp::base_mbtfpp_spheroid<CalculationType, Parameters>
+ {
+ inline mbtfpp_spheroid(const Parameters& par) : detail::mbtfpp::base_mbtfpp_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::mbtfpp::setup_mbtfpp(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::mbtfpp, mbtfpp_spheroid, mbtfpp_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class mbtfpp_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<mbtfpp_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void mbtfpp_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("mbtfpp", new mbtfpp_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_MBTFPP_HPP
+
diff --git a/boost/geometry/srs/projections/proj/mbtfpq.hpp b/boost/geometry/srs/projections/proj/mbtfpq.hpp
new file mode 100644
index 0000000000..b4eeb34d5a
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/mbtfpq.hpp
@@ -0,0 +1,208 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_MBTFPQ_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_MBTFPQ_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct mbtfpq {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace mbtfpq
+ {
+
+ static const int NITER = 20;
+ static const double EPS = 1e-7;
+ static const double ONETOL = 1.000001;
+ static const double C = 1.70710678118654752440;
+ static const double RC = 0.58578643762690495119;
+ static const double FYC = 1.87475828462269495505;
+ static const double RYC = 0.53340209679417701685;
+ static const double FXC = 0.31245971410378249250;
+ static const double RXC = 3.20041258076506210122;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_mbtfpq_spheroid : public base_t_fi<base_mbtfpq_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_mbtfpq_spheroid(const Parameters& par)
+ : base_t_fi<base_mbtfpq_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType th1, c;
+ int i;
+
+ c = C * sin(lp_lat);
+ for (i = NITER; i; --i) {
+ lp_lat -= th1 = (sin(.5*lp_lat) + sin(lp_lat) - c) /
+ (.5*cos(.5*lp_lat) + cos(lp_lat));
+ if (fabs(th1) < EPS) break;
+ }
+ xy_x = FXC * lp_lon * (1.0 + 2. * cos(lp_lat)/cos(0.5 * lp_lat));
+ xy_y = FYC * sin(0.5 * lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType t;
+
+ lp_lat = RYC * xy_y;
+ if (fabs(lp_lat) > 1.) {
+ if (fabs(lp_lat) > ONETOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else if (lp_lat < 0.) {
+ t = -1.; lp_lat = -ONEPI;
+ } else {
+ t = 1.; lp_lat = ONEPI;
+ }
+ } else
+ lp_lat = 2. * asin(t = lp_lat);
+ lp_lon = RXC * xy_x / (1. + 2. * cos(lp_lat)/cos(0.5 * lp_lat));
+ lp_lat = RC * (t + sin(lp_lat));
+ if (fabs(lp_lat) > 1.)
+ if (fabs(lp_lat) > ONETOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else
+ lp_lat = lp_lat < 0. ? -HALFPI : HALFPI;
+ else
+ lp_lat = asin(lp_lat);
+ }
+
+ static inline std::string get_name()
+ {
+ return "mbtfpq_spheroid";
+ }
+
+ };
+
+ // McBryde-Thomas Flat-Polar Quartic
+ template <typename Parameters>
+ inline void setup_mbtfpq(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::mbtfpq
+ #endif // doxygen
+
+ /*!
+ \brief McBryde-Thomas Flat-Polar Quartic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Example
+ \image html ex_mbtfpq.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct mbtfpq_spheroid : public detail::mbtfpq::base_mbtfpq_spheroid<CalculationType, Parameters>
+ {
+ inline mbtfpq_spheroid(const Parameters& par) : detail::mbtfpq::base_mbtfpq_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::mbtfpq::setup_mbtfpq(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::mbtfpq, mbtfpq_spheroid, mbtfpq_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class mbtfpq_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<mbtfpq_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void mbtfpq_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("mbtfpq", new mbtfpq_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_MBTFPQ_HPP
+
diff --git a/boost/geometry/srs/projections/proj/merc.hpp b/boost/geometry/srs/projections/proj/merc.hpp
new file mode 100644
index 0000000000..ac34aee33e
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/merc.hpp
@@ -0,0 +1,267 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_MERC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_MERC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_msfn.hpp>
+#include <boost/geometry/srs/projections/impl/pj_phi2.hpp>
+#include <boost/geometry/srs/projections/impl/pj_tsfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct merc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace merc
+ {
+
+ static const double EPS10 = 1.e-10;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_merc_ellipsoid : public base_t_fi<base_merc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_merc_ellipsoid(const Parameters& par)
+ : base_t_fi<base_merc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ if (fabs(fabs(lp_lat) - HALFPI) <= EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = this->m_par.k0 * lp_lon;
+ xy_y = - this->m_par.k0 * log(pj_tsfn(lp_lat, sin(lp_lat), this->m_par.e));
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ if ((lp_lat = pj_phi2(exp(- xy_y / this->m_par.k0), this->m_par.e)) == HUGE_VAL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ lp_lon = xy_x / this->m_par.k0;
+ }
+
+ static inline std::string get_name()
+ {
+ return "merc_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_merc_spheroid : public base_t_fi<base_merc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_merc_spheroid(const Parameters& par)
+ : base_t_fi<base_merc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+
+ if (fabs(fabs(lp_lat) - HALFPI) <= EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = this->m_par.k0 * lp_lon;
+ xy_y = this->m_par.k0 * log(tan(FORTPI + .5 * lp_lat));
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ lp_lat = HALFPI - 2. * atan(exp(-xy_y / this->m_par.k0));
+ lp_lon = xy_x / this->m_par.k0;
+ }
+
+ static inline std::string get_name()
+ {
+ return "merc_spheroid";
+ }
+
+ };
+
+ // Mercator
+ template <typename Parameters>
+ inline void setup_merc(Parameters& par)
+ {
+ typedef typename Parameters::type calc_t;
+ static const calc_t HALFPI = detail::HALFPI<calc_t>();
+
+ calc_t phits=0.0;
+ int is_phits;
+
+ if( (is_phits = pj_param(par.params, "tlat_ts").i) ) {
+ phits = fabs(pj_param(par.params, "rlat_ts").f);
+ if (phits >= HALFPI)
+ BOOST_THROW_EXCEPTION( projection_exception(-24) );
+ }
+ if (par.es) { /* ellipsoid */
+ if (is_phits)
+ par.k0 = pj_msfn(sin(phits), cos(phits), par.es);
+ } else { /* sphere */
+ if (is_phits)
+ par.k0 = cos(phits);
+ }
+ }
+
+ }} // namespace detail::merc
+ #endif // doxygen
+
+ /*!
+ \brief Mercator projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ \par Example
+ \image html ex_merc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct merc_ellipsoid : public detail::merc::base_merc_ellipsoid<CalculationType, Parameters>
+ {
+ inline merc_ellipsoid(const Parameters& par) : detail::merc::base_merc_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::merc::setup_merc(this->m_par);
+ }
+ };
+
+ /*!
+ \brief Mercator projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ \par Example
+ \image html ex_merc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct merc_spheroid : public detail::merc::base_merc_spheroid<CalculationType, Parameters>
+ {
+ inline merc_spheroid(const Parameters& par) : detail::merc::base_merc_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::merc::setup_merc(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::merc, merc_spheroid, merc_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class merc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<merc_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<merc_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void merc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("merc", new merc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_MERC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/mill.hpp b/boost/geometry/srs/projections/proj/mill.hpp
new file mode 100644
index 0000000000..1d3d4a01d2
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/mill.hpp
@@ -0,0 +1,167 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_MILL_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_MILL_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct mill {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace mill
+ {
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_mill_spheroid : public base_t_fi<base_mill_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_mill_spheroid(const Parameters& par)
+ : base_t_fi<base_mill_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+
+ xy_x = lp_lon;
+ xy_y = log(tan(FORTPI + lp_lat * .4)) * 1.25;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+
+ lp_lon = xy_x;
+ lp_lat = 2.5 * (atan(exp(.8 * xy_y)) - FORTPI);
+ }
+
+ static inline std::string get_name()
+ {
+ return "mill_spheroid";
+ }
+
+ };
+
+ // Miller Cylindrical
+ template <typename Parameters>
+ inline void setup_mill(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::mill
+ #endif // doxygen
+
+ /*!
+ \brief Miller Cylindrical projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Example
+ \image html ex_mill.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct mill_spheroid : public detail::mill::base_mill_spheroid<CalculationType, Parameters>
+ {
+ inline mill_spheroid(const Parameters& par) : detail::mill::base_mill_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::mill::setup_mill(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::mill, mill_spheroid, mill_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class mill_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<mill_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void mill_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("mill", new mill_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_MILL_HPP
+
diff --git a/boost/geometry/srs/projections/proj/mod_ster.hpp b/boost/geometry/srs/projections/proj/mod_ster.hpp
new file mode 100644
index 0000000000..8a50a275f9
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/mod_ster.hpp
@@ -0,0 +1,522 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_MOD_STER_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_MOD_STER_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+#include <boost/geometry/srs/projections/impl/pj_zpoly1.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct mil_os {};
+ struct lee_os {};
+ struct gs48 {};
+ struct alsk {};
+ struct gs50 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace mod_ster
+ {
+
+ static const double EPSLN = 1e-10;
+
+ template <typename T>
+ struct par_mod_ster
+ {
+ COMPLEX<T> *zcoeff;
+ T cchio, schio;
+ int n;
+ };
+
+ /* based upon Snyder and Linck, USGS-NMD */
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_mod_ster_ellipsoid : public base_t_fi<base_mod_ster_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_mod_ster<CalculationType> m_proj_parm;
+
+ inline base_mod_ster_ellipsoid(const Parameters& par)
+ : base_t_fi<base_mod_ster_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType sinlon, coslon, esphi, chi, schi, cchi, s;
+ COMPLEX<CalculationType> p;
+
+ sinlon = sin(lp_lon);
+ coslon = cos(lp_lon);
+ esphi = this->m_par.e * sin(lp_lat);
+ chi = 2. * atan(tan((HALFPI + lp_lat) * .5) *
+ pow((1. - esphi) / (1. + esphi), this->m_par.e * .5)) - HALFPI;
+ schi = sin(chi);
+ cchi = cos(chi);
+ s = 2. / (1. + this->m_proj_parm.schio * schi + this->m_proj_parm.cchio * cchi * coslon);
+ p.r = s * cchi * sinlon;
+ p.i = s * (this->m_proj_parm.cchio * schi - this->m_proj_parm.schio * cchi * coslon);
+ p = pj_zpoly1(p, this->m_proj_parm.zcoeff, this->m_proj_parm.n);
+ xy_x = p.r;
+ xy_y = p.i;
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ int nn;
+ COMPLEX<CalculationType> p, fxy, fpxy, dp;
+ CalculationType den, rh = 0, z, sinz = 0, cosz = 0, chi, phi = 0, dphi, esphi;
+
+ p.r = xy_x;
+ p.i = xy_y;
+ for (nn = 20; nn ;--nn) {
+ fxy = pj_zpolyd1(p, this->m_proj_parm.zcoeff, this->m_proj_parm.n, &fpxy);
+ fxy.r -= xy_x;
+ fxy.i -= xy_y;
+ den = fpxy.r * fpxy.r + fpxy.i * fpxy.i;
+ dp.r = -(fxy.r * fpxy.r + fxy.i * fpxy.i) / den;
+ dp.i = -(fxy.i * fpxy.r - fxy.r * fpxy.i) / den;
+ p.r += dp.r;
+ p.i += dp.i;
+ if ((fabs(dp.r) + fabs(dp.i)) <= EPSLN)
+ break;
+ }
+ if (nn) {
+ rh = boost::math::hypot(p.r, p.i);
+ z = 2. * atan(.5 * rh);
+ sinz = sin(z);
+ cosz = cos(z);
+ lp_lon = this->m_par.lam0;
+ if (fabs(rh) <= EPSLN) {
+ lp_lat = this->m_par.phi0;
+ return;
+ }
+ chi = aasin(cosz * this->m_proj_parm.schio + p.i * sinz * this->m_proj_parm.cchio / rh);
+ phi = chi;
+ for (nn = 20; nn ;--nn) {
+ esphi = this->m_par.e * sin(phi);
+ dphi = 2. * atan(tan((HALFPI + chi) * .5) *
+ pow((1. + esphi) / (1. - esphi), this->m_par.e * .5)) - HALFPI - phi;
+ phi += dphi;
+ if (fabs(dphi) <= EPSLN)
+ break;
+ }
+ }
+ if (nn) {
+ lp_lat = phi;
+ lp_lon = atan2(p.r * sinz, rh * this->m_proj_parm.cchio * cosz - p.i *
+ this->m_proj_parm.schio * sinz);
+ } else
+ lp_lon = lp_lat = HUGE_VAL;
+ }
+
+ static inline std::string get_name()
+ {
+ return "mod_ster_ellipsoid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_mod_ster<T>& proj_parm) /* general initialization */
+ {
+ T esphi, chio;
+
+ if (par.es) {
+ esphi = par.e * sin(par.phi0);
+ chio = 2. * atan(tan((geometry::math::half_pi<T>() + par.phi0) * .5) *
+ pow((1. - esphi) / (1. + esphi), par.e * .5)) - geometry::math::half_pi<T>();
+ } else
+ chio = par.phi0;
+ proj_parm.schio = sin(chio);
+ proj_parm.cchio = cos(chio);
+ }
+
+
+ // Miller Oblated Stereographic
+ template <typename Parameters, typename T>
+ inline void setup_mil_os(Parameters& par, par_mod_ster<T>& proj_parm)
+ {
+ static COMPLEX<T> /* Miller Oblated Stereographic */
+ AB[] = {
+ {0.924500, 0.},
+ {0., 0.},
+ {0.019430, 0.}
+ };
+
+ proj_parm.n = 2;
+ par.lam0 = geometry::math::d2r<T>() * 20.;
+ par.phi0 = geometry::math::d2r<T>() * 18.;
+ proj_parm.zcoeff = AB;
+ par.es = 0.;
+ setup(par, proj_parm);
+ }
+
+ // Lee Oblated Stereographic
+ template <typename Parameters, typename T>
+ inline void setup_lee_os(Parameters& par, par_mod_ster<T>& proj_parm)
+ {
+ static COMPLEX<T> /* Lee Oblated Stereographic */
+ AB[] = {
+ {0.721316, 0.},
+ {0., 0.},
+ {-0.0088162, -0.00617325}
+ };
+
+ proj_parm.n = 2;
+ par.lam0 = geometry::math::d2r<T>() * -165.;
+ par.phi0 = geometry::math::d2r<T>() * -10.;
+ proj_parm.zcoeff = AB;
+ par.es = 0.;
+ setup(par, proj_parm);
+ }
+
+ // Mod. Stererographics of 48 U.S.
+ template <typename Parameters, typename T>
+ inline void setup_gs48(Parameters& par, par_mod_ster<T>& proj_parm)
+ {
+ static COMPLEX<T> /* 48 United States */
+ AB[] = {
+ {0.98879, 0.},
+ {0., 0.},
+ {-0.050909, 0.},
+ {0., 0.},
+ {0.075528, 0.}
+ };
+
+ proj_parm.n = 4;
+ par.lam0 = geometry::math::d2r<T>() * -96.;
+ par.phi0 = geometry::math::d2r<T>() * -39.;
+ proj_parm.zcoeff = AB;
+ par.es = 0.;
+ par.a = 6370997.;
+ setup(par, proj_parm);
+ }
+
+ // Mod. Stererographics of Alaska
+ template <typename Parameters, typename T>
+ inline void setup_alsk(Parameters& par, par_mod_ster<T>& proj_parm)
+ {
+ static COMPLEX<T>
+ ABe[] = { /* Alaska ellipsoid */
+ {.9945303, 0.},
+ {.0052083, -.0027404},
+ {.0072721, .0048181},
+ {-.0151089, -.1932526},
+ {.0642675, -.1381226},
+ {.3582802, -.2884586}},
+ ABs[] = { /* Alaska sphere */
+ {.9972523, 0.},
+ {.0052513, -.0041175},
+ {.0074606, .0048125},
+ {-.0153783, -.1968253},
+ {.0636871, -.1408027},
+ {.3660976, -.2937382}
+ };
+
+ proj_parm.n = 5;
+ par.lam0 = geometry::math::d2r<T>() * -152.;
+ par.phi0 = geometry::math::d2r<T>() * 64.;
+ if (par.es) { /* fixed ellipsoid/sphere */
+ proj_parm.zcoeff = ABe;
+ par.a = 6378206.4;
+ par.e = sqrt(par.es = 0.00676866);
+ } else {
+ proj_parm.zcoeff = ABs;
+ par.a = 6370997.;
+ }
+ setup(par, proj_parm);
+ }
+
+ // Mod. Stererographics of 50 U.S.
+ template <typename Parameters, typename T>
+ inline void setup_gs50(Parameters& par, par_mod_ster<T>& proj_parm)
+ {
+ static COMPLEX<T>
+ ABe[] = { /* GS50 ellipsoid */
+ {.9827497, 0.},
+ {.0210669, .0053804},
+ {-.1031415, -.0571664},
+ {-.0323337, -.0322847},
+ {.0502303, .1211983},
+ {.0251805, .0895678},
+ {-.0012315, -.1416121},
+ {.0072202, -.1317091},
+ {-.0194029, .0759677},
+ {-.0210072, .0834037}
+ },
+ ABs[] = { /* GS50 sphere */
+ {.9842990, 0.},
+ {.0211642, .0037608},
+ {-.1036018, -.0575102},
+ {-.0329095, -.0320119},
+ {.0499471, .1223335},
+ {.0260460, .0899805},
+ {.0007388, -.1435792},
+ {.0075848, -.1334108},
+ {-.0216473, .0776645},
+ {-.0225161, .0853673}
+ };
+
+ proj_parm.n = 9;
+ par.lam0 = geometry::math::d2r<T>() * -120.;
+ par.phi0 = geometry::math::d2r<T>() * 45.;
+ if (par.es) { /* fixed ellipsoid/sphere */
+ proj_parm.zcoeff = ABe;
+ par.a = 6378206.4;
+ par.e = sqrt(par.es = 0.00676866);
+ } else {
+ proj_parm.zcoeff = ABs;
+ par.a = 6370997.;
+ }
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::mod_ster
+ #endif // doxygen
+
+ /*!
+ \brief Miller Oblated Stereographic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal (mod)
+ \par Example
+ \image html ex_mil_os.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct mil_os_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>
+ {
+ inline mil_os_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::mod_ster::setup_mil_os(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Lee Oblated Stereographic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal (mod)
+ \par Example
+ \image html ex_lee_os.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct lee_os_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>
+ {
+ inline lee_os_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::mod_ster::setup_lee_os(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Mod. Stererographics of 48 U.S. projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal (mod)
+ \par Example
+ \image html ex_gs48.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct gs48_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>
+ {
+ inline gs48_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::mod_ster::setup_gs48(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Mod. Stererographics of Alaska projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal (mod)
+ \par Example
+ \image html ex_alsk.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct alsk_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>
+ {
+ inline alsk_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::mod_ster::setup_alsk(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Mod. Stererographics of 50 U.S. projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal (mod)
+ \par Example
+ \image html ex_gs50.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct gs50_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>
+ {
+ inline gs50_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::mod_ster::setup_gs50(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::mil_os, mil_os_ellipsoid, mil_os_ellipsoid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::lee_os, lee_os_ellipsoid, lee_os_ellipsoid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::gs48, gs48_ellipsoid, gs48_ellipsoid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::alsk, alsk_ellipsoid, alsk_ellipsoid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::gs50, gs50_ellipsoid, gs50_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class mil_os_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<mil_os_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class lee_os_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<lee_os_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class gs48_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<gs48_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class alsk_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<alsk_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class gs50_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<gs50_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void mod_ster_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("mil_os", new mil_os_entry<CalculationType, Parameters>);
+ factory.add_to_factory("lee_os", new lee_os_entry<CalculationType, Parameters>);
+ factory.add_to_factory("gs48", new gs48_entry<CalculationType, Parameters>);
+ factory.add_to_factory("alsk", new alsk_entry<CalculationType, Parameters>);
+ factory.add_to_factory("gs50", new gs50_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_MOD_STER_HPP
+
diff --git a/boost/geometry/srs/projections/proj/moll.hpp b/boost/geometry/srs/projections/proj/moll.hpp
new file mode 100644
index 0000000000..6f02c7dea0
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/moll.hpp
@@ -0,0 +1,294 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_MOLL_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_MOLL_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct moll {};
+ struct wag4 {};
+ struct wag5 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace moll
+ {
+
+ static const int MAX_ITER = 10;
+ static const double LOOP_TOL = 1e-7;
+
+ template <typename T>
+ struct par_moll
+ {
+ T C_x, C_y, C_p;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_moll_spheroid : public base_t_fi<base_moll_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_moll<CalculationType> m_proj_parm;
+
+ inline base_moll_spheroid(const Parameters& par)
+ : base_t_fi<base_moll_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType k, V;
+ int i;
+
+ k = this->m_proj_parm.C_p * sin(lp_lat);
+ for (i = MAX_ITER; i ; --i) {
+ lp_lat -= V = (lp_lat + sin(lp_lat) - k) /
+ (1. + cos(lp_lat));
+ if (fabs(V) < LOOP_TOL)
+ break;
+ }
+ if (!i)
+ lp_lat = (lp_lat < 0.) ? -HALFPI : HALFPI;
+ else
+ lp_lat *= 0.5;
+ xy_x = this->m_proj_parm.C_x * lp_lon * cos(lp_lat);
+ xy_y = this->m_proj_parm.C_y * sin(lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = aasin(xy_y / this->m_proj_parm.C_y);
+ lp_lon = xy_x / (this->m_proj_parm.C_x * cos(lp_lat));
+ lp_lat += lp_lat;
+ lp_lat = aasin((lp_lat + sin(lp_lat)) / this->m_proj_parm.C_p);
+ }
+
+ static inline std::string get_name()
+ {
+ return "moll_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_moll<T>& proj_parm, T const& p)
+ {
+ T r, sp, p2 = p + p;
+
+ par.es = 0;
+ sp = sin(p);
+ r = sqrt(geometry::math::two_pi<T>() * sp / (p2 + sin(p2)));
+ proj_parm.C_x = 2. * r / geometry::math::pi<T>();
+ proj_parm.C_y = r / sp;
+ proj_parm.C_p = p2 + sin(p2);
+ }
+
+
+ // Mollweide
+ template <typename Parameters, typename T>
+ inline void setup_moll(Parameters& par, par_moll<T>& proj_parm)
+ {
+ setup(par, proj_parm, geometry::math::half_pi<T>());
+ }
+
+ // Wagner IV
+ template <typename Parameters, typename T>
+ inline void setup_wag4(Parameters& par, par_moll<T>& proj_parm)
+ {
+ setup(par, proj_parm, geometry::math::pi<T>()/3.);
+ }
+
+ // Wagner V
+ template <typename Parameters, typename T>
+ inline void setup_wag5(Parameters& par, par_moll<T>& proj_parm)
+ {
+ par.es = 0;
+ proj_parm.C_x = 0.90977;
+ proj_parm.C_y = 1.65014;
+ proj_parm.C_p = 3.00896;
+ }
+
+ }} // namespace detail::moll
+ #endif // doxygen
+
+ /*!
+ \brief Mollweide projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_moll.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct moll_spheroid : public detail::moll::base_moll_spheroid<CalculationType, Parameters>
+ {
+ inline moll_spheroid(const Parameters& par) : detail::moll::base_moll_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::moll::setup_moll(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Wagner IV projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_wag4.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wag4_spheroid : public detail::moll::base_moll_spheroid<CalculationType, Parameters>
+ {
+ inline wag4_spheroid(const Parameters& par) : detail::moll::base_moll_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::moll::setup_wag4(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Wagner V projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_wag5.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wag5_spheroid : public detail::moll::base_moll_spheroid<CalculationType, Parameters>
+ {
+ inline wag5_spheroid(const Parameters& par) : detail::moll::base_moll_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::moll::setup_wag5(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::moll, moll_spheroid, moll_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wag4, wag4_spheroid, wag4_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wag5, wag5_spheroid, wag5_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class moll_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<moll_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class wag4_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<wag4_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class wag5_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<wag5_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void moll_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("moll", new moll_entry<CalculationType, Parameters>);
+ factory.add_to_factory("wag4", new wag4_entry<CalculationType, Parameters>);
+ factory.add_to_factory("wag5", new wag5_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_MOLL_HPP
+
diff --git a/boost/geometry/srs/projections/proj/natearth.hpp b/boost/geometry/srs/projections/proj/natearth.hpp
new file mode 100644
index 0000000000..dcd259d9d1
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/natearth.hpp
@@ -0,0 +1,228 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_NATEARTH_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_NATEARTH_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// The Natural Earth projection was designed by Tom Patterson, US National Park
+// Service, in 2007, using Flex Projector. The shape of the original projection
+// was defined at every 5 degrees and piece-wise cubic spline interpolation was
+// used to compute the complete graticule.
+// The code here uses polynomial functions instead of cubic splines and
+// is therefore much simpler to program. The polynomial approximation was
+// developed by Bojan Savric, in collaboration with Tom Patterson and Bernhard
+// Jenny, Institute of Cartography, ETH Zurich. It slightly deviates from
+// Patterson's original projection by adding additional curvature to meridians
+// where they meet the horizontal pole line. This improvement is by intention
+// and designed in collaboration with Tom Patterson.
+// Port to PROJ.4 by Bernhard Jenny, 6 June 2011
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct natearth {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace natearth
+ {
+
+ static const double A0 = 0.8707;
+ static const double A1 = -0.131979;
+ static const double A2 = -0.013791;
+ static const double A3 = 0.003971;
+ static const double A4 = -0.001529;
+ static const double B0 = 1.007226;
+ static const double B1 = 0.015085;
+ static const double B2 = -0.044475;
+ static const double B3 = 0.028874;
+ static const double B4 = -0.005916;
+ static const double C0 = B0;
+ static const double C1 = (3 * B1);
+ static const double C2 = (7 * B2);
+ static const double C3 = (9 * B3);
+ static const double C4 = (11 * B4);
+ static const double EPS = 1e-11;
+ //static const double MAX_Y = (0.8707 * 0.52 * geometry::math::pi<double>());
+
+ template <typename T>
+ inline T MAX_Y() { return (0.8707 * 0.52 * detail::ONEPI<T>()); }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_natearth_spheroid : public base_t_fi<base_natearth_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_natearth_spheroid(const Parameters& par)
+ : base_t_fi<base_natearth_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType phi2, phi4;
+
+ phi2 = lp_lat * lp_lat;
+ phi4 = phi2 * phi2;
+ xy_x = lp_lon * (A0 + phi2 * (A1 + phi2 * (A2 + phi4 * phi2 * (A3 + phi2 * A4))));
+ xy_y = lp_lat * (B0 + phi2 * (B1 + phi4 * (B2 + B3 * phi2 + B4 * phi4)));
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType MAX_Y = natearth::MAX_Y<CalculationType>();
+
+ CalculationType yc, tol, y2, y4, f, fder;
+
+ /* make sure y is inside valid range */
+ if (xy_y > MAX_Y) {
+ xy_y = MAX_Y;
+ } else if (xy_y < -MAX_Y) {
+ xy_y = -MAX_Y;
+ }
+
+ /* latitude */
+ yc = xy_y;
+ for (;;) { /* Newton-Raphson */
+ y2 = yc * yc;
+ y4 = y2 * y2;
+ f = (yc * (B0 + y2 * (B1 + y4 * (B2 + B3 * y2 + B4 * y4)))) - xy_y;
+ fder = C0 + y2 * (C1 + y4 * (C2 + C3 * y2 + C4 * y4));
+ yc -= tol = f / fder;
+ if (fabs(tol) < EPS) {
+ break;
+ }
+ }
+ lp_lat = yc;
+
+ /* longitude */
+ y2 = yc * yc;
+ lp_lon = xy_x / (A0 + y2 * (A1 + y2 * (A2 + y2 * y2 * y2 * (A3 + y2 * A4))));
+ }
+
+ static inline std::string get_name()
+ {
+ return "natearth_spheroid";
+ }
+
+ };
+
+ // Natural Earth
+ template <typename Parameters>
+ inline void setup_natearth(Parameters& par)
+ {
+ par.es = 0;
+ }
+
+ }} // namespace detail::natearth
+ #endif // doxygen
+
+ /*!
+ \brief Natural Earth projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_natearth.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct natearth_spheroid : public detail::natearth::base_natearth_spheroid<CalculationType, Parameters>
+ {
+ inline natearth_spheroid(const Parameters& par) : detail::natearth::base_natearth_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::natearth::setup_natearth(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::natearth, natearth_spheroid, natearth_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class natearth_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<natearth_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void natearth_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("natearth", new natearth_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_NATEARTH_HPP
+
diff --git a/boost/geometry/srs/projections/proj/nell.hpp b/boost/geometry/srs/projections/proj/nell.hpp
new file mode 100644
index 0000000000..351a4101f7
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/nell.hpp
@@ -0,0 +1,180 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_NELL_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_NELL_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct nell {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace nell
+ {
+
+ static const int MAX_ITER = 10;
+ static const double LOOP_TOL = 1e-7;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_nell_spheroid : public base_t_fi<base_nell_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_nell_spheroid(const Parameters& par)
+ : base_t_fi<base_nell_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType k, V;
+ int i;
+
+ k = 2. * sin(lp_lat);
+ V = lp_lat * lp_lat;
+ lp_lat *= 1.00371 + V * (-0.0935382 + V * -0.011412);
+ for (i = MAX_ITER; i ; --i) {
+ lp_lat -= V = (lp_lat + sin(lp_lat) - k) /
+ (1. + cos(lp_lat));
+ if (fabs(V) < LOOP_TOL)
+ break;
+ }
+ xy_x = 0.5 * lp_lon * (1. + cos(lp_lat));
+ xy_y = lp_lat;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lon = 2. * xy_x / (1. + cos(xy_y));
+ lp_lat = aasin(0.5 * (xy_y + sin(xy_y)));
+ }
+
+ static inline std::string get_name()
+ {
+ return "nell_spheroid";
+ }
+
+ };
+
+ // Nell
+ template <typename Parameters>
+ inline void setup_nell(Parameters& par)
+ {
+ par.es = 0;
+ }
+
+ }} // namespace detail::nell
+ #endif // doxygen
+
+ /*!
+ \brief Nell projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_nell.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct nell_spheroid : public detail::nell::base_nell_spheroid<CalculationType, Parameters>
+ {
+ inline nell_spheroid(const Parameters& par) : detail::nell::base_nell_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::nell::setup_nell(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::nell, nell_spheroid, nell_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class nell_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<nell_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void nell_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("nell", new nell_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_NELL_HPP
+
diff --git a/boost/geometry/srs/projections/proj/nell_h.hpp b/boost/geometry/srs/projections/proj/nell_h.hpp
new file mode 100644
index 0000000000..05de9e263e
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/nell_h.hpp
@@ -0,0 +1,184 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_NELL_H_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_NELL_H_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct nell_h {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace nell_h
+ {
+
+ static const int NITER = 9;
+ static const double EPS = 1e-7;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_nell_h_spheroid : public base_t_fi<base_nell_h_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_nell_h_spheroid(const Parameters& par)
+ : base_t_fi<base_nell_h_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = 0.5 * lp_lon * (1. + cos(lp_lat));
+ xy_y = 2.0 * (lp_lat - tan(0.5 *lp_lat));
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType V, c, p;
+ int i;
+
+ p = 0.5 * xy_y;
+ for (i = NITER; i ; --i) {
+ c = cos(0.5 * lp_lat);
+ lp_lat -= V = (lp_lat - tan(lp_lat/2) - p)/(1. - 0.5/(c*c));
+ if (fabs(V) < EPS)
+ break;
+ }
+ if (!i) {
+ lp_lat = p < 0. ? -HALFPI : HALFPI;
+ lp_lon = 2. * xy_x;
+ } else
+ lp_lon = 2. * xy_x / (1. + cos(lp_lat));
+ }
+
+ static inline std::string get_name()
+ {
+ return "nell_h_spheroid";
+ }
+
+ };
+
+ // Nell-Hammer
+ template <typename Parameters>
+ inline void setup_nell_h(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::nell_h
+ #endif // doxygen
+
+ /*!
+ \brief Nell-Hammer projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_nell_h.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct nell_h_spheroid : public detail::nell_h::base_nell_h_spheroid<CalculationType, Parameters>
+ {
+ inline nell_h_spheroid(const Parameters& par) : detail::nell_h::base_nell_h_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::nell_h::setup_nell_h(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::nell_h, nell_h_spheroid, nell_h_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class nell_h_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<nell_h_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void nell_h_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("nell_h", new nell_h_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_NELL_H_HPP
+
diff --git a/boost/geometry/srs/projections/proj/nocol.hpp b/boost/geometry/srs/projections/proj/nocol.hpp
new file mode 100644
index 0000000000..ef2e95a843
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/nocol.hpp
@@ -0,0 +1,190 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_NOCOL_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_NOCOL_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct nicol {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace nocol
+ {
+
+ static const double EPS = 1e-10;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_nocol_spheroid : public base_t_f<base_nocol_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_nocol_spheroid(const Parameters& par)
+ : base_t_f<base_nocol_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ if (fabs(lp_lon) < EPS) {
+ xy_x = 0;
+ xy_y = lp_lat;
+ } else if (fabs(lp_lat) < EPS) {
+ xy_x = lp_lon;
+ xy_y = 0.;
+ } else if (fabs(fabs(lp_lon) - HALFPI) < EPS) {
+ xy_x = lp_lon * cos(lp_lat);
+ xy_y = HALFPI * sin(lp_lat);
+ } else if (fabs(fabs(lp_lat) - HALFPI) < EPS) {
+ xy_x = 0;
+ xy_y = lp_lat;
+ } else {
+ CalculationType tb, c, d, m, n, r2, sp;
+
+ tb = HALFPI / lp_lon - lp_lon / HALFPI;
+ c = lp_lat / HALFPI;
+ d = (1 - c * c)/((sp = sin(lp_lat)) - c);
+ r2 = tb / d;
+ r2 *= r2;
+ m = (tb * sp / d - 0.5 * tb)/(1. + r2);
+ n = (sp / r2 + 0.5 * d)/(1. + 1./r2);
+ xy_x = cos(lp_lat);
+ xy_x = sqrt(m * m + xy_x * xy_x / (1. + r2));
+ xy_x = HALFPI * ( m + (lp_lon < 0. ? -xy_x : xy_x));
+ xy_y = sqrt(n * n - (sp * sp / r2 + d * sp - 1.) /
+ (1. + 1./r2));
+ xy_y = HALFPI * ( n + (lp_lat < 0. ? xy_y : -xy_y ));
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "nocol_spheroid";
+ }
+
+ };
+
+ // Nicolosi Globular
+ template <typename Parameters>
+ inline void setup_nicol(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::nocol
+ #endif // doxygen
+
+ /*!
+ \brief Nicolosi Globular projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_nicol.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct nicol_spheroid : public detail::nocol::base_nocol_spheroid<CalculationType, Parameters>
+ {
+ inline nicol_spheroid(const Parameters& par) : detail::nocol::base_nocol_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::nocol::setup_nicol(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::nicol, nicol_spheroid, nicol_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class nicol_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<nicol_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void nocol_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("nicol", new nicol_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_NOCOL_HPP
+
diff --git a/boost/geometry/srs/projections/proj/nsper.hpp b/boost/geometry/srs/projections/proj/nsper.hpp
new file mode 100644
index 0000000000..85576bf963
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/nsper.hpp
@@ -0,0 +1,355 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_NSPER_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_NSPER_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/config.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct nsper {};
+ struct tpers {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace nsper
+ {
+
+ static const double EPS10 = 1.e-10;
+ static const int N_POLE = 0;
+ static const int S_POLE = 1;
+ static const int EQUIT = 2;
+ static const int OBLIQ = 3;
+
+ template <typename T>
+ struct par_nsper
+ {
+ T height;
+ T sinph0;
+ T cosph0;
+ T p;
+ T rp;
+ T pn1;
+ T pfact;
+ T h;
+ T cg;
+ T sg;
+ T sw;
+ T cw;
+ int mode;
+ int tilt;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_nsper_spheroid : public base_t_fi<base_nsper_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_nsper<CalculationType> m_proj_parm;
+
+ inline base_nsper_spheroid(const Parameters& par)
+ : base_t_fi<base_nsper_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType coslam, cosphi, sinphi;
+
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ coslam = cos(lp_lon);
+ switch (this->m_proj_parm.mode) {
+ case OBLIQ:
+ xy_y = this->m_proj_parm.sinph0 * sinphi + this->m_proj_parm.cosph0 * cosphi * coslam;
+ break;
+ case EQUIT:
+ xy_y = cosphi * coslam;
+ break;
+ case S_POLE:
+ xy_y = - sinphi;
+ break;
+ case N_POLE:
+ xy_y = sinphi;
+ break;
+ }
+ if (xy_y < this->m_proj_parm.rp)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_y = this->m_proj_parm.pn1 / (this->m_proj_parm.p - xy_y);
+ xy_x = xy_y * cosphi * sin(lp_lon);
+ switch (this->m_proj_parm.mode) {
+ case OBLIQ:
+ xy_y *= (this->m_proj_parm.cosph0 * sinphi -
+ this->m_proj_parm.sinph0 * cosphi * coslam);
+ break;
+ case EQUIT:
+ xy_y *= sinphi;
+ break;
+ case N_POLE:
+ coslam = - coslam;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ xy_y *= cosphi * coslam;
+ break;
+ }
+ if (this->m_proj_parm.tilt) {
+ CalculationType yt, ba;
+
+ yt = xy_y * this->m_proj_parm.cg + xy_x * this->m_proj_parm.sg;
+ ba = 1. / (yt * this->m_proj_parm.sw * this->m_proj_parm.h + this->m_proj_parm.cw);
+ xy_x = (xy_x * this->m_proj_parm.cg - xy_y * this->m_proj_parm.sg) * this->m_proj_parm.cw * ba;
+ xy_y = yt * ba;
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType rh, cosz, sinz;
+
+ if (this->m_proj_parm.tilt) {
+ CalculationType bm, bq, yt;
+
+ yt = 1./(this->m_proj_parm.pn1 - xy_y * this->m_proj_parm.sw);
+ bm = this->m_proj_parm.pn1 * xy_x * yt;
+ bq = this->m_proj_parm.pn1 * xy_y * this->m_proj_parm.cw * yt;
+ xy_x = bm * this->m_proj_parm.cg + bq * this->m_proj_parm.sg;
+ xy_y = bq * this->m_proj_parm.cg - bm * this->m_proj_parm.sg;
+ }
+ rh = boost::math::hypot(xy_x, xy_y);
+ if ((sinz = 1. - rh * rh * this->m_proj_parm.pfact) < 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ sinz = (this->m_proj_parm.p - sqrt(sinz)) / (this->m_proj_parm.pn1 / rh + rh / this->m_proj_parm.pn1);
+ cosz = sqrt(1. - sinz * sinz);
+ if (fabs(rh) <= EPS10) {
+ lp_lon = 0.;
+ lp_lat = this->m_par.phi0;
+ } else {
+ switch (this->m_proj_parm.mode) {
+ case OBLIQ:
+ lp_lat = asin(cosz * this->m_proj_parm.sinph0 + xy_y * sinz * this->m_proj_parm.cosph0 / rh);
+ xy_y = (cosz - this->m_proj_parm.sinph0 * sin(lp_lat)) * rh;
+ xy_x *= sinz * this->m_proj_parm.cosph0;
+ break;
+ case EQUIT:
+ lp_lat = asin(xy_y * sinz / rh);
+ xy_y = cosz * rh;
+ xy_x *= sinz;
+ break;
+ case N_POLE:
+ lp_lat = asin(cosz);
+ xy_y = -xy_y;
+ break;
+ case S_POLE:
+ lp_lat = - asin(cosz);
+ break;
+ }
+ lp_lon = atan2(xy_x, xy_y);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "nsper_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_nsper<T>& proj_parm)
+ {
+ if ((proj_parm.height = pj_param(par.params, "dh").f) <= 0.)
+ BOOST_THROW_EXCEPTION( projection_exception(-30) );
+ if (fabs(fabs(par.phi0) - geometry::math::half_pi<T>()) < EPS10)
+ proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE;
+ else if (fabs(par.phi0) < EPS10)
+ proj_parm.mode = EQUIT;
+ else {
+ proj_parm.mode = OBLIQ;
+ proj_parm.sinph0 = sin(par.phi0);
+ proj_parm.cosph0 = cos(par.phi0);
+ }
+ proj_parm.pn1 = proj_parm.height / par.a; /* normalize by radius */
+ proj_parm.p = 1. + proj_parm.pn1;
+ proj_parm.rp = 1. / proj_parm.p;
+ proj_parm.h = 1. / proj_parm.pn1;
+ proj_parm.pfact = (proj_parm.p + 1.) * proj_parm.h;
+ par.es = 0.;
+ }
+
+
+ // Near-sided perspective
+ template <typename Parameters, typename T>
+ inline void setup_nsper(Parameters& par, par_nsper<T>& proj_parm)
+ {
+ proj_parm.tilt = 0;
+ setup(par, proj_parm);
+ }
+
+ // Tilted perspective
+ template <typename Parameters, typename T>
+ inline void setup_tpers(Parameters& par, par_nsper<T>& proj_parm)
+ {
+ T omega, gamma;
+
+ omega = pj_param(par.params, "dtilt").f * geometry::math::d2r<T>();
+ gamma = pj_param(par.params, "dazi").f * geometry::math::d2r<T>();
+ proj_parm.tilt = 1;
+ proj_parm.cg = cos(gamma); proj_parm.sg = sin(gamma);
+ proj_parm.cw = cos(omega); proj_parm.sw = sin(omega);
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::nsper
+ #endif // doxygen
+
+ /*!
+ \brief Near-sided perspective projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ \par Projection parameters
+ - h: Height
+ \par Example
+ \image html ex_nsper.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct nsper_spheroid : public detail::nsper::base_nsper_spheroid<CalculationType, Parameters>
+ {
+ inline nsper_spheroid(const Parameters& par) : detail::nsper::base_nsper_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::nsper::setup_nsper(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Tilted perspective projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ \par Projection parameters
+ - tilt: Tilt, or Omega (real)
+ - azi: Azimuth (or Gamma) (real)
+ - h: Height
+ \par Example
+ \image html ex_tpers.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct tpers_spheroid : public detail::nsper::base_nsper_spheroid<CalculationType, Parameters>
+ {
+ inline tpers_spheroid(const Parameters& par) : detail::nsper::base_nsper_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::nsper::setup_tpers(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::nsper, nsper_spheroid, nsper_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::tpers, tpers_spheroid, tpers_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class nsper_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<nsper_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class tpers_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<tpers_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void nsper_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("nsper", new nsper_entry<CalculationType, Parameters>);
+ factory.add_to_factory("tpers", new tpers_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_NSPER_HPP
+
diff --git a/boost/geometry/srs/projections/proj/nzmg.hpp b/boost/geometry/srs/projections/proj/nzmg.hpp
new file mode 100644
index 0000000000..067eece27a
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/nzmg.hpp
@@ -0,0 +1,255 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_NZMG_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_NZMG_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Purpose: Implementation of the nzmg (New Zealand Map Grid) projection.
+// Very loosely based upon DMA code by Bradford W. Drew
+// Author: Gerald Evenden
+// Copyright (c) 1995, Gerald Evenden
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_zpoly1.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct nzmg {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace nzmg
+ {
+
+ static const double EPSLN = 1e-10;
+ //static const double SEC5_TO_RAD = 0.4848136811095359935899141023;
+ //static const double RAD_TO_SEC5 = 2.062648062470963551564733573;
+ static const int Nbf = 5;
+ static const int Ntpsi = 9;
+ static const int Ntphi = 8;
+
+ template <typename T>
+ inline T SEC5_TO_RAD() { return 0.4848136811095359935899141023; }
+ template <typename T>
+ inline T RAD_TO_SEC5() { return 2.062648062470963551564733573; }
+
+ template <typename T>
+ inline const COMPLEX<T> * bf()
+ {
+ static const COMPLEX<T> result[] = {
+ {.7557853228, 0.0},
+ {.249204646, .003371507},
+ {-.001541739, .041058560},
+ {-.10162907, .01727609},
+ {-.26623489, -.36249218},
+ {-.6870983, -1.1651967}
+ };
+ return result;
+ }
+
+ template <typename T>
+ inline const T * tphi()
+ {
+ static const T result[] = { 1.5627014243, .5185406398, -.03333098, -.1052906, -.0368594,
+ .007317, .01220, .00394, -.0013 };
+ return result;
+ }
+ template <typename T>
+ inline const T * tpsi()
+ {
+ static const T result[] = { .6399175073, -.1358797613, .063294409, -.02526853, .0117879,
+ -.0055161, .0026906, -.001333, .00067, -.00034 };
+ return result;
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_nzmg_ellipsoid : public base_t_fi<base_nzmg_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_nzmg_ellipsoid(const Parameters& par)
+ : base_t_fi<base_nzmg_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType RAD_TO_SEC5 = nzmg::RAD_TO_SEC5<CalculationType>();
+
+ COMPLEX<CalculationType> p;
+ const CalculationType * C;
+ int i;
+
+ lp_lat = (lp_lat - this->m_par.phi0) * RAD_TO_SEC5;
+ for (p.r = *(C = tpsi<CalculationType>() + (i = Ntpsi)); i ; --i)
+ p.r = *--C + lp_lat * p.r;
+ p.r *= lp_lat;
+ p.i = lp_lon;
+ p = pj_zpoly1(p, bf<CalculationType>(), Nbf);
+ xy_x = p.i;
+ xy_y = p.r;
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType SEC5_TO_RAD = nzmg::SEC5_TO_RAD<CalculationType>();
+
+ int nn, i;
+ COMPLEX<CalculationType> p, f, fp, dp;
+ CalculationType den;
+ const CalculationType* C;
+
+ p.r = xy_y;
+ p.i = xy_x;
+ for (nn = 20; nn ;--nn) {
+ f = pj_zpolyd1(p, bf<CalculationType>(), Nbf, &fp);
+ f.r -= xy_y;
+ f.i -= xy_x;
+ den = fp.r * fp.r + fp.i * fp.i;
+ p.r += dp.r = -(f.r * fp.r + f.i * fp.i) / den;
+ p.i += dp.i = -(f.i * fp.r - f.r * fp.i) / den;
+ if ((fabs(dp.r) + fabs(dp.i)) <= EPSLN)
+ break;
+ }
+ if (nn) {
+ lp_lon = p.i;
+ for (lp_lat = *(C = tphi<CalculationType>() + (i = Ntphi)); i ; --i)
+ lp_lat = *--C + p.r * lp_lat;
+ lp_lat = this->m_par.phi0 + p.r * lp_lat * SEC5_TO_RAD;
+ } else
+ lp_lon = lp_lat = HUGE_VAL;
+ }
+
+ static inline std::string get_name()
+ {
+ return "nzmg_ellipsoid";
+ }
+
+ };
+
+ // New Zealand Map Grid
+ template <typename Parameters>
+ inline void setup_nzmg(Parameters& par)
+ {
+ typedef typename Parameters::type calc_t;
+
+ /* force to International major axis */
+ par.ra = 1. / (par.a = 6378388.0);
+ par.lam0 = geometry::math::d2r<calc_t>() * 173.;
+ par.phi0 = geometry::math::d2r<calc_t>() * -41.;
+ par.x0 = 2510000.;
+ par.y0 = 6023150.;
+ }
+
+ }} // namespace detail::nzmg
+ #endif // doxygen
+
+ /*!
+ \brief New Zealand Map Grid projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Fixed Earth
+ \par Example
+ \image html ex_nzmg.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct nzmg_ellipsoid : public detail::nzmg::base_nzmg_ellipsoid<CalculationType, Parameters>
+ {
+ inline nzmg_ellipsoid(const Parameters& par) : detail::nzmg::base_nzmg_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::nzmg::setup_nzmg(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::nzmg, nzmg_ellipsoid, nzmg_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class nzmg_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<nzmg_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void nzmg_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("nzmg", new nzmg_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_NZMG_HPP
+
diff --git a/boost/geometry/srs/projections/proj/ob_tran.hpp b/boost/geometry/srs/projections/proj/ob_tran.hpp
new file mode 100644
index 0000000000..ae74cc27d2
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/ob_tran.hpp
@@ -0,0 +1,575 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_OB_TRAN_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_OB_TRAN_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ //struct ob_tran_oblique {};
+ //struct ob_tran_transverse {};
+ struct ob_tran {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail {
+
+ // fwd declaration needed below
+ template <typename CalculationType>
+ inline detail::base_v<CalculationType, parameters<CalculationType> >*
+ create_new(parameters<CalculationType> const& parameters);
+
+ } // namespace detail
+
+ namespace detail { namespace ob_tran
+ {
+
+ static const double TOL = 1e-10;
+
+ template <typename Parameters>
+ inline Parameters o_proj_parameters(Parameters const& par)
+ {
+ Parameters pj;
+
+ /* get name of projection to be translated */
+ pj.name = pj_param(par.params, "so_proj").s;
+ /* copy existing header into new */
+ pj.params = par.params;
+ pj.over = par.over;
+ pj.geoc = par.geoc;
+ pj.a = par.a;
+ pj.es = par.es;
+ pj.ra = par.ra;
+ pj.lam0 = par.lam0;
+ pj.phi0 = par.phi0;
+ pj.x0 = par.x0;
+ pj.y0 = par.y0;
+ pj.k0 = par.k0;
+ /* force spherical earth */
+ pj.one_es = pj.rone_es = 1.;
+ pj.es = pj.e = 0.;
+
+ return pj;
+ }
+
+ template <typename CalculationType, typename Parameters>
+ struct par_ob_tran
+ {
+ par_ob_tran(Parameters const& par)
+ : link(projections::detail::create_new(o_proj_parameters(par)))
+ {
+ if (! link.get())
+ BOOST_THROW_EXCEPTION( projection_exception(-26) );
+ }
+
+ template <typename T>
+ inline void fwd(T& lp_lon, T& lp_lat, T& xy_x, T& xy_y) const
+ {
+ link->fwd(lp_lon, lp_lat, xy_x, xy_y);
+ }
+
+ template <typename T>
+ inline void inv(T& xy_x, T& xy_y, T& lp_lon, T& lp_lat) const
+ {
+ link->inv(xy_x, xy_y, lp_lon, lp_lat);
+ }
+
+ boost::shared_ptr<base_v<CalculationType, Parameters> > link;
+ CalculationType lamp;
+ CalculationType cphip, sphip;
+ };
+
+ template <typename StaticParameters, typename CalculationType, typename Parameters>
+ struct par_ob_tran_static
+ {
+ typedef typename srs::par4::detail::pick_o_proj_tag
+ <
+ StaticParameters
+ >::type o_proj_tag;
+
+ typedef typename projections::detail::static_projection_type
+ <
+ o_proj_tag,
+ srs_sphere_tag, // force spherical
+ StaticParameters,
+ CalculationType,
+ Parameters
+ >::type projection_type;
+
+ par_ob_tran_static(Parameters const& par)
+ : link(o_proj_parameters(par))
+ {}
+
+ template <typename T>
+ inline void fwd(T& lp_lon, T& lp_lat, T& xy_x, T& xy_y) const
+ {
+ link.fwd(lp_lon, lp_lat, xy_x, xy_y);
+ }
+
+ template <typename T>
+ inline void inv(T& xy_x, T& xy_y, T& lp_lon, T& lp_lat) const
+ {
+ link.inv(xy_x, xy_y, lp_lon, lp_lat);
+ }
+
+ projection_type link;
+ CalculationType lamp;
+ CalculationType cphip, sphip;
+ };
+
+ template <typename T, typename Par>
+ inline void o_forward(T& lp_lon, T& lp_lat, T& xy_x, T& xy_y, Par const& proj_parm)
+ {
+ T coslam, sinphi, cosphi;
+
+ coslam = cos(lp_lon);
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ lp_lon = adjlon(aatan2(cosphi * sin(lp_lon), proj_parm.sphip * cosphi * coslam +
+ proj_parm.cphip * sinphi) + proj_parm.lamp);
+ lp_lat = aasin(proj_parm.sphip * sinphi - proj_parm.cphip * cosphi * coslam);
+
+ proj_parm.fwd(lp_lon, lp_lat, xy_x, xy_y);
+ }
+
+ template <typename T, typename Par>
+ inline void o_inverse(T& xy_x, T& xy_y, T& lp_lon, T& lp_lat, Par const& proj_parm)
+ {
+ T coslam, sinphi, cosphi;
+
+ proj_parm.inv(xy_x, xy_y, lp_lon, lp_lat);
+ if (lp_lon != HUGE_VAL) {
+ coslam = cos(lp_lon -= proj_parm.lamp);
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ lp_lat = aasin(proj_parm.sphip * sinphi + proj_parm.cphip * cosphi * coslam);
+ lp_lon = aatan2(cosphi * sin(lp_lon), proj_parm.sphip * cosphi * coslam -
+ proj_parm.cphip * sinphi);
+ }
+ }
+
+ template <typename T, typename Par>
+ inline void t_forward(T& lp_lon, T& lp_lat, T& xy_x, T& xy_y, Par const& proj_parm)
+ {
+ T cosphi, coslam;
+
+ cosphi = cos(lp_lat);
+ coslam = cos(lp_lon);
+ lp_lon = adjlon(aatan2(cosphi * sin(lp_lon), sin(lp_lat)) + proj_parm.lamp);
+ lp_lat = aasin(- cosphi * coslam);
+ proj_parm.fwd(lp_lon, lp_lat, xy_x, xy_y);
+ }
+
+ template <typename T, typename Par>
+ inline void t_inverse(T& xy_x, T& xy_y, T& lp_lon, T& lp_lat, Par const& proj_parm)
+ {
+ T cosphi, t;
+
+ proj_parm.inv(xy_x, xy_y, lp_lon, lp_lat);
+ if (lp_lon != HUGE_VAL) {
+ cosphi = cos(lp_lat);
+ t = lp_lon - proj_parm.lamp;
+ lp_lon = aatan2(cosphi * sin(t), - sin(lp_lat));
+ lp_lat = aasin(cosphi * cos(t));
+ }
+ }
+
+ // General Oblique Transformation
+ template <typename CalculationType, typename Parameters, typename ProjParameters>
+ inline CalculationType setup_ob_tran(Parameters & par, ProjParameters& proj_parm)
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType phip;
+
+ par.es = 0.; /* force to spherical */
+
+ // proj_parm.link should be created at this point
+
+ if (pj_param(par.params, "to_alpha").i) {
+ CalculationType lamc, phic, alpha;
+
+ lamc = pj_param(par.params, "ro_lon_c").f;
+ phic = pj_param(par.params, "ro_lat_c").f;
+ alpha = pj_param(par.params, "ro_alpha").f;
+ /*
+ if (fabs(phic) <= TOL ||
+ fabs(fabs(phic) - HALFPI) <= TOL ||
+ fabs(fabs(alpha) - HALFPI) <= TOL)
+ */
+ if (fabs(fabs(phic) - HALFPI) <= TOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-32) );
+ proj_parm.lamp = lamc + aatan2(-cos(alpha), -sin(alpha) * sin(phic));
+ phip = aasin(cos(phic) * sin(alpha));
+ } else if (pj_param(par.params, "to_lat_p").i) { /* specified new pole */
+ proj_parm.lamp = pj_param(par.params, "ro_lon_p").f;
+ phip = pj_param(par.params, "ro_lat_p").f;
+ } else { /* specified new "equator" points */
+ CalculationType lam1, lam2, phi1, phi2, con;
+
+ lam1 = pj_param(par.params, "ro_lon_1").f;
+ phi1 = pj_param(par.params, "ro_lat_1").f;
+ lam2 = pj_param(par.params, "ro_lon_2").f;
+ phi2 = pj_param(par.params, "ro_lat_2").f;
+ if (fabs(phi1 - phi2) <= TOL ||
+ (con = fabs(phi1)) <= TOL ||
+ fabs(con - HALFPI) <= TOL ||
+ fabs(fabs(phi2) - HALFPI) <= TOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-33) );
+ proj_parm.lamp = atan2(cos(phi1) * sin(phi2) * cos(lam1) -
+ sin(phi1) * cos(phi2) * cos(lam2),
+ sin(phi1) * cos(phi2) * sin(lam2) -
+ cos(phi1) * sin(phi2) * sin(lam1));
+ phip = atan(-cos(proj_parm.lamp - lam1) / tan(phi1));
+ }
+ if (fabs(phip) > TOL) { /* oblique */
+ proj_parm.cphip = cos(phip);
+ proj_parm.sphip = sin(phip);
+ } else { /* transverse */
+ }
+ // return phip to choose model
+ return phip;
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_ob_tran_oblique : public base_t_fi<base_ob_tran_oblique<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_ob_tran<CalculationType, Parameters> m_proj_parm;
+
+ inline base_ob_tran_oblique(Parameters const& par,
+ par_ob_tran<CalculationType, Parameters> const& proj_parm)
+ : base_t_fi
+ <
+ base_ob_tran_oblique<CalculationType, Parameters>, CalculationType, Parameters
+ >(*this, par)
+ , m_proj_parm(proj_parm)
+ {}
+
+ // FORWARD(o_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ o_forward(lp_lon, lp_lat, xy_x, xy_y, this->m_proj_parm);
+ }
+
+ // INVERSE(o_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ o_inverse(xy_x, xy_y, lp_lon, lp_lat, this->m_proj_parm);
+ }
+
+ static inline std::string get_name()
+ {
+ return "ob_tran_oblique";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_ob_tran_transverse : public base_t_fi<base_ob_tran_transverse<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_ob_tran<CalculationType, Parameters> m_proj_parm;
+
+ inline base_ob_tran_transverse(Parameters const& par,
+ par_ob_tran<CalculationType, Parameters> const& proj_parm)
+ : base_t_fi
+ <
+ base_ob_tran_transverse<CalculationType, Parameters>, CalculationType, Parameters
+ >(*this, par)
+ , m_proj_parm(proj_parm)
+ {}
+
+ // FORWARD(t_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ t_forward(lp_lon, lp_lat, xy_x, xy_y, this->m_proj_parm);
+ }
+
+ // INVERSE(t_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ t_inverse(xy_x, xy_y, lp_lon, lp_lat, this->m_proj_parm);
+ }
+
+ static inline std::string get_name()
+ {
+ return "ob_tran_transverse";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename StaticParameters, typename CalculationType, typename Parameters>
+ struct base_ob_tran_static : public base_t_fi<base_ob_tran_static<StaticParameters, CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_ob_tran_static<StaticParameters, CalculationType, Parameters> m_proj_parm;
+ bool m_is_oblique;
+
+ inline base_ob_tran_static(Parameters const& par)
+ : base_t_fi<base_ob_tran_static<StaticParameters, CalculationType, Parameters>, CalculationType, Parameters>(*this, par)
+ , m_proj_parm(par)
+ {}
+
+ // FORWARD(o_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ if (m_is_oblique) {
+ o_forward(lp_lon, lp_lat, xy_x, xy_y, this->m_proj_parm);
+ } else {
+ t_forward(lp_lon, lp_lat, xy_x, xy_y, this->m_proj_parm);
+ }
+ }
+
+ // INVERSE(o_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ if (m_is_oblique) {
+ o_inverse(xy_x, xy_y, lp_lon, lp_lat, this->m_proj_parm);
+ } else {
+ t_inverse(xy_x, xy_y, lp_lon, lp_lat, this->m_proj_parm);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "ob_tran";
+ }
+
+ };
+
+ }} // namespace detail::ob_tran
+ #endif // doxygen
+
+ /*!
+ \brief General Oblique Transformation projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ \par Projection parameters
+ - o_proj (string)
+ - Plus projection parameters
+ - o_lat_p (degrees)
+ - o_lon_p (degrees)
+ - New pole
+ - o_alpha: Alpha (degrees)
+ - o_lon_c (degrees)
+ - o_lat_c (degrees)
+ - o_lon_1 (degrees)
+ - o_lat_1: Latitude of first standard parallel (degrees)
+ - o_lon_2 (degrees)
+ - o_lat_2: Latitude of second standard parallel (degrees)
+ \par Example
+ \image html ex_ob_tran.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct ob_tran_oblique : public detail::ob_tran::base_ob_tran_oblique<CalculationType, Parameters>
+ {
+ inline ob_tran_oblique(Parameters const& par,
+ detail::ob_tran::par_ob_tran<CalculationType, Parameters> const& proj_parm)
+ : detail::ob_tran::base_ob_tran_oblique<CalculationType, Parameters>(par, proj_parm)
+ {
+ // already done
+ //detail::ob_tran::setup_ob_tran(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief General Oblique Transformation projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ \par Projection parameters
+ - o_proj (string)
+ - Plus projection parameters
+ - o_lat_p (degrees)
+ - o_lon_p (degrees)
+ - New pole
+ - o_alpha: Alpha (degrees)
+ - o_lon_c (degrees)
+ - o_lat_c (degrees)
+ - o_lon_1 (degrees)
+ - o_lat_1: Latitude of first standard parallel (degrees)
+ - o_lon_2 (degrees)
+ - o_lat_2: Latitude of second standard parallel (degrees)
+ \par Example
+ \image html ex_ob_tran.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct ob_tran_transverse : public detail::ob_tran::base_ob_tran_transverse<CalculationType, Parameters>
+ {
+ inline ob_tran_transverse(Parameters const& par,
+ detail::ob_tran::par_ob_tran<CalculationType, Parameters> const& proj_parm)
+ : detail::ob_tran::base_ob_tran_transverse<CalculationType, Parameters>(par, proj_parm)
+ {
+ // already done
+ //detail::ob_tran::setup_ob_tran(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief General Oblique Transformation projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ \par Projection parameters
+ - o_proj (string)
+ - Plus projection parameters
+ - o_lat_p (degrees)
+ - o_lon_p (degrees)
+ - New pole
+ - o_alpha: Alpha (degrees)
+ - o_lon_c (degrees)
+ - o_lat_c (degrees)
+ - o_lon_1 (degrees)
+ - o_lat_1: Latitude of first standard parallel (degrees)
+ - o_lon_2 (degrees)
+ - o_lat_2: Latitude of second standard parallel (degrees)
+ \par Example
+ \image html ex_ob_tran.gif
+ */
+ template <typename StaticParameters, typename CalculationType, typename Parameters>
+ struct ob_tran_static : public detail::ob_tran::base_ob_tran_static<StaticParameters, CalculationType, Parameters>
+ {
+ inline ob_tran_static(const Parameters& par)
+ : detail::ob_tran::base_ob_tran_static<StaticParameters, CalculationType, Parameters>(par)
+ {
+ CalculationType phip = detail::ob_tran::setup_ob_tran<CalculationType>(this->m_par, this->m_proj_parm);
+ this->m_is_oblique = fabs(phip) > detail::ob_tran::TOL;
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ template <typename BGP, typename CT, typename P>
+ struct static_projection_type<srs::par4::ob_tran, srs_sphere_tag, BGP, CT, P>
+ {
+ typedef ob_tran_static<BGP, CT, P> type;
+ };
+ template <typename BGP, typename CT, typename P>
+ struct static_projection_type<srs::par4::ob_tran, srs_spheroid_tag, BGP, CT, P>
+ {
+ typedef ob_tran_static<BGP, CT, P> type;
+ };
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class ob_tran_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ Parameters params = par;
+ detail::ob_tran::par_ob_tran<CalculationType, Parameters> proj_parm(params);
+ CalculationType phip = detail::ob_tran::setup_ob_tran<CalculationType>(params, proj_parm);
+
+ if (fabs(phip) > detail::ob_tran::TOL)
+ return new base_v_fi<ob_tran_oblique<CalculationType, Parameters>, CalculationType, Parameters>(params, proj_parm);
+ else
+ return new base_v_fi<ob_tran_transverse<CalculationType, Parameters>, CalculationType, Parameters>(params, proj_parm);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void ob_tran_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("ob_tran", new ob_tran_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_OB_TRAN_HPP
+
diff --git a/boost/geometry/srs/projections/proj/ocea.hpp b/boost/geometry/srs/projections/proj/ocea.hpp
new file mode 100644
index 0000000000..4b8da5be6e
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/ocea.hpp
@@ -0,0 +1,231 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_OCEA_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_OCEA_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct ocea {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace ocea
+ {
+ template <typename T>
+ struct par_ocea
+ {
+ T rok;
+ T rtk;
+ T sinphi;
+ T cosphi;
+ T singam;
+ T cosgam;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_ocea_spheroid : public base_t_fi<base_ocea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_ocea<CalculationType> m_proj_parm;
+
+ inline base_ocea_spheroid(const Parameters& par)
+ : base_t_fi<base_ocea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+
+ CalculationType t;
+
+ xy_y = sin(lp_lon);
+ /*
+ xy_x = atan2((tan(lp_lat) * this->m_proj_parm.cosphi + this->m_proj_parm.sinphi * xy_y) , cos(lp_lon));
+ */
+ t = cos(lp_lon);
+ xy_x = atan((tan(lp_lat) * this->m_proj_parm.cosphi + this->m_proj_parm.sinphi * xy_y) / t);
+ if (t < 0.)
+ xy_x += ONEPI;
+ xy_x *= this->m_proj_parm.rtk;
+ xy_y = this->m_proj_parm.rok * (this->m_proj_parm.sinphi * sin(lp_lat) - this->m_proj_parm.cosphi * cos(lp_lat) * xy_y);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType t, s;
+
+ xy_y /= this->m_proj_parm.rok;
+ xy_x /= this->m_proj_parm.rtk;
+ t = sqrt(1. - xy_y * xy_y);
+ lp_lat = asin(xy_y * this->m_proj_parm.sinphi + t * this->m_proj_parm.cosphi * (s = sin(xy_x)));
+ lp_lon = atan2(t * this->m_proj_parm.sinphi * s - xy_y * this->m_proj_parm.cosphi,
+ t * cos(xy_x));
+ }
+
+ static inline std::string get_name()
+ {
+ return "ocea_spheroid";
+ }
+
+ };
+
+ // Oblique Cylindrical Equal Area
+ template <typename Parameters, typename T>
+ inline void setup_ocea(Parameters& par, par_ocea<T>& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T phi_0=0.0, phi_1, phi_2, lam_1, lam_2, lonz, alpha;
+
+ proj_parm.rok = 1. / par.k0;
+ proj_parm.rtk = par.k0;
+ if ( pj_param(par.params, "talpha").i) {
+ alpha = pj_param(par.params, "ralpha").f;
+ lonz = pj_param(par.params, "rlonc").f;
+ proj_parm.singam = atan(-cos(alpha)/(-sin(phi_0) * sin(alpha))) + lonz;
+ proj_parm.sinphi = asin(cos(phi_0) * sin(alpha));
+ } else {
+ phi_1 = pj_param(par.params, "rlat_1").f;
+ phi_2 = pj_param(par.params, "rlat_2").f;
+ lam_1 = pj_param(par.params, "rlon_1").f;
+ lam_2 = pj_param(par.params, "rlon_2").f;
+ proj_parm.singam = atan2(cos(phi_1) * sin(phi_2) * cos(lam_1) -
+ sin(phi_1) * cos(phi_2) * cos(lam_2),
+ sin(phi_1) * cos(phi_2) * sin(lam_2) -
+ cos(phi_1) * sin(phi_2) * sin(lam_1) );
+ if (lam_1 == -HALFPI)
+ proj_parm.singam = -proj_parm.singam;
+ proj_parm.sinphi = atan(-cos(proj_parm.singam - lam_1) / tan(phi_1));
+ }
+ par.lam0 = proj_parm.singam + HALFPI;
+ proj_parm.cosphi = cos(proj_parm.sinphi);
+ proj_parm.sinphi = sin(proj_parm.sinphi);
+ proj_parm.cosgam = cos(proj_parm.singam);
+ proj_parm.singam = sin(proj_parm.singam);
+ par.es = 0.;
+ }
+
+ }} // namespace detail::ocea
+ #endif // doxygen
+
+ /*!
+ \brief Oblique Cylindrical Equal Area projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Projection parameters
+ - lonc: Longitude (only used if alpha (or gamma) is specified) (degrees)
+ - alpha: Alpha (degrees)
+ - lat_1: Latitude of first standard parallel (degrees)
+ - lat_2: Latitude of second standard parallel (degrees)
+ - lon_1 (degrees)
+ - lon_2 (degrees)
+ \par Example
+ \image html ex_ocea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct ocea_spheroid : public detail::ocea::base_ocea_spheroid<CalculationType, Parameters>
+ {
+ inline ocea_spheroid(const Parameters& par) : detail::ocea::base_ocea_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::ocea::setup_ocea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::ocea, ocea_spheroid, ocea_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class ocea_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<ocea_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void ocea_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("ocea", new ocea_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_OCEA_HPP
+
diff --git a/boost/geometry/srs/projections/proj/oea.hpp b/boost/geometry/srs/projections/proj/oea.hpp
new file mode 100644
index 0000000000..469a41a2d5
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/oea.hpp
@@ -0,0 +1,214 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_OEA_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_OEA_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct oea {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace oea
+ {
+ template <typename T>
+ struct par_oea
+ {
+ T theta;
+ T m, n;
+ T two_r_m, two_r_n, rm, rn, hm, hn;
+ T cp0, sp0;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_oea_spheroid : public base_t_fi<base_oea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_oea<CalculationType> m_proj_parm;
+
+ inline base_oea_spheroid(const Parameters& par)
+ : base_t_fi<base_oea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType Az, M, N, cp, sp, cl, shz;
+
+ cp = cos(lp_lat);
+ sp = sin(lp_lat);
+ cl = cos(lp_lon);
+ Az = aatan2(cp * sin(lp_lon), this->m_proj_parm.cp0 * sp - this->m_proj_parm.sp0 * cp * cl) + this->m_proj_parm.theta;
+ shz = sin(0.5 * aacos(this->m_proj_parm.sp0 * sp + this->m_proj_parm.cp0 * cp * cl));
+ M = aasin(shz * sin(Az));
+ N = aasin(shz * cos(Az) * cos(M) / cos(M * this->m_proj_parm.two_r_m));
+ xy_y = this->m_proj_parm.n * sin(N * this->m_proj_parm.two_r_n);
+ xy_x = this->m_proj_parm.m * sin(M * this->m_proj_parm.two_r_m) * cos(N) / cos(N * this->m_proj_parm.two_r_n);
+ }
+
+ // INVERSE(s_inverse) sphere
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType N, M, xp, yp, z, Az, cz, sz, cAz;
+
+ N = this->m_proj_parm.hn * aasin(xy_y * this->m_proj_parm.rn);
+ M = this->m_proj_parm.hm * aasin(xy_x * this->m_proj_parm.rm * cos(N * this->m_proj_parm.two_r_n) / cos(N));
+ xp = 2. * sin(M);
+ yp = 2. * sin(N) * cos(M * this->m_proj_parm.two_r_m) / cos(M);
+ cAz = cos(Az = aatan2(xp, yp) - this->m_proj_parm.theta);
+ z = 2. * aasin(0.5 * boost::math::hypot(xp, yp));
+ sz = sin(z);
+ cz = cos(z);
+ lp_lat = aasin(this->m_proj_parm.sp0 * cz + this->m_proj_parm.cp0 * sz * cAz);
+ lp_lon = aatan2(sz * sin(Az),
+ this->m_proj_parm.cp0 * cz - this->m_proj_parm.sp0 * sz * cAz);
+ }
+
+ static inline std::string get_name()
+ {
+ return "oea_spheroid";
+ }
+
+ };
+
+ // Oblated Equal Area
+ template <typename Parameters, typename T>
+ inline void setup_oea(Parameters& par, par_oea<T>& proj_parm)
+ {
+ if (((proj_parm.n = pj_param(par.params, "dn").f) <= 0.) ||
+ ((proj_parm.m = pj_param(par.params, "dm").f) <= 0.))
+ BOOST_THROW_EXCEPTION( projection_exception(-39) );
+ else {
+ proj_parm.theta = pj_param(par.params, "rtheta").f;
+ proj_parm.sp0 = sin(par.phi0);
+ proj_parm.cp0 = cos(par.phi0);
+ proj_parm.rn = 1./ proj_parm.n;
+ proj_parm.rm = 1./ proj_parm.m;
+ proj_parm.two_r_n = 2. * proj_parm.rn;
+ proj_parm.two_r_m = 2. * proj_parm.rm;
+ proj_parm.hm = 0.5 * proj_parm.m;
+ proj_parm.hn = 0.5 * proj_parm.n;
+ par.es = 0.;
+ }
+ }
+
+ }} // namespace detail::oea
+ #endif // doxygen
+
+ /*!
+ \brief Oblated Equal Area projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ \par Projection parameters
+ - n (real)
+ - m (real)
+ - theta: Theta (degrees)
+ \par Example
+ \image html ex_oea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct oea_spheroid : public detail::oea::base_oea_spheroid<CalculationType, Parameters>
+ {
+ inline oea_spheroid(const Parameters& par) : detail::oea::base_oea_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::oea::setup_oea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::oea, oea_spheroid, oea_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class oea_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<oea_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void oea_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("oea", new oea_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_OEA_HPP
+
diff --git a/boost/geometry/srs/projections/proj/omerc.hpp b/boost/geometry/srs/projections/proj/omerc.hpp
new file mode 100644
index 0000000000..4da6871d13
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/omerc.hpp
@@ -0,0 +1,354 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_OMERC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_OMERC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Copyright (c) 2003, 2006 Gerald I. Evenden
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_phi2.hpp>
+#include <boost/geometry/srs/projections/impl/pj_tsfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct omerc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace omerc
+ {
+ static const double TOL = 1.e-7;
+ static const double EPS = 1.e-10;
+
+ template <typename T>
+ struct par_omerc
+ {
+ T A, B, E, AB, ArB, BrA, rB, singam, cosgam, sinrot, cosrot;
+ T v_pole_n, v_pole_s, u_0;
+ int no_rot;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_omerc_ellipsoid : public base_t_fi<base_omerc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_omerc<CalculationType> m_proj_parm;
+
+ inline base_omerc_ellipsoid(const Parameters& par)
+ : base_t_fi<base_omerc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType Q, S, T, U, V, temp, u, v;
+
+ if (fabs(fabs(lp_lat) - HALFPI) > EPS) {
+ Q = this->m_proj_parm.E / pow(pj_tsfn(lp_lat, sin(lp_lat), this->m_par.e), this->m_proj_parm.B);
+ temp = 1. / Q;
+ S = .5 * (Q - temp);
+ T = .5 * (Q + temp);
+ V = sin(this->m_proj_parm.B * lp_lon);
+ U = (S * this->m_proj_parm.singam - V * this->m_proj_parm.cosgam) / T;
+ if (fabs(fabs(U) - 1.0) < EPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ v = 0.5 * this->m_proj_parm.ArB * log((1. - U)/(1. + U));
+ temp = cos(this->m_proj_parm.B * lp_lon);
+ if(fabs(temp) < TOL) {
+ u = this->m_proj_parm.A * lp_lon;
+ } else {
+ u = this->m_proj_parm.ArB * atan2((S * this->m_proj_parm.cosgam + V * this->m_proj_parm.singam), temp);
+ }
+ } else {
+ v = lp_lat > 0 ? this->m_proj_parm.v_pole_n : this->m_proj_parm.v_pole_s;
+ u = this->m_proj_parm.ArB * lp_lat;
+ }
+ if (this->m_proj_parm.no_rot) {
+ xy_x = u;
+ xy_y = v;
+ } else {
+ u -= this->m_proj_parm.u_0;
+ xy_x = v * this->m_proj_parm.cosrot + u * this->m_proj_parm.sinrot;
+ xy_y = u * this->m_proj_parm.cosrot - v * this->m_proj_parm.sinrot;
+ }
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType u, v, Qp, Sp, Tp, Vp, Up;
+
+ if (this->m_proj_parm.no_rot) {
+ v = xy_y;
+ u = xy_x;
+ } else {
+ v = xy_x * this->m_proj_parm.cosrot - xy_y * this->m_proj_parm.sinrot;
+ u = xy_y * this->m_proj_parm.cosrot + xy_x * this->m_proj_parm.sinrot + this->m_proj_parm.u_0;
+ }
+ Qp = exp(- this->m_proj_parm.BrA * v);
+ Sp = .5 * (Qp - 1. / Qp);
+ Tp = .5 * (Qp + 1. / Qp);
+ Vp = sin(this->m_proj_parm.BrA * u);
+ Up = (Vp * this->m_proj_parm.cosgam + Sp * this->m_proj_parm.singam) / Tp;
+ if (fabs(fabs(Up) - 1.) < EPS) {
+ lp_lon = 0.;
+ lp_lat = Up < 0. ? -HALFPI : HALFPI;
+ } else {
+ lp_lat = this->m_proj_parm.E / sqrt((1. + Up) / (1. - Up));
+ if ((lp_lat = pj_phi2(pow(lp_lat, 1. / this->m_proj_parm.B), this->m_par.e)) == HUGE_VAL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ lp_lon = - this->m_proj_parm.rB * atan2((Sp * this->m_proj_parm.cosgam -
+ Vp * this->m_proj_parm.singam), cos(this->m_proj_parm.BrA * u));
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "omerc_ellipsoid";
+ }
+
+ };
+
+ // Oblique Mercator
+ template <typename Parameters, typename T>
+ inline void setup_omerc(Parameters& par, par_omerc<T>& proj_parm)
+ {
+ static const T FORTPI = detail::FORTPI<T>();
+ static const T HALFPI = detail::HALFPI<T>();
+ static const T ONEPI = detail::ONEPI<T>();
+ static const T TWOPI = detail::TWOPI<T>();
+
+ T con, com, cosph0, D, F, H, L, sinph0, p, J, gamma=0,
+ gamma0, lamc=0, lam1=0, lam2=0, phi1=0, phi2=0, alpha_c=0.0;
+ int alp, gam, no_off = 0;
+
+ proj_parm.no_rot = pj_param(par.params, "tno_rot").i;
+ if ((alp = pj_param(par.params, "talpha").i) != 0)
+ alpha_c = pj_param(par.params, "ralpha").f;
+ if ((gam = pj_param(par.params, "tgamma").i) != 0)
+ gamma = pj_param(par.params, "rgamma").f;
+ if (alp || gam) {
+ lamc = pj_param(par.params, "rlonc").f;
+ no_off =
+ /* For libproj4 compatability */
+ pj_param(par.params, "tno_off").i
+ /* for backward compatibility */
+ || pj_param(par.params, "tno_uoff").i;
+ if( no_off )
+ {
+ /* Mark the parameter as used, so that the pj_get_def() return them */
+ pj_param(par.params, "sno_uoff");
+ pj_param(par.params, "sno_off");
+ }
+ } else {
+ lam1 = pj_param(par.params, "rlon_1").f;
+ phi1 = pj_param(par.params, "rlat_1").f;
+ lam2 = pj_param(par.params, "rlon_2").f;
+ phi2 = pj_param(par.params, "rlat_2").f;
+ if (fabs(phi1 - phi2) <= TOL ||
+ (con = fabs(phi1)) <= TOL ||
+ fabs(con - HALFPI) <= TOL ||
+ fabs(fabs(par.phi0) - HALFPI) <= TOL ||
+ fabs(fabs(phi2) - HALFPI) <= TOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-33) );
+ }
+ com = sqrt(par.one_es);
+ if (fabs(par.phi0) > EPS) {
+ sinph0 = sin(par.phi0);
+ cosph0 = cos(par.phi0);
+ con = 1. - par.es * sinph0 * sinph0;
+ proj_parm.B = cosph0 * cosph0;
+ proj_parm.B = sqrt(1. + par.es * proj_parm.B * proj_parm.B / par.one_es);
+ proj_parm.A = proj_parm.B * par.k0 * com / con;
+ D = proj_parm.B * com / (cosph0 * sqrt(con));
+ if ((F = D * D - 1.) <= 0.)
+ F = 0.;
+ else {
+ F = sqrt(F);
+ if (par.phi0 < 0.)
+ F = -F;
+ }
+ proj_parm.E = F += D;
+ proj_parm.E *= pow(pj_tsfn(par.phi0, sinph0, par.e), proj_parm.B);
+ } else {
+ proj_parm.B = 1. / com;
+ proj_parm.A = par.k0;
+ proj_parm.E = D = F = 1.;
+ }
+ if (alp || gam) {
+ if (alp) {
+ gamma0 = asin(sin(alpha_c) / D);
+ if (!gam)
+ gamma = alpha_c;
+ } else
+ alpha_c = asin(D*sin(gamma0 = gamma));
+ if ((con = fabs(alpha_c)) <= TOL ||
+ fabs(con - ONEPI) <= TOL ||
+ fabs(fabs(par.phi0) - HALFPI) <= TOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-32) );
+ par.lam0 = lamc - asin(.5 * (F - 1. / F) *
+ tan(gamma0)) / proj_parm.B;
+ } else {
+ H = pow(pj_tsfn(phi1, sin(phi1), par.e), proj_parm.B);
+ L = pow(pj_tsfn(phi2, sin(phi2), par.e), proj_parm.B);
+ F = proj_parm.E / H;
+ p = (L - H) / (L + H);
+ J = proj_parm.E * proj_parm.E;
+ J = (J - L * H) / (J + L * H);
+ if ((con = lam1 - lam2) < -ONEPI)
+ lam2 -= TWOPI;
+ else if (con > ONEPI)
+ lam2 += TWOPI;
+ par.lam0 = adjlon(.5 * (lam1 + lam2) - atan(
+ J * tan(.5 * proj_parm.B * (lam1 - lam2)) / p) / proj_parm.B);
+ gamma0 = atan(2. * sin(proj_parm.B * adjlon(lam1 - par.lam0)) /
+ (F - 1. / F));
+ gamma = alpha_c = asin(D * sin(gamma0));
+ }
+ proj_parm.singam = sin(gamma0);
+ proj_parm.cosgam = cos(gamma0);
+ proj_parm.sinrot = sin(gamma);
+ proj_parm.cosrot = cos(gamma);
+ proj_parm.BrA = 1. / (proj_parm.ArB = proj_parm.A * (proj_parm.rB = 1. / proj_parm.B));
+ proj_parm.AB = proj_parm.A * proj_parm.B;
+ if (no_off)
+ proj_parm.u_0 = 0;
+ else {
+ proj_parm.u_0 = fabs(proj_parm.ArB * atan2(sqrt(D * D - 1.), cos(alpha_c)));
+ if (par.phi0 < 0.)
+ proj_parm.u_0 = - proj_parm.u_0;
+ }
+ F = 0.5 * gamma0;
+ proj_parm.v_pole_n = proj_parm.ArB * log(tan(FORTPI - F));
+ proj_parm.v_pole_s = proj_parm.ArB * log(tan(FORTPI + F));
+ }
+
+ }} // namespace detail::omerc
+ #endif // doxygen
+
+ /*!
+ \brief Oblique Mercator projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - no_rot: No rotation
+ - alpha: Alpha (degrees)
+ - gamma: Gamma (degrees)
+ - no_off: Only for compatibility with libproj, proj4 (string)
+ - lonc: Longitude (only used if alpha (or gamma) is specified) (degrees)
+ - lon_1 (degrees)
+ - lat_1: Latitude of first standard parallel (degrees)
+ - lon_2 (degrees)
+ - lat_2: Latitude of second standard parallel (degrees)
+ - no_uoff (string)
+ \par Example
+ \image html ex_omerc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct omerc_ellipsoid : public detail::omerc::base_omerc_ellipsoid<CalculationType, Parameters>
+ {
+ inline omerc_ellipsoid(const Parameters& par) : detail::omerc::base_omerc_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::omerc::setup_omerc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::omerc, omerc_ellipsoid, omerc_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class omerc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<omerc_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void omerc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("omerc", new omerc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_OMERC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/ortho.hpp b/boost/geometry/srs/projections/proj/ortho.hpp
new file mode 100644
index 0000000000..4510f9dab9
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/ortho.hpp
@@ -0,0 +1,257 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ORTHO_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ORTHO_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/config.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct ortho {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace ortho
+ {
+
+ static const double EPS10 = 1.e-10;
+ static const int N_POLE = 0;
+ static const int S_POLE = 1;
+ static const int EQUIT = 2;
+ static const int OBLIQ = 3;
+
+ template <typename T>
+ struct par_ortho
+ {
+ T sinph0;
+ T cosph0;
+ int mode;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_ortho_spheroid : public base_t_fi<base_ortho_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_ortho<CalculationType> m_proj_parm;
+
+ inline base_ortho_spheroid(const Parameters& par)
+ : base_t_fi<base_ortho_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType coslam, cosphi, sinphi;
+
+ cosphi = cos(lp_lat);
+ coslam = cos(lp_lon);
+ switch (this->m_proj_parm.mode) {
+ case EQUIT:
+ if (cosphi * coslam < - EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_y = sin(lp_lat);
+ break;
+ case OBLIQ:
+ if (this->m_proj_parm.sinph0 * (sinphi = sin(lp_lat)) +
+ this->m_proj_parm.cosph0 * cosphi * coslam < - EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_y = this->m_proj_parm.cosph0 * sinphi - this->m_proj_parm.sinph0 * cosphi * coslam;
+ break;
+ case N_POLE:
+ coslam = - coslam;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ if (fabs(lp_lat - this->m_par.phi0) - EPS10 > HALFPI)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_y = cosphi * coslam;
+ break;
+ }
+ xy_x = cosphi * sin(lp_lon);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType rh, cosc, sinc;
+
+ if ((sinc = (rh = boost::math::hypot(xy_x, xy_y))) > 1.) {
+ if ((sinc - 1.) > EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ sinc = 1.;
+ }
+ cosc = sqrt(1. - sinc * sinc); /* in this range OK */
+ if (fabs(rh) <= EPS10) {
+ lp_lat = this->m_par.phi0;
+ lp_lon = 0.0;
+ } else {
+ switch (this->m_proj_parm.mode) {
+ case N_POLE:
+ xy_y = -xy_y;
+ lp_lat = acos(sinc);
+ break;
+ case S_POLE:
+ lp_lat = - acos(sinc);
+ break;
+ case EQUIT:
+ lp_lat = xy_y * sinc / rh;
+ xy_x *= sinc;
+ xy_y = cosc * rh;
+ goto sinchk;
+ case OBLIQ:
+ lp_lat = cosc * this->m_proj_parm.sinph0 + xy_y * sinc * this->m_proj_parm.cosph0 /rh;
+ xy_y = (cosc - this->m_proj_parm.sinph0 * lp_lat) * rh;
+ xy_x *= sinc * this->m_proj_parm.cosph0;
+ sinchk:
+ if (fabs(lp_lat) >= 1.)
+ lp_lat = lp_lat < 0. ? -HALFPI : HALFPI;
+ else
+ lp_lat = asin(lp_lat);
+ break;
+ }
+ lp_lon = (xy_y == 0. && (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT))
+ ? (xy_x == 0. ? 0. : xy_x < 0. ? -HALFPI : HALFPI)
+ : atan2(xy_x, xy_y);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "ortho_spheroid";
+ }
+
+ };
+
+ // Orthographic
+ template <typename Parameters, typename T>
+ inline void setup_ortho(Parameters& par, par_ortho<T>& proj_parm)
+ {
+ if (fabs(fabs(par.phi0) - geometry::math::half_pi<T>()) <= EPS10)
+ proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE;
+ else if (fabs(par.phi0) > EPS10) {
+ proj_parm.mode = OBLIQ;
+ proj_parm.sinph0 = sin(par.phi0);
+ proj_parm.cosph0 = cos(par.phi0);
+ } else
+ proj_parm.mode = EQUIT;
+ par.es = 0.;
+ }
+
+ }} // namespace detail::ortho
+ #endif // doxygen
+
+ /*!
+ \brief Orthographic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ \par Example
+ \image html ex_ortho.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct ortho_spheroid : public detail::ortho::base_ortho_spheroid<CalculationType, Parameters>
+ {
+ inline ortho_spheroid(const Parameters& par) : detail::ortho::base_ortho_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::ortho::setup_ortho(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::ortho, ortho_spheroid, ortho_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class ortho_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<ortho_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void ortho_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("ortho", new ortho_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ORTHO_HPP
+
diff --git a/boost/geometry/srs/projections/proj/poly.hpp b/boost/geometry/srs/projections/proj/poly.hpp
new file mode 100644
index 0000000000..ff97ecadec
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/poly.hpp
@@ -0,0 +1,311 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_POLY_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_POLY_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+#include <boost/geometry/srs/projections/impl/pj_msfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct poly {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace poly
+ {
+
+ static const double TOL = 1e-10;
+ static const double CONV = 1e-10;
+ static const int N_ITER = 10;
+ static const int I_ITER = 20;
+ static const double ITOL = 1.e-12;
+
+ template <typename T>
+ struct par_poly
+ {
+ T ml0;
+ T en[EN_SIZE];
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_poly_ellipsoid : public base_t_fi<base_poly_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_poly<CalculationType> m_proj_parm;
+
+ inline base_poly_ellipsoid(const Parameters& par)
+ : base_t_fi<base_poly_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType ms, sp, cp;
+
+ if (fabs(lp_lat) <= TOL) { xy_x = lp_lon; xy_y = -this->m_proj_parm.ml0; }
+ else {
+ sp = sin(lp_lat);
+ ms = fabs(cp = cos(lp_lat)) > TOL ? pj_msfn(sp, cp, this->m_par.es) / sp : 0.;
+ xy_x = ms * sin(lp_lon *= sp);
+ xy_y = (pj_mlfn(lp_lat, sp, cp, this->m_proj_parm.en) - this->m_proj_parm.ml0) + ms * (1. - cos(lp_lon));
+ }
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ xy_y += this->m_proj_parm.ml0;
+ if (fabs(xy_y) <= TOL) {
+ lp_lon = xy_x;
+ lp_lat = 0.;
+ } else {
+ CalculationType r, c, sp, cp, s2ph, ml, mlb, mlp, dPhi;
+ int i;
+
+ r = xy_y * xy_y + xy_x * xy_x;
+ for (lp_lat = xy_y, i = I_ITER; i ; --i) {
+ sp = sin(lp_lat);
+ s2ph = sp * ( cp = cos(lp_lat));
+ if (fabs(cp) < ITOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ c = sp * (mlp = sqrt(1. - this->m_par.es * sp * sp)) / cp;
+ ml = pj_mlfn(lp_lat, sp, cp, this->m_proj_parm.en);
+ mlb = ml * ml + r;
+ mlp = this->m_par.one_es / (mlp * mlp * mlp);
+ lp_lat += ( dPhi =
+ ( ml + ml + c * mlb - 2. * xy_y * (c * ml + 1.) ) / (
+ this->m_par.es * s2ph * (mlb - 2. * xy_y * ml) / c +
+ 2.* (xy_y - ml) * (c * mlp - 1. / s2ph) - mlp - mlp ));
+ if (fabs(dPhi) <= ITOL)
+ break;
+ }
+ if (!i)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ c = sin(lp_lat);
+ lp_lon = asin(xy_x * tan(lp_lat) * sqrt(1. - this->m_par.es * c * c)) / sin(lp_lat);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "poly_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_poly_spheroid : public base_t_fi<base_poly_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_poly<CalculationType> m_proj_parm;
+
+ inline base_poly_spheroid(const Parameters& par)
+ : base_t_fi<base_poly_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType cot, E;
+
+ if (fabs(lp_lat) <= TOL) {
+ xy_x = lp_lon;
+ xy_y = this->m_proj_parm.ml0;
+ } else {
+ cot = 1. / tan(lp_lat);
+ xy_x = sin(E = lp_lon * sin(lp_lat)) * cot;
+ xy_y = lp_lat - this->m_par.phi0 + cot * (1. - cos(E));
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType B, dphi, tp;
+ int i;
+
+ if (fabs(xy_y = this->m_par.phi0 + xy_y) <= TOL) {
+ lp_lon = xy_x;
+ lp_lat = 0.;
+ } else {
+ lp_lat = xy_y;
+ B = xy_x * xy_x + xy_y * xy_y;
+ i = N_ITER;
+ do {
+ tp = tan(lp_lat);
+ lp_lat -= (dphi = (xy_y * (lp_lat * tp + 1.) - lp_lat -
+ .5 * ( lp_lat * lp_lat + B) * tp) /
+ ((lp_lat - xy_y) / tp - 1.));
+ } while (fabs(dphi) > CONV && --i);
+ if (! i)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ lp_lon = asin(xy_x * tan(lp_lat)) / sin(lp_lat);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "poly_spheroid";
+ }
+
+ };
+
+ // Polyconic (American)
+ template <typename Parameters, typename T>
+ inline void setup_poly(Parameters& par, par_poly<T>& proj_parm)
+ {
+ if (par.es) {
+ if (!pj_enfn(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ proj_parm.ml0 = pj_mlfn(par.phi0, sin(par.phi0), cos(par.phi0), proj_parm.en);
+ } else {
+ proj_parm.ml0 = -par.phi0;
+ }
+ }
+
+ }} // namespace detail::poly
+ #endif // doxygen
+
+ /*!
+ \brief Polyconic (American) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_poly.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct poly_ellipsoid : public detail::poly::base_poly_ellipsoid<CalculationType, Parameters>
+ {
+ inline poly_ellipsoid(const Parameters& par) : detail::poly::base_poly_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::poly::setup_poly(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Polyconic (American) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_poly.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct poly_spheroid : public detail::poly::base_poly_spheroid<CalculationType, Parameters>
+ {
+ inline poly_spheroid(const Parameters& par) : detail::poly::base_poly_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::poly::setup_poly(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::poly, poly_spheroid, poly_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class poly_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<poly_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<poly_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void poly_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("poly", new poly_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_POLY_HPP
+
diff --git a/boost/geometry/srs/projections/proj/putp2.hpp b/boost/geometry/srs/projections/proj/putp2.hpp
new file mode 100644
index 0000000000..458ee81aa3
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/putp2.hpp
@@ -0,0 +1,193 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PUTP2_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PUTP2_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct putp2 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace putp2
+ {
+
+ static const double C_x = 1.89490;
+ static const double C_y = 1.71848;
+ static const double C_p = 0.6141848493043784;
+ static const double EPS = 1e-10;
+ static const int NITER = 10;
+ //static const double PI_DIV_3 = 1.0471975511965977;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_putp2_spheroid : public base_t_fi<base_putp2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_putp2_spheroid(const Parameters& par)
+ : base_t_fi<base_putp2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType PI_DIV_3 = detail::PI_DIV_3<CalculationType>();
+
+ CalculationType p, c, s, V;
+ int i;
+
+ p = C_p * sin(lp_lat);
+ s = lp_lat * lp_lat;
+ lp_lat *= 0.615709 + s * ( 0.00909953 + s * 0.0046292 );
+ for (i = NITER; i ; --i) {
+ c = cos(lp_lat);
+ s = sin(lp_lat);
+ lp_lat -= V = (lp_lat + s * (c - 1.) - p) /
+ (1. + c * (c - 1.) - s * s);
+ if (fabs(V) < EPS)
+ break;
+ }
+ if (!i)
+ lp_lat = lp_lat < 0 ? - PI_DIV_3 : PI_DIV_3;
+ xy_x = C_x * lp_lon * (cos(lp_lat) - 0.5);
+ xy_y = C_y * sin(lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType c;
+
+ lp_lat = aasin(xy_y / C_y);
+ lp_lon = xy_x / (C_x * ((c = cos(lp_lat)) - 0.5));
+ lp_lat = aasin((lp_lat + sin(lp_lat) * (c - 1.)) / C_p);
+ }
+
+ static inline std::string get_name()
+ {
+ return "putp2_spheroid";
+ }
+
+ };
+
+ // Putnins P2
+ template <typename Parameters>
+ inline void setup_putp2(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::putp2
+ #endif // doxygen
+
+ /*!
+ \brief Putnins P2 projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_putp2.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct putp2_spheroid : public detail::putp2::base_putp2_spheroid<CalculationType, Parameters>
+ {
+ inline putp2_spheroid(const Parameters& par) : detail::putp2::base_putp2_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::putp2::setup_putp2(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::putp2, putp2_spheroid, putp2_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class putp2_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<putp2_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void putp2_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("putp2", new putp2_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_PUTP2_HPP
+
diff --git a/boost/geometry/srs/projections/proj/putp3.hpp b/boost/geometry/srs/projections/proj/putp3.hpp
new file mode 100644
index 0000000000..91150082b8
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/putp3.hpp
@@ -0,0 +1,227 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PUTP3_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PUTP3_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/core/ignore_unused.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct putp3 {};
+ struct putp3p {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace putp3
+ {
+
+ static const double C = 0.79788456;
+ static const double RPISQ = 0.1013211836;
+
+ template <typename T>
+ struct par_putp3
+ {
+ T A;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_putp3_spheroid : public base_t_fi<base_putp3_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_putp3<CalculationType> m_proj_parm;
+
+ inline base_putp3_spheroid(const Parameters& par)
+ : base_t_fi<base_putp3_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = C * lp_lon * (1. - this->m_proj_parm.A * lp_lat * lp_lat);
+ xy_y = C * lp_lat;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = xy_y / C;
+ lp_lon = xy_x / (C * (1. - this->m_proj_parm.A * lp_lat * lp_lat));
+ }
+
+ static inline std::string get_name()
+ {
+ return "putp3_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_putp3<T>& proj_parm)
+ {
+ boost::ignore_unused(proj_parm);
+ par.es = 0.;
+ }
+
+
+ // Putnins P3
+ template <typename Parameters, typename T>
+ inline void setup_putp3(Parameters& par, par_putp3<T>& proj_parm)
+ {
+ proj_parm.A = 4. * RPISQ;
+ setup(par, proj_parm);
+ }
+
+ // Putnins P3'
+ template <typename Parameters, typename T>
+ inline void setup_putp3p(Parameters& par, par_putp3<T>& proj_parm)
+ {
+ proj_parm.A = 2. * RPISQ;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::putp3
+ #endif // doxygen
+
+ /*!
+ \brief Putnins P3 projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_putp3.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct putp3_spheroid : public detail::putp3::base_putp3_spheroid<CalculationType, Parameters>
+ {
+ inline putp3_spheroid(const Parameters& par) : detail::putp3::base_putp3_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::putp3::setup_putp3(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Putnins P3' projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_putp3p.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct putp3p_spheroid : public detail::putp3::base_putp3_spheroid<CalculationType, Parameters>
+ {
+ inline putp3p_spheroid(const Parameters& par) : detail::putp3::base_putp3_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::putp3::setup_putp3p(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::putp3, putp3_spheroid, putp3_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::putp3p, putp3p_spheroid, putp3p_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class putp3_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<putp3_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class putp3p_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<putp3p_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void putp3_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("putp3", new putp3_entry<CalculationType, Parameters>);
+ factory.add_to_factory("putp3p", new putp3p_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_PUTP3_HPP
+
diff --git a/boost/geometry/srs/projections/proj/putp4p.hpp b/boost/geometry/srs/projections/proj/putp4p.hpp
new file mode 100644
index 0000000000..4252b37141
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/putp4p.hpp
@@ -0,0 +1,231 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PUTP4P_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PUTP4P_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/core/ignore_unused.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct putp4p {};
+ struct weren {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace putp4p
+ {
+ template <typename T>
+ struct par_putp4p
+ {
+ T C_x, C_y;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_putp4p_spheroid : public base_t_fi<base_putp4p_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_putp4p<CalculationType> m_proj_parm;
+
+ inline base_putp4p_spheroid(const Parameters& par)
+ : base_t_fi<base_putp4p_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ lp_lat = aasin(0.883883476 * sin(lp_lat));
+ xy_x = this->m_proj_parm.C_x * lp_lon * cos(lp_lat);
+ xy_x /= cos(lp_lat *= 0.333333333333333);
+ xy_y = this->m_proj_parm.C_y * sin(lp_lat);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = aasin(xy_y / this->m_proj_parm.C_y);
+ lp_lon = xy_x * cos(lp_lat) / this->m_proj_parm.C_x;
+ lp_lat *= 3.;
+ lp_lon /= cos(lp_lat);
+ lp_lat = aasin(1.13137085 * sin(lp_lat));
+ }
+
+ static inline std::string get_name()
+ {
+ return "putp4p_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_putp4p<T>& proj_parm)
+ {
+ boost::ignore_unused(proj_parm);
+ par.es = 0.;
+ }
+
+
+ // Putnins P4'
+ template <typename Parameters, typename T>
+ inline void setup_putp4p(Parameters& par, par_putp4p<T>& proj_parm)
+ {
+ proj_parm.C_x = 0.874038744;
+ proj_parm.C_y = 3.883251825;
+ setup(par, proj_parm);
+ }
+
+ // Werenskiold I
+ template <typename Parameters, typename T>
+ inline void setup_weren(Parameters& par, par_putp4p<T>& proj_parm)
+ {
+ proj_parm.C_x = 1.;
+ proj_parm.C_y = 4.442882938;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::putp4p
+ #endif // doxygen
+
+ /*!
+ \brief Putnins P4' projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_putp4p.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct putp4p_spheroid : public detail::putp4p::base_putp4p_spheroid<CalculationType, Parameters>
+ {
+ inline putp4p_spheroid(const Parameters& par) : detail::putp4p::base_putp4p_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::putp4p::setup_putp4p(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Werenskiold I projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_weren.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct weren_spheroid : public detail::putp4p::base_putp4p_spheroid<CalculationType, Parameters>
+ {
+ inline weren_spheroid(const Parameters& par) : detail::putp4p::base_putp4p_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::putp4p::setup_weren(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::putp4p, putp4p_spheroid, putp4p_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::weren, weren_spheroid, weren_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class putp4p_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<putp4p_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class weren_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<weren_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void putp4p_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("putp4p", new putp4p_entry<CalculationType, Parameters>);
+ factory.add_to_factory("weren", new weren_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_PUTP4P_HPP
+
diff --git a/boost/geometry/srs/projections/proj/putp5.hpp b/boost/geometry/srs/projections/proj/putp5.hpp
new file mode 100644
index 0000000000..652dca5231
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/putp5.hpp
@@ -0,0 +1,229 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PUTP5_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PUTP5_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/core/ignore_unused.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct putp5 {};
+ struct putp5p {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace putp5
+ {
+
+ static const double C = 1.01346;
+ static const double D = 1.2158542;
+
+ template <typename T>
+ struct par_putp5
+ {
+ T A, B;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_putp5_spheroid : public base_t_fi<base_putp5_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_putp5<CalculationType> m_proj_parm;
+
+ inline base_putp5_spheroid(const Parameters& par)
+ : base_t_fi<base_putp5_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = C * lp_lon * (this->m_proj_parm.A - this->m_proj_parm.B * sqrt(1. + D * lp_lat * lp_lat));
+ xy_y = C * lp_lat;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = xy_y / C;
+ lp_lon = xy_x / (C * (this->m_proj_parm.A - this->m_proj_parm.B * sqrt(1. + D * lp_lat * lp_lat)));
+ }
+
+ static inline std::string get_name()
+ {
+ return "putp5_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_putp5<T>& proj_parm)
+ {
+ boost::ignore_unused(proj_parm);
+ par.es = 0.;
+ }
+
+
+ // Putnins P5
+ template <typename Parameters, typename T>
+ inline void setup_putp5(Parameters& par, par_putp5<T>& proj_parm)
+ {
+ proj_parm.A = 2.;
+ proj_parm.B = 1.;
+ setup(par, proj_parm);
+ }
+
+ // Putnins P5'
+ template <typename Parameters, typename T>
+ inline void setup_putp5p(Parameters& par, par_putp5<T>& proj_parm)
+ {
+ proj_parm.A = 1.5;
+ proj_parm.B = 0.5;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::putp5
+ #endif // doxygen
+
+ /*!
+ \brief Putnins P5 projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_putp5.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct putp5_spheroid : public detail::putp5::base_putp5_spheroid<CalculationType, Parameters>
+ {
+ inline putp5_spheroid(const Parameters& par) : detail::putp5::base_putp5_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::putp5::setup_putp5(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Putnins P5' projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_putp5p.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct putp5p_spheroid : public detail::putp5::base_putp5_spheroid<CalculationType, Parameters>
+ {
+ inline putp5p_spheroid(const Parameters& par) : detail::putp5::base_putp5_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::putp5::setup_putp5p(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::putp5, putp5_spheroid, putp5_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::putp5p, putp5p_spheroid, putp5p_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class putp5_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<putp5_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class putp5p_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<putp5p_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void putp5_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("putp5", new putp5_entry<CalculationType, Parameters>);
+ factory.add_to_factory("putp5p", new putp5p_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_PUTP5_HPP
+
diff --git a/boost/geometry/srs/projections/proj/putp6.hpp b/boost/geometry/srs/projections/proj/putp6.hpp
new file mode 100644
index 0000000000..2dff641717
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/putp6.hpp
@@ -0,0 +1,255 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_PUTP6_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_PUTP6_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/core/ignore_unused.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct putp6 {};
+ struct putp6p {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace putp6
+ {
+
+ static const double EPS = 1e-10;
+ static const int NITER = 10;
+ static const double CON_POLE = 1.732050807568877;
+
+ template <typename T>
+ struct par_putp6
+ {
+ T C_x, C_y, A, B, D;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_putp6_spheroid : public base_t_fi<base_putp6_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_putp6<CalculationType> m_proj_parm;
+
+ inline base_putp6_spheroid(const Parameters& par)
+ : base_t_fi<base_putp6_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType p, r, V;
+ int i;
+
+ p = this->m_proj_parm.B * sin(lp_lat);
+ lp_lat *= 1.10265779;
+ for (i = NITER; i ; --i) {
+ r = sqrt(1. + lp_lat * lp_lat);
+ lp_lat -= V = ( (this->m_proj_parm.A - r) * lp_lat - log(lp_lat + r) - p ) /
+ (this->m_proj_parm.A - 2. * r);
+ if (fabs(V) < EPS)
+ break;
+ }
+ if (!i)
+ lp_lat = p < 0. ? -CON_POLE : CON_POLE;
+ xy_x = this->m_proj_parm.C_x * lp_lon * (this->m_proj_parm.D - sqrt(1. + lp_lat * lp_lat));
+ xy_y = this->m_proj_parm.C_y * lp_lat;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType r;
+
+ lp_lat = xy_y / this->m_proj_parm.C_y;
+ r = sqrt(1. + lp_lat * lp_lat);
+ lp_lon = xy_x / (this->m_proj_parm.C_x * (this->m_proj_parm.D - r));
+ lp_lat = aasin(( (this->m_proj_parm.A - r) * lp_lat - log(lp_lat + r) ) / this->m_proj_parm.B);
+ }
+
+ static inline std::string get_name()
+ {
+ return "putp6_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_putp6<T>& proj_parm)
+ {
+ boost::ignore_unused(proj_parm);
+ par.es = 0.;
+ }
+
+
+ // Putnins P6
+ template <typename Parameters, typename T>
+ inline void setup_putp6(Parameters& par, par_putp6<T>& proj_parm)
+ {
+ proj_parm.C_x = 1.01346;
+ proj_parm.C_y = 0.91910;
+ proj_parm.A = 4.;
+ proj_parm.B = 2.1471437182129378784;
+ proj_parm.D = 2.;
+ setup(par, proj_parm);
+ }
+
+ // Putnins P6'
+ template <typename Parameters, typename T>
+ inline void setup_putp6p(Parameters& par, par_putp6<T>& proj_parm)
+ {
+ proj_parm.C_x = 0.44329;
+ proj_parm.C_y = 0.80404;
+ proj_parm.A = 6.;
+ proj_parm.B = 5.61125;
+ proj_parm.D = 3.;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::putp6
+ #endif // doxygen
+
+ /*!
+ \brief Putnins P6 projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_putp6.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct putp6_spheroid : public detail::putp6::base_putp6_spheroid<CalculationType, Parameters>
+ {
+ inline putp6_spheroid(const Parameters& par) : detail::putp6::base_putp6_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::putp6::setup_putp6(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Putnins P6' projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_putp6p.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct putp6p_spheroid : public detail::putp6::base_putp6_spheroid<CalculationType, Parameters>
+ {
+ inline putp6p_spheroid(const Parameters& par) : detail::putp6::base_putp6_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::putp6::setup_putp6p(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::putp6, putp6_spheroid, putp6_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::putp6p, putp6p_spheroid, putp6p_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class putp6_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<putp6_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class putp6p_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<putp6p_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void putp6_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("putp6", new putp6_entry<CalculationType, Parameters>);
+ factory.add_to_factory("putp6p", new putp6p_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_PUTP6_HPP
+
diff --git a/boost/geometry/srs/projections/proj/qsc.hpp b/boost/geometry/srs/projections/proj/qsc.hpp
new file mode 100644
index 0000000000..4cccc29f8b
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/qsc.hpp
@@ -0,0 +1,539 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_QSC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_QSC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// This implements the Quadrilateralized Spherical Cube (QSC) projection.
+// Copyright (c) 2011, 2012 Martin Lambers <marlam@marlam.de>
+// The QSC projection was introduced in:
+// [OL76]
+// E.M. O'Neill and R.E. Laubscher, "Extended Studies of a Quadrilateralized
+// Spherical Cube Earth Data Base", Naval Environmental Prediction Research
+// Facility Tech. Report NEPRF 3-76 (CSC), May 1976.
+// The preceding shift from an ellipsoid to a sphere, which allows to apply
+// this projection to ellipsoids as used in the Ellipsoidal Cube Map model,
+// is described in
+// [LK12]
+// M. Lambers and A. Kolb, "Ellipsoidal Cube Maps for Accurate Rendering of
+// Planetary-Scale Terrain Data", Proc. Pacfic Graphics (Short Papers), Sep.
+// 2012
+// You have to choose one of the following projection centers,
+// corresponding to the centers of the six cube faces:
+// phi0 = 0.0, lam0 = 0.0 ("front" face)
+// phi0 = 0.0, lam0 = 90.0 ("right" face)
+// phi0 = 0.0, lam0 = 180.0 ("back" face)
+// phi0 = 0.0, lam0 = -90.0 ("left" face)
+// phi0 = 90.0 ("top" face)
+// phi0 = -90.0 ("bottom" face)
+// Other projection centers will not work!
+// In the projection code below, each cube face is handled differently.
+// See the computation of the face parameter in the ENTRY0(qsc) function
+// and the handling of different face values (FACE_*) in the forward and
+// inverse projections.
+// Furthermore, the projection is originally only defined for theta angles
+// between (-1/4 * PI) and (+1/4 * PI) on the current cube face. This area
+// of definition is named AREA_0 in the projection code below. The other
+// three areas of a cube face are handled by rotation of AREA_0.
+
+// 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 <boost/core/ignore_unused.hpp>
+#include <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct qsc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace qsc
+ {
+ static const double EPS10 = 1.e-10;
+ static const int FACE_FRONT = 0;
+ static const int FACE_RIGHT = 1;
+ static const int FACE_BACK = 2;
+ static const int FACE_LEFT = 3;
+ static const int FACE_TOP = 4;
+ static const int FACE_BOTTOM = 5;
+ static const int AREA_0 = 0;
+ static const int AREA_1 = 1;
+ static const int AREA_2 = 2;
+ static const int AREA_3 = 3;
+
+ template <typename T>
+ struct par_qsc
+ {
+ int face;
+ T a_squared;
+ T b;
+ T one_minus_f;
+ T one_minus_f_squared;
+ };
+
+ /* The six cube faces. */
+
+ /* The four areas on a cube face. AREA_0 is the area of definition,
+ * the other three areas are counted counterclockwise. */
+
+ /* Helper function for forward projection: compute the theta angle
+ * and determine the area number. */
+ template <typename T>
+ inline T qsc_fwd_equat_face_theta(T const& phi, T const& y, T const& x, int *area)
+ {
+ static const T FORTPI = detail::FORTPI<T>();
+ static const T HALFPI = detail::HALFPI<T>();
+ static const T ONEPI = detail::ONEPI<T>();
+
+ T theta;
+ if (phi < EPS10) {
+ *area = AREA_0;
+ theta = 0.0;
+ } else {
+ theta = atan2(y, x);
+ if (fabs(theta) <= FORTPI) {
+ *area = AREA_0;
+ } else if (theta > FORTPI && theta <= HALFPI + FORTPI) {
+ *area = AREA_1;
+ theta -= HALFPI;
+ } else if (theta > HALFPI + FORTPI || theta <= -(HALFPI + FORTPI)) {
+ *area = AREA_2;
+ theta = (theta >= 0.0 ? theta - ONEPI : theta + ONEPI);
+ } else {
+ *area = AREA_3;
+ theta += HALFPI;
+ }
+ }
+ return (theta);
+ }
+
+ /* Helper function: shift the longitude. */
+ template <typename T>
+ inline T qsc_shift_lon_origin(T const& lon, T const& offset)
+ {
+ static const T ONEPI = detail::ONEPI<T>();
+ static const T TWOPI = detail::TWOPI<T>();
+
+ T slon = lon + offset;
+ if (slon < -ONEPI) {
+ slon += TWOPI;
+ } else if (slon > +ONEPI) {
+ slon -= TWOPI;
+ }
+ return slon;
+ }
+
+ /* Forward projection, ellipsoid */
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_qsc_ellipsoid : public base_t_fi<base_qsc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_qsc<CalculationType> m_proj_parm;
+
+ inline base_qsc_ellipsoid(const Parameters& par)
+ : base_t_fi<base_qsc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward)
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+
+ CalculationType lat, lon;
+ CalculationType sinlat, coslat;
+ CalculationType sinlon, coslon;
+ CalculationType q = 0.0, r = 0.0, s = 0.0;
+ CalculationType theta, phi;
+ CalculationType t, mu, nu;
+ int area;
+
+ /* Convert the geodetic latitude to a geocentric latitude.
+ * This corresponds to the shift from the ellipsoid to the sphere
+ * described in [LK12]. */
+ if (this->m_par.es) {
+ lat = atan(this->m_proj_parm.one_minus_f_squared * tan(lp_lat));
+ } else {
+ lat = lp_lat;
+ }
+
+ /* Convert the input lat, lon into theta, phi as used by QSC.
+ * This depends on the cube face and the area on it.
+ * For the top and bottom face, we can compute theta and phi
+ * directly from phi, lam. For the other faces, we must use
+ * unit sphere cartesian coordinates as an intermediate step. */
+ lon = lp_lon;
+ if (this->m_proj_parm.face != FACE_TOP && this->m_proj_parm.face != FACE_BOTTOM) {
+ if (this->m_proj_parm.face == FACE_RIGHT) {
+ lon = qsc_shift_lon_origin(lon, +HALFPI);
+ } else if (this->m_proj_parm.face == FACE_BACK) {
+ lon = qsc_shift_lon_origin(lon, +ONEPI);
+ } else if (this->m_proj_parm.face == FACE_LEFT) {
+ lon = qsc_shift_lon_origin(lon, -HALFPI);
+ }
+ sinlat = sin(lat);
+ coslat = cos(lat);
+ sinlon = sin(lon);
+ coslon = cos(lon);
+ q = coslat * coslon;
+ r = coslat * sinlon;
+ s = sinlat;
+ }
+ if (this->m_proj_parm.face == FACE_FRONT) {
+ phi = acos(q);
+ theta = qsc_fwd_equat_face_theta(phi, s, r, &area);
+ } else if (this->m_proj_parm.face == FACE_RIGHT) {
+ phi = acos(r);
+ theta = qsc_fwd_equat_face_theta(phi, s, -q, &area);
+ } else if (this->m_proj_parm.face == FACE_BACK) {
+ phi = acos(-q);
+ theta = qsc_fwd_equat_face_theta(phi, s, -r, &area);
+ } else if (this->m_proj_parm.face == FACE_LEFT) {
+ phi = acos(-r);
+ theta = qsc_fwd_equat_face_theta(phi, s, q, &area);
+ } else if (this->m_proj_parm.face == FACE_TOP) {
+ phi = HALFPI - lat;
+ if (lon >= FORTPI && lon <= HALFPI + FORTPI) {
+ area = AREA_0;
+ theta = lon - HALFPI;
+ } else if (lon > HALFPI + FORTPI || lon <= -(HALFPI + FORTPI)) {
+ area = AREA_1;
+ theta = (lon > 0.0 ? lon - ONEPI : lon + ONEPI);
+ } else if (lon > -(HALFPI + FORTPI) && lon <= -FORTPI) {
+ area = AREA_2;
+ theta = lon + HALFPI;
+ } else {
+ area = AREA_3;
+ theta = lon;
+ }
+ } else /* this->m_proj_parm.face == FACE_BOTTOM */ {
+ phi = HALFPI + lat;
+ if (lon >= FORTPI && lon <= HALFPI + FORTPI) {
+ area = AREA_0;
+ theta = -lon + HALFPI;
+ } else if (lon < FORTPI && lon >= -FORTPI) {
+ area = AREA_1;
+ theta = -lon;
+ } else if (lon < -FORTPI && lon >= -(HALFPI + FORTPI)) {
+ area = AREA_2;
+ theta = -lon - HALFPI;
+ } else {
+ area = AREA_3;
+ theta = (lon > 0.0 ? -lon + ONEPI : -lon - ONEPI);
+ }
+ }
+
+ /* Compute mu and nu for the area of definition.
+ * For mu, see Eq. (3-21) in [OL76], but note the typos:
+ * compare with Eq. (3-14). For nu, see Eq. (3-38). */
+ mu = atan((12.0 / ONEPI) * (theta + acos(sin(theta) * cos(FORTPI)) - HALFPI));
+ t = sqrt((1.0 - cos(phi)) / (cos(mu) * cos(mu)) / (1.0 - cos(atan(1.0 / cos(theta)))));
+ /* nu = atan(t); We don't really need nu, just t, see below. */
+
+ /* Apply the result to the real area. */
+ if (area == AREA_1) {
+ mu += HALFPI;
+ } else if (area == AREA_2) {
+ mu += ONEPI;
+ } else if (area == AREA_3) {
+ mu += HALFPI + ONEPI;
+ }
+
+ /* Now compute x, y from mu and nu */
+ /* t = tan(nu); */
+ xy_x = t * cos(mu);
+ xy_y = t * sin(mu);
+ boost::ignore_unused(nu);
+ }
+ /* Inverse projection, ellipsoid */
+
+ // INVERSE(e_inverse)
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+
+ CalculationType mu, nu, cosmu, tannu;
+ CalculationType tantheta, theta, cosphi, phi;
+ CalculationType t;
+ int area;
+
+ /* Convert the input x, y to the mu and nu angles as used by QSC.
+ * This depends on the area of the cube face. */
+ nu = atan(sqrt(xy_x * xy_x + xy_y * xy_y));
+ mu = atan2(xy_y, xy_x);
+ if (xy_x >= 0.0 && xy_x >= fabs(xy_y)) {
+ area = AREA_0;
+ } else if (xy_y >= 0.0 && xy_y >= fabs(xy_x)) {
+ area = AREA_1;
+ mu -= HALFPI;
+ } else if (xy_x < 0.0 && -xy_x >= fabs(xy_y)) {
+ area = AREA_2;
+ mu = (mu < 0.0 ? mu + ONEPI : mu - ONEPI);
+ } else {
+ area = AREA_3;
+ mu += HALFPI;
+ }
+
+ /* Compute phi and theta for the area of definition.
+ * The inverse projection is not described in the original paper, but some
+ * good hints can be found here (as of 2011-12-14):
+ * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302
+ * (search for "Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>") */
+ t = (ONEPI / 12.0) * tan(mu);
+ tantheta = sin(t) / (cos(t) - (1.0 / sqrt(2.0)));
+ theta = atan(tantheta);
+ cosmu = cos(mu);
+ tannu = tan(nu);
+ cosphi = 1.0 - cosmu * cosmu * tannu * tannu * (1.0 - cos(atan(1.0 / cos(theta))));
+ if (cosphi < -1.0) {
+ cosphi = -1.0;
+ } else if (cosphi > +1.0) {
+ cosphi = +1.0;
+ }
+
+ /* Apply the result to the real area on the cube face.
+ * For the top and bottom face, we can compute phi and lam directly.
+ * For the other faces, we must use unit sphere cartesian coordinates
+ * as an intermediate step. */
+ if (this->m_proj_parm.face == FACE_TOP) {
+ phi = acos(cosphi);
+ lp_lat = HALFPI - phi;
+ if (area == AREA_0) {
+ lp_lon = theta + HALFPI;
+ } else if (area == AREA_1) {
+ lp_lon = (theta < 0.0 ? theta + ONEPI : theta - ONEPI);
+ } else if (area == AREA_2) {
+ lp_lon = theta - HALFPI;
+ } else /* area == AREA_3 */ {
+ lp_lon = theta;
+ }
+ } else if (this->m_proj_parm.face == FACE_BOTTOM) {
+ phi = acos(cosphi);
+ lp_lat = phi - HALFPI;
+ if (area == AREA_0) {
+ lp_lon = -theta + HALFPI;
+ } else if (area == AREA_1) {
+ lp_lon = -theta;
+ } else if (area == AREA_2) {
+ lp_lon = -theta - HALFPI;
+ } else /* area == AREA_3 */ {
+ lp_lon = (theta < 0.0 ? -theta - ONEPI : -theta + ONEPI);
+ }
+ } else {
+ /* Compute phi and lam via cartesian unit sphere coordinates. */
+ CalculationType q, r, s, t;
+ q = cosphi;
+ t = q * q;
+ if (t >= 1.0) {
+ s = 0.0;
+ } else {
+ s = sqrt(1.0 - t) * sin(theta);
+ }
+ t += s * s;
+ if (t >= 1.0) {
+ r = 0.0;
+ } else {
+ r = sqrt(1.0 - t);
+ }
+ /* Rotate q,r,s into the correct area. */
+ if (area == AREA_1) {
+ t = r;
+ r = -s;
+ s = t;
+ } else if (area == AREA_2) {
+ r = -r;
+ s = -s;
+ } else if (area == AREA_3) {
+ t = r;
+ r = s;
+ s = -t;
+ }
+ /* Rotate q,r,s into the correct cube face. */
+ if (this->m_proj_parm.face == FACE_RIGHT) {
+ t = q;
+ q = -r;
+ r = t;
+ } else if (this->m_proj_parm.face == FACE_BACK) {
+ q = -q;
+ r = -r;
+ } else if (this->m_proj_parm.face == FACE_LEFT) {
+ t = q;
+ q = r;
+ r = -t;
+ }
+ /* Now compute phi and lam from the unit sphere coordinates. */
+ lp_lat = acos(-s) - HALFPI;
+ lp_lon = atan2(r, q);
+ if (this->m_proj_parm.face == FACE_RIGHT) {
+ lp_lon = qsc_shift_lon_origin(lp_lon, -HALFPI);
+ } else if (this->m_proj_parm.face == FACE_BACK) {
+ lp_lon = qsc_shift_lon_origin(lp_lon, -ONEPI);
+ } else if (this->m_proj_parm.face == FACE_LEFT) {
+ lp_lon = qsc_shift_lon_origin(lp_lon, +HALFPI);
+ }
+ }
+
+ /* Apply the shift from the sphere to the ellipsoid as described
+ * in [LK12]. */
+ if (this->m_par.es) {
+ int invert_sign;
+ CalculationType tanphi, xa;
+ invert_sign = (lp_lat < 0.0 ? 1 : 0);
+ tanphi = tan(lp_lat);
+ xa = this->m_proj_parm.b / sqrt(tanphi * tanphi + this->m_proj_parm.one_minus_f_squared);
+ lp_lat = atan(sqrt(this->m_par.a * this->m_par.a - xa * xa) / (this->m_proj_parm.one_minus_f * xa));
+ if (invert_sign) {
+ lp_lat = -lp_lat;
+ }
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "qsc_ellipsoid";
+ }
+
+ };
+
+ // Quadrilateralized Spherical Cube
+ template <typename Parameters, typename T>
+ inline void setup_qsc(Parameters& par, par_qsc<T>& proj_parm)
+ {
+ static const T FORTPI = detail::FORTPI<T>();
+ static const T HALFPI = detail::HALFPI<T>();
+
+ /* Determine the cube face from the center of projection. */
+ if (par.phi0 >= HALFPI - FORTPI / 2.0) {
+ proj_parm.face = FACE_TOP;
+ } else if (par.phi0 <= -(HALFPI - FORTPI / 2.0)) {
+ proj_parm.face = FACE_BOTTOM;
+ } else if (fabs(par.lam0) <= FORTPI) {
+ proj_parm.face = FACE_FRONT;
+ } else if (fabs(par.lam0) <= HALFPI + FORTPI) {
+ proj_parm.face = (par.lam0 > 0.0 ? FACE_RIGHT : FACE_LEFT);
+ } else {
+ proj_parm.face = FACE_BACK;
+ }
+ /* Fill in useful values for the ellipsoid <-> sphere shift
+ * described in [LK12]. */
+ if (par.es) {
+ proj_parm.a_squared = par.a * par.a;
+ proj_parm.b = par.a * sqrt(1.0 - par.es);
+ proj_parm.one_minus_f = 1.0 - (par.a - proj_parm.b) / par.a;
+ proj_parm.one_minus_f_squared = proj_parm.one_minus_f * proj_parm.one_minus_f;
+ }
+ }
+
+ }} // namespace detail::qsc
+ #endif // doxygen
+
+ /*!
+ \brief Quadrilateralized Spherical Cube projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ \par Example
+ \image html ex_qsc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct qsc_ellipsoid : public detail::qsc::base_qsc_ellipsoid<CalculationType, Parameters>
+ {
+ inline qsc_ellipsoid(const Parameters& par) : detail::qsc::base_qsc_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::qsc::setup_qsc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::qsc, qsc_ellipsoid, qsc_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class qsc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<qsc_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void qsc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("qsc", new qsc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_QSC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/robin.hpp b/boost/geometry/srs/projections/proj/robin.hpp
new file mode 100644
index 0000000000..52acb58e41
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/robin.hpp
@@ -0,0 +1,298 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ROBIN_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ROBIN_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/function_overloads.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct robin {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace robin
+ {
+
+ static const double FXC = 0.8487;
+ static const double FYC = 1.3523;
+ static const double C1 = 11.45915590261646417544;
+ static const double RC1 = 0.08726646259971647884;
+ static const int NODES = 18;
+ static const double ONEEPS = 1.000001;
+ static const double EPS = 1e-8;
+
+ /*
+ note: following terms based upon 5 deg. intervals in degrees.
+
+ Some background on these coefficients is available at:
+
+ http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039
+ http://trac.osgeo.org/proj/ticket/113
+ */
+
+ template <typename T>
+ struct COEFS {
+ T c0, c1, c2, c3;
+ };
+
+ template <typename T>
+ inline const COEFS<T> * X()
+ {
+ static const COEFS<T> result[] = {
+ {1.0, 2.2199e-17, -7.15515e-05, 3.1103e-06},
+ {0.9986, -0.000482243, -2.4897e-05, -1.3309e-06},
+ {0.9954, -0.00083103, -4.48605e-05, -9.86701e-07},
+ {0.99, -0.00135364, -5.9661e-05, 3.6777e-06},
+ {0.9822, -0.00167442, -4.49547e-06, -5.72411e-06},
+ {0.973, -0.00214868, -9.03571e-05, 1.8736e-08},
+ {0.96, -0.00305085, -9.00761e-05, 1.64917e-06},
+ {0.9427, -0.00382792, -6.53386e-05, -2.6154e-06},
+ {0.9216, -0.00467746, -0.00010457, 4.81243e-06},
+ {0.8962, -0.00536223, -3.23831e-05, -5.43432e-06},
+ {0.8679, -0.00609363, -0.000113898, 3.32484e-06},
+ {0.835, -0.00698325, -6.40253e-05, 9.34959e-07},
+ {0.7986, -0.00755338, -5.00009e-05, 9.35324e-07},
+ {0.7597, -0.00798324, -3.5971e-05, -2.27626e-06},
+ {0.7186, -0.00851367, -7.01149e-05, -8.6303e-06},
+ {0.6732, -0.00986209, -0.000199569, 1.91974e-05},
+ {0.6213, -0.010418, 8.83923e-05, 6.24051e-06},
+ {0.5722, -0.00906601, 0.000182, 6.24051e-06},
+ {0.5322, -0.00677797, 0.000275608, 6.24051e-06}
+ };
+ return result;
+ }
+
+ template <typename T>
+ inline const COEFS<T> * Y()
+ {
+ static const COEFS<T> result[] = {
+ {-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11},
+ {0.062, 0.0124, -1.26793e-09, 4.22642e-10},
+ {0.124, 0.0124, 5.07171e-09, -1.60604e-09},
+ {0.186, 0.0123999, -1.90189e-08, 6.00152e-09},
+ {0.248, 0.0124002, 7.10039e-08, -2.24e-08},
+ {0.31, 0.0123992, -2.64997e-07, 8.35986e-08},
+ {0.372, 0.0124029, 9.88983e-07, -3.11994e-07},
+ {0.434, 0.0123893, -3.69093e-06, -4.35621e-07},
+ {0.4958, 0.0123198, -1.02252e-05, -3.45523e-07},
+ {0.5571, 0.0121916, -1.54081e-05, -5.82288e-07},
+ {0.6176, 0.0119938, -2.41424e-05, -5.25327e-07},
+ {0.6769, 0.011713, -3.20223e-05, -5.16405e-07},
+ {0.7346, 0.0113541, -3.97684e-05, -6.09052e-07},
+ {0.7903, 0.0109107, -4.89042e-05, -1.04739e-06},
+ {0.8435, 0.0103431, -6.4615e-05, -1.40374e-09},
+ {0.8936, 0.00969686, -6.4636e-05, -8.547e-06},
+ {0.9394, 0.00840947, -0.000192841, -4.2106e-06},
+ {0.9761, 0.00616527, -0.000256, -4.2106e-06},
+ {1.0, 0.00328947, -0.000319159, -4.2106e-06}
+ };
+ return result;
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_robin_spheroid : public base_t_fi<base_robin_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_robin_spheroid(const Parameters& par)
+ : base_t_fi<base_robin_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ template <typename T>
+ inline T V(COEFS<T> const& C, T const& z) const
+ { return (C.c0 + z * (C.c1 + z * (C.c2 + z * C.c3))); }
+ template <typename T>
+ inline T DV(COEFS<T> const& C, T const& z) const
+ { return (C.c1 + z * (C.c2 + C.c2 + z * 3. * C.c3)); }
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ int i;
+ CalculationType dphi;
+
+ i = int_floor((dphi = fabs(lp_lat)) * C1);
+ if (i < 0)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ if (i >= NODES) i = NODES - 1;
+ dphi = geometry::math::r2d<CalculationType>() * (dphi - RC1 * i);
+ xy_x = V(X<CalculationType>()[i], dphi) * FXC * lp_lon;
+ xy_y = V(Y<CalculationType>()[i], dphi) * FYC;
+ if (lp_lat < 0.) xy_y = -xy_y;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ const COEFS<CalculationType> * X = robin::X<CalculationType>();
+ const COEFS<CalculationType> * Y = robin::Y<CalculationType>();
+
+ int i;
+ CalculationType t, t1;
+ COEFS<CalculationType> T;
+
+ lp_lon = xy_x / FXC;
+ lp_lat = fabs(xy_y / FYC);
+ if (lp_lat >= 1.) { /* simple pathologic cases */
+ if (lp_lat > ONEEPS)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else {
+ lp_lat = xy_y < 0. ? -HALFPI : HALFPI;
+ lp_lon /= X[NODES].c0;
+ }
+ } else { /* general problem */
+ /* in Y space, reduce to table interval */
+ i = int_floor(lp_lat * NODES);
+ if( i < 0 || i >= NODES )
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ for (;;) {
+ if (Y[i].c0 > lp_lat) --i;
+ else if (Y[i+1].c0 <= lp_lat) ++i;
+ else break;
+ }
+ T = Y[i];
+ /* first guess, linear interp */
+ t = 5. * (lp_lat - T.c0)/(Y[i+1].c0 - T.c0);
+ /* make into root */
+ T.c0 -= lp_lat;
+ for (;;) { /* Newton-Raphson reduction */
+ t -= t1 = V(T,t) / DV(T,t);
+ if (fabs(t1) < EPS)
+ break;
+ }
+ lp_lat = (5 * i + t) * geometry::math::d2r<CalculationType>();
+ if (xy_y < 0.) lp_lat = -lp_lat;
+ lp_lon /= V(X[i], t);
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "robin_spheroid";
+ }
+
+ };
+
+ // Robinson
+ template <typename Parameters>
+ inline void setup_robin(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::robin
+ #endif // doxygen
+
+ /*!
+ \brief Robinson projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_robin.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct robin_spheroid : public detail::robin::base_robin_spheroid<CalculationType, Parameters>
+ {
+ inline robin_spheroid(const Parameters& par) : detail::robin::base_robin_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::robin::setup_robin(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::robin, robin_spheroid, robin_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class robin_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<robin_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void robin_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("robin", new robin_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ROBIN_HPP
+
diff --git a/boost/geometry/srs/projections/proj/rouss.hpp b/boost/geometry/srs/projections/proj/rouss.hpp
new file mode 100644
index 0000000000..edad904799
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/rouss.hpp
@@ -0,0 +1,241 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_ROUSS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_ROUSS_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Copyright (c) 2003, 2006 Gerald I. Evenden
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/proj_mdist.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct rouss {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace rouss
+ {
+ template <typename T>
+ struct par_rouss
+ {
+ T s0;
+ T A1, A2, A3, A4, A5, A6;
+ T B1, B2, B3, B4, B5, B6, B7, B8;
+ T C1, C2, C3, C4, C5, C6, C7, C8;
+ T D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11;
+ MDIST<T> en;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_rouss_ellipsoid : public base_t_fi<base_rouss_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_rouss<CalculationType> m_proj_parm;
+
+ inline base_rouss_ellipsoid(const Parameters& par)
+ : base_t_fi<base_rouss_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType s, al, cp, sp, al2, s2;
+
+ cp = cos(lp_lat);
+ sp = sin(lp_lat);
+ s = proj_mdist(lp_lat, sp, cp, this->m_proj_parm.en) - this->m_proj_parm.s0;
+ s2 = s * s;
+ al = lp_lon * cp / sqrt(1. - this->m_par.es * sp * sp);
+ al2 = al * al;
+ xy_x = this->m_par.k0 * al*(1.+s2*(this->m_proj_parm.A1+s2*this->m_proj_parm.A4)-al2*(this->m_proj_parm.A2+s*this->m_proj_parm.A3+s2*this->m_proj_parm.A5
+ +al2*this->m_proj_parm.A6));
+ xy_y = this->m_par.k0 * (al2*(this->m_proj_parm.B1+al2*this->m_proj_parm.B4)+
+ s*(1.+al2*(this->m_proj_parm.B3-al2*this->m_proj_parm.B6)+s2*(this->m_proj_parm.B2+s2*this->m_proj_parm.B8)+
+ s*al2*(this->m_proj_parm.B5+s*this->m_proj_parm.B7)));
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType s, al, x = xy_x / this->m_par.k0, y = xy_y / this->m_par.k0, x2, y2;;
+
+ x2 = x * x;
+ y2 = y * y;
+ al = x*(1.-this->m_proj_parm.C1*y2+x2*(this->m_proj_parm.C2+this->m_proj_parm.C3*y-this->m_proj_parm.C4*x2+this->m_proj_parm.C5*y2-this->m_proj_parm.C7*x2*y)
+ +y2*(this->m_proj_parm.C6*y2-this->m_proj_parm.C8*x2*y));
+ s = this->m_proj_parm.s0 + y*(1.+y2*(-this->m_proj_parm.D2+this->m_proj_parm.D8*y2))+
+ x2*(-this->m_proj_parm.D1+y*(-this->m_proj_parm.D3+y*(-this->m_proj_parm.D5+y*(-this->m_proj_parm.D7+y*this->m_proj_parm.D11)))+
+ x2*(this->m_proj_parm.D4+y*(this->m_proj_parm.D6+y*this->m_proj_parm.D10)-x2*this->m_proj_parm.D9));
+ lp_lat=proj_inv_mdist(s, this->m_proj_parm.en);
+ s = sin(lp_lat);
+ lp_lon=al * sqrt(1. - this->m_par.es * s * s)/cos(lp_lat);
+ }
+
+ static inline std::string get_name()
+ {
+ return "rouss_ellipsoid";
+ }
+
+ };
+
+ // Roussilhe Stereographic
+ template <typename Parameters, typename T>
+ inline void setup_rouss(Parameters& par, par_rouss<T>& proj_parm)
+ {
+ T N0, es2, t, t2, R_R0_2, R_R0_4;
+
+ if (!proj_mdist_ini(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ es2 = sin(par.phi0);
+ proj_parm.s0 = proj_mdist(par.phi0, es2, cos(par.phi0), proj_parm.en);
+ t = 1. - (es2 = par.es * es2 * es2);
+ N0 = 1./sqrt(t);
+ R_R0_2 = t * t / par.one_es;
+ R_R0_4 = R_R0_2 * R_R0_2;
+ t = tan(par.phi0);
+ t2 = t * t;
+ proj_parm.C1 = proj_parm.A1 = R_R0_2 / 4.;
+ proj_parm.C2 = proj_parm.A2 = R_R0_2 * (2 * t2 - 1. - 2. * es2) / 12.;
+ proj_parm.A3 = R_R0_2 * t * (1. + 4. * t2)/ ( 12. * N0);
+ proj_parm.A4 = R_R0_4 / 24.;
+ proj_parm.A5 = R_R0_4 * ( -1. + t2 * (11. + 12. * t2))/24.;
+ proj_parm.A6 = R_R0_4 * ( -2. + t2 * (11. - 2. * t2))/240.;
+ proj_parm.B1 = t / (2. * N0);
+ proj_parm.B2 = R_R0_2 / 12.;
+ proj_parm.B3 = R_R0_2 * (1. + 2. * t2 - 2. * es2)/4.;
+ proj_parm.B4 = R_R0_2 * t * (2. - t2)/(24. * N0);
+ proj_parm.B5 = R_R0_2 * t * (5. + 4.* t2)/(8. * N0);
+ proj_parm.B6 = R_R0_4 * (-2. + t2 * (-5. + 6. * t2))/48.;
+ proj_parm.B7 = R_R0_4 * (5. + t2 * (19. + 12. * t2))/24.;
+ proj_parm.B8 = R_R0_4 / 120.;
+ proj_parm.C3 = R_R0_2 * t * (1. + t2)/(3. * N0);
+ proj_parm.C4 = R_R0_4 * (-3. + t2 * (34. + 22. * t2))/240.;
+ proj_parm.C5 = R_R0_4 * (4. + t2 * (13. + 12. * t2))/24.;
+ proj_parm.C6 = R_R0_4 / 16.;
+ proj_parm.C7 = R_R0_4 * t * (11. + t2 * (33. + t2 * 16.))/(48. * N0);
+ proj_parm.C8 = R_R0_4 * t * (1. + t2 * 4.)/(36. * N0);
+ proj_parm.D1 = t / (2. * N0);
+ proj_parm.D2 = R_R0_2 / 12.;
+ proj_parm.D3 = R_R0_2 * (2 * t2 + 1. - 2. * es2) / 4.;
+ proj_parm.D4 = R_R0_2 * t * (1. + t2)/(8. * N0);
+ proj_parm.D5 = R_R0_2 * t * (1. + t2 * 2.)/(4. * N0);
+ proj_parm.D6 = R_R0_4 * (1. + t2 * (6. + t2 * 6.))/16.;
+ proj_parm.D7 = R_R0_4 * t2 * (3. + t2 * 4.)/8.;
+ proj_parm.D8 = R_R0_4 / 80.;
+ proj_parm.D9 = R_R0_4 * t * (-21. + t2 * (178. - t2 * 26.))/720.;
+ proj_parm.D10 = R_R0_4 * t * (29. + t2 * (86. + t2 * 48.))/(96. * N0);
+ proj_parm.D11 = R_R0_4 * t * (37. + t2 * 44.)/(96. * N0);
+ }
+
+ }} // namespace detail::rouss
+ #endif // doxygen
+
+ /*!
+ \brief Roussilhe Stereographic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Ellipsoid
+ \par Example
+ \image html ex_rouss.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct rouss_ellipsoid : public detail::rouss::base_rouss_ellipsoid<CalculationType, Parameters>
+ {
+ inline rouss_ellipsoid(const Parameters& par) : detail::rouss::base_rouss_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::rouss::setup_rouss(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::rouss, rouss_ellipsoid, rouss_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class rouss_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<rouss_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void rouss_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("rouss", new rouss_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_ROUSS_HPP
+
diff --git a/boost/geometry/srs/projections/proj/rpoly.hpp b/boost/geometry/srs/projections/proj/rpoly.hpp
new file mode 100644
index 0000000000..fcb9f1043b
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/rpoly.hpp
@@ -0,0 +1,187 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_RPOLY_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_RPOLY_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct rpoly {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace rpoly
+ {
+
+ static const double EPS = 1e-9;
+
+ template <typename T>
+ struct par_rpoly
+ {
+ T phi1;
+ T fxa;
+ T fxb;
+ int mode;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_rpoly_spheroid : public base_t_f<base_rpoly_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_rpoly<CalculationType> m_proj_parm;
+
+ inline base_rpoly_spheroid(const Parameters& par)
+ : base_t_f<base_rpoly_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType fa;
+
+ if (this->m_proj_parm.mode)
+ fa = tan(lp_lon * this->m_proj_parm.fxb) * this->m_proj_parm.fxa;
+ else
+ fa = 0.5 * lp_lon;
+ if (fabs(lp_lat) < EPS) {
+ xy_x = fa + fa;
+ xy_y = - this->m_par.phi0;
+ } else {
+ xy_y = 1. / tan(lp_lat);
+ xy_x = sin(fa = 2. * atan(fa * sin(lp_lat))) * xy_y;
+ xy_y = lp_lat - this->m_par.phi0 + (1. - cos(fa)) * xy_y;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "rpoly_spheroid";
+ }
+
+ };
+
+ // Rectangular Polyconic
+ template <typename Parameters, typename T>
+ inline void setup_rpoly(Parameters& par, par_rpoly<T>& proj_parm)
+ {
+ if ((proj_parm.mode = (proj_parm.phi1 = fabs(pj_param(par.params, "rlat_ts").f)) > EPS)) {
+ proj_parm.fxb = 0.5 * sin(proj_parm.phi1);
+ proj_parm.fxa = 0.5 / proj_parm.fxb;
+ }
+ par.es = 0.;
+ }
+
+ }} // namespace detail::rpoly
+ #endif // doxygen
+
+ /*!
+ \brief Rectangular Polyconic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ - no inverse
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ \par Example
+ \image html ex_rpoly.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct rpoly_spheroid : public detail::rpoly::base_rpoly_spheroid<CalculationType, Parameters>
+ {
+ inline rpoly_spheroid(const Parameters& par) : detail::rpoly::base_rpoly_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::rpoly::setup_rpoly(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::rpoly, rpoly_spheroid, rpoly_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class rpoly_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<rpoly_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void rpoly_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("rpoly", new rpoly_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_RPOLY_HPP
+
diff --git a/boost/geometry/srs/projections/proj/sconics.hpp b/boost/geometry/srs/projections/proj/sconics.hpp
new file mode 100644
index 0000000000..b5f97fa542
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/sconics.hpp
@@ -0,0 +1,570 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_SCONICS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_SCONICS_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct euler {};
+ struct murd1 {};
+ struct murd2 {};
+ struct murd3 {};
+ struct pconic {};
+ struct tissot {};
+ struct vitk1 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace sconics
+ {
+
+ static const int EULER = 0;
+ static const int MURD1 = 1;
+ static const int MURD2 = 2;
+ static const int MURD3 = 3;
+ static const int PCONIC = 4;
+ static const int TISSOT = 5;
+ static const int VITK1 = 6;
+ static const double EPS10 = 1.e-10;
+ static const double EPS = 1e-10;
+
+ template <typename T>
+ struct par_sconics
+ {
+ T n;
+ T rho_c;
+ T rho_0;
+ T sig;
+ T c1, c2;
+ int type;
+ };
+
+ /* get common factors for simple conics */
+ template <typename Parameters, typename T>
+ inline int phi12(Parameters& par, par_sconics<T>& proj_parm, T *del)
+ {
+ T p1, p2;
+ int err = 0;
+
+ if (!pj_param(par.params, "tlat_1").i ||
+ !pj_param(par.params, "tlat_2").i) {
+ err = -41;
+ } else {
+ p1 = pj_param(par.params, "rlat_1").f;
+ p2 = pj_param(par.params, "rlat_2").f;
+ *del = 0.5 * (p2 - p1);
+ proj_parm.sig = 0.5 * (p2 + p1);
+ err = (fabs(*del) < EPS || fabs(proj_parm.sig) < EPS) ? -42 : 0;
+ *del = *del;
+ }
+ return err;
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_sconics_spheroid : public base_t_fi<base_sconics_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_sconics<CalculationType> m_proj_parm;
+
+ inline base_sconics_spheroid(const Parameters& par)
+ : base_t_fi<base_sconics_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType rho;
+
+ switch (this->m_proj_parm.type) {
+ case MURD2:
+ rho = this->m_proj_parm.rho_c + tan(this->m_proj_parm.sig - lp_lat);
+ break;
+ case PCONIC:
+ rho = this->m_proj_parm.c2 * (this->m_proj_parm.c1 - tan(lp_lat - this->m_proj_parm.sig));
+ break;
+ default:
+ rho = this->m_proj_parm.rho_c - lp_lat;
+ break;
+ }
+ xy_x = rho * sin( lp_lon *= this->m_proj_parm.n );
+ xy_y = this->m_proj_parm.rho_0 - rho * cos(lp_lon);
+ }
+
+ // INVERSE(s_inverse) ellipsoid & spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType rho;
+
+ rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho_0 - xy_y);
+ if (this->m_proj_parm.n < 0.) {
+ rho = - rho;
+ xy_x = - xy_x;
+ xy_y = - xy_y;
+ }
+ lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n;
+ switch (this->m_proj_parm.type) {
+ case PCONIC:
+ lp_lat = atan(this->m_proj_parm.c1 - rho / this->m_proj_parm.c2) + this->m_proj_parm.sig;
+ break;
+ case MURD2:
+ lp_lat = this->m_proj_parm.sig - atan(rho - this->m_proj_parm.rho_c);
+ break;
+ default:
+ lp_lat = this->m_proj_parm.rho_c - rho;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "sconics_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_sconics<T>& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T del, cs;
+ int i;
+
+ if( (i = phi12(par, proj_parm, &del)) )
+ BOOST_THROW_EXCEPTION( projection_exception(i) );
+ switch (proj_parm.type) {
+ case TISSOT:
+ proj_parm.n = sin(proj_parm.sig);
+ cs = cos(del);
+ proj_parm.rho_c = proj_parm.n / cs + cs / proj_parm.n;
+ proj_parm.rho_0 = sqrt((proj_parm.rho_c - 2 * sin(par.phi0))/proj_parm.n);
+ break;
+ case MURD1:
+ proj_parm.rho_c = sin(del)/(del * tan(proj_parm.sig)) + proj_parm.sig;
+ proj_parm.rho_0 = proj_parm.rho_c - par.phi0;
+ proj_parm.n = sin(proj_parm.sig);
+ break;
+ case MURD2:
+ proj_parm.rho_c = (cs = sqrt(cos(del))) / tan(proj_parm.sig);
+ proj_parm.rho_0 = proj_parm.rho_c + tan(proj_parm.sig - par.phi0);
+ proj_parm.n = sin(proj_parm.sig) * cs;
+ break;
+ case MURD3:
+ proj_parm.rho_c = del / (tan(proj_parm.sig) * tan(del)) + proj_parm.sig;
+ proj_parm.rho_0 = proj_parm.rho_c - par.phi0;
+ proj_parm.n = sin(proj_parm.sig) * sin(del) * tan(del) / (del * del);
+ break;
+ case EULER:
+ proj_parm.n = sin(proj_parm.sig) * sin(del) / del;
+ del *= 0.5;
+ proj_parm.rho_c = del / (tan(del) * tan(proj_parm.sig)) + proj_parm.sig;
+ proj_parm.rho_0 = proj_parm.rho_c - par.phi0;
+ break;
+ case PCONIC:
+ proj_parm.n = sin(proj_parm.sig);
+ proj_parm.c2 = cos(del);
+ proj_parm.c1 = 1./tan(proj_parm.sig);
+ if (fabs(del = par.phi0 - proj_parm.sig) - EPS10 >= HALFPI)
+ BOOST_THROW_EXCEPTION( projection_exception(-43) );
+ proj_parm.rho_0 = proj_parm.c2 * (proj_parm.c1 - tan(del));
+ break;
+ case VITK1:
+ proj_parm.n = (cs = tan(del)) * sin(proj_parm.sig) / del;
+ proj_parm.rho_c = del / (cs * tan(proj_parm.sig)) + proj_parm.sig;
+ proj_parm.rho_0 = proj_parm.rho_c - par.phi0;
+ break;
+ }
+ par.es = 0;
+ }
+
+
+ // Tissot
+ template <typename Parameters, typename T>
+ inline void setup_tissot(Parameters& par, par_sconics<T>& proj_parm)
+ {
+ proj_parm.type = TISSOT;
+ setup(par, proj_parm);
+ }
+
+ // Murdoch I
+ template <typename Parameters, typename T>
+ inline void setup_murd1(Parameters& par, par_sconics<T>& proj_parm)
+ {
+ proj_parm.type = MURD1;
+ setup(par, proj_parm);
+ }
+
+ // Murdoch II
+ template <typename Parameters, typename T>
+ inline void setup_murd2(Parameters& par, par_sconics<T>& proj_parm)
+ {
+ proj_parm.type = MURD2;
+ setup(par, proj_parm);
+ }
+
+ // Murdoch III
+ template <typename Parameters, typename T>
+ inline void setup_murd3(Parameters& par, par_sconics<T>& proj_parm)
+ {
+ proj_parm.type = MURD3;
+ setup(par, proj_parm);
+ }
+
+ // Euler
+ template <typename Parameters, typename T>
+ inline void setup_euler(Parameters& par, par_sconics<T>& proj_parm)
+ {
+ proj_parm.type = EULER;
+ setup(par, proj_parm);
+ }
+
+ // Perspective Conic
+ template <typename Parameters, typename T>
+ inline void setup_pconic(Parameters& par, par_sconics<T>& proj_parm)
+ {
+ proj_parm.type = PCONIC;
+ setup(par, proj_parm);
+ }
+
+ // Vitkovsky I
+ template <typename Parameters, typename T>
+ inline void setup_vitk1(Parameters& par, par_sconics<T>& proj_parm)
+ {
+ proj_parm.type = VITK1;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::sconics
+ #endif // doxygen
+
+ /*!
+ \brief Tissot projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel
+ - lat_2: Latitude of second standard parallel
+ \par Example
+ \image html ex_tissot.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct tissot_spheroid : public detail::sconics::base_sconics_spheroid<CalculationType, Parameters>
+ {
+ inline tissot_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sconics::setup_tissot(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Murdoch I projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel
+ - lat_2: Latitude of second standard parallel
+ \par Example
+ \image html ex_murd1.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct murd1_spheroid : public detail::sconics::base_sconics_spheroid<CalculationType, Parameters>
+ {
+ inline murd1_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sconics::setup_murd1(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Murdoch II projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel
+ - lat_2: Latitude of second standard parallel
+ \par Example
+ \image html ex_murd2.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct murd2_spheroid : public detail::sconics::base_sconics_spheroid<CalculationType, Parameters>
+ {
+ inline murd2_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sconics::setup_murd2(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Murdoch III projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel
+ - lat_2: Latitude of second standard parallel
+ \par Example
+ \image html ex_murd3.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct murd3_spheroid : public detail::sconics::base_sconics_spheroid<CalculationType, Parameters>
+ {
+ inline murd3_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sconics::setup_murd3(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Euler projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel
+ - lat_2: Latitude of second standard parallel
+ \par Example
+ \image html ex_euler.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct euler_spheroid : public detail::sconics::base_sconics_spheroid<CalculationType, Parameters>
+ {
+ inline euler_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sconics::setup_euler(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Perspective Conic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel
+ - lat_2: Latitude of second standard parallel
+ \par Example
+ \image html ex_pconic.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct pconic_spheroid : public detail::sconics::base_sconics_spheroid<CalculationType, Parameters>
+ {
+ inline pconic_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sconics::setup_pconic(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Vitkovsky I projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Conic
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel
+ - lat_2: Latitude of second standard parallel
+ \par Example
+ \image html ex_vitk1.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct vitk1_spheroid : public detail::sconics::base_sconics_spheroid<CalculationType, Parameters>
+ {
+ inline vitk1_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sconics::setup_vitk1(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::euler, euler_spheroid, euler_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::murd1, murd1_spheroid, murd1_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::murd2, murd2_spheroid, murd2_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::murd3, murd3_spheroid, murd3_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::pconic, pconic_spheroid, pconic_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::tissot, tissot_spheroid, tissot_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::vitk1, vitk1_spheroid, vitk1_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class tissot_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<tissot_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class murd1_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<murd1_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class murd2_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<murd2_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class murd3_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<murd3_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class euler_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<euler_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class pconic_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<pconic_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class vitk1_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<vitk1_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void sconics_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("tissot", new tissot_entry<CalculationType, Parameters>);
+ factory.add_to_factory("murd1", new murd1_entry<CalculationType, Parameters>);
+ factory.add_to_factory("murd2", new murd2_entry<CalculationType, Parameters>);
+ factory.add_to_factory("murd3", new murd3_entry<CalculationType, Parameters>);
+ factory.add_to_factory("euler", new euler_entry<CalculationType, Parameters>);
+ factory.add_to_factory("pconic", new pconic_entry<CalculationType, Parameters>);
+ factory.add_to_factory("vitk1", new vitk1_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_SCONICS_HPP
+
diff --git a/boost/geometry/srs/projections/proj/somerc.hpp b/boost/geometry/srs/projections/proj/somerc.hpp
new file mode 100644
index 0000000000..e67d09719e
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/somerc.hpp
@@ -0,0 +1,227 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_SOMERC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_SOMERC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct somerc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace somerc
+ {
+ static const double EPS = 1.e-10;
+ static const int NITER = 6;
+
+ template <typename T>
+ struct par_somerc
+ {
+ T K, c, hlf_e, kR, cosp0, sinp0;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_somerc_ellipsoid : public base_t_fi<base_somerc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_somerc<CalculationType> m_proj_parm;
+
+ inline base_somerc_ellipsoid(const Parameters& par)
+ : base_t_fi<base_somerc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward)
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType phip, lamp, phipp, lampp, sp, cp;
+
+ sp = this->m_par.e * sin(lp_lat);
+ phip = 2.* atan( exp( this->m_proj_parm.c * (
+ log(tan(FORTPI + 0.5 * lp_lat)) - this->m_proj_parm.hlf_e * log((1. + sp)/(1. - sp)))
+ + this->m_proj_parm.K)) - HALFPI;
+ lamp = this->m_proj_parm.c * lp_lon;
+ cp = cos(phip);
+ phipp = aasin(this->m_proj_parm.cosp0 * sin(phip) - this->m_proj_parm.sinp0 * cp * cos(lamp));
+ lampp = aasin(cp * sin(lamp) / cos(phipp));
+ xy_x = this->m_proj_parm.kR * lampp;
+ xy_y = this->m_proj_parm.kR * log(tan(FORTPI + 0.5 * phipp));
+ }
+
+ // INVERSE(e_inverse) ellipsoid & spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+
+ CalculationType phip, lamp, phipp, lampp, cp, esp, con, delp;
+ int i;
+
+ phipp = 2. * (atan(exp(xy_y / this->m_proj_parm.kR)) - FORTPI);
+ lampp = xy_x / this->m_proj_parm.kR;
+ cp = cos(phipp);
+ phip = aasin(this->m_proj_parm.cosp0 * sin(phipp) + this->m_proj_parm.sinp0 * cp * cos(lampp));
+ lamp = aasin(cp * sin(lampp) / cos(phip));
+ con = (this->m_proj_parm.K - log(tan(FORTPI + 0.5 * phip)))/this->m_proj_parm.c;
+ for (i = NITER; i ; --i) {
+ esp = this->m_par.e * sin(phip);
+ delp = (con + log(tan(FORTPI + 0.5 * phip)) - this->m_proj_parm.hlf_e *
+ log((1. + esp)/(1. - esp)) ) *
+ (1. - esp * esp) * cos(phip) * this->m_par.rone_es;
+ phip -= delp;
+ if (fabs(delp) < EPS)
+ break;
+ }
+ if (i) {
+ lp_lat = phip;
+ lp_lon = lamp / this->m_proj_parm.c;
+ } else
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ }
+
+ static inline std::string get_name()
+ {
+ return "somerc_ellipsoid";
+ }
+
+ };
+
+ // Swiss. Obl. Mercator
+ template <typename Parameters, typename T>
+ inline void setup_somerc(Parameters& par, par_somerc<T>& proj_parm)
+ {
+ static const T FORTPI = detail::FORTPI<T>();
+
+ T cp, phip0, sp;
+
+ proj_parm.hlf_e = 0.5 * par.e;
+ cp = cos(par.phi0);
+ cp *= cp;
+ proj_parm.c = sqrt(1 + par.es * cp * cp * par.rone_es);
+ sp = sin(par.phi0);
+ proj_parm.cosp0 = cos( phip0 = aasin(proj_parm.sinp0 = sp / proj_parm.c) );
+ sp *= par.e;
+ proj_parm.K = log(tan(FORTPI + 0.5 * phip0)) - proj_parm.c * (
+ log(tan(FORTPI + 0.5 * par.phi0)) - proj_parm.hlf_e *
+ log((1. + sp) / (1. - sp)));
+ proj_parm.kR = par.k0 * sqrt(par.one_es) / (1. - sp * sp);
+ }
+
+ }} // namespace detail::somerc
+ #endif // doxygen
+
+ /*!
+ \brief Swiss. Obl. Mercator projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Ellipsoid
+ - For CH1903
+ \par Example
+ \image html ex_somerc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct somerc_ellipsoid : public detail::somerc::base_somerc_ellipsoid<CalculationType, Parameters>
+ {
+ inline somerc_ellipsoid(const Parameters& par) : detail::somerc::base_somerc_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::somerc::setup_somerc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::somerc, somerc_ellipsoid, somerc_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class somerc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<somerc_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void somerc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("somerc", new somerc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_SOMERC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/stere.hpp b/boost/geometry/srs/projections/proj/stere.hpp
new file mode 100644
index 0000000000..9278902e34
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/stere.hpp
@@ -0,0 +1,545 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_STERE_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_STERE_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/config.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_tsfn.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct stere {};
+ struct ups {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace stere
+ {
+ static const double EPS10 = 1.e-10;
+ static const double TOL = 1.e-8;
+ static const int NITER = 8;
+ static const double CONV = 1.e-10;
+ static const int S_POLE = 0;
+ static const int N_POLE = 1;
+ static const int OBLIQ = 2;
+ static const int EQUIT = 3;
+
+ template <typename T>
+ struct par_stere
+ {
+ T phits;
+ T sinX1;
+ T cosX1;
+ T akm1;
+ int mode;
+ };
+
+ template <typename T>
+ inline T ssfn_(T const& phit, T sinphi, T const& eccen)
+ {
+ sinphi *= eccen;
+ return (tan (.5 * (geometry::math::half_pi<T>() + phit)) *
+ pow((1. - sinphi) / (1. + sinphi), .5 * eccen));
+ }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_stere_ellipsoid : public base_t_fi<base_stere_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_stere<CalculationType> m_proj_parm;
+
+ inline base_stere_ellipsoid(const Parameters& par)
+ : base_t_fi<base_stere_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType coslam, sinlam, sinX=0.0, cosX=0.0, X, A, sinphi;
+
+ coslam = cos(lp_lon);
+ sinlam = sin(lp_lon);
+ sinphi = sin(lp_lat);
+ if (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT) {
+ sinX = sin(X = 2. * atan(ssfn_(lp_lat, sinphi, this->m_par.e)) - HALFPI);
+ cosX = cos(X);
+ }
+ switch (this->m_proj_parm.mode) {
+ case OBLIQ:
+ A = this->m_proj_parm.akm1 / (this->m_proj_parm.cosX1 * (1. + this->m_proj_parm.sinX1 * sinX +
+ this->m_proj_parm.cosX1 * cosX * coslam));
+ xy_y = A * (this->m_proj_parm.cosX1 * sinX - this->m_proj_parm.sinX1 * cosX * coslam);
+ goto xmul;
+ case EQUIT:
+ A = this->m_proj_parm.akm1 / (1. + cosX * coslam);
+ xy_y = A * sinX;
+ xmul:
+ xy_x = A * cosX;
+ break;
+ case S_POLE:
+ lp_lat = -lp_lat;
+ coslam = - coslam;
+ sinphi = -sinphi;
+ BOOST_FALLTHROUGH;
+ case N_POLE:
+ xy_x = this->m_proj_parm.akm1 * pj_tsfn(lp_lat, sinphi, this->m_par.e);
+ xy_y = - xy_x * coslam;
+ break;
+ }
+ xy_x = xy_x * sinlam;
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType cosphi, sinphi, tp=0.0, phi_l=0.0, rho, halfe=0.0, halfpi=0.0;
+ int i;
+
+ rho = boost::math::hypot(xy_x, xy_y);
+ switch (this->m_proj_parm.mode) {
+ case OBLIQ:
+ case EQUIT:
+ cosphi = cos( tp = 2. * atan2(rho * this->m_proj_parm.cosX1 , this->m_proj_parm.akm1) );
+ sinphi = sin(tp);
+ if( rho == 0.0 )
+ phi_l = asin(cosphi * this->m_proj_parm.sinX1);
+ else
+ phi_l = asin(cosphi * this->m_proj_parm.sinX1 + (xy_y * sinphi * this->m_proj_parm.cosX1 / rho));
+
+ tp = tan(.5 * (HALFPI + phi_l));
+ xy_x *= sinphi;
+ xy_y = rho * this->m_proj_parm.cosX1 * cosphi - xy_y * this->m_proj_parm.sinX1* sinphi;
+ halfpi = HALFPI;
+ halfe = .5 * this->m_par.e;
+ break;
+ case N_POLE:
+ xy_y = -xy_y;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ phi_l = HALFPI - 2. * atan(tp = - rho / this->m_proj_parm.akm1);
+ halfpi = -HALFPI;
+ halfe = -.5 * this->m_par.e;
+ break;
+ }
+ for (i = NITER; i--; phi_l = lp_lat) {
+ sinphi = this->m_par.e * sin(phi_l);
+ lp_lat = 2. * atan(tp * pow((1.+sinphi)/(1.-sinphi), halfe)) - halfpi;
+ if (fabs(phi_l - lp_lat) < CONV) {
+ if (this->m_proj_parm.mode == S_POLE)
+ lp_lat = -lp_lat;
+ lp_lon = (xy_x == 0. && xy_y == 0.) ? 0. : atan2(xy_x, xy_y);
+ return;
+ }
+ }
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ }
+
+ static inline std::string get_name()
+ {
+ return "stere_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_stere_spheroid : public base_t_fi<base_stere_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_stere<CalculationType> m_proj_parm;
+
+ inline base_stere_spheroid(const Parameters& par)
+ : base_t_fi<base_stere_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType sinphi, cosphi, coslam, sinlam;
+
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ coslam = cos(lp_lon);
+ sinlam = sin(lp_lon);
+ switch (this->m_proj_parm.mode) {
+ case EQUIT:
+ xy_y = 1. + cosphi * coslam;
+ goto oblcon;
+ case OBLIQ:
+ xy_y = 1. + this->m_proj_parm.sinX1 * sinphi + this->m_proj_parm.cosX1 * cosphi * coslam;
+ oblcon:
+ if (xy_y <= EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = (xy_y = this->m_proj_parm.akm1 / xy_y) * cosphi * sinlam;
+ xy_y *= (this->m_proj_parm.mode == EQUIT) ? sinphi :
+ this->m_proj_parm.cosX1 * sinphi - this->m_proj_parm.sinX1 * cosphi * coslam;
+ break;
+ case N_POLE:
+ coslam = - coslam;
+ lp_lat = - lp_lat;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ if (fabs(lp_lat - HALFPI) < TOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = sinlam * ( xy_y = this->m_proj_parm.akm1 * tan(FORTPI + .5 * lp_lat) );
+ xy_y *= coslam;
+ break;
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType c, rh, sinc, cosc;
+
+ sinc = sin(c = 2. * atan((rh = boost::math::hypot(xy_x, xy_y)) / this->m_proj_parm.akm1));
+ cosc = cos(c);
+ lp_lon = 0.;
+ switch (this->m_proj_parm.mode) {
+ case EQUIT:
+ if (fabs(rh) <= EPS10)
+ lp_lat = 0.;
+ else
+ lp_lat = asin(xy_y * sinc / rh);
+ if (cosc != 0. || xy_x != 0.)
+ lp_lon = atan2(xy_x * sinc, cosc * rh);
+ break;
+ case OBLIQ:
+ if (fabs(rh) <= EPS10)
+ lp_lat = this->m_par.phi0;
+ else
+ lp_lat = asin(cosc * this->m_proj_parm.sinX1 + xy_y * sinc * this->m_proj_parm.cosX1 / rh);
+ if ((c = cosc - this->m_proj_parm.sinX1 * sin(lp_lat)) != 0. || xy_x != 0.)
+ lp_lon = atan2(xy_x * sinc * this->m_proj_parm.cosX1, c * rh);
+ break;
+ case N_POLE:
+ xy_y = -xy_y;
+ BOOST_FALLTHROUGH;
+ case S_POLE:
+ if (fabs(rh) <= EPS10)
+ lp_lat = this->m_par.phi0;
+ else
+ lp_lat = asin(this->m_proj_parm.mode == S_POLE ? - cosc : cosc);
+ lp_lon = (xy_x == 0. && xy_y == 0.) ? 0. : atan2(xy_x, xy_y);
+ break;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "stere_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_stere<T>& proj_parm) /* general initialization */
+ {
+ static const T FORTPI = detail::FORTPI<T>();
+ static const T HALFPI = detail::HALFPI<T>();
+
+ T t;
+
+ if (fabs((t = fabs(par.phi0)) - HALFPI) < EPS10)
+ proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE;
+ else
+ proj_parm.mode = t > EPS10 ? OBLIQ : EQUIT;
+ proj_parm.phits = fabs(proj_parm.phits);
+ if (par.es != 0.0) {
+ T X;
+
+ switch (proj_parm.mode) {
+ case N_POLE:
+ case S_POLE:
+ if (fabs(proj_parm.phits - HALFPI) < EPS10)
+ proj_parm.akm1 = 2. * par.k0 /
+ sqrt(pow(1+par.e,1+par.e)*pow(1-par.e,1-par.e));
+ else {
+ proj_parm.akm1 = cos(proj_parm.phits) /
+ pj_tsfn(proj_parm.phits, t = sin(proj_parm.phits), par.e);
+ t *= par.e;
+ proj_parm.akm1 /= sqrt(1. - t * t);
+ }
+ break;
+ case EQUIT:
+ //proj_parm.akm1 = 2. * par.k0;
+ //break;
+ case OBLIQ:
+ t = sin(par.phi0);
+ X = 2. * atan(ssfn_(par.phi0, t, par.e)) - HALFPI;
+ t *= par.e;
+ proj_parm.akm1 = 2. * par.k0 * cos(par.phi0) / sqrt(1. - t * t);
+ proj_parm.sinX1 = sin(X);
+ proj_parm.cosX1 = cos(X);
+ break;
+ }
+ } else {
+ switch (proj_parm.mode) {
+ case OBLIQ:
+ proj_parm.sinX1 = sin(par.phi0);
+ proj_parm.cosX1 = cos(par.phi0);
+ BOOST_FALLTHROUGH;
+ case EQUIT:
+ proj_parm.akm1 = 2. * par.k0;
+ break;
+ case S_POLE:
+ case N_POLE:
+ proj_parm.akm1 = fabs(proj_parm.phits - HALFPI) >= EPS10 ?
+ cos(proj_parm.phits) / tan(FORTPI - .5 * proj_parm.phits) :
+ 2. * par.k0 ;
+ break;
+ }
+ }
+ }
+
+
+ // Stereographic
+ template <typename Parameters, typename T>
+ inline void setup_stere(Parameters& par, par_stere<T>& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ proj_parm.phits = pj_param(par.params, "tlat_ts").i ?
+ pj_param(par.params, "rlat_ts").f : HALFPI;
+ setup(par, proj_parm);
+ }
+
+ // Universal Polar Stereographic
+ template <typename Parameters, typename T>
+ inline void setup_ups(Parameters& par, par_stere<T>& proj_parm)
+ {
+ static const T HALFPI = detail::HALFPI<T>();
+
+ /* International Ellipsoid */
+ par.phi0 = pj_param(par.params, "bsouth").i ? -HALFPI: HALFPI;
+ if (!par.es)
+ BOOST_THROW_EXCEPTION( projection_exception(-34) );
+ par.k0 = .994;
+ par.x0 = 2000000.;
+ par.y0 = 2000000.;
+ proj_parm.phits = HALFPI;
+ par.lam0 = 0.;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::stere
+ #endif // doxygen
+
+ /*!
+ \brief Stereographic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ \par Example
+ \image html ex_stere.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct stere_ellipsoid : public detail::stere::base_stere_ellipsoid<CalculationType, Parameters>
+ {
+ inline stere_ellipsoid(const Parameters& par) : detail::stere::base_stere_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::stere::setup_stere(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Stereographic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ \par Example
+ \image html ex_stere.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct stere_spheroid : public detail::stere::base_stere_spheroid<CalculationType, Parameters>
+ {
+ inline stere_spheroid(const Parameters& par) : detail::stere::base_stere_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::stere::setup_stere(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Universal Polar Stereographic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - south: Denotes southern hemisphere UTM zone (boolean)
+ \par Example
+ \image html ex_ups.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct ups_ellipsoid : public detail::stere::base_stere_ellipsoid<CalculationType, Parameters>
+ {
+ inline ups_ellipsoid(const Parameters& par) : detail::stere::base_stere_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::stere::setup_ups(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Universal Polar Stereographic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Projection parameters
+ - south: Denotes southern hemisphere UTM zone (boolean)
+ \par Example
+ \image html ex_ups.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct ups_spheroid : public detail::stere::base_stere_spheroid<CalculationType, Parameters>
+ {
+ inline ups_spheroid(const Parameters& par) : detail::stere::base_stere_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::stere::setup_ups(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::stere, stere_spheroid, stere_ellipsoid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::ups, ups_spheroid, ups_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class stere_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<stere_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<stere_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class ups_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<ups_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<ups_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void stere_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("stere", new stere_entry<CalculationType, Parameters>);
+ factory.add_to_factory("ups", new ups_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_STERE_HPP
+
diff --git a/boost/geometry/srs/projections/proj/sterea.hpp b/boost/geometry/srs/projections/proj/sterea.hpp
new file mode 100644
index 0000000000..f9de2c6896
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/sterea.hpp
@@ -0,0 +1,210 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_STEREA_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_STEREA_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// Copyright (c) 2003 Gerald I. Evenden
+
+// 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 <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/pj_gauss.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct sterea {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace sterea
+ {
+
+ static const double DEL_TOL = 1.e-14;
+ static const int MAX_ITER = 10;
+
+ template <typename T>
+ struct par_sterea
+ {
+ T phic0;
+ T cosc0, sinc0;
+ T R2;
+ gauss::GAUSS<T> en;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_sterea_ellipsoid : public base_t_fi<base_sterea_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_sterea<CalculationType> m_proj_parm;
+
+ inline base_sterea_ellipsoid(const Parameters& par)
+ : base_t_fi<base_sterea_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipsoid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType cosc, sinc, cosl_, k;
+
+ detail::gauss::gauss(m_proj_parm.en, lp_lon, lp_lat);
+ sinc = sin(lp_lat);
+ cosc = cos(lp_lat);
+ cosl_ = cos(lp_lon);
+ k = this->m_par.k0 * this->m_proj_parm.R2 / (1. + this->m_proj_parm.sinc0 * sinc + this->m_proj_parm.cosc0 * cosc * cosl_);
+ xy_x = k * cosc * sin(lp_lon);
+ xy_y = k * (this->m_proj_parm.cosc0 * sinc - this->m_proj_parm.sinc0 * cosc * cosl_);
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType rho, c, sinc, cosc;
+
+ xy_x /= this->m_par.k0;
+ xy_y /= this->m_par.k0;
+ if((rho = boost::math::hypot(xy_x, xy_y))) {
+ c = 2. * atan2(rho, this->m_proj_parm.R2);
+ sinc = sin(c);
+ cosc = cos(c);
+ lp_lat = asin(cosc * this->m_proj_parm.sinc0 + xy_y * sinc * this->m_proj_parm.cosc0 / rho);
+ lp_lon = atan2(xy_x * sinc, rho * this->m_proj_parm.cosc0 * cosc -
+ xy_y * this->m_proj_parm.sinc0 * sinc);
+ } else {
+ lp_lat = this->m_proj_parm.phic0;
+ lp_lon = 0.;
+ }
+ detail::gauss::inv_gauss(m_proj_parm.en, lp_lon, lp_lat);
+ }
+
+ static inline std::string get_name()
+ {
+ return "sterea_ellipsoid";
+ }
+
+ };
+
+ // Oblique Stereographic Alternative
+ template <typename Parameters, typename T>
+ inline void setup_sterea(Parameters& par, par_sterea<T>& proj_parm)
+ {
+ T R;
+
+ proj_parm.en = detail::gauss::gauss_ini(par.e, par.phi0, proj_parm.phic0, R);
+ proj_parm.sinc0 = sin(proj_parm.phic0);
+ proj_parm.cosc0 = cos(proj_parm.phic0);
+ proj_parm.R2 = 2. * R;
+ }
+
+ }} // namespace detail::sterea
+ #endif // doxygen
+
+ /*!
+ \brief Oblique Stereographic Alternative projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Azimuthal
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_sterea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct sterea_ellipsoid : public detail::sterea::base_sterea_ellipsoid<CalculationType, Parameters>
+ {
+ inline sterea_ellipsoid(const Parameters& par) : detail::sterea::base_sterea_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::sterea::setup_sterea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::sterea, sterea_ellipsoid, sterea_ellipsoid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class sterea_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<sterea_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void sterea_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("sterea", new sterea_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_STEREA_HPP
+
diff --git a/boost/geometry/srs/projections/proj/sts.hpp b/boost/geometry/srs/projections/proj/sts.hpp
new file mode 100644
index 0000000000..ca0d3f0cd1
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/sts.hpp
@@ -0,0 +1,325 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_STS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_STS_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct kav5 {};
+ struct qua_aut {};
+ struct mbt_s {};
+ struct fouc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace sts
+ {
+ template <typename T>
+ struct par_sts
+ {
+ T C_x, C_y, C_p;
+ int tan_mode;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_sts_spheroid : public base_t_fi<base_sts_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_sts<CalculationType> m_proj_parm;
+
+ inline base_sts_spheroid(const Parameters& par)
+ : base_t_fi<base_sts_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType c;
+
+ xy_x = this->m_proj_parm.C_x * lp_lon * cos(lp_lat);
+ xy_y = this->m_proj_parm.C_y;
+ lp_lat *= this->m_proj_parm.C_p;
+ c = cos(lp_lat);
+ if (this->m_proj_parm.tan_mode) {
+ xy_x *= c * c;
+ xy_y *= tan(lp_lat);
+ } else {
+ xy_x /= c;
+ xy_y *= sin(lp_lat);
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType c;
+
+ xy_y /= this->m_proj_parm.C_y;
+ c = cos(lp_lat = this->m_proj_parm.tan_mode ? atan(xy_y) : aasin(xy_y));
+ lp_lat /= this->m_proj_parm.C_p;
+ lp_lon = xy_x / (this->m_proj_parm.C_x * cos(lp_lat));
+ if (this->m_proj_parm.tan_mode)
+ lp_lon /= c * c;
+ else
+ lp_lon *= c;
+ }
+
+ static inline std::string get_name()
+ {
+ return "sts_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_sts<T>& proj_parm, T const& p, T const& q, int mode)
+ {
+ par.es = 0.;
+ proj_parm.C_x = q / p;
+ proj_parm.C_y = p;
+ proj_parm.C_p = 1/ q;
+ proj_parm.tan_mode = mode;
+ }
+
+
+ // Kavraisky V
+ template <typename Parameters, typename T>
+ inline void setup_kav5(Parameters& par, par_sts<T>& proj_parm)
+ {
+ setup(par, proj_parm, 1.50488, 1.35439, 0);
+ }
+
+ // Quartic Authalic
+ template <typename Parameters, typename T>
+ inline void setup_qua_aut(Parameters& par, par_sts<T>& proj_parm)
+ {
+ setup(par, proj_parm, 2., 2., 0);
+ }
+
+ // McBryde-Thomas Flat-Polar Sine (No. 1)
+ template <typename Parameters, typename T>
+ inline void setup_mbt_s(Parameters& par, par_sts<T>& proj_parm)
+ {
+ setup(par, proj_parm, 1.48875, 1.36509, 0);
+ }
+
+ // Foucaut
+ template <typename Parameters, typename T>
+ inline void setup_fouc(Parameters& par, par_sts<T>& proj_parm)
+ {
+ setup(par, proj_parm, 2., 2., 1);
+ }
+
+ }} // namespace detail::sts
+ #endif // doxygen
+
+ /*!
+ \brief Kavraisky V projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_kav5.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct kav5_spheroid : public detail::sts::base_sts_spheroid<CalculationType, Parameters>
+ {
+ inline kav5_spheroid(const Parameters& par) : detail::sts::base_sts_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sts::setup_kav5(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Quartic Authalic projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_qua_aut.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct qua_aut_spheroid : public detail::sts::base_sts_spheroid<CalculationType, Parameters>
+ {
+ inline qua_aut_spheroid(const Parameters& par) : detail::sts::base_sts_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sts::setup_qua_aut(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief McBryde-Thomas Flat-Polar Sine (No. 1) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_mbt_s.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct mbt_s_spheroid : public detail::sts::base_sts_spheroid<CalculationType, Parameters>
+ {
+ inline mbt_s_spheroid(const Parameters& par) : detail::sts::base_sts_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sts::setup_mbt_s(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Foucaut projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_fouc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct fouc_spheroid : public detail::sts::base_sts_spheroid<CalculationType, Parameters>
+ {
+ inline fouc_spheroid(const Parameters& par) : detail::sts::base_sts_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::sts::setup_fouc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::kav5, kav5_spheroid, kav5_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::qua_aut, qua_aut_spheroid, qua_aut_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::mbt_s, mbt_s_spheroid, mbt_s_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::fouc, fouc_spheroid, fouc_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class kav5_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<kav5_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class qua_aut_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<qua_aut_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class mbt_s_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<mbt_s_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class fouc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<fouc_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void sts_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("kav5", new kav5_entry<CalculationType, Parameters>);
+ factory.add_to_factory("qua_aut", new qua_aut_entry<CalculationType, Parameters>);
+ factory.add_to_factory("mbt_s", new mbt_s_entry<CalculationType, Parameters>);
+ factory.add_to_factory("fouc", new fouc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_STS_HPP
+
diff --git a/boost/geometry/srs/projections/proj/tcc.hpp b/boost/geometry/srs/projections/proj/tcc.hpp
new file mode 100644
index 0000000000..26cb62b3e8
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/tcc.hpp
@@ -0,0 +1,163 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_TCC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_TCC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct tcc {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace tcc
+ {
+
+ static const double EPS10 = 1.e-10;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_tcc_spheroid : public base_t_f<base_tcc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ inline base_tcc_spheroid(const Parameters& par)
+ : base_t_f<base_tcc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType b, bt;
+
+ b = cos(lp_lat) * sin(lp_lon);
+ if ((bt = 1. - b * b) < EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ xy_x = b / sqrt(bt);
+ xy_y = atan2(tan(lp_lat) , cos(lp_lon));
+ }
+
+ static inline std::string get_name()
+ {
+ return "tcc_spheroid";
+ }
+
+ };
+
+ // Transverse Central Cylindrical
+ template <typename Parameters>
+ inline void setup_tcc(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::tcc
+ #endif // doxygen
+
+ /*!
+ \brief Transverse Central Cylindrical projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_tcc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct tcc_spheroid : public detail::tcc::base_tcc_spheroid<CalculationType, Parameters>
+ {
+ inline tcc_spheroid(const Parameters& par) : detail::tcc::base_tcc_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::tcc::setup_tcc(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::tcc, tcc_spheroid, tcc_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class tcc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<tcc_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void tcc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("tcc", new tcc_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_TCC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/tcea.hpp b/boost/geometry/srs/projections/proj/tcea.hpp
new file mode 100644
index 0000000000..b87574e947
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/tcea.hpp
@@ -0,0 +1,176 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_TCEA_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_TCEA_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct tcea {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace tcea
+ {
+ template <typename T>
+ struct par_tcea
+ {
+ T rk0;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_tcea_spheroid : public base_t_fi<base_tcea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_tcea<CalculationType> m_proj_parm;
+
+ inline base_tcea_spheroid(const Parameters& par)
+ : base_t_fi<base_tcea_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = this->m_proj_parm.rk0 * cos(lp_lat) * sin(lp_lon);
+ xy_y = this->m_par.k0 * (atan2(tan(lp_lat), cos(lp_lon)) - this->m_par.phi0);
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType t;
+
+ xy_y = xy_y * this->m_proj_parm.rk0 + this->m_par.phi0;
+ xy_x *= this->m_par.k0;
+ t = sqrt(1. - xy_x * xy_x);
+ lp_lat = asin(t * sin(xy_y));
+ lp_lon = atan2(xy_x, t * cos(xy_y));
+ }
+
+ static inline std::string get_name()
+ {
+ return "tcea_spheroid";
+ }
+
+ };
+
+ // Transverse Cylindrical Equal Area
+ template <typename Parameters, typename T>
+ inline void setup_tcea(Parameters& par, par_tcea<T>& proj_parm)
+ {
+ proj_parm.rk0 = 1 / par.k0;
+ par.es = 0.;
+ }
+
+ }} // namespace detail::tcea
+ #endif // doxygen
+
+ /*!
+ \brief Transverse Cylindrical Equal Area projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Example
+ \image html ex_tcea.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct tcea_spheroid : public detail::tcea::base_tcea_spheroid<CalculationType, Parameters>
+ {
+ inline tcea_spheroid(const Parameters& par) : detail::tcea::base_tcea_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::tcea::setup_tcea(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::tcea, tcea_spheroid, tcea_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class tcea_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<tcea_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void tcea_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("tcea", new tcea_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_TCEA_HPP
+
diff --git a/boost/geometry/srs/projections/proj/tmerc.hpp b/boost/geometry/srs/projections/proj/tmerc.hpp
new file mode 100644
index 0000000000..6ed2902142
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/tmerc.hpp
@@ -0,0 +1,495 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_TMERC_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_TMERC_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/function_overloads.hpp>
+#include <boost/geometry/srs/projections/impl/pj_mlfn.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct tmerc {};
+ struct utm {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace tmerc
+ {
+
+ static const double EPS10 = 1.e-10;
+ //static const double FC1 = 1.;
+ //static const double FC2 = .5;
+ //static const double FC3 = .16666666666666666666;
+ //static const double FC4 = .08333333333333333333;
+ //static const double FC5 = .05;
+ //static const double FC6 = .03333333333333333333;
+ //static const double FC7 = .02380952380952380952;
+ //static const double FC8 = .01785714285714285714;
+
+ template <typename T>
+ inline T FC1() { return 1.; }
+ template <typename T>
+ inline T FC2() { return .5; }
+ template <typename T>
+ inline T FC3() { return .16666666666666666666666666666666666666; }
+ template <typename T>
+ inline T FC4() { return .08333333333333333333333333333333333333; }
+ template <typename T>
+ inline T FC5() { return .05; }
+ template <typename T>
+ inline T FC6() { return .03333333333333333333333333333333333333; }
+ template <typename T>
+ inline T FC7() { return .02380952380952380952380952380952380952; }
+ template <typename T>
+ inline T FC8() { return .01785714285714285714285714285714285714; }
+
+ template <typename T>
+ struct par_tmerc
+ {
+ T esp;
+ T ml0;
+ T en[EN_SIZE];
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_tmerc_ellipsoid : public base_t_fi<base_tmerc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_tmerc<CalculationType> m_proj_parm;
+
+ inline base_tmerc_ellipsoid(const Parameters& par)
+ : base_t_fi<base_tmerc_ellipsoid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(e_forward) ellipse
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType FC1 = tmerc::FC1<CalculationType>();
+ static const CalculationType FC2 = tmerc::FC2<CalculationType>();
+ static const CalculationType FC3 = tmerc::FC3<CalculationType>();
+ static const CalculationType FC4 = tmerc::FC4<CalculationType>();
+ static const CalculationType FC5 = tmerc::FC5<CalculationType>();
+ static const CalculationType FC6 = tmerc::FC6<CalculationType>();
+ static const CalculationType FC7 = tmerc::FC7<CalculationType>();
+ static const CalculationType FC8 = tmerc::FC8<CalculationType>();
+
+ CalculationType al, als, n, cosphi, sinphi, t;
+
+ /*
+ * Fail if our longitude is more than 90 degrees from the
+ * central meridian since the results are essentially garbage.
+ * Is error -20 really an appropriate return value?
+ *
+ * http://trac.osgeo.org/proj/ticket/5
+ */
+ if( lp_lon < -HALFPI || lp_lon > HALFPI )
+ {
+ xy_x = HUGE_VAL;
+ xy_y = HUGE_VAL;
+ BOOST_THROW_EXCEPTION( projection_exception(-14) );
+ return;
+ }
+
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ t = fabs(cosphi) > 1e-10 ? sinphi/cosphi : 0.;
+ t *= t;
+ al = cosphi * lp_lon;
+ als = al * al;
+ al /= sqrt(1. - this->m_par.es * sinphi * sinphi);
+ n = this->m_proj_parm.esp * cosphi * cosphi;
+ xy_x = this->m_par.k0 * al * (FC1 +
+ FC3 * als * (1. - t + n +
+ FC5 * als * (5. + t * (t - 18.) + n * (14. - 58. * t)
+ + FC7 * als * (61. + t * ( t * (179. - t) - 479. ) )
+ )));
+ xy_y = this->m_par.k0 * (pj_mlfn(lp_lat, sinphi, cosphi, this->m_proj_parm.en) - this->m_proj_parm.ml0 +
+ sinphi * al * lp_lon * FC2 * ( 1. +
+ FC4 * als * (5. - t + n * (9. + 4. * n) +
+ FC6 * als * (61. + t * (t - 58.) + n * (270. - 330 * t)
+ + FC8 * als * (1385. + t * ( t * (543. - t) - 3111.) )
+ ))));
+ }
+
+ // INVERSE(e_inverse) ellipsoid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType FC1 = tmerc::FC1<CalculationType>();
+ static const CalculationType FC2 = tmerc::FC2<CalculationType>();
+ static const CalculationType FC3 = tmerc::FC3<CalculationType>();
+ static const CalculationType FC4 = tmerc::FC4<CalculationType>();
+ static const CalculationType FC5 = tmerc::FC5<CalculationType>();
+ static const CalculationType FC6 = tmerc::FC6<CalculationType>();
+ static const CalculationType FC7 = tmerc::FC7<CalculationType>();
+ static const CalculationType FC8 = tmerc::FC8<CalculationType>();
+
+ CalculationType n, con, cosphi, d, ds, sinphi, t;
+
+ lp_lat = pj_inv_mlfn(this->m_proj_parm.ml0 + xy_y / this->m_par.k0, this->m_par.es, this->m_proj_parm.en);
+ if (fabs(lp_lat) >= HALFPI) {
+ lp_lat = xy_y < 0. ? -HALFPI : HALFPI;
+ lp_lon = 0.;
+ } else {
+ sinphi = sin(lp_lat);
+ cosphi = cos(lp_lat);
+ t = fabs(cosphi) > 1e-10 ? sinphi/cosphi : 0.;
+ n = this->m_proj_parm.esp * cosphi * cosphi;
+ d = xy_x * sqrt(con = 1. - this->m_par.es * sinphi * sinphi) / this->m_par.k0;
+ con *= t;
+ t *= t;
+ ds = d * d;
+ lp_lat -= (con * ds / (1.-this->m_par.es)) * FC2 * (1. -
+ ds * FC4 * (5. + t * (3. - 9. * n) + n * (1. - 4 * n) -
+ ds * FC6 * (61. + t * (90. - 252. * n +
+ 45. * t) + 46. * n
+ - ds * FC8 * (1385. + t * (3633. + t * (4095. + 1574. * t)) )
+ )));
+ lp_lon = d*(FC1 -
+ ds*FC3*( 1. + 2.*t + n -
+ ds*FC5*(5. + t*(28. + 24.*t + 8.*n) + 6.*n
+ - ds * FC7 * (61. + t * (662. + t * (1320. + 720. * t)) )
+ ))) / cosphi;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "tmerc_ellipsoid";
+ }
+
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_tmerc_spheroid : public base_t_fi<base_tmerc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_tmerc<CalculationType> m_proj_parm;
+
+ inline base_tmerc_spheroid(const Parameters& par)
+ : base_t_fi<base_tmerc_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+
+ CalculationType b, cosphi;
+
+ /*
+ * Fail if our longitude is more than 90 degrees from the
+ * central meridian since the results are essentially garbage.
+ * Is error -20 really an appropriate return value?
+ *
+ * http://trac.osgeo.org/proj/ticket/5
+ */
+ if( lp_lon < -HALFPI || lp_lon > HALFPI )
+ {
+ xy_x = HUGE_VAL;
+ xy_y = HUGE_VAL;
+ BOOST_THROW_EXCEPTION( projection_exception(-14) );
+ return;
+ }
+
+ cosphi = cos(lp_lat);
+ b = cosphi * sin(lp_lon);
+ if (fabs(fabs(b) - 1.) <= EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+
+ xy_x = this->m_proj_parm.ml0 * log((1. + b) / (1. - b));
+ xy_y = cosphi * cos(lp_lon) / sqrt(1. - b * b);
+
+ b = fabs( xy_y );
+ if (b >= 1.) {
+ if ((b - 1.) > EPS10)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ else xy_y = 0.;
+ } else
+ xy_y = acos(xy_y);
+
+ if (lp_lat < 0.)
+ xy_y = -xy_y;
+ xy_y = this->m_proj_parm.esp * (xy_y - this->m_par.phi0);
+ }
+
+ // INVERSE(s_inverse) sphere
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType h, g;
+
+ h = exp(xy_x / this->m_proj_parm.esp);
+ g = .5 * (h - 1. / h);
+ h = cos(this->m_par.phi0 + xy_y / this->m_proj_parm.esp);
+ lp_lat = asin(sqrt((1. - h * h) / (1. + g * g)));
+ if (xy_y < 0.) lp_lat = -lp_lat;
+ lp_lon = (g || h) ? atan2(g, h) : 0.;
+ }
+
+ static inline std::string get_name()
+ {
+ return "tmerc_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_tmerc<T>& proj_parm) /* general initialization */
+ {
+ if (par.es) {
+ if (!pj_enfn(par.es, proj_parm.en))
+ BOOST_THROW_EXCEPTION( projection_exception(0) );
+ proj_parm.ml0 = pj_mlfn(par.phi0, sin(par.phi0), cos(par.phi0), proj_parm.en);
+ proj_parm.esp = par.es / (1. - par.es);
+ } else {
+ proj_parm.esp = par.k0;
+ proj_parm.ml0 = .5 * proj_parm.esp;
+ }
+ }
+
+
+ // Transverse Mercator
+ template <typename Parameters, typename T>
+ inline void setup_tmerc(Parameters& par, par_tmerc<T>& proj_parm)
+ {
+ setup(par, proj_parm);
+ }
+
+ // Universal Transverse Mercator (UTM)
+ template <typename Parameters, typename T>
+ inline void setup_utm(Parameters& par, par_tmerc<T>& proj_parm)
+ {
+ static const T ONEPI = detail::ONEPI<T>();
+
+ int zone;
+
+ par.y0 = pj_param(par.params, "bsouth").i ? 10000000. : 0.;
+ par.x0 = 500000.;
+ if (pj_param(par.params, "tzone").i) /* zone input ? */
+ if ((zone = pj_param(par.params, "izone").i) > 0 && zone <= 60)
+ --zone;
+ else
+ BOOST_THROW_EXCEPTION( projection_exception(-35) );
+ else /* nearest central meridian input */
+ if ((zone = int_floor((adjlon(par.lam0) + ONEPI) * 30. / ONEPI)) < 0)
+ zone = 0;
+ else if (zone >= 60)
+ zone = 59;
+ par.lam0 = (zone + .5) * ONEPI / 30. - ONEPI;
+ par.k0 = 0.9996;
+ par.phi0 = 0.;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::tmerc
+ #endif // doxygen
+
+ /*!
+ \brief Transverse Mercator projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_tmerc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct tmerc_ellipsoid : public detail::tmerc::base_tmerc_ellipsoid<CalculationType, Parameters>
+ {
+ inline tmerc_ellipsoid(const Parameters& par) : detail::tmerc::base_tmerc_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::tmerc::setup_tmerc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Transverse Mercator projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ - Ellipsoid
+ \par Example
+ \image html ex_tmerc.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct tmerc_spheroid : public detail::tmerc::base_tmerc_spheroid<CalculationType, Parameters>
+ {
+ inline tmerc_spheroid(const Parameters& par) : detail::tmerc::base_tmerc_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::tmerc::setup_tmerc(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Universal Transverse Mercator (UTM) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Projection parameters
+ - zone: UTM Zone (integer)
+ - south: Denotes southern hemisphere UTM zone (boolean)
+ \par Example
+ \image html ex_utm.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct utm_ellipsoid : public detail::tmerc::base_tmerc_ellipsoid<CalculationType, Parameters>
+ {
+ inline utm_ellipsoid(const Parameters& par) : detail::tmerc::base_tmerc_ellipsoid<CalculationType, Parameters>(par)
+ {
+ detail::tmerc::setup_utm(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Universal Transverse Mercator (UTM) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Cylindrical
+ - Spheroid
+ \par Projection parameters
+ - zone: UTM Zone (integer)
+ - south: Denotes southern hemisphere UTM zone (boolean)
+ \par Example
+ \image html ex_utm.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct utm_spheroid : public detail::tmerc::base_tmerc_spheroid<CalculationType, Parameters>
+ {
+ inline utm_spheroid(const Parameters& par) : detail::tmerc::base_tmerc_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::tmerc::setup_utm(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::tmerc, tmerc_spheroid, tmerc_ellipsoid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::utm, utm_spheroid, utm_ellipsoid)
+
+ // Factory entry(s) - dynamic projection
+ template <typename CalculationType, typename Parameters>
+ class tmerc_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<tmerc_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<tmerc_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class utm_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ if (par.es)
+ return new base_v_fi<utm_ellipsoid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ else
+ return new base_v_fi<utm_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void tmerc_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("tmerc", new tmerc_entry<CalculationType, Parameters>);
+ factory.add_to_factory("utm", new utm_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_TMERC_HPP
+
diff --git a/boost/geometry/srs/projections/proj/tpeqd.hpp b/boost/geometry/srs/projections/proj/tpeqd.hpp
new file mode 100644
index 0000000000..2d08d49bde
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/tpeqd.hpp
@@ -0,0 +1,235 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_TPEQD_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_TPEQD_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct tpeqd {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace tpeqd
+ {
+ template <typename T>
+ struct par_tpeqd
+ {
+ T cp1, sp1, cp2, sp2, ccs, cs, sc, r2z0, z02, dlam2;
+ T hz0, thz0, rhshz0, ca, sa, lp, lamc;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_tpeqd_spheroid : public base_t_fi<base_tpeqd_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_tpeqd<CalculationType> m_proj_parm;
+
+ inline base_tpeqd_spheroid(const Parameters& par)
+ : base_t_fi<base_tpeqd_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType t, z1, z2, dl1, dl2, sp, cp;
+
+ sp = sin(lp_lat);
+ cp = cos(lp_lat);
+ z1 = aacos(this->m_proj_parm.sp1 * sp + this->m_proj_parm.cp1 * cp * cos(dl1 = lp_lon + this->m_proj_parm.dlam2));
+ z2 = aacos(this->m_proj_parm.sp2 * sp + this->m_proj_parm.cp2 * cp * cos(dl2 = lp_lon - this->m_proj_parm.dlam2));
+ z1 *= z1;
+ z2 *= z2;
+ xy_x = this->m_proj_parm.r2z0 * (t = z1 - z2);
+ t = this->m_proj_parm.z02 - t;
+ xy_y = this->m_proj_parm.r2z0 * asqrt(4. * this->m_proj_parm.z02 * z2 - t * t);
+ if ((this->m_proj_parm.ccs * sp - cp * (this->m_proj_parm.cs * sin(dl1) - this->m_proj_parm.sc * sin(dl2))) < 0.)
+ xy_y = -xy_y;
+ }
+
+ // INVERSE(s_inverse) sphere
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ CalculationType cz1, cz2, s, d, cp, sp;
+
+ cz1 = cos(boost::math::hypot(xy_y, xy_x + this->m_proj_parm.hz0));
+ cz2 = cos(boost::math::hypot(xy_y, xy_x - this->m_proj_parm.hz0));
+ s = cz1 + cz2;
+ d = cz1 - cz2;
+ lp_lon = - atan2(d, (s * this->m_proj_parm.thz0));
+ lp_lat = aacos(boost::math::hypot(this->m_proj_parm.thz0 * s, d) * this->m_proj_parm.rhshz0);
+ if ( xy_y < 0. )
+ lp_lat = - lp_lat;
+ /* lam--phi now in system relative to P1--P2 base equator */
+ sp = sin(lp_lat);
+ cp = cos(lp_lat);
+ lp_lat = aasin(this->m_proj_parm.sa * sp + this->m_proj_parm.ca * cp * (s = cos(lp_lon -= this->m_proj_parm.lp)));
+ lp_lon = atan2(cp * sin(lp_lon), this->m_proj_parm.sa * cp * s - this->m_proj_parm.ca * sp) + this->m_proj_parm.lamc;
+ }
+
+ static inline std::string get_name()
+ {
+ return "tpeqd_spheroid";
+ }
+
+ };
+
+ // Two Point Equidistant
+ template <typename Parameters, typename T>
+ inline void setup_tpeqd(Parameters& par, par_tpeqd<T>& proj_parm)
+ {
+ T lam_1, lam_2, phi_1, phi_2, A12, pp;
+
+ /* get control point locations */
+ phi_1 = pj_param(par.params, "rlat_1").f;
+ lam_1 = pj_param(par.params, "rlon_1").f;
+ phi_2 = pj_param(par.params, "rlat_2").f;
+ lam_2 = pj_param(par.params, "rlon_2").f;
+ if (phi_1 == phi_2 && lam_1 == lam_2)
+ BOOST_THROW_EXCEPTION( projection_exception(-25) );
+ par.lam0 = adjlon(0.5 * (lam_1 + lam_2));
+ proj_parm.dlam2 = adjlon(lam_2 - lam_1);
+ proj_parm.cp1 = cos(phi_1);
+ proj_parm.cp2 = cos(phi_2);
+ proj_parm.sp1 = sin(phi_1);
+ proj_parm.sp2 = sin(phi_2);
+ proj_parm.cs = proj_parm.cp1 * proj_parm.sp2;
+ proj_parm.sc = proj_parm.sp1 * proj_parm.cp2;
+ proj_parm.ccs = proj_parm.cp1 * proj_parm.cp2 * sin(proj_parm.dlam2);
+ proj_parm.z02 = aacos(proj_parm.sp1 * proj_parm.sp2 + proj_parm.cp1 * proj_parm.cp2 * cos(proj_parm.dlam2));
+ proj_parm.hz0 = .5 * proj_parm.z02;
+ A12 = atan2(proj_parm.cp2 * sin(proj_parm.dlam2),
+ proj_parm.cp1 * proj_parm.sp2 - proj_parm.sp1 * proj_parm.cp2 * cos(proj_parm.dlam2));
+ proj_parm.ca = cos(pp = aasin(proj_parm.cp1 * sin(A12)));
+ proj_parm.sa = sin(pp);
+ proj_parm.lp = adjlon(atan2(proj_parm.cp1 * cos(A12), proj_parm.sp1) - proj_parm.hz0);
+ proj_parm.dlam2 *= .5;
+ proj_parm.lamc = geometry::math::half_pi<T>() - atan2(sin(A12) * proj_parm.sp1, cos(A12)) - proj_parm.dlam2;
+ proj_parm.thz0 = tan(proj_parm.hz0);
+ proj_parm.rhshz0 = .5 / sin(proj_parm.hz0);
+ proj_parm.r2z0 = 0.5 / proj_parm.z02;
+ proj_parm.z02 *= proj_parm.z02;
+ par.es = 0.;
+ }
+
+ }} // namespace detail::tpeqd
+ #endif // doxygen
+
+ /*!
+ \brief Two Point Equidistant projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ - lon_1 (degrees)
+ - lat_2: Latitude of second standard parallel (degrees)
+ - lon_2 (degrees)
+ \par Example
+ \image html ex_tpeqd.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct tpeqd_spheroid : public detail::tpeqd::base_tpeqd_spheroid<CalculationType, Parameters>
+ {
+ inline tpeqd_spheroid(const Parameters& par) : detail::tpeqd::base_tpeqd_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::tpeqd::setup_tpeqd(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::tpeqd, tpeqd_spheroid, tpeqd_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class tpeqd_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<tpeqd_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void tpeqd_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("tpeqd", new tpeqd_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_TPEQD_HPP
+
diff --git a/boost/geometry/srs/projections/proj/urm5.hpp b/boost/geometry/srs/projections/proj/urm5.hpp
new file mode 100644
index 0000000000..96b541f4ea
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/urm5.hpp
@@ -0,0 +1,185 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_URM5_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_URM5_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct urm5 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace urm5
+ {
+ template <typename T>
+ struct par_urm5
+ {
+ T m, rmn, q3, n;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_urm5_spheroid : public base_t_f<base_urm5_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_urm5<CalculationType> m_proj_parm;
+
+ inline base_urm5_spheroid(const Parameters& par)
+ : base_t_f<base_urm5_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType t;
+
+ t = lp_lat = aasin(this->m_proj_parm.n * sin(lp_lat));
+ xy_x = this->m_proj_parm.m * lp_lon * cos(lp_lat);
+ t *= t;
+ xy_y = lp_lat * (1. + t * this->m_proj_parm.q3) * this->m_proj_parm.rmn;
+ }
+
+ static inline std::string get_name()
+ {
+ return "urm5_spheroid";
+ }
+
+ };
+
+ // Urmaev V
+ template <typename Parameters, typename T>
+ inline void setup_urm5(Parameters& par, par_urm5<T>& proj_parm)
+ {
+ T alpha, t;
+
+ if (pj_param(par.params, "tn").i) {
+ proj_parm.n = pj_param(par.params, "dn").f;
+ if (proj_parm.n <= 0. || proj_parm.n > 1.)
+ BOOST_THROW_EXCEPTION( projection_exception(-40) );
+ } else
+ BOOST_THROW_EXCEPTION( projection_exception(-40) );
+ proj_parm.q3 = pj_param(par.params, "dq").f / 3.;
+ alpha = pj_param(par.params, "ralpha").f;
+ t = proj_parm.n * sin(alpha);
+ proj_parm.m = cos(alpha) / sqrt(1. - t * t);
+ proj_parm.rmn = 1. / (proj_parm.m * proj_parm.n);
+ par.es = 0.;
+ }
+
+ }} // namespace detail::urm5
+ #endif // doxygen
+
+ /*!
+ \brief Urmaev V projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ - no inverse
+ \par Projection parameters
+ - n (real)
+ - q (real)
+ - alpha: Alpha (degrees)
+ \par Example
+ \image html ex_urm5.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct urm5_spheroid : public detail::urm5::base_urm5_spheroid<CalculationType, Parameters>
+ {
+ inline urm5_spheroid(const Parameters& par) : detail::urm5::base_urm5_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::urm5::setup_urm5(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::urm5, urm5_spheroid, urm5_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class urm5_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<urm5_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void urm5_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("urm5", new urm5_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_URM5_HPP
+
diff --git a/boost/geometry/srs/projections/proj/urmfps.hpp b/boost/geometry/srs/projections/proj/urmfps.hpp
new file mode 100644
index 0000000000..14840057dc
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/urmfps.hpp
@@ -0,0 +1,235 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_URMFPS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_URMFPS_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct urmfps {};
+ struct wag1 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace urmfps
+ {
+
+ static const double C_x = 0.8773826753;
+ static const double Cy = 1.139753528477;
+
+ template <typename T>
+ struct par_urmfps
+ {
+ T n, C_y;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_urmfps_spheroid : public base_t_fi<base_urmfps_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_urmfps<CalculationType> m_proj_parm;
+
+ inline base_urmfps_spheroid(const Parameters& par)
+ : base_t_fi<base_urmfps_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ lp_lat = aasin(this->m_proj_parm.n * sin(lp_lat));
+ xy_x = C_x * lp_lon * cos(lp_lat);
+ xy_y = this->m_proj_parm.C_y * lp_lat;
+ }
+
+ // INVERSE(s_inverse) sphere
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ xy_y /= this->m_proj_parm.C_y;
+ lp_lat = aasin(sin(xy_y) / this->m_proj_parm.n);
+ lp_lon = xy_x / (C_x * cos(xy_y));
+ }
+
+ static inline std::string get_name()
+ {
+ return "urmfps_spheroid";
+ }
+
+ };
+
+ template <typename Parameters, typename T>
+ inline void setup(Parameters& par, par_urmfps<T>& proj_parm)
+ {
+ proj_parm.C_y = Cy / proj_parm.n;
+ par.es = 0.;
+ }
+
+
+ // Urmaev Flat-Polar Sinusoidal
+ template <typename Parameters, typename T>
+ inline void setup_urmfps(Parameters& par, par_urmfps<T>& proj_parm)
+ {
+ if (pj_param(par.params, "tn").i) {
+ proj_parm.n = pj_param(par.params, "dn").f;
+ if (proj_parm.n <= 0. || proj_parm.n > 1.)
+ BOOST_THROW_EXCEPTION( projection_exception(-40) );
+ } else
+ BOOST_THROW_EXCEPTION( projection_exception(-40) );
+ setup(par, proj_parm);
+ }
+
+ // Wagner I (Kavraisky VI)
+ template <typename Parameters, typename T>
+ inline void setup_wag1(Parameters& par, par_urmfps<T>& proj_parm)
+ {
+ proj_parm.n = 0.8660254037844386467637231707;
+ setup(par, proj_parm);
+ }
+
+ }} // namespace detail::urmfps
+ #endif // doxygen
+
+ /*!
+ \brief Urmaev Flat-Polar Sinusoidal projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Projection parameters
+ - n (real)
+ \par Example
+ \image html ex_urmfps.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct urmfps_spheroid : public detail::urmfps::base_urmfps_spheroid<CalculationType, Parameters>
+ {
+ inline urmfps_spheroid(const Parameters& par) : detail::urmfps::base_urmfps_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::urmfps::setup_urmfps(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief Wagner I (Kavraisky VI) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_wag1.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wag1_spheroid : public detail::urmfps::base_urmfps_spheroid<CalculationType, Parameters>
+ {
+ inline wag1_spheroid(const Parameters& par) : detail::urmfps::base_urmfps_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::urmfps::setup_wag1(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::urmfps, urmfps_spheroid, urmfps_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wag1, wag1_spheroid, wag1_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class urmfps_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<urmfps_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class wag1_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<wag1_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void urmfps_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("urmfps", new urmfps_entry<CalculationType, Parameters>);
+ factory.add_to_factory("wag1", new wag1_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_URMFPS_HPP
+
diff --git a/boost/geometry/srs/projections/proj/vandg.hpp b/boost/geometry/srs/projections/proj/vandg.hpp
new file mode 100644
index 0000000000..1fd95285ea
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/vandg.hpp
@@ -0,0 +1,257 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_VANDG_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_VANDG_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct vandg {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace vandg
+ {
+
+ static const double TOL = 1.e-10;
+ //static const double THIRD = .33333333333333333333;
+ //static const double TWO_THRD = .66666666666666666666;
+ //static const double C2_27 = .07407407407407407407;
+ //static const double PI4_3 = 4.18879020478639098458;
+ //static const double PISQ = 9.86960440108935861869;
+ //static const double TPISQ = 19.73920880217871723738;
+ //static const double HPISQ = 4.93480220054467930934;
+
+ template <typename T>
+ inline T C2_27() { return .07407407407407407407407407407407; }
+ template <typename T>
+ inline T PI4_3() { return boost::math::constants::four_thirds_pi<T>(); }
+ template <typename T>
+ inline T TPISQ() { return 19.739208802178717237668981999752; }
+ template <typename T>
+ inline T HPISQ() { return 4.9348022005446793094172454999381; }
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_vandg_spheroid : public base_t_fi<base_vandg_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_vandg_spheroid(const Parameters& par)
+ : base_t_fi<base_vandg_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+
+ CalculationType al, al2, g, g2, p2;
+
+ p2 = fabs(lp_lat / HALFPI);
+ if ((p2 - TOL) > 1.)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ if (p2 > 1.)
+ p2 = 1.;
+ if (fabs(lp_lat) <= TOL) {
+ xy_x = lp_lon;
+ xy_y = 0.;
+ } else if (fabs(lp_lon) <= TOL || fabs(p2 - 1.) < TOL) {
+ xy_x = 0.;
+ xy_y = ONEPI * tan(.5 * asin(p2));
+ if (lp_lat < 0.) xy_y = -xy_y;
+ } else {
+ al = .5 * fabs(ONEPI / lp_lon - lp_lon / ONEPI);
+ al2 = al * al;
+ g = sqrt(1. - p2 * p2);
+ g = g / (p2 + g - 1.);
+ g2 = g * g;
+ p2 = g * (2. / p2 - 1.);
+ p2 = p2 * p2;
+ xy_x = g - p2; g = p2 + al2;
+ xy_x = ONEPI * (al * xy_x + sqrt(al2 * xy_x * xy_x - g * (g2 - p2))) / g;
+ if (lp_lon < 0.) xy_x = -xy_x;
+ xy_y = fabs(xy_x / ONEPI);
+ xy_y = 1. - xy_y * (xy_y + 2. * al);
+ if (xy_y < -TOL)
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ if (xy_y < 0.)
+ xy_y = 0.;
+ else
+ xy_y = sqrt(xy_y) * (lp_lat < 0. ? -ONEPI : ONEPI);
+ }
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+ static const CalculationType PISQ = detail::PI_SQR<CalculationType>();
+ static const CalculationType THIRD = detail::THIRD<CalculationType>();
+ static const CalculationType TWOPI = detail::TWOPI<CalculationType>();
+
+ static const CalculationType C2_27 = vandg::C2_27<CalculationType>();
+ static const CalculationType PI4_3 = vandg::PI4_3<CalculationType>();
+ static const CalculationType TPISQ = vandg::TPISQ<CalculationType>();
+ static const CalculationType HPISQ = vandg::HPISQ<CalculationType>();
+
+ CalculationType t, c0, c1, c2, c3, al, r2, r, m, d, ay, x2, y2;
+
+ x2 = xy_x * xy_x;
+ if ((ay = fabs(xy_y)) < TOL) {
+ lp_lat = 0.;
+ t = x2 * x2 + TPISQ * (x2 + HPISQ);
+ lp_lon = fabs(xy_x) <= TOL ? 0. :
+ .5 * (x2 - PISQ + sqrt(t)) / xy_x;
+ return;
+ }
+ y2 = xy_y * xy_y;
+ r = x2 + y2; r2 = r * r;
+ c1 = - ONEPI * ay * (r + PISQ);
+ c3 = r2 + TWOPI * (ay * r + ONEPI * (y2 + ONEPI * (ay + HALFPI)));
+ c2 = c1 + PISQ * (r - 3. * y2);
+ c0 = ONEPI * ay;
+ c2 /= c3;
+ al = c1 / c3 - THIRD * c2 * c2;
+ m = 2. * sqrt(-THIRD * al);
+ d = C2_27 * c2 * c2 * c2 + (c0 * c0 - THIRD * c2 * c1) / c3;
+ if (((t = fabs(d = 3. * d / (al * m))) - TOL) <= 1.) {
+ d = t > 1. ? (d > 0. ? 0. : ONEPI) : acos(d);
+ lp_lat = ONEPI * (m * cos(d * THIRD + PI4_3) - THIRD * c2);
+ if (xy_y < 0.) lp_lat = -lp_lat;
+ t = r2 + TPISQ * (x2 - y2 + HPISQ);
+ lp_lon = fabs(xy_x) <= TOL ? 0. :
+ .5 * (r - PISQ + (t <= 0. ? 0. : sqrt(t))) / xy_x;
+ } else
+ BOOST_THROW_EXCEPTION( projection_exception(-20) );
+ }
+
+ static inline std::string get_name()
+ {
+ return "vandg_spheroid";
+ }
+
+ };
+
+ // van der Grinten (I)
+ template <typename Parameters>
+ inline void setup_vandg(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::vandg
+ #endif // doxygen
+
+ /*!
+ \brief van der Grinten (I) projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ \par Example
+ \image html ex_vandg.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct vandg_spheroid : public detail::vandg::base_vandg_spheroid<CalculationType, Parameters>
+ {
+ inline vandg_spheroid(const Parameters& par) : detail::vandg::base_vandg_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::vandg::setup_vandg(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::vandg, vandg_spheroid, vandg_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class vandg_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<vandg_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void vandg_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("vandg", new vandg_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_VANDG_HPP
+
diff --git a/boost/geometry/srs/projections/proj/vandg2.hpp b/boost/geometry/srs/projections/proj/vandg2.hpp
new file mode 100644
index 0000000000..650a64f432
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/vandg2.hpp
@@ -0,0 +1,237 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_VANDG2_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_VANDG2_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct vandg2 {};
+ struct vandg3 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace vandg2
+ {
+
+ static const double TOL = 1e-10;
+ //static const double TWORPI = 0.63661977236758134308;
+
+ struct par_vandg2
+ {
+ int vdg3;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_vandg2_spheroid : public base_t_f<base_vandg2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_vandg2 m_proj_parm;
+
+ inline base_vandg2_spheroid(const Parameters& par)
+ : base_t_f<base_vandg2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+ static const CalculationType TWORPI = detail::TWO_D_PI<CalculationType>();
+
+ CalculationType x1, at, bt, ct;
+
+ bt = fabs(TWORPI * lp_lat);
+ if ((ct = 1. - bt * bt) < 0.)
+ ct = 0.;
+ else
+ ct = sqrt(ct);
+ if (fabs(lp_lon) < TOL) {
+ xy_x = 0.;
+ xy_y = ONEPI * (lp_lat < 0. ? -bt : bt) / (1. + ct);
+ } else {
+ at = 0.5 * fabs(ONEPI / lp_lon - lp_lon / ONEPI);
+ if (this->m_proj_parm.vdg3) {
+ x1 = bt / (1. + ct);
+ xy_x = ONEPI * (sqrt(at * at + 1. - x1 * x1) - at);
+ xy_y = ONEPI * x1;
+ } else {
+ x1 = (ct * sqrt(1. + at * at) - at * ct * ct) /
+ (1. + at * at * bt * bt);
+ xy_x = ONEPI * x1;
+ xy_y = ONEPI * sqrt(1. - x1 * (x1 + 2. * at) + TOL);
+ }
+ if ( lp_lon < 0.) xy_x = -xy_x;
+ if ( lp_lat < 0.) xy_y = -xy_y;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "vandg2_spheroid";
+ }
+
+ };
+
+ // van der Grinten II
+ template <typename Parameters>
+ inline void setup_vandg2(Parameters& /*par*/, par_vandg2& proj_parm)
+ {
+ proj_parm.vdg3 = 0;
+ }
+
+ // van der Grinten III
+ template <typename Parameters>
+ inline void setup_vandg3(Parameters& par, par_vandg2& proj_parm)
+ {
+ proj_parm.vdg3 = 1;
+ par.es = 0.;
+ }
+
+ }} // namespace detail::vandg2
+ #endif // doxygen
+
+ /*!
+ \brief van der Grinten II projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_vandg2.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct vandg2_spheroid : public detail::vandg2::base_vandg2_spheroid<CalculationType, Parameters>
+ {
+ inline vandg2_spheroid(const Parameters& par) : detail::vandg2::base_vandg2_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::vandg2::setup_vandg2(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ /*!
+ \brief van der Grinten III projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_vandg3.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct vandg3_spheroid : public detail::vandg2::base_vandg2_spheroid<CalculationType, Parameters>
+ {
+ inline vandg3_spheroid(const Parameters& par) : detail::vandg2::base_vandg2_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::vandg2::setup_vandg3(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::vandg2, vandg2_spheroid, vandg2_spheroid)
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::vandg3, vandg3_spheroid, vandg3_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class vandg2_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<vandg2_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ class vandg3_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<vandg3_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void vandg2_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("vandg2", new vandg2_entry<CalculationType, Parameters>);
+ factory.add_to_factory("vandg3", new vandg3_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_VANDG2_HPP
+
diff --git a/boost/geometry/srs/projections/proj/vandg4.hpp b/boost/geometry/srs/projections/proj/vandg4.hpp
new file mode 100644
index 0000000000..0b85fedef4
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/vandg4.hpp
@@ -0,0 +1,194 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_VANDG4_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_VANDG4_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct vandg4 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace vandg4
+ {
+
+ static const double TOL = 1e-10;
+ //static const double TWORPI = 0.63661977236758134308;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_vandg4_spheroid : public base_t_f<base_vandg4_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_vandg4_spheroid(const Parameters& par)
+ : base_t_f<base_vandg4_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType TWORPI = detail::TWO_D_PI<CalculationType>();
+
+ CalculationType x1, t, bt, ct, ft, bt2, ct2, dt, dt2;
+
+ if (fabs(lp_lat) < TOL) {
+ xy_x = lp_lon;
+ xy_y = 0.;
+ } else if (fabs(lp_lon) < TOL || fabs(fabs(lp_lat) - HALFPI) < TOL) {
+ xy_x = 0.;
+ xy_y = lp_lat;
+ } else {
+ bt = fabs(TWORPI * lp_lat);
+ bt2 = bt * bt;
+ ct = 0.5 * (bt * (8. - bt * (2. + bt2)) - 5.)
+ / (bt2 * (bt - 1.));
+ ct2 = ct * ct;
+ dt = TWORPI * lp_lon;
+ dt = dt + 1. / dt;
+ dt = sqrt(dt * dt - 4.);
+ if ((fabs(lp_lon) - HALFPI) < 0.) dt = -dt;
+ dt2 = dt * dt;
+ x1 = bt + ct; x1 *= x1;
+ t = bt + 3.*ct;
+ ft = x1 * (bt2 + ct2 * dt2 - 1.) + (1.-bt2) * (
+ bt2 * (t * t + 4. * ct2) +
+ ct2 * (12. * bt * ct + 4. * ct2) );
+ x1 = (dt*(x1 + ct2 - 1.) + 2.*sqrt(ft)) /
+ (4.* x1 + dt2);
+ xy_x = HALFPI * x1;
+ xy_y = HALFPI * sqrt(1. + dt * fabs(x1) - x1 * x1);
+ if (lp_lon < 0.) xy_x = -xy_x;
+ if (lp_lat < 0.) xy_y = -xy_y;
+ }
+ }
+
+ static inline std::string get_name()
+ {
+ return "vandg4_spheroid";
+ }
+
+ };
+
+ // van der Grinten IV
+ template <typename Parameters>
+ inline void setup_vandg4(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::vandg4
+ #endif // doxygen
+
+ /*!
+ \brief van der Grinten IV projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_vandg4.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct vandg4_spheroid : public detail::vandg4::base_vandg4_spheroid<CalculationType, Parameters>
+ {
+ inline vandg4_spheroid(const Parameters& par) : detail::vandg4::base_vandg4_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::vandg4::setup_vandg4(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::vandg4, vandg4_spheroid, vandg4_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class vandg4_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<vandg4_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void vandg4_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("vandg4", new vandg4_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_VANDG4_HPP
+
diff --git a/boost/geometry/srs/projections/proj/wag2.hpp b/boost/geometry/srs/projections/proj/wag2.hpp
new file mode 100644
index 0000000000..2d16892a9d
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/wag2.hpp
@@ -0,0 +1,172 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_WAG2_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_WAG2_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+#include <boost/geometry/srs/projections/impl/aasincos.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct wag2 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace wag2
+ {
+
+ static const double C_x = 0.92483;
+ static const double C_y = 1.38725;
+ static const double C_p1 = 0.88022;
+ static const double C_p2 = 0.88550;
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_wag2_spheroid : public base_t_fi<base_wag2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_wag2_spheroid(const Parameters& par)
+ : base_t_fi<base_wag2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ lp_lat = aasin(C_p1 * sin(C_p2 * lp_lat));
+ xy_x = C_x * lp_lon * cos(lp_lat);
+ xy_y = C_y * lp_lat;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = xy_y / C_y;
+ lp_lon = xy_x / (C_x * cos(lp_lat));
+ lp_lat = aasin(sin(lp_lat) / C_p1) / C_p2;
+ }
+
+ static inline std::string get_name()
+ {
+ return "wag2_spheroid";
+ }
+
+ };
+
+ // Wagner II
+ template <typename Parameters>
+ inline void setup_wag2(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::wag2
+ #endif // doxygen
+
+ /*!
+ \brief Wagner II projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Example
+ \image html ex_wag2.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wag2_spheroid : public detail::wag2::base_wag2_spheroid<CalculationType, Parameters>
+ {
+ inline wag2_spheroid(const Parameters& par) : detail::wag2::base_wag2_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::wag2::setup_wag2(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wag2, wag2_spheroid, wag2_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class wag2_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<wag2_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void wag2_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("wag2", new wag2_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_WAG2_HPP
+
diff --git a/boost/geometry/srs/projections/proj/wag3.hpp b/boost/geometry/srs/projections/proj/wag3.hpp
new file mode 100644
index 0000000000..3ddbfe8258
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/wag3.hpp
@@ -0,0 +1,180 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_WAG3_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_WAG3_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct wag3 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace wag3
+ {
+ template <typename T>
+ struct par_wag3
+ {
+ T C_x;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_wag3_spheroid : public base_t_fi<base_wag3_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_wag3<CalculationType> m_proj_parm;
+
+ inline base_wag3_spheroid(const Parameters& par)
+ : base_t_fi<base_wag3_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType TWOTHIRD = detail::TWOTHIRD<CalculationType>();
+
+ xy_x = this->m_proj_parm.C_x * lp_lon * cos(TWOTHIRD * lp_lat);
+ xy_y = lp_lat;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ static const CalculationType TWOTHIRD = detail::TWOTHIRD<CalculationType>();
+
+ lp_lat = xy_y;
+ lp_lon = xy_x / (this->m_proj_parm.C_x * cos(TWOTHIRD * lp_lat));
+ }
+
+ static inline std::string get_name()
+ {
+ return "wag3_spheroid";
+ }
+
+ };
+
+ // Wagner III
+ template <typename Parameters, typename T>
+ inline void setup_wag3(Parameters& par, par_wag3<T>& proj_parm)
+ {
+ T ts;
+
+ ts = pj_param(par.params, "rlat_ts").f;
+ proj_parm.C_x = cos(ts) / cos(2.*ts/3.);
+ par.es = 0.;
+ }
+
+ }} // namespace detail::wag3
+ #endif // doxygen
+
+ /*!
+ \brief Wagner III projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ \par Example
+ \image html ex_wag3.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wag3_spheroid : public detail::wag3::base_wag3_spheroid<CalculationType, Parameters>
+ {
+ inline wag3_spheroid(const Parameters& par) : detail::wag3::base_wag3_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::wag3::setup_wag3(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wag3, wag3_spheroid, wag3_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class wag3_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<wag3_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void wag3_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("wag3", new wag3_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_WAG3_HPP
+
diff --git a/boost/geometry/srs/projections/proj/wag7.hpp b/boost/geometry/srs/projections/proj/wag7.hpp
new file mode 100644
index 0000000000..c752ff33ee
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/wag7.hpp
@@ -0,0 +1,161 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_WAG7_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_WAG7_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct wag7 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace wag7
+ {
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_wag7_spheroid : public base_t_f<base_wag7_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+
+ inline base_wag7_spheroid(const Parameters& par)
+ : base_t_f<base_wag7_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) sphere
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ CalculationType theta, ct, D;
+
+ theta = asin(xy_y = 0.90630778703664996 * sin(lp_lat));
+ xy_x = 2.66723 * (ct = cos(theta)) * sin(lp_lon /= 3.);
+ xy_y *= 1.24104 * (D = 1/(sqrt(0.5 * (1 + ct * cos(lp_lon)))));
+ xy_x *= D;
+ }
+
+ static inline std::string get_name()
+ {
+ return "wag7_spheroid";
+ }
+
+ };
+
+ // Wagner VII
+ template <typename Parameters>
+ inline void setup_wag7(Parameters& par)
+ {
+ par.es = 0.;
+ }
+
+ }} // namespace detail::wag7
+ #endif // doxygen
+
+ /*!
+ \brief Wagner VII projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Miscellaneous
+ - Spheroid
+ - no inverse
+ \par Example
+ \image html ex_wag7.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wag7_spheroid : public detail::wag7::base_wag7_spheroid<CalculationType, Parameters>
+ {
+ inline wag7_spheroid(const Parameters& par) : detail::wag7::base_wag7_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::wag7::setup_wag7(this->m_par);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wag7, wag7_spheroid, wag7_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class wag7_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<wag7_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void wag7_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("wag7", new wag7_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_WAG7_HPP
+
diff --git a/boost/geometry/srs/projections/proj/wink1.hpp b/boost/geometry/srs/projections/proj/wink1.hpp
new file mode 100644
index 0000000000..36ecc95500
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/wink1.hpp
@@ -0,0 +1,174 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_WINK1_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_WINK1_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct wink1 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace wink1
+ {
+
+ template <typename T>
+ struct par_wink1
+ {
+ T cosphi1;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_wink1_spheroid : public base_t_fi<base_wink1_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_wink1<CalculationType> m_proj_parm;
+
+ inline base_wink1_spheroid(const Parameters& par)
+ : base_t_fi<base_wink1_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ xy_x = .5 * lp_lon * (this->m_proj_parm.cosphi1 + cos(lp_lat));
+ xy_y = lp_lat;
+ }
+
+ // INVERSE(s_inverse) spheroid
+ // Project coordinates from cartesian (x, y) to geographic (lon, lat)
+ inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const
+ {
+ lp_lat = xy_y;
+ lp_lon = 2. * xy_x / (this->m_proj_parm.cosphi1 + cos(lp_lat));
+ }
+
+ static inline std::string get_name()
+ {
+ return "wink1_spheroid";
+ }
+
+ };
+
+ // Winkel I
+ template <typename Parameters, typename T>
+ inline void setup_wink1(Parameters& par, par_wink1<T>& proj_parm)
+ {
+ proj_parm.cosphi1 = cos(pj_param(par.params, "rlat_ts").f);
+ par.es = 0.;
+ }
+
+ }} // namespace detail::wink1
+ #endif // doxygen
+
+ /*!
+ \brief Winkel I projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ \par Projection parameters
+ - lat_ts: Latitude of true scale (degrees)
+ \par Example
+ \image html ex_wink1.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wink1_spheroid : public detail::wink1::base_wink1_spheroid<CalculationType, Parameters>
+ {
+ inline wink1_spheroid(const Parameters& par) : detail::wink1::base_wink1_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::wink1::setup_wink1(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wink1, wink1_spheroid, wink1_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class wink1_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_fi<wink1_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void wink1_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("wink1", new wink1_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_WINK1_HPP
+
diff --git a/boost/geometry/srs/projections/proj/wink2.hpp b/boost/geometry/srs/projections/proj/wink2.hpp
new file mode 100644
index 0000000000..9c90d42481
--- /dev/null
+++ b/boost/geometry/srs/projections/proj/wink2.hpp
@@ -0,0 +1,195 @@
+#ifndef BOOST_GEOMETRY_PROJECTIONS_WINK2_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_WINK2_HPP
+
+// Boost.Geometry - extensions-gis-projections (based on PROJ4)
+// This file is automatically generated. DO NOT EDIT.
+
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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
+// PROJ4 is converted to Boost.Geometry by Barend Gehrels
+
+// Last updated version of proj: 4.9.1
+
+// Original copyright notice:
+
+// 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 <boost/geometry/util/math.hpp>
+
+#include <boost/geometry/srs/projections/impl/base_static.hpp>
+#include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
+#include <boost/geometry/srs/projections/impl/projects.hpp>
+#include <boost/geometry/srs/projections/impl/factory_entry.hpp>
+
+namespace boost { namespace geometry
+{
+
+namespace srs { namespace par4
+{
+ struct wink2 {};
+
+}} //namespace srs::par4
+
+namespace projections
+{
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail { namespace wink2
+ {
+
+ static const int MAX_ITER = 10;
+
+ static const double LOOP_TOL = 1e-7;
+ //static const double TWO_D_PI = 0.636619772367581343;
+
+ template <typename T>
+ struct par_wink2
+ {
+ T cosphi1;
+ };
+
+ // template class, using CRTP to implement forward/inverse
+ template <typename CalculationType, typename Parameters>
+ struct base_wink2_spheroid : public base_t_f<base_wink2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>
+ {
+
+ typedef CalculationType geographic_type;
+ typedef CalculationType cartesian_type;
+
+ par_wink2<CalculationType> m_proj_parm;
+
+ inline base_wink2_spheroid(const Parameters& par)
+ : base_t_f<base_wink2_spheroid<CalculationType, Parameters>,
+ CalculationType, Parameters>(*this, par) {}
+
+ // FORWARD(s_forward) spheroid
+ // Project coordinates from geographic (lon, lat) to cartesian (x, y)
+ inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const
+ {
+ static const CalculationType ONEPI = detail::ONEPI<CalculationType>();
+ static const CalculationType HALFPI = detail::HALFPI<CalculationType>();
+ static const CalculationType FORTPI = detail::FORTPI<CalculationType>();
+ static const CalculationType TWO_D_PI = detail::TWO_D_PI<CalculationType>();
+
+ CalculationType k, V;
+ int i;
+
+ xy_y = lp_lat * TWO_D_PI;
+ k = ONEPI * sin(lp_lat);
+ lp_lat *= 1.8;
+ for (i = MAX_ITER; i ; --i) {
+ lp_lat -= V = (lp_lat + sin(lp_lat) - k) /
+ (1. + cos(lp_lat));
+ if (fabs(V) < LOOP_TOL)
+ break;
+ }
+ if (!i)
+ lp_lat = (lp_lat < 0.) ? -HALFPI : HALFPI;
+ else
+ lp_lat *= 0.5;
+ xy_x = 0.5 * lp_lon * (cos(lp_lat) + this->m_proj_parm.cosphi1);
+ xy_y = FORTPI * (sin(lp_lat) + xy_y);
+ }
+
+ static inline std::string get_name()
+ {
+ return "wink2_spheroid";
+ }
+
+ };
+
+ // Winkel II
+ template <typename Parameters, typename T>
+ inline void setup_wink2(Parameters& par, par_wink2<T>& proj_parm)
+ {
+ proj_parm.cosphi1 = cos(pj_param(par.params, "rlat_1").f);
+ par.es = 0.;
+ }
+
+ }} // namespace detail::wink2
+ #endif // doxygen
+
+ /*!
+ \brief Winkel II projection
+ \ingroup projections
+ \tparam Geographic latlong point type
+ \tparam Cartesian xy point type
+ \tparam Parameters parameter type
+ \par Projection characteristics
+ - Pseudocylindrical
+ - Spheroid
+ - no inverse
+ \par Projection parameters
+ - lat_1: Latitude of first standard parallel (degrees)
+ \par Example
+ \image html ex_wink2.gif
+ */
+ template <typename CalculationType, typename Parameters>
+ struct wink2_spheroid : public detail::wink2::base_wink2_spheroid<CalculationType, Parameters>
+ {
+ inline wink2_spheroid(const Parameters& par) : detail::wink2::base_wink2_spheroid<CalculationType, Parameters>(par)
+ {
+ detail::wink2::setup_wink2(this->m_par, this->m_proj_parm);
+ }
+ };
+
+ #ifndef DOXYGEN_NO_DETAIL
+ namespace detail
+ {
+
+ // Static projection
+ BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::wink2, wink2_spheroid, wink2_spheroid)
+
+ // Factory entry(s)
+ template <typename CalculationType, typename Parameters>
+ class wink2_entry : public detail::factory_entry<CalculationType, Parameters>
+ {
+ public :
+ virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const
+ {
+ return new base_v_f<wink2_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par);
+ }
+ };
+
+ template <typename CalculationType, typename Parameters>
+ inline void wink2_init(detail::base_factory<CalculationType, Parameters>& factory)
+ {
+ factory.add_to_factory("wink2", new wink2_entry<CalculationType, Parameters>);
+ }
+
+ } // namespace detail
+ #endif // doxygen
+
+} // namespace projections
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_WINK2_HPP
+
diff --git a/boost/geometry/srs/projections/proj4.hpp b/boost/geometry/srs/projections/proj4.hpp
new file mode 100644
index 0000000000..7b44679f31
--- /dev/null
+++ b/boost/geometry/srs/projections/proj4.hpp
@@ -0,0 +1,123 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_PROJ4_HPP
+#define BOOST_GEOMETRY_SRS_PROJECTIONS_PROJ4_HPP
+
+
+#include <string>
+
+#include <boost/tuple/tuple.hpp>
+
+
+namespace boost { namespace geometry { namespace srs
+{
+
+
+struct dynamic {};
+
+
+struct proj4
+{
+ explicit proj4(const char* s)
+ : str(s)
+ {}
+
+ explicit proj4(std::string const& s)
+ : str(s)
+ {}
+
+ std::string str;
+};
+
+
+template
+<
+ // null_type -> void?
+ typename P0 = boost::tuples::null_type,
+ typename P1 = boost::tuples::null_type,
+ typename P2 = boost::tuples::null_type,
+ typename P3 = boost::tuples::null_type,
+ typename P4 = boost::tuples::null_type,
+ typename P5 = boost::tuples::null_type,
+ typename P6 = boost::tuples::null_type,
+ typename P7 = boost::tuples::null_type,
+ typename P8 = boost::tuples::null_type,
+ typename P9 = boost::tuples::null_type
+>
+struct static_proj4
+ : boost::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>
+{
+ typedef boost::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9> base_type;
+
+ static_proj4()
+ {}
+
+ explicit static_proj4(P0 const& p0)
+ : base_type(p0)
+ {}
+
+ static_proj4(P0 const& p0, P1 const& p1)
+ : base_type(p0, p1)
+ {}
+
+ static_proj4(P0 const& p0, P1 const& p1, P2 const& p2)
+ : base_type(p0, p1, p2)
+ {}
+
+ static_proj4(P0 const& p0, P1 const& p1, P2 const& p2, P3 const& p3)
+ : base_type(p0, p1, p2, p3)
+ {}
+
+ static_proj4(P0 const& p0, P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4)
+ : base_type(p0, p1, p2, p3, p4)
+ {}
+
+ static_proj4(P0 const& p0, P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4, P5 const& p5)
+ : base_type(p0, p1, p2, p3, p4, p5)
+ {}
+
+ static_proj4(P0 const& p0, P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4, P5 const& p5, P6 const& p6)
+ : base_type(p0, p1, p2, p3, p4, p5, p6)
+ {}
+
+ static_proj4(P0 const& p0, P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4, P5 const& p5, P6 const& p6, P7 const& p7)
+ : base_type(p0, p1, p2, p3, p4, p5, p6, p7)
+ {}
+
+ static_proj4(P0 const& p0, P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4, P5 const& p5, P6 const& p6, P7 const& p7, P8 const& p8)
+ : base_type(p0, p1, p2, p3, p4, p5, p6, p7, p8)
+ {}
+
+ static_proj4(P0 const& p0, P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4, P5 const& p5, P6 const& p6, P7 const& p7, P8 const& p8, P9 const& p9)
+ : base_type(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+ {}
+};
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_TYPENAME_PX \
+typename P0, typename P1, typename P2, typename P3, typename P4, \
+typename P5, typename P6, typename P7, typename P8, typename P9
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_PX \
+P0, P1, P2, P3, P4, P5, P6, P7, P8, P9
+
+
+}}} // namespace boost::geometry::srs
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace boost { namespace geometry { namespace projections { namespace detail
+{
+
+template<typename R> struct function_argument_type;
+template<typename R, typename A> struct function_argument_type<R(A)> { typedef A type; };
+
+}}}} // namespace boost::geometry::projections::detail
+#endif // DOXYGEN_NO_DETAIL
+
+#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_PROJ4_HPP
diff --git a/boost/geometry/srs/projections/srid_traits.hpp b/boost/geometry/srs/projections/srid_traits.hpp
new file mode 100644
index 0000000000..c2270f2542
--- /dev/null
+++ b/boost/geometry/srs/projections/srid_traits.hpp
@@ -0,0 +1,101 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_PROJECTIONS_SRID_TRAITS_HPP
+#define BOOST_GEOMETRY_PROJECTIONS_SRID_TRAITS_HPP
+
+
+#include <boost/geometry/srs/projections/par4.hpp>
+#include <boost/geometry/srs/projections/proj4.hpp>
+#include <boost/geometry/srs/sphere.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
+
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_ED(AUTH, CODE, PROJ, ELLPS, DATUM, PROJ4_STR) \
+template<> \
+struct AUTH##_traits<CODE> \
+{ \
+ typedef srs::static_proj4 \
+ < \
+ srs::par4::proj<srs::par4::PROJ>, \
+ srs::par4::ellps<srs::par4::ELLPS>, \
+ srs::par4::datum<srs::par4::DATUM> \
+ > static_parameters_type; \
+ static inline static_parameters_type s_par() \
+ { \
+ return static_parameters_type(); \
+ } \
+ static inline srs::proj4 par() \
+ { \
+ return srs::proj4(PROJ4_STR); \
+ } \
+}; \
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_E(AUTH, CODE, PROJ, ELLPS, PROJ4_STR) \
+template<> \
+struct AUTH##_traits<CODE> \
+{ \
+ typedef srs::static_proj4 \
+ < \
+ srs::par4::proj<srs::par4::PROJ>, \
+ srs::par4::ellps<srs::par4::ELLPS> \
+ > static_parameters_type; \
+ static inline static_parameters_type s_par() \
+ { \
+ return static_parameters_type(); \
+ } \
+ static inline srs::proj4 par() \
+ { \
+ return srs::proj4(PROJ4_STR); \
+ } \
+}; \
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_AB(AUTH, CODE, PROJ, A, B, PROJ4_STR) \
+template<> \
+struct AUTH##_traits<CODE> \
+{ \
+ typedef srs::static_proj4 \
+ < \
+ srs::par4::proj<srs::par4::PROJ>, \
+ srs::par4::ellps<srs::spheroid<double> > \
+ > static_parameters_type; \
+ static inline static_parameters_type s_par() \
+ { \
+ return static_parameters_type(srs::par4::proj<srs::par4::PROJ>(), \
+ srs::par4::ellps<srs::spheroid<double> >(srs::spheroid<double>(A, B))); \
+ } \
+ static inline srs::proj4 par() \
+ { \
+ return srs::proj4(PROJ4_STR); \
+ } \
+}; \
+
+#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_SRID_TRAITS_S(AUTH, CODE, PROJ, R, PROJ4_STR) \
+template<> \
+struct AUTH##_traits<CODE> \
+{ \
+ typedef srs::static_proj4 \
+ < \
+ srs::par4::proj<srs::par4::PROJ>, \
+ srs::par4::ellps<srs::sphere<double> > \
+ > static_parameters_type; \
+ static inline static_parameters_type s_par() \
+ { \
+ return static_parameters_type(srs::par4::proj<srs::par4::PROJ>(), \
+ srs::par4::ellps<srs::sphere<double> >(srs::sphere<double>(R))); \
+ } \
+ static inline srs::proj4 par() \
+ { \
+ return srs::proj4(PROJ4_STR); \
+ } \
+}; \
+
+
+#endif // BOOST_GEOMETRY_PROJECTIONS_SRID_TRAITS_HPP
+
diff --git a/boost/geometry/srs/sphere.hpp b/boost/geometry/srs/sphere.hpp
new file mode 100644
index 0000000000..9be5abf7ac
--- /dev/null
+++ b/boost/geometry/srs/sphere.hpp
@@ -0,0 +1,117 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+
+// This file was modified by Oracle on 2014, 2016, 2018.
+// Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
+// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_SRS_SPHERE_HPP
+#define BOOST_GEOMETRY_SRS_SPHERE_HPP
+
+
+#include <cstddef>
+
+#include <boost/static_assert.hpp>
+
+#include <boost/geometry/core/radius.hpp>
+#include <boost/geometry/core/tag.hpp>
+#include <boost/geometry/core/tags.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace srs
+{
+
+/*!
+ \brief Defines sphere radius value for use in spherical CS calculations
+ \ingroup srs
+ \tparam RadiusType tparam_radius
+*/
+template <typename RadiusType>
+class sphere
+{
+public:
+ explicit sphere(RadiusType const& r)
+ : m_r(r)
+ {}
+
+ sphere()
+ : m_r(RadiusType((2.0 * 6378137.0 + 6356752.3142451793) / 3.0))
+ {}
+
+ template <std::size_t I>
+ RadiusType get_radius() const
+ {
+ BOOST_STATIC_ASSERT(I < 3);
+
+ return m_r;
+ }
+
+ template <std::size_t I>
+ void set_radius(RadiusType const& radius)
+ {
+ BOOST_STATIC_ASSERT(I < 3);
+
+ m_r = radius;
+ }
+
+private:
+ RadiusType m_r; // radius
+};
+
+} // namespace srs
+
+// Traits specializations for sphere
+#ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS
+namespace traits
+{
+
+template <typename RadiusType>
+struct tag< srs::sphere<RadiusType> >
+{
+ typedef srs_sphere_tag type;
+};
+
+template <typename RadiusType>
+struct radius_type< srs::sphere<RadiusType> >
+{
+ typedef RadiusType type;
+};
+
+template <typename RadiusType, std::size_t Dimension>
+struct radius_access<srs::sphere<RadiusType>, Dimension>
+{
+ typedef srs::sphere<RadiusType> sphere_type;
+
+ static inline RadiusType get(sphere_type const& s)
+ {
+ return s.template get_radius<Dimension>();
+ }
+
+ static inline void set(sphere_type& s, RadiusType const& value)
+ {
+ s.template set_radius<Dimension>(value);
+ }
+};
+
+} // namespace traits
+#endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS
+
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_SRS_SPHERE_HPP
diff --git a/boost/geometry/core/srs.hpp b/boost/geometry/srs/spheroid.hpp
index 5c78b9f1fc..5481d73f04 100644
--- a/boost/geometry/core/srs.hpp
+++ b/boost/geometry/srs/spheroid.hpp
@@ -4,8 +4,8 @@
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
-// This file was modified by Oracle on 2014, 2016, 2017.
-// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
+// This file was modified by Oracle on 2014, 2016, 2017, 2018.
+// Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -16,8 +16,8 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_GEOMETRY_CORE_SRS_HPP
-#define BOOST_GEOMETRY_CORE_SRS_HPP
+#ifndef BOOST_GEOMETRY_SRS_SPHEROID_HPP
+#define BOOST_GEOMETRY_SRS_SPHEROID_HPP
#include <cstddef>
@@ -37,8 +37,10 @@ namespace srs
/*!
\brief Defines spheroid radius values for use in geographical CS calculations
+ \ingroup srs
\note See http://en.wikipedia.org/wiki/Figure_of_the_Earth
and http://en.wikipedia.org/wiki/World_Geodetic_System#A_new_World_Geodetic_System:_WGS84
+ \tparam RadiusType tparam_radius
*/
template <typename RadiusType>
class spheroid
@@ -113,84 +115,7 @@ struct radius_access<srs::spheroid<RadiusType>, Dimension>
#endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS
-namespace srs
-{
-
-/*!
- \brief Defines sphere radius value for use in spherical CS calculations
-*/
-template <typename RadiusType>
-class sphere
-{
-public:
- explicit sphere(RadiusType const& r)
- : m_r(r)
- {}
-
- sphere()
- : m_r(RadiusType((2.0 * 6378137.0 + 6356752.3142451793) / 3.0))
- {}
-
- template <std::size_t I>
- RadiusType get_radius() const
- {
- BOOST_STATIC_ASSERT(I < 3);
-
- return m_r;
- }
-
- template <std::size_t I>
- void set_radius(RadiusType const& radius)
- {
- BOOST_STATIC_ASSERT(I < 3);
-
- m_r = radius;
- }
-
-private:
- RadiusType m_r; // radius
-};
-
-} // namespace srs
-
-// Traits specializations for sphere
-#ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS
-namespace traits
-{
-
-template <typename RadiusType>
-struct tag< srs::sphere<RadiusType> >
-{
- typedef srs_sphere_tag type;
-};
-
-template <typename RadiusType>
-struct radius_type< srs::sphere<RadiusType> >
-{
- typedef RadiusType type;
-};
-
-template <typename RadiusType, std::size_t Dimension>
-struct radius_access<srs::sphere<RadiusType>, Dimension>
-{
- typedef srs::sphere<RadiusType> sphere_type;
-
- static inline RadiusType get(sphere_type const& s)
- {
- return s.template get_radius<Dimension>();
- }
-
- static inline void set(sphere_type& s, RadiusType const& value)
- {
- s.template set_radius<Dimension>(value);
- }
-};
-
-} // namespace traits
-#endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS
-
-
}} // namespace boost::geometry
-#endif // BOOST_GEOMETRY_CORE_SRS_HPP
+#endif // BOOST_GEOMETRY_SRS_SPHEROID_HPP
diff --git a/boost/geometry/srs/srs.hpp b/boost/geometry/srs/srs.hpp
new file mode 100644
index 0000000000..9a0a843fe0
--- /dev/null
+++ b/boost/geometry/srs/srs.hpp
@@ -0,0 +1,29 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+
+// This file was modified by Oracle on 2014, 2016, 2017, 2018.
+// Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
+// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_SRS_SRS_HPP
+#define BOOST_GEOMETRY_SRS_SRS_HPP
+
+
+//#include <boost/geometry/srs/projection.hpp>
+#include <boost/geometry/srs/sphere.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
+//#include <boost/geometry/srs/transformation.hpp>
+
+
+#endif // BOOST_GEOMETRY_SRS_SRS_HPP
diff --git a/boost/geometry/srs/transformation.hpp b/boost/geometry/srs/transformation.hpp
new file mode 100644
index 0000000000..c726d09ac4
--- /dev/null
+++ b/boost/geometry/srs/transformation.hpp
@@ -0,0 +1,627 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_SRS_TRANSFORMATION_HPP
+#define BOOST_GEOMETRY_SRS_TRANSFORMATION_HPP
+
+
+#include <string>
+
+#include <boost/geometry/algorithms/convert.hpp>
+
+#include <boost/geometry/core/coordinate_dimension.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/multi_point.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/ring.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+
+#include <boost/geometry/srs/projection.hpp>
+#include <boost/geometry/srs/projections/impl/pj_transform.hpp>
+
+#include <boost/geometry/views/detail/indexed_point_view.hpp>
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/smart_ptr/shared_ptr.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace projections { namespace detail
+{
+
+template <typename T1, typename T2>
+inline bool same_object(T1 const& , T2 const& )
+{
+ return false;
+}
+
+template <typename T>
+inline bool same_object(T const& o1, T const& o2)
+{
+ return boost::addressof(o1) == boost::addressof(o2);
+}
+
+template
+<
+ typename PtIn,
+ typename PtOut,
+ bool SameUnits = geometry::is_radian
+ <
+ typename geometry::coordinate_system<PtIn>::type
+ >::type::value
+ ==
+ geometry::is_radian
+ <
+ typename geometry::coordinate_system<PtOut>::type
+ >::type::value
+>
+struct transform_geometry_point_coordinates
+{
+ static inline void apply(PtIn const& in, PtOut & out, bool /*enable_angles*/)
+ {
+ geometry::set<0>(out, geometry::get<0>(in));
+ geometry::set<1>(out, geometry::get<1>(in));
+ }
+};
+
+template <typename PtIn, typename PtOut>
+struct transform_geometry_point_coordinates<PtIn, PtOut, false>
+{
+ static inline void apply(PtIn const& in, PtOut & out, bool enable_angles)
+ {
+ if (enable_angles)
+ {
+ geometry::set_from_radian<0>(out, geometry::get_as_radian<0>(in));
+ geometry::set_from_radian<1>(out, geometry::get_as_radian<1>(in));
+ }
+ else
+ {
+ geometry::set<0>(out, geometry::get<0>(in));
+ geometry::set<1>(out, geometry::get<1>(in));
+ }
+ }
+};
+
+template <typename Geometry, typename CT>
+struct transform_geometry_point
+{
+ typedef typename geometry::point_type<Geometry>::type point_type;
+
+ typedef geometry::model::point
+ <
+ typename select_most_precise
+ <
+ typename geometry::coordinate_type<point_type>::type,
+ CT
+ >::type,
+ geometry::dimension<point_type>::type::value,
+ typename geometry::coordinate_system<point_type>::type
+ > type;
+
+ template <typename PtIn, typename PtOut>
+ static inline void apply(PtIn const& in, PtOut & out, bool enable_angles)
+ {
+ transform_geometry_point_coordinates<PtIn, PtOut>::apply(in, out, enable_angles);
+ projections::detail::copy_higher_dimensions<2>(in, out);
+ }
+};
+
+template <typename Geometry, typename CT>
+struct transform_geometry_range_base
+{
+ struct convert_strategy
+ {
+ convert_strategy(bool enable_angles)
+ : m_enable_angles(enable_angles)
+ {}
+
+ template <typename PtIn, typename PtOut>
+ void apply(PtIn const& in, PtOut & out)
+ {
+ transform_geometry_point<Geometry, CT>::apply(in, out, m_enable_angles);
+ }
+
+ bool m_enable_angles;
+ };
+
+ template <typename In, typename Out>
+ static inline void apply(In const& in, Out & out, bool enable_angles)
+ {
+ // Change the order and/or closure if needed
+ // In - arbitrary geometry
+ // Out - either Geometry or std::vector
+ // So the order and closure of In and Geometry shoudl be compared
+ // std::vector's order is assumed to be the same as of Geometry
+ geometry::detail::conversion::range_to_range
+ <
+ In,
+ Out,
+ geometry::point_order<In>::value != geometry::point_order<Out>::value
+ >::apply(in, out, convert_strategy(enable_angles));
+ }
+};
+
+template
+<
+ typename Geometry,
+ typename CT,
+ typename Tag = typename geometry::tag<Geometry>::type
+>
+struct transform_geometry
+{};
+
+template <typename Point, typename CT>
+struct transform_geometry<Point, CT, point_tag>
+ : transform_geometry_point<Point, CT>
+{};
+
+template <typename Segment, typename CT>
+struct transform_geometry<Segment, CT, segment_tag>
+{
+ typedef geometry::model::segment
+ <
+ typename transform_geometry_point<Segment, CT>::type
+ > type;
+
+ template <typename In, typename Out>
+ static inline void apply(In const& in, Out & out, bool enable_angles)
+ {
+ apply<0>(in, out, enable_angles);
+ apply<1>(in, out, enable_angles);
+ }
+
+private:
+ template <std::size_t Index, typename In, typename Out>
+ static inline void apply(In const& in, Out & out, bool enable_angles)
+ {
+ geometry::detail::indexed_point_view<In const, Index> in_pt(in);
+ geometry::detail::indexed_point_view<Out, Index> out_pt(out);
+ transform_geometry_point<Segment, CT>::apply(in_pt, out_pt, enable_angles);
+ }
+};
+
+template <typename MultiPoint, typename CT>
+struct transform_geometry<MultiPoint, CT, multi_point_tag>
+ : transform_geometry_range_base<MultiPoint, CT>
+{
+ typedef model::multi_point
+ <
+ typename transform_geometry_point<MultiPoint, CT>::type
+ > type;
+};
+
+template <typename LineString, typename CT>
+struct transform_geometry<LineString, CT, linestring_tag>
+ : transform_geometry_range_base<LineString, CT>
+{
+ typedef model::linestring
+ <
+ typename transform_geometry_point<LineString, CT>::type
+ > type;
+};
+
+template <typename Ring, typename CT>
+struct transform_geometry<Ring, CT, ring_tag>
+ : transform_geometry_range_base<Ring, CT>
+{
+ typedef model::ring
+ <
+ typename transform_geometry_point<Ring, CT>::type,
+ geometry::point_order<Ring>::value == clockwise,
+ geometry::closure<Ring>::value == closed
+ > type;
+};
+
+
+template
+<
+ typename OutGeometry,
+ typename CT,
+ bool EnableTemporary = ! boost::is_same
+ <
+ typename select_most_precise
+ <
+ typename geometry::coordinate_type<OutGeometry>::type,
+ CT
+ >::type,
+ typename geometry::coordinate_type<OutGeometry>::type
+ >::type::value
+>
+struct transform_geometry_wrapper
+{
+ typedef transform_geometry<OutGeometry, CT> transform;
+ typedef typename transform::type type;
+
+ template <typename InGeometry>
+ transform_geometry_wrapper(InGeometry const& in, OutGeometry & out, bool input_angles)
+ : m_out(out)
+ {
+ transform::apply(in, m_temp, input_angles);
+ }
+
+ type & get() { return m_temp; }
+ void finish() { geometry::convert(m_temp, m_out); } // this is always copy 1:1 without changing the order or closure
+
+private:
+ type m_temp;
+ OutGeometry & m_out;
+};
+
+template
+<
+ typename OutGeometry,
+ typename CT
+>
+struct transform_geometry_wrapper<OutGeometry, CT, false>
+{
+ typedef transform_geometry<OutGeometry, CT> transform;
+ typedef OutGeometry type;
+
+ transform_geometry_wrapper(OutGeometry const& in, OutGeometry & out, bool input_angles)
+ : m_out(out)
+ {
+ if (! same_object(in, out))
+ transform::apply(in, out, input_angles);
+ }
+
+ template <typename InGeometry>
+ transform_geometry_wrapper(InGeometry const& in, OutGeometry & out, bool input_angles)
+ : m_out(out)
+ {
+ transform::apply(in, out, input_angles);
+ }
+
+ OutGeometry & get() { return m_out; }
+ void finish() {}
+
+private:
+ OutGeometry & m_out;
+};
+
+template <typename CT>
+struct transform_range
+{
+ template
+ <
+ typename Proj1, typename Par1,
+ typename Proj2, typename Par2,
+ typename RangeIn, typename RangeOut
+ >
+ static inline bool apply(Proj1 const& proj1, Par1 const& par1,
+ Proj2 const& proj2, Par2 const& par2,
+ RangeIn const& in, RangeOut & out)
+ {
+ // NOTE: this has to be consistent with pj_transform()
+ bool const input_angles = !par1.is_geocent && par1.is_latlong;
+
+ transform_geometry_wrapper<RangeOut, CT> wrapper(in, out, input_angles);
+
+ bool res = true;
+ try
+ {
+ res = pj_transform(proj1, par1, proj2, par2, wrapper.get());
+ }
+ catch (projection_exception)
+ {
+ res = false;
+ }
+ catch(...)
+ {
+ BOOST_RETHROW
+ }
+
+ wrapper.finish();
+
+ return res;
+ }
+};
+
+template <typename Policy>
+struct transform_multi
+{
+ template
+ <
+ typename Proj1, typename Par1,
+ typename Proj2, typename Par2,
+ typename MultiIn, typename MultiOut
+ >
+ static inline bool apply(Proj1 const& proj1, Par1 const& par1,
+ Proj2 const& proj2, Par2 const& par2,
+ MultiIn const& in, MultiOut & out)
+ {
+ if (! same_object(in, out))
+ range::resize(out, boost::size(in));
+
+ return apply(proj1, par1, proj2, par2,
+ boost::begin(in), boost::end(in),
+ boost::begin(out));
+ }
+
+private:
+ template
+ <
+ typename Proj1, typename Par1,
+ typename Proj2, typename Par2,
+ typename InIt, typename OutIt
+ >
+ static inline bool apply(Proj1 const& proj1, Par1 const& par1,
+ Proj2 const& proj2, Par2 const& par2,
+ InIt in_first, InIt in_last, OutIt out_first)
+ {
+ bool res = true;
+ for ( ; in_first != in_last ; ++in_first, ++out_first )
+ {
+ if ( ! Policy::apply(proj1, par1, proj2, par2, *in_first, *out_first) )
+ {
+ res = false;
+ }
+ }
+ return res;
+ }
+};
+
+template
+<
+ typename Geometry,
+ typename CT,
+ typename Tag = typename geometry::tag<Geometry>::type
+>
+struct transform
+ : not_implemented<Tag>
+{};
+
+template <typename Point, typename CT>
+struct transform<Point, CT, point_tag>
+{
+ template
+ <
+ typename Proj1, typename Par1,
+ typename Proj2, typename Par2,
+ typename PointIn, typename PointOut
+ >
+ static inline bool apply(Proj1 const& proj1, Par1 const& par1,
+ Proj2 const& proj2, Par2 const& par2,
+ PointIn const& in, PointOut & out)
+ {
+ // NOTE: this has to be consistent with pj_transform()
+ bool const input_angles = !par1.is_geocent && par1.is_latlong;
+
+ transform_geometry_wrapper<PointOut, CT> wrapper(in, out, input_angles);
+
+ typedef typename transform_geometry_wrapper<PointOut, CT>::type point_type;
+ point_type * ptr = boost::addressof(wrapper.get());
+
+ std::pair<point_type *, point_type *> range = std::make_pair(ptr, ptr + 1);
+
+ bool res = true;
+ try
+ {
+ res = pj_transform(proj1, par1, proj2, par2, range);
+ }
+ catch (projection_exception)
+ {
+ res = false;
+ }
+ catch(...)
+ {
+ BOOST_RETHROW
+ }
+
+ wrapper.finish();
+
+ return res;
+ }
+};
+
+template <typename MultiPoint, typename CT>
+struct transform<MultiPoint, CT, multi_point_tag>
+ : transform_range<CT>
+{};
+
+template <typename Segment, typename CT>
+struct transform<Segment, CT, segment_tag>
+{
+ template
+ <
+ typename Proj1, typename Par1,
+ typename Proj2, typename Par2,
+ typename SegmentIn, typename SegmentOut
+ >
+ static inline bool apply(Proj1 const& proj1, Par1 const& par1,
+ Proj2 const& proj2, Par2 const& par2,
+ SegmentIn const& in, SegmentOut & out)
+ {
+ // NOTE: this has to be consistent with pj_transform()
+ bool const input_angles = !par1.is_geocent && par1.is_latlong;
+
+ transform_geometry_wrapper<SegmentOut, CT> wrapper(in, out, input_angles);
+
+ typedef typename geometry::point_type
+ <
+ typename transform_geometry_wrapper<SegmentOut, CT>::type
+ >::type point_type;
+
+ point_type points[2];
+
+ geometry::detail::assign_point_from_index<0>(wrapper.get(), points[0]);
+ geometry::detail::assign_point_from_index<1>(wrapper.get(), points[1]);
+
+ std::pair<point_type*, point_type*> range = std::make_pair(points, points + 2);
+
+ bool res = true;
+ try
+ {
+ res = pj_transform(proj1, par1, proj2, par2, range);
+ }
+ catch (projection_exception)
+ {
+ res = false;
+ }
+ catch(...)
+ {
+ BOOST_RETHROW
+ }
+
+ geometry::detail::assign_point_to_index<0>(points[0], wrapper.get());
+ geometry::detail::assign_point_to_index<1>(points[1], wrapper.get());
+
+ wrapper.finish();
+
+ return res;
+ }
+};
+
+template <typename Linestring, typename CT>
+struct transform<Linestring, CT, linestring_tag>
+ : transform_range<CT>
+{};
+
+template <typename MultiLinestring, typename CT>
+struct transform<MultiLinestring, CT, multi_linestring_tag>
+ : transform_multi<transform_range<CT> >
+{};
+
+template <typename Ring, typename CT>
+struct transform<Ring, CT, ring_tag>
+ : transform_range<CT>
+{};
+
+template <typename Polygon, typename CT>
+struct transform<Polygon, CT, polygon_tag>
+{
+ template
+ <
+ typename Proj1, typename Par1,
+ typename Proj2, typename Par2,
+ typename PolygonIn, typename PolygonOut
+ >
+ static inline bool apply(Proj1 const& proj1, Par1 const& par1,
+ Proj2 const& proj2, Par2 const& par2,
+ PolygonIn const& in, PolygonOut & out)
+ {
+ bool r1 = transform_range
+ <
+ CT
+ >::apply(proj1, par1, proj2, par2,
+ geometry::exterior_ring(in),
+ geometry::exterior_ring(out));
+ bool r2 = transform_multi
+ <
+ transform_range<CT>
+ >::apply(proj1, par1, proj2, par2,
+ geometry::interior_rings(in),
+ geometry::interior_rings(out));
+ return r1 && r2;
+ }
+};
+
+template <typename MultiPolygon, typename CT>
+struct transform<MultiPolygon, CT, multi_polygon_tag>
+ : transform_multi
+ <
+ transform
+ <
+ typename boost::range_value<MultiPolygon>::type,
+ CT,
+ polygon_tag
+ >
+ >
+{};
+
+
+}} // namespace projections::detail
+
+namespace srs
+{
+
+
+/*!
+ \brief Representation of projection
+ \details Either dynamic or static projection representation
+ \ingroup projection
+ \tparam Proj1 default_dynamic or static projection parameters
+ \tparam Proj2 default_dynamic or static projection parameters
+ \tparam CT calculation type used internally
+*/
+template
+<
+ typename Proj1 = srs::dynamic,
+ typename Proj2 = srs::dynamic,
+ typename CT = double
+>
+class transformation
+{
+ typedef typename projections::detail::promote_to_double<CT>::type calc_t;
+
+public:
+ transformation()
+ {}
+
+ template <typename Parameters1>
+ explicit transformation(Parameters1 const& parameters1)
+ : m_proj1(parameters1)
+ {}
+
+ template <typename Parameters1, typename Parameters2>
+ transformation(Parameters1 const& parameters1, Parameters2 const& parameters2)
+ : m_proj1(parameters1)
+ , m_proj2(parameters2)
+ {}
+
+ template <typename GeometryIn, typename GeometryOut>
+ bool forward(GeometryIn const& in, GeometryOut & out) const
+ {
+ BOOST_MPL_ASSERT_MSG((projections::detail::same_tags<GeometryIn, GeometryOut>::value),
+ NOT_SUPPORTED_COMBINATION_OF_GEOMETRIES,
+ (GeometryIn, GeometryOut));
+
+ return projections::detail::transform
+ <
+ GeometryOut,
+ calc_t
+ >::apply(m_proj1.proj(), m_proj1.proj().params(),
+ m_proj2.proj(), m_proj2.proj().params(),
+ in, out);
+ }
+
+ template <typename GeometryIn, typename GeometryOut>
+ bool inverse(GeometryIn const& in, GeometryOut & out) const
+ {
+ BOOST_MPL_ASSERT_MSG((projections::detail::same_tags<GeometryIn, GeometryOut>::value),
+ NOT_SUPPORTED_COMBINATION_OF_GEOMETRIES,
+ (GeometryIn, GeometryOut));
+
+ return projections::detail::transform
+ <
+ GeometryOut,
+ calc_t
+ >::apply(m_proj2.proj(), m_proj2.proj().params(),
+ m_proj1.proj(), m_proj1.proj().params(),
+ in, out);
+ }
+
+private:
+ projections::proj_wrapper<Proj1, CT> m_proj1;
+ projections::proj_wrapper<Proj2, CT> m_proj2;
+};
+
+} // namespace srs
+
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_SRS_TRANSFORMATION_HPP
diff --git a/boost/geometry/strategies/area.hpp b/boost/geometry/strategies/area.hpp
index e192d9b28b..866f37e846 100644
--- a/boost/geometry/strategies/area.hpp
+++ b/boost/geometry/strategies/area.hpp
@@ -3,6 +3,7 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
@@ -14,35 +15,76 @@
#ifndef BOOST_GEOMETRY_STRATEGIES_AREA_HPP
#define BOOST_GEOMETRY_STRATEGIES_AREA_HPP
+
+#include <boost/geometry/core/coordinate_type.hpp>
+#include <boost/geometry/util/select_most_precise.hpp>
+
#include <boost/mpl/assert.hpp>
-#include <boost/geometry/strategies/tags.hpp>
namespace boost { namespace geometry
{
-namespace strategy { namespace area { namespace services
+namespace strategy { namespace area
+{
+
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail
+{
+
+// If user specified a CalculationType, use that type, whatever it is
+// and whatever the Geometry is.
+// Else, use Geometry's coordinate-type promoted to double if needed.
+template
+<
+ typename Geometry,
+ typename CalculationType
+>
+struct result_type
+{
+ typedef CalculationType type;
+};
+
+template
+<
+ typename Geometry
+>
+struct result_type<Geometry, void>
+ : select_most_precise
+ <
+ typename coordinate_type<Geometry>::type,
+ double
+ >
+{};
+
+} // namespace detail
+#endif // DOXYGEN_NO_DETAIL
+
+
+namespace services
{
/*!
\brief Traits class binding a default area strategy to a coordinate system
\ingroup area
\tparam Tag tag of coordinate system
- \tparam PointOfSegment point-type
*/
-template <typename Tag, typename PointOfSegment>
+template <typename Tag>
struct default_strategy
{
BOOST_MPL_ASSERT_MSG
(
- false, NOT_IMPLEMENTED_FOR_THIS_POINT_TYPE
- , (types<PointOfSegment>)
+ false, NOT_IMPLEMENTED_FOR_THIS_COORDINATE_SYSTEM
+ , (types<Tag>)
);
};
-}}} // namespace strategy::area::services
+} // namespace services
+
+}} // namespace strategy::area
}} // namespace boost::geometry
diff --git a/boost/geometry/strategies/area_result.hpp b/boost/geometry/strategies/area_result.hpp
new file mode 100644
index 0000000000..b8a6c4c85e
--- /dev/null
+++ b/boost/geometry/strategies/area_result.hpp
@@ -0,0 +1,116 @@
+// Boost.Geometry
+
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_AREA_RESULT_HPP
+#define BOOST_GEOMETRY_STRATEGIES_AREA_RESULT_HPP
+
+
+#include <boost/geometry/core/coordinate_type.hpp>
+#include <boost/geometry/core/cs.hpp>
+
+#include <boost/geometry/strategies/area.hpp>
+#include <boost/geometry/strategies/default_strategy.hpp>
+
+#include <boost/geometry/util/select_most_precise.hpp>
+#include <boost/geometry/util/select_sequence_element.hpp>
+
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/variant/variant_fwd.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+
+/*!
+\brief Meta-function defining return type of area function
+\ingroup area
+\note The return-type is defined by Geometry and Strategy
+ */
+template
+<
+ typename Geometry,
+ typename Strategy = default_strategy
+>
+struct area_result
+ : Strategy::template result_type<Geometry>
+{};
+
+template <BOOST_VARIANT_ENUM_PARAMS(typename T), typename Strategy>
+struct area_result<boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>, Strategy>
+ : geometry::area_result
+ <
+ typename geometry::util::select_sequence_element
+ <
+ typename boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>::types
+ >::type,
+ Strategy
+ >
+{};
+
+template <typename Geometry>
+struct area_result<Geometry, default_strategy>
+ : geometry::area_result
+ <
+ Geometry,
+ typename geometry::strategy::area::services::default_strategy
+ <
+ typename cs_tag<Geometry>::type
+ >::type
+ >
+{};
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace detail { namespace area
+{
+
+template <typename Curr, typename Next>
+struct pred_more_precise_default_area_result
+{
+ typedef typename geometry::area_result<Curr, default_strategy>::type curr_result_t;
+ typedef typename geometry::area_result<Next, default_strategy>::type next_result_t;
+
+ typedef typename boost::mpl::if_c
+ <
+ boost::is_same
+ <
+ curr_result_t,
+ typename geometry::select_most_precise
+ <
+ curr_result_t,
+ next_result_t
+ >::type
+ >::value,
+ Curr,
+ Next
+ >::type type;
+};
+
+}} // namespace detail::area
+#endif //DOXYGEN_NO_DETAIL
+
+template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
+struct area_result<boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>, default_strategy>
+ : geometry::area_result
+ <
+ typename geometry::util::select_sequence_element
+ <
+ typename boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>::types,
+ geometry::detail::area::pred_more_precise_default_area_result
+ >::type,
+ default_strategy
+ >
+{};
+
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_STRATEGIES_AREA_RESULT_HPP
diff --git a/boost/geometry/strategies/cartesian/area.hpp b/boost/geometry/strategies/cartesian/area.hpp
new file mode 100644
index 0000000000..27708424c2
--- /dev/null
+++ b/boost/geometry/strategies/cartesian/area.hpp
@@ -0,0 +1,146 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2016, 2017.
+// Modifications copyright (c) 2016-2017, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
+// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_CARTESIAN_AREA_HPP
+#define BOOST_GEOMETRY_STRATEGIES_CARTESIAN_AREA_HPP
+
+
+#include <boost/mpl/if.hpp>
+
+//#include <boost/geometry/arithmetic/determinant.hpp>
+#include <boost/geometry/core/coordinate_type.hpp>
+#include <boost/geometry/core/coordinate_dimension.hpp>
+#include <boost/geometry/strategies/area.hpp>
+#include <boost/geometry/util/select_most_precise.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace area
+{
+
+/*!
+\brief Cartesian area calculation
+\ingroup strategies
+\details Calculates cartesian area using the trapezoidal rule
+\tparam CalculationType \tparam_calculation
+
+\qbk{
+[heading See also]
+[link geometry.reference.algorithms.area.area_2_with_strategy area (with strategy)]
+}
+
+*/
+template
+<
+ typename CalculationType = void
+>
+class cartesian
+{
+public :
+ template <typename Geometry>
+ struct result_type
+ : strategy::area::detail::result_type
+ <
+ Geometry,
+ CalculationType
+ >
+ {};
+
+ template <typename Geometry>
+ class state
+ {
+ friend class cartesian;
+
+ typedef typename result_type<Geometry>::type return_type;
+
+ public:
+ inline state()
+ : sum(0)
+ {
+ // Strategy supports only 2D areas
+ assert_dimension<Geometry, 2>();
+ }
+
+ private:
+ inline return_type area() const
+ {
+ return_type const two = 2;
+ return sum / two;
+ }
+
+ return_type sum;
+ };
+
+ template <typename PointOfSegment, typename Geometry>
+ static inline void apply(PointOfSegment const& p1,
+ PointOfSegment const& p2,
+ state<Geometry>& st)
+ {
+ typedef typename state<Geometry>::return_type return_type;
+
+ // Below formulas are equivalent, however the two lower ones
+ // suffer less from accuracy loss for great values of coordinates.
+ // See: https://svn.boost.org/trac/boost/ticket/11928
+
+ // SUM += x2 * y1 - x1 * y2;
+ // state.sum += detail::determinant<return_type>(p2, p1);
+
+ // SUM += (x2 - x1) * (y2 + y1)
+ //state.sum += (return_type(get<0>(p2)) - return_type(get<0>(p1)))
+ // * (return_type(get<1>(p2)) + return_type(get<1>(p1)));
+
+ // SUM += (x1 + x2) * (y1 - y2)
+ st.sum += (return_type(get<0>(p1)) + return_type(get<0>(p2)))
+ * (return_type(get<1>(p1)) - return_type(get<1>(p2)));
+ }
+
+ template <typename Geometry>
+ static inline typename result_type<Geometry>::type
+ result(state<Geometry>& st)
+ {
+ return st.area();
+ }
+
+};
+
+#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+
+namespace services
+{
+ template <>
+ struct default_strategy<cartesian_tag>
+ {
+ typedef strategy::area::cartesian<> type;
+ };
+
+} // namespace services
+
+#endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+
+
+}} // namespace strategy::area
+
+
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_STRATEGIES_CARTESIAN_AREA_HPP
diff --git a/boost/geometry/strategies/cartesian/area_surveyor.hpp b/boost/geometry/strategies/cartesian/area_surveyor.hpp
index b3f19b1b1e..91df31745a 100644
--- a/boost/geometry/strategies/cartesian/area_surveyor.hpp
+++ b/boost/geometry/strategies/cartesian/area_surveyor.hpp
@@ -3,6 +3,7 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2016, 2017.
// Modifications copyright (c) 2016-2017, Oracle and/or its affiliates.
@@ -20,133 +21,9 @@
#define BOOST_GEOMETRY_STRATEGIES_CARTESIAN_AREA_SURVEYOR_HPP
-#include <boost/mpl/if.hpp>
-
-//#include <boost/geometry/arithmetic/determinant.hpp>
-#include <boost/geometry/core/coordinate_type.hpp>
-#include <boost/geometry/core/coordinate_dimension.hpp>
-#include <boost/geometry/strategies/area.hpp>
-#include <boost/geometry/util/select_most_precise.hpp>
-
-
-namespace boost { namespace geometry
-{
-
-namespace strategy { namespace area
-{
-
-/*!
-\brief Area calculation for cartesian points
-\ingroup strategies
-\details Calculates area using the Surveyor's formula, a well-known
- triangulation algorithm
-\tparam PointOfSegment \tparam_segment_point
-\tparam CalculationType \tparam_calculation
-
-\qbk{
-[heading See also]
-[link geometry.reference.algorithms.area.area_2_with_strategy area (with strategy)]
-}
-
-*/
-template
-<
- typename PointOfSegment,
- typename CalculationType = void
->
-class surveyor
-{
-public :
- // If user specified a calculation type, use that type,
- // whatever it is and whatever the point-type is.
- // Else, use the pointtype, but at least double
- typedef typename
- boost::mpl::if_c
- <
- boost::is_void<CalculationType>::type::value,
- typename select_most_precise
- <
- typename coordinate_type<PointOfSegment>::type,
- double
- >::type,
- CalculationType
- >::type return_type;
-
-
-private :
-
- class summation
- {
- friend class surveyor;
-
- return_type sum;
- public :
-
- inline summation() : sum(return_type())
- {
- // Strategy supports only 2D areas
- assert_dimension<PointOfSegment, 2>();
- }
- inline return_type area() const
- {
- return_type result = sum;
- return_type const two = 2;
- result /= two;
- return result;
- }
- };
-
-public :
- typedef summation state_type;
- typedef PointOfSegment segment_point_type;
-
- static inline void apply(PointOfSegment const& p1,
- PointOfSegment const& p2,
- summation& state)
- {
- // Below formulas are equivalent, however the two lower ones
- // suffer less from accuracy loss for great values of coordinates.
- // See: https://svn.boost.org/trac/boost/ticket/11928
-
- // SUM += x2 * y1 - x1 * y2;
- // state.sum += detail::determinant<return_type>(p2, p1);
-
- // SUM += (x2 - x1) * (y2 + y1)
- //state.sum += (return_type(get<0>(p2)) - return_type(get<0>(p1)))
- // * (return_type(get<1>(p2)) + return_type(get<1>(p1)));
-
- // SUM += (x1 + x2) * (y1 - y2)
- state.sum += (return_type(get<0>(p1)) + return_type(get<0>(p2)))
- * (return_type(get<1>(p1)) - return_type(get<1>(p2)));
- }
-
- static inline return_type result(summation const& state)
- {
- return state.area();
- }
-
-};
-
-#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
-
-namespace services
-{
- template <typename Point>
- struct default_strategy<cartesian_tag, Point>
- {
- typedef strategy::area::surveyor<Point> type;
- };
-
-} // namespace services
-
-#endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
-
-
-}} // namespace strategy::area
-
-
-
-}} // namespace boost::geometry
+// keep this file for now, for backward compatibility
+// functionality-wise, make it equivalent to boost/geometry/strategies/cartesian/area.hpp
+#include <boost/geometry/strategies/cartesian/area.hpp>
#endif // BOOST_GEOMETRY_STRATEGIES_CARTESIAN_AREA_SURVEYOR_HPP
diff --git a/boost/geometry/strategies/cartesian/centroid_average.hpp b/boost/geometry/strategies/cartesian/centroid_average.hpp
index c12f6e2024..32f551cf95 100644
--- a/boost/geometry/strategies/cartesian/centroid_average.hpp
+++ b/boost/geometry/strategies/cartesian/centroid_average.hpp
@@ -3,6 +3,7 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2015.
// Modifications copyright (c) 2015 Oracle and/or its affiliates.
@@ -23,6 +24,7 @@
#include <cstddef>
#include <boost/geometry/algorithms/assign.hpp>
+#include <boost/geometry/algorithms/detail/signed_size_type.hpp>
#include <boost/geometry/arithmetic/arithmetic.hpp>
#include <boost/geometry/core/coordinate_type.hpp>
#include <boost/geometry/core/point_type.hpp>
@@ -53,7 +55,7 @@ private :
class sum
{
friend class average;
- std::size_t count;
+ signed_size_type count;
PointCentroid centroid;
public :
diff --git a/boost/geometry/strategies/cartesian/densify.hpp b/boost/geometry/strategies/cartesian/densify.hpp
new file mode 100644
index 0000000000..23651637b9
--- /dev/null
+++ b/boost/geometry/strategies/cartesian/densify.hpp
@@ -0,0 +1,133 @@
+// Boost.Geometry
+
+// Copyright (c) 2017-2018, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_CARTESIAN_DENSIFY_HPP
+#define BOOST_GEOMETRY_STRATEGIES_CARTESIAN_DENSIFY_HPP
+
+
+#include <boost/geometry/algorithms/detail/convert_point_to_point.hpp>
+#include <boost/geometry/algorithms/detail/signed_size_type.hpp>
+#include <boost/geometry/arithmetic/arithmetic.hpp>
+#include <boost/geometry/arithmetic/dot_product.hpp>
+#include <boost/geometry/core/assert.hpp>
+#include <boost/geometry/core/coordinate_dimension.hpp>
+#include <boost/geometry/core/coordinate_type.hpp>
+#include <boost/geometry/strategies/densify.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/geometry/util/select_most_precise.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace densify
+{
+
+
+/*!
+\brief Densification of cartesian segment.
+\ingroup strategies
+\tparam CalculationType \tparam_calculation
+
+\qbk{
+[heading See also]
+[link geometry.reference.algorithms.densify.densify_4_with_strategy densify (with strategy)]
+}
+ */
+template
+<
+ typename CalculationType = void
+>
+class cartesian
+{
+public:
+ template <typename Point, typename AssignPolicy, typename T>
+ static inline void apply(Point const& p0, Point const& p1, AssignPolicy & policy, T const& length_threshold)
+ {
+ typedef typename AssignPolicy::point_type out_point_t;
+ typedef typename select_most_precise
+ <
+ typename coordinate_type<Point>::type,
+ typename coordinate_type<out_point_t>::type,
+ CalculationType
+ >::type calc_t;
+
+ typedef model::point<calc_t, geometry::dimension<Point>::value, cs::cartesian> calc_point_t;
+
+ calc_point_t cp0, cp1;
+ geometry::detail::conversion::convert_point_to_point(p0, cp0);
+ geometry::detail::conversion::convert_point_to_point(p1, cp1);
+
+ // dir01 = xy1 - xy0
+ calc_point_t dir01 = cp1;
+ geometry::subtract_point(dir01, cp0);
+ calc_t const dot01 = geometry::dot_product(dir01, dir01);
+ calc_t const len = math::sqrt(dot01);
+
+ BOOST_GEOMETRY_ASSERT(length_threshold > T(0));
+
+ signed_size_type n = signed_size_type(len / length_threshold);
+ if (n <= 0)
+ {
+ return;
+ }
+
+ // NOTE: Normalization will not work for integral coordinates
+ // normalize
+ //geometry::divide_value(dir01, len);
+
+ calc_t step = len / (n + 1);
+
+ calc_t d = step;
+ for (signed_size_type i = 0 ; i < n ; ++i, d += step)
+ {
+ // pd = xy0 + d * dir01
+ calc_point_t pd = dir01;
+
+ // without normalization
+ geometry::multiply_value(pd, calc_t(i + 1));
+ geometry::divide_value(pd, calc_t(n + 1));
+ // with normalization
+ //geometry::multiply_value(pd, d);
+
+ geometry::add_point(pd, cp0);
+
+ // NOTE: Only needed if types calc_point_t and out_point_t are different
+ // otherwise pd could simply be passed into policy
+ out_point_t p;
+ assert_dimension_equal<calc_point_t, out_point_t>();
+ geometry::detail::conversion::convert_point_to_point(pd, p);
+
+ policy.apply(p);
+ }
+ }
+};
+
+
+#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+namespace services
+{
+
+template <>
+struct default_strategy<cartesian_tag>
+{
+ typedef strategy::densify::cartesian<> type;
+};
+
+
+} // namespace services
+#endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+
+
+}} // namespace strategy::densify
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_STRATEGIES_CARTESIAN_DENSIFY_HPP
diff --git a/boost/geometry/strategies/cartesian/intersection.hpp b/boost/geometry/strategies/cartesian/intersection.hpp
index 233bb50b64..10fd73ba54 100644
--- a/boost/geometry/strategies/cartesian/intersection.hpp
+++ b/boost/geometry/strategies/cartesian/intersection.hpp
@@ -1,7 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2013-2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2014, 2016, 2017.
// Modifications copyright (c) 2014-2017, Oracle and/or its affiliates.
@@ -33,7 +33,7 @@
#include <boost/geometry/util/promote_integral.hpp>
#include <boost/geometry/util/select_calculation_type.hpp>
-#include <boost/geometry/strategies/cartesian/area_surveyor.hpp>
+#include <boost/geometry/strategies/cartesian/area.hpp>
#include <boost/geometry/strategies/cartesian/distance_pythagoras.hpp>
#include <boost/geometry/strategies/cartesian/envelope_segment.hpp>
#include <boost/geometry/strategies/cartesian/point_in_poly_winding.hpp>
@@ -103,9 +103,8 @@ struct cartesian_segments
template <typename Geometry>
struct area_strategy
{
- typedef area::surveyor
+ typedef area::cartesian
<
- typename point_type<Geometry>::type,
CalculationType
> type;
};
@@ -144,6 +143,7 @@ struct cartesian_segments
template <typename CoordinateType, typename SegmentRatio>
struct segment_intersection_info
{
+ private :
typedef typename select_most_precise
<
CoordinateType, double
@@ -198,6 +198,45 @@ struct cartesian_segments
>(numerator * dy_promoted / denominator));
}
+ public :
+ template <typename Point, typename Segment1, typename Segment2>
+ void calculate(Point& point, Segment1 const& a, Segment2 const& b) const
+ {
+ bool use_a = true;
+
+ // Prefer one segment if one is on or near an endpoint
+ bool const a_near_end = robust_ra.near_end();
+ bool const b_near_end = robust_rb.near_end();
+ if (a_near_end && ! b_near_end)
+ {
+ use_a = true;
+ }
+ else if (b_near_end && ! a_near_end)
+ {
+ use_a = false;
+ }
+ else
+ {
+ // Prefer shorter segment
+ promoted_type const len_a = comparable_length_a();
+ promoted_type const len_b = comparable_length_b();
+ if (len_b < len_a)
+ {
+ use_a = false;
+ }
+ // else use_a is true but was already assigned like that
+ }
+
+ if (use_a)
+ {
+ assign_a(point, a, b);
+ }
+ else
+ {
+ assign_b(point, a, b);
+ }
+ }
+
CoordinateType dx_a, dy_a;
CoordinateType dx_b, dy_b;
SegmentRatio robust_ra;
diff --git a/boost/geometry/strategies/concepts/area_concept.hpp b/boost/geometry/strategies/concepts/area_concept.hpp
index 4eec6d1fc3..66982e3f27 100644
--- a/boost/geometry/strategies/concepts/area_concept.hpp
+++ b/boost/geometry/strategies/concepts/area_concept.hpp
@@ -3,6 +3,7 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
@@ -26,19 +27,16 @@ namespace boost { namespace geometry { namespace concepts
\brief Checks strategy for area
\ingroup area
*/
-template <typename Strategy>
+template <typename Geometry, typename Strategy>
class AreaStrategy
{
#ifndef DOXYGEN_NO_CONCEPT_MEMBERS
- // 1) must define state_type,
- typedef typename Strategy::state_type state_type;
+ // 1) must define state template,
+ typedef typename Strategy::template state<Geometry> state_type;
- // 2) must define return_type,
- typedef typename Strategy::return_type return_type;
-
- // 3) must define point_type, of polygon (segments)
- typedef typename Strategy::segment_point_type spoint_type;
+ // 2) must define result_type template,
+ typedef typename Strategy::template result_type<Geometry>::type return_type;
struct check_methods
{
@@ -47,11 +45,11 @@ class AreaStrategy
Strategy const* str = 0;
state_type *st = 0;
- // 4) must implement a method apply with the following signature
- spoint_type const* sp = 0;
+ // 3) must implement a method apply with the following signature
+ typename geometry::point_type<Geometry>::type const* sp = 0;
str->apply(*sp, *sp, *st);
- // 5) must implement a static method result with the following signature
+ // 4) must implement a static method result with the following signature
return_type r = str->result(*st);
boost::ignore_unused_variable_warning(r);
diff --git a/boost/geometry/strategies/default_area_result.hpp b/boost/geometry/strategies/default_area_result.hpp
index 8adfa5d6ea..65818ea91a 100644
--- a/boost/geometry/strategies/default_area_result.hpp
+++ b/boost/geometry/strategies/default_area_result.hpp
@@ -3,6 +3,7 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
@@ -15,10 +16,7 @@
#define BOOST_GEOMETRY_STRATEGIES_DEFAULT_AREA_RESULT_HPP
-#include <boost/geometry/core/cs.hpp>
-#include <boost/geometry/core/coordinate_type.hpp>
-#include <boost/geometry/strategies/area.hpp>
-#include <boost/geometry/util/select_most_precise.hpp>
+#include <boost/geometry/strategies/area_result.hpp>
namespace boost { namespace geometry
@@ -33,16 +31,8 @@ namespace boost { namespace geometry
template <typename Geometry>
struct default_area_result
-{
- typedef typename point_type<Geometry>::type point_type;
- typedef typename strategy::area::services::default_strategy
- <
- typename cs_tag<point_type>::type,
- point_type
- >::type strategy_type;
-
- typedef typename strategy_type::return_type type;
-};
+ : area_result<Geometry>
+{};
}} // namespace boost::geometry
diff --git a/boost/geometry/strategies/densify.hpp b/boost/geometry/strategies/densify.hpp
new file mode 100644
index 0000000000..cde061af92
--- /dev/null
+++ b/boost/geometry/strategies/densify.hpp
@@ -0,0 +1,42 @@
+// Boost.Geometry
+
+// Copyright (c) 2017, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_DENSIFY_HPP
+#define BOOST_GEOMETRY_STRATEGIES_DENSIFY_HPP
+
+
+#include <boost/mpl/assert.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace densify
+{
+
+namespace services
+{
+
+template <typename CSTag>
+struct default_strategy
+{
+ BOOST_MPL_ASSERT_MSG
+ (
+ false, NOT_IMPLEMENTED_FOR_THIS_CS
+ , (types<CSTag>)
+ );
+};
+
+} // namespace services
+
+}} // namespace strategy::densify
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_STRATEGIES_DENSIFY_HPP
diff --git a/boost/geometry/strategies/geographic/area.hpp b/boost/geometry/strategies/geographic/area.hpp
index 40d6c8243e..ac7d933ce7 100644
--- a/boost/geometry/strategies/geographic/area.hpp
+++ b/boost/geometry/strategies/geographic/area.hpp
@@ -1,6 +1,8 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-// Copyright (c) 2016-2017 Oracle and/or its affiliates.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+// Copyright (c) 2016-2018 Oracle and/or its affiliates.
// Contributed and/or modified by Vissarion Fisikopoulos, on behalf of Oracle
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -12,7 +14,7 @@
#define BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_AREA_HPP
-#include <boost/geometry/core/srs.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
#include <boost/geometry/formulas/area_formulas.hpp>
#include <boost/geometry/formulas/authalic_radius_sqr.hpp>
@@ -32,7 +34,6 @@ namespace strategy { namespace area
\ingroup strategies
\details Geographic area calculation by trapezoidal rule plus integral
approximation that gives the ellipsoidal correction
-\tparam PointOfSegment \tparam_segment_point
\tparam FormulaPolicy Formula used to calculate azimuths
\tparam SeriesOrder The order of approximation of the geodesic integral
\tparam Spheroid The spheroid model
@@ -43,12 +44,12 @@ namespace strategy { namespace area
\qbk{
[heading See also]
-[link geometry.reference.algorithms.area.area_2_with_strategy area (with strategy)]
+\* [link geometry.reference.algorithms.area.area_2_with_strategy area (with strategy)]
+\* [link geometry.reference.srs.srs_spheroid srs::spheroid]
}
*/
template
<
- typename PointOfSegment,
typename FormulaPolicy = strategy::andoyer,
std::size_t SeriesOrder = strategy::default_order<FormulaPolicy>::value,
typename Spheroid = srs::spheroid<double>,
@@ -63,58 +64,67 @@ class geographic
//Select default types in case they are not set
- typedef typename boost::mpl::if_c
- <
- boost::is_void<CalculationType>::type::value,
- typename select_most_precise
+public:
+ template <typename Geometry>
+ struct result_type
+ : strategy::area::detail::result_type
<
- typename coordinate_type<PointOfSegment>::type,
- double
- >::type,
- CalculationType
- >::type CT;
+ Geometry,
+ CalculationType
+ >
+ {};
protected :
struct spheroid_constants
{
+ typedef typename boost::mpl::if_c
+ <
+ boost::is_void<CalculationType>::value,
+ typename geometry::radius_type<Spheroid>::type,
+ CalculationType
+ >::type calc_t;
+
Spheroid m_spheroid;
- CT const m_a2; // squared equatorial radius
- CT const m_e2; // squared eccentricity
- CT const m_ep2; // squared second eccentricity
- CT const m_ep; // second eccentricity
- CT const m_c2; // squared authalic radius
+ calc_t const m_a2; // squared equatorial radius
+ calc_t const m_e2; // squared eccentricity
+ calc_t const m_ep2; // squared second eccentricity
+ calc_t const m_ep; // second eccentricity
+ calc_t const m_c2; // squared authalic radius
inline spheroid_constants(Spheroid const& spheroid)
: m_spheroid(spheroid)
, m_a2(math::sqr(get_radius<0>(spheroid)))
- , m_e2(formula::eccentricity_sqr<CT>(spheroid))
- , m_ep2(m_e2 / (CT(1.0) - m_e2))
+ , m_e2(formula::eccentricity_sqr<calc_t>(spheroid))
+ , m_ep2(m_e2 / (calc_t(1.0) - m_e2))
, m_ep(math::sqrt(m_ep2))
, m_c2(formula_dispatch::authalic_radius_sqr
<
- CT, Spheroid, srs_spheroid_tag
+ calc_t, Spheroid, srs_spheroid_tag
>::apply(m_a2, m_e2))
{}
};
- struct area_sums
+public:
+ template <typename Geometry>
+ class state
{
- CT m_excess_sum;
- CT m_correction_sum;
+ friend class geographic;
- // Keep track if encircles some pole
- std::size_t m_crosses_prime_meridian;
+ typedef typename result_type<Geometry>::type return_type;
- inline area_sums()
+ public:
+ inline state()
: m_excess_sum(0)
, m_correction_sum(0)
, m_crosses_prime_meridian(0)
{}
- inline CT area(spheroid_constants spheroid_const) const
+
+ private:
+ inline return_type area(spheroid_constants const& spheroid_const) const
{
- CT result;
+ return_type result;
- CT sum = spheroid_const.m_c2 * m_excess_sum
+ return_type sum = spheroid_const.m_c2 * m_excess_sum
+ spheroid_const.m_e2 * spheroid_const.m_a2 * m_correction_sum;
// If encircles some pole
@@ -123,13 +133,13 @@ protected :
std::size_t times_crosses_prime_meridian
= 1 + (m_crosses_prime_meridian / 2);
- result = CT(2.0)
- * geometry::math::pi<CT>()
+ result = return_type(2.0)
+ * geometry::math::pi<return_type>()
* spheroid_const.m_c2
- * CT(times_crosses_prime_meridian)
+ * return_type(times_crosses_prime_meridian)
- geometry::math::abs(sum);
- if (geometry::math::sign<CT>(sum) == 1)
+ if (geometry::math::sign<return_type>(sum) == 1)
{
result = - result;
}
@@ -142,48 +152,52 @@ protected :
return result;
}
+
+ return_type m_excess_sum;
+ return_type m_correction_sum;
+
+ // Keep track if encircles some pole
+ std::size_t m_crosses_prime_meridian;
};
public :
- typedef CT return_type;
- typedef PointOfSegment segment_point_type;
- typedef area_sums state_type;
-
explicit inline geographic(Spheroid const& spheroid = Spheroid())
: m_spheroid_constants(spheroid)
{}
+ template <typename PointOfSegment, typename Geometry>
inline void apply(PointOfSegment const& p1,
PointOfSegment const& p2,
- area_sums& state) const
+ state<Geometry>& st) const
{
-
if (! geometry::math::equals(get<0>(p1), get<0>(p2)))
{
-
typedef geometry::formula::area_formulas
<
- CT, SeriesOrder, ExpandEpsN
+ typename result_type<Geometry>::type,
+ SeriesOrder, ExpandEpsN
> area_formulas;
typename area_formulas::return_type_ellipsoidal result =
area_formulas::template ellipsoidal<FormulaPolicy::template inverse>
(p1, p2, m_spheroid_constants);
- state.m_excess_sum += result.spherical_term;
- state.m_correction_sum += result.ellipsoidal_term;
+ st.m_excess_sum += result.spherical_term;
+ st.m_correction_sum += result.ellipsoidal_term;
// Keep track whenever a segment crosses the prime meridian
if (area_formulas::crosses_prime_meridian(p1, p2))
{
- state.m_crosses_prime_meridian++;
+ st.m_crosses_prime_meridian++;
}
}
}
- inline return_type result(area_sums const& state) const
+ template <typename Geometry>
+ inline typename result_type<Geometry>::type
+ result(state<Geometry> const& st) const
{
- return state.area(m_spheroid_constants);
+ return st.area(m_spheroid_constants);
}
private:
@@ -197,10 +211,10 @@ namespace services
{
-template <typename Point>
-struct default_strategy<geographic_tag, Point>
+template <>
+struct default_strategy<geographic_tag>
{
- typedef strategy::area::geographic<Point> type;
+ typedef strategy::area::geographic<> type;
};
#endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
diff --git a/boost/geometry/strategies/geographic/azimuth.hpp b/boost/geometry/strategies/geographic/azimuth.hpp
index 79c49750fb..b918caccea 100644
--- a/boost/geometry/strategies/geographic/azimuth.hpp
+++ b/boost/geometry/strategies/geographic/azimuth.hpp
@@ -12,7 +12,7 @@
#define BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_AZIMUTH_HPP
-#include <boost/geometry/core/srs.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
#include <boost/geometry/strategies/azimuth.hpp>
#include <boost/geometry/strategies/geographic/parameters.hpp>
diff --git a/boost/geometry/strategies/geographic/densify.hpp b/boost/geometry/strategies/geographic/densify.hpp
new file mode 100644
index 0000000000..a31ba72200
--- /dev/null
+++ b/boost/geometry/strategies/geographic/densify.hpp
@@ -0,0 +1,136 @@
+// Boost.Geometry
+
+// Copyright (c) 2017-2018, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_DENSIFY_HPP
+#define BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_DENSIFY_HPP
+
+
+#include <boost/geometry/algorithms/detail/convert_point_to_point.hpp>
+#include <boost/geometry/algorithms/detail/signed_size_type.hpp>
+#include <boost/geometry/core/assert.hpp>
+#include <boost/geometry/core/coordinate_dimension.hpp>
+#include <boost/geometry/core/coordinate_type.hpp>
+#include <boost/geometry/core/radian_access.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
+#include <boost/geometry/strategies/densify.hpp>
+#include <boost/geometry/strategies/geographic/parameters.hpp>
+#include <boost/geometry/util/select_most_precise.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace densify
+{
+
+
+/*!
+\brief Densification of geographic segment.
+\ingroup strategies
+\tparam FormulaPolicy The geodesic formulas used internally.
+\tparam Spheroid The spheroid model.
+\tparam CalculationType \tparam_calculation
+
+\qbk{
+[heading See also]
+\* [link geometry.reference.algorithms.densify.densify_4_with_strategy densify (with strategy)]
+\* [link geometry.reference.srs.srs_spheroid srs::spheroid]
+}
+ */
+template
+<
+ typename FormulaPolicy = strategy::andoyer,
+ typename Spheroid = srs::spheroid<double>,
+ typename CalculationType = void
+>
+class geographic
+{
+public:
+ geographic()
+ : m_spheroid()
+ {}
+
+ explicit geographic(Spheroid const& spheroid)
+ : m_spheroid(spheroid)
+ {}
+
+ template <typename Point, typename AssignPolicy, typename T>
+ inline void apply(Point const& p0, Point const& p1, AssignPolicy & policy, T const& length_threshold) const
+ {
+ typedef typename AssignPolicy::point_type out_point_t;
+ typedef typename select_most_precise
+ <
+ typename coordinate_type<Point>::type,
+ typename coordinate_type<out_point_t>::type,
+ CalculationType
+ >::type calc_t;
+
+ typedef typename FormulaPolicy::template direct<calc_t, true, false, false, false> direct_t;
+ typedef typename FormulaPolicy::template inverse<calc_t, true, true, false, false, false> inverse_t;
+
+ typename inverse_t::result_type
+ inv_r = inverse_t::apply(get_as_radian<0>(p0), get_as_radian<1>(p0),
+ get_as_radian<0>(p1), get_as_radian<1>(p1),
+ m_spheroid);
+
+ BOOST_GEOMETRY_ASSERT(length_threshold > T(0));
+
+ signed_size_type n = signed_size_type(inv_r.distance / length_threshold);
+ if (n <= 0)
+ return;
+
+ calc_t step = inv_r.distance / (n + 1);
+
+ calc_t current = step;
+ for (signed_size_type i = 0 ; i < n ; ++i, current += step)
+ {
+ typename direct_t::result_type
+ dir_r = direct_t::apply(get_as_radian<0>(p0), get_as_radian<1>(p0),
+ current, inv_r.azimuth,
+ m_spheroid);
+
+ out_point_t p;
+ set_from_radian<0>(p, dir_r.lon2);
+ set_from_radian<1>(p, dir_r.lat2);
+ geometry::detail::conversion::point_to_point
+ <
+ Point, out_point_t,
+ 2, dimension<out_point_t>::value
+ >::apply(p0, p);
+
+ policy.apply(p);
+ }
+ }
+
+private:
+ Spheroid m_spheroid;
+};
+
+
+#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+namespace services
+{
+
+template <>
+struct default_strategy<geographic_tag>
+{
+ typedef strategy::densify::geographic<> type;
+};
+
+
+} // namespace services
+#endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+
+
+}} // namespace strategy::densify
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_ALGORITHMS_DENSIFY_HPP
diff --git a/boost/geometry/strategies/geographic/distance.hpp b/boost/geometry/strategies/geographic/distance.hpp
index 98ee46a369..01f766c10e 100644
--- a/boost/geometry/strategies/geographic/distance.hpp
+++ b/boost/geometry/strategies/geographic/distance.hpp
@@ -2,8 +2,8 @@
// Copyright (c) 2007-2016 Barend Gehrels, Amsterdam, the Netherlands.
-// This file was modified by Oracle on 2014-2017.
-// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
+// This file was modified by Oracle on 2014-2018.
+// Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -20,12 +20,13 @@
#include <boost/geometry/core/coordinate_type.hpp>
#include <boost/geometry/core/radian_access.hpp>
#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/formulas/andoyer_inverse.hpp>
#include <boost/geometry/formulas/elliptic_arc_length.hpp>
#include <boost/geometry/formulas/flattening.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
+
#include <boost/geometry/strategies/distance.hpp>
#include <boost/geometry/strategies/geographic/parameters.hpp>
@@ -34,6 +35,7 @@
#include <boost/geometry/util/promote_floating_point.hpp>
#include <boost/geometry/util/select_calculation_type.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
namespace boost { namespace geometry
{
@@ -41,6 +43,19 @@ namespace boost { namespace geometry
namespace strategy { namespace distance
{
+/*!
+\brief Distance calculation for geographic coordinates on a spheroid
+\ingroup strategies
+\tparam FormulaPolicy Formula used to calculate azimuths
+\tparam Spheroid The spheroid model
+\tparam CalculationType \tparam_calculation
+
+\qbk{
+[heading See also]
+\* [link geometry.reference.algorithms.distance.distance_3_with_strategy distance (with strategy)]
+\* [link geometry.reference.srs.srs_spheroid srs::spheroid]
+}
+*/
template
<
typename FormulaPolicy = strategy::andoyer,
@@ -110,6 +125,19 @@ public :
return apply(lon1, lat1, lon2, lat2, m_spheroid);
}
+ // points on a meridian not crossing poles
+ template <typename CT>
+ inline CT meridian(CT lat1, CT lat2) const
+ {
+ typedef typename formula::elliptic_arc_length
+ <
+ CT, strategy::default_order<FormulaPolicy>::value
+ > elliptic_arc_length;
+
+ return elliptic_arc_length::meridian_not_crossing_pole_dist(lat1, lat2,
+ m_spheroid);
+ }
+
inline Spheroid const& model() const
{
return m_spheroid;
diff --git a/boost/geometry/strategies/geographic/distance_cross_track.hpp b/boost/geometry/strategies/geographic/distance_cross_track.hpp
index 799208a96d..be930a3fd4 100644
--- a/boost/geometry/strategies/geographic/distance_cross_track.hpp
+++ b/boost/geometry/strategies/geographic/distance_cross_track.hpp
@@ -40,7 +40,7 @@
#include <boost/geometry/formulas/mean_radius.hpp>
#ifdef BOOST_GEOMETRY_DEBUG_GEOGRAPHIC_CROSS_TRACK
-# include <boost/geometry/io/dsv/write.hpp>
+#include <boost/geometry/io/dsv/write.hpp>
#endif
#ifndef BOOST_GEOMETRY_DETAIL_POINT_SEGMENT_DISTANCE_MAX_STEPS
@@ -165,19 +165,29 @@ private :
}
template <typename CT>
- CT static inline normalize(CT g4)
+ CT static inline normalize(CT g4, CT& der)
{
CT const pi = math::pi<CT>();
- if (g4 < 0 && g4 < -pi)//close to -270
+ if (g4 < -1.25*pi)//close to -270
{
+#ifdef BOOST_GEOMETRY_DEBUG_GEOGRAPHIC_CROSS_TRACK
+ std::cout << "g4=" << g4 << ", close to -270" << std::endl;
+#endif
return g4 + 1.5 * pi;
}
- else if (g4 > 0 && g4 > pi)//close to 270
+ else if (g4 > 1.25*pi)//close to 270
{
+#ifdef BOOST_GEOMETRY_DEBUG_GEOGRAPHIC_CROSS_TRACK
+ std::cout << "g4=" << g4 << ", close to 270" << std::endl;
+#endif
return - g4 + 1.5 * pi;
}
- else if (g4 < 0 && g4 > -pi)//close to -90
+ else if (g4 < 0 && g4 > -0.75*pi)//close to -90
{
+#ifdef BOOST_GEOMETRY_DEBUG_GEOGRAPHIC_CROSS_TRACK
+ std::cout << "g4=" << g4 << ", close to -90" << std::endl;
+#endif
+ der = -der;
return -g4 - pi/2;
}
return g4 - pi/2;
@@ -190,8 +200,8 @@ private :
CT lon3, CT lat3, //query point p3
Spheroid const& spheroid)
{
- typedef typename FormulaPolicy::template inverse<CT, true, false, false, true, true>
- inverse_distance_quantities_type;
+ typedef typename FormulaPolicy::template inverse<CT, true, true, false, true, true>
+ inverse_distance_azimuth_quantities_type;
typedef typename FormulaPolicy::template inverse<CT, false, true, false, false, false>
inverse_azimuth_type;
typedef typename FormulaPolicy::template inverse<CT, false, true, true, false, false>
@@ -204,7 +214,7 @@ private :
result_distance_point_segment<CT> result;
// Constants
- CT const f = geometry::formula::flattening<CT>(spheroid);
+ //CT const f = geometry::formula::flattening<CT>(spheroid);
CT const pi = math::pi<CT>();
CT const half_pi = pi / CT(2);
CT const c0 = CT(0);
@@ -227,11 +237,28 @@ private :
//Note: antipodal points on equator does not define segment on equator
//but pass by the pole
CT diff = geometry::math::longitude_distance_signed<geometry::radian>(lon1, lon2);
- if (math::equals(lat1, c0) && math::equals(lat2, c0)
- && !math::equals(math::abs(diff), pi))
+
+ typedef typename formula::elliptic_arc_length<CT> elliptic_arc_length;
+
+ bool meridian_not_crossing_pole =
+ elliptic_arc_length::meridian_not_crossing_pole(lat1, lat2, diff);
+
+ bool meridian_crossing_pole =
+ elliptic_arc_length::meridian_crossing_pole(diff);
+
+ //bool meridian_crossing_pole = math::equals(math::abs(diff), pi);
+ //bool meridian_not_crossing_pole = math::equals(math::abs(diff), c0);
+
+ if (math::equals(lat1, c0) && math::equals(lat2, c0) && !meridian_crossing_pole)
{
#ifdef BOOST_GEOMETRY_DEBUG_GEOGRAPHIC_CROSS_TRACK
std::cout << "Equatorial segment" << std::endl;
+ std::cout << "segment=(" << lon1 * math::r2d<CT>();
+ std::cout << "," << lat1 * math::r2d<CT>();
+ std::cout << "),(" << lon2 * math::r2d<CT>();
+ std::cout << "," << lat2 * math::r2d<CT>();
+ std::cout << ")\np=(" << lon3 * math::r2d<CT>();
+ std::cout << "," << lat3 * math::r2d<CT>() << ")\n";
#endif
if (lon3 <= lon1)
{
@@ -244,7 +271,12 @@ private :
return non_iterative_case(lon3, lat1, lon3, lat3, spheroid);
}
- if (math::equals(math::abs(diff), pi))
+ if ( (meridian_not_crossing_pole || meridian_crossing_pole ) && lat1 > lat2)
+ {
+ std::swap(lat1,lat2);
+ }
+
+ if (meridian_crossing_pole)
{
#ifdef BOOST_GEOMETRY_DEBUG_GEOGRAPHIC_CROSS_TRACK
std::cout << "Meridian segment" << std::endl;
@@ -349,12 +381,9 @@ private :
geometry::cs::spherical_equatorial<geometry::radian>
> point;
- CT bet1 = atan((1 - f) * tan(lon1));
- CT bet2 = atan((1 - f) * tan(lon2));
- CT bet3 = atan((1 - f) * tan(lon3));
- point p1 = point(bet1, lat1);
- point p2 = point(bet2, lat2);
- point p3 = point(bet3, lat3);
+ point p1 = point(lon1, lat1);
+ point p2 = point(lon2, lat2);
+ point p3 = point(lon3, lat3);
geometry::strategy::distance::cross_track<CT> cross_track(earth_radius);
CT s34 = cross_track.apply(p3, p1, p2);
@@ -390,22 +419,28 @@ private :
CT a4 = inverse_azimuth_type::apply(res14.lon2, res14.lat2,
lon2, lat2, spheroid).azimuth;
- res34 = inverse_distance_quantities_type::apply(res14.lon2, res14.lat2,
- lon3, lat3, spheroid);
+ res34 = inverse_distance_azimuth_quantities_type::apply(res14.lon2, res14.lat2,
+ lon3, lat3, spheroid);
g4 = res34.azimuth - a4;
- delta_g4 = normalize(g4);
+
CT M43 = res34.geodesic_scale; // cos(s14/earth_radius) is the spherical limit
CT m34 = res34.reduced_length;
CT der = (M43 / m34) * sin(g4);
+
+ // normalize (g4 - pi/2)
+ delta_g4 = normalize(g4, der);
+
s14 = s14 - delta_g4 / der;
#ifdef BOOST_GEOMETRY_DEBUG_GEOGRAPHIC_CROSS_TRACK
std::cout << "p4=" << res14.lon2 * math::r2d<CT>() <<
"," << res14.lat2 * math::r2d<CT>() << std::endl;
- std::cout << "delta_g4=" << delta_g4 << std::endl;
+ std::cout << "a34=" << res34.azimuth * math::r2d<CT>() << std::endl;
+ std::cout << "a4=" << a4 * math::r2d<CT>() << std::endl;
std::cout << "g4=" << g4 * math::r2d<CT>() << std::endl;
+ std::cout << "delta_g4=" << delta_g4 * math::r2d<CT>() << std::endl;
std::cout << "der=" << der << std::endl;
std::cout << "M43=" << M43 << std::endl;
std::cout << "spherical limit=" << cos(s14/earth_radius) << std::endl;
@@ -448,20 +483,20 @@ private :
std::cout << "s34(sph) =" << s34_sph << std::endl;
std::cout << "s34(geo) ="
- << inverse_distance_quantities_type::apply(get<0>(p4), get<1>(p4), lon3, lat3, spheroid).distance
+ << inverse_distance_azimuth_quantities_type::apply(get<0>(p4), get<1>(p4), lon3, lat3, spheroid).distance
<< ", p4=(" << get<0>(p4) * math::r2d<double>() << ","
<< get<1>(p4) * math::r2d<double>() << ")"
<< std::endl;
- CT s31 = inverse_distance_quantities_type::apply(lon3, lat3, lon1, lat1, spheroid).distance;
- CT s32 = inverse_distance_quantities_type::apply(lon3, lat3, lon2, lat2, spheroid).distance;
+ CT s31 = inverse_distance_azimuth_quantities_type::apply(lon3, lat3, lon1, lat1, spheroid).distance;
+ CT s32 = inverse_distance_azimuth_quantities_type::apply(lon3, lat3, lon2, lat2, spheroid).distance;
CT a4 = inverse_azimuth_type::apply(get<0>(p4), get<1>(p4), lon2, lat2, spheroid).azimuth;
geometry::formula::result_direct<CT> res4 = direct_distance_type::apply(get<0>(p4), get<1>(p4), .04, a4, spheroid);
- CT p4_plus = inverse_distance_quantities_type::apply(res4.lon2, res4.lat2, lon3, lat3, spheroid).distance;
+ CT p4_plus = inverse_distance_azimuth_quantities_type::apply(res4.lon2, res4.lat2, lon3, lat3, spheroid).distance;
geometry::formula::result_direct<CT> res1 = direct_distance_type::apply(lon1, lat1, s14-.04, a12, spheroid);
- CT p4_minus = inverse_distance_quantities_type::apply(res1.lon2, res1.lat2, lon3, lat3, spheroid).distance;
+ CT p4_minus = inverse_distance_azimuth_quantities_type::apply(res1.lon2, res1.lat2, lon3, lat3, spheroid).distance;
std::cout << "s31=" << s31 << "\ns32=" << s32
<< "\np4_plus=" << p4_plus << ", p4=(" << res4.lon2 * math::r2d<double>() << "," << res4.lat2 * math::r2d<double>() << ")"
@@ -606,6 +641,30 @@ public :
}
};
+template
+<
+ typename FormulaPolicy,
+ typename Spheroid,
+ typename CalculationType,
+ typename P,
+ typename PS
+>
+struct result_from_distance<geographic_cross_track<FormulaPolicy, Spheroid, CalculationType>, P, PS>
+{
+private :
+ typedef typename geographic_cross_track
+ <
+ FormulaPolicy, Spheroid, CalculationType
+ >::template return_type<P, PS>::type return_type;
+public :
+ template <typename T>
+ static inline return_type
+ apply(geographic_cross_track<FormulaPolicy, Spheroid, CalculationType> const& , T const& distance)
+ {
+ return distance;
+ }
+};
+
template <typename Point, typename PointOfSegment>
struct default_strategy
diff --git a/boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp b/boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp
new file mode 100644
index 0000000000..4f6b3b45b7
--- /dev/null
+++ b/boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp
@@ -0,0 +1,207 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2017-2018, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
+// 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)
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_DISTANCE_CROSS_TRACK_BOX_BOX_HPP
+#define BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_DISTANCE_CROSS_TRACK_BOX_BOX_HPP
+
+#include <boost/config.hpp>
+#include <boost/concept_check.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_void.hpp>
+
+#include <boost/geometry/core/access.hpp>
+#include <boost/geometry/core/assert.hpp>
+#include <boost/geometry/core/point_type.hpp>
+#include <boost/geometry/core/radian_access.hpp>
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/strategies/distance.hpp>
+#include <boost/geometry/strategies/concepts/distance_concept.hpp>
+#include <boost/geometry/strategies/spherical/distance_cross_track.hpp>
+#include <boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp>
+
+#include <boost/geometry/util/math.hpp>
+#include <boost/geometry/algorithms/detail/assign_box_corners.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace distance
+{
+
+
+/*!
+\brief Strategy functor for distance point to box calculation
+\ingroup strategies
+\details Class which calculates the distance of a point to a box, for
+points and boxes on a sphere or globe
+\tparam CalculationType \tparam_calculation
+\tparam Strategy underlying point-segment distance strategy, defaults
+to cross track
+\qbk{
+[heading See also]
+[link geometry.reference.algorithms.distance.distance_3_with_strategy distance (with strategy)]
+}
+*/
+template
+<
+ typename FormulaPolicy = strategy::andoyer,
+ typename Spheroid = srs::spheroid<double>,
+ typename CalculationType = void
+>
+class geographic_cross_track_box_box
+{
+public:
+ typedef geographic_cross_track<FormulaPolicy, Spheroid, CalculationType> Strategy;
+
+ template <typename Box1, typename Box2>
+ struct return_type
+ : services::return_type<Strategy, typename point_type<Box1>::type, typename point_type<Box2>::type>
+ {};
+
+ inline geographic_cross_track_box_box()
+ {}
+
+ template <typename Box1, typename Box2>
+ inline typename return_type<Box1, Box2>::type
+ apply(Box1 const& box1, Box2 const& box2) const
+ {
+/*
+#if !defined(BOOST_MSVC)
+ BOOST_CONCEPT_ASSERT
+ (
+ (concepts::PointSegmentDistanceStrategy
+ <
+ Strategy,
+ typename point_type<Box1>::type,
+ typename point_type<Box2>::type
+ >)
+ );
+#endif
+*/
+ typedef typename return_type<Box1, Box2>::type return_type;
+ return details::cross_track_box_box_generic
+ <return_type>::apply(box1, box2, Strategy());
+ }
+};
+
+
+
+#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+namespace services
+{
+
+template <typename Strategy, typename Spheroid, typename CalculationType>
+struct tag<geographic_cross_track_box_box<Strategy, Spheroid, CalculationType> >
+{
+ typedef strategy_tag_distance_box_box type;
+};
+
+
+template <typename Strategy, typename Spheroid, typename CalculationType, typename Box1, typename Box2>
+struct return_type<geographic_cross_track_box_box<Strategy, Spheroid, CalculationType>, Box1, Box2>
+ : geographic_cross_track_box_box
+ <
+ Strategy, Spheroid, CalculationType
+ >::template return_type<Box1, Box2>
+{};
+
+template <typename Strategy, typename Spheroid, typename Box1, typename Box2>
+struct return_type<geographic_cross_track_box_box<Strategy, Spheroid>, Box1, Box2>
+ : geographic_cross_track_box_box
+ <
+ Strategy, Spheroid
+ >::template return_type<Box1, Box2>
+{};
+
+template <typename Strategy, typename Box1, typename Box2>
+struct return_type<geographic_cross_track_box_box<Strategy>, Box1, Box2>
+ : geographic_cross_track_box_box
+ <
+ Strategy
+ >::template return_type<Box1, Box2>
+{};
+
+template <typename Strategy, typename Spheroid, typename CalculationType>
+struct comparable_type<geographic_cross_track_box_box<Strategy, Spheroid, CalculationType> >
+{
+ typedef geographic_cross_track_box_box
+ <
+ typename comparable_type<Strategy>::type, Spheroid, CalculationType
+ > type;
+};
+
+
+template <typename Strategy, typename Spheroid, typename CalculationType>
+struct get_comparable<geographic_cross_track_box_box<Strategy, Spheroid, CalculationType> >
+{
+ typedef geographic_cross_track_box_box<Strategy, Spheroid, CalculationType> this_strategy;
+ typedef typename comparable_type<this_strategy>::type comparable_type;
+
+public:
+ static inline comparable_type apply(this_strategy const& /*strategy*/)
+ {
+ return comparable_type();
+ }
+};
+
+
+template <typename Strategy, typename Spheroid, typename CalculationType, typename Box1, typename Box2>
+struct result_from_distance
+ <
+ geographic_cross_track_box_box<Strategy, Spheroid, CalculationType>, Box1, Box2
+ >
+{
+private:
+ typedef geographic_cross_track_box_box<Strategy, Spheroid, CalculationType> this_strategy;
+
+ typedef typename this_strategy::template return_type
+ <
+ Box1, Box2
+ >::type return_type;
+
+public:
+ template <typename T>
+ static inline return_type apply(this_strategy const& strategy,
+ T const& distance)
+ {
+ result_from_distance
+ <
+ Strategy,
+ typename point_type<Box1>::type,
+ typename point_type<Box2>::type
+ >::apply(strategy, distance);
+ }
+};
+
+template <typename Box1, typename Box2>
+struct default_strategy
+ <
+ box_tag, box_tag, Box1, Box2,
+ geographic_tag, geographic_tag
+ >
+{
+ typedef geographic_cross_track_box_box<> type;
+};
+
+
+} // namespace services
+#endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+
+
+}} // namespace strategy::distance
+
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_DISTANCE_CROSS_TRACK_BOX_BOX_HPP
diff --git a/boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp b/boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp
new file mode 100644
index 0000000000..016427428c
--- /dev/null
+++ b/boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp
@@ -0,0 +1,218 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2017-2018, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
+// 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)
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_DISTANCE_CROSS_TRACK_POINT_BOX_HPP
+#define BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_DISTANCE_CROSS_TRACK_POINT_BOX_HPP
+
+#include <boost/config.hpp>
+#include <boost/concept_check.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_void.hpp>
+
+#include <boost/geometry/core/access.hpp>
+#include <boost/geometry/core/assert.hpp>
+#include <boost/geometry/core/point_type.hpp>
+#include <boost/geometry/core/radian_access.hpp>
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/strategies/distance.hpp>
+#include <boost/geometry/strategies/concepts/distance_concept.hpp>
+#include <boost/geometry/strategies/spherical/distance_cross_track.hpp>
+#include <boost/geometry/strategies/geographic/distance_cross_track.hpp>
+#include <boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp>
+
+#include <boost/geometry/util/math.hpp>
+#include <boost/geometry/algorithms/detail/assign_box_corners.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace distance
+{
+
+
+/*!
+\brief Strategy functor for distance point to box calculation
+\ingroup strategies
+\details Class which calculates the distance of a point to a box, for
+points and boxes on a sphere or globe
+\tparam CalculationType \tparam_calculation
+\tparam Strategy underlying point-segment distance strategy, defaults
+to cross track
+\qbk{
+[heading See also]
+[link geometry.reference.algorithms.distance.distance_3_with_strategy distance (with strategy)]
+}
+*/
+template
+<
+ typename FormulaPolicy = strategy::andoyer,
+ typename Spheroid = srs::spheroid<double>,
+ typename CalculationType = void
+>
+class geographic_cross_track_point_box
+{
+public:
+ typedef geographic_cross_track<FormulaPolicy, Spheroid, CalculationType> Strategy;
+
+ template <typename Point, typename Box>
+ struct return_type
+ : services::return_type<Strategy, Point, typename point_type<Box>::type>
+ {};
+
+ inline geographic_cross_track_point_box()
+ {}
+
+ template <typename Point, typename Box>
+ inline typename return_type<Point, Box>::type
+ apply(Point const& point, Box const& box) const
+ {
+/*
+#if !defined(BOOST_MSVC)
+ BOOST_CONCEPT_ASSERT
+ (
+ (concepts::PointSegmentDistanceStrategy
+ <
+ Strategy, Point, typename point_type<Box>::type
+ >)
+ );
+#endif
+*/
+
+ typedef typename return_type<Point, Box>::type return_type;
+
+ return details::cross_track_point_box_generic
+ <return_type>::apply(point, box, Strategy());
+ }
+};
+
+
+
+#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+namespace services
+{
+
+template <typename Strategy, typename Spheroid, typename CalculationType>
+struct tag<geographic_cross_track_point_box<Strategy, Spheroid, CalculationType> >
+{
+ typedef strategy_tag_distance_point_box type;
+};
+
+
+template <typename Strategy, typename Spheroid, typename CalculationType, typename P, typename Box>
+struct return_type<geographic_cross_track_point_box<Strategy, Spheroid, CalculationType>, P, Box>
+ : geographic_cross_track_point_box
+ <
+ Strategy, Spheroid, CalculationType
+ >::template return_type<P, Box>
+{};
+
+template <typename Strategy, typename Spheroid, typename P, typename Box>
+struct return_type<geographic_cross_track_point_box<Strategy, Spheroid>, P, Box>
+ : geographic_cross_track_point_box
+ <
+ Strategy, Spheroid
+ >::template return_type<P, Box>
+{};
+
+template <typename Strategy, typename P, typename Box>
+struct return_type<geographic_cross_track_point_box<Strategy>, P, Box>
+ : geographic_cross_track_point_box
+ <
+ Strategy
+ >::template return_type<P, Box>
+{};
+
+template <typename Strategy, typename Spheroid, typename CalculationType>
+struct comparable_type<geographic_cross_track_point_box<Strategy, Spheroid, CalculationType> >
+{
+ typedef geographic_cross_track_point_box
+ <
+ Strategy, Spheroid, CalculationType
+ > type;
+};
+
+
+template <typename Strategy, typename Spheroid, typename CalculationType>
+struct get_comparable<geographic_cross_track_point_box<Strategy, Spheroid, CalculationType> >
+{
+ typedef geographic_cross_track_point_box<Strategy, Spheroid, CalculationType> this_strategy;
+ typedef typename comparable_type<this_strategy>::type comparable_type;
+
+public:
+ static inline comparable_type apply(this_strategy const&)
+ {
+ return comparable_type();
+ }
+};
+
+
+template <typename Strategy, typename Spheroid, typename CalculationType, typename P, typename Box>
+struct result_from_distance
+ <
+ geographic_cross_track_point_box<Strategy, Spheroid, CalculationType>, P, Box
+ >
+{
+private:
+ typedef geographic_cross_track_point_box<Strategy, Spheroid, CalculationType> this_strategy;
+
+ typedef typename this_strategy::template return_type
+ <
+ P, Box
+ >::type return_type;
+
+public:
+ template <typename T>
+ static inline return_type apply(this_strategy const& strategy,
+ T const& distance)
+ {
+ result_from_distance
+ <
+ Strategy, P, typename point_type<Box>::type
+ >::apply(strategy, distance);
+ }
+};
+
+template <typename Point, typename Box>
+struct default_strategy
+ <
+ point_tag, box_tag, Point, Box,
+ geographic_tag, geographic_tag
+ >
+{
+ typedef geographic_cross_track_point_box<> type;
+};
+
+template <typename Box, typename Point>
+struct default_strategy
+ <
+ box_tag, point_tag, Box, Point,
+ geographic_tag, geographic_tag
+ >
+{
+ typedef typename default_strategy
+ <
+ point_tag, box_tag, Point, Box,
+ geographic_tag, geographic_tag
+ >::type type;
+};
+
+} // namespace services
+#endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+
+
+}} // namespace strategy::distance
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_DISTANCE_CROSS_TRACK_POINT_BOX_HPP
diff --git a/boost/geometry/strategies/geographic/envelope_segment.hpp b/boost/geometry/strategies/geographic/envelope_segment.hpp
index 3641b39428..5bada63f63 100644
--- a/boost/geometry/strategies/geographic/envelope_segment.hpp
+++ b/boost/geometry/strategies/geographic/envelope_segment.hpp
@@ -14,7 +14,9 @@
#include <boost/geometry/algorithms/detail/envelope/segment.hpp>
#include <boost/geometry/algorithms/detail/normalize.hpp>
-#include <boost/geometry/core/srs.hpp>
+
+#include <boost/geometry/srs/spheroid.hpp>
+
#include <boost/geometry/strategies/envelope.hpp>
#include <boost/geometry/strategies/geographic/azimuth.hpp>
#include <boost/geometry/strategies/geographic/parameters.hpp>
diff --git a/boost/geometry/strategies/geographic/intersection.hpp b/boost/geometry/strategies/geographic/intersection.hpp
index e91659d40e..b017097f3e 100644
--- a/boost/geometry/strategies/geographic/intersection.hpp
+++ b/boost/geometry/strategies/geographic/intersection.hpp
@@ -1,5 +1,7 @@
// Boost.Geometry
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
// Copyright (c) 2016-2017, Oracle and/or its affiliates.
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -15,7 +17,6 @@
#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/core/access.hpp>
#include <boost/geometry/core/radian_access.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/core/tags.hpp>
#include <boost/geometry/algorithms/detail/assign_values.hpp>
@@ -33,6 +34,8 @@
#include <boost/geometry/policies/robustness/segment_ratio.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
+
#include <boost/geometry/strategies/geographic/area.hpp>
#include <boost/geometry/strategies/geographic/distance.hpp>
#include <boost/geometry/strategies/geographic/envelope_segment.hpp>
@@ -106,7 +109,6 @@ struct geographic_segments
{
typedef area::geographic
<
- typename point_type<Geometry>::type,
FormulaPolicy,
Order,
Spheroid,
@@ -152,34 +154,8 @@ struct geographic_segments
template <typename CoordinateType, typename SegmentRatio>
struct segment_intersection_info
{
- typedef typename select_most_precise
- <
- CoordinateType, double
- >::type promoted_type;
-
- promoted_type comparable_length_a() const
- {
- return robust_ra.denominator();
- }
-
- promoted_type comparable_length_b() const
- {
- return robust_rb.denominator();
- }
-
- template <typename Point, typename Segment1, typename Segment2>
- void assign_a(Point& point, Segment1 const& a, Segment2 const& b) const
- {
- assign(point, a, b);
- }
- template <typename Point, typename Segment1, typename Segment2>
- void assign_b(Point& point, Segment1 const& a, Segment2 const& b) const
- {
- assign(point, a, b);
- }
-
template <typename Point, typename Segment1, typename Segment2>
- void assign(Point& point, Segment1 const& a, Segment2 const& b) const
+ void calculate(Point& point, Segment1 const& a, Segment2 const& b) const
{
if (ip_flag == ipi_inters)
{
diff --git a/boost/geometry/strategies/geographic/intersection_elliptic.hpp b/boost/geometry/strategies/geographic/intersection_elliptic.hpp
index 76e9940fe3..fce9735255 100644
--- a/boost/geometry/strategies/geographic/intersection_elliptic.hpp
+++ b/boost/geometry/strategies/geographic/intersection_elliptic.hpp
@@ -11,7 +11,7 @@
#define BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_INTERSECTION_ELLIPTIC_HPP
-#include <boost/geometry/core/srs.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
#include <boost/geometry/formulas/geographic.hpp>
diff --git a/boost/geometry/strategies/geographic/side.hpp b/boost/geometry/strategies/geographic/side.hpp
index 9276965a97..1201dc2f6d 100644
--- a/boost/geometry/strategies/geographic/side.hpp
+++ b/boost/geometry/strategies/geographic/side.hpp
@@ -2,8 +2,8 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// This file was modified by Oracle on 2014-2017.
-// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
+// This file was modified by Oracle on 2014-2018.
+// Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -18,10 +18,11 @@
#include <boost/geometry/core/access.hpp>
#include <boost/geometry/core/radian_access.hpp>
#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
#include <boost/geometry/formulas/spherical.hpp>
+#include <boost/geometry/srs/spheroid.hpp>
+
#include <boost/geometry/util/math.hpp>
#include <boost/geometry/util/promote_floating_point.hpp>
#include <boost/geometry/util/select_calculation_type.hpp>
@@ -48,6 +49,11 @@ namespace strategy { namespace side
\tparam FormulaPolicy Geodesic solution formula policy.
\tparam Spheroid Reference model of coordinate system.
\tparam CalculationType \tparam_calculation
+
+\qbk{
+[heading See also]
+[link geometry.reference.srs.srs_spheroid srs::spheroid]
+}
*/
template
<
diff --git a/boost/geometry/strategies/spherical/area.hpp b/boost/geometry/strategies/spherical/area.hpp
index 1ab61b644f..d12ed9498f 100644
--- a/boost/geometry/strategies/spherical/area.hpp
+++ b/boost/geometry/strategies/spherical/area.hpp
@@ -1,6 +1,8 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-// Copyright (c) 2016-2017 Oracle and/or its affiliates.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+// Copyright (c) 2016-2018 Oracle and/or its affiliates.
// Contributed and/or modified by Vissarion Fisikopoulos, on behalf of Oracle
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -13,9 +15,9 @@
#include <boost/geometry/formulas/area_formulas.hpp>
-#include <boost/geometry/core/radius.hpp>
-#include <boost/geometry/core/srs.hpp>
+#include <boost/geometry/srs/sphere.hpp>
#include <boost/geometry/strategies/area.hpp>
+#include <boost/geometry/strategies/spherical/get_radius.hpp>
namespace boost { namespace geometry
@@ -24,11 +26,12 @@ namespace boost { namespace geometry
namespace strategy { namespace area
{
+
/*!
\brief Spherical area calculation
\ingroup strategies
\details Calculates area on the surface of a sphere using the trapezoidal rule
-\tparam PointOfSegment \tparam_segment_point
+\tparam RadiusTypeOrSphere \tparam_radius_or_sphere
\tparam CalculationType \tparam_calculation
\qbk{
@@ -38,7 +41,7 @@ namespace strategy { namespace area
*/
template
<
- typename PointOfSegment,
+ typename RadiusTypeOrSphere = double,
typename CalculationType = void
>
class spherical
@@ -46,34 +49,35 @@ class spherical
// Enables special handling of long segments
static const bool LongSegment = false;
-typedef typename boost::mpl::if_c
- <
- boost::is_void<CalculationType>::type::value,
- typename select_most_precise
+public:
+ template <typename Geometry>
+ struct result_type
+ : strategy::area::detail::result_type
<
- typename coordinate_type<PointOfSegment>::type,
- double
- >::type,
- CalculationType
- >::type CT;
-
-protected :
- struct excess_sum
+ Geometry,
+ CalculationType
+ >
+ {};
+
+ template <typename Geometry>
+ class state
{
- CT m_sum;
+ friend class spherical;
- // Keep track if encircles some pole
- size_t m_crosses_prime_meridian;
+ typedef typename result_type<Geometry>::type return_type;
- inline excess_sum()
+ public:
+ inline state()
: m_sum(0)
, m_crosses_prime_meridian(0)
{}
- template <typename SphereType>
- inline CT area(SphereType sphere) const
+
+ private:
+ template <typename RadiusType>
+ inline return_type area(RadiusType const& r) const
{
- CT result;
- CT radius = geometry::get_radius<0>(sphere);
+ return_type result;
+ return_type radius = r;
// Encircles pole
if(m_crosses_prime_meridian % 2 == 1)
@@ -81,12 +85,12 @@ protected :
size_t times_crosses_prime_meridian
= 1 + (m_crosses_prime_meridian / 2);
- result = CT(2)
- * geometry::math::pi<CT>()
+ result = return_type(2)
+ * geometry::math::pi<return_type>()
* times_crosses_prime_meridian
- geometry::math::abs(m_sum);
- if(geometry::math::sign<CT>(m_sum) == 1)
+ if(geometry::math::sign<return_type>(m_sum) == 1)
{
result = - result;
}
@@ -99,54 +103,62 @@ protected :
return result;
}
+
+ return_type m_sum;
+
+ // Keep track if encircles some pole
+ size_t m_crosses_prime_meridian;
};
public :
- typedef CT return_type;
- typedef PointOfSegment segment_point_type;
- typedef excess_sum state_type;
- typedef geometry::srs::sphere<CT> sphere_type;
// For backward compatibility reasons the radius is set to 1
inline spherical()
- : m_sphere(1.0)
- {}
-
- template <typename T>
- explicit inline spherical(geometry::srs::sphere<T> const& sphere)
- : m_sphere(geometry::get_radius<0>(sphere))
+ : m_radius(1.0)
{}
- explicit inline spherical(CT const& radius)
- : m_sphere(radius)
+ template <typename RadiusOrSphere>
+ explicit inline spherical(RadiusOrSphere const& radius_or_sphere)
+ : m_radius(strategy_detail::get_radius
+ <
+ RadiusOrSphere
+ >::apply(radius_or_sphere))
{}
+ template <typename PointOfSegment, typename Geometry>
inline void apply(PointOfSegment const& p1,
PointOfSegment const& p2,
- excess_sum& state) const
+ state<Geometry>& st) const
{
if (! geometry::math::equals(get<0>(p1), get<0>(p2)))
{
- typedef geometry::formula::area_formulas<CT> area_formulas;
+ typedef geometry::formula::area_formulas
+ <
+ typename result_type<Geometry>::type
+ > area_formulas;
- state.m_sum += area_formulas::template spherical<LongSegment>(p1, p2);
+ st.m_sum += area_formulas::template spherical<LongSegment>(p1, p2);
// Keep track whenever a segment crosses the prime meridian
if (area_formulas::crosses_prime_meridian(p1, p2))
{
- state.m_crosses_prime_meridian++;
+ st.m_crosses_prime_meridian++;
}
}
}
- inline return_type result(excess_sum const& state) const
+ template <typename Geometry>
+ inline typename result_type<Geometry>::type
+ result(state<Geometry> const& st) const
{
- return state.area(m_sphere);
+ return st.area(m_radius);
}
private :
- /// srs Sphere
- sphere_type m_sphere;
+ typename strategy_detail::get_radius
+ <
+ RadiusTypeOrSphere
+ >::type m_radius;
};
#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
@@ -155,17 +167,17 @@ namespace services
{
-template <typename Point>
-struct default_strategy<spherical_equatorial_tag, Point>
+template <>
+struct default_strategy<spherical_equatorial_tag>
{
- typedef strategy::area::spherical<Point> type;
+ typedef strategy::area::spherical<> type;
};
// Note: spherical polar coordinate system requires "get_as_radian_equatorial"
-template <typename Point>
-struct default_strategy<spherical_polar_tag, Point>
+template <>
+struct default_strategy<spherical_polar_tag>
{
- typedef strategy::area::spherical<Point> type;
+ typedef strategy::area::spherical<> type;
};
} // namespace services
diff --git a/boost/geometry/strategies/spherical/densify.hpp b/boost/geometry/strategies/spherical/densify.hpp
new file mode 100644
index 0000000000..97f4605a98
--- /dev/null
+++ b/boost/geometry/strategies/spherical/densify.hpp
@@ -0,0 +1,189 @@
+// Boost.Geometry
+
+// Copyright (c) 2017-2018, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_SPHERICAL_DENSIFY_HPP
+#define BOOST_GEOMETRY_STRATEGIES_SPHERICAL_DENSIFY_HPP
+
+
+#include <boost/geometry/algorithms/detail/convert_point_to_point.hpp>
+#include <boost/geometry/algorithms/detail/signed_size_type.hpp>
+#include <boost/geometry/arithmetic/arithmetic.hpp>
+#include <boost/geometry/arithmetic/cross_product.hpp>
+#include <boost/geometry/arithmetic/dot_product.hpp>
+#include <boost/geometry/arithmetic/normalize.hpp>
+#include <boost/geometry/core/assert.hpp>
+#include <boost/geometry/core/coordinate_dimension.hpp>
+#include <boost/geometry/core/coordinate_type.hpp>
+#include <boost/geometry/core/radian_access.hpp>
+#include <boost/geometry/formulas/spherical.hpp>
+#include <boost/geometry/srs/sphere.hpp>
+#include <boost/geometry/strategies/densify.hpp>
+#include <boost/geometry/strategies/spherical/get_radius.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/geometry/util/select_most_precise.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace densify
+{
+
+
+/*!
+\brief Densification of spherical segment.
+\ingroup strategies
+\tparam RadiusTypeOrSphere \tparam_radius_or_sphere
+\tparam CalculationType \tparam_calculation
+
+\qbk{
+[heading See also]
+[link geometry.reference.algorithms.densify.densify_4_with_strategy densify (with strategy)]
+}
+ */
+template
+<
+ typename RadiusTypeOrSphere = double,
+ typename CalculationType = void
+>
+class spherical
+{
+public:
+ // For consistency with area strategy the radius is set to 1
+ inline spherical()
+ : m_radius(1.0)
+ {}
+
+ template <typename RadiusOrSphere>
+ explicit inline spherical(RadiusOrSphere const& radius_or_sphere)
+ : m_radius(strategy_detail::get_radius
+ <
+ RadiusOrSphere
+ >::apply(radius_or_sphere))
+ {}
+
+ template <typename Point, typename AssignPolicy, typename T>
+ inline void apply(Point const& p0, Point const& p1, AssignPolicy & policy, T const& length_threshold) const
+ {
+ typedef typename AssignPolicy::point_type out_point_t;
+ typedef typename select_most_precise
+ <
+ typename coordinate_type<Point>::type,
+ typename coordinate_type<out_point_t>::type,
+ CalculationType
+ >::type calc_t;
+
+ calc_t const c0 = 0;
+ calc_t const c1 = 1;
+ calc_t const pi = math::pi<calc_t>();
+
+ typedef model::point<calc_t, 3, cs::cartesian> point3d_t;
+ point3d_t const xyz0 = formula::sph_to_cart3d<point3d_t>(p0);
+ point3d_t const xyz1 = formula::sph_to_cart3d<point3d_t>(p1);
+ calc_t const dot01 = geometry::dot_product(xyz0, xyz1);
+ calc_t const angle01 = acos(dot01);
+
+ BOOST_GEOMETRY_ASSERT(length_threshold > T(0));
+
+ signed_size_type n = signed_size_type(angle01 * m_radius / length_threshold);
+ if (n <= 0)
+ return;
+
+ point3d_t axis;
+ if (! math::equals(angle01, pi))
+ {
+ axis = geometry::cross_product(xyz0, xyz1);
+ geometry::detail::vec_normalize(axis);
+ }
+ else // antipodal
+ {
+ calc_t const half_pi = math::half_pi<calc_t>();
+ calc_t const lat = geometry::get_as_radian<1>(p0);
+
+ if (math::equals(lat, half_pi))
+ {
+ // pointing east, segment lies on prime meridian, going south
+ axis = point3d_t(c0, c1, c0);
+ }
+ else if (math::equals(lat, -half_pi))
+ {
+ // pointing west, segment lies on prime meridian, going north
+ axis = point3d_t(c0, -c1, c0);
+ }
+ else
+ {
+ // lon rotated west by pi/2 at equator
+ calc_t const lon = geometry::get_as_radian<0>(p0);
+ axis = point3d_t(sin(lon), -cos(lon), c0);
+ }
+ }
+
+ calc_t step = angle01 / (n + 1);
+
+ calc_t a = step;
+ for (signed_size_type i = 0 ; i < n ; ++i, a += step)
+ {
+ // Axis-Angle rotation
+ // see: https://en.wikipedia.org/wiki/Axis-angle_representation
+ calc_t const cos_a = cos(a);
+ calc_t const sin_a = sin(a);
+ // cos_a * v
+ point3d_t s1 = xyz0;
+ geometry::multiply_value(s1, cos_a);
+ // sin_a * (n x v)
+ point3d_t s2 = geometry::cross_product(axis, xyz0);
+ geometry::multiply_value(s2, sin_a);
+ // (1 - cos_a)(n.v) * n
+ point3d_t s3 = axis;
+ geometry::multiply_value(s3, (c1 - cos_a) * geometry::dot_product(axis, xyz0));
+ // v_rot = cos_a * v + sin_a * (n x v) + (1 - cos_a)(n.v) * e
+ point3d_t v_rot = s1;
+ geometry::add_point(v_rot, s2);
+ geometry::add_point(v_rot, s3);
+
+ out_point_t p = formula::cart3d_to_sph<out_point_t>(v_rot);
+ geometry::detail::conversion::point_to_point
+ <
+ Point, out_point_t,
+ 2, dimension<out_point_t>::value
+ >::apply(p0, p);
+
+ policy.apply(p);
+ }
+ }
+
+private:
+ typename strategy_detail::get_radius
+ <
+ RadiusTypeOrSphere
+ >::type m_radius;
+};
+
+
+#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+namespace services
+{
+
+template <>
+struct default_strategy<spherical_equatorial_tag>
+{
+ typedef strategy::densify::spherical<> type;
+};
+
+
+} // namespace services
+#endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+
+
+}} // namespace strategy::densify
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_ALGORITHMS_DENSIFY_HPP
diff --git a/boost/geometry/strategies/spherical/distance_cross_track.hpp b/boost/geometry/strategies/spherical/distance_cross_track.hpp
index 82a2fb3d6f..db029dff90 100644
--- a/boost/geometry/strategies/spherical/distance_cross_track.hpp
+++ b/boost/geometry/strategies/spherical/distance_cross_track.hpp
@@ -352,6 +352,11 @@ public :
: m_strategy(s)
{}
+ //TODO: apply a more general strategy getter
+ inline Strategy get_distance_strategy() const
+ {
+ return m_strategy;
+ }
// It might be useful in the future
// to overload constructor with strategy info.
@@ -526,6 +531,11 @@ public :
: m_strategy(s)
{}
+ //TODO: apply a more general strategy getter
+ inline Strategy get_distance_strategy() const
+ {
+ return m_strategy;
+ }
// It might be useful in the future
// to overload constructor with strategy info.
diff --git a/boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp b/boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp
new file mode 100644
index 0000000000..efa7a728a6
--- /dev/null
+++ b/boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp
@@ -0,0 +1,440 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2016-2018 Oracle and/or its affiliates.
+// Contributed and/or modified by Vissarion Fisikopoulos, on behalf of Oracle
+// 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)
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_SPHERICAL_DISTANCE_CROSS_TRACK_BOX_BOX_HPP
+#define BOOST_GEOMETRY_STRATEGIES_SPHERICAL_DISTANCE_CROSS_TRACK_BOX_BOX_HPP
+
+#include <boost/config.hpp>
+#include <boost/concept_check.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_void.hpp>
+
+#include <boost/geometry/core/access.hpp>
+#include <boost/geometry/core/assert.hpp>
+#include <boost/geometry/core/point_type.hpp>
+#include <boost/geometry/core/radian_access.hpp>
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/strategies/distance.hpp>
+#include <boost/geometry/strategies/concepts/distance_concept.hpp>
+#include <boost/geometry/strategies/spherical/distance_cross_track.hpp>
+
+#include <boost/geometry/util/math.hpp>
+#include <boost/geometry/algorithms/detail/assign_box_corners.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace distance
+{
+
+namespace details
+{
+
+template <typename ReturnType>
+class cross_track_box_box_generic
+{
+public :
+
+ template <typename Point, typename Strategy>
+ ReturnType static inline diagonal_case(Point topA,
+ Point topB,
+ Point bottomA,
+ Point bottomB,
+ bool north_shortest,
+ bool non_overlap,
+ Strategy ps_strategy)
+ {
+ if (north_shortest && non_overlap)
+ {
+ return ps_strategy.get_distance_strategy().apply(topA, bottomB);
+ }
+ if (north_shortest && !non_overlap)
+ {
+ return ps_strategy.apply(topA, topB, bottomB);
+ }
+ if (!north_shortest && non_overlap)
+ {
+ return ps_strategy.get_distance_strategy().apply(bottomA, topB);
+ }
+ return ps_strategy.apply(bottomA, topB, bottomB);
+ }
+
+
+ template
+ <
+ typename Box1,
+ typename Box2,
+ typename Strategy
+ >
+ ReturnType static inline apply (Box1 const& box1,
+ Box2 const& box2,
+ Strategy ps_strategy)
+ {
+
+ // this method assumes that the coordinates of the point and
+ // the box are normalized
+
+ typedef typename point_type<Box1>::type box_point_type1;
+ typedef typename point_type<Box2>::type box_point_type2;
+
+ box_point_type1 bottom_left1, bottom_right1, top_left1, top_right1;
+ geometry::detail::assign_box_corners(box1,
+ bottom_left1, bottom_right1,
+ top_left1, top_right1);
+
+ box_point_type2 bottom_left2, bottom_right2, top_left2, top_right2;
+ geometry::detail::assign_box_corners(box2,
+ bottom_left2, bottom_right2,
+ top_left2, top_right2);
+
+ ReturnType lon_min1 = geometry::get_as_radian<0>(bottom_left1);
+ ReturnType const lat_min1 = geometry::get_as_radian<1>(bottom_left1);
+ ReturnType lon_max1 = geometry::get_as_radian<0>(top_right1);
+ ReturnType const lat_max1 = geometry::get_as_radian<1>(top_right1);
+
+ ReturnType lon_min2 = geometry::get_as_radian<0>(bottom_left2);
+ ReturnType const lat_min2 = geometry::get_as_radian<1>(bottom_left2);
+ ReturnType lon_max2 = geometry::get_as_radian<0>(top_right2);
+ ReturnType const lat_max2 = geometry::get_as_radian<1>(top_right2);
+
+ ReturnType const two_pi = math::two_pi<ReturnType>();
+
+ // Test which sides of the boxes are closer and if boxes cross
+ // antimeridian
+ bool right_wrap;
+
+ if (lon_min2 > 0 && lon_max2 < 0) // box2 crosses antimeridian
+ {
+#ifdef BOOST_GEOMETRY_DEBUG_CROSS_TRACK_BOX_BOX
+ std::cout << "(box2 crosses antimeridian)";
+#endif
+ right_wrap = lon_min2 - lon_max1 < lon_min1 - lon_max2;
+ lon_max2 += two_pi;
+ if (lon_min1 > 0 && lon_max1 < 0) // both boxes crosses antimeridian
+ {
+ lon_max1 += two_pi;
+ }
+ }
+ else if (lon_min1 > 0 && lon_max1 < 0) // only box1 crosses antimeridian
+ {
+#ifdef BOOST_GEOMETRY_DEBUG_CROSS_TRACK_BOX_BOX
+ std::cout << "(box1 crosses antimeridian)";
+#endif
+ return apply(box2, box1, ps_strategy);
+ }
+ else
+ {
+ right_wrap = lon_max1 <= lon_min2
+ ? lon_min2 - lon_max1 < two_pi - (lon_max2 - lon_min1)
+ : lon_min1 - lon_max2 > two_pi - (lon_max1 - lon_min2);
+
+ }
+
+ // Check1: if box2 crosses the band defined by the
+ // minimum and maximum longitude of box1; if yes, determine
+ // if the box2 is above, below or intersects/is inside box1 and compute
+ // the distance (easy in this case)
+
+ bool lon_min12 = lon_min1 <= lon_min2;
+ bool right = lon_max1 <= lon_min2;
+ bool left = lon_min1 >= lon_max2;
+ bool lon_max12 = lon_max1 <= lon_max2;
+
+ if ((lon_min12 && !right)
+ || (!left && !lon_max12)
+ || (!lon_min12 && lon_max12))
+ {
+#ifdef BOOST_GEOMETRY_DEBUG_CROSS_TRACK_BOX_BOX
+ std::cout << "(up-down)\n";
+#endif
+ if (lat_min1 > lat_max2)
+ {
+ return geometry::strategy::distance::services::result_from_distance
+ <
+ Strategy, box_point_type1, box_point_type2
+ >::apply(ps_strategy, ps_strategy.get_distance_strategy()
+ .meridian(lat_min1, lat_max2));
+ }
+ else if (lat_max1 < lat_min2)
+ {
+ return geometry::strategy::distance::services::result_from_distance
+ <
+ Strategy, box_point_type1, box_point_type2
+ >::apply(ps_strategy, ps_strategy.get_distance_strategy().
+ meridian(lat_min2, lat_max1));
+ }
+ else
+ {
+ //BOOST_GEOMETRY_ASSERT(plat >= lat_min && plat <= lat_max);
+ return ReturnType(0);
+ }
+ }
+
+ // Check2: if box2 is right/left of box1
+ // the max lat of box2 should be less than the max lat of box1
+ bool bottom_max;
+
+ ReturnType top_common = (std::min)(lat_max1, lat_max2);
+ ReturnType bottom_common = (std::max)(lat_min1, lat_min2);
+
+ // true if the closest points are on northern hemisphere
+ bool north_shortest = top_common + bottom_common > 0;
+ // true if box bands do not overlap
+ bool non_overlap = top_common < bottom_common;
+
+ if (north_shortest)
+ {
+ bottom_max = lat_max1 >= lat_max2;
+ }
+ else
+ {
+ bottom_max = lat_min1 <= lat_min2;
+ }
+
+#ifdef BOOST_GEOMETRY_DEBUG_CROSS_TRACK_BOX_BOX
+ std::cout << "(diagonal)";
+#endif
+ if (bottom_max && !right_wrap)
+ {
+#ifdef BOOST_GEOMETRY_DEBUG_CROSS_TRACK_BOX_BOX
+ std::cout << "(bottom left)";
+#endif
+ return diagonal_case(top_right2, top_left1,
+ bottom_right2, bottom_left1,
+ north_shortest, non_overlap,
+ ps_strategy);
+ }
+ if (bottom_max && right_wrap)
+ {
+#ifdef BOOST_GEOMETRY_DEBUG_CROSS_TRACK_BOX_BOX
+ std::cout << "(bottom right)";
+#endif
+ return diagonal_case(top_left2, top_right1,
+ bottom_left2, bottom_right1,
+ north_shortest, non_overlap,
+ ps_strategy);
+ }
+ if (!bottom_max && !right_wrap)
+ {
+#ifdef BOOST_GEOMETRY_DEBUG_CROSS_TRACK_BOX_BOX
+ std::cout << "(top left)";
+#endif
+ return diagonal_case(top_left1, top_right2,
+ bottom_left1, bottom_right2,
+ north_shortest, non_overlap,
+ ps_strategy);
+ }
+ if (!bottom_max && right_wrap)
+ {
+#ifdef BOOST_GEOMETRY_DEBUG_CROSS_TRACK_BOX_BOX
+ std::cout << "(top right)";
+#endif
+ return diagonal_case(top_right1, top_left2,
+ bottom_right1, bottom_left2,
+ north_shortest, non_overlap,
+ ps_strategy);
+ }
+ return ReturnType(0);
+ }
+};
+
+} //namespace details
+
+/*!
+\brief Strategy functor for distance box to box calculation
+\ingroup strategies
+\details Class which calculates the distance of a box to a box, for
+boxes on a sphere or globe
+\tparam CalculationType \tparam_calculation
+\tparam Strategy underlying point-segment distance strategy, defaults
+to cross track
+\qbk{
+[heading See also]
+[link geometry.reference.algorithms.distance.distance_3_with_strategy distance (with strategy)]
+}
+*/
+template
+<
+ typename CalculationType = void,
+ typename Strategy = cross_track<CalculationType>
+>
+class cross_track_box_box
+{
+public:
+ template <typename Box1, typename Box2>
+ struct return_type
+ : services::return_type<Strategy,
+ typename point_type<Box1>::type,
+ typename point_type<Box2>::type>
+ {};
+
+ typedef typename Strategy::radius_type radius_type;
+
+ inline cross_track_box_box()
+ {}
+
+ explicit inline cross_track_box_box(typename Strategy::radius_type const& r)
+ : m_ps_strategy(r)
+ {}
+
+ inline cross_track_box_box(Strategy const& s)
+ : m_ps_strategy(s)
+ {}
+
+
+ // It might be useful in the future
+ // to overload constructor with strategy info.
+ // crosstrack(...) {}
+
+ template <typename Box1, typename Box2>
+ inline typename return_type<Box1, Box2>::type
+ apply(Box1 const& box1, Box2 const& box2) const
+ {
+#if !defined(BOOST_MSVC)
+ BOOST_CONCEPT_ASSERT
+ (
+ (concepts::PointSegmentDistanceStrategy
+ <
+ Strategy,
+ typename point_type<Box1>::type,
+ typename point_type<Box2>::type
+ >)
+ );
+#endif
+ typedef typename return_type<Box1, Box2>::type return_type;
+ return details::cross_track_box_box_generic
+ <return_type>::apply(box1, box2, m_ps_strategy);
+ }
+
+ inline typename Strategy::radius_type radius() const
+ {
+ return m_ps_strategy.radius();
+ }
+
+private:
+ Strategy m_ps_strategy;
+};
+
+
+
+#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+namespace services
+{
+
+template <typename CalculationType, typename Strategy>
+struct tag<cross_track_box_box<CalculationType, Strategy> >
+{
+ typedef strategy_tag_distance_box_box type;
+};
+
+
+template <typename CalculationType, typename Strategy, typename Box1, typename Box2>
+struct return_type<cross_track_box_box<CalculationType, Strategy>, Box1, Box2>
+ : cross_track_box_box
+ <
+ CalculationType, Strategy
+ >::template return_type<Box1, Box2>
+{};
+
+
+template <typename CalculationType, typename Strategy>
+struct comparable_type<cross_track_box_box<CalculationType, Strategy> >
+{
+ typedef cross_track_box_box
+ <
+ CalculationType, typename comparable_type<Strategy>::type
+ > type;
+};
+
+
+template <typename CalculationType, typename Strategy>
+struct get_comparable<cross_track_box_box<CalculationType, Strategy> >
+{
+ typedef cross_track_box_box<CalculationType, Strategy> this_strategy;
+ typedef typename comparable_type<this_strategy>::type comparable_type;
+
+public:
+ static inline comparable_type apply(this_strategy const& strategy)
+ {
+ return comparable_type(strategy.radius());
+ }
+};
+
+
+template <typename CalculationType, typename Strategy, typename Box1, typename Box2>
+struct result_from_distance
+ <
+ cross_track_box_box<CalculationType, Strategy>, Box1, Box2
+ >
+{
+private:
+ typedef cross_track_box_box<CalculationType, Strategy> this_strategy;
+
+ typedef typename this_strategy::template return_type
+ <
+ Box1, Box2
+ >::type return_type;
+
+public:
+ template <typename T>
+ static inline return_type apply(this_strategy const& strategy,
+ T const& distance)
+ {
+ Strategy s(strategy.radius());
+
+ return result_from_distance
+ <
+ Strategy,
+ typename point_type<Box1>::type,
+ typename point_type<Box2>::type
+ >::apply(s, distance);
+ }
+};
+
+
+// define cross_track_box_box<default_point_segment_strategy> as
+// default box-box strategy for the spherical equatorial coordinate system
+template <typename Box1, typename Box2, typename Strategy>
+struct default_strategy
+ <
+ box_tag, box_tag, Box1, Box2,
+ spherical_equatorial_tag, spherical_equatorial_tag,
+ Strategy
+ >
+{
+ typedef cross_track_box_box
+ <
+ void,
+ typename boost::mpl::if_
+ <
+ boost::is_void<Strategy>,
+ typename default_strategy
+ <
+ point_tag, segment_tag,
+ typename point_type<Box1>::type, typename point_type<Box2>::type,
+ spherical_equatorial_tag, spherical_equatorial_tag
+ >::type,
+ Strategy
+ >::type
+ > type;
+};
+
+} // namespace services
+#endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
+
+
+}} // namespace strategy::distance
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_STRATEGIES_SPHERICAL_DISTANCE_CROSS_TRACK_BOX_BOX_HPP
diff --git a/boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp b/boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp
index ee805c36d1..9c8e7f1a3e 100644
--- a/boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp
+++ b/boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp
@@ -4,11 +4,12 @@
// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
-// This file was modified by Oracle on 2014, 2015.
-// Modifications copyright (c) 2014-2015, Oracle and/or its affiliates.
+// This file was modified by Oracle on 2014-2017.
+// Modifications copyright (c) 2014-2017, Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+// 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
@@ -42,92 +43,46 @@ namespace boost { namespace geometry
namespace strategy { namespace distance
{
-
-/*!
-\brief Strategy functor for distance point to box calculation
-\ingroup strategies
-\details Class which calculates the distance of a point to a box, for
-points and boxes on a sphere or globe
-\tparam CalculationType \tparam_calculation
-\tparam Strategy underlying point-segment distance strategy, defaults
-to cross track
-
-\qbk{
-[heading See also]
-[link geometry.reference.algorithms.distance.distance_3_with_strategy distance (with strategy)]
-}
-
-*/
-template
-<
- typename CalculationType = void,
- typename Strategy = cross_track<CalculationType>
->
-class cross_track_point_box
+namespace details
{
-public:
- template <typename Point, typename Box>
- struct return_type
- : services::return_type<Strategy, Point, typename point_type<Box>::type>
- {};
-
- typedef typename Strategy::radius_type radius_type;
-
- inline cross_track_point_box()
- {}
-
- explicit inline cross_track_point_box(typename Strategy::radius_type const& r)
- : m_ps_strategy(r)
- {}
-
- inline cross_track_point_box(Strategy const& s)
- : m_ps_strategy(s)
- {}
+template <typename ReturnType>
+class cross_track_point_box_generic
+{
+public :
- // It might be useful in the future
- // to overload constructor with strategy info.
- // crosstrack(...) {}
-
- template <typename Point, typename Box>
- inline typename return_type<Point, Box>::type
- apply(Point const& point, Box const& box) const
+ template
+ <
+ typename Point,
+ typename Box,
+ typename Strategy
+ >
+ ReturnType static inline apply (Point const& point,
+ Box const& box,
+ Strategy ps_strategy)
{
-#if !defined(BOOST_MSVC)
- BOOST_CONCEPT_ASSERT
- (
- (concepts::PointSegmentDistanceStrategy
- <
- Strategy, Point, typename point_type<Box>::type
- >)
- );
-#endif
-
// this method assumes that the coordinates of the point and
// the box are normalized
- typedef typename return_type<Point, Box>::type return_type;
typedef typename point_type<Box>::type box_point_type;
- // TODO: This strategy as well as other cross-track strategies
- // and therefore e.g. spherical within(Point, Box) may not work
- // properly for a Box degenerated to a Segment or Point
-
box_point_type bottom_left, bottom_right, top_left, top_right;
geometry::detail::assign_box_corners(box,
bottom_left, bottom_right,
top_left, top_right);
- return_type const plon = geometry::get_as_radian<0>(point);
- return_type const plat = geometry::get_as_radian<1>(point);
+ ReturnType const plon = geometry::get_as_radian<0>(point);
+ ReturnType const plat = geometry::get_as_radian<1>(point);
- return_type const lon_min = geometry::get_as_radian<0>(bottom_left);
- return_type const lat_min = geometry::get_as_radian<1>(bottom_left);
- return_type const lon_max = geometry::get_as_radian<0>(top_right);
- return_type const lat_max = geometry::get_as_radian<1>(top_right);
+ ReturnType const lon_min = geometry::get_as_radian<0>(bottom_left);
+ ReturnType const lat_min = geometry::get_as_radian<1>(bottom_left);
+ ReturnType const lon_max = geometry::get_as_radian<0>(top_right);
+ ReturnType const lat_max = geometry::get_as_radian<1>(top_right);
- return_type const pi = math::pi<return_type>();
- return_type const two_pi = math::two_pi<return_type>();
+ ReturnType const pi = math::pi<ReturnType>();
+ ReturnType const two_pi = math::two_pi<ReturnType>();
+
+ typedef typename point_type<Box>::type box_point_type;
// First check if the point is within the band defined by the
// minimum and maximum longitude of the box; if yes, determine
@@ -142,22 +97,22 @@ public:
{
if (plat > lat_max)
{
- return services::result_from_distance
- <
- Strategy, Point, box_point_type
- >::apply(m_ps_strategy, radius() * (plat - lat_max));
+ return geometry::strategy::distance::services::result_from_distance
+ <
+ Strategy, Point, box_point_type
+ >::apply(ps_strategy, ps_strategy.get_distance_strategy().meridian(plat, lat_max));
}
else if (plat < lat_min)
{
- return services::result_from_distance
- <
- Strategy, Point, box_point_type
- >::apply(m_ps_strategy, radius() * (lat_min - plat));
+ return geometry::strategy::distance::services::result_from_distance
+ <
+ Strategy, Point, box_point_type
+ >::apply(ps_strategy, ps_strategy.get_distance_strategy().meridian(lat_min, plat));
}
else
{
BOOST_GEOMETRY_ASSERT(plat >= lat_min && plat <= lat_max);
- return return_type(0);
+ return ReturnType(0);
}
}
@@ -169,14 +124,14 @@ public:
// (1) is midway between the meridians of the left and right
// meridians of the box, and
// (2) does not intersect the box
- return_type const two = 2.0;
+ ReturnType const two = 2.0;
bool use_left_segment;
if (lon_max > pi)
{
// the box crosses the antimeridian
// midway longitude = lon_min - (lon_min + (lon_max - 2 * pi)) / 2;
- return_type const lon_midway = (lon_min - lon_max) / two + pi;
+ ReturnType const lon_midway = (lon_min - lon_max) / two + pi;
BOOST_GEOMETRY_ASSERT(lon_midway >= -pi && lon_midway <= pi);
use_left_segment = plon > lon_midway;
@@ -185,8 +140,8 @@ public:
{
// the box does not cross the antimeridian
- return_type const lon_sum = lon_min + lon_max;
- if (math::equals(lon_sum, return_type(0)))
+ ReturnType const lon_sum = lon_min + lon_max;
+ if (math::equals(lon_sum, ReturnType(0)))
{
// special case: the box is symmetric with respect to
// the prime meridian; the midway meridian is the antimeridian
@@ -196,7 +151,7 @@ public:
else
{
// midway long. = lon_min - (2 * pi - (lon_max - lon_min)) / 2;
- return_type lon_midway = (lon_min + lon_max) / two - pi;
+ ReturnType lon_midway = (lon_min + lon_max) / two - pi;
// normalize the midway longitude
if (lon_midway > pi)
@@ -212,14 +167,79 @@ public:
// if lon_sum is positive the midway meridian is left
// of the box, or right of the box otherwise
use_left_segment = lon_sum > 0
- ? (plon < lon_min && plon >= lon_midway)
- : (plon <= lon_max || plon > lon_midway);
+ ? (plon < lon_min && plon >= lon_midway)
+ : (plon <= lon_max || plon > lon_midway);
}
}
return use_left_segment
- ? m_ps_strategy.apply(point, bottom_left, top_left)
- : m_ps_strategy.apply(point, bottom_right, top_right);
+ ? ps_strategy.apply(point, bottom_left, top_left)
+ : ps_strategy.apply(point, bottom_right, top_right);
+ }
+};
+
+} //namespace details
+
+/*!
+\brief Strategy functor for distance point to box calculation
+\ingroup strategies
+\details Class which calculates the distance of a point to a box, for
+points and boxes on a sphere or globe
+\tparam CalculationType \tparam_calculation
+\tparam Strategy underlying point-segment distance strategy, defaults
+to cross track
+\qbk{
+[heading See also]
+[link geometry.reference.algorithms.distance.distance_3_with_strategy distance (with strategy)]
+}
+*/
+template
+<
+ typename CalculationType = void,
+ typename Strategy = cross_track<CalculationType>
+>
+class cross_track_point_box
+{
+public:
+ template <typename Point, typename Box>
+ struct return_type
+ : services::return_type<Strategy, Point, typename point_type<Box>::type>
+ {};
+
+ typedef typename Strategy::radius_type radius_type;
+
+ inline cross_track_point_box()
+ {}
+
+ explicit inline cross_track_point_box(typename Strategy::radius_type const& r)
+ : m_ps_strategy(r)
+ {}
+
+ inline cross_track_point_box(Strategy const& s)
+ : m_ps_strategy(s)
+ {}
+
+
+ // It might be useful in the future
+ // to overload constructor with strategy info.
+ // crosstrack(...) {}
+
+ template <typename Point, typename Box>
+ inline typename return_type<Point, Box>::type
+ apply(Point const& point, Box const& box) const
+ {
+#if !defined(BOOST_MSVC)
+ BOOST_CONCEPT_ASSERT
+ (
+ (concepts::PointSegmentDistanceStrategy
+ <
+ Strategy, Point, typename point_type<Box>::type
+ >)
+ );
+#endif
+ typedef typename return_type<Point, Box>::type return_type;
+ return details::cross_track_point_box_generic
+ <return_type>::apply(point, box, m_ps_strategy);
}
inline typename Strategy::radius_type radius() const
diff --git a/boost/geometry/strategies/spherical/distance_haversine.hpp b/boost/geometry/strategies/spherical/distance_haversine.hpp
index 8b32056f3e..1a4cbdf36b 100644
--- a/boost/geometry/strategies/spherical/distance_haversine.hpp
+++ b/boost/geometry/strategies/spherical/distance_haversine.hpp
@@ -2,6 +2,12 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// This file was modified by Oracle on 2017, 2018.
+// Modifications copyright (c) 2017-2018, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
+// 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)
@@ -10,16 +16,18 @@
#define BOOST_GEOMETRY_STRATEGIES_SPHERICAL_DISTANCE_HAVERSINE_HPP
-#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/core/access.hpp>
+#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/core/radian_access.hpp>
-#include <boost/geometry/util/math.hpp>
-#include <boost/geometry/util/select_calculation_type.hpp>
-#include <boost/geometry/util/promote_floating_point.hpp>
+#include <boost/geometry/srs/sphere.hpp>
#include <boost/geometry/strategies/distance.hpp>
+#include <boost/geometry/strategies/spherical/get_radius.hpp>
+#include <boost/geometry/util/math.hpp>
+#include <boost/geometry/util/promote_floating_point.hpp>
+#include <boost/geometry/util/select_calculation_type.hpp>
namespace boost { namespace geometry
@@ -40,7 +48,7 @@ namespace comparable
// - applying asin (which is strictly (monotone) increasing)
template
<
- typename RadiusType,
+ typename RadiusTypeOrSphere = double,
typename CalculationType = void
>
class haversine
@@ -59,10 +67,21 @@ public :
>
{};
- typedef RadiusType radius_type;
+ typedef typename strategy_detail::get_radius
+ <
+ RadiusTypeOrSphere
+ >::type radius_type;
+
+ inline haversine()
+ : m_radius(1.0)
+ {}
- explicit inline haversine(RadiusType const& r = 1.0)
- : m_radius(r)
+ template <typename RadiusOrSphere>
+ explicit inline haversine(RadiusOrSphere const& radius_or_sphere)
+ : m_radius(strategy_detail::get_radius
+ <
+ RadiusOrSphere
+ >::apply(radius_or_sphere))
{}
template <typename Point1, typename Point2>
@@ -75,7 +94,13 @@ public :
);
}
- inline RadiusType radius() const
+ template <typename T1, typename T2>
+ inline radius_type meridian(T1 lat1, T2 lat2) const
+ {
+ return m_radius * (lat1 - lat2);
+ }
+
+ inline radius_type radius() const
{
return m_radius;
}
@@ -90,7 +115,7 @@ private :
+ cos(lat1) * cos(lat2) * math::hav(lon2 - lon1);
}
- RadiusType m_radius;
+ radius_type m_radius;
};
@@ -101,7 +126,7 @@ private :
\brief Distance calculation for spherical coordinates
on a perfect sphere using haversine
\ingroup strategies
-\tparam RadiusType \tparam_radius
+\tparam RadiusTypeOrSphere \tparam_radius_or_sphere
\tparam CalculationType \tparam_calculation
\author Adapted from: http://williams.best.vwh.net/avform.htm
\see http://en.wikipedia.org/wiki/Great-circle_distance
@@ -112,22 +137,19 @@ A mathematically equivalent formula, which is less subject
to rounding error for short distances is:
d=2*asin(sqrt((sin((lat1-lat2) / 2))^2
+ cos(lat1)*cos(lat2)*(sin((lon1-lon2) / 2))^2))
-
-
\qbk{
[heading See also]
[link geometry.reference.algorithms.distance.distance_3_with_strategy distance (with strategy)]
}
-
*/
template
<
- typename RadiusType,
+ typename RadiusTypeOrSphere = double,
typename CalculationType = void
>
class haversine
{
- typedef comparable::haversine<RadiusType, CalculationType> comparable_type;
+ typedef comparable::haversine<RadiusTypeOrSphere, CalculationType> comparable_type;
public :
template <typename Point1, typename Point2>
@@ -135,14 +157,28 @@ public :
: services::return_type<comparable_type, Point1, Point2>
{};
- typedef RadiusType radius_type;
+ typedef typename strategy_detail::get_radius
+ <
+ RadiusTypeOrSphere
+ >::type radius_type;
+
+ /*!
+ \brief Default constructor, radius set to 1.0 for the unit sphere
+ */
+ inline haversine()
+ : m_radius(1.0)
+ {}
/*!
\brief Constructor
- \param radius radius of the sphere, defaults to 1.0 for the unit sphere
+ \param radius_or_sphere radius of the sphere or sphere model
*/
- inline haversine(RadiusType const& radius = 1.0)
- : m_radius(radius)
+ template <typename RadiusOrSphere>
+ explicit inline haversine(RadiusOrSphere const& radius_or_sphere)
+ : m_radius(strategy_detail::get_radius
+ <
+ RadiusOrSphere
+ >::apply(radius_or_sphere))
{}
/*!
@@ -162,16 +198,29 @@ public :
}
/*!
+ \brief meridian distance calculation
+ \return the calculated distance (including multiplying with radius)
+ \param p1 first point
+ \param p2 second point
+ */
+
+ template <typename T1, typename T2>
+ inline radius_type meridian(T1 lat1, T2 lat2) const
+ {
+ return m_radius * (lat1 - lat2);
+ }
+
+ /*!
\brief access to radius value
\return the radius
*/
- inline RadiusType radius() const
+ inline radius_type radius() const
{
return m_radius;
}
private :
- RadiusType m_radius;
+ radius_type m_radius;
};
diff --git a/boost/geometry/strategies/spherical/get_radius.hpp b/boost/geometry/strategies/spherical/get_radius.hpp
new file mode 100644
index 0000000000..411642b13a
--- /dev/null
+++ b/boost/geometry/strategies/spherical/get_radius.hpp
@@ -0,0 +1,81 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+// Copyright (c) 2016-2018 Oracle and/or its affiliates.
+// Contributed and/or modified by Vissarion Fisikopoulos, on behalf of Oracle
+// 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)
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_SPHERICAL_GET_RADIUS_HPP
+#define BOOST_GEOMETRY_STRATEGIES_SPHERICAL_GET_RADIUS_HPP
+
+
+#include <boost/geometry/core/coordinate_type.hpp>
+#include <boost/geometry/core/radius.hpp>
+#include <boost/geometry/core/tag.hpp>
+#include <boost/geometry/core/tags.hpp>
+#include <boost/geometry/util/select_most_precise.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+
+#ifndef DOXYGEN_NO_DETAIL
+namespace strategy_detail
+{
+
+template
+<
+ typename RadiusTypeOrSphere,
+ typename Tag = typename tag<RadiusTypeOrSphere>::type
+>
+struct get_radius
+{
+ typedef typename geometry::radius_type<RadiusTypeOrSphere>::type type;
+ static type apply(RadiusTypeOrSphere const& sphere)
+ {
+ return geometry::get_radius<0>(sphere);
+ }
+};
+
+template <typename RadiusTypeOrSphere>
+struct get_radius<RadiusTypeOrSphere, void>
+{
+ typedef RadiusTypeOrSphere type;
+ static type apply(RadiusTypeOrSphere const& radius)
+ {
+ return radius;
+ }
+};
+
+// For backward compatibility
+template <typename Point>
+struct get_radius<Point, point_tag>
+{
+ typedef typename select_most_precise
+ <
+ typename coordinate_type<Point>::type,
+ double
+ >::type type;
+
+ template <typename RadiusOrSphere>
+ static typename get_radius<RadiusOrSphere>::type
+ apply(RadiusOrSphere const& radius_or_sphere)
+ {
+ return get_radius<RadiusOrSphere>::apply(radius_or_sphere);
+ }
+};
+
+
+} // namespace strategy_detail
+#endif // DOXYGEN_NO_DETAIL
+
+
+}} // namespace boost::geometry
+
+#endif // BOOST_GEOMETRY_STRATEGIES_SPHERICAL_GET_RADIUS_HPP
diff --git a/boost/geometry/strategies/spherical/intersection.hpp b/boost/geometry/strategies/spherical/intersection.hpp
index b5ae878b85..1cc7b20764 100644
--- a/boost/geometry/strategies/spherical/intersection.hpp
+++ b/boost/geometry/strategies/spherical/intersection.hpp
@@ -1,5 +1,7 @@
// Boost.Geometry
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
// Copyright (c) 2016-2017, Oracle and/or its affiliates.
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -118,7 +120,7 @@ struct ecef_segments
{
typedef area::spherical
<
- typename point_type<Geometry>::type,
+ typename coordinate_type<Geometry>::type,
CalculationType
> type;
};
@@ -161,38 +163,12 @@ struct ecef_segments
template <typename CoordinateType, typename SegmentRatio, typename Vector3d>
struct segment_intersection_info
{
- typedef typename select_most_precise
- <
- CoordinateType, double
- >::type promoted_type;
-
segment_intersection_info(CalcPolicy const& calc)
: calc_policy(calc)
{}
- promoted_type comparable_length_a() const
- {
- return robust_ra.denominator();
- }
-
- promoted_type comparable_length_b() const
- {
- return robust_rb.denominator();
- }
-
- template <typename Point, typename Segment1, typename Segment2>
- void assign_a(Point& point, Segment1 const& a, Segment2 const& b) const
- {
- assign(point, a, b);
- }
- template <typename Point, typename Segment1, typename Segment2>
- void assign_b(Point& point, Segment1 const& a, Segment2 const& b) const
- {
- assign(point, a, b);
- }
-
template <typename Point, typename Segment1, typename Segment2>
- void assign(Point& point, Segment1 const& a, Segment2 const& b) const
+ void calculate(Point& point, Segment1 const& a, Segment2 const& b) const
{
if (ip_flag == ipi_inters)
{
diff --git a/boost/geometry/strategies/spherical/point_in_poly_winding.hpp b/boost/geometry/strategies/spherical/point_in_poly_winding.hpp
index 0f1a901d13..c942cbe460 100644
--- a/boost/geometry/strategies/spherical/point_in_poly_winding.hpp
+++ b/boost/geometry/strategies/spherical/point_in_poly_winding.hpp
@@ -1,7 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2013-2017 Adam Wulkiewicz, Lodz, Poland.
// This file was modified by Oracle on 2013, 2014, 2016, 2017.
// Modifications copyright (c) 2013-2017 Oracle and/or its affiliates.
@@ -169,7 +169,7 @@ public:
int side = 0;
if (ci.count == 1 || ci.count == -1)
{
- side = side_equal(point, eq1 ? s1 : s2, ci, s1, s2);
+ side = side_equal(point, eq1 ? s1 : s2, ci);
}
else // count == 2 || count == -2
{
@@ -431,8 +431,7 @@ private:
// but the point is not aligned with a vertical segment
inline int side_equal(Point const& point,
PointOfSegment const& se,
- count_info const& ci,
- PointOfSegment const& s1, PointOfSegment const& s2) const
+ count_info const& ci) const
{
typedef typename coordinate_type<PointOfSegment>::type scoord_t;
typedef typename coordinate_system<PointOfSegment>::type::units units_t;
diff --git a/boost/geometry/strategies/strategies.hpp b/boost/geometry/strategies/strategies.hpp
index e7f3604abf..7d6cb618c6 100644
--- a/boost/geometry/strategies/strategies.hpp
+++ b/boost/geometry/strategies/strategies.hpp
@@ -3,9 +3,10 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
-// This file was modified by Oracle on 2014-2017.
-// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
+// This file was modified by Oracle on 2014-2018.
+// Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -30,6 +31,7 @@
#include <boost/geometry/strategies/compare.hpp>
#include <boost/geometry/strategies/convex_hull.hpp>
#include <boost/geometry/strategies/covered_by.hpp>
+#include <boost/geometry/strategies/densify.hpp>
#include <boost/geometry/strategies/disjoint.hpp>
#include <boost/geometry/strategies/distance.hpp>
#include <boost/geometry/strategies/envelope.hpp>
@@ -40,7 +42,7 @@
#include <boost/geometry/strategies/transform.hpp>
#include <boost/geometry/strategies/within.hpp>
-#include <boost/geometry/strategies/cartesian/area_surveyor.hpp>
+#include <boost/geometry/strategies/cartesian/area.hpp>
#include <boost/geometry/strategies/cartesian/azimuth.hpp>
#include <boost/geometry/strategies/cartesian/box_in_box.hpp>
#include <boost/geometry/strategies/cartesian/buffer_end_flat.hpp>
@@ -54,6 +56,7 @@
#include <boost/geometry/strategies/cartesian/centroid_average.hpp>
#include <boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp>
#include <boost/geometry/strategies/cartesian/centroid_weighted_length.hpp>
+#include <boost/geometry/strategies/cartesian/densify.hpp>
#include <boost/geometry/strategies/cartesian/disjoint_segment_box.hpp>
#include <boost/geometry/strategies/cartesian/distance_pythagoras.hpp>
#include <boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp>
@@ -70,9 +73,11 @@
#include <boost/geometry/strategies/spherical/area.hpp>
#include <boost/geometry/strategies/spherical/azimuth.hpp>
+#include <boost/geometry/strategies/spherical/densify.hpp>
#include <boost/geometry/strategies/spherical/disjoint_segment_box.hpp>
#include <boost/geometry/strategies/spherical/distance_haversine.hpp>
#include <boost/geometry/strategies/spherical/distance_cross_track.hpp>
+#include <boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp>
#include <boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp>
#include <boost/geometry/strategies/spherical/compare.hpp>
#include <boost/geometry/strategies/spherical/envelope_segment.hpp>
@@ -82,10 +87,13 @@
#include <boost/geometry/strategies/geographic/area.hpp>
#include <boost/geometry/strategies/geographic/azimuth.hpp>
+#include <boost/geometry/strategies/geographic/densify.hpp>
#include <boost/geometry/strategies/geographic/disjoint_segment_box.hpp>
#include <boost/geometry/strategies/geographic/distance.hpp>
#include <boost/geometry/strategies/geographic/distance_andoyer.hpp>
#include <boost/geometry/strategies/geographic/distance_cross_track.hpp>
+#include <boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp>
+#include <boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp>
#include <boost/geometry/strategies/geographic/distance_thomas.hpp>
#include <boost/geometry/strategies/geographic/distance_vincenty.hpp>
#include <boost/geometry/strategies/geographic/envelope_segment.hpp>
diff --git a/boost/geometry/strategies/transform/matrix_transformers.hpp b/boost/geometry/strategies/transform/matrix_transformers.hpp
index e0ac6496f3..a3f3223c95 100644
--- a/boost/geometry/strategies/transform/matrix_transformers.hpp
+++ b/boost/geometry/strategies/transform/matrix_transformers.hpp
@@ -169,11 +169,11 @@ public :
typedef typename geometry::coordinate_type<P2>::type ct2;
set<0>(p2, boost::numeric_cast<ct2>(
- c1 * m_matrix(0,0) + c2 * m_matrix(0,1) + c3 * m_matrix(0,2) + m_matrix(0,3)));
+ c1 * qvm::A<0,0>(m_matrix) + c2 * qvm::A<0,1>(m_matrix) + c3 * qvm::A<0,2>(m_matrix) + qvm::A<0,3>(m_matrix)));
set<1>(p2, boost::numeric_cast<ct2>(
- c1 * m_matrix(1,0) + c2 * m_matrix(1,1) + c3 * m_matrix(1,2) + m_matrix(1,3)));
+ c1 * qvm::A<1,0>(m_matrix) + c2 * qvm::A<1,1>(m_matrix) + c3 * qvm::A<1,2>(m_matrix) + qvm::A<1,3>(m_matrix)));
set<2>(p2, boost::numeric_cast<ct2>(
- c1 * m_matrix(2,0) + c2 * m_matrix(2,1) + c3 * m_matrix(2,2) + m_matrix(2,3)));
+ c1 * qvm::A<2,0>(m_matrix) + c2 * qvm::A<2,1>(m_matrix) + c3 * qvm::A<2,2>(m_matrix) + qvm::A<2,3>(m_matrix)));
return true;
}
diff --git a/boost/geometry/strategies/transform/srs_transformer.hpp b/boost/geometry/strategies/transform/srs_transformer.hpp
new file mode 100644
index 0000000000..e1815e2362
--- /dev/null
+++ b/boost/geometry/strategies/transform/srs_transformer.hpp
@@ -0,0 +1,102 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, 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)
+
+#ifndef BOOST_GEOMETRY_STRATEGIES_TRANSFORM_SRS_TRANSFORMER_HPP
+#define BOOST_GEOMETRY_STRATEGIES_TRANSFORM_SRS_TRANSFORMER_HPP
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace transform
+{
+
+/*!
+ \brief Transformation strategy to do transform using a forward
+ Map Projection or SRS transformation.
+ \ingroup transform
+ \tparam ProjectionOrTransformation SRS projection or transformation type
+ */
+template
+<
+ typename ProjectionOrTransformation
+>
+class srs_forward_transformer
+{
+public:
+ inline srs_forward_transformer()
+ {}
+
+ template <typename Parameters>
+ inline srs_forward_transformer(Parameters const& parameters)
+ : m_proj_or_transform(parameters)
+ {}
+
+ template <typename Parameters1, typename Parameters2>
+ inline srs_forward_transformer(Parameters1 const& parameters1, Parameters2 const& parameters2)
+ : m_proj_or_transform(parameters1, parameters2)
+ {}
+
+ template <typename Geometry1, typename Geometry2>
+ inline bool apply(Geometry1 const& g1, Geometry2 & g2) const
+ {
+ return m_proj_or_transform.forward(g1, g2);
+ }
+
+private:
+ ProjectionOrTransformation m_proj_or_transform;
+};
+
+
+/*!
+ \brief Transformation strategy to do transform using an inverse
+ Map Projection or SRS transformation.
+ \ingroup transform
+ \tparam ProjectionOrTransformation SRS projection or transformation type
+ */
+template
+<
+ typename ProjectionOrTransformation
+>
+class srs_inverse_transformer
+{
+public:
+ inline srs_inverse_transformer()
+ {}
+
+ template <typename Parameters>
+ inline srs_inverse_transformer(Parameters const& parameters)
+ : m_proj_or_transform(parameters)
+ {}
+
+ template <typename Parameters1, typename Parameters2>
+ inline srs_inverse_transformer(Parameters1 const& parameters1, Parameters2 const& parameters2)
+ : m_proj_or_transform(parameters1, parameters2)
+ {}
+
+ template <typename Geometry1, typename Geometry2>
+ inline bool apply(Geometry1 const& g1, Geometry2 & g2) const
+ {
+ return m_proj_or_transform.inverse(g1, g2);
+ }
+
+private:
+ ProjectionOrTransformation m_proj_or_transform;
+};
+
+
+}} // namespace strategy::transform
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_STRATEGIES_TRANSFORM_SRS_TRANSFORMER_HPP
diff --git a/boost/geometry/util/normalize_spheroidal_coordinates.hpp b/boost/geometry/util/normalize_spheroidal_coordinates.hpp
index eaa686ed10..785e52a0de 100644
--- a/boost/geometry/util/normalize_spheroidal_coordinates.hpp
+++ b/boost/geometry/util/normalize_spheroidal_coordinates.hpp
@@ -1,5 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
// Copyright (c) 2015-2017, Oracle and/or its affiliates.
// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
@@ -198,7 +200,7 @@ template <typename Units, bool IsEquatorial>
struct latitude_convert_if_polar
{
template <typename T>
- static inline void apply(T & lat) {}
+ static inline void apply(T & /*lat*/) {}
};
template <typename Units>
diff --git a/boost/geometry/util/range.hpp b/boost/geometry/util/range.hpp
index b10a008059..6d49e45fdd 100644
--- a/boost/geometry/util/range.hpp
+++ b/boost/geometry/util/range.hpp
@@ -373,9 +373,14 @@ erase(Range & rng,
template <class Container>
class back_insert_iterator
- : public std::iterator<std::output_iterator_tag, void, void, void, void>
{
public:
+ typedef std::output_iterator_tag iterator_category;
+ typedef void value_type;
+ typedef void difference_type;
+ typedef void pointer;
+ typedef void reference;
+
typedef Container container_type;
explicit back_insert_iterator(Container & c)
diff --git a/boost/geometry/util/select_sequence_element.hpp b/boost/geometry/util/select_sequence_element.hpp
new file mode 100644
index 0000000000..3f1ff68527
--- /dev/null
+++ b/boost/geometry/util/select_sequence_element.hpp
@@ -0,0 +1,78 @@
+// Boost.Geometry
+
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#ifndef BOOST_GEOMETRY_UTIL_SELECT_SEQUENCE_ELEMENT
+#define BOOST_GEOMETRY_UTIL_SELECT_SEQUENCE_ELEMENT
+
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/size.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/geometry/core/coordinate_type.hpp>
+#include <boost/geometry/util/select_most_precise.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace util
+{
+
+template <typename Curr, typename Next>
+struct pred_more_precise_coordinate_type
+{
+ typedef typename geometry::coordinate_type<Curr>::type curr_coord_t;
+ typedef typename geometry::coordinate_type<Next>::type next_coord_t;
+
+ typedef typename boost::mpl::if_c
+ <
+ boost::is_same
+ <
+ curr_coord_t,
+ typename select_most_precise
+ <
+ curr_coord_t,
+ next_coord_t
+ >::type
+ >::value,
+ Curr,
+ Next
+ >::type type;
+};
+
+template
+<
+ typename Seq,
+ template<typename, typename> class Pred = pred_more_precise_coordinate_type,
+ int I = 0,
+ int N = boost::mpl::size<Seq>::value
+>
+struct select_sequence_element
+{
+ typedef typename boost::mpl::at<Seq, boost::mpl::int_<I> >::type curr_t;
+ typedef typename select_sequence_element<Seq, Pred, I+1, N>::type next_t;
+
+ typedef typename Pred<curr_t, next_t>::type type;
+};
+
+template <typename Seq, template<typename, typename> class Pred, int N>
+struct select_sequence_element<Seq, Pred, N, N>
+{
+ typedef typename boost::mpl::at<Seq, boost::mpl::int_<N-1> >::type type;
+};
+
+} // namespace util
+
+}} // namespace boost::geometry
+
+
+#endif // BOOST_GEOMETRY_UTIL_SELECT_SEQUENCE_ELEMENT
diff --git a/boost/geometry/views/detail/boundary_view/implementation.hpp b/boost/geometry/views/detail/boundary_view/implementation.hpp
index e6a09afd68..971a6fe002 100644
--- a/boost/geometry/views/detail/boundary_view/implementation.hpp
+++ b/boost/geometry/views/detail/boundary_view/implementation.hpp
@@ -19,7 +19,6 @@
#include <vector>
#include <boost/core/addressof.hpp>
-#include <boost/iterator.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/iterator/iterator_categories.hpp>
#include <boost/mpl/assert.hpp>
diff --git a/boost/geometry/views/detail/points_view.hpp b/boost/geometry/views/detail/points_view.hpp
index a06084216b..c612a38744 100644
--- a/boost/geometry/views/detail/points_view.hpp
+++ b/boost/geometry/views/detail/points_view.hpp
@@ -16,7 +16,6 @@
#include <boost/range.hpp>
-#include <boost/iterator.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/iterator/iterator_categories.hpp>