我是地理问题的新手,需要询问有关使用PostGIS的问题。 我通过osmosis将OpenStreetMap数据导入到PgSQL中,我需要查询这些数据。
基本上我有来自GPS的位置,我需要获得节点,方式和区域的所有标签,这些标签至少部分距离我一定距离(比方说100米)。
我真的不知道从哪里开始。
感谢。
答案 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函数)......它有助于减少查询时间。