6

I have a shapefile with hundreds of pointy areas connected at the tip, forming a "pointy bridge". This creates a self-intersection and duplicate node. I'm not exactly sure what this type of error is called, so I do not know which v.clean parameters to use. How do I fix this using v.clean? I do not care about splitting the bridge vs. merging the bridge - just want to get rid of the error.

The last thing I tried was running v.clean with these parameters, and it did nothing:

break:0 bpol:0 rmdupl:0 rmbridge:0 rmdac:0

sp00ky pointy bridge

4
  • what do you get from v.info -t? what's the origin of your polygons? i've faced this problem before and the way around i tried was doing a small negative buffer
    – Elio Diaz
    Nov 24, 2017 at 21:01
  • v.info -t: nodes=89424 points=0 lines=0 boundaries=110503 centroids=25545 areas=74354 islands=53275 primitives=136048 map3d=0
    – srha
    Nov 25, 2017 at 0:11
  • I don't think doing a small negative buffer will be the best solution for me unfortunately because my file is huge and the computer is very slow. It would take hours/maybe days. I will keep it in mind if no other solutions come up, however!
    – srha
    Nov 25, 2017 at 0:12
  • 2
    When it comes to self-intersections, I tend to use the snap tool which snaps the lines closer to nearest vertex within the given threshold. You may need to play with this a few times as this could also affect other parts of your shapefile :)
    – Joseph
    Nov 27, 2017 at 10:23

2 Answers 2

1

I would proceed as follows:

  1. Creating a small test study to work on. It should contain those overlapping vertex points.

  2. Apply the v.clean algorithm, fine-tuning the break parameter.

  3. Once happy with the threshold value, run it on the whole dataset.

Hope this helps!

1

According to v.clean help, section rmbridge

A bridge is an area type connection of an island (polygon in a polygon) to the outer polygon. This is topologically incorrect (but OGC Simple Features allow it).

This is what you have here, as rings inside your polygons are connected together.

Therefore, as @Elio Diaz suggested, the best solution would be to go with a buffer, though I'd go with a small positive value (0.01 m or less, depending on your dataset), in order to separate the different rings without making a notable difference on the dataset.

Then you should have no more errors in your layer, or be able to clean them easily.

The problem you have in your dataset is that the points have to be identical to represent your rings, but this is not allowed by topology. Using the buffer method and separating the rings, even with a hair, is enough to correct this behaviour.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.