{ "info": { "author": "William Pietri", "author_email": "william-simpleais-0_7@scissor.com", "bugtrack_url": null, "classifiers": [], "description": "SimpleAIS\n=========\n\nI needed a simple AIS decoder for a small art project. I couldn't find\none, so I'm making something minimally adequate for my needs. Decoders\nare generated automatically from public protocol documentation, but\nsince I use few of the fields myself, I haven't verified much of the\ndecoding. This code is rough and doesn't worry much about correctness,\nand so shouldn't be used for anything that matters. It especially\nshouldn't be used for ship navigation.\n\nSimpleAIS also provides some handy command-line tools, including:\n\n- aisgrep - pulls out sentences matching given criteria\n- aist - a text dump of sentences, one per line\n- aisburst - takes a large file of sentences and splits it into one\n file per sender\n- aisinfo - give summary reports for a file of sentences with optional\n details on each sender\n- aisdump - detailed dumps of individual sentences, including bits\n- aisstat - does basic statistics on fields\n- aisrefine - a sort of lossy compression for AIS files\n- ais2json - turns AIS sentences into JSON structures\n\nIf you would like to try it out and don't have any AIS data handy, try\ntests/sample.ais.\n\nContributions welcome.\n\nLibrary usage\n-------------\n\nHere's an example, a simplified version of the ``aist`` tool, which\nprints one line per complete AIS message:\n\n::\n\n for sentence in sentences_from_sources(sys.argv[1:):\n result = []\n if sentence.time:\n result.append(sentence.time.strftime(TIME_FORMAT))\n result.append(\"{:2}\".format(sentence.type_id()))\n result.append(\"{:9}\".format(str(sentence['mmsi'])))\n location = sentence.location()\n if location:\n result.append(\"{:9.4f} {:9.4f}\".format(location[0], location[1]))\n if sentence.type_id() == 5:\n result.append(\"{}->{}\".format(sentence['shipname'], sentence['destination']))\n\n print(\" \".join(result))\n\nThe ``sentence_from_sources()`` function will pull from a wide variety\nof sources (local files, serial ports, HTTP URLs), yielding only\ncomplete sentences as they arrive. Each sentence has a wide variety of\nreadable information. Documented fields can all be referred to by name.\nFor example, ``sentence['mmsi']`` or ``sentence['shipname']``. The\n``location()`` method will return a tuple of the form\n``(longitude, latitude)``. Missing or invalid fields will return\n``None``.\n\nCommand-line usage\n------------------\n\nSuppose you have a file with a bunch of AIS data from the San Francisco\narea. You'd like to pull out location transmissions from various sorts\nof ships and then plot a map of signal density. Further, you'd like to\nmark the locations of Fort Point and Fort Mason with asterisks just so\nyou have some idea of what you're seeing. To do that, you can use\naisgrep to get the relevant packets and aisinfo to plot the map:\n\n::\n\n $ aisgrep -t 1 -t 2 -t 3 -t 5 -t 18 -t 19 bayarea.ais | \\\n aisinfo --map --point -122.4775 37.8108 --point -122.4321 37.8065\n\n Found 51 senders in 15419 good sentences with 39 invalid (0.25%).\n top left: -122.9261, 37.9233\n bottom right: -122.3013, 37.5967\n width: 55.06 km\n height: 36.33 km\n +------------------------------------------------------------+\n | . . |\n | . |\n | . . .. |\n | ..1... .... |\n | ........... |\n | ......1... .. |\n | ....*..1*19..... |\n | . ...... . .. .|\n | ..... ....... |\n | . ......... |\n | ... |\n | ... . |\n | .... . |\n | .. . |\n | . |\n | .. |\n | |\n | |\n |. |\n +------------------------------------------------------------+\n\nSources\n-------\n\nMy main source for protocol information is here:\nhttp://catb.org/gpsd/AIVDM.html\n\nMore protocol info is here:\nhttp://www.itu.int/dms\\_pubrec/itu-r/rec/m/R-REC-M.1371-5-201402-I!!PDF-E.pdf\n\nThe protocol checksum is here: https://en.wikipedia.org/wiki/NMEA\\_0183\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/wpietri/simpleais", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "simpleais", "package_url": "https://pypi.org/project/simpleais/", "platform": "", "project_url": "https://pypi.org/project/simpleais/", "project_urls": { "Homepage": "https://github.com/wpietri/simpleais" }, "release_url": "https://pypi.org/project/simpleais/0.7.1/", "requires_dist": [ "bitstring", "testfixtures", "Click", "numpy", "python-dateutil", "beautifulsoup4 ; extra == 'dev'", "nose ; extra == 'dev'" ], "requires_python": "", "summary": "a simple ais parser", "version": "0.7.1" }, "last_serial": 4713833, "releases": { "0.6": [ { "comment_text": "", "digests": { "md5": "62442203519aded6883d81ce2cf80bbb", "sha256": "4aba0e12da88421c6d54490916983fc42b11724348ddca3fe41c425ca3239dfa" }, "downloads": -1, "filename": "simpleais-0.6.tar.gz", "has_sig": false, "md5_digest": "62442203519aded6883d81ce2cf80bbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11340, "upload_time": "2019-01-18T21:29:34", "url": "https://files.pythonhosted.org/packages/c1/5a/26463b32d9fd4e5cd6cb99e8f9a134b03e7224817d61c134ec4a62bab1ec/simpleais-0.6.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "08879b1e29d6ba034e4dc6f160bb88ae", "sha256": "4623da1f5c22aca4441c9ddc74cca823570605010d6ab0a93952f2e6c15625d9" }, "downloads": -1, "filename": "simpleais-0.6.1.tar.gz", "has_sig": false, "md5_digest": "08879b1e29d6ba034e4dc6f160bb88ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15633, "upload_time": "2016-02-18T07:37:50", "url": "https://files.pythonhosted.org/packages/14/47/d1cd72e150de2859167345c8c314741f41bfba9d7e0092445e88b455f423/simpleais-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "f36b51758d78acd9b616fd8b1d462aee", "sha256": "8c2021ffbc004cdacbd8e837b01b0a954b1e51ddc8f15dc4cc7dc3dd8093fdb3" }, "downloads": -1, "filename": "simpleais-0.6.2.tar.gz", "has_sig": false, "md5_digest": "f36b51758d78acd9b616fd8b1d462aee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16028, "upload_time": "2016-02-27T07:05:44", "url": "https://files.pythonhosted.org/packages/0b/ac/5cec294f8265036f2d7a2ff6ee5187b637cc806d1aa455bda1734f08ea97/simpleais-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "0ca91e163c922694466479a86ec51071", "sha256": "80b4102bdbfa55ba2be010019b8e5b071952c85e07a7c159095b81ab0c26f2cc" }, "downloads": -1, "filename": "simpleais-0.6.3.tar.gz", "has_sig": false, "md5_digest": "0ca91e163c922694466479a86ec51071", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16760, "upload_time": "2016-02-27T22:55:05", "url": "https://files.pythonhosted.org/packages/ef/a6/6e6fee6e6ff4c721f6c3c1f39ff98b8db5f6b8687da1f430668dc26a9aba/simpleais-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "16ba54141a4a0bf96738ca73d7714173", "sha256": "ba07479e82f81a1d70ceb16aca03b95e8cb681b97948fca91687b64c1d42cbc2" }, "downloads": -1, "filename": "simpleais-0.6.4.tar.gz", "has_sig": false, "md5_digest": "16ba54141a4a0bf96738ca73d7714173", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18586, "upload_time": "2016-03-10T23:25:34", "url": "https://files.pythonhosted.org/packages/0a/8e/0bbf35ad4ea309cc43bdb98f08ba2f9d59fda2a33d37c5006c030a4870df/simpleais-0.6.4.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "0ea358f20b21d5edf9c63f7a0d854c53", "sha256": "f4c49105ee8abc022b590709cc06e14f844b989300c7a8e2eebc6a7339f76ebb" }, "downloads": -1, "filename": "simpleais-0.6.5-py3.4.egg", "has_sig": false, "md5_digest": "0ea358f20b21d5edf9c63f7a0d854c53", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 44427, "upload_time": "2019-01-18T21:29:31", "url": "https://files.pythonhosted.org/packages/a1/85/2b716b7cb50855829aa964568d06534351bb05b30d89d46661728db34722/simpleais-0.6.5-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "d2c0e4cfe9c36861f0607c0b47017335", "sha256": "614a0c1238a7538b9fe52041a98b5ead43d39f2d3a59608a4054a8662f1c50b4" }, "downloads": -1, "filename": "simpleais-0.6.5.tar.gz", "has_sig": false, "md5_digest": "d2c0e4cfe9c36861f0607c0b47017335", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20830, "upload_time": "2016-06-17T18:32:26", "url": "https://files.pythonhosted.org/packages/0b/d5/d1b53da0e35d0a3a9d7e7624f5532505f1c8e203f43e1e6f34c2164eb84e/simpleais-0.6.5.tar.gz" } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "73df009b20eefd2f5e0f267b4509abe2", "sha256": "8f1288902e0fcdb5b5ee13f9732e3167e9a0e0180aaf6881aa4fcef7239da650" }, "downloads": -1, "filename": "simpleais-0.6.6.tar.gz", "has_sig": false, "md5_digest": "73df009b20eefd2f5e0f267b4509abe2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21036, "upload_time": "2017-04-19T03:30:05", "url": "https://files.pythonhosted.org/packages/2e/82/6caf89c4a2926c4aac5709b6ba1b8204f20ef5150f3b2b24e5477cd48438/simpleais-0.6.6.tar.gz" } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "c92a16911c613d5c63cc730af70bba8e", "sha256": "fb69b9a7790b058483fd709571d338c29f986ec209b566967fdc1e12bba5619d" }, "downloads": -1, "filename": "simpleais-0.6.7.tar.gz", "has_sig": false, "md5_digest": "c92a16911c613d5c63cc730af70bba8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21287, "upload_time": "2017-05-08T14:29:42", "url": "https://files.pythonhosted.org/packages/f8/66/62d8bed0413e51f7edcec1cead2f1ebdd975cc44d933f7ab0de2efa92360/simpleais-0.6.7.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "0706de8565e1f208dd4727c740504230", "sha256": "9d7897f8e4e23699fee1b718119d8759952e77f830ad377fc4c3ade1335fa02d" }, "downloads": -1, "filename": "simpleais-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0706de8565e1f208dd4727c740504230", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21651, "upload_time": "2019-01-18T21:29:26", "url": "https://files.pythonhosted.org/packages/35/15/4dbad690876610728cda01e47a1d08d25549f79c5fa137712ab184b7368e/simpleais-0.7.0-py3-none-any.whl" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "996739b27548f15e8a5c74d1852da19c", "sha256": "14cc1ef6ea53cc0013b794c07c97023c7d7d2588ef3c787156cc9aa182426c3b" }, "downloads": -1, "filename": "simpleais-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "996739b27548f15e8a5c74d1852da19c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23470, "upload_time": "2019-01-18T21:54:28", "url": "https://files.pythonhosted.org/packages/08/ee/6108b99778aa656ee2a50b87ab743cfd4469e9974d7f703aba33cfa846c7/simpleais-0.7.1-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "996739b27548f15e8a5c74d1852da19c", "sha256": "14cc1ef6ea53cc0013b794c07c97023c7d7d2588ef3c787156cc9aa182426c3b" }, "downloads": -1, "filename": "simpleais-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "996739b27548f15e8a5c74d1852da19c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23470, "upload_time": "2019-01-18T21:54:28", "url": "https://files.pythonhosted.org/packages/08/ee/6108b99778aa656ee2a50b87ab743cfd4469e9974d7f703aba33cfa846c7/simpleais-0.7.1-py3-none-any.whl" } ] }