如何解决如何解决不同的Lat,Long对具有相同的OSM ID的问题?
(我不是英语母语人士,所以请忽略我的语法错误。)
我有一个名为Karachi的PostgreSQL数据库名称,我已经从 https://download.bbbike.org/ 下载了shp文件格式的osm karachi地图,然后使用QGIS将其转换为GeoJSON,然后导入了该Karachi.geojson通过以下命令添加到PostgreSQL:
ogr2ogr -select name -nlt CONVERT_TO_LINEAR -lco GEOMETRY_NAME=the_geom -lco FID=id -f PostgreSQL PG:"dbname='Karachi' host='localhost' port='5432' user='postgres' password='Password'" -nln edges Karachi.geojson -where "OGR_GEOMETRY='MultiLineString'"
ALTER TABLE edges ADD source INT4;
ALTER TABLE edges ADD target INT4;
ALTER TABLE edges ALTER COLUMN the_geom TYPE geometry(linestring,4326) USING ST_GeometryN(the_geom,1);
SELECT pgr_nodeNetwork('edges',0.00001);
SELECT pgr_createTopology('edges_noded',0.00001);
ALTER TABLE edges_noded ADD COLUMN name VARCHAR,ADD COLUMN type VARCHAR;
UPDATE edges_noded AS new SET name=old.name FROM edges as old WHERE new.old_id=old.id;
ALTER TABLE edges_noded ADD distance FLOAT8;
UPDATE edges_noded SET distance = ST_Length(ST_Transform(the_geom,4326)::geography) / 1000;
此后,我有两个经度和纬度
-
67.112457,24.882638
-
67.113009,24.882293
我想找到这两个纬度和经度之间的距离,所以我使用此查询来获取osm ID:
SELECT v.id,v.the_geom,string_agg(distinct(e.name),',') AS name
FROM edges_noded_vertices_pgr AS v,edges_noded AS e
WHERE v.id = (
SELECT id
FROM edges_noded_vertices_pgr
ORDER BY the_geom <-> ST_SetSRID(ST_MakePoint(67.0691865,24.9065008),4326)
LIMIT 1
)
AND (e.source = v.id OR e.target = v.id)
GROUP BY v.id,v.the_geom
此查询针对两个(纬度,经度)返回相同的osm id 如何解决这个问题?
使用Windows 10是否可以解决此问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。