ArcView: Beschriftungen ersetzen
GISWiki - Das freie Portal für Geoinformatik (GIS)
Version vom 15. November 2005, 21:31 Uhr von HeinzJ (Diskussion | Beiträge)
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