0

I'm having a problem where I am overlaying two maps to create a new kind of map with the data conjoined. In general this is good, but I need to remove the smaller areas from it. For the interior polygons, you can see that this is fine. However, for the ones on the exterior, they are removed and area is actually lost.

I don't want this to happen - I need to persist the original borders. I would like extended shape to have the data values of one of the polygons it was previously connected to.

Original map:

Original field in GRASS

Cleaned map:

Cleaned field in GRASS

Additional side note... There's an issue with v.buffer in Grass 6.4.3 where it will get in some sort of an infinite loop, use 100% of a CPU core, and never complete. I would like to avoid doing any operations that involve buffering the areas of the original map. However, if that's the only way please let me know. I will try to work around this problem.

Thanks!

  • Sidenote: v.buffer will run best when compiled with GEOS support. – markusN Apr 16 '14 at 21:58
1

a possible workaround is to select the polygons in the original data that do not overlap with the cleaned data (with v.soverlay operator=not ), then merge the two data together (using v.overlay operator=or )

EDIT :

the algorithm for a proper eliminate consists in :

1) selecting "small" polygons

2) converting original polygons in lines

3) converting "small" polygons to lines

4) intersecting (=and) the two sets of lines

5) for each small polygon, select the largest lines from the resulting intersection

6) remove the longest line of the intersection output from the lines resulting from step 2

7) convert back to polygons

All the functions should be in GRASS, but I can't test it right now

  • That would still give me the tiny areas on the border, correct? – jocull Apr 10 '14 at 15:30
  • Yes, you would still have those tiny bits. – radouxju Apr 10 '14 at 15:34
  • Once I'm done breaking everything down into lines back, how can I restore the data attributes back to each polygon? There's two critical data points that need to be preserved. – jocull Apr 10 '14 at 16:35
  • 1
    I would use the centroids (v.extract) and v.what.vect to transfer the attributes. – radouxju Apr 10 '14 at 16:41
-1

In ArcGIS you have one tool that can solve your problem: Eliminate (Data Management Tools)

  • Unfortunately I'm sort of tied to Grass as this is an automated process I'm programming. But thanks for the heads up! Perhaps it will help me find a solution using that keyword. – jocull Apr 10 '14 at 15:35
  • A little extra investigation seems to show that Eliminate would still reduce my borders, as the slivers are removed on the exterior instead of merged inwards. resources.arcgis.com/en/help/main/10.1/index.html#/Eliminate/… – jocull Apr 10 '14 at 15:47
  • ArcGIS eliminate works properly. You can select the rule for the merging and it is always merged with an existing polygon. – radouxju Apr 10 '14 at 16:11

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.