Revision 16177 branches/v10/extensions/extPublishMapserver/src/org/gvsig/publish/mapserver/model/wms/MapserverWMSLayer.java
MapserverWMSLayer.java | ||
---|---|---|
43 | 43 |
import java.awt.Color; |
44 | 44 |
import java.awt.geom.Rectangle2D; |
45 | 45 |
|
46 |
import org.gvsig.publish.infoProject.IDataSourceInfo; |
|
47 |
import org.gvsig.publish.infoProject.ILayerInfo; |
|
48 |
import org.gvsig.publish.infoProject.ISymbolInfo; |
|
49 |
import org.gvsig.publish.infoProject.datasources.IFileInfo; |
|
50 |
import org.gvsig.publish.infoProject.datasources.IRasterDSInfo; |
|
51 |
import org.gvsig.publish.infoProject.legends.IIntervalLegendInfo; |
|
52 |
import org.gvsig.publish.infoProject.legends.ISingleSymbolLegendInfo; |
|
53 |
import org.gvsig.publish.infoProject.legends.IUniqueValuesLegendInfo; |
|
54 |
import org.gvsig.publish.infoProject.symbols.IFillSymbolInfo; |
|
55 |
import org.gvsig.publish.infoProject.symbols.ILineSymbolInfo; |
|
56 |
import org.gvsig.publish.infoProject.symbols.IMarkerSymbolInfo; |
|
57 |
import org.gvsig.publish.infoProject.symbols.ITextSymbolInfo; |
|
46 |
import org.gvsig.publish.infoproject.IDataSourceInfo; |
|
47 |
import org.gvsig.publish.infoproject.ILayerInfo; |
|
48 |
import org.gvsig.publish.infoproject.ISymbolInfo; |
|
49 |
import org.gvsig.publish.infoproject.datasources.IDataBaseInfo; |
|
50 |
import org.gvsig.publish.infoproject.datasources.IFileInfo; |
|
51 |
import org.gvsig.publish.infoproject.datasources.IRasterDSInfo; |
|
52 |
import org.gvsig.publish.infoproject.legends.IIntervalLegendInfo; |
|
53 |
import org.gvsig.publish.infoproject.legends.ISingleSymbolLegendInfo; |
|
54 |
import org.gvsig.publish.infoproject.legends.IUniqueValuesLegendInfo; |
|
55 |
import org.gvsig.publish.infoproject.symbols.IFillSymbolInfo; |
|
56 |
import org.gvsig.publish.infoproject.symbols.ILineSymbolInfo; |
|
57 |
import org.gvsig.publish.infoproject.symbols.IMarkerSymbolInfo; |
|
58 |
import org.gvsig.publish.infoproject.symbols.ITextSymbolInfo; |
|
58 | 59 |
import org.gvsig.publish.mapserver.conf.MapFile.CRS; |
59 | 60 |
import org.gvsig.publish.mapserver.conf.MapFile.ConfigFile; |
60 | 61 |
import org.gvsig.publish.mapserver.conf.MapFile.Label; |
61 | 62 |
import org.gvsig.publish.mapserver.conf.MapFile.MapClass; |
62 | 63 |
import org.gvsig.publish.mapserver.conf.MapFile.MapLayer; |
64 |
import org.gvsig.publish.mapserver.conf.MapFile.PostgisLayer; |
|
63 | 65 |
import org.gvsig.publish.mapserver.conf.MapFile.RGB; |
64 | 66 |
import org.gvsig.publish.mapserver.conf.MapFile.ShpLayer; |
65 | 67 |
import org.gvsig.publish.mapserver.conf.MapFile.StyleMap; |
66 | 68 |
import org.gvsig.publish.mapserver.model.Mapserver; |
67 | 69 |
import org.gvsig.publish.mapserver.model.MapserverLayer; |
68 |
import org.gvsig.publish.ogcMetadata.CommonOGCMetadata;
|
|
69 |
import org.gvsig.publish.ogcMetadata.LayerWMS111Metadata;
|
|
70 |
import org.gvsig.publish.serversModel.PublishException;
|
|
71 |
import org.gvsig.publish.serversModel.RemoteResource;
|
|
70 |
import org.gvsig.publish.ogcmetadata.CommonOGCMetadata;
|
|
71 |
import org.gvsig.publish.ogcmetadata.LayerWMS111Metadata;
|
|
72 |
import org.gvsig.publish.serversmodel.PublishException;
|
|
73 |
import org.gvsig.publish.serversmodel.RemoteResource;
|
|
72 | 74 |
|
73 | 75 |
import com.iver.utiles.XMLEntity; |
74 | 76 |
|
... | ... | |
171 | 173 |
public void publish() throws PublishException{ |
172 | 174 |
|
173 | 175 |
IDataSourceInfo dataSource = getLayerInfo().getDataSource(); |
174 |
|
|
176 |
|
|
175 | 177 |
if (dataSource == null){ |
176 |
|
|
177 |
//I must put a exception |
|
178 |
|
|
178 |
|
|
179 |
//TODO: I must put a exception
|
|
180 |
|
|
179 | 181 |
return; |
180 | 182 |
} |
181 | 183 |
if (dataSource.getType() == IDataSourceInfo.SHAPE_TYPE){ |
... | ... | |
212 | 214 |
//TODO: |
213 | 215 |
//lyr.labelsizeitem = getLayerInfo().getLabeling().getLabelHeightField(); |
214 | 216 |
//lyr.labelangleitem = getLayerInfo().getLabeling().getLabelRotationField(); |
215 |
|
|
217 |
|
|
216 | 218 |
//PROJECTION (I must query the layer to know the shape projection) |
217 | 219 |
lyr.layercrs = new CRS(getLayerInfo().getCRS(),true); |
218 |
|
|
220 |
|
|
219 | 221 |
//CLASS |
220 | 222 |
Object source = getLayerInfo().getLegend(); |
221 | 223 |
if(source instanceof ISingleSymbolLegendInfo){ |
... | ... | |
230 | 232 |
IIntervalLegendInfo legend = (IIntervalLegendInfo)source; |
231 | 233 |
generateIntervalLegend(legend, lyr); |
232 | 234 |
} |
233 |
|
|
235 |
|
|
234 | 236 |
//METADATA |
235 | 237 |
generateMetadata(lyr); |
236 | 238 |
|
237 | 239 |
//adds the layer into the map |
238 | 240 |
mapfile.add(lyr); |
239 | 241 |
} |
242 |
public void generatePostGISLayer(IDataSourceInfo ds){ |
|
243 |
//get the mapfile |
|
244 |
ConfigFile mapfile = getMapfile(); |
|
245 |
IDataBaseInfo db = (IDataBaseInfo)ds; |
|
246 |
// //LAYER |
|
247 |
PostgisLayer lyr = new PostgisLayer(); |
|
248 |
lyr.name = getOgcMetadata().getName(); |
|
249 |
//TODO: change getGeometryColumn |
|
250 |
lyr.data = db.getGeometryColumn() + " from " + db.getTableName() + " using unique " + db.getGID(); |
|
251 |
lyr.host =db.getHost(); |
|
252 |
lyr.user =db.getUser(); |
|
253 |
lyr.pass = db.getPassword(); |
|
254 |
lyr.dbname =db.getDatabaseName(); |
|
255 |
lyr.port = db.getPort(); |
|
256 |
lyr.type = ds.getDataType(); |
|
257 |
lyr.transparency = getLayerInfo().getOpacityPercent(); |
|
258 |
lyr.dump = getLayerWmsMetadata().isQueryable(); |
|
259 |
lyr.maxscale = new Double(getLayerInfo().getMaxscale()).toString(); |
|
260 |
lyr.minscale = new Double(getLayerInfo().getMinscale()).toString(); |
|
261 |
// //labeling |
|
262 |
lyr.labelitem = getLayerInfo().getLabeling().getLabelField(); |
|
263 |
// //TODO: |
|
264 |
// //lyr.labelsizeitem = getLayerInfo().getLabeling().getLabelHeightField(); |
|
265 |
// //lyr.labelangleitem = getLayerInfo().getLabeling().getLabelRotationField(); |
|
266 |
// |
|
267 |
// //PROJECTION (I get the srid from the geometry_columns) |
|
268 |
lyr.layercrs = new CRS(ds.getCRS(),true); |
|
269 |
// |
|
270 |
// //CLASS |
|
271 |
Object source = getLayerInfo().getLegend(); |
|
272 |
if(source instanceof ISingleSymbolLegendInfo){ |
|
273 |
ISingleSymbolLegendInfo legend = (ISingleSymbolLegendInfo)source; |
|
274 |
generateSingleLegend(legend, lyr); |
|
275 |
} |
|
276 |
if(source instanceof IUniqueValuesLegendInfo){ |
|
277 |
IUniqueValuesLegendInfo legend = (IUniqueValuesLegendInfo)source; |
|
278 |
generateUniqueLegend(legend, lyr); |
|
279 |
} |
|
280 |
if(source instanceof IIntervalLegendInfo){ |
|
281 |
IIntervalLegendInfo legend = (IIntervalLegendInfo)source; |
|
282 |
generateIntervalLegend(legend, lyr); |
|
283 |
} |
|
284 |
// |
|
285 |
// //METADATA |
|
286 |
generateMetadata(lyr); |
|
287 |
// |
|
288 |
// //adds the layer into the map |
|
289 |
mapfile.add(lyr); |
|
240 | 290 |
|
291 |
} |
|
292 |
public void generateRasterLayer(IDataSourceInfo ds){ |
|
293 |
//get the mapfile |
|
294 |
ConfigFile mapfile = getMapfile(); |
|
295 |
//get the raster info |
|
296 |
IRasterDSInfo iraster = (IRasterDSInfo)ds; |
|
297 |
//get the file info |
|
298 |
IFileInfo ifile = (IFileInfo)ds; |
|
299 |
|
|
300 |
//LAYER |
|
301 |
ShpLayer lyr = new ShpLayer(); |
|
302 |
lyr.name = getOgcMetadata().getName(); |
|
303 |
lyr.data = ifile.getAbsolutePath(); |
|
304 |
lyr.type = "RASTER"; |
|
305 |
lyr.transparency = getLayerInfo().getOpacityPercent(); |
|
306 |
|
|
307 |
//PROJECTION |
|
308 |
lyr.layercrs = new CRS(ds.getCRS(),true); |
|
309 |
|
|
310 |
//METADATA |
|
311 |
generateMetadata(lyr); |
|
312 |
|
|
313 |
//adds the layer into the map |
|
314 |
mapfile.add(lyr); |
|
315 |
|
|
316 |
|
|
317 |
} |
|
318 |
|
|
241 | 319 |
private void generateSingleLegend(ISingleSymbolLegendInfo legend, MapLayer lyr) { |
242 | 320 |
ISymbolInfo isymbol = legend.getSymbolInfo(); |
243 | 321 |
MapClass clase = new MapClass(); |
... | ... | |
261 | 339 |
* @param lyr |
262 | 340 |
* The layer |
263 | 341 |
*/ |
264 |
private void generateIntervalLegend(IIntervalLegendInfo legend, ShpLayer lyr) {
|
|
342 |
private void generateIntervalLegend(IIntervalLegendInfo legend, MapLayer lyr) {
|
|
265 | 343 |
//check if is labeled |
266 | 344 |
boolean islabeled = false; |
267 | 345 |
if ( getLayerInfo().getLabeling().getLabelField() != null){ |
... | ... | |
281 | 359 |
lyr.addClass(clase); |
282 | 360 |
} |
283 | 361 |
} |
284 |
|
|
362 |
|
|
285 | 363 |
private void generateUniqueLegend(IUniqueValuesLegendInfo legend, MapLayer lyr) { |
286 | 364 |
//check if is labeled |
287 | 365 |
boolean islabeled = false; |
... | ... | |
327 | 405 |
|
328 | 406 |
} |
329 | 407 |
|
330 |
public void generatePostGISLayer(IDataSourceInfo ds){ |
|
331 |
//get the mapfile |
|
332 |
ConfigFile mapfile = getMapfile(); |
|
333 |
|
|
334 |
} |
|
335 |
public void generateRasterLayer(IDataSourceInfo ds){ |
|
336 |
//get the mapfile |
|
337 |
ConfigFile mapfile = getMapfile(); |
|
338 |
//get the raster info |
|
339 |
IRasterDSInfo iraster = (IRasterDSInfo)ds; |
|
340 |
//get the file info |
|
341 |
IFileInfo ifile = (IFileInfo)ds; |
|
342 |
|
|
343 |
//LAYER |
|
344 |
ShpLayer lyr = new ShpLayer(); |
|
345 |
lyr.name = getOgcMetadata().getName(); |
|
346 |
lyr.data = ifile.getAbsolutePath(); |
|
347 |
lyr.type = "RASTER"; |
|
348 |
lyr.transparency = getLayerInfo().getOpacityPercent(); |
|
349 |
|
|
350 |
//PROJECTION |
|
351 |
lyr.layercrs = new CRS(ds.getCRS(),true); |
|
352 |
|
|
353 |
//METADATA |
|
354 |
generateMetadata(lyr); |
|
355 |
|
|
356 |
//adds the layer into the map |
|
357 |
mapfile.add(lyr); |
|
358 |
|
|
359 |
|
|
360 |
} |
|
361 | 408 |
private void generateSymbol(ITextSymbolInfo textSymbol, MapClass clase){ |
362 | 409 |
clase.etiqueta = new Label(); |
363 | 410 |
//TODO: change by getColor() |
364 | 411 |
Color c = textSymbol.getFontColor(); |
365 | 412 |
clase.etiqueta.color = new RGB(c.getRed(), c.getGreen(), c.getBlue()); |
366 |
|
|
413 |
|
|
367 | 414 |
//clase.etiqueta.size = new Double(textSymbol.getFontSize()).intValue(); |
368 | 415 |
//clase.etiqueta.type = "truetype"; |
369 | 416 |
} |
Also available in: Unified diff