Skip to content

Compute nonoverlapping core regions of a set of polygons and use for intelligent suppression of boundary detections#130

Open
russelldj wants to merge 16 commits intomainfrom
feature/DR/split-overlapping-regions
Open

Compute nonoverlapping core regions of a set of polygons and use for intelligent suppression of boundary detections#130
russelldj wants to merge 16 commits intomainfrom
feature/DR/split-overlapping-regions

Conversation

@russelldj
Copy link
Copy Markdown
Contributor

The goal of this is to make a set of potentially-overlapping polygons nonoverlapping. The definition for how to split is as follows: for any given point covered my multiple polygons, assign it to the polygon for which it is furthest interior from the nearest edge. The code so far only handles this for the pairwise case using the following steps:

  • Identify the overlapping region
  • Subtract this region from both input polygons to obtain the unambiguous regions
  • Add additional points to the boundary using segmentize
  • Create the veronoi tessellation to determine the region closest to each point
  • Dissolve these regions based on which polygon boundary the point was from

I haven't rerun this recently, but I think it was having numerical issues.

@russelldj russelldj marked this pull request as draft July 1, 2025 15:28
@russelldj russelldj force-pushed the feature/DR/split-overlapping-regions branch 2 times, most recently from f5fedf7 to 4d39908 Compare April 2, 2026 15:51
@russelldj
Copy link
Copy Markdown
Contributor Author

The goal of this work is to have a smart way to define the nonoverlapping "core" regions of a set of polygons. This can be used to filter detections such that each region is only predicted by the core of the corresponding tile. In practice, this approach is helpful because it allows the non-overlapping edges of tile to be retained, and closes #176. An example of the updated predictions with this new approach is shown below.

image

The core of the algorithm is a pairwise approach to splitting overlapping regions between two polygons repeated from the comment above

  • Identify the overlapping region
  • Subtract this region from both input polygons to obtain the unambiguous regions
  • Add additional points to the boundary using segmentize
  • Create the veronoi tessellation to determine the region closest to each point
  • Dissolve these regions based on which polygon boundary the point was from

Then, for a set of polygons, this approach is run on each pair. For each input polygon, the intersection of all pairwise non-overlapping versions is taken, which defines the core area. An example of the output can be seen in this notebook and below.
download
download

This approach is then used in the geometric tree detector to remove tree tops detected only in the overlapping areas, not in all areas at the tile edges.

@russelldj russelldj requested a review from amrithasp02 April 2, 2026 16:03
@russelldj russelldj marked this pull request as ready for review April 2, 2026 16:03
@russelldj russelldj changed the title WIP: overlapping regions splitting functionality Compute nonoverlapping core regions of a set of polygons and use for intelligent suppression of boundary detections Apr 2, 2026
@russelldj russelldj linked an issue Apr 2, 2026 that may be closed by this pull request
@russelldj russelldj force-pushed the feature/DR/split-overlapping-regions branch from c4fc086 to 4d39908 Compare April 2, 2026 16:21
@russelldj russelldj force-pushed the feature/DR/split-overlapping-regions branch from d4db4a5 to cb7874b Compare April 3, 2026 21:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Geometric tree detection is missing points and crowns at some edges

1 participant