{"id":13948338,"url":"https://github.com/nansencenter/sea_ice_drift","last_synced_at":"2025-10-29T11:58:25.366Z","repository":{"id":55919028,"uuid":"46479183","full_name":"nansencenter/sea_ice_drift","owner":"nansencenter","description":"Sea ice drift from Sentinel-1 SAR imagery using open source feature tracking","archived":false,"fork":false,"pushed_at":"2023-05-24T07:50:40.000Z","size":23781,"stargazers_count":46,"open_issues_count":5,"forks_count":18,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-10-22T04:43:06.086Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nansencenter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-11-19T08:40:38.000Z","updated_at":"2025-07-02T18:22:40.000Z","dependencies_parsed_at":"2023-09-21T19:09:59.906Z","dependency_job_id":null,"html_url":"https://github.com/nansencenter/sea_ice_drift","commit_stats":{"total_commits":199,"total_committers":5,"mean_commits":39.8,"dds":"0.10552763819095479","last_synced_commit":"f59d4952692aeebe49dbc62e0cf0b8ede3d5fd1e"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/nansencenter/sea_ice_drift","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nansencenter%2Fsea_ice_drift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nansencenter%2Fsea_ice_drift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nansencenter%2Fsea_ice_drift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nansencenter%2Fsea_ice_drift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nansencenter","download_url":"https://codeload.github.com/nansencenter/sea_ice_drift/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nansencenter%2Fsea_ice_drift/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280747374,"owners_count":26383946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-08-08T05:01:20.944Z","updated_at":"2025-10-29T11:58:25.337Z","avatar_url":"https://github.com/nansencenter.png","language":"Python","funding_links":[],"categories":["Observation and Conservation of Ecosystems","SAR","Cryosphere"],"sub_categories":["Ice and Poles","EUMETlab","Sea Ice"],"readme":"[![Build Status](https://travis-ci.org/nansencenter/sea_ice_drift.svg?branch=master)](https://travis-ci.org/nansencenter/sea_ice_drift)\n[![Coverage Status](https://coveralls.io/repos/nansencenter/sea_ice_drift/badge.svg?branch=master)](https://coveralls.io/r/nansencenter/sea_ice_drift)\n[![DOI](https://zenodo.org/badge/46479183.svg)](https://zenodo.org/badge/latestdoi/46479183)\n\n## Sea ice drift from Sentinel-1 SAR data\n\nA computationally efficient, open source feature tracking algorithm,\ncalled ORB, is adopted and tuned for retrieval of the first guess\nsea ice drift from Sentinel-1 SAR images. Pattern matching algorithm\nbased on MCC calculation is used further to retrieve sea ice drift on a\nregular grid.\n\n## References:\n * Korosov A.A. and Rampal P., A Combination of Feature Tracking and Pattern Matching with Optimal Parametrization for Sea Ice Drift Retrieval from SAR Data, Remote Sens. 2017, 9(3), 258; [doi:10.3390/rs9030258](http://www.mdpi.com/2072-4292/9/3/258)\n * Muckenhuber S., Korosov A.A., and Sandven S., Open-source feature-tracking algorithm for sea ice drift retrieval from Sentinel-1 SAR imagery, The Cryosphere, 10, 913-925, [doi:10.5194/tc-10-913-2016](http://www.the-cryosphere.net/10/913/2016/), 2016\n\n## Running with Docker\n```\n# run ipython with SeaIceDrift\ndocker run --rm -it -v /path/to/data:/home/jovyan/work nansencenter/seaicedrift ipython\n\n# run jupyter notebook with SeaIceDrift\ndocker run --rm -p 8888:8888 -v /path/to/data/and/notebooks:/home/jovyan/work nansencenter/seaicedrift\n```\n\n## Installation on Ubuntu\n```\n# install some requirements with apt-get\napt-get install -y --no-install-recommends libgl1-mesa-glx gcc build-essential\n\n# install some requirements with conda\nconda install -c conda-forge gdal cartopy opencv\n\n# install other requirements with pip\npip install netcdf4 nansat\n\n# clone code\ngit clone https://github.com/nansencenter/sea_ice_drift.git\ncd sea_ice_drift\n\n# install SeaIceDrift\npython setup.py install\n```\n\n## Usage example\n```\n# download example datasets\nwget https://github.com/nansencenter/sea_ice_drift_test_files/raw/master/S1B_EW_GRDM_1SDH_20200123T120618.tif\nwget https://github.com/nansencenter/sea_ice_drift_test_files/raw/master/S1B_EW_GRDM_1SDH_20200125T114955.tif\n\n# start Python and import relevant libraries\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom nansat import Nansat\nfrom sea_ice_drift import SeaIceDrift\n\n# open pair of satellite images using Nansat and SeaIceDrift\nfilename1='S1B_EW_GRDM_1SDH_20200123T120618.tif'\nfilename2='S1B_EW_GRDM_1SDH_20200125T114955.tif'\nsid = SeaIceDrift(filename1, filename2)\n\n# run ice drift retrieval using Feature Tracking\nuft, vft, lon1ft, lat1ft, lon2ft, lat2ft = sid.get_drift_FT()\n\n# plot\nplt.quiver(lon1ft, lat1ft, uft, vft);plt.show()\n\n# define a grid (e.g. regular)\nlon1pm, lat1pm = np.meshgrid(np.linspace(-33.5, -30.5, 50),\n                             np.linspace(83.6, 83.9, 50))\n\n# run ice drift retrieval for regular points using Pattern Matching\n# use results from the Feature Tracking as the first guess\nupm, vpm, apm, rpm, hpm, lon2pm, lat2pm = sid.get_drift_PM(\n        lon1pm, lat1pm,\n        lon1ft, lat1ft,\n        lon2ft, lat2ft)\n# select high quality data only\ngpi = rpm*hpm \u003e 4\n\n# plot high quality data on a regular grid\nplt.quiver(lon1pm[gpi], lat1pm[gpi], upm[gpi], vpm[gpi], rpm[gpi])\n\n```\nFull example [here](https://github.com/nansencenter/sea_ice_drift/blob/master/examples/simple.py)\n\n![Feature Tracking and the first SAR image](https://raw.githubusercontent.com/nansencenter/sea_ice_drift/master/examples/sea_ice_drift_FT_img1.png)\n\n![Pattern Matching and the second SAR image](https://raw.githubusercontent.com/nansencenter/sea_ice_drift/master/examples/sea_ice_drift_PM_img2.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnansencenter%2Fsea_ice_drift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnansencenter%2Fsea_ice_drift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnansencenter%2Fsea_ice_drift/lists"}