正在显示
4 个修改的文件
包含
76 行增加
和
16 行删除
@@ -182,7 +182,12 @@ bool DmpServerManager::loadServices() | @@ -182,7 +182,12 @@ bool DmpServerManager::loadServices() | ||
182 | std::string type = e.second.get<std::string>("type"); | 182 | std::string type = e.second.get<std::string>("type"); |
183 | int capabilities = e.second.get<int>("capabilities"); | 183 | int capabilities = e.second.get<int>("capabilities"); |
184 | std::string project = e.second.get<std::string>("project"); | 184 | std::string project = e.second.get<std::string>("project"); |
185 | + std::string state = e.second.get<std::string>("state"); | ||
185 | this->initServices(type, name, title, capabilities, project); | 186 | this->initServices(type, name, title, capabilities, project); |
187 | + if(state=="0") | ||
188 | + { | ||
189 | + serverRegistry_->getServer(type)->stop(name); | ||
190 | + } | ||
186 | } | 191 | } |
187 | } | 192 | } |
188 | } | 193 | } |
@@ -208,7 +213,7 @@ bool DmpServerManager::initServices(const std::string &serverName, const std::st | @@ -208,7 +213,7 @@ bool DmpServerManager::initServices(const std::string &serverName, const std::st | ||
208 | delete project; | 213 | delete project; |
209 | return false; | 214 | return false; |
210 | } | 215 | } |
211 | - | 216 | + |
212 | project->initVectorLayerVacuate([](const std::string &tableguid) | 217 | project->initVectorLayerVacuate([](const std::string &tableguid) |
213 | { return DmpHttp::get(DmpServerConfig::Instance()->getMetaUrl() + URL_VACUATE + tableguid); }); | 218 | { return DmpHttp::get(DmpServerConfig::Instance()->getMetaUrl() + URL_VACUATE + tableguid); }); |
214 | 219 |
@@ -181,7 +181,21 @@ void DmpManagerApiHandler::startService(const DmpServerApiContext &context) cons | @@ -181,7 +181,21 @@ void DmpManagerApiHandler::startService(const DmpServerApiContext &context) cons | ||
181 | params.getValue("servername", serverName); | 181 | params.getValue("servername", serverName); |
182 | std::string serviceName; | 182 | std::string serviceName; |
183 | params.getValue("servicename",serviceName); | 183 | params.getValue("servicename",serviceName); |
184 | - context.manager()->startService(serverName, serviceName); | 184 | + if(serverName.empty()||serviceName.empty()) |
185 | + { | ||
186 | + context.response()->write("{\"status\":\"false\",\"message\":"+serviceName+"\"服务启动失败\"}"); | ||
187 | + return; | ||
188 | + } | ||
189 | + | ||
190 | + bool flag=context.manager()->startService(serverName, serviceName); | ||
191 | + if(flag) | ||
192 | + { | ||
193 | + context.response()->write("{\"status\":\"true\",\"message\":"+serviceName+"\"服务启动\"}"); | ||
194 | + } | ||
195 | + else | ||
196 | + { | ||
197 | + context.response()->write("{\"status\":\"false\",\"message\":"+serviceName+"\"服务启动失败\"}"); | ||
198 | + } | ||
185 | break; | 199 | break; |
186 | } | 200 | } |
187 | case DmpServerRequest::Method::POST_METHOD: | 201 | case DmpServerRequest::Method::POST_METHOD: |
@@ -206,7 +220,20 @@ void DmpManagerApiHandler::stopService(const DmpServerApiContext &context) const | @@ -206,7 +220,20 @@ void DmpManagerApiHandler::stopService(const DmpServerApiContext &context) const | ||
206 | params.getValue("servername", serverName); | 220 | params.getValue("servername", serverName); |
207 | std::string serviceName; | 221 | std::string serviceName; |
208 | params.getValue("servicename",serviceName); | 222 | params.getValue("servicename",serviceName); |
209 | - context.manager()->stopService(serverName, serviceName); | 223 | + if(serverName.empty()||serviceName.empty()) |
224 | + { | ||
225 | + context.response()->write("{\"status\":\"false\",\"message\":"+serviceName+"\"服务启动失败\"}"); | ||
226 | + return; | ||
227 | + } | ||
228 | + bool flag=context.manager()->stopService(serverName, serviceName); | ||
229 | + if(flag) | ||
230 | + { | ||
231 | + context.response()->write("{\"status\":\"true\",\"message\":"+serviceName+"\"服务停止\"}"); | ||
232 | + } | ||
233 | + else | ||
234 | + { | ||
235 | + context.response()->write("{\"status\":\"false\",\"message\":"+serviceName+"\"服务停止失败\"}"); | ||
236 | + } | ||
210 | break; | 237 | break; |
211 | } | 238 | } |
212 | case DmpServerRequest::Method::POST_METHOD: | 239 | case DmpServerRequest::Method::POST_METHOD: |
@@ -310,7 +337,7 @@ void DmpManagerApiHandler::GetTileServiceInfo(const DmpServerApiContext &context | @@ -310,7 +337,7 @@ void DmpManagerApiHandler::GetTileServiceInfo(const DmpServerApiContext &context | ||
310 | 337 | ||
311 | boost::property_tree::read_json(stream, pt); | 338 | boost::property_tree::read_json(stream, pt); |
312 | path= pt.get<std::string>("projectlayers.maplayer.datasource"); | 339 | path= pt.get<std::string>("projectlayers.maplayer.datasource"); |
313 | - path="/mnt/d/Code/tiles"; | 340 | + //path="/mnt/d/Code/tiles"; |
314 | confcdipath=path+"/conf.cdi"; | 341 | confcdipath=path+"/conf.cdi"; |
315 | confxmlpath=path+"/conf.xml"; | 342 | confxmlpath=path+"/conf.xml"; |
316 | std::ifstream fread(confxmlpath, std::ifstream::binary); | 343 | std::ifstream fread(confxmlpath, std::ifstream::binary); |
@@ -75,7 +75,11 @@ namespace tileserver | @@ -75,7 +75,11 @@ namespace tileserver | ||
75 | //cairo_surface_write_to_png (surface, "./tms.png"); | 75 | //cairo_surface_write_to_png (surface, "./tms.png"); |
76 | //LOGGER_DEBUG(filepath); | 76 | //LOGGER_DEBUG(filepath); |
77 | } | 77 | } |
78 | - } | 78 | + } |
79 | + | ||
80 | + | ||
81 | + | ||
82 | + | ||
79 | //cairo_surface_write_to_png (surface, "./tms.png"); | 83 | //cairo_surface_write_to_png (surface, "./tms.png"); |
80 | std::string responseData; | 84 | std::string responseData; |
81 | cairo_surface_write_to_png_stream(surface, cairo_write_func, &responseData); | 85 | cairo_surface_write_to_png_stream(surface, cairo_write_func, &responseData); |
@@ -19,7 +19,7 @@ namespace tileserver | @@ -19,7 +19,7 @@ namespace tileserver | ||
19 | DmpEsriTileProvider::DmpEsriTileProvider(const std::string& rootPath) | 19 | DmpEsriTileProvider::DmpEsriTileProvider(const std::string& rootPath) |
20 | : DmpTileProvider(rootPath) | 20 | : DmpTileProvider(rootPath) |
21 | { | 21 | { |
22 | - // this->_rootPath ="/mnt/d/Data/tile/ShareMap2014/Layers/_alllayers/"; | 22 | + //rootPath_ ="/mnt/d/Code/tiles/SD_2014/Layers/_alllayers"; |
23 | } | 23 | } |
24 | 24 | ||
25 | std::string DmpEsriTileProvider::IntToHex8Str(const int num) | 25 | std::string DmpEsriTileProvider::IntToHex8Str(const int num) |
@@ -36,7 +36,7 @@ namespace tileserver | @@ -36,7 +36,7 @@ namespace tileserver | ||
36 | std::string row_str = "R" + IntToHex8Str(row); | 36 | std::string row_str = "R" + IntToHex8Str(row); |
37 | std::string col_str = "C" + IntToHex8Str(col); | 37 | std::string col_str = "C" + IntToHex8Str(col); |
38 | 38 | ||
39 | - std::string tile_path = rootPath_ + level_str + "/"+ row_str+"/"+ col_str + "." + format; | 39 | + std::string tile_path = rootPath_ +"/"+ level_str + "/"+ row_str+"/"+ col_str + "." + format; |
40 | 40 | ||
41 | std::ifstream fread(tile_path, std::ifstream::binary); | 41 | std::ifstream fread(tile_path, std::ifstream::binary); |
42 | if(!fread) | 42 | if(!fread) |
@@ -70,8 +70,8 @@ namespace tileserver | @@ -70,8 +70,8 @@ namespace tileserver | ||
70 | DmpRectangle rectangle=dmpTileLayer->extent(); | 70 | DmpRectangle rectangle=dmpTileLayer->extent(); |
71 | std::string format=dmpTileLayer->getFormat(); | 71 | std::string format=dmpTileLayer->getFormat(); |
72 | 72 | ||
73 | - DmpPoint min=DmpPoint(rectangle.xmin(),rectangle.ymin()); | ||
74 | - DmpPoint max=DmpPoint(rectangle.xmax(),rectangle.ymax()); | 73 | + DmpPoint min=DmpPoint(rectangle.xmin(),rectangle.ymax()); |
74 | + DmpPoint max=DmpPoint(rectangle.xmax(),rectangle.ymin()); | ||
75 | std::vector<DmpTileMatrixSet*> tileMatrixSets; | 75 | std::vector<DmpTileMatrixSet*> tileMatrixSets; |
76 | dmpTileLayer->getTileMatrixSets(tileMatrixSets); | 76 | dmpTileLayer->getTileMatrixSets(tileMatrixSets); |
77 | double resolution; | 77 | double resolution; |
@@ -97,16 +97,41 @@ namespace tileserver | @@ -97,16 +97,41 @@ namespace tileserver | ||
97 | TileProviderFactory::BufferCopy(image,surface,cr,i*256,j*256); | 97 | TileProviderFactory::BufferCopy(image,surface,cr,i*256,j*256); |
98 | } | 98 | } |
99 | //TileProviderFactory::BufferCopy(image,surface,cr,i*256,j*256); | 99 | //TileProviderFactory::BufferCopy(image,surface,cr,i*256,j*256); |
100 | - //cairo_surface_write_to_png (surface, "./wmts.png"); | 100 | + |
101 | } | 101 | } |
102 | } | 102 | } |
103 | + cairo_surface_write_to_png (surface, "./wmts.png"); | ||
104 | + cairo_surface_t* newimage=surface; | ||
105 | + | ||
106 | + int w,h; | ||
107 | + w = cairo_image_surface_get_width (newimage); | ||
108 | + h = cairo_image_surface_get_height (newimage); | ||
109 | + DmpPoint topLeft; | ||
110 | + TileProviderFactory::RowColToPoint(origin,xMinTile,yMaxTile,resolution,topLeft); | ||
111 | + | ||
112 | + DmpPoint clipPoint; | ||
113 | + int wClip,hClip; | ||
114 | + TileProviderFactory::GetClipBox(topLeft,min,max,resolution,clipPoint,wClip,hClip); | ||
115 | + | ||
116 | + cairo_surface_t *surface0 = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,wClip, hClip); | ||
117 | + cairo_t *cr0 =cairo_create (surface0); | ||
118 | + | ||
119 | + //cairo_rectangle(cr0,clipPoint.x(),clipPoint.y(),wClip,hClip); | ||
120 | + cairo_rectangle(cr0,0,0,wClip,hClip); | ||
121 | + cairo_set_source_surface (cr0, surface,-clipPoint.x(), -clipPoint.y()); | ||
122 | + cairo_clip(cr0); | ||
123 | + cairo_paint(cr0); | ||
124 | + | ||
125 | + | ||
103 | std::string responseData; | 126 | std::string responseData; |
104 | - cairo_surface_write_to_png_stream(surface, TileProviderFactory::cairo_write_func, &responseData); | 127 | + cairo_surface_write_to_png_stream(surface0, TileProviderFactory::cairo_write_func, &responseData); |
105 | 128 | ||
106 | response.removeHeader("Content-Type"); | 129 | response.removeHeader("Content-Type"); |
107 | std::string f = (format == "jpg") ? "image/jpg" : "image/png"; | 130 | std::string f = (format == "jpg") ? "image/jpg" : "image/png"; |
108 | response.setHeader("Content-Type", f); | 131 | response.setHeader("Content-Type", f); |
109 | - response.write(responseData); | 132 | + response.write(responseData); |
133 | + // cairo_destroy (cr0); | ||
134 | + // cairo_surface_destroy (surface0); | ||
110 | cairo_destroy (cr); | 135 | cairo_destroy (cr); |
111 | cairo_surface_destroy (surface); | 136 | cairo_surface_destroy (surface); |
112 | } | 137 | } |
@@ -115,14 +140,13 @@ namespace tileserver | @@ -115,14 +140,13 @@ namespace tileserver | ||
115 | std::string level_str = "L" + DmpWmtsUtils::IntToFormatStr(level); | 140 | std::string level_str = "L" + DmpWmtsUtils::IntToFormatStr(level); |
116 | std::string row_str = "R" + IntToHex8Str(row); | 141 | std::string row_str = "R" + IntToHex8Str(row); |
117 | std::string col_str = "C" + IntToHex8Str(col); | 142 | std::string col_str = "C" + IntToHex8Str(col); |
118 | - | ||
119 | - reTilePath = rootPath_ + level_str + "/"+ row_str+"/"+ col_str + "." + format; | 143 | + std::string f = (format == "image/jpg") ? "jpg" : "png"; |
144 | + reTilePath = rootPath_ + "/"+level_str + "/"+ row_str+"/"+ col_str + "." + f; | ||
120 | 145 | ||
121 | - std::ifstream fread(reTilePath, std::ifstream::binary); | 146 | + std::ifstream fread(reTilePath, std::ifstream::binary); |
122 | if(!fread) | 147 | if(!fread) |
123 | { | 148 | { |
124 | return false; | 149 | return false; |
125 | } | 150 | } |
126 | - | ||
127 | } | 151 | } |
128 | } | 152 | } |
请
注册
或
登录
后发表评论