{ "info": { "author": "Bruno THOORENS", "author_email": "bruno.thoorens@free.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 6 - Mature", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: C", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: GIS", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "``Gryd`` package provides functions for :\r\n\r\n+ great circle computation\r\n+ projection and grid coordinates\r\n+ advanced geodesy\r\n\r\nChanges\r\n=======\r\n\r\n1.2.0\r\n\r\n+ added ``geohash`` module\r\n\r\n1.1.1\r\n\r\n+ ``Geodesic`` class can now dump thumbanil location from google staticmap API\r\n+ bugfix in unit usage for classic projection (other than grid)\r\n\r\n1.1.0\r\n\r\n+ projection core changes (simpler & faster)\r\n+ added ``miller`` and ``eqc`` projection\r\n+ 64 bit support for Windows\r\n+ encrypt/decrypt geodesic coordinates\r\n\r\n>>> point = Gryd.Geodesic(-6.23, 53.63)\r\n>>> point.encrypt(\"your encryption key\")\r\n'mwszncbe9g2tu29'\r\n>>> Gryd.decrypt('mwszncbe9g2tu29', key=\"hacking...\") # gives coordinates but not the good ones\r\nGeodesic point lon=+025\u00c2\u00b022'0.011'' lat=-086\u00c2\u00b036'35.290'' alt=0.000\r\n>>> Gryd.decrypt('mwszncbe9g2tu29', key=\"your encryption key\")\r\nGeodesic point lon=-006\u00c2\u00b013'48.000'' lat=+053\u00c2\u00b037'48.000'' alt=0.000\r\n>>> point\r\nGeodesic point lon=-006\u00c2\u00b013'48.000'' lat=+053\u00c2\u00b037'48.000'' alt=0.000\r\n\r\n1.0.11\r\n\r\n+ bugfix for ``mgrs.inverse`` function\r\n+ ``utm`` and ``mgrs`` grid tweaks\r\n\r\n1.0.10\r\n\r\n+ ``Gryd.Geodesic`` exports itself in ``geohash``, ``maidenhead``, ``georef`` and ``gars``\r\n+ ``Gryd.Geodesic`` created from ``geohash``, ``maidenhead``, ``georef`` and ``gars``\r\n\r\n1.0.9\r\n\r\n+ ``bng`` and ``ing`` grid tweaks\r\n\r\n1.0.8\r\n\r\n+ bugfix for ``utm`` and ``mgrs`` grid computation\r\n+ ``Crs.unit`` value is now used in computation\r\n\r\n1.0.7\r\n\r\n+ Provide a multiplatform wheel (32 and 64 bit for Windows and Ubuntu)\r\n+ Python sources released\r\n\r\n1.0.6\r\n\r\n+ Added API doc\r\n\r\n1.0.5\r\n\r\n+ All ``Gryd`` objects are pickle-able\r\n\r\n>>> import pickle\r\n>>> data = pickle.dumps(wgs84)\r\n>>> data\r\nb'\\x80\\x03c_ctypes\\n_unpickle\\nq\\x00cGryd\\nEllipsoid\\nq\\x01}q\\x02X\\x04\\x00\\x00\\x\r\n00nameq\\x03X\\x06\\x00\\x00\\x00WGS 84q\\x04sC(v\\x1b\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\r\nx00@\\xa6TXA\\xd0\\x97\\x1c\\x14\\xc4?XA\\x9a\\xaf\\xda<\\x1a\\xf2\\xb4?(\\xe1\\xf3\\x84Zwk?q\\x\r\n05\\x86q\\x06\\x86q\\x07Rq\\x08.'\r\n>>> pickle.loads(data)\r\nEllispoid epsg=7030 a=6378137.000000 1/f=298.25722356\r\n\r\n1.0.4\r\n\r\n+ bugfix ``Gryd.Vincenty_dest`` representation\r\n+ wheel distribution fix\r\n\r\n1.0.3\r\n\r\n+ linux (ubuntu) fix\r\n\r\n1.0.2\r\n\r\n+ ``Gryd.Geodesic`` class takes degrees arguments for longitude and latitude values\r\n+ better objects representation\r\n+ speed improvement\r\n+ added ``__float__`` operator for ``Gryd.Dms`` and ``Gryd.Dmm`` objects\r\n\r\n>>> float(Gryd.Dms(1, 5, 45, 23))\r\n5.756388888888889\r\n>>> \"%.6f\" % Gryd.Dms(-1, 5, 45, 23)\r\n'-5.756389'\r\n\r\n1.0.1\r\n\r\n+ minor changes in C extensions\r\n+ bugfix ``geoid.dms`` and ``geoid.dmm`` function\r\n\r\n1.0.0\r\n\r\n+ first public binary release (``win32`` and ``linux`` platform)\r\n\r\nVicenty application\r\n===================\r\n\r\n>>> from Gryd import *\r\n>>> import math\r\n>>> wgs84 = Ellipsoid(name=\"WGS 84\") # WGS 84 ellipsoid\r\n>>> wgs84\r\nEllispoid epsg=7030 a=6378137.000000 1/f=298.25722356\r\n>>> london = Geodesic(-0.127005, 51.518602, 0.)\r\n>>> dublin = Geodesic(-6.259437, 53.350765, 0.)\r\n>>> vdist = wgs84.distance(dublin, london)\r\n>>> vdist\r\nDistance 464.025km initial bearing=113.6 final bearing=118.5\r\n>>> vdist.distance, vdist.initial_bearing, vdist.final_bearing\r\n(464025.2235062019, 1.9826304238310775, 2.0675106301597674)\r\n>>> vdest = wgs84.destination(london, math.degrees(vdist.final_bearing)+180, vdist.distance)\r\n>>> vdest\r\nDestination lon=-006\u00c2\u00b015'33.973'' lat=+053\u00c2\u00b021'2.754'' end bearing=-66.4\r\n>>> dublin\r\nGeodesic point lon=-006\u00c2\u00b015'33.973'' lat=+053\u00c2\u00b021'2.754'' alt=0.000\r\n>>> vdest.longitude, vdest.latitude, vdest.destination_bearing\r\n(-0.10924778507143726, 0.9311465077339985, -1.1589622298392817)\r\n>>> for p in wgs84.npoints(dublin, londre, 4): print(p)\r\n...\r\nDestination lon=-006\u00c2\u00b015'33.973'' lat=+053\u00c2\u00b021'02.754'' end bearing=113.6\r\nDestination lon=-004\u00c2\u00b059'32.422'' lat=+053\u00c2\u00b000'36.687'' end bearing=114.6\r\nDestination lon=-003\u00c2\u00b044'43.501'' lat=+052\u00c2\u00b039'22.715'' end bearing=115.6\r\nDestination lon=-002\u00c2\u00b031'07.792'' lat=+052\u00c2\u00b017'22.201'' end bearing=116.6\r\nDestination lon=-001\u00c2\u00b018'45.650'' lat=+051\u00c2\u00b054'36.502'' end bearing=117.5\r\nDestination lon=-000\u00c2\u00b007'37.218'' lat=+051\u00c2\u00b031'06.967'' end bearing=118.5\r\n\r\nEPSG dataset\r\n============\r\n\r\nAll epsg dataset linked to Mercator, Transverse Mercator and Lambert\r\nConformal Conic projections are available through python API using epsg\r\nid or name.\r\n\r\n>>> unit = Gryd.Unit(epsg=9002)\r\n>>> unit\r\nUnit epsg=9002 ratio=3.2808693302666354\r\n>>> wgs84 = Gryd.Ellipsoid(epsg=7030)\r\n>>> wgs84\r\nEllispoid epsg=7030 a=6378137.000000 1/f=298.25722356\r\n>>> Datum(epsg=4326)\r\nDatum epsg=4326:\r\n- \r\n- \r\n- to wgs84 0.0,0.0,0.0,0.0,0.0,0.0,0.0\r\n>>> osgb36 = Crs(epsg=27700)\r\n>>> osgb36\r\nCrs epsg=27700:\r\n- \r\n- \r\n- to wgs84 446.45,-125.16,542.06,-20.49,0.15,0.25,0.84>\r\n- \r\n- \r\n\r\nGrids\r\n=====\r\n\r\nThe four main grids are available : Universal Transverse Mercator,\r\nMilitary Grid Reference System, British National Grid and Irish\r\nNational Grid.\r\n\r\n>>> utm = Crs(projection=\"utm\")\r\n>>> utm(dublin)\r\nGrid point area=29U E=682406.211 N=5914792.531, alt=0.000\r\n>>> mgrs = Crs(projection=\"mgrs\")\r\n>>> mgrs(dublin)\r\nGrid point area=29U PV E=82406.211 N=14792.531, alt=0.000\r\n>>> bng = Crs(projection=\"bng\")\r\n>>> bng(dublin)\r\nGrid point area=SG E=16572.029 N=92252.917, alt=0.000\r\n>>> ing = Crs(projection=\"ing\")\r\n>>> ing(dublin)\r\nGrid point area=O E=15890.887 N=34804.964, alt=0.000\r\n\r\n\r\nAdvanced geodesy functions\r\n==========================\r\n\r\n>>> dublin = Gryd.Geodesic(-6.272877, 53.344606, 0.)\r\n>>> dublin.Geohash(), dublin.Geohash(digit=15)\r\n('gc7x3r04z7', 'gc7x3r04z77csws')\r\n>>> dublin.Maindenhead(), dublin.Maindenhead(level=6)\r\n('IO63ui72gq', 'IO63ui72gq19dh')\r\n>>> dublin.Georef(), dublin.Georef(digit=6)\r\n('MKJJ43322037', 'MKJJ433203')\r\n>>> dublin.Gars()\r\n'348MY16'\r\n>>> Gryd.from_geohash('gc7x3r04z77csws')\r\nGeodesic point lon=-006\u00c2\u00b016'22.357'' lat=+053\u00c2\u00b020'40.582'' alt=0.000\r\n>>> Gryd.from_maidenhead('IO63ui72gq')\r\nGeodesic point lon=-006\u00c2\u00b016'21.938'' lat=+053\u00c2\u00b020'40.563'' alt=0.000\r\n>>> Gryd.from_maidenhead('IO63ui72gq19dh')\r\nGeodesic point lon=-006\u00c2\u00b016'22.357'' lat=+053\u00c2\u00b020'40.583'' alt=0.000\r\n>>> Gryd.from_georef('MKJJ43322037')\r\nGeodesic point lon=-006\u00c2\u00b016'21.900'' lat=+053\u00c2\u00b020'41.100'' alt=0.000\r\n>>> Gryd.from_georef('MKJJ433203')\r\nGeodesic point lon=-006\u00c2\u00b016'15.000'' lat=+053\u00c2\u00b020'45.000'' alt=0.000\r\n>>> Gryd.from_gars('348MY16') # center of 5minx5min tile\r\nGeodesic point lon=-006\u00c2\u00b017'30.000'' lat=+053\u00c2\u00b022'30.000'' alt=0.000\r\n>>> Gryd.from_gars('348MY16', anchor=\"sw\") # south west of 5minx5min tile\r\nGeodesic point lon=-006\u00c2\u00b020'00.000'' lat=+053\u00c2\u00b020'00.000'' alt=0.000\r\n\r\nImage-map interpolation\r\n=======================\r\n\r\n``Gryd.Crs`` class also provides functions for map coordinates\r\ninterpolation using calibration points. Two points minimum are\r\nrequired.\r\n\r\n>>> pvs = Crs(epsg=3785) # Popular Visualisation Crs\r\n>>> pvs.add_map_point(0,0, Geodesic(-179.999, 85))\r\n>>> pvs.add_map_point(512,512, Geodesic(179.999, -85))\r\n>>> g = pvs.map2crs(256+128, 256+128)\r\n>>> g\r\nGeodesic point lon=+089\u00c2\u00b059'58.20'' lat=-066\u00c2\u00b023'43.74'' alt=0.000\r\n>>> pvs.crs2map(g)\r\nReference point px=384 py=384\r\n- \r\n- \r\n>>> g = pvs.map2crs(256-128, 256+128, geographic=True)\r\n>>> g\r\nGeographic point X=-10018698.512 Y=-9985934.440s alt=0.000\r\n>>> pvs.crs2map(g)\r\nReference point px=128 py=384\r\n- \r\n- \r\n\r\nAll ``Gryd`` objects are `ctypes Structure`_ and can be directly used in C code.\r\n\r\n>>> [f[0] for f in london._fields_]\r\n['longitude', 'latitude', 'altitude']\r\n>>> london.longitude\r\n-0.002216655416495398\r\n>>> [f[0] for f in wgs84._fields_]\r\n['epsg', 'a', 'b', 'e', 'f']\r\n>>> [f[0] for f in osgb36._fields_]\r\n['datum', 'unit', 'epsg', 'lambda0', 'phi0', 'phi1', 'phi2', 'k0', 'x0', 'y0', 'azimut']\r\n\r\nAPI Doc\r\n=======\r\n\r\n+ `From Python 3.5 Module doc`_\r\n\r\nTodo\r\n====\r\n\r\n+ implement oblique mercator\r\n+ implement epsg database maintainer\r\n\r\n.. _ctypes Structure: https://docs.python.org/3/library/ctypes.html#structures-and-unions\r\n.. _From Python 3.5 Module doc: http://bruno.thoorens.free.fr/gryd/doc/index.html\r\n\r\nSupport this project\r\n====================\r\n\r\n.. image:: http://bruno.thoorens.free.fr/img/gratipay.png\r\n :target: https://gratipay.com/gryd\r\n\r\n---\r\n\r\n.. image:: http://bruno.thoorens.free.fr/img/bitcoin.png\r\n\r\n16SPHzxaxjCYccnJCRY3RG711oybQj4KZ4", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/Moustikitos/gryd", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://bruno.thoorens.free.fr", "keywords": "epsg,utm,mgrs,bng,ing,map,interpolation,projection,great,circle,geohash,georef,GARS,maidenhead", "license": "Copyright 2015-2016, THOORENS Bruno, BSD licence", "maintainer": "", "maintainer_email": "", "name": "Gryd", "package_url": "https://pypi.org/project/Gryd/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Gryd/", "project_urls": { "Download": "https://github.com/Moustikitos/gryd", "Homepage": "http://bruno.thoorens.free.fr" }, "release_url": "https://pypi.org/project/Gryd/1.2.0/", "requires_dist": null, "requires_python": null, "summary": "Efficient great circle computation and projection library for x86 or x64 platform on Windows or Ubuntu.", "version": "1.2.0" }, "last_serial": 2225745, "releases": { "1.0.11": [ { "comment_text": "", "digests": { "md5": "217832911fcd174801a68ec026a0d44b", "sha256": "80f2476eb794561bb08272e57000574c99b58bc9e5d7245251e1e5aa73522e28" }, "downloads": -1, "filename": "Gryd-1.0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "217832911fcd174801a68ec026a0d44b", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 144413, "upload_time": "2016-02-02T22:11:06", "url": "https://files.pythonhosted.org/packages/80/91/1e1ef19776c289d3d555634b749e01faeddf865623ee3cbe917e99a0e0d9/Gryd-1.0.11-py2.py3-none-any.whl" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "f12b30be3e7f12b35916e30451b33e4b", "sha256": "ea425eb48cd0d34dfe73245adf47d47b6cf75a7b2463e2389efd4cd0ebaa1686" }, "downloads": -1, "filename": "Gryd-1.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f12b30be3e7f12b35916e30451b33e4b", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 141004, "upload_time": "2016-01-30T16:41:22", "url": "https://files.pythonhosted.org/packages/b4/97/8d2af2e74891f34d13931fa990d4d3465a746c95822e7a92444737196ef3/Gryd-1.0.8-py2.py3-none-any.whl" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "eb8af6208af3c05ad24c73875e60ca6c", "sha256": "017b2378f134c05cec76633a37c3f2c1c33f050b494cce9f44d6edf110ab2fdb" }, "downloads": -1, "filename": "Gryd-1.0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eb8af6208af3c05ad24c73875e60ca6c", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 141062, "upload_time": "2016-01-30T16:57:16", "url": "https://files.pythonhosted.org/packages/84/99/4f8e005e3646e67af9f287df9f6899969317817458fc3de95c988c1f7929/Gryd-1.0.9-py2.py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "67c3d4bb127e7a65042d9a2b26680f0e", "sha256": "7060f397a4864b6d30f5c6315b3cd9351f7b817d500e5c0d9c3880f4f1e61031" }, "downloads": -1, "filename": "Gryd-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "67c3d4bb127e7a65042d9a2b26680f0e", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 176681, "upload_time": "2016-02-04T13:22:18", "url": "https://files.pythonhosted.org/packages/57/b5/9357c725c911d151fc6270fcbb9fcf9ab2605ff3211b066a317d43ad92fd/Gryd-1.1.0-py2.py3-none-any.whl" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "eefb7f3fe1ff4fb5630172572c94681a", "sha256": "34f0512e14c29c1c30cea0f455a79427c3438209107806e45298d519b407b2d8" }, "downloads": -1, "filename": "Gryd-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eefb7f3fe1ff4fb5630172572c94681a", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 152236, "upload_time": "2016-04-17T13:20:19", "url": "https://files.pythonhosted.org/packages/87/01/6df964760f581fb43d06fc0c508fa66319867ee50e5b8cb42f62c4529bba/Gryd-1.2.0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eefb7f3fe1ff4fb5630172572c94681a", "sha256": "34f0512e14c29c1c30cea0f455a79427c3438209107806e45298d519b407b2d8" }, "downloads": -1, "filename": "Gryd-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eefb7f3fe1ff4fb5630172572c94681a", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 152236, "upload_time": "2016-04-17T13:20:19", "url": "https://files.pythonhosted.org/packages/87/01/6df964760f581fb43d06fc0c508fa66319867ee50e5b8cb42f62c4529bba/Gryd-1.2.0-py2.py3-none-any.whl" } ] }