ArcView: Beschriftungen ersetzen
GISWiki - Das freie Portal für Geoinformatik (GIS)
(Weitergeleitet von ArcView Beschriftungen ersetzen)
Ich bitte um Vorsicht!
Das Ersetzen der Label funktioniert nur dann vernuenftig, wenn die Beschriftungen eindeutig sind!! Ich versuche das demnächst abzufangen!
Johannes Brinkmann, 19.12.2003
' HGraphic.ReplaceLabel
'
' Title: ersetzt die Beschriftungen in einem view
'
' Topics: Beschriftungen/Labels
'
' Description: mit diesem Skript können Label
' ausgestauscht werden. Dazu müssen die neu zu
' vergebenden Label in einer neuen Spalte stehen.
'
' Problems: bei verschiedenen gelabelten Themen gerät es durcheinander!!
' keine Ahnung, warum!
' es giebt kein richtiges Fehlerabfangen
' Das Ersetzen der Label funktioniert nur dann
' vernuenftig, wenn die Beschriftungen eindeutig sind
'
' Requires: das zu beschriftende Thema muss aktiv sein
'
' Self:
'
' **********************************************************
' Author: Johannes Brinkmann 01.12.03
' Address: Plan-Zentrum Umwelt, Bahnhofstr. 64, 44623 Herne
' **********************************************************
'
' Changes:
' allgemeines Zeugs
theView = av.GetActiveDoc
theTheme = theView.GetActiveThemes.Get(0)
theFTab = theTheme.GetFTab
theBitmap = theFTab.GetSelection
theBitmap.ClearAll
FldLst = {}
for each fld in theFTab.GetFields
if (fld.IsTypeShape = FALSE) then
FldLst.Add(fld)
end
end
' auswählen
Fld1 = MsgBox.ChoiceAsString(FldLst, "zu ersetzen",theTheme.GetName)
if (Fld1 = Nil) then Return Nil end
FldLst.RemoveObj(Fld1)
Fld2 = MsgBox.ChoiceAsString(FldLst, "ersetzen durch",theTheme.GetName)
if (Fld2 = Nil) then Return Nil end
allGraphicsLst = theView.GetGraphics
allGraphicsLst.SelectAll
if (allGraphicsLst.Count = 0) Then Return Nil end
allGraphicsLst.UnselectAll
GrphTxtLst = allGraphicsLst.FindAllByClass(GraphicText)
' Liste mit Labels erstellen
i = 0
gStrLst ={}
gStrXChLst ={}
replStr = ""
for each g in GrphTxtLst
g = GrphTxtLst.Get(i)
gStr = g.getText
' je nach Feldtyp braucht man unterschiedliche query strings
if (Fld1.IsTypeString = TRUE) then
expr = "[[[["+Fld1.AsString+"]] = "+gStr.Quote
elseif (Fld1.IsTypeNumber = TRUE) then
expr = "([[[["+Fld1.AsString+"]] = "+gStr+")"
end
theFTab.Query(expr, theBitmap,#VTAB_SELTYPE_NEW)
theFTab.UpdateSelection
' suchen - ersetzen
for each rec in theFTab.GetSelection
tbreplStr = theFTab.ReturnValueString(Fld1, rec)
replStr = theFTab.ReturnValueString(Fld2, rec)
g.SetText(replStr)
end
gStrLst.Add(gStr)
gStrXChLst.Add(replStr)
i = i + 1
end
if (replStr = "") then
MsgBox.Info("Nichts ausgetauscht! Wurde das richtige Labelfeld ausgewählt?","Fehler")
Return Nil
end
theBitmap.ClearAll