Tag Archives: macfamilytree

Software used for the family tree/GIS mapping project

The MacFamilyTree software from Synium (http://www.syniumsoftware.com/de/macfamilytree) was used to import, modify, consolidate and analyse the genealogical data. It was also used for the normalization, completion and geocoding of places. Except for MacFamilyTree all other mentioned software are open source.

Data was exported from MacFamilyTree’s underlying SQLLite database as SQL import script with the help of the SQLite Database Browser (http://sqlitebrowser.org) and subsequently imported into a PostgreSQL database (http://www.postgresql.org) with a PostGIS extension to add support for geographic objects. Unfortunately there seems to be no high quality GEDCOM-based parser/importer into SQL databases. Data handling and SQL scripts was done using pgAdmin3 (http://www.pgadmin.org).

The very flat data structure from MacFamilyTree was subsequently transformed into a more intuitive data model (“person”, “family”, “place”, “person_event” etc.) that served as a base for the extensive coded analysis and transformation logic in PostgreSQL’s procedural language PL/pgSQL.

All logic (and some data patching) were applied in roughly 40 sequential scripts per object. This repeatable processing proved to be a key success factor given the large number of methodological, coding and data errors encountered in the process that forced reprocessing.

Screenshot of the QGIS project for the emigration map
Screenshot of the QGIS project for the emigration map

All mapping and layout was done in QGIS (http://www.qgis.org), with key features for the project becoming available only in QGIS 2.2. Data came from either PostGIS layers in PostgreSQL or shapefiles from various sources. The original approach to create a raw map that would receive its finish in a vector-based editor was dumped in favour of end-to-end map production in QGIS. This reflects on one hand the growing maturity of QGIS on one side, but also the difficulties to process the incredible amount of paths in its vector-based output in other programs.