[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