我有一个奇怪的要求。我需要查询gosmore并将结果保存到sqlite数据库,听起来很简单,但格式没那么简单。这个想法是将其保存为二进制 blob(二进制浮点表示中的纬度、经度对)并在途中计算时间和距离。它必须在 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
列包含点之间的距离总和,以公里为单位。使用大圆距离公式计算点之间的距离。如果有更好更快的方法,我也会在这方面提出建议。
RoutePoints
列将每个航路点(纬度、经度)表示为包含浮点值对的 blob(每个值 4 个字节,十六进制字符串中的 8 个字符)