Spliting small polygons and merge into the nearest-large polygons

3462
11
07-22-2021 11:37 PM
MaryamPanji
New Contributor III

Hello. I'm trying to split small polygons and merge them into the nearest _large polygons. With the Eliminate tool, the small polygons are merged into the large polygons but the boundaries between the two polygons look strange. Is there a way to do this automatically anyway? The feature class has thousands of small polygons that cannot be done manually.

 

MaryamPanji_1-1627022076621.png

After using Eliminate tool:

MaryamPanji_0-1627022033330.png

 

Tags (2)
0 Kudos
11 Replies
DanPatterson
MVP Esteemed Contributor

Eliminate Eliminate (Data Management)—ArcGIS Pro | Documentation

merges the feature by area or length to the appropriate adjacent feature

If you are using eliminate AFTER the splitting would Eliminate Polygon (Topographic Production)—ArcGISPro | Documentation be better (which is slightly different than Eliminate)

In any event, you should run a MultipartToSinglepart tool on the post-split process to ensure that you don't have multipart shapes, which will affect which adjacent polygon the small feature gets unioned to


... sort of retired...
0 Kudos
MaryamPanji
New Contributor III

Hi Dan,

Actually I am trying to split small polygons automatically .  check the below pic. I want to split the small polygon based on the red line and merge the two created polygons to the closet polygon. is there any way to created the red line automatically?  or in another way, can we split the small polygon based on the intersection with the other two polygons and merge into them?

MaryamPanji_0-1627035273810.png

 

0 Kudos
RPGIS
by
Occasional Contributor III

Another method perhaps is using the intersect tool in conjunction with either the merge or dissolve tool. The merge might make the most sense for what you are trying to accomplish.

0 Kudos
MaryamPanji
New Contributor III

Hi Robert,

The result of the intersect tool will be lines or points. How can use the intersect tool in this case? At first I thought there might be a way to divide smaller polygons based on the part of the boundary that is common with other polygons and merge into them. 

0 Kudos
RPGIS
by
Occasional Contributor III

It shouldn't return points or lines if you are using the same geometry. If you are using a line that you drew, then that would be a different situation. In that case you would want to start and edit session and simply split the polygon by the line you created (split polygon by polyline). 

So one way you could automate this is to create a separate feature class containing all of the polygons of the specified size(s). From there, you can use the intersect tool have that polygon obtain similar attributes to the ones it intersects with. Afterwards, you can use the dissolve tool to create the polygons based on the common attribute.

0 Kudos
MaryamPanji
New Contributor III

Hi Robert,

The small polygons and large polygons share just a border. If I separate the small ones and use the intersect tool, how I can get polygons as the geometry type in the result? if I choose the geometry type("input" which is polygon) the result is an empty shapfile. Also, I cannot draw a line to separate small polygons and then split them based on lined as I have thousands of the small polygons. The red line in the below picture is showing the shared border between the large and the small polygon. 

 

MaryamPanji_0-1627080797463.png

 

0 Kudos
by Anonymous User
Not applicable

Hi Maryam:

This sounds similar to this post.  I think there might be a solution to this if you are willing to do the operation on rasterized versions of your polygons.

Please see my response to that post. The key is to use the Euclidean Allocation tool to assign each cell in the small polygons to their closest large polygon 'source'.  You'll have to determine if this does an adequate job of inferring the missing portions of the large polygon boundaries.

Regards,

Jim TenBrink

spatial analyst team

0 Kudos
MaryamPanji
New Contributor III

Hi Jim,

This solution works perfectly for me, after converting raster to polygon I needed to use clip, cause Euclidean Allocation extended the boundary of the outer polygons. 

MaryamPanji_0-1627131242035.png

Also, in converting polygon to raster I lost the other fields of the attribute table, I used the join to have all fields after converting raster to polygon and also I used dissolve tool to join the polygons with the same ObjectID. 

But there is a slight issue with my final feature class. Please check the picture below. 

How can I get rid of the little cells?

MaryamPanji_2-1627132329723.png

the polygon in the base feature class:

MaryamPanji_3-1627132409027.png

I think it's good to mention that I tried different cell sizes in the second step and I got the best with 0.5 m. 

Thanks

 

0 Kudos
by Anonymous User
Not applicable

Hi Maryam

sounds like we're making progress. You can prevent the EucAlloc tool from spreading where it shouldn't by creating a background polygon that covers your analysis extent. One way to do that is to add a 'priority' field to your polygon feature class, create a rectangular background polygon, and give it a lower priority than the features you want to keep. For this to work, you'll also need to give your sliver polygons some id that you can use after rasterizing to turn the sliver cells into NODATA.

As an alternative, if you have the production mapping extension, you can create a 'difference polygon' in the editor, which will avoid creating any overlaps with the existing polygons.

For the raster to polygon step, did you specify 'SIMPLIFY' for the simplify option? Also, you can enable the 'create multipart features' option to do the dissolve as part of the conversion.

It may not be possible to remove all of the jaggies from this process. If you still have problems with the output, send me some anonymized input sample data and I'll see what I can do.

 

-jt

0 Kudos