Servus,
folgende Situation: Ich hab ein Shapefile mit zahlreichen Polygonen (FFH-Schutzgebiete) und ich hab ein Shapefile, das als Punkt vorliegt und die Stadt Ludwigsburg ist. Nun will ich die Entfernung der einzelnen Polygone (FFH-Schutzgebiete) zu meinem Punktsymbol (Ludwigsburg) berechnen und die berechnete Entfernung in der Attributtabelle der FFH-Schutzgebiete darstellen lassen. Hilfe!!!!!! Wer kann helfen?
Danke
folgende Situation: Ich hab ein Shapefile mit zahlreichen Polygonen (FFH-Schutzgebiete) und ich hab ein Shapefile, das als Punkt vorliegt und die Stadt Ludwigsburg ist. Nun will ich die Entfernung der einzelnen Polygone (FFH-Schutzgebiete) zu meinem Punktsymbol (Ludwigsburg) berechnen und die berechnete Entfernung in der Attributtabelle der FFH-Schutzgebiete darstellen lassen. Hilfe!!!!!! Wer kann helfen?
Danke
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Maxilla am Do., 12.04.2007 - 08:36
PermalinkWenn du aber wirklich nur den einen Punkt hast, kannst du auch das Skript unten benutzen. Oberstes Thema im View muss dein Punkt sein, zweites deine FFH-Gebiete, die Tabelle der FFH-Gebiete muss editierbar sein und ein Feld namens [Dist] enthalten. Vorsicht, es wird keinerlei Fehlercheck gemacht.
' Distances for many Shapes to one Shapes
' 1'st Theme in the View: the "One-Shape" Theme
' 2'nd Theme in the View: the "Many-Shapes" Theme
' Expects the "Many-Table" editable
' Expects Field [Dist] in the "Many-Table"
' to set the Distances
theView = av.GetActiveDoc
theThms = theView.GetThemes
theOFTab = theThms.Get(0).GetFTab
theMFTab = theThms.Get(1).GetFTab
theOShpFld = theOFTab.FindField("Shape")
theOShp = theOFTab.ReturnValue(theOShpFld,0) ' First Obj
theMShpFld = theMFTab.FindField("Shape")
theMDistFld = theMFTab.FindField("Dist")
for each rec in theMFTab
theMShp = theMFTab.ReturnValue(theMShpFld,rec)
theDist = theOShp.Distance(theMShp) 'in MapUnits
theMFTab.SetValue(theMDistFld,rec,theDist)
end
Gespeichert von Jo-Mac am Fr., 13.04.2007 - 08:31
PermalinkHat jemand ne Idee woran das liegen könnte?
Gespeichert von Maxilla am Fr., 13.04.2007 - 08:45
PermalinkGespeichert von Jo-Mac am Fr., 13.04.2007 - 08:48
PermalinkAber es steht immer noch die "0" :-(
Gespeichert von Maxilla am Fr., 13.04.2007 - 08:57
PermalinkGespeichert von Jo-Mac am Fr., 13.04.2007 - 09:00
PermalinkGespeichert von Maxilla am Fr., 13.04.2007 - 09:12
PermalinkName: Dist
Typ: Zahl
Breite: 16
Dezimalstellen: 4
Gespeichert von Jo-Mac am Fr., 13.04.2007 - 09:20
PermalinkGespeichert von Maxilla am Fr., 13.04.2007 - 09:34
PermalinkNee, eignetlich musst du sonst nichts beachten. Vieelicht hast du die Anzeige einfach noch nicht aktualisiert (einmal Tabelle aktivieren)? Kannst auch mal in einer neuen Zeile folgendes ganz unten an das Skript anfügen:
theMFTab.Refresh
Gespeichert von Jo-Mac am Fr., 13.04.2007 - 09:44
PermalinkWas mich ein wenig irritiert: Ich bekomme die 0.0000 erst,wenn ich vorher einmal im View bei den FFH-Gebieten auf "Start Editting" gegangen bin und dann erst in die Attributtabelle. Ansonsten bekomm ich nichtmal die 0.0000 sondern nur ein leeres Feld. Hilft das weiter?
Gespeichert von Maxilla am Fr., 13.04.2007 - 10:11
PermalinktheView = av.GetActiveDoc
theThms = theView.GetThemes
theOFTab = theThms.Get(0).GetFTab
theMFTab = theThms.Get(1).GetFTab
theOShpFld = theOFTab.FindField("Shape")
theOShp = theOFTab.ReturnValue(theOShpFld,0) ' First Obj
theMShpFld = theMFTab.FindField("Shape")
theMDistFld = theMFTab.FindField("Dist")
theRep = ""
for each rec in theMFTab
theMShp = theMFTab.ReturnValue(theMShpFld,rec)
theDist = theOShp.Distance(theMShp) 'in MapUnits
theRep = theRep+theDist.AsString+nl
end
MsgBox.Report(theRep,"")
Gespeichert von Jo-Mac am Fr., 13.04.2007 - 10:17
PermalinkJetzt mal generell: Ich erstelle die Scripts doch im Fenster, wo ich View, Tabelle, Layout, usw. auswählen kann in "Scripts", gehe dann auf "new" und gebe den Text ein. Muss ich dann noch was machen? Nein, oder?
Gespeichert von Maxilla am Fr., 13.04.2007 - 10:24
PermalinkFalls du das bisher alles nicht gemacht hast, vergiss das 2. Skript. Sorry, ich wusste nicht, dass du nicht weißt, wie man ein Skript ausführt...
Gespeichert von Jo-Mac am Fr., 13.04.2007 - 10:30
PermalinkEine Frage noch, na ja eigentlich zwei zum Verständnis:
- Das sind jetzt Meterangaben, wenn ich die im View als Einheit angegeben habe, oder?
- Bezieht sich die Distanz auf den Mittelpunkt der Polygone?
Nochmal Danke, ich werde dich weiter empfehlen ;-)
Gespeichert von Maxilla am Fr., 13.04.2007 - 10:37
Permalink2. Nein, Kante
Danke gleichfalls, war schon ganz lustig ;o)
Gespeichert von Jo-Mac am Fr., 13.04.2007 - 10:48
PermalinkUnd zuletzt ja auch noch erfolgreich!!!