1

我是地理问题的新手,需要询问有关使用 PostGIS 的问题。我通过 osmosis 将 OpenStreetMap 数据导入 PgSQL,我需要查询这些数据。

本质上,我有来自 GPS 的位置,我只需要获取节点、路径和区域的所有标签,这些标签至少在距离我一定距离内(比如说 100 米)。

我真的不知道从哪里开始。

谢谢。

4

2 回答 2

1

如果您有纬度和经度,您可以尝试以下操作:

select * from nodes_with_tags 
where st_distance(geography(geom), 
 geography(st_geomfromewkt('SRID=4326;POINT(' || lng || ' ' || lat || ')'))) 
  <= 100;

使用“地理”功能进行转换会减慢速度,但会给出以米为单位的距离,而不是难以理解的度数。

您还可以对“ways”表执行相同的查询,将“geom”列替换为ways.linestring 列。

于 2012-05-07T19:07:46.567 回答
0

检查此链接:LINK

它适用于邮政编码,但如果您熟悉 SQL,则可以轻松更改它。注意:如果你使用大数据库,你也应该使用边界框(参见 Box3D 函数)......它有助于减少查询时间。

于 2012-05-01T23:11:34.423 回答