[Gvsig_desarrolladores] Dibujar tiles con ViewPort

Juan Lucas Dominguez Rubio jldominguez en prodevelop.es
Mie Abr 17 18:49:51 CEST 2013


Hola, David.
Aquí hay un ejemplo de cómo pegar un tile. Esto lo he puesto al inicio del método draw de una capa cualquiera. El resultado son estas capturas de pantalla:
 
http://www.prodevelop.es/files/images/100x100-captura.jpg
 
Si hago zoom alejándome, la imagen ocupa menos píxels en la vista lógicamente.
Debes saber la anchura de cada tile en unidades del mapa (en este caso grados)
Yo he puesto "double anchura_grados = 45;" como puedes ver:
 
=============================================
        Image tile = null;
        try {
            tile = ImageIO.read(new File("c:\\down\\img\\100x100.jpg"));
        } catch (Exception ex) {
        }
        double lon = -90;
        double lat = 90;
        double anchura_grados = 45;
        // este valor cambiará según el zoom de cada momento
        int anchura_pintar = viewPort.fromMapDistance(anchura_grados);
        // redimensiono la imagen en memoria
        tile = tile.getScaledInstance(
            anchura_pintar,
            anchura_pintar,
            Image.SCALE_DEFAULT);
 
        AffineTransform at = viewPort.getAffineTransform();
        Point2D coord_mapa = new Point2D.Double(lon, lat);
        Point2D coord_pixel = new Point2D.Double();
        // obtengo el lugar que corresponde a la esquina sup-izq
        at.transform(coord_mapa, coord_pixel);
 
        g.drawImage(tile,
            (int) coord_pixel.getX(),
            (int) coord_pixel.getY(),
            null);
=============================================
 
 
Saludos,
Juan Lucas Domínguez Rubio
---
Prodevelop SL, Valencia (España)
Tlf.: 96.351.06.12 -- Fax: 96.351.09.68
http://www.prodevelop.es <http://www.prodevelop.es/> 
---

________________________________

De: gvsig_desarrolladores-bounces en listserv.gva.es en nombre de David Deman
Enviado el: mié 17/04/2013 17:17
Para: gvsig_desarrolladores en listserv.gva.es
Asunto: Re: [Gvsig_desarrolladores] Dibujar tiles con ViewPort



Hola muy buenas,

si hablo del método draw. No me ha quedado del todo claro como se haría, si
no te importa te pongo un ejemplo con datos a ver.

Tengo el extent que engloba la pantalla de (-180,-90) a (180,90), es decir
Rectangle2D.Double[x=-180.0,y=-90.0,w=360.0,h=180.0]
Y quiero pintar una imagen sin cambiarle el tamaño, es decir si la imagen
ocupa 100px X 100px que ocupe eso, es la coordenada (-90,90)

Siendo viewPort el que le viene al método draw, yo lo que hacía en el
ejemplo anterior es:
viewPortImagen = viewPort.cloneViewPort();
viewPortImagen.setImageSize(new Dimension(100, 100));
viewPortImagen.setExtent(new Rectangle2D.Double(-90, 90, 100, 100));

y pasarle ese viewPortImagen a la función para dibujar, pero claro con el
setExtent no se debe poner la localización. Entiendo yo pues como me
comentas que es con el transform, pero no entiendo cómo.

Un saludo,
David




--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Dibujar-tiles-con-ViewPort-tp5047603p5047697.html
Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
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




--------------------------------------------------------------------------------

CLÁUSULA DE PROTECCIÓN DE DATOS
Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.
De acuerdo con la nueva ley Ley de Servicios de la Sociedad de la Información y Comercio Electrónico aprobada por el parlamento español y de la vigente Ley Orgánica 15/1999 de Protección de Datos española, le comunicamos que su dirección de Correo electrónico forma parte de un fichero automatizado, teniendo usted derecho de oposición, acceso, rectificación y cancelación de sus datos. 

DATA PROTECTION CLAUSE
This message is meant for its addressee only and may contain privileged or confidential information. If you have received this message by mistake please let us know immediately by e-mail prior to destroying it. 
In compliance with the new Information and Electronic Commerce Society Services Law recently approved by the Spanish Parliament and with Organic Law 15/1999 currently in force, your e-mail address has been included in our computerised records in respect of which you may exercise your right to oppose, access, amend and/or cancel your personal data.

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20130417/707c136f/attachment.htm 


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