Modify

Opened 13 years ago

Closed 13 years ago

#6696 closed enhancement (fixed)

[PATCH] Another way of computing merged node location

Reported by: *Martin* Owned by: team
Priority: normal Milestone:
Component: Core Version: latest
Keywords: Cc:

Description

Hello

I've implemented third way how to compute location of the merged node. Please see my attached patch.

  1. First way is to use location of the last selected node.
  2. Second way is to average locations of all selected nodes.
  3. Third way is to do weighted average where nearby nodes have lower weight than remote.

This behavior can be controlled by merge-nodes.mode property (0, 1, 2). I would like to create a GUI control in preferences to enable its easy setup, but I am not sure what tab should it belong to.

Attachments (3)

merge.patch (2.7 KB ) - added by *Martin* 13 years ago.
the patch
merge.2.patch (3.2 KB ) - added by *Martin* 13 years ago.
improved patch using NorthEast
merge.3.patch (2.9 KB ) - added by *Martin* 13 years ago.
optimized patch

Download all attachments as: .zip

Change History (9)

by *Martin*, 13 years ago

Attachment: merge.patch added

the patch

comment:1 by stoecker, 13 years ago

Summary: Another way of computing merged node location[PATCH] Another way of computing merged node location

comment:2 by bastiK, 13 years ago

You cannot do average on lat/lon coordinates, use EastNorth space or 3D instead.

What is the weighted average supposed to do, exactly?

comment:3 by *Martin*, 13 years ago

You cannot do average on lat/lon coordinates, use EastNorth space or 3D instead.

Could you please help me with this? For two nodes I am able to find the formula but for more than two I am not successful. In any case results are very good for small distances (eg. 100km and less).

Visual example, (.) represents node:
Classic merge:

Input : ...                       .
Result:        .

Weighted merge:

Input : ...                       .
Result:             .

in reply to:  3 comment:4 by bastiK, 13 years ago

Replying to Martin Ždila <m.zdila@…>:

You cannot do average on lat/lon coordinates, use EastNorth space or 3D instead.

Could you please help me with this?

Should be easy: Just use candidates.get(i).getEastNorth(); and new Node(EastNorth en).

In any case results are very good for small distances (eg. 100km and less).

But still, it just looks wrong. :-)

Visual example, (.) represents node:
Classic merge:

Input : ...                       .
Result:        .

Weighted merge:

Input : ...                       .
Result:             .

by *Martin*, 13 years ago

Attachment: merge.2.patch added

improved patch using NorthEast

comment:5 by *Martin*, 13 years ago

Attached improved patch. Is it better now? :-)

by *Martin*, 13 years ago

Attachment: merge.3.patch added

optimized patch

comment:6 by bastiK, 13 years ago

Resolution: fixed
Status: newclosed

In [4315/josm]:

applied #6696 - Another way of computing merged node location (patch by Martin Ždila)

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain team.
as The resolution will be set.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.