[Gvsig_usuarios] Símbologia de capa con script

Oscar Martinez omartinez en gvsig.com
Lun Jun 19 18:24:04 CEST 2017


Buenas,


Son funciones independientes, no son métodos de la capa. Las legendas se 
pueden crear desde cero sin necesitar ninguna capa.


Por ejemplo, una vez tiene la funcion que aparece ahí como 
getcreateLineLegendForParcel, que viene a conseguir una leyenda fija 
siempre la misma, se puede usar en tu código así:


         legend = createLineLegendForParcel()
         gvsig.currentLayer().setLegend(legend)


La segunda es una función que asigna un color especificado según el 
valor de un campo, por eso de que use la capa durante la generación de 
la leyenda, las líneas de código en el script es algo así, siendo 
unionlayer una capa:


         legend = createRefcatLegendForParcel(unionlayer)
         unionlayer.setLegend(legend)


Recuerdo que en la documentación también  aparece un ejemplo de cómo 
usar la leyenda por intervalos, en la cual la leyenda se apoya en un 
método que tiene .calculateIntervals pasandole el store de la capa, para 
sacar un rango de colores con las divisiones que le marcamos, así el 
mismo ya hacer los calculos. Por ejemplo, si tuvieramos un campo que en 
nuestra capa contiene valores desde el 0 hasta el 100 y le decimos que 
queremos cuatro rangos, pues generaría una leyenda donde distribuye 4 
colores intermedios entre el inicial y el final que le hemos marcado, y 
los asigna a los valores correspondientes algo asi como.. [0,24] Rojo, 
[24,49] Rojizo, [50,74] Morado, [75,100] Azul


http://downloads.gvsig.org/download/web/es/build/html/scripting_devel_guide/2.3/leyendas.html


Saludos



El 19/06/2017 a las 13:42, Ovidio Ribeira escribió:
>
> Saludos Oscar,  he probado lo que me indicas y no se si lo estoy 
> haciendo bien, al llamar a la función con:
>
> gvsig.currentLayer().getcreateLineLegendForParcel() ( no se si esto 
> está bien)
>
> me da el siguiente error
>
> AttributeError: 'org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVec' 
> object has no attribute 'getcreateLineLegendForParcel' in <script> at 
> line number 29ntext.layers.vectorial.FLyrVec' object has no attribute 
> 'getcreateLineLegendForParcel'
> Gracias,
>
>
>
>
> ------------------------------------------------------------------------
> *De:* gvsig_usuarios-bounces en listserv.gva.es 
> <gvsig_usuarios-bounces en listserv.gva.es> en nombre de Oscar Martinez 
> <omartinez en gvsig.com>
> *Enviado:* lunes, 19 de junio de 2017 12:00
> *Para:* gvsig_usuarios en listserv.gva.es
> *Asunto:* Re: [Gvsig_usuarios] Símbologia de capa con script
>
> Perdón, faltan los imports. A lo mejor falta alguno por poner:
>
>
> from org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl import 
> SingleSymbolLegend
> 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 java.awt import Color
>
>
> El 19/06/2017 a las 11:59, Oscar Martinez escribió:
>>
>> Buenas,
>>
>>
>> Te pego dos funciones que hice el otro día para dar simbologia a una 
>> capa de polígonos.
>>
>>
>> La primera es para crear un relleno vacio con una línea única roja. 
>> La segunda, es para una simbología por categorías.
>>
>>
>> Por ejemplo, una de las cosas que quería añadir era que al crear la 
>> simb por categorías en vez de sacar colores random se asegurara (o 
>> cogiera de una lista predeterminada) colores que se distingan entre 
>> ellos y sean buenos para una visualización.
>>
>>
>> Espero te sirva.
>>
>> Saludos
>>
>>
>> def createLineLegendForParcel():
>>         newcolor = Color(204, 0, 0)
>>         simpleline = SimpleLineSymbol()
>>         simpleline.setLineWidth(3.0)
>>         simpleline.setAlpha(1)
>>         simpleline.setColor(newcolor)
>>         simplesymbol = SimpleFillSymbol()
>>         simplesymbol.setColor(newcolor)
>>         simplesymbol.setHasFill(False)
>>         simplesymbol.setOutline(simpleline)
>>         singlelegend = SingleSymbolLegend(simplesymbol)
>>         return singlelegend
>>
>> def createRefcatLegendForParcel(layer, nameField="localId"):
>>         from 
>> org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl import 
>> VectorialUniqueValueLegend
>>         vuv = VectorialUniqueValueLegend(9)
>>         features = layer.features()
>>         import random
>>         for f in features:
>>             simplesymbol = SimpleFillSymbol()
>>             newcolor = Color(random.randint(0,250), 
>> random.randint(0,250), random.randint(0,250))
>>             simplesymbol.setColor(newcolor)
>> simplesymbol.setDescription(f.get(nameField))
>>             vuv.addSymbol(str(f.get(nameField)), simplesymbol)
>>         #Para las vacias
>>         simplesymbol = SimpleFillSymbol()
>>         newcolor = Color(random.randint(0,250), 
>> random.randint(0,250), random.randint(0,250))
>>         simplesymbol.setColor(newcolor)
>>         simplesymbol.setDescription("Sin localId")
>>         vuv.addSymbol("", simplesymbol)
>>         #print vuv.getValues()
>>         vuv.setClassifyingFieldNames([nameField])
>>         return vuv
>>
>>
>> El 19/06/2017 a las 11:54, Ovidio Ribeira escribió:
>>>
>>> Buenos dias, necesito ayuda para cambiar la simbología de unha capa 
>>> de polígonos (color de línea y relleno) a través de un script, 
>>> gracias anticipadas.
>>>
>>> Saludos
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> gvSIG_usuarios mailing list
>>> gvSIG_usuarios 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:
>>>
>>> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>>
>>
>>
>> _______________________________________________
>> gvSIG_usuarios mailing list
>> gvSIG_usuarios 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:
>>
>> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>
>
>
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios 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:
>
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20170619/1a8eae6e/attachment.html>


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