ArcView: Beschriftungen ersetzen
GISWiki - Das freie Portal für Geoinformatik (GIS)
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