2 Stimmen

Python-Modul für Entfernungen zwischen UK-Postleitzahlen

Ich muss Entfernungen zwischen britischen Postleitzahlen berechnen. Ich möchte keine Web-Api verwenden. Gibt es ein Python-Modul/eine Python-Bibliothek für diese Aufgabe? Oder muss ich etwas Eigenes zusammenstellen, indem ich Daten aus dem OrdnanceSurvey ?

Danke,

1voto

DhruvPathak Punkte 40485

1/ Sie können eine beliebige andere Geolocation-Api verwenden, z. B. Google Maps, die Ihnen die genaue Entfernung auf der Grundlage der Pincodes liefert.

2/ Sie können eine beliebige aktualisierte Datenbank mit Postleitzahlen und Breiten-/Längenangaben verwenden, um die Entfernung zwischen den beiden Punkten zu berechnen.

Nützliche Links:

i) http://blog.acmultimedia.co.uk/2008/03/uk-post-code-distance-calculator-using-phpmysql/

ii) Django - wie kann ich die Entfernung zwischen zwei Orten ermitteln?

1voto

aquavitae Punkte 15648

Ich kenne kein direkt verwendbares Modul, aber Sie könnten folgendes verwenden GRASS o QGIS die beide Python-Skripting unterstützen, so dass die Funktionalität als Python-Module verwendet werden kann. Sie müssten zwar immer noch herausfinden, wie man es manuell in einem dieser Tools macht, aber das ist nicht wirklich sehr schwierig.

1voto

Luke.py Punkte 955

Siehe unten für einfachen Code, der die Modul Postleitzahlen für Python zusammen mit dem Google Maps Entfernungsmatrix API .

from postcodes import PostCoder
import requests
import json
import pprint

pc = PostCoder()
origin_postcode = str.upper(raw_input("Enter origin PostCode:"))
dest_postcode = str.upper(raw_input("Enter destination PostCode:"))

origin = str(pc.get('%s' % origin_postcode)['geo']['lat'])+','+str(pc.get('%s' % origin_postcode)['geo']['lng'])
dest = str(pc.get('%s' % dest_postcode)['geo']['lat'])+','+str(pc.get('%s' % dest_postcode)['geo']['lng'])

data = requests.get('https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=%s&destinations=%s&key=AIzaSyDfTip2PrdaRkF1muCLP8REAk3FsLjmBrU' % (origin, dest))
new = json.loads(data.text)

miles = str(new['rows'][0]['elements'][0]['distance']['text']).replace('mi','miles')
duration = str((new['rows'][0]['elements'][0]['duration']['text']))

print '\n\nThe distance from %s to %s is %s, taking approximately %s (driving).' % (origin_postcode, dest_postcode, miles, duration)

1voto

inforightsjames Punkte 11

Diese Frage ist zwar schon etwas älter, aber vielleicht lohnt es sich, auf den Unterschied zwischen den von Google und SatNavs verwendeten Polarkoordinaten (Long/Lat) und den vom Ordnance Survey bereitgestellten Eastings & Northings hinzuweisen, die angeben, wie weit ein bestimmter Postleitzahlenschwerpunkt von einem bestimmten Bezugspunkt irgendwo im Südwesten der Scilly-Inseln entfernt ist.

Wenn Sie nur Entfernungen ausrechnen wollen, ist das mit Pythagoras ein Einzeiler. EG Stonehenge bis Haus des Parlaments

>>> # Coordinates of Stonehenge and Westminster in E/Northings
... s = (412183, 142346)
... p = (530268, 179545)
... d = ((s[0] - p[0]) ** 2 + (s[1] - p[1]) ** 2) ** 0.5
... print (d)
123805.62517914927

Ich war auf der Suche nach einer Bibliothek für die Konvertierung von Polarkoordinaten in kartesische Koordinaten, was selbst auf einer perfekten Kugel, die die Welt mit Sicherheit nicht ist, relativ schwierig ist. Ich bin derzeit versuchen, und meist scheitern, um meinen Kopf um diese zu bekommen: https://scipython.com/book/chapter-2-the-core-python-language-i/additional-problems/converting-between-an-os-grid-reference-and-longitudelatitude/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X