如何在Postgresql中查找经度和纬度的城市名称?

时间:2017-12-07 06:11:14

标签: sql postgresql analytics postgis

我有一个数据库,其中存储了各种属性的纬度和经度。我想知道,每个属性属于哪个城市(所有属性都在美国)。

1 个答案:

答案 0 :(得分:3)

谈到Postgresql,首先你需要获取美国城市边界形状文件的数据。可能的网站是

https://www.census.gov/geo/maps-data/data/tiger.html  
https://www.census.gov/geo/maps-data/data/tiger-cart-boundary.html
https://catalog.data.gov/dataset?tags=cities

之后将数据导入postgres。我假设您的属性数据已存储在postgres中。确保城市边界的SRID几何类型为4326.如果没有,您可以使用ST_transform函数轻松转换它。

最后,要检查某个特定纬度/经度属于哪个城市,您需要将纬度/经度转换为点几何并检查城市数据。例如,这将是一些像这样的事情

SELECT c.city_name FROM cities_boundaries AS c, properties AS p
WHERE ST_CONTAINS(c.geom, ST_SetSRID(ST_MakePoint(p.longitude, p.latitude), 4326))