2017-05-08 1 views
0

Ich habe eine Tabelle mit zwei Spalten (realer Typ) für Breiten- und Längengrad. Ich würde gerne wissen, ob diese Punkte in Belgien liegen, direkt aus einer SQL-Abfrage (PostgreSQL). Ich habe schon einige Dinge in Python (Geopy), aber die Anzahl der Anfragen beschränkt gesehen (geopy.exc.GeocoderServiceError: HTTP-Fehler 429: zu viele Anfragen ) ...postgresql Breitengrad Länge Belgien

Jede Idee? Mit freundlichen Grüßen

Antwort

1

Sie können es direkt in Postgres mit der PostGIS-Erweiterung tun. Sie müssten die Form für Belgien in einer Tabelle speichern.

Die Funktion zum Aufrufen ist ST_CONTAINS, die True oder False zurückgibt, wenn die erste Geometrie die zweite enthält.

Die erste Geometrie wäre die Form von Belgien und die zweite wäre Ihr Punkt. Möglicherweise müssen Sie die Abfrage einschränken, um nur Belgien zu erhalten, wenn Sie andere Länder haben.

Da Sie keine Punktgeometrie sondern nur ihre Koordinate haben, müssten Sie auch create the point geometry on the fly.

SELECT layer_pt.* FROM layer_belgium, layer_pt WHERE ST_Contains(layer_belgium.geom, ST_GeomFromText('POINT(' || layer_pt.y || ' ' || layer_pt.x || ')', 4326)); 

Sollten Sie brauchen mehr Hilfe bei PostGIS, haben einen Blick auf die GIS StackExchange

+0

Vielen Dank, es ist sehr hilfreich! –

+0

Gern geschehen! – JGH

Verwandte Themen