Revision 10626 trunk/extensions/extPublish/src/com/iver/cit/gvsig/publish/servers/mapserver/MapServerPublishControler.java
MapServerPublishControler.java | ||
---|---|---|
60 | 60 |
import org.gvsig.remoteservices.conf.mapserver.MapServerConfiguration.WebMap; |
61 | 61 |
import org.gvsig.remoteservices.conf.mapserver.test.AddFieldToDBF; |
62 | 62 |
|
63 |
import com.iver.cit.gvsig.exceptions.layers.DriverLayerException; |
|
64 |
import com.iver.cit.gvsig.exceptions.layers.FileLayerException; |
|
65 |
import com.iver.cit.gvsig.exceptions.layers.LegendLayerException; |
|
66 |
import com.iver.cit.gvsig.exceptions.layers.LoadLayerException; |
|
67 |
import com.iver.cit.gvsig.exceptions.layers.NameLayerException; |
|
68 |
import com.iver.cit.gvsig.exceptions.layers.ProjectionLayerException; |
|
69 |
import com.iver.cit.gvsig.exceptions.layers.TypeLayerException; |
|
70 |
import com.iver.cit.gvsig.exceptions.layers.XMLLayerException; |
|
63 | 71 |
import com.iver.cit.gvsig.fmap.drivers.RasterDriver; |
64 | 72 |
import com.iver.cit.gvsig.fmap.layers.FLayer; |
65 | 73 |
import com.iver.cit.gvsig.fmap.layers.FLayers; |
66 | 74 |
import com.iver.cit.gvsig.fmap.layers.FLyrRaster; |
67 |
import com.iver.cit.gvsig.publish.layers.LayerException; |
|
68 | 75 |
import com.iver.cit.gvsig.publish.layers.LayerLoader; |
76 |
import com.iver.cit.gvsig.publish.layers.ParamsPostGisLayerException; |
|
69 | 77 |
import com.iver.cit.gvsig.publish.model.LayerInfo; |
70 | 78 |
import com.iver.cit.gvsig.publish.model.LayerInfoFactory; |
71 | 79 |
import com.iver.cit.gvsig.publish.model.ServiceInfo; |
72 | 80 |
import com.iver.cit.gvsig.publish.model.ServiceInfoFactory; |
73 |
import com.iver.cit.gvsig.publish.model.WMSServiceInfo; |
|
74 | 81 |
import com.iver.cit.gvsig.publish.persistence.PublishPersistence; |
75 | 82 |
import com.iver.cit.gvsig.publish.servers.GenericServer; |
76 | 83 |
import com.iver.cit.gvsig.publish.servers.PublishControler; |
... | ... | |
78 | 85 |
import com.iver.utiles.swing.jcomboServer.ServerData; |
79 | 86 |
|
80 | 87 |
/** |
81 |
* This class implements the mapserver publication. It has to
|
|
88 |
* This class implements the mapserver publication. It has to |
|
82 | 89 |
* retrieve the current layers from gvSIG and create the |
83 |
* map file
|
|
84 |
*
|
|
90 |
* map file |
|
91 |
* |
|
85 | 92 |
* @author jvhigon |
86 |
*
|
|
93 |
* |
|
87 | 94 |
*/ |
88 | 95 |
public class MapServerPublishControler extends PublishControler{ |
89 | 96 |
private String dataPath = null; //"C:/ms4w/test/"; |
... | ... | |
111 | 118 |
serverData.getProperty(MapServer.WMS_IMAGEURL), |
112 | 119 |
serverData.getProperty(MapServer.WMS_IMAGEPATH)); |
113 | 120 |
} |
114 |
|
|
121 |
|
|
115 | 122 |
/** |
116 |
*
|
|
123 |
* |
|
117 | 124 |
* @param url |
118 | 125 |
* @param path |
119 | 126 |
* @param mapFile |
... | ... | |
121 | 128 |
* @param fontsFile |
122 | 129 |
* @param ImageURL |
123 | 130 |
* @param imagePath |
124 |
* @throws LayerException
|
|
125 |
* @throws LayerException
|
|
131 |
* @throws LayerException |
|
132 |
* @throws LayerException |
|
126 | 133 |
*/ |
127 | 134 |
private ConfigFile publish(String onlineResource, String path, String mapFile, |
128 | 135 |
String symbolsFile, String fontsFile, String ImageURL, |
129 | 136 |
String imagePath) { |
130 | 137 |
dataPath = path; |
131 | 138 |
this.mapFile = mapFile; |
132 |
|
|
133 |
map = getConfigFile(dataPath);
|
|
139 |
|
|
140 |
map = getConfigFile(dataPath); |
|
134 | 141 |
map.www = getWebMapVect(onlineResource,imagePath,ImageURL); |
135 | 142 |
OutputFormat o = new OutputFormat("GEOTIFFINT16","GDAL/GTiff","INT16","tif"); |
136 | 143 |
map.add(o); |
... | ... | |
149 | 156 |
MapLayer mapLayer = (MapLayer)layers.get(j); |
150 | 157 |
if (mapLayer != null){ |
151 | 158 |
map.add(mapLayer); |
152 |
}
|
|
159 |
} |
|
153 | 160 |
} |
154 | 161 |
}else{ |
155 | 162 |
MapLayer mapLayer = publishSimpleLayer(lyr); |
... | ... | |
157 | 164 |
map.add(mapLayer); |
158 | 165 |
} |
159 | 166 |
} |
160 |
}catch(LayerException e){ |
|
161 |
|
|
167 |
}catch(NameLayerException e){ |
|
168 |
e.printStackTrace(); |
|
169 |
}catch(DriverLayerException e){ |
|
170 |
e.printStackTrace(); |
|
171 |
}catch(FileLayerException e){ |
|
172 |
e.printStackTrace(); |
|
173 |
}catch(LegendLayerException e){ |
|
174 |
e.printStackTrace(); |
|
175 |
}catch(ParamsPostGisLayerException e){ |
|
176 |
e.printStackTrace(); |
|
177 |
}catch(ProjectionLayerException e){ |
|
178 |
e.printStackTrace(); |
|
179 |
}catch(TypeLayerException e){ |
|
180 |
e.printStackTrace(); |
|
181 |
}catch(XMLLayerException e){ |
|
182 |
e.printStackTrace(); |
|
183 |
}catch(LoadLayerException e){ |
|
184 |
e.printStackTrace(); |
|
162 | 185 |
} |
163 | 186 |
} |
164 |
}
|
|
187 |
} |
|
165 | 188 |
return map; |
166 |
}
|
|
167 |
|
|
168 |
private MapLayer publishSimpleLayer(FLayer layer) throws LayerException{ |
|
189 |
} |
|
190 |
|
|
191 |
private MapLayer publishSimpleLayer(FLayer layer) throws LoadLayerException{
|
|
169 | 192 |
MapLayer mapLayer = new MapServerLayerFactory().getMapLayer(layer,getService()); |
170 | 193 |
if (mapLayer != null){ |
171 | 194 |
if (getService().compareTo(ServerData.SERVER_TYPE_WMS) == 0){ |
... | ... | |
182 | 205 |
} |
183 | 206 |
return mapLayer; |
184 | 207 |
} |
185 |
|
|
186 |
private ArrayList publishGroupLayer(ConfigFile config,FLayers layers) throws LayerException{ |
|
208 |
|
|
209 |
private ArrayList publishGroupLayer(ConfigFile config,FLayers layers) throws LoadLayerException{
|
|
187 | 210 |
ArrayList mapLayers = new ArrayList(); |
188 | 211 |
if (layers.getName().startsWith("[")){ |
189 | 212 |
if (layers.getName().startsWith("[" + LayerLoader.GROUP_LAYER_TIME)){ |
... | ... | |
203 | 226 |
} |
204 | 227 |
return mapLayers; |
205 | 228 |
} |
206 |
|
|
207 |
|
|
208 |
private MapLayer publishMosaicLayer(ConfigFile config,FLayers layers) throws LayerException{ |
|
229 |
|
|
230 |
|
|
231 |
private MapLayer publishMosaicLayer(ConfigFile config,FLayers layers) throws LoadLayerException{
|
|
209 | 232 |
fileIndex = layers.getName().split("]")[1] + "_index.shp"; |
210 | 233 |
MapLayer mapLayer = publishSimpleLayer(layers.getLayer(0)); |
211 | 234 |
String[] sFiles = new String[layers.getLayersCount()]; |
212 | 235 |
for (int i=0 ; i<sFiles.length ; i++){ |
213 | 236 |
sFiles[i] = getRasterFile(layers.getLayer(i)); |
214 | 237 |
} |
215 |
|
|
238 |
|
|
216 | 239 |
mapLayer.name = layers.getName().split("]")[1]; |
217 | 240 |
mapLayer.tileIndex = fileIndex; |
218 | 241 |
mapLayer.tileItem = "location"; |
... | ... | |
227 | 250 |
}*/ |
228 | 251 |
mapLayer.metadata.setExtent(extent); |
229 | 252 |
//We'll write on the same directory as mapfile |
230 |
|
|
253 |
|
|
231 | 254 |
generateIndex(dataPath + "/" + fileIndex,sFiles,null); |
232 |
return mapLayer;
|
|
255 |
return mapLayer; |
|
233 | 256 |
} |
234 |
|
|
235 |
private MapLayer publishTimeLayer(ConfigFile config,FLayers layers) throws LayerException{ |
|
257 |
|
|
258 |
private MapLayer publishTimeLayer(ConfigFile config,FLayers layers) throws LoadLayerException{
|
|
236 | 259 |
fileIndex = layers.getName().split("]")[1] + "_index.shp"; |
237 | 260 |
MapLayer mapLayer = publishSimpleLayer(layers.getLayer(0)); |
238 |
|
|
261 |
|
|
239 | 262 |
SortedSet times = new TreeSet(); |
240 | 263 |
Hashtable files = new Hashtable(); |
241 | 264 |
times.add(getTime(layers.getLayer(0).getName())); |
... | ... | |
243 | 266 |
for (int i = 1; i < layers.getLayersCount(); i++) { |
244 | 267 |
times.add(getTime(layers.getLayer(i).getName())); |
245 | 268 |
files.put(getTime(layers.getLayer(i).getName()),getRasterFile(layers.getLayer(i))); |
246 |
}
|
|
269 |
} |
|
247 | 270 |
//Recuperar los files y los times en orden: |
248 | 271 |
Iterator it = times.iterator(); |
249 | 272 |
String[] sFiles = new String[times.size()]; |
... | ... | |
258 | 281 |
timeExtent = timeExtent + ","; |
259 | 282 |
} |
260 | 283 |
i++; |
261 |
}
|
|
284 |
} |
|
262 | 285 |
String sOptions = layers.getName().split("]")[0]; |
263 | 286 |
String[] options = sOptions.split(","); |
264 | 287 |
mapLayer.name = layers.getName().split("]")[1]; |
... | ... | |
270 | 293 |
mapLayer.metadata.title = mapLayer.name; |
271 | 294 |
mapLayer.metadata.timeDefault = options[2]; |
272 | 295 |
mapLayer.metadata.timeExtent = timeExtent; |
273 |
mapLayer.metadata.timeItem = "date";
|
|
296 |
mapLayer.metadata.timeItem = "date"; |
|
274 | 297 |
generateIndex(dataPath + "/" + fileIndex,sFiles,sTimes); |
275 | 298 |
return mapLayer; |
276 | 299 |
} |
277 |
|
|
278 |
|
|
279 |
|
|
300 |
|
|
301 |
|
|
302 |
|
|
280 | 303 |
private String getRasterFile(FLayer layer){ |
281 | 304 |
RasterDriver driver = ((RasterDriver)((FLyrRaster)layer).getSource().getDriver()); |
282 | 305 |
return driver.getFiles()[0].getName(); |
283 | 306 |
} |
284 |
|
|
307 |
|
|
285 | 308 |
private void generateIndex(String fileIndex,String[] fNames, String[] times){ |
286 | 309 |
String cmd = getGDalPath() + "gdaltindex"; |
287 | 310 |
String params = fileIndex; |
... | ... | |
319 | 342 |
} |
320 | 343 |
System.out.println("done."); |
321 | 344 |
} |
322 |
|
|
345 |
|
|
323 | 346 |
private void deleteIndexFile(String fileIndex) { |
324 | 347 |
File f = new File(fileIndex); |
325 | 348 |
if (f.exists()) { |
... | ... | |
330 | 353 |
f.delete(); |
331 | 354 |
} |
332 | 355 |
} |
333 |
}
|
|
334 |
|
|
356 |
} |
|
357 |
|
|
335 | 358 |
private String getTime(String layerName){ |
336 | 359 |
String time = layerName.split("]")[0]; |
337 | 360 |
return StringUtilities.replace(time,"[",""); |
338 | 361 |
} |
339 |
|
|
362 |
|
|
340 | 363 |
private ConfigFile getConfigFile(String path){ |
341 | 364 |
ConfigFile map = new ConfigFile(); |
342 | 365 |
map.mapName = "TEST_MAPSERVER"; |
... | ... | |
348 | 371 |
map.setExtent(getMapCtrl().getMapContext().getViewPort().getAdjustedExtent()); |
349 | 372 |
return map; |
350 | 373 |
} |
351 |
|
|
374 |
|
|
352 | 375 |
private WebMap getWebMapVect(String onlineResource, |
353 | 376 |
String imagePath, |
354 | 377 |
String imageURL){ |
... | ... | |
369 | 392 |
} |
370 | 393 |
return webMap; |
371 | 394 |
} |
372 |
|
|
395 |
|
|
373 | 396 |
private String getGDalPath(){ |
374 | 397 |
PublishPersistence persistence = new PublishPersistence(this); |
375 |
return persistence.getGdalPath();
|
|
398 |
return persistence.getGdalPath(); |
|
376 | 399 |
} |
377 | 400 |
|
378 | 401 |
/* |
... | ... | |
393 | 416 |
layerInfo.setSrs(layer.crs.getCrs()); |
394 | 417 |
layerInfo.setExtent(layer.metadata.extent); |
395 | 418 |
serviceInfo.addLayer(layerInfo); |
396 |
}
|
|
419 |
} |
|
397 | 420 |
} |
398 | 421 |
return serviceInfo; |
399 | 422 |
} |
... | ... | |
413 | 436 |
layer.name = layerInfo.getName(); |
414 | 437 |
layer.metadata.name = layerInfo.getName(); |
415 | 438 |
layer.metadata.title = layerInfo.getTitle(); |
416 |
layer.metadata.abstrac = layerInfo.getAbstrac();
|
|
417 |
layer.metadata.extent = layerInfo.getExtent();
|
|
439 |
layer.metadata.abstrac = layerInfo.getAbstrac(); |
|
440 |
layer.metadata.extent = layerInfo.getExtent(); |
|
418 | 441 |
layer.crs.setCrs(layerInfo.getSrs()); |
419 |
}
|
|
420 |
map.generate(mapFile);
|
|
442 |
} |
|
443 |
map.generate(mapFile); |
|
421 | 444 |
} |
422 | 445 |
|
423 | 446 |
} |
Also available in: Unified diff