[Talk-de] Polygongrösse ab API 0.6 max 2000 nodes?
Frederik Ramm
frederik at remote.org
Fr Jan 23 15:06:31 UTC 2009
Hallo,
Tobias Wendorff wrote:
> Das verstehe ich nicht. Wieso kann eine Relation nicht partiell
> editiert werden?
[...]
> Wenn ich nun den Node 135 verschiebe, ist es doch vollkommen egal,
> ob der in einer Relation ist oder nicht. Es ist doch in der
> Datenbank nur ein Hinweis, dass Node 135 sich in der Relation
> "test" befindet.
Das stimmt, das Verschieben des Nodes aendert die Relation nicht. Aber
das Hinzufuegen eines Nodes zu einer Relation aendert die ganze Relation
und bedingt einen Neu-Upload.
> Wenn ich einen neuen Node in eine Relation packe, sagen wir
> Node 839, wieso wird dieser dann nicht einfach - wie bei Ways
> auch - hinten in die Relation drangepackt?
Mir scheint, dass Du stark im Potlatch-Datenmodell denkst. Potlatch
stellt es dem User so dar, als ob "befindet sich in Relation xyz" eine
Eigenschaft eines Nodes waere. In Wahrheit ist aber "enthaelt den Node
xyz" eine Eigenschaft der Relation! (Bei Ways ist es genauso.) Das
Entfernen eines Nodes aus einer Relation aendert also die Relation (und
nicht den Node), waehrend das Verschieben desselben Nodes an eine andere
Position den Node aendert (und nicht die Relation).
Unser ganzes Datenmodell kann nicht mit differenziellen Aenderungen
umgehen. Das faengt bei der History an. Wenn Du eine Relation
"Bushaltestellen in Dortmund" anlegst und dieser in Potlatch Schritt für
Schritt 2.500 Bushaltestellen hinzufügst, dann hat die Relation am Ende
bereits 2500 Versionen in der Datenbank mit insgesamt (in allen
historischen Versionen zusammen) 1+2+3+...+2500 = rund 3,1 Millionen
Mitgliedern. Wenn jemand nun also die History dieser Relation abfragt,
erhält er ein XML-Dokument mit gut und gerne 50 MB an Daten. (Die
Erstellung der Relation in JOSM ist etwas weniger schmerzhaft, weil man
i.d.R. nicht nach jedem Hinzufügen hochlaedt.)
Auch ohne Betrachtung der History hat das XML-Dokument zu Deiner
2500-Node-Relation bereits rund 100 KB. Dieses Dokument muss jeder
herunterladen, der sich in einem Bbox-Request einen der
Bushaltestellen-Nodes einfaengt, und jeder, der eine Bushaltestelle
hinzufuegen will, muss das ganze Dokument wieder hochladen. Je groesser
die Relation, desto groesser auch die Gefahr, dass mehrere Leute
gleichzeitig daran arbeiten und sich gegenseitig stoeren... und und und.
Man koennte das alles besser machen, keine Frage; insbesondere koennte
man Methoden vorsehen, mit denen man nur einen Teil eines Ways oder
einer Relation von der API laden und spaeter wieder hochladen kann. Das
ist aber alles nicht ganz trivial und braucht jemanden, der es - in API
und Edtioren - implementiert. Vielleicht kommt es in API 0.7 ;-)
Bye
Frederik
Mehr Informationen über die Mailingliste Talk-de