ArcView: Beschriftungen ersetzen: Unterschied zwischen den Versionen
GISWiki - Das freie Portal für Geoinformatik (GIS)
(ArcView Beschriftungen ersetzen wurde nach ArcView:Beschriftungen ersetzen verschoben) |
HeinzJ (Diskussion | Beiträge) |
||
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | + | 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 | ||
+ | |||
+ | <pre> | ||
+ | ' 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 | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | [[Kategorie:ArcView]] | ||
+ | [[Kategorie:Avenue]] |
Aktuelle Version vom 15. November 2005, 21:31 Uhr
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