2017-05-08 60 views
0

我有一個兩列(實際類型)經緯度分別表。 我想知道這些點是否位於比利時,直接從SQL查詢(postgreSQL)。 我已經看到了一些東西在Python(Geopy),但請求的數量是有限的(geopy.exc.GeocoderServiceError:HTTP錯誤429:請求過多 )...postgresql緯度經度比利時

任何想法? 親切的問候

回答

1

你可以直接在Postgres中使用PostGIS擴展。您需要將比利時的形狀存儲在表格中。

要調用的函數是ST_CONTAINS,如果第一個幾何體包含第二個幾何體,則返回True或False。

SELECT layer_pt.* FROM layer_belgium, layer_pt WHERE ST_Contains(layer_belgium.geom, layer_pt.geom); 

第一個幾何形狀是比利時的形狀,第二個幾何形狀是你的觀點。如果你有其他國家的話,你可能不得不限制查詢。

由於您沒有點幾何圖形但只有座標,所以您還必須在運行中使用create the point geometry

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

如果您需要在PostGIS更多的幫助,看看在GIS StackExchange

+0

謝謝,這是非常有幫助! –

+0

不客氣! – JGH