Comments 82
Genopro не пробовали? У вас прям похоже получилось)
Там триал есть который можно периодически переставлять. По крайней мере раньше точно был.
![image](https://habrastorage.org/getpro/habr/comment_images/8fe/9b1/199/8fe9b1199a9aaaa77834c71c45c18b58.webp)
Это фантастика, связанная с путешествиями во времени.
При том что в реальности достаточно случаев, которые выбивают из колеи визуализацию, построенную на жёстких предположениях. Например, у меня среди родственников есть женщина, которая вышла замуж за одного мужчину, родила ему двоих детей, потом он умер, и она вышла замуж за его двоюродного брата, от которого у нее тоже были дети. В другом случае, семья усыновила своего внука после того, как его мать (их дочь) была лишена родительских прав, внук при этом сменил фамилию.
В другом случае, семья усыновила своего внука после того, как его мать (их дочь) была лишена родительских прав, внук при этом сменил фамилию.
Ничего необычного не вижу. Генетическая связь-то не изменилась, как были дед с бабкой, так и остались. А для смены фамилиии обычно предусматривают отдельное поле в БД, как фамилию мужа, например.
Преимущество современных сервисов не только в том что можно построить генеалогические дерево, а ещё в том что можно искать по чужим (я так своё расширил в несколько раз), а так же по открытым базам (я нашёл фотографии Прапрадеда).
Однако, одна из причин по которой я тут опубликовал этот материал – получить обратную связь, тк наверняка я не рассмотрел все решения (наверняка есть что-то лучше, чем то, что я горожу). И в первую очередь прежде чем, что либо делать дальше, мне важно понять, что есть ещё.
Было бы круто узнать больше о вашем опыте.
К большому сожалению, главная проблема с подобной фичей — контроль качества. На сервисах типа Ancestry полно деревьев за тысячу человек, где даже при поверхностном анализе вылезают проблемы типа того, что кто-то не мог быть чьим-то предком, потому что умер в подростковом возрасте и жил совсем в другом месте. Разработка качественной системы контроля качества пока оказалась не по силам ни одному сервису (My heritage пытается, но очень плохо выходит).
Тот же Ancestry, например, практически стимулирует бездумное добавление мнимых родственников просто на основе частичного совпадения имён.
Да, я так и понял. Идея действительно классная, но как пет проект. Я для построение семейного дерева использую myheritage ком, там гигантская база данных + несколько крутых сервисов (например можно старую фотографию сделать существенно более четкой и превратить в цветную, когда ты это делаешь с фотографией начала прошлого века, это вызывает невероятное вау). Ну и это больше соц.сеть чем сервис для построения семейного дерева.
Что касается разработки и идеи в целом, те проблемы которые вы обозначали в статье, действительно имею место быть, но я бы к таким вещам относился как к исключениям, и искал бы способ их отрисовки именно в контексте исключения. Для 90%+ процентов людей достаточно базового функционала. Многоженство обрабатывается точно спокойно, инцест и т.п. уже имеет сложности, но будем откровенны — это не так уж и часто случается. Тут просто вопрос с поиском удобного сервиса, если цель не покодить, а построить и поддерживать дерево.
P.S. Если кто ищет еврейские корни, сервис выше один из лучших.
Смена поколений — это «всего» 20 лет. При большом количестве дальних родственников оказалось, что уже есть 3 поколения «ниже» меня (очень дальнее родство), и, соответственно, 10 поколений «выше». В древе есть информация о родственниках, родившихся во второй половине 18 века, архивы католических церквей хранят и более раннюю информацию.
Самый сложный кейс для это задачи — построить семейное древо греческих богов...
Пользовался для этих целей myfamilytree можно данные держать как локально, так и у них на сервере. В бесплатной версии очень ограничены всякие плюшки.
Они кроме генеадогических деревьев, вроде как занимались/занимаются катологизацией захоронений
Интересно, но тут есть вопросы: «что есть семья?», «как семьи соединяются?», «кого к какой семье отнести, если человека можно и туда и туда занести?» итд. Я вот для ограничения придумал алгоритм, который описал в «Ограничения отображения». Обратите внимание, мб будет полезно. Касаемо распечаток, пока ответа не нашел, остановился на использовании векторного отображения графа.
Вместе с тем как быстро граф расширяется в ширь, стало понятно, что отображать такую структуру становится сложно. Нужно как-то её ограничивать. Для этого я придумал следующий алгоритм?
1. PHASE “A” Для узла-точки-входа отображаем всех прямых предков.
2. PHASE “B” Для всех элементов на графе отображаем всех прямых потомков, при этом для каждого потомка отображаем вторых родителей (на графе отмечены серым кружком).
3. Для всех вторых родителей повторяем PHASE “A”
4. Повторяем PHASE “B”
5. Переходим к 3.
какое же это ограничение? те «вторые родители» — не родня для «точки входа». вы тут всех отобразите, кто связан с точкой входа даже через несколько неродственных связей муж-жена.
В некоторых деревьях эта информация не учитывается и не храниться. Но для меня является важным хранить информацию не только о вертикальных связях, но и горизонтальных, поэтому я задумался об этом.
я обнаружил такой простой текстовый способ для отображения, также хранятся данные:
сначала родная семья «точки входа», со всеми потомками, в том числе потомки его родных. это выглядит как простой многоуровневый список.
затем то же самое повторяю для родных семей отца «точки входа», затем матери, затем так далее: их отцов и матерей и так далее, только вместо повтора уже записанного списка потомков родной семьи «точки входа» и других уже записанных списков потомков пишу коммент «потомки этого человека уже указаны выше».
вот так я записываю и храню эти данные.
я сделал сортировку людей по близости, и для навигации использую вот такую схему. но я этим сейчас не пользуюсь, пользуюсь в основном простой текстовой версией.
также я сделал более нормальное отображение тех списков, вместо javascript кода. для навигации использую, конечно же, ещё один вложенный список предков точки входа, который стоит в самом начале, как содержание, откуда можно прыгнуть к тем вложенным спискам потомков этих предков и их родных, по внутристраничным ссылкам. но этим пока тоже не пользуюсь, так как там нету интерфейса для редактирования.
Замечу, что подавляющее большинство средств визуализации вполне намеренно не стараются отобразить всё дерево, а ограничиваются только его подмножествами, которые меняются на основе контекста.
тоже не один день потратили с семьей, что бы хоть как-то заполнить.
в итоге всего 153 человека получилось. мой дед по отцовской линии был из детдома — целая цепочка утерялась ((
Касательно того, что у вас получилось — визуально очень так себе.
Вообще моё очень личное мнение: ценность подобных данных не в том, «КТО все эти люди», а в том «кто МНЕ все эти люди», ну то есть грубо говоря я глядя на такую картинку должен обнаружить — «о, а вот этот-то мне троюродный брат, оказывается»
Где-то тут идея и кроется, конечно, не совсем «кто мне», но около. составив более менее большой в ширь граф посмотреть как связаны разные семьи. Это представляет интерес для меня.
Разверну, почему мне важно именно «кто МНЕ», вот прямо на имеющихся примерах:
-в детстве неоднократно ездил «к родственникам» под Тольятти. Сейчас никто из ближайших здравствующих родственников внятно не может объяснить, кто это. «Какая-то родня», отлично.
-был один уважаемый родственник, к которому каждая поездка праздник и вот это вот всё. Внезапно одна из «соседних» родственных веток уверенно называет его своим родственником тоже. Быстрое расследование ничего не дало, все путаются в показаниях вплоть до того, что я на полном серьёзе начал подозревать скелеты в шкафу (в смысле их наличие на том самом древе).
-очень долгое время навещал родню в доме престарелых, а спустя где-то лет 20! совершенно случайно узнал, что они родственники совсем с другой стороны, тогда как я был уверен, что они по моей.
Ну и, к сожалению, старшее поколение потихоньку уходит, а с ними уходят и те самые связи, которые потом будет не восстановить, поэтому надо всё-таки завестись. Архивы оцифровать, опять же, я уже лет 10 об этом думаю, с этим ещё хуже, потому что там вопросов кроме «кто это» ещё «где это» и «когда это», на которые всё меньше людей могут дать ответ.
Я дёргался было, но всё никак не могу завестись, работа на самом деле колоссальная предстоит.
Однако с точки зрения «ребенка» между тем самым «мужем» и «женой», я буду являться его родственником, как и люди в этом графе находящиеся от меня за этой связью. Поэтому для такого «ребенка» такой граф будет представлять ценность.
Для меня же представляет интерес увидеть как разрастаются такие родственные связи, на сколько они велики в пределах города или мира. Через сколько таких детей я могу дотянутся до какого-то другого человека.
Если добавить сюда третий закон генеалогии, который я упоминал в статье: то интересно ещё и то на сколько замкнуто это множество (тоесть сколько в нем вообще уникальных родов). — Хотя, это, конечно, очень сложно.
Ценность средства для организаций данных может быть очень разной. Самая очевидная и наименее субъективная — историческая. Занимаясь поиском и упорядочиванием данных о предках и родственниках, можно раскопать очень интересные истории о жизни в прошлом. Сколько у кого детей было, сколько из них выжили, кто чем занимался, где учились, чем владели, с кем как войны обошлись, кто куда уехал искать лучшей жизни или кого куда загнали обстоятельства. И эту информацию неплохо бы делать публичной, чтобы историческая информация об обычных людях, а не только о знатных и знаменитых, сохранилась и была доступна в будущем.
play.google.com/store/search?q=genealogy&c=apps
play.google.com/store/search?q=%D0%B3%D0%B5%D0%BD%D0%B5%D0%B0%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F&c=apps
github.com/search?q=genealogy&type= — «1,556 repository results»
При первом погружении в генеалогию традиционное зависание происходит при осознании, что древо - это не дерево, и даже не граф. Потому что существует два типа связей: "родитель-ребенок" и "муж-жена", и два типа узлов - "человек" и "брак". То есть это два графа, связанных друг с другом. Или можно обойтись одним, но тогда связи "муж-жена" придется вычислять, а стрелочек "родитель-ребенок" становится очень много.
думаю, это очень просто оформляется в виде (списка) компонентов-троек (ребёнок, отец, мать). я сделал программу так. доступ по имени (или идентификатору, в моей программе имя, с добавленными символами для недопущения повторов) ребёнка. т. е. имя человека это ключ, а содержимое по каждому ключу это имена 2-х родителей. другого содержимого, типа дополнительных данных, в моей программе пока нет.
Хранение данных - не самоцель. Выбирая способ организации данных, я думаю о задачах, которые на этих данных нужно будет решать. Для генеалогии это построение древа предков, древа потомков, всех путей от одного человека до другого, пути y-хромосомы, определение степени родства. И другие, это просто навскидку. Если ваш способ хранения решает все эти задачи, тем более, если решает быстро, то он хороший.
Как я древо семьи строил