Hallo Forum,
ich möchte in einem (z.B.) Gemeinde-Thema (Polygon) schrittweise durch die Tabelle gehen und zu jeder Gemeinde die jeweilig angrenzenden finden. Gibt es einen return-Befehl unter Avenue ??
Klaus
ich möchte in einem (z.B.) Gemeinde-Thema (Polygon) schrittweise durch die Tabelle gehen und zu jeder Gemeinde die jeweilig angrenzenden finden. Gibt es einen return-Befehl unter Avenue ??
Klaus
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Andreas Koeberle am Do., 25.03.2004 - 15:36
PermalinkGespeichert von Gast am Fr., 26.03.2004 - 12:13
Permalinkdas Shape-Objekt bietet z.B. die Distance-Funktion in Avenue. Damit kannst Du die unmittelbare benachbarten Shapes per Script ermitteln und dann als Liste, Grafik o.a. wieder ausgeben.
Christoph
Gespeichert von Andreas Koeberle am Fr., 26.03.2004 - 13:25
Permalinkdeine Methode hat den Haken, dass die Distance ja immer vom Mittelpunkt des Extents gemessen wird. Bei unregelmäßgen Flächen bekommst du da sicherlich ziemlich schnell Fehler rein.
Gespeichert von Jörg Thomsen am Fr., 26.03.2004 - 15:06
Permalinkwie wäre es denn mit intersects: aShape.Intersects(anotherShape)? liefert auch true, wenn sich zwei Flächen berühren. Bei einer Gemeindegrenzendatei sollte das ja der Fall sein.
Da muss man natürlich jedes Polygon mit jedem Polygon verglichen werden, das kann einige Rechenzeit beanspruchen, aber heute ist Freitag und bis Montag sollte auch ein betagter Rechner damit durch sein:-)
Ich könnte mir auch vorstellen, dass man über die Mittelpunkte oder Boundingboxen der Polygone, die Auswahl der Polygone, mit denen verglichen werden muss einschränkt.
Jörg
Gespeichert von Gast am Fr., 26.03.2004 - 18:37
Permalinkdu könntest auch für die Polygone der Gemeindegrenzen Buffer (z.B. 5 m) erstellen und dann für jeden Buffer abfragen ("Thema analysieren"), mit welchen Polygonen des Gemeindeshapes er sich überschneidet. Die jeweilige Gemeinde selbst wäre dann natürlich mit dabei, aber auch alle Nachbarn.
Ich hoffe, ich habe verständlich ausgedrückt, was ich meine.
Schönes Wochenende
Bernard
Gespeichert von Gast am Mo., 29.03.2004 - 09:47
Permalinkder Schritt über "Thema analysieren" funktioniert auch ohne Puffer, vorausgesetzt die Polygone grenzen wirklich aneinander und haben mindestens einen gemeinsamen Stützpunkt oder Knotenpunkt. Auch dann werden alle Nachbarn und das gewählte Polygon selektiert. Das entspräche dann dem "aShape.Intersects(anotherShape)" das Jörg vorgeschlagen hat, und bei einer größeren Anzahl von Gemeinden würde sich eine Automatisierung wohl schon lohnen.
Asmus
Gespeichert von Gast am Mo., 29.03.2004 - 13:53
Permalinkich bins wieder:
Ich bin auf eine Lösung gekommen, die doch klappen müßte: Von Hand gehts so: Ich suche ein Polygon im aktuellen Thema aus. Dann gehe ich über Thema analysieren und wähle aus Objekte von aktiven Themen auswählen, die "sich in Reichweite..." Ausgewählte Objekte von "Name des Shapes" Suchdistanz "0". Dann selektiert mir Freund AV sauber die angrenzenden Polygone aus.
NUR: Wie bringe ich dies über Avenue Freund AV bei ????
Klaus
Gespeichert von Jörg Thomsen am Di., 30.03.2004 - 15:37
Permalinkdie Avenue-Methode, die Du suchst ist
ashape.IsWithin(ashape, aDistance)
Jetzt baust Du Dir zwei ineinander verschachtelte Schleifen:
FOR EACH shapeA IN aTheme
FOR EACH shapeB IN aTheme
IF (shapeA.IsWithin(shapeB, 0)) THEN
shapeAList.Add(shapeB)
END
END
soweit im Groben. Du musst jedes shape mit jedem anderen shape vergleichen.
Jörg