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-boun...@listserv.gva.es
<gvsig_usuarios-boun...@listserv.gva.es> en nombre de Oscar Martinez
<omarti...@gvsig.com>
*Enviado:* lunes, 19 de junio de 2017 12:00
*Para:* gvsig_usuarios@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@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@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@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@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