Skip to content

Instantly share code, notes, and snippets.

@oscar9
Last active October 28, 2019 17:44
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/5393823cb2d49ef9467b932fbf50ee29 to your computer and use it in GitHub Desktop.
Save oscar9/5393823cb2d49ef9467b932fbf50ee29 to your computer and use it in GitHub Desktop.
Advanced labeling strategy #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
from java.awt import Color
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 que se repiten
defaultLabel.setLabelExpressions(["ID", "ID"])
textSymbol = symManager.createSimpleTextSymbol()
textSymbol.setDrawWithHalo(True)
textSymbol.setHaloColor(Color.GREEN)
textSymbol.setHaloWidth(2)
defaultLabel.setTextSymbol(textSymbol)
resp = gls.getLabelingMethod() #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