Hola. 

Adjunto sólo el script. 

Saludos. 

De: "Carlos Colombana" <ccolomb...@anep.edu.uy> 
Para: "gvsig desarrolladores" <gvsig_desarrolladores@listserv.gva.es> 
Enviados: Domingo, 31 de Marzo 2019 23:11:17 
Asunto: Etiquetas desde scripting 

Hola. 

He logrado manejar las leyendas desde scripiting, pero no lo estoy logrando con 
las etiquetas. 
Adjunto capa de prueba y script. 
La idea es mostrar los textos del campo "NOMBRE". 
¿Podrían ayudarme?. 

Saludos. 
-- 
Carlos Colombana 
ANEP - Departamento de Investigación y Estadística Educativa de CODICEN 
Av. Libertador 1409 piso 9 - Montevideo 
Tel. 2900 7070 Int. 6009 


-- 
Carlos Colombana 
ANEP - Departamento de Investigación y Estadística Educativa de CODICEN 
Av. Libertador 1409 piso 9 - Montevideo 
Tel. 2900 7070 Int. 6009 

===================PRIVACIDAD DE ESTE MENSAJE=================== Este mensaje 
esta dirigido exclusivamente a las personas que tienen las direcciones de 
correo electronico especificadas en los destinatarios dentro de su encabezado. 
Si por error usted ha recibido este mensaje, por ningun motivo debe revelar su 
contenido, copiarlo, distribuirlo o utilizarlo. Le solicitamos por favor 
comunique del error a la direccion de correo electronico remitente y elimine 
dicho mensaje junto con cualquier documento adjunto que pudiera contener. Los 
derechos de privacidad y confidencialidad de la informacion en este mensaje no 
deben perderse por el hecho de haberse trasmitido erroneamente o por causas de 
interferencias en el funcionamiento de los sistemas de correo y canales de 
comunicacion. Los datos contenidos en este mensaje estan protegidos por la Ley 
18.331 Ley de Proteccion de Datos Personales y Accion de Habeas
 Data cuy
 o alcance puede encontrar en: 
https://www.datospersonales.gub.uy/inicio/normativa/nacional/leyes/. Toda 
opinion que se expresa en este mensaje pertenece a la persona remitente por lo 
que no debe entenderse necesariamente como una opinion de ANEP y/o de las 
entidades que la integran, a menos que el remitente este autorizado para 
hacerlo o expresamente lo diga en el mismo mensaje. En consideracion a que los 
mensajes enviados de manera electronica pueden ser interceptados y manipulados, 
ANEP y las entidades que la integran no se hacen responsables si los mensajes 
llegan con demora respecto de la fecha de su envio por el remitente, 
incompletos, eliminados o con alg��un programa malicioso denominado como virus 
informatico.

import gvsig

from gvsig import commonsdialog
from gvsig import geom
from java.awt import BasicStroke
from java.awt import Font
from java.awt import Point
from java.awt import Rectangle
from java.awt.image import BufferedImage
from org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl import SingleSymbolLegend
from org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling import AttrInTableLabelingStrategy
from org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling import DefaultLabelingMethod
from org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling import LabelClass
from org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling import ZoomConstraintsImpl
from org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.impl import SimpleFillSymbol
from org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.impl import SimpleLineSymbol
from org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style import SimpleLabelStyle
from org.gvsig.symbology.fmap.mapcontext.rendering.symbol.text.impl import SimpleTextSymbol
from org.gvsig.utils.swing.threads import DefaultCancellableMonitorable

