正在显示
8 个修改的文件
包含
467 行增加
和
466 行删除
| @@ -47,11 +47,12 @@ bool DmpVectorLayer::writeXml(boost::property_tree::ptree &layerNode) | @@ -47,11 +47,12 @@ bool DmpVectorLayer::writeXml(boost::property_tree::ptree &layerNode) | ||
| 47 | 47 | ||
| 48 | void DmpVectorLayer::setRenderer(DmpFeatureRenderer *renderer) | 48 | void DmpVectorLayer::setRenderer(DmpFeatureRenderer *renderer) |
| 49 | { | 49 | { |
| 50 | - | 50 | + |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | void DmpVectorLayer::setDataSource(const std::string &dataSource, const std::string &baseName, const std::string &provider, bool loadDefaultStyleFlag) | 53 | void DmpVectorLayer::setDataSource(const std::string &dataSource, const std::string &baseName, const std::string &provider, bool loadDefaultStyleFlag) |
| 54 | { | 54 | { |
| 55 | + | ||
| 55 | DmpWkbTypes::GeometryType geomType = GeometryType(); | 56 | DmpWkbTypes::GeometryType geomType = GeometryType(); |
| 56 | } | 57 | } |
| 57 | 58 |
| 1 | -[Core] | ||
| 2 | -Filter="%Severity% >= debug" | ||
| 3 | - | ||
| 4 | -[Sinks.TextFileSettings] | ||
| 5 | -Destination=TextFile | ||
| 6 | -FileName="dmap_%Y%m%d.log" | ||
| 7 | -AutoFlush=true | ||
| 8 | -Format="[%TimeStamp%] [%Uptime%] [%Scope%] <%Severity%> %Message%" | ||
| 9 | -Asynchronous=false | ||
| 10 | -Append=true | 1 | +[Core] |
| 2 | +Filter="%Severity% >= debug" | ||
| 3 | + | ||
| 4 | +[Sinks.TextFileSettings] | ||
| 5 | +Destination=TextFile | ||
| 6 | +FileName="dmap_%Y%m%d.log" | ||
| 7 | +AutoFlush=true | ||
| 8 | +Format="[%TimeStamp%] [%Uptime%] [%Scope%] <%Severity%> %Message%" | ||
| 9 | +Asynchronous=false | ||
| 10 | +Append=true |
| 1 | -/************************************************************************** | ||
| 2 | -* file: dmphttpbase.cpp | ||
| 3 | - | ||
| 4 | -* Author: lijiahuan | ||
| 5 | -* Date: 2021-12-09 17:41:00 | ||
| 6 | -* Email: jiahuanl@chinadci.com | ||
| 7 | -* copyright: 广州城市信息研究所有限公司 | ||
| 8 | -***************************************************************************/ | ||
| 9 | -#include "dmphttpbase.h" | ||
| 10 | - | ||
| 11 | -#define HTTP_JSON_BEGIN ("[") | ||
| 12 | -#define HTTP_JSON_END ("]") | ||
| 13 | - | ||
| 14 | -DmpHttp::DmpHttpBase::DmpHttpBase(){} | ||
| 15 | -DmpHttp::DmpHttpBase::~DmpHttpBase(){} | ||
| 16 | -int DmpHttp::DmpHttpBase::parseUrl(const std::string& url, std::string& out_server, | ||
| 17 | - std::string& out_port, std::string& out_path){ | ||
| 18 | -const std::string& http_ = "http://"; | ||
| 19 | -const std::string& https_ = "https://"; | ||
| 20 | -std::string temp_data = url; | ||
| 21 | -if (temp_data.find(http_) == 0) { | ||
| 22 | - temp_data = temp_data.substr(http_.length()); | ||
| 23 | - } | ||
| 24 | - else if (temp_data.find(https_) == 0) { | ||
| 25 | - temp_data = temp_data.substr(https_.length()); | ||
| 26 | - } | ||
| 27 | - else { | ||
| 28 | - return HTTP_ERROR_HTTP_HEAD; | ||
| 29 | - } | ||
| 30 | - // 解析域名 | ||
| 31 | - std::size_t idx = temp_data.find('/'); | ||
| 32 | - // 解析 域名后的page | ||
| 33 | - if (std::string::npos == idx) { | ||
| 34 | - out_path = "/"; | ||
| 35 | - idx = temp_data.size(); | ||
| 36 | - } | ||
| 37 | - else { | ||
| 38 | - out_path = temp_data.substr(idx); | ||
| 39 | - } | ||
| 40 | - // 解析域名 | ||
| 41 | - out_server = temp_data.substr(0, idx); | ||
| 42 | - // 解析端口 | ||
| 43 | - idx = out_server.find(':'); | ||
| 44 | - if (std::string::npos == idx) { | ||
| 45 | - out_port = "80"; | ||
| 46 | - } | ||
| 47 | - else { | ||
| 48 | - out_port = out_server.substr(idx + 1); | ||
| 49 | - out_server = out_server.substr(0, idx); | ||
| 50 | - } | ||
| 51 | - return HTTP_SUCCESS; | ||
| 52 | -} | ||
| 53 | - | ||
| 54 | -int DmpHttp::DmpHttpBase::buildPostRequest(const std::string& server, const std::string& path, | ||
| 55 | - std::ostream& out_request) { | ||
| 56 | - // 分割path中的json数据 | ||
| 57 | - std::string temp_path(path), temp_json; | ||
| 58 | - int json_pos_begin = temp_path.find(HTTP_JSON_BEGIN) + 1; | ||
| 59 | - int json_pos_end = temp_path.find(HTTP_JSON_END); | ||
| 60 | - if (json_pos_begin != std::string::npos) { | ||
| 61 | - // 计算json的长度 | ||
| 62 | - int temp_json_lenth = std::string::npos; | ||
| 63 | - if (json_pos_end != temp_json_lenth) { | ||
| 64 | - temp_json_lenth = (json_pos_end - json_pos_begin); | ||
| 65 | - } | ||
| 66 | - temp_json = temp_path.substr(json_pos_begin, temp_json_lenth); | ||
| 67 | - temp_path = temp_path.substr(0, (json_pos_begin - 1)); | ||
| 68 | - } | ||
| 69 | - out_request << "POST " << temp_path.c_str() << " HTTP/1.0\r\n"; | ||
| 70 | - out_request << "Host: " << server.c_str() << "\r\n"; | ||
| 71 | - out_request << "Content-Length: " << temp_json.length() << "\r\n"; | ||
| 72 | - out_request << "Content-Type: application/x-www-form-urlencoded\r\n"; | ||
| 73 | - out_request << "Accept: */*\r\n"; | ||
| 74 | - out_request << "Connection: close\r\n\r\n"; | ||
| 75 | - out_request << temp_json.c_str(); | ||
| 76 | - return HTTP_SUCCESS; | ||
| 77 | -} | ||
| 78 | - | ||
| 79 | -int DmpHttp::DmpHttpBase::buildGetRequest(const std::string& server, const std::string& path, | ||
| 80 | - std::ostream& out_request) { | ||
| 81 | - out_request << "GET " << path.c_str() << " HTTP/1.0\r\n"; | ||
| 82 | - out_request << "Host: " << server.c_str() << "\r\n"; | ||
| 83 | - out_request << "Accept: */*\r\n"; | ||
| 84 | - out_request << "Connection: close\r\n\r\n"; | ||
| 85 | - return HTTP_SUCCESS; | ||
| 86 | -} | 1 | +/************************************************************************** |
| 2 | +* file: dmphttpbase.cpp | ||
| 3 | + | ||
| 4 | +* Author: lijiahuan | ||
| 5 | +* Date: 2021-12-09 17:41:00 | ||
| 6 | +* Email: jiahuanl@chinadci.com | ||
| 7 | +* copyright: 广州城市信息研究所有限公司 | ||
| 8 | +***************************************************************************/ | ||
| 9 | +#include "dmphttpbase.h" | ||
| 10 | + | ||
| 11 | +#define HTTP_JSON_BEGIN ("[") | ||
| 12 | +#define HTTP_JSON_END ("]") | ||
| 13 | + | ||
| 14 | +DmpHttp::DmpHttpBase::DmpHttpBase(){} | ||
| 15 | +DmpHttp::DmpHttpBase::~DmpHttpBase(){} | ||
| 16 | +int DmpHttp::DmpHttpBase::parseUrl(const std::string& url, std::string& out_server, | ||
| 17 | + std::string& out_port, std::string& out_path){ | ||
| 18 | +const std::string& http_ = "http://"; | ||
| 19 | +const std::string& https_ = "https://"; | ||
| 20 | +std::string temp_data = url; | ||
| 21 | +if (temp_data.find(http_) == 0) { | ||
| 22 | + temp_data = temp_data.substr(http_.length()); | ||
| 23 | + } | ||
| 24 | + else if (temp_data.find(https_) == 0) { | ||
| 25 | + temp_data = temp_data.substr(https_.length()); | ||
| 26 | + } | ||
| 27 | + else { | ||
| 28 | + return HTTP_ERROR_HTTP_HEAD; | ||
| 29 | + } | ||
| 30 | + // 解析域名 | ||
| 31 | + std::size_t idx = temp_data.find('/'); | ||
| 32 | + // 解析 域名后的page | ||
| 33 | + if (std::string::npos == idx) { | ||
| 34 | + out_path = "/"; | ||
| 35 | + idx = temp_data.size(); | ||
| 36 | + } | ||
| 37 | + else { | ||
| 38 | + out_path = temp_data.substr(idx); | ||
| 39 | + } | ||
| 40 | + // 解析域名 | ||
| 41 | + out_server = temp_data.substr(0, idx); | ||
| 42 | + // 解析端口 | ||
| 43 | + idx = out_server.find(':'); | ||
| 44 | + if (std::string::npos == idx) { | ||
| 45 | + out_port = "80"; | ||
| 46 | + } | ||
| 47 | + else { | ||
| 48 | + out_port = out_server.substr(idx + 1); | ||
| 49 | + out_server = out_server.substr(0, idx); | ||
| 50 | + } | ||
| 51 | + return HTTP_SUCCESS; | ||
| 52 | +} | ||
| 53 | + | ||
| 54 | +int DmpHttp::DmpHttpBase::buildPostRequest(const std::string& server, const std::string& path, | ||
| 55 | + std::ostream& out_request) { | ||
| 56 | + // 分割path中的json数据 | ||
| 57 | + std::string temp_path(path), temp_json; | ||
| 58 | + int json_pos_begin = temp_path.find(HTTP_JSON_BEGIN) + 1; | ||
| 59 | + int json_pos_end = temp_path.find(HTTP_JSON_END); | ||
| 60 | + if (json_pos_begin != std::string::npos) { | ||
| 61 | + // 计算json的长度 | ||
| 62 | + int temp_json_lenth = std::string::npos; | ||
| 63 | + if (json_pos_end != temp_json_lenth) { | ||
| 64 | + temp_json_lenth = (json_pos_end - json_pos_begin); | ||
| 65 | + } | ||
| 66 | + temp_json = temp_path.substr(json_pos_begin, temp_json_lenth); | ||
| 67 | + temp_path = temp_path.substr(0, (json_pos_begin - 1)); | ||
| 68 | + } | ||
| 69 | + out_request << "POST " << temp_path.c_str() << " HTTP/1.0\r\n"; | ||
| 70 | + out_request << "Host: " << server.c_str() << "\r\n"; | ||
| 71 | + out_request << "Content-Length: " << temp_json.length() << "\r\n"; | ||
| 72 | + out_request << "Content-Type: application/x-www-form-urlencoded\r\n"; | ||
| 73 | + out_request << "Accept: */*\r\n"; | ||
| 74 | + out_request << "Connection: close\r\n\r\n"; | ||
| 75 | + out_request << temp_json.c_str(); | ||
| 76 | + return HTTP_SUCCESS; | ||
| 77 | +} | ||
| 78 | + | ||
| 79 | +int DmpHttp::DmpHttpBase::buildGetRequest(const std::string& server, const std::string& path, | ||
| 80 | + std::ostream& out_request) { | ||
| 81 | + out_request << "GET " << path.c_str() << " HTTP/1.0\r\n"; | ||
| 82 | + out_request << "Host: " << server.c_str() << "\r\n"; | ||
| 83 | + out_request << "Accept: */*\r\n"; | ||
| 84 | + out_request << "Connection: close\r\n\r\n"; | ||
| 85 | + return HTTP_SUCCESS; | ||
| 86 | +} |
| 1 | -/************************************************************************** | ||
| 2 | -* file: dmphttpbase.h | ||
| 3 | - | ||
| 4 | -* Author: lijiahuan | ||
| 5 | -* Date: 2021-12-09 17:41:00 | ||
| 6 | -* Email: jiahuanl@chinadci.com | ||
| 7 | -* copyright: 广州城市信息研究所有限公司 | ||
| 8 | -***************************************************************************/ | ||
| 9 | -#ifndef __dmphttpbase_h__ | ||
| 10 | -#define __dmphttpbase_h__ | ||
| 11 | -#include <iostream> | ||
| 12 | -#include <boost/asio.hpp> | ||
| 13 | -namespace DmpHttp | ||
| 14 | -{ | ||
| 15 | - #define HTTP_SUCCESS (0) // 操作成功 | ||
| 16 | - #define HTTP_ERROR_UNKNOWN (-1) // 未知的错误 | ||
| 17 | - #define HTTP_ERROR_NETWORK (-2) // 网络连接失败 | ||
| 18 | - #define HTTP_ERROR_HTTP_HEAD (-3) // 未找到协议头 http || https | ||
| 19 | - | ||
| 20 | - #define HTTP_ERROR_SERVICE (-1000) // 服务器请求失败 | ||
| 21 | - #define HTTP_ERROR_LOGIN (-1001) // 登录失败 | ||
| 22 | - #define HTTP_ERROR_ID (-1002) // 企业ID错误 | ||
| 23 | - #define HTTP_ERROR_USER (-1003) // 帐号不存在 | ||
| 24 | - #define HTTP_ERROR_PASSWORD (-1004) // 密码错误 | ||
| 25 | - | ||
| 26 | - #define HTTP_ERROR_PARAMETER (1) // 参数错误 | ||
| 27 | - #define HTTP_ERROR_PHONE (2) // 电话号码错误 | ||
| 28 | - #define HTTP_ERROR_MESSAGE (3) // 短信有屏蔽字段 | ||
| 29 | - #define HTTP_ERROR_FUNCTION (4) // 当前平台不支持这个功能 | ||
| 30 | - | ||
| 31 | - class DmpHttpBase | ||
| 32 | - { | ||
| 33 | - public: | ||
| 34 | - DmpHttpBase(); | ||
| 35 | - virtual ~DmpHttpBase(); | ||
| 36 | - // Post请求 | ||
| 37 | - virtual int post(const std::string& url) = 0; | ||
| 38 | - // get请求 | ||
| 39 | - virtual int get(const std::string& url) = 0; | ||
| 40 | - virtual std::string getResponse(void) = 0; | ||
| 41 | - | ||
| 42 | - protected: | ||
| 43 | - typedef int(*pBuildRequest)(const std::string&, const std::string&,std::ostream&); | ||
| 44 | - | ||
| 45 | - static int parseUrl(const std::string& url, std::string& out_server, | ||
| 46 | - std::string& out_port, std::string& out_path); | ||
| 47 | - static int buildPostRequest(const std::string& server, const std::string& path, | ||
| 48 | - std::ostream& out_request); | ||
| 49 | - static int buildGetRequest(const std::string& server, const std::string& path, | ||
| 50 | - std::ostream& out_request); | ||
| 51 | - }; | ||
| 52 | -} | ||
| 53 | - | ||
| 54 | - | ||
| 55 | - | ||
| 56 | - | 1 | +/************************************************************************** |
| 2 | +* file: dmphttpbase.h | ||
| 3 | + | ||
| 4 | +* Author: lijiahuan | ||
| 5 | +* Date: 2021-12-09 17:41:00 | ||
| 6 | +* Email: jiahuanl@chinadci.com | ||
| 7 | +* copyright: 广州城市信息研究所有限公司 | ||
| 8 | +***************************************************************************/ | ||
| 9 | +#ifndef __dmphttpbase_h__ | ||
| 10 | +#define __dmphttpbase_h__ | ||
| 11 | +#include <iostream> | ||
| 12 | +#include <boost/asio.hpp> | ||
| 13 | +namespace DmpHttp | ||
| 14 | +{ | ||
| 15 | + #define HTTP_SUCCESS (0) // 操作成功 | ||
| 16 | + #define HTTP_ERROR_UNKNOWN (-1) // 未知的错误 | ||
| 17 | + #define HTTP_ERROR_NETWORK (-2) // 网络连接失败 | ||
| 18 | + #define HTTP_ERROR_HTTP_HEAD (-3) // 未找到协议头 http || https | ||
| 19 | + | ||
| 20 | + #define HTTP_ERROR_SERVICE (-1000) // 服务器请求失败 | ||
| 21 | + #define HTTP_ERROR_LOGIN (-1001) // 登录失败 | ||
| 22 | + #define HTTP_ERROR_ID (-1002) // 企业ID错误 | ||
| 23 | + #define HTTP_ERROR_USER (-1003) // 帐号不存在 | ||
| 24 | + #define HTTP_ERROR_PASSWORD (-1004) // 密码错误 | ||
| 25 | + | ||
| 26 | + #define HTTP_ERROR_PARAMETER (1) // 参数错误 | ||
| 27 | + #define HTTP_ERROR_PHONE (2) // 电话号码错误 | ||
| 28 | + #define HTTP_ERROR_MESSAGE (3) // 短信有屏蔽字段 | ||
| 29 | + #define HTTP_ERROR_FUNCTION (4) // 当前平台不支持这个功能 | ||
| 30 | + | ||
| 31 | + class DmpHttpBase | ||
| 32 | + { | ||
| 33 | + public: | ||
| 34 | + DmpHttpBase(); | ||
| 35 | + virtual ~DmpHttpBase(); | ||
| 36 | + // Post请求 | ||
| 37 | + virtual int post(const std::string& url) = 0; | ||
| 38 | + // get请求 | ||
| 39 | + virtual int get(const std::string& url) = 0; | ||
| 40 | + virtual std::string getResponse(void) = 0; | ||
| 41 | + | ||
| 42 | + protected: | ||
| 43 | + typedef int(*pBuildRequest)(const std::string&, const std::string&,std::ostream&); | ||
| 44 | + | ||
| 45 | + static int parseUrl(const std::string& url, std::string& out_server, | ||
| 46 | + std::string& out_port, std::string& out_path); | ||
| 47 | + static int buildPostRequest(const std::string& server, const std::string& path, | ||
| 48 | + std::ostream& out_request); | ||
| 49 | + static int buildGetRequest(const std::string& server, const std::string& path, | ||
| 50 | + std::ostream& out_request); | ||
| 51 | + }; | ||
| 52 | +} | ||
| 53 | + | ||
| 54 | + | ||
| 55 | + | ||
| 56 | + | ||
| 57 | #endif //__dmphttpbase_h__ | 57 | #endif //__dmphttpbase_h__ |
| 1 | -/************************************************************************** | ||
| 2 | -* file: dmphttputils.cpp | ||
| 3 | - | ||
| 4 | -* Author: lijiahuan | ||
| 5 | -* Date: 2021-12-09 17:41:00 | ||
| 6 | -* Email: jiahuanl@chinadci.com | ||
| 7 | -* copyright: 广州城市信息研究所有限公司 | ||
| 8 | -***************************************************************************/ | ||
| 9 | -#include "dmphttputils.h" | ||
| 10 | -#include <boost/bind.hpp> | ||
| 11 | - | ||
| 12 | -DmpHttp::DmpHttpUtils::DmpHttpUtils(boost::asio::io_service& io_service) | ||
| 13 | -: resolver_(io_service), socket_(io_service) {} | ||
| 14 | -DmpHttp::DmpHttpUtils::~DmpHttpUtils() {} | ||
| 15 | - | ||
| 16 | -int DmpHttp::DmpHttpUtils::post(const std::string& url) | ||
| 17 | -{ | ||
| 18 | - handle_request_resolve(url, DmpHttpBase::buildPostRequest); | ||
| 19 | - return HTTP_SUCCESS; | ||
| 20 | -} | ||
| 21 | -int DmpHttp::DmpHttpUtils::get(const std::string& url) | ||
| 22 | -{ | ||
| 23 | - handle_request_resolve(url, DmpHttpBase::buildGetRequest); | ||
| 24 | - return HTTP_SUCCESS; | ||
| 25 | -} | ||
| 26 | -void DmpHttp::DmpHttpUtils::handle_request_resolve(const std::string& url, pBuildRequest func) { | ||
| 27 | - try { | ||
| 28 | - responseData_.clear(); | ||
| 29 | - // 解析URL | ||
| 30 | - std::string server, port, path; | ||
| 31 | - parseUrl(url, server, port, path); | ||
| 32 | - | ||
| 33 | - std::ostream request_stream(&request_); | ||
| 34 | - // 合成请求 | ||
| 35 | - func(server, path, request_stream); | ||
| 36 | - | ||
| 37 | - // 解析服务地址\端口 | ||
| 38 | - boost::asio::ip::tcp::resolver::query query(server, port); | ||
| 39 | - resolver_.async_resolve(query, | ||
| 40 | - boost::bind(&DmpHttpUtils::handle_resolve, this, | ||
| 41 | - boost::asio::placeholders::error, | ||
| 42 | - boost::asio::placeholders::iterator)); | ||
| 43 | - } | ||
| 44 | - catch (std::exception& e) { | ||
| 45 | - socket_.close(); | ||
| 46 | - std::cout << "Exception: " << e.what() << "\n"; | ||
| 47 | - } | ||
| 48 | - return; | ||
| 49 | -} | ||
| 50 | -void DmpHttp::DmpHttpUtils::handle_resolve(const boost::system::error_code& err, | ||
| 51 | - boost::asio::ip::tcp::resolver::iterator endpoint_iterator) { | ||
| 52 | - if (err) { | ||
| 53 | - std::cout << "Error: " << err << "\n"; | ||
| 54 | - return; | ||
| 55 | - } | ||
| 56 | - // 尝试连接 | ||
| 57 | - boost::asio::async_connect(socket_, endpoint_iterator, | ||
| 58 | - boost::bind(&DmpHttpUtils::handle_connect, this, | ||
| 59 | - boost::asio::placeholders::error)); | ||
| 60 | -} | ||
| 61 | -void DmpHttp::DmpHttpUtils::handle_connect(const boost::system::error_code& err) { | ||
| 62 | - if (err) { | ||
| 63 | - std::cout << "Error: " << err << "\n"; | ||
| 64 | - return; | ||
| 65 | - } | ||
| 66 | - // 发送request请求 | ||
| 67 | - boost::asio::async_write(socket_, request_, | ||
| 68 | - boost::bind(&DmpHttpUtils::handle_write_request, this, | ||
| 69 | - boost::asio::placeholders::error)); | ||
| 70 | -} | ||
| 71 | -void DmpHttp::DmpHttpUtils::handle_write_request(const boost::system::error_code& err) { | ||
| 72 | - if (err) { | ||
| 73 | - std::cout << "Error: " << err << "\n"; | ||
| 74 | - return; | ||
| 75 | - } | ||
| 76 | - // 异步持续读数据到response_,直到接收协议符号 \r\n 为止 | ||
| 77 | - boost::asio::async_read_until(socket_, response_, "\r\n", | ||
| 78 | - boost::bind(&DmpHttpUtils::handle_read_status_line, this, | ||
| 79 | - boost::asio::placeholders::error)); | ||
| 80 | -} | ||
| 81 | -void DmpHttp::DmpHttpUtils::handle_read_status_line(const boost::system::error_code& err) { | ||
| 82 | - if (err) { | ||
| 83 | - std::cout << "Error: " << err << "\n"; | ||
| 84 | - return; | ||
| 85 | - } | ||
| 86 | - // 解析buff | ||
| 87 | - std::istream response_stream(&response_); | ||
| 88 | - unsigned int status_code; | ||
| 89 | - std::string http_version, status_message; | ||
| 90 | - response_stream >> http_version; | ||
| 91 | - response_stream >> status_code; | ||
| 92 | - std::getline(response_stream, status_message); | ||
| 93 | - | ||
| 94 | - // 核对是否是正确返回 | ||
| 95 | - if (!response_stream || http_version.substr(0, 5) != "HTTP/") { | ||
| 96 | - std::cout << "错误的响应数据\n"; | ||
| 97 | - return; | ||
| 98 | - } | ||
| 99 | - if (status_code != 200) { | ||
| 100 | - std::cout << "服务器响应的状态码: " << status_code << "\n"; | ||
| 101 | - return; | ||
| 102 | - } | ||
| 103 | - // 读取响应头,直到接收协议符号 \r\n\r\n 为止 | ||
| 104 | - boost::asio::async_read_until(socket_, response_, "\r\n\r\n", | ||
| 105 | - boost::bind(&DmpHttpUtils::handle_read_headers, this, | ||
| 106 | - boost::asio::placeholders::error)); | ||
| 107 | -} | ||
| 108 | - | ||
| 109 | -void DmpHttp::DmpHttpUtils::handle_read_headers(const boost::system::error_code& err) { | ||
| 110 | - if (err) { | ||
| 111 | - std::cout << "Error: " << err << "\n"; | ||
| 112 | - return; | ||
| 113 | - } | ||
| 114 | - // 输出响应头 | ||
| 115 | - std::istream response_stream(&response_); | ||
| 116 | - std::string header; | ||
| 117 | - while (std::getline(response_stream, header) && header != "\r") { | ||
| 118 | -#ifdef _DEBUG | ||
| 119 | - std::cout << header << "\n"; | ||
| 120 | -#endif | ||
| 121 | - } | ||
| 122 | -#ifdef _DEBUG | ||
| 123 | - std::cout << "\n"; | ||
| 124 | -#endif | ||
| 125 | - | ||
| 126 | - // 写完所有剩余的内容 | ||
| 127 | - if (response_.size() > 0) { | ||
| 128 | - boost::asio::streambuf::const_buffers_type cbt = response_.data(); | ||
| 129 | - responseData_ += std::string(boost::asio::buffers_begin(cbt), boost::asio::buffers_end(cbt)); | ||
| 130 | -#ifdef _DEBUG | ||
| 131 | - std::cout << &response_; | ||
| 132 | -#endif | ||
| 133 | - } | ||
| 134 | - | ||
| 135 | - // 开始读取剩余所有内容 | ||
| 136 | - boost::asio::async_read(socket_, response_, | ||
| 137 | - boost::asio::transfer_at_least(1), | ||
| 138 | - boost::bind(&DmpHttpUtils::handle_read_content, this, | ||
| 139 | - boost::asio::placeholders::error)); | ||
| 140 | -} | ||
| 141 | -void DmpHttp::DmpHttpUtils::handle_read_content(const boost::system::error_code& err) { | ||
| 142 | - if (!err) { | ||
| 143 | - | ||
| 144 | - // 输出读到的数据 | ||
| 145 | - boost::asio::streambuf::const_buffers_type cbt = response_.data(); | ||
| 146 | - | ||
| 147 | - responseData_ = std::string(boost::asio::buffers_begin(cbt), boost::asio::buffers_end(cbt)); | ||
| 148 | -#ifdef _DEBUG | ||
| 149 | - std::cout << &response_; | ||
| 150 | -#endif | ||
| 151 | - | ||
| 152 | - // 继续读取剩余内容,直到读到EOF | ||
| 153 | - boost::asio::async_read(socket_, response_, | ||
| 154 | - boost::asio::transfer_at_least(1), | ||
| 155 | - boost::bind(&DmpHttpUtils::handle_read_content, this, | ||
| 156 | - boost::asio::placeholders::error)); | ||
| 157 | - | ||
| 158 | - } | ||
| 159 | - else if (err != boost::asio::error::eof) { | ||
| 160 | - std::cout << "Error: " << err << "\n"; | ||
| 161 | - } | ||
| 162 | - else { | ||
| 163 | - socket_.close(); | ||
| 164 | - resolver_.cancel(); | ||
| 165 | - std::cout << "读取响应数据完毕." << std::endl; | ||
| 166 | - //std::cout << responseData_; | ||
| 167 | - } | ||
| 168 | -} | ||
| 169 | - | ||
| 170 | - | ||
| 171 | -std::string DmpHttp::post(std::string url) { | ||
| 172 | - boost::asio::io_service io; | ||
| 173 | - DmpHttp::DmpHttpUtils c(io); | ||
| 174 | - c.post(url); | ||
| 175 | - io.run(); | ||
| 176 | - return c.getResponse(); | ||
| 177 | -} | ||
| 178 | - | ||
| 179 | -std::string DmpHttp::get(std::string url) { | ||
| 180 | - boost::asio::io_service io; | ||
| 181 | - DmpHttp::DmpHttpUtils c(io); | ||
| 182 | - c.get(url); | ||
| 183 | - io.run(); | ||
| 184 | - return c.getResponse(); | 1 | +/************************************************************************** |
| 2 | +* file: dmphttputils.cpp | ||
| 3 | + | ||
| 4 | +* Author: lijiahuan | ||
| 5 | +* Date: 2021-12-09 17:41:00 | ||
| 6 | +* Email: jiahuanl@chinadci.com | ||
| 7 | +* copyright: 广州城市信息研究所有限公司 | ||
| 8 | +***************************************************************************/ | ||
| 9 | +#include "dmphttputils.h" | ||
| 10 | +#include <boost/bind.hpp> | ||
| 11 | + | ||
| 12 | +DmpHttp::DmpHttpUtils::DmpHttpUtils(boost::asio::io_service& io_service) | ||
| 13 | +: resolver_(io_service), socket_(io_service) {} | ||
| 14 | +DmpHttp::DmpHttpUtils::~DmpHttpUtils() {} | ||
| 15 | + | ||
| 16 | +int DmpHttp::DmpHttpUtils::post(const std::string& url) | ||
| 17 | +{ | ||
| 18 | + handle_request_resolve(url, DmpHttpBase::buildPostRequest); | ||
| 19 | + return HTTP_SUCCESS; | ||
| 20 | +} | ||
| 21 | +int DmpHttp::DmpHttpUtils::get(const std::string& url) | ||
| 22 | +{ | ||
| 23 | + handle_request_resolve(url, DmpHttpBase::buildGetRequest); | ||
| 24 | + return HTTP_SUCCESS; | ||
| 25 | +} | ||
| 26 | +void DmpHttp::DmpHttpUtils::handle_request_resolve(const std::string& url, pBuildRequest func) { | ||
| 27 | + try { | ||
| 28 | + responseData_.clear(); | ||
| 29 | + // 解析URL | ||
| 30 | + std::string server, port, path; | ||
| 31 | + parseUrl(url, server, port, path); | ||
| 32 | + | ||
| 33 | + std::ostream request_stream(&request_); | ||
| 34 | + // 合成请求 | ||
| 35 | + func(server, path, request_stream); | ||
| 36 | + | ||
| 37 | + // 解析服务地址\端口 | ||
| 38 | + boost::asio::ip::tcp::resolver::query query(server, port); | ||
| 39 | + resolver_.async_resolve(query, | ||
| 40 | + boost::bind(&DmpHttpUtils::handle_resolve, this, | ||
| 41 | + boost::asio::placeholders::error, | ||
| 42 | + boost::asio::placeholders::iterator)); | ||
| 43 | + } | ||
| 44 | + catch (std::exception& e) { | ||
| 45 | + socket_.close(); | ||
| 46 | + std::cout << "Exception: " << e.what() << "\n"; | ||
| 47 | + } | ||
| 48 | + return; | ||
| 49 | +} | ||
| 50 | +void DmpHttp::DmpHttpUtils::handle_resolve(const boost::system::error_code& err, | ||
| 51 | + boost::asio::ip::tcp::resolver::iterator endpoint_iterator) { | ||
| 52 | + if (err) { | ||
| 53 | + std::cout << "Error: " << err << "\n"; | ||
| 54 | + return; | ||
| 55 | + } | ||
| 56 | + // 尝试连接 | ||
| 57 | + boost::asio::async_connect(socket_, endpoint_iterator, | ||
| 58 | + boost::bind(&DmpHttpUtils::handle_connect, this, | ||
| 59 | + boost::asio::placeholders::error)); | ||
| 60 | +} | ||
| 61 | +void DmpHttp::DmpHttpUtils::handle_connect(const boost::system::error_code& err) { | ||
| 62 | + if (err) { | ||
| 63 | + std::cout << "Error: " << err << "\n"; | ||
| 64 | + return; | ||
| 65 | + } | ||
| 66 | + // 发送request请求 | ||
| 67 | + boost::asio::async_write(socket_, request_, | ||
| 68 | + boost::bind(&DmpHttpUtils::handle_write_request, this, | ||
| 69 | + boost::asio::placeholders::error)); | ||
| 70 | +} | ||
| 71 | +void DmpHttp::DmpHttpUtils::handle_write_request(const boost::system::error_code& err) { | ||
| 72 | + if (err) { | ||
| 73 | + std::cout << "Error: " << err << "\n"; | ||
| 74 | + return; | ||
| 75 | + } | ||
| 76 | + // 异步持续读数据到response_,直到接收协议符号 \r\n 为止 | ||
| 77 | + boost::asio::async_read_until(socket_, response_, "\r\n", | ||
| 78 | + boost::bind(&DmpHttpUtils::handle_read_status_line, this, | ||
| 79 | + boost::asio::placeholders::error)); | ||
| 80 | +} | ||
| 81 | +void DmpHttp::DmpHttpUtils::handle_read_status_line(const boost::system::error_code& err) { | ||
| 82 | + if (err) { | ||
| 83 | + std::cout << "Error: " << err << "\n"; | ||
| 84 | + return; | ||
| 85 | + } | ||
| 86 | + // 解析buff | ||
| 87 | + std::istream response_stream(&response_); | ||
| 88 | + unsigned int status_code; | ||
| 89 | + std::string http_version, status_message; | ||
| 90 | + response_stream >> http_version; | ||
| 91 | + response_stream >> status_code; | ||
| 92 | + std::getline(response_stream, status_message); | ||
| 93 | + | ||
| 94 | + // 核对是否是正确返回 | ||
| 95 | + if (!response_stream || http_version.substr(0, 5) != "HTTP/") { | ||
| 96 | + std::cout << "错误的响应数据\n"; | ||
| 97 | + return; | ||
| 98 | + } | ||
| 99 | + if (status_code != 200) { | ||
| 100 | + std::cout << "服务器响应的状态码: " << status_code << "\n"; | ||
| 101 | + return; | ||
| 102 | + } | ||
| 103 | + // 读取响应头,直到接收协议符号 \r\n\r\n 为止 | ||
| 104 | + boost::asio::async_read_until(socket_, response_, "\r\n\r\n", | ||
| 105 | + boost::bind(&DmpHttpUtils::handle_read_headers, this, | ||
| 106 | + boost::asio::placeholders::error)); | ||
| 107 | +} | ||
| 108 | + | ||
| 109 | +void DmpHttp::DmpHttpUtils::handle_read_headers(const boost::system::error_code& err) { | ||
| 110 | + if (err) { | ||
| 111 | + std::cout << "Error: " << err << "\n"; | ||
| 112 | + return; | ||
| 113 | + } | ||
| 114 | + // 输出响应头 | ||
| 115 | + std::istream response_stream(&response_); | ||
| 116 | + std::string header; | ||
| 117 | + while (std::getline(response_stream, header) && header != "\r") { | ||
| 118 | +#ifdef _DEBUG | ||
| 119 | + std::cout << header << "\n"; | ||
| 120 | +#endif | ||
| 121 | + } | ||
| 122 | +#ifdef _DEBUG | ||
| 123 | + std::cout << "\n"; | ||
| 124 | +#endif | ||
| 125 | + | ||
| 126 | + // 写完所有剩余的内容 | ||
| 127 | + if (response_.size() > 0) { | ||
| 128 | + boost::asio::streambuf::const_buffers_type cbt = response_.data(); | ||
| 129 | + responseData_ += std::string(boost::asio::buffers_begin(cbt), boost::asio::buffers_end(cbt)); | ||
| 130 | +#ifdef _DEBUG | ||
| 131 | + std::cout << &response_; | ||
| 132 | +#endif | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + // 开始读取剩余所有内容 | ||
| 136 | + boost::asio::async_read(socket_, response_, | ||
| 137 | + boost::asio::transfer_at_least(1), | ||
| 138 | + boost::bind(&DmpHttpUtils::handle_read_content, this, | ||
| 139 | + boost::asio::placeholders::error)); | ||
| 140 | +} | ||
| 141 | +void DmpHttp::DmpHttpUtils::handle_read_content(const boost::system::error_code& err) { | ||
| 142 | + if (!err) { | ||
| 143 | + | ||
| 144 | + // 输出读到的数据 | ||
| 145 | + boost::asio::streambuf::const_buffers_type cbt = response_.data(); | ||
| 146 | + | ||
| 147 | + responseData_ = std::string(boost::asio::buffers_begin(cbt), boost::asio::buffers_end(cbt)); | ||
| 148 | +#ifdef _DEBUG | ||
| 149 | + std::cout << &response_; | ||
| 150 | +#endif | ||
| 151 | + | ||
| 152 | + // 继续读取剩余内容,直到读到EOF | ||
| 153 | + boost::asio::async_read(socket_, response_, | ||
| 154 | + boost::asio::transfer_at_least(1), | ||
| 155 | + boost::bind(&DmpHttpUtils::handle_read_content, this, | ||
| 156 | + boost::asio::placeholders::error)); | ||
| 157 | + | ||
| 158 | + } | ||
| 159 | + else if (err != boost::asio::error::eof) { | ||
| 160 | + std::cout << "Error: " << err << "\n"; | ||
| 161 | + } | ||
| 162 | + else { | ||
| 163 | + socket_.close(); | ||
| 164 | + resolver_.cancel(); | ||
| 165 | + std::cout << "读取响应数据完毕." << std::endl; | ||
| 166 | + //std::cout << responseData_; | ||
| 167 | + } | ||
| 168 | +} | ||
| 169 | + | ||
| 170 | + | ||
| 171 | +std::string DmpHttp::post(std::string url) { | ||
| 172 | + boost::asio::io_service io; | ||
| 173 | + DmpHttp::DmpHttpUtils c(io); | ||
| 174 | + c.post(url); | ||
| 175 | + io.run(); | ||
| 176 | + return c.getResponse(); | ||
| 177 | +} | ||
| 178 | + | ||
| 179 | +std::string DmpHttp::get(std::string url) { | ||
| 180 | + boost::asio::io_service io; | ||
| 181 | + DmpHttp::DmpHttpUtils c(io); | ||
| 182 | + c.get(url); | ||
| 183 | + io.run(); | ||
| 184 | + return c.getResponse(); | ||
| 185 | } | 185 | } |
| 1 | -/************************************************************************** | ||
| 2 | -* file: dmphttputils.h | ||
| 3 | - | ||
| 4 | -* Author: lijiahuan | ||
| 5 | -* Date: 2021-12-09 17:41:00 | ||
| 6 | -* Email: jiahuanl@chinadci.com | ||
| 7 | -* copyright: 广州城市信息研究所有限公司 | ||
| 8 | -***************************************************************************/ | ||
| 9 | -#ifndef __dmppghttputils_h__ | ||
| 10 | -#define __dmppghttputils_h__ | ||
| 11 | -#include <iostream> | ||
| 12 | -#include <boost/asio.hpp> | ||
| 13 | -#include "dmphttpbase.h" | ||
| 14 | - | ||
| 15 | -namespace DmpHttp | ||
| 16 | -{ | ||
| 17 | - class DmpHttpUtils : public DmpHttpBase | ||
| 18 | - { | ||
| 19 | - public: | ||
| 20 | - DmpHttpUtils(boost::asio::io_service& io_service); | ||
| 21 | - virtual ~DmpHttpUtils(); | ||
| 22 | - virtual int post(const std::string& url); | ||
| 23 | - virtual int get(const std::string& url); | ||
| 24 | - | ||
| 25 | - virtual std::string getResponse(void) {return responseData_;} | ||
| 26 | - private: | ||
| 27 | - // 建立请求 | ||
| 28 | - void handle_request_resolve(const std::string& url, pBuildRequest func); | ||
| 29 | - // 解析后 | ||
| 30 | - void handle_resolve(const boost::system::error_code& err, | ||
| 31 | - boost::asio::ip::tcp::resolver::iterator endpoint_iterator); | ||
| 32 | - // 连接后 | ||
| 33 | - void handle_connect(const boost::system::error_code& err); | ||
| 34 | - // 发送请求后 | ||
| 35 | - void handle_write_request(const boost::system::error_code& err); | ||
| 36 | - // 读取响应后 | ||
| 37 | - void handle_read_status_line(const boost::system::error_code& err); | ||
| 38 | - // 读取响应头后 | ||
| 39 | - void handle_read_headers(const boost::system::error_code& err); | ||
| 40 | - // 读取正文数据后 | ||
| 41 | - void handle_read_content(const boost::system::error_code& err); | ||
| 42 | - private: | ||
| 43 | - // 解析器 | ||
| 44 | - boost::asio::ip::tcp::resolver resolver_; | ||
| 45 | - // 套接字 | ||
| 46 | - boost::asio::ip::tcp::socket socket_; | ||
| 47 | - // 请求缓冲区 | ||
| 48 | - boost::asio::streambuf request_; | ||
| 49 | - // 响应缓冲区 | ||
| 50 | - boost::asio::streambuf response_; | ||
| 51 | - // 响应数据 | ||
| 52 | - std::string responseData_; | ||
| 53 | - }; | ||
| 54 | - std::string post(std::string url); | ||
| 55 | - std::string get(std::string url); | ||
| 56 | -} | ||
| 57 | - | 1 | +/************************************************************************** |
| 2 | +* file: dmphttputils.h | ||
| 3 | + | ||
| 4 | +* Author: lijiahuan | ||
| 5 | +* Date: 2021-12-09 17:41:00 | ||
| 6 | +* Email: jiahuanl@chinadci.com | ||
| 7 | +* copyright: 广州城市信息研究所有限公司 | ||
| 8 | +***************************************************************************/ | ||
| 9 | +#ifndef __dmppghttputils_h__ | ||
| 10 | +#define __dmppghttputils_h__ | ||
| 11 | +#include <iostream> | ||
| 12 | +#include <boost/asio.hpp> | ||
| 13 | +#include "dmphttpbase.h" | ||
| 14 | + | ||
| 15 | +namespace DmpHttp | ||
| 16 | +{ | ||
| 17 | + class DmpHttpUtils : public DmpHttpBase | ||
| 18 | + { | ||
| 19 | + public: | ||
| 20 | + DmpHttpUtils(boost::asio::io_service& io_service); | ||
| 21 | + virtual ~DmpHttpUtils(); | ||
| 22 | + virtual int post(const std::string& url); | ||
| 23 | + virtual int get(const std::string& url); | ||
| 24 | + | ||
| 25 | + virtual std::string getResponse(void) {return responseData_;} | ||
| 26 | + private: | ||
| 27 | + // 建立请求 | ||
| 28 | + void handle_request_resolve(const std::string& url, pBuildRequest func); | ||
| 29 | + // 解析后 | ||
| 30 | + void handle_resolve(const boost::system::error_code& err, | ||
| 31 | + boost::asio::ip::tcp::resolver::iterator endpoint_iterator); | ||
| 32 | + // 连接后 | ||
| 33 | + void handle_connect(const boost::system::error_code& err); | ||
| 34 | + // 发送请求后 | ||
| 35 | + void handle_write_request(const boost::system::error_code& err); | ||
| 36 | + // 读取响应后 | ||
| 37 | + void handle_read_status_line(const boost::system::error_code& err); | ||
| 38 | + // 读取响应头后 | ||
| 39 | + void handle_read_headers(const boost::system::error_code& err); | ||
| 40 | + // 读取正文数据后 | ||
| 41 | + void handle_read_content(const boost::system::error_code& err); | ||
| 42 | + private: | ||
| 43 | + // 解析器 | ||
| 44 | + boost::asio::ip::tcp::resolver resolver_; | ||
| 45 | + // 套接字 | ||
| 46 | + boost::asio::ip::tcp::socket socket_; | ||
| 47 | + // 请求缓冲区 | ||
| 48 | + boost::asio::streambuf request_; | ||
| 49 | + // 响应缓冲区 | ||
| 50 | + boost::asio::streambuf response_; | ||
| 51 | + // 响应数据 | ||
| 52 | + std::string responseData_; | ||
| 53 | + }; | ||
| 54 | + std::string post(std::string url); | ||
| 55 | + std::string get(std::string url); | ||
| 56 | +} | ||
| 57 | + | ||
| 58 | #endif //__dmphttpsutils_h__ | 58 | #endif //__dmphttpsutils_h__ |
| 1 | -/************************************************************************** | ||
| 2 | -* file: dmptmstileprovider.cpp | ||
| 3 | - | ||
| 4 | -* Author: lijiahuan | ||
| 5 | -* Date: 2021-12-09 17:41:00 | ||
| 6 | -* Email: jiahuanl@chinadci.com | ||
| 7 | -* copyright: 广州城市信息研究所有限公司 | ||
| 8 | -***************************************************************************/ | ||
| 9 | -#include "dmptmstileprovider.h" | ||
| 10 | -#include "dmpserverresponse.h" | ||
| 11 | -namespace DmpTms | ||
| 12 | -{ | ||
| 13 | - DmpTmsTileProvider::DmpTmsTileProvider(const std::string& root_path) | ||
| 14 | - { | ||
| 15 | - file_rootPath=root_path; | ||
| 16 | - } | ||
| 17 | - void DmpTmsTileProvider::WriteTile(const int row, const int col, const int level, const std::string& format, DmpServerResponse& response) | ||
| 18 | - { | ||
| 19 | - std::string tile_path = file_rootPath+"/"+std::to_string(level)+"/"+std::to_string(row)+"/"+std::to_string(col)+"."+format; | ||
| 20 | - std::ifstream fread(tile_path, std::ifstream::binary); | ||
| 21 | - if(!fread) | ||
| 22 | - { | ||
| 23 | - response.sendError(500, "找不到瓦片:("); | ||
| 24 | - return; | ||
| 25 | - } | ||
| 26 | - fread.seekg(0,fread.end); | ||
| 27 | - int length = fread.tellg(); | ||
| 28 | - if(length > 0) | ||
| 29 | - { | ||
| 30 | - fread.seekg(0,fread.beg); | ||
| 31 | - char* buff = new char[length]; | ||
| 32 | - fread.read(buff,length); | ||
| 33 | - | ||
| 34 | - std::string f = (format == "jpg") ? "image/jpg" : "image/png"; | ||
| 35 | - response.setHeader("Content-Type", f); | ||
| 36 | - response.writeContent(buff, length); | ||
| 37 | - | ||
| 38 | - delete buff; | ||
| 39 | - } | ||
| 40 | - else | ||
| 41 | - { | ||
| 42 | - response.sendError(500, "找不到瓦片:("); | ||
| 43 | - } | ||
| 44 | - fread.close(); | ||
| 45 | - } | 1 | +/************************************************************************** |
| 2 | +* file: dmptmstileprovider.cpp | ||
| 3 | + | ||
| 4 | +* Author: lijiahuan | ||
| 5 | +* Date: 2021-12-09 17:41:00 | ||
| 6 | +* Email: jiahuanl@chinadci.com | ||
| 7 | +* copyright: 广州城市信息研究所有限公司 | ||
| 8 | +***************************************************************************/ | ||
| 9 | +#include "dmptmstileprovider.h" | ||
| 10 | +#include "dmpserverresponse.h" | ||
| 11 | +namespace DmpTms | ||
| 12 | +{ | ||
| 13 | + DmpTmsTileProvider::DmpTmsTileProvider(const std::string& root_path) | ||
| 14 | + { | ||
| 15 | + file_rootPath=root_path; | ||
| 16 | + } | ||
| 17 | + void DmpTmsTileProvider::WriteTile(const int row, const int col, const int level, const std::string& format, DmpServerResponse& response) | ||
| 18 | + { | ||
| 19 | + std::string tile_path = file_rootPath+"/"+std::to_string(level)+"/"+std::to_string(row)+"/"+std::to_string(col)+"."+format; | ||
| 20 | + std::ifstream fread(tile_path, std::ifstream::binary); | ||
| 21 | + if(!fread) | ||
| 22 | + { | ||
| 23 | + response.sendError(500, "找不到瓦片:("); | ||
| 24 | + return; | ||
| 25 | + } | ||
| 26 | + fread.seekg(0,fread.end); | ||
| 27 | + int length = fread.tellg(); | ||
| 28 | + if(length > 0) | ||
| 29 | + { | ||
| 30 | + fread.seekg(0,fread.beg); | ||
| 31 | + char* buff = new char[length]; | ||
| 32 | + fread.read(buff,length); | ||
| 33 | + | ||
| 34 | + std::string f = (format == "jpg") ? "image/jpg" : "image/png"; | ||
| 35 | + response.setHeader("Content-Type", f); | ||
| 36 | + response.writeContent(buff, length); | ||
| 37 | + | ||
| 38 | + delete buff; | ||
| 39 | + } | ||
| 40 | + else | ||
| 41 | + { | ||
| 42 | + response.sendError(500, "找不到瓦片:("); | ||
| 43 | + } | ||
| 44 | + fread.close(); | ||
| 45 | + } | ||
| 46 | } | 46 | } |
| 1 | -/************************************************************************** | ||
| 2 | -* file: dmptmstileprovider.h | ||
| 3 | - | ||
| 4 | -* Author: lijiahuan | ||
| 5 | -* Date: 2021-12-09 17:41:00 | ||
| 6 | -* Email: jiahuanl@chinadci.com | ||
| 7 | -* copyright: 广州城市信息研究所有限公司 | ||
| 8 | -***************************************************************************/ | ||
| 9 | -#ifndef __dmptmstileprovider_h__ | ||
| 10 | -#define __dmptmstileprovider_h__ | ||
| 11 | - | ||
| 12 | -#include <string> | ||
| 13 | -#include "dmpserverresponse.h" | ||
| 14 | - | ||
| 15 | -namespace DmpTms | ||
| 16 | -{ | ||
| 17 | - class DmpTmsTileProvider | ||
| 18 | - { | ||
| 19 | - public: | ||
| 20 | - std::string ImageFormat() const; | ||
| 21 | - DmpTmsTileProvider(const std::string& root_path); | ||
| 22 | - void WriteTile(const int row, const int col, const int level, const std::string& format, DmpServerResponse& response) ; | ||
| 23 | - protected: | ||
| 24 | - std::string file_rootPath; | ||
| 25 | - }; | ||
| 26 | -} | ||
| 27 | - | 1 | +/************************************************************************** |
| 2 | +* file: dmptmstileprovider.h | ||
| 3 | + | ||
| 4 | +* Author: lijiahuan | ||
| 5 | +* Date: 2021-12-09 17:41:00 | ||
| 6 | +* Email: jiahuanl@chinadci.com | ||
| 7 | +* copyright: 广州城市信息研究所有限公司 | ||
| 8 | +***************************************************************************/ | ||
| 9 | +#ifndef __dmptmstileprovider_h__ | ||
| 10 | +#define __dmptmstileprovider_h__ | ||
| 11 | + | ||
| 12 | +#include <string> | ||
| 13 | +#include "dmpserverresponse.h" | ||
| 14 | + | ||
| 15 | +namespace DmpTms | ||
| 16 | +{ | ||
| 17 | + class DmpTmsTileProvider | ||
| 18 | + { | ||
| 19 | + public: | ||
| 20 | + std::string ImageFormat() const; | ||
| 21 | + DmpTmsTileProvider(const std::string& root_path); | ||
| 22 | + void WriteTile(const int row, const int col, const int level, const std::string& format, DmpServerResponse& response) ; | ||
| 23 | + protected: | ||
| 24 | + std::string file_rootPath; | ||
| 25 | + }; | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | #endif | 28 | #endif |
请
注册
或
登录
后发表评论