Angrenzende Polygone abfragen

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 glaub das Thema gabs hier schon nen paar mal. Immer mit Ergebniss, dass das nicht geht weil Shapedateien keine Topologie haben und deshalb nicht wissen wer ihre Nachbarn sind. Hier nen Lösungsvorschlag aus dem GISWIKI.
Hallo Klaus,

das 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
Hallo Christoph,
deine 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.
Hallo,

wie 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
Hallo Klaus,

du 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
Hallo,

der 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
Hallo,
ich 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
Hallo Klaus,

die 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