So weit ich es verstanden habe, läuft ein Extract wie folgt ab:

  1. Alle nodes bestimmen, die im gewünschten Gebiert liegen → kommen in den Extract
  2. Alle ways bestimmen, die einen dieser nodes beinhalten → kommen in den Extract
  3. Alle relations bestimmen, die einen dieser nodes oder ways beinhalten → kommen in den Extract
    3a) Eventuell: alle relations, die eine dieser relations enthalten

Das zusätzlich die anderen Element der Relationen in den Extract aufgenommen werden, würde eine gigantische Datenmenge bedeuten. Der selbe Mechanismus wird z.B. auch von JOSM benutz um eine BoundingBox nachzuladen. Die Relationen sind in der Regel unvollständig.

Man könnte natürlich den Exract Algorithmus erweitern:
4)
Wenn (Relation ist ein Multipolygon) {
Sortiere ways so, dass geschlossene Gebiete entstehen.
Wenn (Multipoligon ist ohne Fehler) {
Für alle (geschlossenen Gebiete) {
Wenn (mindestes ein way des Gebietes im Schritt 2 zum Extract hinzugefügt wurde) {
Füge alle ways dieses Gebietes zum Extract hinzu.
Wenn (das Gebiet ein inner ist) {
Suche das entsprechende outer Gebiet
Wenn (das outer Gebiet nicht zum Extrakt gehört) {
Füge auch alle ways des outer Gebiets hinzu.
}
}
}
}
}
}

Zugegeben, der Teil mit “Wenn (das Gebiet ein inner ist)” löst ein anderes Problem, nämlich ein fehlenden outer way, wenn der inner zum Extrakt gehört, aber generell wird der Algorithmus recht kompliziert.

Wenn man aber einfach sagt:
4) Füge auch alle Mitglieder einer Relation zum Extrakt hinzu.

Kann der Extrakt wirklich riesig werden. Es gibt Relationen, die enthalten Relatioen, die enthalten …

Grüsse
mdk