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
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
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Gast am Do., 22.01.2004 - 16:14
Permalinkdafü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!
Gespeichert von Gast am Do., 22.01.2004 - 18:25
Permalinkmeine 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
Gespeichert von Maxilla am Do., 22.01.2004 - 19:58
Permalinkerstmal: 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
Gespeichert von Gast am Fr., 23.01.2004 - 11:21
Permalinkvielen 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
Gespeichert von Juergen Evert am Fr., 23.01.2004 - 12:49
PermalinkIch 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