def launchTestingEnvironment():
    currentProject = gvsig.currentProject()
    if currentProject.getView("Prueba") == None:
        currentProject.createView("Prueba")
    view = currentProject.getView("Prueba")
    view.setBackColor(gvsig.utils.getColorFromRGB(204, 204, 204)) # RGB
    view.showWindow()
    message = ""
    if view.getLayer("Departamentos") == None:
        try:
            gvsig.loadShapeFile(gvsig.getResource(__file__, "data", "Departamentos.shp"))
        except:
            message = "\n'Departamentos.shp'"
    layer = view.getLayer("Departamentos")
    if layer != None:
        symbol = SimpleFillSymbol()
        symbol.setColor(gvsig.utils.getColorFromRGB(153, 255, 153)) # RGB
        outline = SimpleLineSymbol()
        outline.setLineColor(gvsig.utils.getColorFromRGB(0, 204, 0)) # RGB
        symbol.setOutline(outline)
        legend = SingleSymbolLegend(symbol)
        layer.setLegend(legend)
        layer.setVisible(True)
        layer.setActive(True)
        view.center(layer.getFullEnvelope())
        
        features = layer.features()
        
        envelope = layer.getFullEnvelope()
        mapContext = view.getMapContext()
        viewPort = mapContext.getViewPort()
        
        bufferedImage = BufferedImage(int(envelope.getLength(0)), int(envelope.getLength(1)), BufferedImage.TYPE_INT_ARGB)
        graphics2D = bufferedImage.getGraphics()
        graphics2D.setTransform(viewPort.getAffineTransform())
        graphics2D.setStroke(BasicStroke(viewPort.getDist1pixel()))
        graphics2D.setColor(gvsig.utils.getColorFromRGB(0, 0, 0)) # RGB
        
        labelingStrategy = AttrInTableLabelingStrategy()
        zoomConstraints = ZoomConstraintsImpl()
        zoomConstraints.setMode(ZoomConstraintsImpl.DEFINED_BY_THE_LAYER)
        labelingStrategy.setZoomConstraints(zoomConstraints)
        labelingStrategy.setLayer(layer)
        labelingStrategy.setFixedColor(gvsig.utils.getColorFromRGB(0, 0, 0)) # RGB
        labelingStrategy.setUnit(viewPort.getMapUnits())
        labelingStrategy.setUsesFixedColor(True)
        labelingStrategy.setUsesFixedSize(True)
        labelingStrategy.setReferenceSystem(layer.getProjection().getCode())
        labelingStrategy.setFont(Font("Arial", Font.PLAIN, 10))
        labelingStrategy.setColorFont(gvsig.utils.getColorFromRGB(0, 0, 0)) # RGB
        labelingStrategy.setTextField("NOMBRE")
        
        labelingMethod = labelingStrategy.getLabelingMethod()
        label = LabelClass()
        label.setName(layer.getName())
        textSymbol = SimpleTextSymbol()
        textSymbol.setFont(Font("Arial", Font.PLAIN, 10))
        textSymbol.setTextColor(gvsig.utils.getColorFromRGB(0, 0, 0)) # RGB
        textSymbol.setRotation(0)
        textSymbol.setAutoresizeEnabled(True)
        label.setTextSymbol(textSymbol)
        label.setVisible(True)
        labelStyle = SimpleLabelStyle()
        labelStyle.setSize(30, 10)
        labelStyle.setTextFields(["NOMBRE"])
        
        for feature in features:
            centroid = feature.geometry().centroid()
            '''
            rectangle = Rectangle(int(centroid.getX() - envelope.getMinimum(0)), int(envelope.getLength(1) - (centroid.getY() - envelope.getMinimum(1))), 30, 10)
            labelStyle.addTextFieldArea(rectangle)
            labelStyle.setTextFields([feature.get("NOMBRE")])
            '''
            graphics2D.drawString(feature.get("NOMBRE"), centroid.getX() - envelope.getMinimum(0), envelope.getLength(1) - (centroid.getY() - envelope.getMinimum(1)))
        graphics2D.drawImage(bufferedImage, viewPort.getAffineTransform(), None)
        
        label.setLabelStyle(labelStyle)
        labelingMethod.addLabelClass(label)
        labelingStrategy.setLabelingMethod(labelingMethod)
        layer.setLabelingStrategy(labelingStrategy)
        
        cancel = DefaultCancellableMonitorable()
        scale = mapContext.getScaleView()
        dpi = mapContext.getScreenDPI()
        layer.draw(bufferedImage, graphics2D, viewPort, cancel, scale)
        layer.drawLabels(bufferedImage, graphics2D, viewPort, cancel, scale, dpi)
        
    return message

def main(*args):
    message = unichr(191) + "Quiere lanzar el ambiente de prueba?"
    title = "script00"
    optionType = commonsdialog.YES_NO
    messageType = commonsdialog.QUESTION
    root = None
    answer = commonsdialog.confirmDialog(message, title, optionType, messageType, root)
    if answer == commonsdialog.YES:
        message = launchTestingEnvironment()
        if message != "":
            message = "No fu" + unichr(233) + " posible cargar:" + message
            title = "script00 - Error"
            messageType = commonsdialog.FORBIDEN
            root = None
            commonsdialog.msgbox(message, title, messageType, root)
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores@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: 
https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores

Responder a