{ "info": { "author": "Maximillian Dornseif", "author_email": "md@hudora.de", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python" ], "description": "PyGeoDb - an Interface to OpenGeoDb\n===================================\n\nPyGeoDb is an Python interface to OpenGeoDb_. It is all about Austrian, German\nand Swiss postcodes (ZIPs) and city locations. It requires Python 2.6.\nThe rest of this documentation is in German language. Probably you can extend\nthe system to US data by integrating US data as used in Ben Fry's zipdecode_.\n\nYou can download the latest release at http://pypi.python.org/pypi/pyGeoDb/#, development releases are available at http://github.com/mdornseif/pyGeoDb#.\n\nDie ist ein Python Interface zu OpenGeoDb. \"Im Mittelpunkt des Projektes\nOpenGeoDB steht der Aufbau einer moeglichst vollstaendigen Datenbank mit\nGeokoordinaten zu allen Orten und Postleitzahlen (bisher: A,B,CH,D und FL).\"\n(OpenGeoDB Wiki) Die Datenbank wird ueberwiegend zur Umkreissuche_ oder zur\n(groben) Geocodierung verwendet. In der PHP-Welt wird es fast ausschliesslich\nmit GeoClassPHP_ verwendet. Fuer Python gibt es bisher keine weit verbreitete\nLoesung.\n\nZusaetzlich hilft PyGeoDb bei der Erstellung zon Postleitzahlen Karten. Dazu\nwerden neben den OpenGeoDb Daten auch Informationen aus Openstreetmap\nherangezogen.\n\n.. _OpenGeoDb: http://opengeodb.giswiki.org/\n.. _zipdecode: http://benfry.com/zipdecode/\n.. _Umkreissuche: http://de.wikipedia.org/wiki/Umkreissuche\n.. _GeoClassPHP: http://sourceforge.net/projects/geoclassphp/\n\n\nEntfernungen\n------------\n\n\nEntfernungsberechnung\n~~~~~~~~~~~~~~~~~~~~~\n\nPyGeoDb kann die Entfernung in Metern zwischen zwei Postleitzahlenbereichen\nberechnen. Dazu kann direkt eine Postleitzahl als String, ein dict, oder ein\nObjekt, dass dem AddressProtocol_ entspricht, uebergeben werden::\n\n >>> import pygeodb\n >>> pygeodb.distance(\"42897\", \"50933\") # strings\n 38131\n\n >>> pygeodb.distance({'plz': \"42897\"}, {'plz': \"48143\"}) # dicts\n 90478\n\n >>> class LocationObject(object): pass\n >>> loc = LocationObject()\n >>> loc.plz = \"50933\"\n >>> pygeodb.distance(loc, \"48143\") # Objekte\n 124737\n\n\nSortieren nach Entfernung\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\npyGeoDb kann eine Liste von Postleitzahlen nach der Entfernung zu einer\nbestimmten Postleitzahl sortieren. Dabei koennen, Strings sowie Dicts und\nObjekte nach dem AddressProtocol gemischt werden::\n\n >>> pygeodb.nearest(\"42897\", [\"42477\", \"48143\", {'plz': \"45149\"}, loc]) #doctest: +ELLIPSIS\n ['42477', {'plz': '45149'}, <__main__.LocationObject object ...>, '48143']\n\nWenn es relevant ist, wie weit die verschiedenen Postleitzahlen entfernt sind,\nkann auch dies mit zurueck gegeben werden::\n\n >>> pygeodb.distances(\"42897\", [\"50933\", \"42477\", \"48143\", \"45149\", \"42897\"])\n [(0, '42897'), (7200, '42477'), (34466, '45149'), (38131, '50933'), (90478, '48143')]\n\n.. _AddressProtocol: http://github.com/hudora/huTools/blob/master/doc/standards/address_protocol.markdown\n\n\nFehlerbehandlung\n~~~~~~~~~~~~~~~~\n\nWenn eine Postleitzahl unbekannt ist, wird eine ValueError() Exception\nausgeloesst::\n\n >>> pygeodb.distance(\"42897\", \"99999\") # Strings\n Traceback (most recent call last):\n File \"\", line 1, in ?\n ValueError: Unknown PLZ: DE-99999\n\n\nKartengeneriertung\n------------------\n\n.. _hyperlink-name: karten\n\npyGeoDb kann Postleitzalenkarten generieren. Dazu kommt die Graphikbibliothek\nPycairo_ zum Einsatz, die natuerlich vorher installiert sein muss. Karten\nkoennen im PDF_, PNG_, EPS und SVG Format erstellt werden.\n\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/deutschland.png\n\nEs gibt keine freie Datenquelle zu Groesse und Form der einzelnen\nPostleitzahlenbereiche. Jedoch kann man sich der Form der\nPostleitzahlenbereiche annaehern, indem man ein `Voronoi-Diagramm`_ erzeugt.\nDies weicht im Detail zwar deutlich von den realen Postleitzahlenbereichen ab,\nreicht aber fuer Visualisierungsaufgaben aus. Zur Erzeugung des Graphen, der\ndie Postleitzahlenbereiche unterteilt, wird der \"Fortune Algorithmus\"\nwerwendet.\n\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/deutschland_gebiete.png\n\nRufen Sie ``./plz_draw --help`` auf, um die Aufrufparameter angezeigt zu\nbekommen. Beispieldateien kann man durch das Kommando `make maps` erstellen -\ndie entsprechenden Kommandos finden sich in der Datei Makefile, unten.\n\n.. _Pycairo: http://cairographics.org/pycairo/\n.. _PDF: https://github.com/mdornseif/pyGeoDb/raw/master/maps/deutschland_gebiete.pdf\n.. _PNG: https://github.com/mdornseif/pyGeoDb/raw/master/maps/deutschland_gebiete.png\n.. _`Voronoi-Diagramm`: http://de.wikipedia.org/wiki/Voronoi-Diagramm\n.. _voronoiexample1: http://www.raymondhill.net/voronoi/voronoi.php\n.. _voronoiexample2: http://www.diku.dk/hjemmesider/studerende/duff/Fortune/\n\nEine deutsche Postleitzahlenkarte erstellt man beispielsweise mit folgenden\nKommandos::\n\n # Deutschlandkarte mit Postleitzahlenbereichen\n $ python ./plz_draw --borders --acol=4:#f00 --acol=3:#0f0 --acol=2:#00f \\\n --acol=1:#ff0 --acol=0:#f0f --acol=5:#0ff --acol=6:#07f --acol=7:#f70 \\\n --acol=8:#7f7 --acol=9:#70f test.pdf\n\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/plzgebiete.png.png\n\nOder::\n\n # 42859 und darueberliegende Bereiche markieren\n $ python ./plz_draw --borders --acol=42859:#f00 --acol=428:#0f0 \\\n --acol=42:#00f test.pdf\n\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/42xxx.png\n\nMan kann stattdessen auch die Mittelpunkte der Postleitzahlengebiete markieren.\nDabei gibt man mit `-c 250` die gr\u00f6sse der Punkte an::\n\n python ./plz_draw --borders --cencol=52:#f00 --cencol=50:#00f --cencol=10:#0f0 -c 250 maps/centercolors.png\n\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/centercolors.png\n\nNat\u00fcrlich kann man das auch alles mischen::\n\n python ./plz_draw --borders --acol=40:#ff0 --acol=42:#0ff --acol=45:#0f0 --cencol=52:#f00 --cencol=50:#00f --cencol=10:#0f0 -c 300 -mBielefeld maps/manycolors.png\n\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/manycolors.png\n\n\nMan kann auf der Karte Ortsnamen anzeigen lassen. Wenn ein Ort mehrere\nPostleitzahlen hat, wird der Ortsname am gemittelten Zentrum der verschiedenen\nPostleitzahlenbereiche gezeichnet. Eine Karte mit dem meissten deutschen\nGrossstaedten erhaelt man mit folgendem Kommando::\n\n python ./plz_draw -mBerlin -mHamburg -mStuttgart -mDortmund -mBremen\n -mHannover -mLeipzig -mDresden -mBielefeld -mMannheim -mKarlsruhe\n -mAugsburg -mChemnitz -mKiel -mHalle -mMagdeburg -mErfurt -mRostock\n -mKassel -mPaderborn -mRegensburg -mWolfsburg -mBremerhaven -mIngolstadt\n -mUlm -mKoblenz -mTrier -mSiegen -mJena -mCottbus '-mFreiburg im Breisgau'\n '-mFrankfurt am Main' test.pdf\n\nDie Eigabe der Staedtenamen mit Umlauten ist je nach Konfiguration des\nBetriebssystems problematisch. Auch lassen sich diese in dieser Hilfedatei\nnicht problemlos darstellen. Sie koennen die Parameter ``-mDuesseldorf\n-mMuenchen -mKoeln -mNuernberg -mLuebeck -mSaarbruecken -mWuerzburg\n-mGoettingen`` wenn Sie jeweils die korrekten Umlaute einsetzen.\n\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/deutschland_stadte.png\n\nParamerisierte Kartenfaerbung\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDas Programm kann auch Postleitzahlenbereiche je nach Haeufigkeit des\nAufkommens von Postleitzahlen in einer Datei einfaerben. Das ist z.B. Karten,\ndie die Kundenverteilung ider dergleichen visualisieren, geeignet.\n\nErzeugen Sie datzu eineTatei mit Test-Postleitzahlen. Schreiben Sie z.B\nfolgendes in eine Datei test.txt::\n\n 42477\n 42477\n 42477\n 42477\n 42897\n 42897\n 42897\n 42499\n 42859\n 42899\n 42929\n\nNun kann man diese Daten nutzen, um eine Entsprechend eingefaerbte Karte zu\nerstellen::\n\n # eingefaerbte Gebiete\n python ./plz_draw --read=test.txt --areas test.pdf\n\n42477 wird am dunkelsten eingefaerbt (kommt 4 x vor), 42897 dunkel (kommt 3 x\nvor) die restlichen Felder werden nur leicht eingefaerbt. Fuer Tests sind\nBeispieldaten in data/beispielverteilung.txt beigelegt.\n\nSolange Sie nicht sehr grosse Datenbestaende, von mehr als einer halben\nMillion Datensaetze haben, werden die Eingefaerbten Karten recht\nunregelmaessig aussehen. Dem kann man entgegenwirken, indem man die Daten von\nPostleitzahlenbereichen mit gleichem Prefix zusammenfasst, um ein\ngleichmaessigeres Ergebnis zu erzielen. Dies geht mit dem Parameter\n``--digits``. Wenn Sie ``--digits=3`` uebergeben, werden nur die ersten drei\nZiffern der Postleitzahl zur Zusammenfassung verwendet. Geben sie ``make\nmaps`` ein, und schauen Sie die fuenf Dateien ``maps/beispiel?.pdf`` an, um\ndie Auswirkung des ``--digits``-Parameters zu sehen.\n\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/beispiel5_klein.png\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/beispiel4_klein.png\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/beispiel3_klein.png\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/beispiel2_klein.png\n.. image:: https://raw.github.com/mdornseif/pyGeoDb/master/maps/beispiel1_klein.png\n\n\nAutoren\n-------\n\nDer urspruengliche Entfernungsberechnungscode wurde in 2007 von Christian N\nKlein entwickelt. Die Voronoi Berechnung basiert auf Code von Steve Fortune,\nder von Shane O'Sullivan in C++ und dann von Bill Simons in Python konvertiert\nwurde.\n\nDie Datengrundlage fuer die Polstleitzahlenbereiche stammt vom `OpenGeoDb\nProjekt`_. Die deutschen Grenzen stammen aus `Openstreetmap Project Germany`_.\n\nDie Kartengenerierung stammt von Maximillian Dornseif und basiert auf seinem\nProjekt `zipdecodede`, dass auf Code aus Ben Frys Buch `Visualizing Data`_\nberuht.\n\n.. _`OpenGeoDb Projekt`: http://www.opengeodb.de\n.. _`Openstreetmap Project Germany`: http://wiki.openstreetmap.org/wiki/WikiProject_Germany/Grenzen#Deutschland\n.. _`zipdecodede`: http://md.hudora.de/c0de/zipdecodeDE/\n.. _`Visualizing Data`: http://www.librarything.com/work/4108432/book/37543244\n\n\nAlternativen, Quellen & Vermischtes\n-----------------------------------\n\n`d9t.gis`_ ist ein sehr Zope-Lastiges Python Projekt zur Entfernugnsberechnung\nmit OpenGeoDb Daten. `ruby-opengeodb`_ erlaubt Zugriff auf die OpenGeoDB Daten\naus Ruby heraus.\n\nEs gibt jede Menge Online-Distanzberechnungsdienste, z.B:\n\n * http://www.edith-distance.de/pdf/doku.pdf\n * http://www.ebaas.de/ebaas-distance-faq/\n * http://www.internet-marketing-service.eu/?id=20\n * http://www.mprobst.de/OpenGeoNearestNeighbours/website/index.html\n\nUmfangreiche Informationen zum deutschen Postleitzahlensystem inklusive freier\nRasterkarten gibt es bei Wikipedia_.\n\n.. _`d9t.gis`: http://pypi.python.org/pypi/d9t.gis\n.. _`ruby-opengeodb`: http://ruby-opengeodb.rubyforge.org/\n.. _Wikipedia: http://de.wikipedia.org/wiki/Postleitzahl_(Deutschland)\n\nAls Alternative Quelle fuer die Deutschen Grenzen kaeme anstatt von\nOpenStreetmap auch NaturalEarth_ in Frage. Geonames_ koennte als Alternative\nQuelle fuer Postleitzahlen dienen.\n\n.. _NaturalEarth: http://www.naturalearthdata.com/\n.. _Geonames: http://www.geonames.org/postal-codes/\n\nWenn Sie einen Fehler bemerken, melden Sie Ihn bitte unter http://github.com/mdornseif/pyGeoDb/issues\n\n\n.. image:: https://d2weczhvl823v0.cloudfront.net/mdornseif/pygeodb/trend.png\n :alt: Bitdeli badge\n :target: https://bitdeli.com/free\n.. image:: https://travis-ci.org/mdornseif/pyGeoDb.png?branch=master\n :target: https://travis-ci.org/mdornseif/pyGeoDb\n.. image:: https://coveralls.io/repos/mdornseif/pyGeoDb/badge.png\n :target: https://coveralls.io/r/mdornseif/pyGeoDb", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/mdornseif/pyGeoDb", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "pyGeoDb", "package_url": "https://pypi.org/project/pyGeoDb/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pyGeoDb/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/mdornseif/pyGeoDb" }, "release_url": "https://pypi.org/project/pyGeoDb/1.3/", "requires_dist": null, "requires_python": null, "summary": "distance calculation based on ZIP codes and map generation", "version": "1.3" }, "last_serial": 882015, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "a888e2c5db88568cd90f00a73af9bf2b", "sha256": "1230e914ccc0e1c33ce21971339d61dcde4a0140e0adbf5755ac3e2d753b6a8c" }, "downloads": -1, "filename": "pyGeoDb-1.0.tar.gz", "has_sig": false, "md5_digest": "a888e2c5db88568cd90f00a73af9bf2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1366078, "upload_time": "2010-01-19T13:31:33", "url": "https://files.pythonhosted.org/packages/d6/94/cbd963abdd674177678f5b0e7c90175fa34509e7ab51898004e83ed47d3e/pyGeoDb-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "b5b1087f8b4c8d56ef4f5d0bb85d09f3", "sha256": "020b8b7ea91b56a1b1c71cf3bb45f2c5763e12e59a1be4dab530275a6acfd03d" }, "downloads": -1, "filename": "pyGeoDb-1.1.tar.gz", "has_sig": false, "md5_digest": "b5b1087f8b4c8d56ef4f5d0bb85d09f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1367838, "upload_time": "2010-01-25T08:16:14", "url": "https://files.pythonhosted.org/packages/d7/f7/46ef4db894e970c0d9fdf320720b4f9efc34e6c5faa39a5d8a7b427ecebf/pyGeoDb-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "ccc0931c6f6f84cd78ae9950d75e78f6", "sha256": "71043cff6227a91ec225816589fd8842b9204f34f9825a49d664bb7e00d4293b" }, "downloads": -1, "filename": "pyGeoDb-1.2.tar.gz", "has_sig": false, "md5_digest": "ccc0931c6f6f84cd78ae9950d75e78f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1372063, "upload_time": "2010-01-26T09:14:44", "url": "https://files.pythonhosted.org/packages/92/cf/0d7ecee37a4792c3f156701d1303e8cd2671184331f08dd7b421e613c0a1/pyGeoDb-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "e12ca7b17ed24ed6b47eb7564afa2def", "sha256": "fec216cb4a9e95c62bc4697e1cf7edbde11c894f7f326f14ead6ec98b0176cc3" }, "downloads": -1, "filename": "pyGeoDb-1.3.tar.gz", "has_sig": false, "md5_digest": "e12ca7b17ed24ed6b47eb7564afa2def", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1352157, "upload_time": "2013-10-05T18:59:47", "url": "https://files.pythonhosted.org/packages/df/70/275ba06974a03080f15536860e4a576cf43bf2c7262367e8e6e08d26c1c2/pyGeoDb-1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e12ca7b17ed24ed6b47eb7564afa2def", "sha256": "fec216cb4a9e95c62bc4697e1cf7edbde11c894f7f326f14ead6ec98b0176cc3" }, "downloads": -1, "filename": "pyGeoDb-1.3.tar.gz", "has_sig": false, "md5_digest": "e12ca7b17ed24ed6b47eb7564afa2def", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1352157, "upload_time": "2013-10-05T18:59:47", "url": "https://files.pythonhosted.org/packages/df/70/275ba06974a03080f15536860e4a576cf43bf2c7262367e8e6e08d26c1c2/pyGeoDb-1.3.tar.gz" } ] }