{ "info": { "author": "Tom Russell", "author_email": "tomalrussell@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 1 - Planning", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: GIS", "Topic :: Utilities" ], "description": "[![Documentation Status](https://readthedocs.org/projects/snkit/badge/?version=latest)](https://snkit.readthedocs.io/en/latest/?badge=latest)\n[![Build Status](https://travis-ci.com/tomalrussell/snkit.png?branch=master)](https://travis-ci.com/tomalrussell/snkit)\n[![License](https://img.shields.io/pypi/l/snkit.svg)](https://opensource.org/licenses/MIT)\n[![PyPI version](https://img.shields.io/pypi/v/snkit.svg)](https://pypi.org/project/snkit/)\n\n\n# snkit - a spatial networks toolkit\n\n/\u02c8sn\u026ak\u026at/ \u2013 sounds like [snicket](https://en.oxforddictionaries.com/definition/snicket) (noun,\nNorthern English) A narrow passage between houses; an alleyway.\n\n\n## Why use snkit?\n\n`snkit` helps tidy spatial network data.\n\nSay you have some edges and nodes (lines and points, connections and vertices). None of them\nare quite connected, and there's no explicit data to define which node is at the end of which\nedge, or which edges are connected.\n\nFor example:\n\n![Unconnected network](docs/source/_static/unconnected-network.png)\n\n`snkit` has methods to:\n- add endpoints to each edge\n- connect nodes to nearest edges\n- split edges at connecting points\n- create node and edge ids, and add from_id and to_id to each edge\n\n\n### Spatial network\n\nThe output of a snkit data cleaning process might look something like this:\n\n![Connected network](docs/source/_static/connected-network.png)\n\n\n#### Nodes\n\ngeometry | id | other attributes...\n---------|----|--\n`POINT (0.03 0.04)` | node_0 | ...\n`POINT (0.03 0.03)` | node_1 | ...\n`POINT (0.02 0.03)` | node_2 | ...\n\n\n#### Edges\n\ngeometry | id | from_id | to_id | other attributes...\n---------|----|---------|-------| --\n`LINESTRING (0.04 -0.04...` | edge_0 | node_10 | node_22 | ...\n`LINESTRING (0.01 -0.03...` | edge_1 | node_22 | node_21 | ...\n`LINESTRING (0.02 -0.02...` | edge_2 | node_21 | node_25 | ...\n\n\n## Getting started\n\nInstall system libraries (only tested on Ubuntu):\n\n sudo apt-get install -y libspatialindex-dev libgeos-dev gdal-bin\n\nOr use [conda](https://docs.conda.io/en/latest/miniconda.html) to install major dependencies:\n\n conda install pandas geopandas shapely rtree fiona\n\nInstall or upgrade `snkit` using pip:\n\n pip install --upgrade snkit\n\nSee the [demo\nnotebook](https://github.com/tomalrussell/snkit/blob/master/notebooks/snkit-demo.ipynb) for a\nsmall demonstration.\n\n\n## Testimonials \ud83d\udcaf \ud83d\udc4d \ud83d\ude0a\n\n> With five lines of snkit I replaced four or five hundred lines of custom code!\n\nA. Contented Customer (@czor847)\n\n\n## Related projects\n\n- [`pysal/spaghetti`](https://pysal-spaghetti.readthedocs.io/en/latest/index.html) has methods\n for building graph-theoretic networks and the analysis of network events.\n- [`osmnx`](https://osmnx.readthedocs.io/en/stable/) lets you retrieve, model, analyze, and\n visualize street networks from OpenStreetMap, including methods to correct and simplify\n network topology.\n\n\n## Acknowledgements\n\n```\nMIT License\n\nCopyright (c) 2018 Tom Russell and snkit contributors\n```\n\nInitial snkit development was at the [Environmental Change Institute, University of\nOxford](http://www.eci.ox.ac.uk/) within the EPSRC sponsored MISTRAL programme, as part of the\n[Infrastructure Transition Research Consortium](http://www.itrc.org.uk/).", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tomalrussell/snkit", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "snkit", "package_url": "https://pypi.org/project/snkit/", "platform": "", "project_url": "https://pypi.org/project/snkit/", "project_urls": { "Homepage": "https://github.com/tomalrussell/snkit" }, "release_url": "https://pypi.org/project/snkit/1.6.0/", "requires_dist": null, "requires_python": "", "summary": "a spatial networks toolkit", "version": "1.6.0" }, "last_serial": 5698674, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "f99cbe59fcb071afbeaaae7190104991", "sha256": "7e3650114277c260c7be2cee46076a67ddd743a0212ef7d82107687491fb25c2" }, "downloads": -1, "filename": "snkit-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f99cbe59fcb071afbeaaae7190104991", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6831, "upload_time": "2019-01-11T14:49:03", "url": "https://files.pythonhosted.org/packages/82/f7/b6d19d8a490d85bdd33e4ed38b7313245772bc7ef980029a35efd3c3ebe9/snkit-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c3891b3049f792b04f76884d3a542f53", "sha256": "44253c0afb3250b22f07e9f0cc1b7eb1897533e8c0d066cfeb0d25862f513bab" }, "downloads": -1, "filename": "snkit-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c3891b3049f792b04f76884d3a542f53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5889, "upload_time": "2019-01-11T14:49:05", "url": "https://files.pythonhosted.org/packages/49/91/ce0de4360eaaada2d78100b33d4f68fa10bfd02fac642e255b639a58419a/snkit-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "934c4a9cd6143bdd9ae018e9710da4a3", "sha256": "9c57d721680eda4876a7bb79aeaa0a8988520ec4fc38a09ebae01c65d5f0ef78" }, "downloads": -1, "filename": "snkit-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "934c4a9cd6143bdd9ae018e9710da4a3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6830, "upload_time": "2019-01-11T16:38:53", "url": "https://files.pythonhosted.org/packages/91/7e/04c9eda49ca048ade32bf6c5d41cfa8fffdb4b5e4dfb991348dc03693ba8/snkit-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f5d8bfe1384f27bddfec8d1d33f05cf", "sha256": "b8e859b0a4c0c4473be0e160c1d5911eb47881c639b93804567d75ba6fb8a8c8" }, "downloads": -1, "filename": "snkit-0.1.1.tar.gz", "has_sig": false, "md5_digest": "8f5d8bfe1384f27bddfec8d1d33f05cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5887, "upload_time": "2019-01-11T16:38:55", "url": "https://files.pythonhosted.org/packages/b4/7b/36011a5412e26ac4ff373ad2217061e26e11f21e2ef7b5eb76f9fc8214f3/snkit-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "afb2ce12d653629540c54288d9dd1eed", "sha256": "8ef48e5e6a3b9ca70b18f493752df287ef1ef55eb129a3b1ac43a998ef7402f4" }, "downloads": -1, "filename": "snkit-0.1.2.tar.gz", "has_sig": false, "md5_digest": "afb2ce12d653629540c54288d9dd1eed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5990, "upload_time": "2019-01-11T17:41:54", "url": "https://files.pythonhosted.org/packages/df/9c/6a2c64972d8ab0ef3abf69faf64be0400939d90d940f71c6dfda4311fd38/snkit-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "eccc993a1021cdbfa5a6038a678488b4", "sha256": "afecda60506c153f14143f032ce198c452b904808bd1a59d9a3c52a786168d69" }, "downloads": -1, "filename": "snkit-0.1.4.tar.gz", "has_sig": false, "md5_digest": "eccc993a1021cdbfa5a6038a678488b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51702, "upload_time": "2019-04-11T08:54:33", "url": "https://files.pythonhosted.org/packages/2e/f4/92e128abbee869c329dbadf6407ad483e09bc92d0cfd5e8f4a952014df36/snkit-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "25e636f04f8065b378462cde25d89514", "sha256": "2d118e29ced1e1fc221000d192a91eead309a040263465c9c62d65e969222d65" }, "downloads": -1, "filename": "snkit-0.1.5.tar.gz", "has_sig": false, "md5_digest": "25e636f04f8065b378462cde25d89514", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68185, "upload_time": "2019-08-19T13:49:22", "url": "https://files.pythonhosted.org/packages/50/2d/e92a4cffd1a961fb7ecbeab5f54e6d2e6bce4542d3b9513b15b471eaab2c/snkit-0.1.5.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "bb60ff44e3199d0fe00c236c30103ddd", "sha256": "c081e317c91cd31f9f020d2e721ec23d571b7407c17333a8f21adca219fb6d01" }, "downloads": -1, "filename": "snkit-1.6.0.tar.gz", "has_sig": false, "md5_digest": "bb60ff44e3199d0fe00c236c30103ddd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68194, "upload_time": "2019-08-19T14:24:27", "url": "https://files.pythonhosted.org/packages/84/cf/c63ddcd3cc31945391d8057f8fa9fd6b26d197e658616fd3efb83fda8efa/snkit-1.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bb60ff44e3199d0fe00c236c30103ddd", "sha256": "c081e317c91cd31f9f020d2e721ec23d571b7407c17333a8f21adca219fb6d01" }, "downloads": -1, "filename": "snkit-1.6.0.tar.gz", "has_sig": false, "md5_digest": "bb60ff44e3199d0fe00c236c30103ddd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68194, "upload_time": "2019-08-19T14:24:27", "url": "https://files.pythonhosted.org/packages/84/cf/c63ddcd3cc31945391d8057f8fa9fd6b26d197e658616fd3efb83fda8efa/snkit-1.6.0.tar.gz" } ] }