{"id":37330749,"url":"https://github.com/florianfranz/topo_chronia","last_synced_at":"2026-01-16T03:35:28.839Z","repository":{"id":273752094,"uuid":"920698544","full_name":"florianfranz/topo_chronia","owner":"florianfranz","description":"TopoChronia: A QGIS plugin for the creation of fully quantified palaeogeographic maps","archived":false,"fork":false,"pushed_at":"2026-01-12T20:24:59.000Z","size":205910,"stargazers_count":9,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-13T00:42:36.114Z","etag":null,"topics":["palaeoclimate","palaeogeography","palaeotopography","panalesis","plate-tectonics","qgis","qgis-plugin","tectonics"],"latest_commit_sha":null,"homepage":"https://topo-chronia.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/florianfranz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-22T16:10:35.000Z","updated_at":"2026-01-12T20:25:02.000Z","dependencies_parsed_at":"2025-01-22T19:34:01.649Z","dependency_job_id":"89871552-3944-4642-a7f6-249cdacab92f","html_url":"https://github.com/florianfranz/topo_chronia","commit_stats":null,"previous_names":["florianfranz/topo_chronia"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/florianfranz/topo_chronia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianfranz%2Ftopo_chronia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianfranz%2Ftopo_chronia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianfranz%2Ftopo_chronia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianfranz%2Ftopo_chronia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/florianfranz","download_url":"https://codeload.github.com/florianfranz/topo_chronia/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianfranz%2Ftopo_chronia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28477204,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T03:13:13.607Z","status":"ssl_error","status_checked_at":"2026-01-16T03:11:47.863Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["palaeoclimate","palaeogeography","palaeotopography","panalesis","plate-tectonics","qgis","qgis-plugin","tectonics"],"created_at":"2026-01-16T03:35:28.157Z","updated_at":"2026-01-16T03:35:28.822Z","avatar_url":"https://github.com/florianfranz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd style=\"width: 40%; text-align: center;\"\u003e\n      \u003cimg src=\"images/PAN_logo.png\" alt=\"PAN\" width=\"400\"/\u003e\n    \u003c/td\u003e\n    \u003ctd style=\"width: 60%;\"\u003e\n      \u003ch1\u003eTopoChronia: Digital Elevation Models of the Earth Past based on the PANALESIS Plate Tectonic Model\u003c/h1\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n\nTopoChronia is a free open source plugin \nfor QGIS that converts plate tectonics input features into fully quantified \nmaps of the Earth past topography (palaeotopography) and geography (palaeogeography),\nusing the PANALESIS plate tectonic model.\n\nTopoChronia uses a unique approach to create a synthetic topography for selected\ngeological settings described in PANALESIS, including mid-oceanic ridges, isochrons,\npassive margins, active margins, cratons, hot-spots, abandoned arcs, continents, rifts,\nbasins and other margins.\n\nInput features (lines) are converted into an irregular grid of nodes with elevation\nvalues, from which a Digital Elevation Model (DEM) is interpolated using the QGIS \nTriangulated Irregular Network (TIN). The oceanic volume of this DEM is then compared \nto the present-day volume, in order to assess the difference of sea-level.\n\n![workflow](images/workflow.png)\n## Installation\n\nTopoChronia runs as a QGIS plugin. It can be used on QGIS version 3.36 or higher, and was developed with Python 3.12.3.\nTopoChronia requires GEOS v3.10 or higher for some vector operations, make sure to check your version of GEOS in the \"About\" \nsection of QGIS.\n\nA complete documentation including a step-by-step tutorial is available at https://topo-chronia.readthedocs.io/en/latest/#\n\nTo install the plugin:\n\n* Manual installation:\n  - The zipped plugin is accessible on [the releases page](https://github.com/florianfranz/topo_chronia/releases/latest), under \"Assets\", click on \"topo_chronia.zip\" to start the download. \n  - Open QGIS → Plugins → Manage and Install Plugins → Install from .zip\n  - Select the downloaded .zip folder and click on \"Install\".\n\nApart from native QGIS python libraries, the plugin also requires the `pandas` Python package, that is oftentimes not\nincluded with QGIS. If a message box appears to ask for manual installation, just clickon \"ok\". A full guide on how to install pandas inside QGIS is provided at:\nhttps://topo-chronia.readthedocs.io/en/latest/#installation\nFor more information about required packages and versions, check the [requirements.txt](./requirements.txt).  \n\nExternal libraries `geopy` and `geographiclib` are also required and already included in `ext_libraries`.\n\nOnce installed, the plugin should be listed under the \"Plugin\", and there should be three icons appearing on the QGIS \ntoolbar as in the picture below:\n\n![icons_bar.png](images/icons_bar.png)\n\nEach of these icons allows to access the three main phases required by TopoChronia to process plate tectonics features \nfrom PANALESIS into palaeotopographic and palaeogeographic maps:\n\n1. Phase 0: Check Configuration\n2. Phase I: Create Node Grid\n3. Phase II: Interpolate Raster\n\nMore details about each phase are provided in the \"Functionalities\" section below.\n\n## Functionalities\n\nFor higher modularity, TopoChronia is divided into three main phases:\n\n### Phase 0: Check Configuration\nThis first phase checks that all files required for processing are loaded in QGIS and fulfill requirements \n(geometry, fields, values).\n\nTopoChronia requires the following input files from PANALESIS:\n- Plate Model (PM): Lines describing the model features (see more details below).\n- Plate Polygons (PP): Polygons describing the tectonic plates\n- Continent-Ocean Boundary (COB): Polygons describing the boundary between continental and oceanic crust\n- Geodesic Grid: Grid of points equally distant from one another.\n- Accretion Rates: Table with plate velocities and accretion rates for each of the PANALESIS ages.\n\nIf all input files pass the check, this initial phase yields two outputs:\n- A list of common reconstruction ages to all input files to base further processing.\n- A dictionary of all input files location used later in the processing.\n\nShould any check fail, the user will be informed about the issues. For fields that are not found, if the issue is linked\nto the field names, a dialog will open and allow the user to assign the correct field and change its name.\n\nPlease note that if you wish to change the input files, you need to do all checks again.\n\n### Phase 1: Create Node Grid\n\nOnce the checks are passed, the nodes conversion phase can start. The user can select one or more reconstruction age(s).\nThe processing steps are the following:\n\n* Prepare data: All PP and COB are aggregated for the reconstruction age.\n* Convert features: All settings are converted from the PM (lines) into points with synthetic topographic values.\n* Merge nodes: Nodes from all settings are merged into a single nodes file.\n* Clean nodes: To avoid clash between different settings at the same location, nodes are cleaned.\n\n![PAN_nodes.png](images/PAN_nodes.png)\nThe picture above shows an example of the nodes distribution for the present-day PANALESIS reconstruction.\n\n### Phase 2: Interpolate Raster\n\nThe final phase consists of interpolating a raster from the clean nodes layer. We use the QGIS\nTriangulated Network (TIN) as it is the best open-source method to render topography and estimate oceans\nvolumes (Franziskakis et al., submitted).\n\nThis last phase is also divided into the following steps:\n\n* Interpolate raster: perform the initial interpolation with synthetic topographic values.\n* Correct water load: calculates oceanic volume, and performs corrections using the present-day volume as a reference. Adjust sea-level based on corrections.\n* Interpolate final raster: Apply sea-level correction to nodes elevation values and interpolate a final raster with the corrected values.\n\n\n## Documentation\n\nA complete documentation including a step-by-step tutorial is available at https://topo-chronia.readthedocs.io/en/latest/#\n\nFor more information about the PANALESIS model, please check out the following papers:\n\n* Vérard, C., Hochard, C., Baumgartner, P. O., Stampfli, G. M., \u0026 Liu, M. (2015). 3D palaeogeographic reconstructions of the Phanerozoic versus sea-level and Sr-ratio variations. Journal of Palaeogeography, 4(1), Article 1. https://doi.org/10.3724/SP.J.1261.2015.00068\n* Vérard, C. (2019). Panalesis: Towards global synthetic palaeogeographies using integration and coupling of manifold models. Geological Magazine, 156(2), Article 2. https://doi.org/10.1017/S0016756817001042\n\nAlso, see more recent presentations about the PANALESIS transition to open-source and FAIR compliance:\n* Franziskakis, F. (2024, March 8). Reconstructing the Earth in Deep-Time: A New and Open Framework for the PANALESIS Model. European Geosciences Union (EGU) General Assembly 2024, Vienna, Austria. Zenodo. https://doi.org/10.5281/zenodo.13906863\n* Franziskakis, F. (2024, December 17). Quantified Palaeotopographic and Palaeogeographic Global Maps for the Phanerozoic using the PANALESIS Plate Tectonic Model. 22nd Swiss Geoscience Meeting, Basel, Switzerland. Zenodo. https://doi.org/10.5281/zenodo.14505269\n\n## Tests\nAutomated tests can be done, once the plugin has been installed.\nOpen the QGIS Python Console and type:\n```python\nfrom topo_chronia.tests.test_runner import run_test\n```\n\nFirst, you can perform a basic test to check if the plugin can be called and write in the console:\n```python\nrun_test(\"base_test\")\n```\n\nThe output should be:\n```\nTopoChronia correctly installed and functions can be called.\nOperating System: ...\ngeopy correctly installed, imported geopy.distance.geodesic, geop.distance.great_circle and geopy.point.Point\n```\n\n\nSecond, a test can be done to load sample data (portion of the input data at 444 Ma)\n```python\nrun_test(\"load_sample_data\")\n```\n\nThe output should be sample intput layers loaded in the Qgis Project\n![test_load_layers.png](images/test_load_layers.png)\n\n(Orange polygon = plate, purple polygon = continent-ocean boundary, red lines = plate model, green dots = geodesic grid)\n\nThird, a full processing test is done to create the node grid based on the sample data.\n```python\nrun_test(\"process_sample_data\")\n```\n\nThe output should be:\n```\nProcessing Lines Selection...\nLines Selection: Success!\nProcessing Ridges...\nRidges Processing: Success!\nProcessing Isochrons...\nIsochrons Processing: Success!\nProcessing Lower Subductions...\nLower Subductions Processing: Success!\nProcessing Abandoned Arcs...\nAbandoned Arcs Processing: Success!\nProcessing Passive Margin Wedges...\nPassive Margin Wedges Processing: Success!\nProcessing Continents...\nContinents Processing: Success!\nProcessing Cratons...\nCratons Processing: Success!\nProcessing Other Margins...\nOther Margins Processing: Success!\nProcessing Passive Margin Continents...\nPassive Margin Continents Processing: Success!\nProcessing Rifts...\nRifts Processing: Success!\nProcessing Upper Subduction...\nUpper Subducitons Processing: Success!\nProcessing Collisions...\nCollisions Processing: Success!\nProcessing Hot-Spots...\nHot-Spots Processing: Success!\nMerging Nodes...\nNodes Merging: Success!\nCleaning Nodes (1/2)...\nNodes vs Nodes Cleaning: Success!\nCleaning Nodes (2/2)...\nNodes inside Hot-Spots Cleaning: Success!\nAdding cleaned nodes layer to map...\n```\n**NB:** Some functions (such as vector geometry fixing) require GEOS v3.10 or higher to work. If the function cannot be executed, some geometries will be left unchecked.\nIn the end, you should see the nodes:\n\n![test_process_layers.png](images/test_process_layers.png)\n\n(Same symbology as above, with added new nodes in blue)\n\n## Contributing\n\nContributions are welcome! To contribute:\n1. Fork the repository \n2. Make changes \n3. Submit a pull request\n\nOr raise an issue [here](https://github.com/florianfranz/topo_chronia/issues). For every issue, please mention the QGIS and\nPython versions you are using as well as your OS.\n\n## Authors\n\n**Florian Franziskakis**  \n*florian.franziskakis@unige.ch*  \nenviroSPACE group, Institute for Environmental Sciences, University of Geneva\n\n**Christian Vérard**  \nEarth Surface Dynamics group, Department of Earth Sciences, University of Geneva\n\n**Sébastien Castelltort**  \nEarth Surface Dynamics group, Department of Earth Sciences, University of Geneva\n\n**Grégory Giuliani**  \nenviroSPACE group, Institute for Environmental Sciences, University of Geneva\n\n\n## License\n\nThis plugin is licensed under the GNU General Public License, version 2 or later (GPLv2+). \nYou can view the full license text in the [LICENSE.txt](./LICENSE.txt).\n\n## Funding\n\nWe acknowledge financial support from the Swiss National Science Foundation (SNSF) under [Sinergia grant #213539](https://data.snf.ch/grants/grant/213539): _Long-term \nevolution of the Earth from the base of the mantle to the top of the atmosphere: Understanding the mechanisms leading to \n‘greenhouse’ and ‘icehouse’ regimes._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianfranz%2Ftopo_chronia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflorianfranz%2Ftopo_chronia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianfranz%2Ftopo_chronia/lists"}