PostGIS OSM查询

时间:2012-05-01 20:46:34

标签: postgis openstreetmap

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

基本上我有来自GPS的位置,我需要获得节点,方式和区域的所有标签,这些标签至少部分距离我一定距离(比方说100米)。

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

感谢。

2 个答案:

答案 0 :(得分:1)

如果您有纬度和经度,可以尝试以下内容:

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

使用'geography'功能进行转换会降低速度,但会以米为单位而不是难以理解的度数。

您还可以在'way'表上执行相同的查询,将'geom'列替换为ways.linestring列。

答案 1 :(得分:0)

点击此链接:LINK

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