ArcView: Beschriftungen ersetzen: Unterschied zwischen den Versionen

GISWiki - Das freie Portal für Geoinformatik (GIS)
Wechseln zu: Navigation, Suche
(ArcView Beschriftungen ersetzen wurde nach ArcView:Beschriftungen ersetzen verschoben)
 
Zeile 1: Zeile 1:
#REDIRECT [[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
 +
 +
<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 3.x]]

Version vom 2. Juni 2005, 15:40 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