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.
_______________________________________________
gvSIG_desarrolladores mailing list
[email protected]
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de 
baja en esta lista, acuda a la siguiente dirección: 
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores

Responder a