Opened 14 years ago

Last modified 12 years ago

#7295 closed defect

Possible information loss and NPE with Replace Geometry command — at Version 1

Reported by: joshdoe Owned by: team
Priority: major Milestone:
Component: Plugin utilsplugin2 Version:
Keywords: replace geometry Cc: joshdoe, rickmastfan67

Description (last modified by joshdoe)

I've noticed a few potential issues with the Replace Geometry command, where information can possibly be lost and/or NPEs can be triggered.

  1. Currently if you use the Replace Geometry command and one or more of the source or target way's nodes are tagged, then it's likely that the tags will either be lost (as the node is replaced by another), or the tagged node will be moved to a location where the tags may no longer be valid (barrier=gate, entrance=building, etc.). I think this command should only be allowed to operate on non-new (uploaded) ways which don't have any tagged nodes, or at least don't have nodes with interesting tags (non source,fixme, etc.). The replacement way could have tagged nodes, but if the nodes are replaced with id>0 nodes, the tags should be transferred.
  1. I've also noticed that relations can become corrupted when using this command. First we need to decide if relation memberships should transfer; I think it makes sense to do this at least for outer/inner, maybe ask every time? If not, then we should not allow touching objects that are members of relations. I've gotten NPE's when replacing the geometry where the new way is part of a multipolygon.
  1. If replacement nodes are greater than 3e-4 degrees (hardcoded) from the other nodes, the nodes aren't moved & transferred. I think by default there should be no limit to the distance, but have it settable in the preferences (using meters instead of degrees.

Change History (1)

comment:1 by joshdoe, 14 years ago

Description: modified (diff)
Summary: Replace geometry command shouldn't touch tagged nodesPossible information loss and NPE with Replace Geometry command
Note: See TracTickets for help on using tickets.