00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef PROJECTION_HPP
00026 #define PROJECTION_HPP
00027
00028
00029 #include <string>
00030 #include <iostream>
00031 #include <stdexcept>
00032
00033 #include <boost/utility.hpp>
00034
00035 #include <mapnik/envelope.hpp>
00036
00037 namespace mapnik {
00038
00039 class proj_init_error : public std::runtime_error
00040 {
00041 public:
00042 proj_init_error(std::string const& params)
00043 : std::runtime_error("failed to initialize projection with:" + params) {}
00044 };
00045
00046 class MAPNIK_DECL projection
00047 {
00048 friend class proj_transform;
00049 public:
00050 explicit projection(std::string params = "+proj=latlong +ellps=WGS84");
00051 projection(projection const& rhs);
00052 ~projection();
00053
00054 projection& operator=(projection const& rhs);
00055 bool is_initialized() const;
00056 bool is_geographic() const;
00057 std::string const& params() const;
00058
00059 void forward(double & x, double &y ) const;
00060 void inverse(double & x,double & y) const;
00061
00062 private:
00063 void init();
00064 void swap (projection& rhs);
00065
00066 private:
00067 std::string params_;
00068 void * proj_;
00069 };
00070 }
00071
00072 #endif //PROJECTION_HPP