osm-rnd editing tips & tricks I. Low level drawing tricks 1. Hot tags Place a few nodes, select them and press hotkey sequence {h a w t} to tag them into generic waste baskets. Draw a few lines, select them and press {h h t} to turn them into highway=track. You can find all the hotkey tags in the Hot-tags menu. The logic behind key assignment, e.g. for {h a w t} and {h h t} goes like: Hot-tag, Amenity, Waste, Trash and Hot-Tag, Highway, Track. You can create new Hot-tags using a menu patch file, see pcb-rnd documentation and knowledge pool for details (http://pcb-rnd.repo.hu) 2. Tag presets Right click over a node or line and select Presets... from the popup context menu. On the left side there is a list of all known presets; type a word in the filter entry below the list to narrow it down. Once the right presets is found, double-click it. On the right side all the known/suggested editable tags for that presets are presented. Click on a tag and then the edit field button. This pops up a smaller dialog that changes the value of the given field. Once fields are filled in, click on the Apply button to get it set on the object the dialog was invoked for. The print button prints a command that sets these tags on all selected objects - this command can be copied from the message log window (hotkey {w m}) to the command line (hotkey {:}) or into a menu patch file. 3. Commit with fields pre-loaded The Commit() action (or ci for short) has optional named arguments. These are: comment=text pre-fill the comment field with text survey sets changeset tag source=survey and prompts for an url for tag source_ref:url (for sharing survey photos) survey=url url coming from the action command force allow committing even with drc errors A full command can look like e.g. this: ci "comment=playground details" survey=https://url.to.my.photos or with the more formal syntax ci("comment=playground details", "survey=https://url.to.my.photos") Such a command can be saved and reused from paste buffer or repeated from history using the up arrow in the command line or added as a menu using a menu patch. 4. Object list dialog If there are overlapping objects at a location, e.g. two areas with overlapping edges: right click over the edge way and select the "List objects here" menu. A list of objects near the mouse cursor is presented in a dialog box. Use click on objects in the list then use the select/unselect button to highlight objects to figure which one to chose. Once the target object selected use any action that affects selected objects. Or click the props or tags button to invoke the property editor or the tag editor. 5. Property editor The property editor presents all the non-tag data of an object. In the first tab it's: - the coords of a node - member nodes of a way - member (referee) nodes/ways/relations of a relation When a referee (member) list is presented, click on a referee then use the select/unselect button to highlight it or click the props or tags button to invoke the property editor or the tag editor. A common use case of this window is detaching a node of overlapping ways: - assume there are two ways, #-3 and #-6 sharing several points on a zig-zag - open the property editor for #-3 - select one of the nodes - click on "remove from list" This will remove the node from way #-3's list, without removing the same node from any other way. This detaches way #-3 at that point, makes it cut short that arm of the zig-zag. On the second tab, for any object, a list of referers is provided. For a node object referer can be ways and relations; for a way or relation referer can be a relation. The place column tells the place of the reference within the ordered member list of the referer. This matters especially if the same object is present multiple times on the referer's list (e.g. the first-last node on an area type closed way). Role is the object's role in the referer relation's list. 6. Object history dialog Right click over a way or node and select the history menu. This does a lot of wget's (give it some time) and reconstructs the full history of the given object in a history dialog box. The dialog box is split into three vertical sections: - the leftmost is the list of all affected objects, initially with the one selected that the dialog is invoked for - the rightmost is an ordered list of changesets affecting the object selected on the leftmost section, directly or indirectly - click on a changeset on the rightmost side and the central section is filled in with the information of that changeset; osm-rnd will also draw the object in the main window at the activated history state (you should select the original, current-state object so it's easier to distinguish) For example take a street, which is a way object. A direct change is a change of tags or removing/adding nodes. However, when the geometry of the street is changed, that is done indirectly, by moving nodes. At the end of the day such a change is really a change to the way too, so osm-rnd's history dialog includes that; that's why the left side object list includes a lot of nodes, all nodes that were ever part of the way. 7. Reference angles It's common that streets, fences, buildings, pitches, and other way and area-like man made objects are oriented the same way in a small area. The easiest way to draw a lot of orthogonal objects with the same orientation is using a reference angle: - draw the first way - align it, or at least an edge of it - select exactly two nodes that determine the correct direction - press {r r} A crosshair with the selected direction (which is called the reference angle) and the orthogonal direction appear. From now on pressing {o o} will use these two orthogonal directions. To turn off the crosshair and cancel using the reference angle use the hotkey {r 0}. There are really 4 distinct reference angles; initially, when {r 0} is active, {r r} picks up the angle into {r 1} and switches to {r 1}. Switching between the 4 is done by {r 1}, {r 2}, {r 3} and {r 4}. If one of these are active, {r r} won't switch to {r 1} but overwrites the reference angle of the currently active one. This way if a neighborhood has more than one reference angle, they all can be picked up and easily switched between. II. High level mapping methods 1. Efficient mapping of stand-alone buildings Draw the contour from imagery, then select one or more buildings and press {h b} that sets building=yes and {o o} that makes them orthogonal. Buildings selected and orthogonalized at once will follow the same two orthogonal directions. If the building has a non-orthogonal edge, such as a chamfer, like this one: https://www.openstreetmap.org/way/1243603069 the easiest way is to ignore the chamfer first, extending that arm of the building as if it was rectangular, even if it goes over fences and other buildings, resulting in an L shaped, rectangular building. Then {o o} on it. Then insert extra nodes on the contour where the chamfer starts and ends then delete the corner that doesn't doesn't exist in reality, forming the chamfer. 2. Efficient mapping of mostly rectangular fence+building blocks Example block: https://www.openstreetmap.org/#map=19/47.64124/19.13984 First step is to trace all the perimeter fences, preferably one way per fence so it's easier to select which ones to orthogonalize. For example in this block the east and west side fences are parallel but the south and north side fences are random angle. Align either east or west as accurately as possible to the aerial image, then select the two endpoints and pick up a reference direction #1 using {r r}. Then select the other parallel fence and use {o o} on it to make sure it has the same orientation (and is really parallel). Then select the two endpoints of the north fence and pick it up into #2 then the south side's fence into #3. Except for the south-side 3 parcels, the rest of the fences are clearly parallel/orthogonal to the long side, our #1 direction. Switch to #1 using {r 1}, draw those inner fences approximately right, then select them all and press {r r} to fix them up. Then switch to {r 3}, draw the two near-vertical short fence sections of the south 3 parcels {o o} them. This works because these sections are orthogonal to the south side fence that has its reference angle stored as #3. This may move the other fences drawn/aligned previously a bit so select those again, switch back to {r 1} and {o o} them again. This is a good sequence point for a commit. Then select {r 3} and draw the south 3 parcel's bottom buildings and {o o} them. Note that the upper buildings glued to the inner fence are really parallel with our {r 1}, so they have to be drawn separately. Then select {r 1} and proceed drawing the inner buildings. Don't forget to commit from time to time, you don't have to draw all buildings within the block for a commit. On the north side of the block there are again parcels with some buildings having the {r 1} direction and some having the {r 2} direction. When they touch, it's usually very hard to determine the exact angle of the shared edge - but it probably doesn't matter much, just pick either {r 1} or {r 2} for those.