Serg-Norseman / GEDKeeper

GEDKeeper - program for work with personal genealogical database
https://gedkeeper.net/
GNU General Public License v3.0
149 stars 44 forks source link

How can I show or print every person in the tree for a family within 100 members (All Relatives + Indirect Relatives Diagram)? #576

Closed Huaweidev closed 1 week ago

Huaweidev commented 2 weeks ago

I want to give my children the opportunity to know and remember everyone in both parents' families (all Relatives + Indirect Relatives Diagram). For example:

  1. my grandfather's brother's family line (several families).
  2. my grandmother's sibling family line (several families).
  3. my wife's grandmother's family line (several families).

Person quantity:

But I've never been able to show them all on one chart. I'm not a genealogist, it's a common need in life. I have read this post https://www.reddit.com/r/Genealogy/comments/16qk7yx/software_to_display_a_full_tree_family_view_every/, But no one has found a suitable solution.

Is it possible to realise this function with these small number of people, which is not complicated for software calculations? And if not, is there any other way to display it on one graph? Although I know PhotoShop can do it :(

Style example: 06-15_21-49-39

burtek commented 1 week ago

While it can be possible to generate a full family tree chart for some trees, it's not the case with all of them and that generation algorithm would need to take all cases into consideration. The main issue is that with some extended family trees (when you include not only your ancestors' siblings but also their spouses and spouses' ancestors, etc) four dimensions wouldn't be enough to generate such a tree, get alone a 2D plane.

Rather than going for a full tree chart generation algorithm, I'd probably rather go for being able to generate multiple subtrees (ancestors tree/descendants tree/all) on the same canvas with ability to rearrange them on the canvas, draw lines/curves and add some text to it - but TBH at this point I feel more comfortable doing that in mspaint...

Having an algorithm figure all of that out by itself taking into consideration all the details of that specific tree would be amazing, but from my experience it's hardly possible to create.

Huaweidev commented 1 week ago

Rather than going for a full tree chart generation algorithm, I'd probably rather go for being able to generate multiple subtrees (ancestors tree/descendants tree/all) on the same canvas

I accept generate multiple subtrees (ancestors tree/descendants tree/all) on the same canvas.

Serg-Norseman commented 1 week ago

The topic of a full tree has been raised by various people for many years. Various options have been considered, many. This topic has been discussed dozens of times over dozens of hours.

The option of generating multiple subtrees on one canvas is potentially possible. I assumed that the TreeMap approach could partially help here (name of the method, see wiki), but only partially. The most important thing here is to obtain an algorithm for arranging arbitrary rectangular areas on the canvas with the best filling of the canvas and with a minimum number of intersecting relationships between subtrees. This is one part of the problem.

If you take a larger approach to the list of tasks:

  1. We need a way to form limiting criteria - subtrees must be limited in some way. I'll explain below.
  2. TreeMap or Cloud (best filling) - for laying out subtree areas on the canvas.
  3. Building relationships.
  4. Virtual canvas to support extra-large charts.
  5. Solving the restrictions of many export formats (bmp, jpg, svg, pdf) on the maximum image width (all or some raster formats have such restrictions, vector ones are easier).

Why are restrictions needed? I will explain with my own example and ask you to try to visually represent what I am writing. Because I test all developments on my own live data. To develop something, I must imagine the goal and the end result in relation to my data.

I have a small database - 12.1 thousand people. Among the users there are also much larger ones (60-100 thousand), but I have 12.1 thousand. When processing any historical information, fragments are formed (groups of relatives, with still unknown connections with other groups). I have 670 fragments in my database, the largest of which is “my family” with 9959 people. The remaining 669 fragments are from 65 to 1 person. The depth of data is from our time to the 1570-1590s along different branches. The number of genera being studied is 344. Further, the volume of primary (father) surname branche for me is 893 people, for my wife - 660 - this is the number of descendants and their spouses from the deepest ancestor. My wife and I each have 150 ancestors (23 and 22 branches and 15th and 16th generations). For each of these ancestors, I have investigated from 20-50 to 890 descendants and their spouses. In total, the volume of descendants of only “our pure ancestors” is about 5-6 thousand out of 10 thousand of the main fragment.

Hence the following questions: do we generate a “full tree” for the entire database? What about the number of persons (12 thousand) and the number of fragments (670)? Will each fragment go to a separate section of the global mosaic? In my opinion, it’s completely unrealistic. Okay, let's not take the fragments. We take some central person and build a “full tree” relative to her. How do we do this? Are we building a “wide tree” from the center - all the ancestors in depth, and then from each pair of ancestors - all the descendants to the sides? Also unrealistic - the complexity of the layout algorithm is prohibitive, the connecting lines will be of abnormal length and intersections. This means we are not building a “wide tree” either. We build a regular ancestor tree to its full depth, and then put the descendants of each independent ancestor into sections on the sides. Criteria for selecting candidates for section ancestor? After all, if there are no criteria, the mass of descendants in each section will duplicate other parts of the overall picture. And duplicate it many times!

Thus, even when implementing a multi-section “full tree” based on already existing algorithms for constructing a tree, high-quality, consistent, and giving beautiful results are needed criteria for filtering out unnecessary, inappropriate, useless information or ugly layout.

Having thought about this topic for years, I can’t come up with a good set of criteria. But until I can achieve a suitable result, at least for myself, it cannot be offered to others. Because everyone has different situations, different vision.

burtek commented 1 week ago

12.1k??? And I considered my tree with 1k people to be huge...

100% agree. Can't implement something that's not designed in a good-enough way.