[Gvsig_desarrolladores] ERROR WMS SOLO EN ALGUNAS CAPAS

Ana Belen Garcia belen.garcia en e-sig.es
Vie Mayo 11 10:15:43 CEST 2012


Buenos días a todos,

   Estoy implementando una serie de conexiones WMS y me encuentro con la
siguiente peculiaridad. Hago las mismas conexiones para diferentes capas y
unas funcionan y otras no. Esas conexiones si funcionan si las cargo desde
gvsig a mano y sin embargo haciendolas en código no. Pongo un ejemplo:


  Cargo en código una conexión a Catastro:

View v;
             MapControl mapCtrl;


                        try {
                             Map<String, Object> args= new
HashMap<String,Object>();
                                args.put("host","
http://ovc.catastro.meh.es/Cartografia/WMS/ServidorWMS.aspx");
                                args.put("layer", "Catastro");
                                args.put("SRS", "EPSG:23030");
                                args.put("wmsTransparency", true);
                            FLyrWMS capaWMS;
                            v = (View)
PluginServices.getMDIManager().getActiveWindow();
                            mapCtrl = v.getMapControl();

                            FLayers  lyrs =
mapCtrl.getMapContext().getLayers();
                            lyrs.setAllActives(false);


                                capaWMS = new FLyrWMS(args);

                            capaWMS.setTransparency(95);
                            capaWMS.setActive(true);

mapCtrl.getMapContext().getLayers().addLayer(capaWMS);
                        } catch (LoadLayerException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }


Funciona Perfectamente.

Cargo en código una conexión a la ortofoto de la junta de andalucía del
2007.
View v;
             MapControl mapCtrl;


                        Map<String, Object> args= new
HashMap<String,Object>();
                         args.put("host","
http://www.ideandalucia.es/wms/ortofoto2007?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.1.1
");
                         args.put("layer", "oca10_2007");
                         args.put("SRS", "EPSG:23030");
                        // args.put("format", "image/jpeg");
                         args.put("wmsTransparency", true);




                        FLyrWMS capaWMS;
                        v = (View)
PluginServices.getMDIManager().getActiveWindow();
                        mapCtrl = v.getMapControl();
                        FLayers  lyrs = mapCtrl.getMapContext().getLayers();
                        lyrs.setAllActives(false);

                        try {
                            capaWMS = new FLyrWMS(args);


                        capaWMS.setActive(true);

mapCtrl.getMapContext().getLayers().addLayer(capaWMS);
                        } catch (LoadLayerException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

Funciona correctamente.
Cargo una conexión a la ortofoto de la junta de  1956:
View v;
             MapControl mapCtrl;


                        Map<String, Object> args= new
HashMap<String,Object>();
                         args.put("host","
http://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_Ortofoto_Andalucia_1956?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1
");
                         args.put("layer", "ortofoto_1956");
                         args.put("SRS", "EPSG:23030");
                        // args.put("format", "image/jpeg");
                         args.put("wmsTransparency", true);
                         args.put("Name","Capa WMS");



                        FLyrWMS capaWMS;
                        v = (View)
PluginServices.getMDIManager().getActiveWindow();
                        mapCtrl = v.getMapControl();
                        FLayers  lyrs = mapCtrl.getMapContext().getLayers();
                        lyrs.setAllActives(false);

                        try {
                            capaWMS = new FLyrWMS(args);


                        capaWMS.setActive(true);

mapCtrl.getMapContext().getLayers().addLayer(capaWMS);
                        } catch (LoadLayerException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

Me la carga en el TOC, pero me salta el siguiente error:
java.lang.NullPointerException
    at com.iver.cit.gvsig.fmap.layers.FLyrWMS.drawTile(FLyrWMS.java:1130)
    at com.iver.cit.gvsig.fmap.layers.FLyrWMS.draw(FLyrWMS.java:764)
    at
com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:209)
    at
com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:175)
    at com.iver.cit.gvsig.fmap.MapContext.draw(MapContext.java:1097)
    at
com.iver.cit.gvsig.fmap.MapControl$PaintingRequest.paint(MapControl.java:1043)
    at
com.iver.cit.gvsig.fmap.MapControl$Drawer2$Worker.run(MapControl.java:1234)
    at java.lang.Thread.run(Thread.java:619)
Tiling.print(): tile 0 de 2
, Extent =
java.awt.geom.Rectangle2D$Double[x=100479.00781200003,y=3950028.1935517555,w=501154.72676104406,h=376355.45398363564]
tile: java.awt.Rectangle[x=0,y=0,width=1024,height=769]
DEBUG [Thread-44] (NotificationManager.java:104) -
java.lang.NullPointerException
    at com.iver.cit.gvsig.fmap.layers.FLyrWMS.drawTile(FLyrWMS.java:1130)
    at com.iver.cit.gvsig.fmap.layers.FLyrWMS.draw(FLyrWMS.java:764)
    at
com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:209)
    at
com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:175)
    at com.iver.cit.gvsig.fmap.MapContext.draw(MapContext.java:1097)
    at
com.iver.cit.gvsig.fmap.MapControl$PaintingRequest.paint(MapControl.java:1043)
    at
com.iver.cit.gvsig.fmap.MapControl$Drawer2$Worker.run(MapControl.java:1234)
    at java.lang.Thread.run(Thread.java:619)

Sin embargo esta capa si funciona si la cargo en gvisg desde la pestaña
Añadir capa WMS. La ortofoto de la junta del 2009 tampoco funciona.
¿Por qué puede ser?
Además se va a la siguiente linea de código en la clase FLYWMS.
             *   if ((vp.getAdjustedExtent().getMinX() > extent.getMaxX())
||
                                (vp.getAdjustedExtent().getMinY() >
extent.getMaxY()) ||
                                (vp.getAdjustedExtent().getMaxX() <
extent.getMinX()) ||
                                (vp.getAdjustedExtent().getMaxY() <
extent.getMinY()))*


perteneciente al procedimiento:
*private boolean drawTile(Graphics2D g, ViewPort vp, Cancellable cancel,
int tile, double scale, int nLyr) throws LoadLayerException,
ReadDriverException *

implementado en esta clase.


Espero vuestra ayuda.
Gracias por todo.

Un Saludo.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20120511/7c7c95f3/attachment.htm 


Más información sobre la lista de distribución gvSIG_desarrolladores