deffind_closest_network_node(x, y, floor) res = CONN.execute(%Q{SELECT verts.id as id FROM public.networklines_3857_vertices_pgr AS verts INNERJOIN (select ST_PointFromText('POINT(#{x}#{y}#{floor})', 3857)as geom) AS pt ONST_DWithin(verts.the_geom, pt.geom, 100.0) WHEREST_Z(verts.the_geom) = #{floor} ORDERBYST_3DDistance(verts.the_geom, pt.geom) LIMIT1}) if res.ntuples != 0 res.getvalue(0,0) else returnfalse end end
//通过数据库查询最短路径的拓扑数据,指定返回的拓扑结果为geoJSON格式 if start_node_id.present? && end_node_id.present? res = CONN.execute(%Q{SELECT seq, id1 AS node, id2 AS edge, total_cost AS cost, layer, type_id, ST_AsGeoJSON(wkb_geometry) AS geoj FROM pgr_dijkstra( 'SELECT ogc_fid as id, source, target, st_length(wkb_geometry) AS cost, layer, type_id FROM public.networklines_3857', #{start_node_id}, #{end_node_id}, FALSE, FALSE ) AS dij_route JOIN public.networklines_3857 AS input_network ON dij_route.id2 = input_network.ogc_fid}) else return render nothing: true, status: 404 end