Hola, así es como yo había pensado hacerlo:
===================================
import time;
from java.awt.image import *;
from javax.imageio import ImageIO;
from java.io import File;
from gvsiglib import *;
view = gvSIG.getActiveDocument();
mctrl = view.getMapControl();
mcon = mctrl.getMapContext();
vp = mctrl.getViewPort();
lyr=mcon.getLayers().getLayer(0);
lyr.getSource().start();
azu0=lyr.getSource().getShape(0);
vp.setExtent(azu0.getBounds2D());
// tamaño de azulejo en la pantalla /(pixels)
w = vp.fromMapDistance(azu0.getBounds2D().getWidth());
h = vp.fromMapDistance(azu0.getBounds2D().getHeight());
// imagen de ese tamaño
bimg = BufferedImage(w,h, BufferedImage.TYPE_INT_RGB);
// en su objeto graf se puede dibujar
graf = bimg.createGraphics();
// desplazamiento del mapa respecto a azulejo
offsetxmap = azu0.getBounds2D().getMinX()-vp.getAdjustedExtent().getMinX();
offsetymap = vp.getAdjustedExtent().getMaxY()-azu0.getBounds2D().getMaxY();
// desplazamiento del mapa respecto a azulejo
offsetxpix = vp.fromMapDistance(offsetxmap);
offsetypix = vp.fromMapDistance(offsetymap);
// se dibuja el mapa en la imagen creada (como un clip)
graf.drawImage(mctrl.getImage(), -offsetxpix, -offsetypix, w, h, None);
// se escribe la imagen en PNG
ImageIO.write(bimg,'png',File('c:/tempo/azulejo.png'))
===================================
pero creo que hay algún error en los cálculos. Tienes que revisarlo, pero creo
que de esa manera se puede hacer.
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: [email protected] en nombre de Steffen Koch
Enviado el: mar 21/09/2010 20:39
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] vista - exportar - imagen - jython
Hola Juan Lucas,
gracias por tu respuesta. Bueno quiero utilizar un fichero de shape (polígono)
para averiguar los tamanos de la vista. He empezado a programar el scripting de
python con estas lineas:
#importar gvSIG funciones
from gvsiglib import *
#view, mapcontrol, mapcontext
view = gvSIG.getActiveDocument()
mctrl = view.getMapControl()
mcon = mctrl.getMapContext()
# la primera capa
lyr= mcon.getLayers().getLayer(0)
#el primer polígono
azulejo1 = lyr.getsource().getShape(0)
#las coordenadas
bazulejo1 = azulejo1.getBounds2D()
xmax = bazulejo1.getMaxX()
xmin = bazulejo1.getMinX()
ymax = bazulejo1.getMaxY()
...
ahora no tengo claro, es que pensaba que puedo cortar un sector (polígono) de
la vista, - pero con el método BufferedImage tengo que definir la altura y la
anchura de la vista y yo queria solucionar el problema con definir el sector
con las coordinadas, porque igual son 5 o 37 polígonos/azulejos. Hay otra
possibilidad de cortar azulejos?
Saludos, Stef
________________________________
Von: "Juan Lucas Dominguez Rubio" <[email protected]>
Gesendet: 13.09.2010 13:27:53
An: "Lista de Desarrolladores de gvSIG"
<[email protected]>, [email protected]
Betreff: Re: [Gvsig_desarrolladores] vista - exportar - imagen - jython
Hola,
¿los bordes de esos cuadrículas (azulejos) cómo se definen?
¿valdría con que fueran siempre los cuatro cuartos idénticos de la
vista actual?
Creo que yo intentaría esto con jython:
- averiguar el tamaño de la vista en pixels
- dividir por dos la altura y anchura e instanciar 4 BufferedImage de
ese tamaño
- para cada BufferedImage, usa su Graphics y pinta sobre él la parte
del mapa que te interesa (mediante offsets)
- finalmente, cada bufferedImage puede exportarse a PNG con ImageIO
En algún lugar de MapContext o MapControl habrá una copia del mapa
actual (también un BufferedImage, probablemente)
Sería más o menos así
...
BufferedImage azulejo2 = new BuferredImage(w/2, h/2);
Graphics azugra2 = azulejo2.createGraphics();
azugra2.paintImage(mapa_actual, -w/2, 0);
ImageIO.export(azulejo2, "png", "c:\\imagenes\\img2.png")
(o algo así)
...
Al poner -w/2, hacemos un 'clip' de la zona de interés.
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: [email protected] en nombre de Steffen
Koch
Enviado el: jue 02/09/2010 13:16
Para: [email protected]
Asunto: [Gvsig_desarrolladores] vista - exportar - imagen - jython
hola,
estoy buscando un camino para exportar automaticamente la vista a
imagenes, igual no funciona con gvsig, no se - es que tengo en mi ejemplo 4
rectángulos/azulejos que quiero exportar cada uno como imagen, pero
automaticamente con la ayuda de jython. Tenéis una idea como podría funcionar.
Gracias por vuestra ayuda.
Saludos, Stef
___________________________________________________________
Neu: WEB.DE De-Mail - Einfach wie E-Mail, sicher wie ein Brief!
Jetzt De-Mail-Adresse reservieren: https://produkte.web.de/go/demail02
GRATIS: Spider-Man 1-3 sowie 300 weitere Videos!
Jetzt kostenlose Movie-FLAT freischalten! http://movieflat.web.de
<http://movieflat.web.de/>
_______________________________________________
gvSIG_desarrolladores mailing list
[email protected]
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores