#ifndef MAPSOURCE_H #define MAPSOURCE_H #include <iostream> #include <cmath> #include <fstream> using namespace std; #include <boost/tokenizer.hpp> #include <mapnik/map.hpp> #include <mapnik/layer.hpp> #include <mapnik/envelope.hpp> #include <mapnik/agg_renderer.hpp> #include <mapnik/image_util.hpp> #include <mapnik/load_map.hpp> #include <mapnik/datasource_cache.hpp> #include <mapnik/font_engine_freetype.hpp> #include <mapnik/projection.hpp> #include "MapSource.h" #include "GoogleProjection.h" using namespace mapnik; class MapSource { private: std::string source; // osm. postgis or api std::string osmfile; std::string xmlfile; std::string url; std::string outfile; int width, height; double w,s,e,n; bool useBbox, tiled, multirqst; int zoom_start,zoom_end; bool srtm; static void setOSMLayers(Map& m, const parameters &p); static void addSRTMLayers(Map& m,double w,double s,double e,double n); public: MapSource() { osmfile=""; source=""; xmlfile=""; outfile=""; width=height=-1; w=-181; e=181; n=91; s=-91; zoom_start=zoom_end=-1; tiled=false; multirqst=false; url="http://xapi.openstreetmap.org/api/0.5/map"; //url="http://osmxapi.hypercube.telascience.org/api/0.5/map"; srtm=false; } bool isValid() { return xmlfile!="" && ((tiled==false&&outfile!="" && width>0 && height>0) || (tiled==true&&zoom_start>=0)) && ((source=="osm" && osmfile!="" && width>0 && height>0) || (source=="api" && hasBbox() && zoom_start>=0 && tiled==true)); } void setSource(std::string const& src) { if(src=="api" || src=="osm") { source=src; } } std::string getSource() { return source; } bool hasBbox() { return w>=-180 && w<=180 && s>=-90 && s<=90 && e>=-180 && e<=180 && n>=-90 && n<=90 && w<e && s<n; } void process_cmd_line_args(int argc,char *argv[]); void generateMaps(); }; #endif