Skip to content

Instantly share code, notes, and snippets.

@oscar9
Created October 28, 2019 12:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oscar9/a4dbbe4af8acf7380da68b47f21d0cc6 to your computer and use it in GitHub Desktop.
Save oscar9/a4dbbe4af8acf7380da68b47f21d0cc6 to your computer and use it in GitHub Desktop.
Create advanced labeling strategy for a gvSIG layer #gvsig #scripting
# encoding: utf-8
import gvsig
gvsig.uselib.use_plugin("org.gvsig.labeling.app.mainplugin")
from gvsig import geom
from org.gvsig.labeling.label import GeneralLabelingFactory
from org.gvsig.fmap.mapcontext.rendering.legend.styling import IPlacementConstraints
from org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling import LabelClassFactory
from org.gvsig.symbology import SymbologyLocator
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="testSymbol")
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 to ADVANCED LABELING STRATEGY
layer.setIsLabeled(True)
symManager = SymbologyLocator.getSymbologyManager()
glf = GeneralLabelingFactory()
gls = glf.createStrategy(layer, None, None, None)
placementc = gls.getPlacementConstraints()
placementc.setPlacementMode(IPlacementConstraints.ON_TOP_OF_THE_POINT)
defaultLabel = symManager.createDefaultLabel()
# Puedes agregar las diferentes etiquetas que responde a una expresion
# En esta caso dos etiquetas con dos campos
defaultLabel.setLabelExpressions(["ID", "ID"])
resp = symManager.createDefaultLabelingMethod() #ILabelingMethod
resp.addLabelClass(defaultLabel)
gls.setLabelingMethod(resp)
layer.setLabelingStrategy(gls)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment