我有一个数据库,其中存储了各种属性的纬度和经度。我想知道,每个属性属于哪个城市(所有属性都在美国)。
答案 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))