我是地理问题的新手,需要询问有关使用 PostGIS 的问题。我通过 osmosis 将 OpenStreetMap 数据导入 PgSQL,我需要查询这些数据。
本质上,我有来自 GPS 的位置,我只需要获取节点、路径和区域的所有标签,这些标签至少在距离我一定距离内(比如说 100 米)。
我真的不知道从哪里开始。
谢谢。
我是地理问题的新手,需要询问有关使用 PostGIS 的问题。我通过 osmosis 将 OpenStreetMap 数据导入 PgSQL,我需要查询这些数据。
本质上,我有来自 GPS 的位置,我只需要获取节点、路径和区域的所有标签,这些标签至少在距离我一定距离内(比如说 100 米)。
我真的不知道从哪里开始。
谢谢。
如果您有纬度和经度,您可以尝试以下操作:
select * from nodes_with_tags
where st_distance(geography(geom),
geography(st_geomfromewkt('SRID=4326;POINT(' || lng || ' ' || lat || ')')))
<= 100;
使用“地理”功能进行转换会减慢速度,但会给出以米为单位的距离,而不是难以理解的度数。
您还可以对“ways”表执行相同的查询,将“geom”列替换为ways.linestring 列。
检查此链接:LINK
它适用于邮政编码,但如果您熟悉 SQL,则可以轻松更改它。注意:如果你使用大数据库,你也应该使用边界框(参见 Box3D 函数)......它有助于减少查询时间。