変なお願いがあります。gosmore にクエリを実行し、結果を sqlite データベースに保存する必要があります。単純に聞こえますが、形式はそれほど単純ではありません。アイデアは、これをバイナリ ブロブ (バイナリ浮動小数点表現の緯度と経度のペア) として保存し、途中で時間と距離を計算することです。これは bash で行う必要があるため、実際には注意が必要な部分です。ご存じのとおり、gosmore の結果は次のようになります。
Content-Type: text/plain
52.454918,16.953721,J,residential,675,Rubież
52.454502,16.953466,J,residential,665,Bronisza
52.454577,16.947981,J,residential,620,Bronisza
52.454577,16.947885,J,secondary,616,Naramowicka
52.453985,16.947880,J,secondary,610,Naramowicka
52.453596,16.947877,J,secondary,606,Naramowicka
52.453140,16.947873,J,secondary,601,Naramowicka
52.453031,16.947872,j,secondary,601,Naramowicka
52.452947,16.947871,J,secondary,598,Naramowicka
52.452869,16.947871,J,secondary,596,Naramowicka
52.452169,16.947836,J,secondary,592,Naramowicka
52.452119,16.947834,J,secondary,591,Naramowicka
52.452098,16.947833,j,secondary,591,Naramowicka
52.451817,16.947819,j,secondary,589,Naramowicka
52.451746,16.947817,J,secondary,587,Naramowicka
...
列 1 は緯度です。列 2 は経度です。列 5 は、前のポイントからの時間です。
配置する必要があるテーブルは次のようになります。
CREATE TABLE "Route" (
"StartLatitude" float NOT NULL,
"StartLongitude" float NOT NULL,
"EndLatitude" float NOT NULL,
"EndLongitude" float NOT NULL,
"TimeSeconds" int,
"Distance" float,
"RoutePoints" blob,
CONSTRAINT "pk_Route" PRIMARY KEY ("StartLatitude", "StartLongitude", "EndLatitude", "EndLongitude")
)
あなたがこれを解決してくれるとは思いませんが、正しい方向に向けてくれるかもしれません。
編集1:
@CL: これは次のようになります。
INSERT INTO "Route" VALUES(52.454918, 16.953721, 52.451796, 16.947887, 3600, 5.982, X'D6D1514238A18741...');
Distance
列には、ポイント間の距離の合計 (キロメートル) が含まれます。ポイント間の距離は、 Great Circle Distance Formulaを使用してカウントされます。より良い、より速い方法があれば、その点についても提案します。
RoutePoints
列は、float 値のペアを含む blob としての各ウェイポイント (lat、lon) の表現です (値ごとに 4 バイト、HEX 文字列で 8 文字)