# Enumerating "islands"

**URL:** <https://gramps.discourse.group/t/enumerating-islands/8715>\
**Category:** Help\
**Created:** [October 27, 2025, 2:58pm UTC](https://gramps.discourse.group/t/enumerating-islands/8715 "2025-10-27T14:58:37Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![pgerlier](https://avatars.discourse-cdn.com/v4/letter/p/41988e/32.png) [@pgerlier](https://gramps.discourse.group/u/pgerlier)\
**Post date:** [October 27, 2025, 2:58pm UTC](https://gramps.discourse.group/t/enumerating-islands/8715/1 "2025-10-27T14:58:37Z")

</div>

Gramps 6.0.5 under Fedora 42, KDE desktop

Disconnected subtrees have been discussed in [this question](https://gramps.discourse.group/t/disconnected-families/4863) or [that one.](https://gramps.discourse.group/t/incomplete-names-disconnected-individuals/3366).

I harvested quite large in old parish records and got several “islands” in my database. I want to study visually the relationship opportunities by drawing _Family Line_ graphs.

I order to do this I need to know how many islands there are and to enumerate members of these islands. This is a traditional graph problem but, since records are stored in a database, I fear a serious performance problem in Gramps with a traversal-and-mark algorithm.

I can easily get all people not related to my “main” branch by using a relational filter “People connected to _root person_”, applying NOT operator. But this gives me a grouped list of all other people outside the main branch without subdividing them into separate islands.

My first requirement is to compute the number of “islands”.

My second requirement is to identify which persons and families are members of the nth island. Every person and family would have an _Attribute_ _IslandNo_ containing the number or ID for its island (perhaps a shared _Attribute_ to facilitate later retrieval).

How can I do it with efficiency?

Once this is in place, I want to draw a Family Line graph per island. How can I designate the collection of _People of Interest_ based on the attribute or other property?

---

<div class="post-metadata">

**Author:** ![DaveSch](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/davesch/32/40_2.png) [@DaveSch](https://gramps.discourse.group/u/DaveSch)\
**Post date:** [October 27, 2025, 3:21pm UTC](https://gramps.discourse.group/t/enumerating-islands/8715/2 "2025-10-27T15:21:52Z")

</div>

My only suggestion would be to tag all the people that are in an “Island”. Then to tediously pick one of these people, find who belongs to that island and Tag them “Island 1”. Repeat the process creating “Island 2”, etc. In the process, you will also learn of the island’s count.

---

<div class="post-metadata">

**Author:** ![GeorgeWilmes](https://avatars.discourse-cdn.com/v4/letter/g/c57346/32.png) [@GeorgeWilmes](https://gramps.discourse.group/u/GeorgeWilmes)\
**Post date:** [October 27, 2025, 3:34pm UTC](https://gramps.discourse.group/t/enumerating-islands/8715/3 "2025-10-27T15:34:16Z")

</div>

You can first use the “Disconnected people” filter rule to identify all of the islands containing only one person (no family relationships with any other people). But if you do this, be aware that the rule does not consider any Associations the people might have.

---

<div class="post-metadata">

**Author:** ![pgerlier](https://avatars.discourse-cdn.com/v4/letter/p/41988e/32.png) [@pgerlier](https://gramps.discourse.group/u/pgerlier)\
**Post date:** [October 27, 2025, 3:44pm UTC](https://gramps.discourse.group/t/enumerating-islands/8715/4 "2025-10-27T15:44:23Z")

</div>

> [@DaveSch](#):
>
> My only suggestion would be to tag all the people that are in an “Island”.

I ruled out _Tag_ because a tag has no value (it is present or not). An attribute has a value. Therefore a single attribute, say, _IslandID_ directly returns the island number.

The process you describe is manual and I’m looking for something more automated. I won’t hesitate to write a dedicated plugin if it is beneficial.

> [@GeorgeWilmes](#):
>
> But if you do this, be aware that the rule does not consider any Associations the people might have.

For the time being, my concern is trying to reconnect the islands. I don’t consider _Associations_ yet because they translate looser connectivity than lineage and marriage.

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [October 27, 2025, 3:54pm UTC](https://gramps.discourse.group/t/enumerating-islands/8715/5 "2025-10-27T15:54:44Z")

</div>

The quickest way is something @GeorgeWilmes recommended about 5 years ago. You can visualize the scope and size of your ‘islands’ by importing a GEDCOM export into yEd. (I prefer to think of them as windfall or downed branches.) Rolling over nodes will pop-up an identifier.

> [@Finding orphaned people in Gramps](https://gramps.discourse.group/t/finding-orphaned-people-in-gramps/7925/3):
>
> A nice tool for identifying fragment is yEd diagramming a GEDCOM exported from Gramps. See a [sample digram of a complex network in another thread](https://gramps.discourse.group/t/graphviz-export-wish-for-feature/560/14).

---

<div class="post-metadata">

**Author:** ![kku](https://avatars.discourse-cdn.com/v4/letter/k/6bbea6/32.png) [@kku](https://gramps.discourse.group/u/kku)\
**Post date:** [October 27, 2025, 4:26pm UTC](https://gramps.discourse.group/t/enumerating-islands/8715/6 "2025-10-27T16:26:01Z")

</div>

There is also this discussion:  
[https://gramps.discourse.group/t/list-of-tree-snippets/6425](https://gramps.discourse.group/t/list-of-tree-snippets/6425)

and this tool:

[https://github.com/kkujansuu/supertool-scripts/tree/main/subsets](https://github.com/kkujansuu/supertool-scripts/tree/main/subsets)

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/gramps/original/1X/2ac1e712b7adf612e31ca08a55419f4cf37c0158.png) [@system](https://gramps.discourse.group/u/system)\
**Post date:** [November 26, 2025, 4:26pm UTC](https://gramps.discourse.group/t/enumerating-islands/8715/7 "2025-11-26T16:26:11Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
