[Gvsig_desarrolladores] Establecer propiedades de capas
Óscar Martínez
omartinez en gvsig.com
Mie Oct 30 12:50:42 CET 2019
Buenas,
Creo que ya teníamos localizada esa limitación del ángulo según el
etiquetado que eligieras, me la apunto para echarle un vistazo.
Respecto a los del grupo de capas he preparado el siguiente script, creo
que hace lo que deseas hacer.
https://gist.github.com/oscar9/293550287ff9e933d1d2d6e9719c758f
He insertado un pequeño comentario de un método nuevo que vamos a crear
para la 2.5 final que facilite esa creación del flayers y que no se le
tengan que asignar esos parámetros.
Creo que con esto resolvíamos todas las dudas, ya nos dices si algo no
funciona o falta algo.
Saludos!
El 29/10/19 a las 13:59, Montes Cámara, Victor escribió:
> 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.
>
> ------------------------------------------------------------------------
> *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
> <mailto: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
> <mailto:victor.montes en alicante-ayto.es>>
> *Para: *"Lista de Desarrolladores de gvSIG"
> <gvsig_desarrolladores en listserv.gva.es
> <mailto:gvsig_desarrolladores en listserv.gva.es>>
> *CC: *omartinez en gvsig.com <mailto: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
> <mailto:victor.montes en alicante-ayto.es>>
> *Para: *"Lista de Desarrolladores de gvSIG"
> <gvsig_desarrolladores en listserv.gva.es
> <mailto:gvsig_desarrolladores en listserv.gva.es>>
> *CC: *omartinez en gvsig.com <mailto: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
> <mailto:omartinez en gvsig.com>>
> *Para: *"gvsig desarrolladores"
> <gvsig_desarrolladores en listserv.gva.es
> <mailto: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ó:
>
> 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 <mailto: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 <mailto:omartinez en gvsig.com>
>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> <mailto: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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20191030/2696bc67/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/20191030/2696bc67/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/20191030/2696bc67/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/20191030/2696bc67/attachment-0002.png>
Más información sobre la lista de distribución gvSIG_desarrolladores