[OSM-dev] Edit question with respect to a changeset representation

Thomas Emge temge at esri.com
Fri Mar 19 00:16:16 GMT 2010


Thanks for the clarification, Frederik.

Yes, I am writing my "own" editor. Based on the description at http://wiki.openstreetmap.org/wiki/OsmChange I had assumed that those formats can be used interchangeably.
I am not insisting on using the JOSM format - if there is another, more suitable, format then I will change the approach for my editor.

That said, would the approach be different when using the osmChange style as compared to your answer for the JOSM format below? In other words it is the responsibility of the editing client to maintain integrity, correct?

You've also mentioned that the order of sending the updates is important. Can all three "actions" be included in the same file and the order in the file is important 

<osmChange>
  <delete> 
  <create>
  <modify>
</osmChange>

or do they need to be issued different requests for each action type.

I am thinking of the following scenario. I am starting out with a closed way

  N1----------N2
  |           |
  |           |
  |           |
  N3----------N4

And the after the modifications the new way looks like

  N1------N-1------N2
  |                /
  |               /
  |              /
  N3-----------N4

In such a way that N2 was modified and N-1 was created.

The first update against the server would be

<osmChange>
  <modify>
    <node id=2>
  </modify>
  <create>
    <node id=-1>
  </create>
</osmChange>

All the changes are accepted and now with (node, old_id=-1, new_id=5) the next update would be

<osmChange>
  <modify>
    <way id=1>
      <nd id=1 />
      <nd id=5 />
      <nd id=2 />
      <nd id=4 />
      <nd id=3 />
      <nd id=1 />
    </way>
  </modify>
</osmChange>


Thanks,

- Thomas

-----Original Message-----
From: Frederik Ramm [mailto:frederik at remote.org] 
Sent: Thursday, March 18, 2010 3:58 PM
To: Thomas Emge
Cc: 'dev at openstreetmap.org'
Subject: Re: [OSM-dev] Edit question with respect to JOSM changeset representation

Hi,

    note that your example is slightly unusual in that you have 
concatenated two ways to form a scenic route but they do not share a 
common node. This is possible but a more realistic example would be

<way id=1>
<nd ref=1>
<nd ref=2>
</way>
<way id=2>
<nd ref=2>
<nd ref=3>
</way>

> Then the user goes ahead and deletes the sidewalk feature meaning 
> deleting way1. What happens to the relation1 and how is the modification 
> expressed in the changeset of the JOSM file format?

JOSM actually lets you do different things, but it never lets you break 
referential integrity. You can delete the way and automatically remove 
it from the relation (leading to a way delete and relation modify), or 
you can delete the relation together with the way (leading to two deletes).

Deleting only the way is not possible.

When uploading changes to the API, JOSM must make sure to send the 
relation modification or deletion before the way deletion, because 
otherwise the way deletion will be rejected by the API as breaking 
referential integrity.

> <node id=1 action=delete>
> 
> <node id=2 action=delete> (which would make way1 being deleted but what 
> about relation1?)

JOSM can delete nodes 1 and 2 for you if you delete the way (unless they 
are still used by something else). In that case the node deletion will 
be added to the list of changes (and sent to the API *after* the way 
deletion has been sent).

But if you are writing an editor then it might not be the grandest idea 
to use JOSM's file format (unless you want JOSM users to be able to 
process the files generated); I would instead store data directly in 
osmChange (.osc) style.

If you really want to interact with JOSM then you could join the 
josm-dev list.

Bye
Frederik

-- 
Frederik Ramm  ##  eMail frederik at remote.org  ##  N49°00'09" E008°23'33"





More information about the dev mailing list