[Gvsig_desarrolladores] Establecer propiedades de capas

Montes Cámara, Victor victor.montes en alicante-ayto.es
Mar Oct 29 13:59:40 CET 2019


Hola Óscar, 

Funciona bien. He añadido las llamadas a los métodos correspondientes para cambiar los parámetros de fuente: 

textSymbol.setFont(Font("Arial", Font.BOLD, 10)) 
textSymbol.setFontSize(10) 
textSymbol.setTextColor(Color(r,g,b)) # RGB 





Lo que he visto es que la clase ITextSymbol ( http://downloads.gvsig.org/download/gvsig-desktop-testing/dists/2.3.0/javadocs/html/org/gvsig/fmap/mapcontext/rendering/symbols/ITextSymbol.html ) no tiene ningún método para establecer el ángulo del texto. 

No es muy grave porque lo uso para los números de policía y no me importa que no estén girados, lo importante es ponerle el origen en el centro. 

Para el texto del nombre de calles pasa lo contrario, tengo que usar el ángulo, pero no me preocupa el origen. Por lo que al final tengo que hacer lo siguiente: 


layer.setIsLabeled(True) 
symbologyManager = SymbologyLocator.getSymbologyManager() 
if nombre_capa == "CALLES": 
labeling = symbologyManager.createDefaultLabelingStrategy() 
labeling.setTextField("TEXTO") 
labeling.setUsesFixedColor(True) 
labeling.setUsesFixedSize(True) 
labeling.setHeightField(None) 
labeling.setRotationField("ANGULO") 
labeling.setFixedColor(Color(r,g,b)) # RGB 
labeling.setFont(Font("Arial", Font.BOLD, 15)) 
labeling.setReferenceSystem(0) # WORLD=0, PAPER=1 
labeling.setFixedSize(15) 
labeling.setUnit(-1) # PIXELS 
labeling.setReferenceSystem(1) 
layer.setLabelingStrategy(labeling) 

elif nombre_capa == "NUMEROS": 
glf = GeneralLabelingFactory() 
gls = glf.createStrategy(layer, None, None, None) 
placementc = gls.getPlacementConstraints() 
placementc.setPlacementMode(IPlacementConstraints.ON_TOP_OF_THE_POINT) 
defaultLabel = symbologyManager.createDefaultLabel() 
defaultLabel.setLabelExpressions(["TEXTO"]) 
textSymbol = symbologyManager.createSimpleTextSymbol() 
textSymbol.setFont(Font("Arial", Font.BOLD, 10)) 
textSymbol.setFontSize(10) 
textSymbol.setTextColor(Color(r,g,b)) # RGB 
textSymbol.setDrawWithHalo(True) 
textSymbol.setHaloColor(Color.WHITE) 
textSymbol.setHaloWidth(2) 
defaultLabel.setTextSymbol(textSymbol) 
resp = gls.getLabelingMethod() #ILabelingMethod 
resp.addLabelClass(defaultLabel) 
gls.setLabelingMethod(resp) 
layer.setLabelingStrategy(gls) 


Pasa como al hacerlo en modo diseño, si el ángulo es obligatorio tengo que utilizar el modo "Atributos de la etiqueta definidos en tabla", aunque no pueda cambiar el origen, y si es necesario cambiar el origen hay que usar el modo "Etiquetas definidas por el usuario", aunque no puede establecer un ángulo. 

Lo que me falta ahora es agrupar capas. ¿Alguna idea? 

Muchas gracias. 

Un saludo, 

Víctor Montes. ----- Mensaje original -----

De: "Óscar Martínez" <omartinez en gvsig.com> 
Para: "Montes Cámara, Victor" <victor.montes en alicante-ayto.es> 
CC: "Lista de Desarrolladores de gvSIG" <gvsig_desarrolladores en listserv.gva.es> 
Enviados: Lunes, 28 de Octubre 2019 15:58:08 
Asunto: Re: [Gvsig_desarrolladores] Establecer propiedades de capas 

Buenas, 
Aquí te he puesto un ejemplo de lo que sería establecer un etiquetado avanzado, con la colocación sobre el punto, con una expresión de etiquetado,si solo quieres por un campo sería algo como (["CAMPO1"]) y lo del halo con un color y tamaño. 
https://gist.github.com/oscar9/5393823cb2d49ef9467b932fbf50ee29 
Ya me comentas si te funciona bien. 
Saludos, 
Óscar 
PD: Lo envío también a las listas 

El mié., 23 oct. 2019 a las 13:49, Montes Cámara, Victor (< victor.montes en alicante-ayto.es >) escribió: 



De la segunda parte, realmente lo que más te interesa es situar la etiqueta sobre el punto, es decir la opción siguiente de las propiedades de colocación: 



De: "Montes Cámara, Victor" < victor.montes en alicante-ayto.es > 
Para: "Lista de Desarrolladores de gvSIG" < gvsig_desarrolladores en listserv.gva.es > 
CC: omartinez en gvsig.com 
Enviados: Miércoles, 23 de Octubre 2019 11:01:27 
Asunto: Re: [Gvsig_desarrolladores] Establecer propiedades de capas 


Me contesto yo mismo, 

Para la primera parte, siguiendo el ejemplo en http://osgeo-org.1560.x6.nabble.com/Re-Etiquetas-desde-scripting-td5400766.html sería 



symbologyManager = SymbologyLocator.getSymbologyManager() 
labeling = symbologyManager.createDefaultLabelingStrategy() 


labeling.setTextField("TEXTO") 
labeling.setUsesFixedColor(True) 
labeling.setUsesFixedSize(True) 
labeling.setHeightField(None) 
labeling.setRotationField("ANGULO") 
labeling.setFixedColor(Color(255,255,255)) # RGB 
labeling.setFont(Font("Arial", Font.PLAIN, 12)) 
labeling.setReferenceSystem(0) # WORLD=0, PAPER=1 
labeling.setFixedSize(15) 
labeling.setUnit(-1) # PIXELS 

layer.setLabelingStrategy(labeling) 
layer.setIsLabeled(True) 

Voy con la segunda parte. 

De: "Montes Cámara, Victor" < victor.montes en alicante-ayto.es > 
Para: "Lista de Desarrolladores de gvSIG" < gvsig_desarrolladores en listserv.gva.es > 
CC: omartinez en gvsig.com 
Enviados: Miércoles, 23 de Octubre 2019 10:13:20 
Asunto: Re: [Gvsig_desarrolladores] Establecer propiedades de capas 


Gracias Óscar, 

Sí, eso es sencillo, ya lo había descubierto. 
Ahora estoy con el tema del etiquetado. 

Tengo una capa de calles donde quiero poner como etiqueta un campo definido en tabla, el ángulo otro campo, tamaño y negrita. 
Equivalente a lo siguiente en modo diseño: 


También tengo una capa de números de policía donde quiero establecer unas propiedades concretas, que en modo diseño establecería de la siguiente manera: 
"Etiquetas definidas por el usuario", "Etiquetar todas las entidades de la misma manera" y las siguientes propiedades: 


Y eligiendo un campo de tabla para visualizar. 

Por ahora he conseguido activar el etiquetado con la instrucción: 

layer.setIsLabeled(1) 

Para lo demás supongo que habrá que utilizar los métodos setLabelingStrategy o drawLabels, pero no tengo claro como. 
Un saludo, 
Víctor Montes. 

De: "Óscar Martínez" < omartinez en gvsig.com > 
Para: "gvsig desarrolladores" < gvsig_desarrolladores en listserv.gva.es > 
Enviados: Lunes, 21 de Octubre 2019 17:54:47 
Asunto: Re: [Gvsig_desarrolladores] Establecer propiedades de capas 



Buenas, 

Para establecer los límites del zoom se hace directamente sobre la capa. Solo son necesarias dos líneas. 

layer.setMinScale(integer) 
layer.setMaxScale(integer) 

Por ejemplo en el siguiente script se crea una capa de puntos y se establece que solo sea visible por debajo de 1:5.000 y por encima de 1:1.000 
# encoding: utf-8

import gvsig
from gvsig import geom

def main(*args):

  # Creating new layer
  ft = gvsig.createSchema()
  ft.append("ID", "INTEGER")
  ft.append("GEOMETRY", "GEOMETRY")
  ft.get('GEOMETRY').setGeometryType(geom.POINT,geom.D2)

  layer = gvsig.createShape(ft, prefixname="testScale")
  store = layer.getFeatureStore()
  layer.edit()
  layer.append({"ID":1,"GEOMETRY":geom.createPoint(geom.D2, 10, 20)})
  layer.append({"ID":2,"GEOMETRY":geom.createPoint(geom.D2, 20, 20)})
  layer.append({"ID":3,"GEOMETRY":geom.createPoint(geom.D2, 20, 30)})
  layer.commit()
  gvsig.currentView().addLayer(layer)

  #Change zoom
  layer.setMinScale(1000)
  layer.setMaxScale(5000) https://gist.github.com/oscar9/296125be4e58e87d978c578ea3996000 

El 18/10/19 a las 10:43, Montes Cámara, Victor escribió: 

<blockquote>

Buenos días, 

Tengo un desarrollo en el que creo capas shapefile dinámicamente a partir de tablas en Oracle Spatial. 
Me gustaría saber como cambiar, a través de scripting, las propiedades de la capa, tales como color, etiquetas, zoom mínimo o incluso como agrupar capas. 

Un saludo. 
Víctor Montes 

_______________________________________________
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: https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores 



-- 
--
gvSIG Association
Óscar Martínez omartinez en gvsig.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: https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores 




</blockquote>


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20191029/0fd79325/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: 13627224.879999878
Type: image/png
Size: 27426 bytes
Desc: no disponible
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20191029/0fd79325/attachment.png>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: 216729.02999981306
Type: image/png
Size: 38087 bytes
Desc: no disponible
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20191029/0fd79325/attachment-0001.png>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: 410523.79999984987
Type: image/png
Size: 43089 bytes
Desc: no disponible
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20191029/0fd79325/attachment-0002.png>


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