あなたが言うようhttps://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/dijkstra.htmlの例に続いて、私たちは、このクエリを実行する2つのノード(154348と130324)間のルートを見つけることができます:
select *
from tuscany_net
where nodefrom = 154348
and nodeto = 130324
質問1
検索するにはルート内のノードのポイント(緯度/経度)を照会すると、tuscany_nodes
テーブルに照会し、tuscany_net
の結果を次のようにフィルタリングできます。
select node_id, st_y(geometry) latitude, st_x(geometry) longitude
from tuscany_nodes
where node_id in (
select nodeto
from tuscany_net
where nodefrom = 154348
and nodeto = 130324
)
は、あなたが、結果は次のように設定されてしまいます。
node_id latitude longitude
130324 43.843969 10.981256
130337 43.843960 10.981382
130352 43.844300 10.981580
130414 43.845558 10.982525
130420 43.845541 10.982572
...
また、ドキュメントが言うように、この結果セットの最初の行には、パス全体をまとめた、と表し、対応するジオメトリが含まれていますそのルートを描画したり、ルート上のすべてのポイントを見つけるために使用することができます。
あなたが照会することができますルートのWKT representationを見たい場合:
:
select st_astext(Geometry)
from tuscany_net
where nodefrom = 154348
and nodeto = 130324 limit 1
あなたはルート上の点の緯度/経度を抽出するために使用することができ、このようなものを取得します
LINESTRING(11.138376 42.739078, 11.137961 42.738531,
11.13765 42.738001, 11.137428 42.737463, 11.136459 42.734198,
11.136129 42.733111, 11.135814 42.732221, 11.135666 42.732069,
11.135485 42.731948, 11.135242 42.731884, 11.134913 42.731891,
...)
あなたが旧姓ます与えられた緯度/経度のためのNODE_IDを取得するには質問2
dを実行してノードテーブル(この例ではtuscany_nodes
)に対してクエリを実行します。ノード表にノードを表すポイント(ジオメトリ)が含まれているため、最良の方法は、from
およびto
ノードを取得するために空間問合せを実行することです。たとえば、st_distance関数を使用して、ターゲットポイントまでの距離よりも近いノードを取得することができます(here you can find the SQL functions reference list for SpatiaLite 4.2.0):
select node_id
from tuscany_nodes
where st_distance(Geometry, makepoint(9.69561, 44.44792), 1) < 10