Avenue: Selektion durch Attribute

Hallo GIS-Forum,

ich möchte basierend auf einem Wert, der einer ID eines Datensatzes einer Thementabelle entspricht, das dazugehörige Feature (Polygone) auswählen. Kann mir jemand weiterhelfen?

Beispiel:

* Wert=4
* 4 enspricht einem Wert eines
Datensatzes einer Attributtabelle
(es handelt sich um eindeutige
Werte)
* nun soll die Geometrie (Polygon) mit
dem Wert 4 ausgewählt werden

Vieln Dank. Andreas
Hallo Andreas,

dafür gibt es im Menü "Tabelle" die Funktion "Abfragen". Die Abfrage lässt sich dort einfach zusammenklicken (Erklärt sich eigentlich von selbst, oder Handbuch ab S. 215)

Viel Erfolg!
Hallo,

meine Frage wurde offensichtlich missverstanden, ich möchte/will/muß diese Aufgabe mit Avenue lösen, wie ich diese Aufgabe im GUI löse ich ist mir natürlich selber klar. Also wer kann helfen die Avenue Befehle zu erörtern.

Danke. Andreas
Hallo Andreas,

erstmal: ich will dich nicht anmaulen, aber deine Frage wurde missverstanden, weil sie missverständlich gestellt war, und "Gast" kann kaum wissen, was dir alles "natürlich selber klar" ist. Nur mal so nebenbei...

Das funktionierende aber noch ganz nutzerunfreundliche (kein Fehlercheck, keine Auswahlboxen für Felder und Werte uswusf...) Grundgerüst für deine Frage sieht ungefähr so aus:

theTable = av.getActiveDoc
theVTab = theTable.GetVTab

' ODER VOM VIEW AUS:
'theView = av.getActiveDoc
'theActTheme = theView.getActiveThemes.Get(0)
'theVTab = theActTheme.GetFTab

theBitmap = theVTab.getSelection
theBitmap.ClearAll

theSelField = theVTab.findField("Feldname")

for each rec in theVTab
theVal = theVTab.ReturnValue(theSelField, rec)
if (theVal = 4) then
theBitmap.Set(rec)
end
end

theVTab.UpdateSelection

Gruß von Maxilla
Hallo Maxilla,

vielen Dank, genau danach habe ich gesucht.

Nun habe ich ein neues Problem, kannst Du / könnt Ihr vielleicht auch dazu etwas sagen. Beim ausführen des Scripts kommte die Meldung Segmentation Violation oder das exportierte Layout ist leer.

Das Script:
(Es soll ein Layout exportieren, basierend auf den Extents einer Geometrie mit der ID=4

Zusatzfrage: kann man den Export-Dialog auch per Script behandeln? Wie geht das?)

pr = av.GetProject
pr.SetModified(true)

theView = pr.FindDoc("Kartenview")
thetheme = theView.FindTheme("Blattschnitt.shp")
theLayout = pr.FindDoc("Layblattschn")
thetab = av.GetProject.FindDoc("Kartenview").FindTheme("Blattschnitt.shp")
virtutab = thetab.GetFTab

theBitmap = virtutab.getSelection
theBitmap.ClearAll

theSelField = virtutab.findField("ID")

for each rec in virtutab
theVal = virtutab.ReturnValue(theSelField, rec)
if (theVal = 4) then
theBitmap.Set(rec)
end
end

virtutab.UpdateSelection

r = Rect.MakeEmpty
r = thetheme.GetSelectedExtent

theView.GetDisplay.SetExtent(r.Scale(1.1))

theLayout.Export

Vielen Dank für Eure Hilfe.

MfG Andreas
Hallo Andreas,

Ich habe das Beispiel mal ausprobiert.
Vor der Exportzeile muss du:
theView.GetDisplay.flush
schreiben.
Der Absturz oder segmentation violation kommt bei mir dann, wenn das Layout nicht geöffnet ist.
Also ggf. prüfen, ob es geöffnet ist.

thelayout.getwin.open

MfG
Jürgen