26 #ifndef __TERRALIB_SRS_INTERNAL_SPATIALREFERENCESYSTEMMANAGER_H
27 #define __TERRALIB_SRS_INTERNAL_SPATIALREFERENCESYSTEMMANAGER_H
30 #include "../common/Singleton.h"
31 #include "../common/UnitOfMeasure.h"
42 #include <boost/lexical_cast.hpp>
43 #include <boost/multi_index_container.hpp>
44 #include <boost/multi_index/member.hpp>
45 #include <boost/multi_index/mem_fun.hpp>
46 #include <boost/multi_index/ordered_index.hpp>
78 srs_desc(
const std::string& name,
unsigned int auth_id,
const std::string& auth_name,
const std::string& p4txt,
const std::string& wkt);
80 std::string srid()
const;
96 typedef boost::multi_index_container<
98 boost::multi_index::indexed_by<
99 boost::multi_index::ordered_unique<BOOST_MULTI_INDEX_CONST_MEM_FUN(srs_desc,std::string,srid)>,
100 boost::multi_index::ordered_non_unique<BOOST_MULTI_INDEX_MEMBER(srs_desc,std::string,m_name)>,
101 boost::multi_index::ordered_non_unique<BOOST_MULTI_INDEX_MEMBER(srs_desc,std::string,m_p4txt)>,
102 boost::multi_index::ordered_non_unique<BOOST_MULTI_INDEX_MEMBER(srs_desc,std::string,m_wkt)>,
103 boost::multi_index::ordered_non_unique<BOOST_MULTI_INDEX_MEMBER(srs_desc,std::string,m_auth_name)>
114 typedef boost::multi_index::nth_index<srs_set,0>::type::iterator
iterator;
133 void init(
const std::string& fileName);
144 void add(
const std::string& name,
const std::string& p4Txt,
const std::string& wkt,
unsigned int id,
const std::string& authName=
"EPSG");
152 bool recognizes(
unsigned int id,
const std::string& authName=
"EPSG")
const;
160 std::string getName (
unsigned int id,
const std::string& authName=
"EPSG")
const;
168 std::string getP4Txt(
unsigned int id,
const std::string& authName=
"EPSG")
const;
176 std::string getWkt (
unsigned int id,
const std::string& authName=
"EPSG")
const;
184 std::pair<std::string,unsigned int> getIdFromName (
const std::string& name)
const;
192 std::pair<std::string,unsigned int> getIdFromP4Txt(
const std::string& p4Txt)
const;
200 std::pair<std::string,unsigned int> getIdFromWkt (
const std::string& wkt)
const;
215 void remove (
unsigned int id,
const std::string& authName=
"EPSG");
230 std::pair<te::srs::SpatialReferenceSystemManager::iterator,te::srs::SpatialReferenceSystemManager::iterator> getIterators()
const;
242 bool isGeographic(
unsigned int id,
const std::string& authName=
"EPSG");
247 bool isInitialized();
253 std::string getNewUserDefinedSRID();
281 #endif // __TERRALIB_SRS_INTERNAL_SPATIALREFERENCESYSTEMMANAGER_H
boost::multi_index_container< srs_desc, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< BOOST_MULTI_INDEX_CONST_MEM_FUN(srs_desc, std::string, srid)>, boost::multi_index::ordered_non_unique< BOOST_MULTI_INDEX_MEMBER(srs_desc, std::string, m_name)>, boost::multi_index::ordered_non_unique< BOOST_MULTI_INDEX_MEMBER(srs_desc, std::string, m_p4txt)>, boost::multi_index::ordered_non_unique< BOOST_MULTI_INDEX_MEMBER(srs_desc, std::string, m_wkt)>, boost::multi_index::ordered_non_unique< BOOST_MULTI_INDEX_MEMBER(srs_desc, std::string, m_auth_name)> > > srs_set
boost::multi_index::nth_index< srs_set, 0 >::type::iterator iterator
An iterator by SRS
std::auto_ptr< SpatialReferenceSystem > SpatialReferenceSystemPtr
This file contains the structs necessary to represent a Spatial Reference System. ...
A class to manage Coordinate Systems representations within TerraLib environment. ...
boost::shared_ptr< UnitOfMeasure > UnitOfMeasurePtr
#define TESRSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Template support for singleton pattern.