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

  • 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 '17 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 '17 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 '17 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 '17 at 10:23
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!

0

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, privacy policy and cookie policy

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