OpenOrienteering / mapper

OpenOrienteering Mapper is a software for creating maps for the orienteering sport.
https://www.openorienteering.org/apps/mapper/
GNU General Public License v3.0
403 stars 107 forks source link

Seamless merger of adjoining buildings #1930

Open ollesmaps opened 3 years ago

ollesmaps commented 3 years ago

I tried:

  1. vector data of buildings for a sprint map
  2. typically cadastral data of area objects that follow same border
  3. goal: seamlessly merge these buildings, so there are no seams
  4. my intuitive solution was to select all buildings
  5. scale up all buildings lets say by 10 percent
  6. merge all these buildings
  7. decrease size by 9,0909... percent
  8. However the resulted vector is not what anticipated. It does not work. I assume a "higher" mathematic is involved.

Pic 1: situation Pic 2: desired result Pic 3: what I get (green color) when I use Scale tool + Ctrl

buildings_merge

Such a tool would be very much appreciated. It would save a lot of time (ha ha efficiancy again :smile: ).

mlerjen commented 3 years ago

How about just applying a minimal buffer executing to the unify areas tool? image In my sample the two buildings (a) are unified in (b) but there is this Sliver Artifact along the common border. This in spite I applied snapping to the first building drawing the second. image

ollesmaps commented 3 years ago

@mlerjen I agree this would be more elegant solution. Mine was a workaround that did not work :smiley:

jmacura commented 3 years ago

This sounds to me as a kind of advanced GIS tool and a bit of overkill for mapping software. Do you really need to do such operation during mapping? Or is it just a part of data preparation? If the latter is the case, then I would still prefer to use a dedicated SW like QGIS to do such a job.

ollesmaps commented 3 years ago

@jmacura This shall not be a fieldwork tool. Bus as you say data preparation (or rather data finalization) tool. What is the name of the feature in QGIS?

jmacura commented 3 years ago

@ollesmaps If the buildings at least touch, then "Dissolve" ("Rozpustit") shall do the trick. If not, then you need to do what was your original idea: Create "Buffer" ("Obalová zóna") with the distance of a half of the gap between the buildings -> Dissolve -> Buffer again with the negative value. Not tested right now, but a well-known process in GIS world 😉

yevhenmazur commented 3 years ago

I want to share with you one more case - unifying filled areas. The minimal buffer executing to the unify areas tool would be very good enhancement oom-fill-area

ollesmaps commented 3 years ago

I have played more with the Unify areas command. And it has worked flawlessly for the osm data I had used. See: plzen_merger.zip

@yevhenmazur Your drawing is a very good sample of efficient approach :) I tried to replicate the process and at the end used the Unify areas command. And the fact is some redundant points remained on the border areas. The question is what effects the creation of redundant points or Sliver Artifacts as @mlerjen calls them :)

krticka commented 3 years ago

In case of slivers the Snap geometries to layer tool in QGIS will do the trick. original_state tool result