Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 向数据库发送更多结果_Bash_Sqlite_Openstreetmap - Fatal编程技术网

Bash 向数据库发送更多结果

Bash 向数据库发送更多结果,bash,sqlite,openstreetmap,Bash,Sqlite,Openstreetmap,我有一个奇怪的要求。我需要查询gosmore并将结果保存到sqlite数据库,这听起来很简单,但格式并不是那么简单。其想法是将其保存为二进制blob(二进制浮点表示中的lat、lon对),并计算途中的时间和距离。它必须在bash中完成,因此这实际上是一个棘手的部分。您可能知道,gosmore的结果如下所示: Content-Type: text/plain 52.454918,16.953721,J,residential,675,Rubież 52.454502,16.953466,J,re

我有一个奇怪的要求。我需要查询gosmore并将结果保存到sqlite数据库,这听起来很简单,但格式并不是那么简单。其想法是将其保存为二进制blob(二进制浮点表示中的lat、lon对),并计算途中的时间和距离。它必须在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
...
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列是纬度。 第2列是经度。 第5列是从上一点算起的时间

我需要将其放置到的表如下所示:

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
...
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...');
距离
列包含点之间的距离总和,单位为公里。点之间的距离是使用。如果有更好更快的方法,我也会采纳这方面的建议


RoutePoints
列是每个航路点(lat、lon)的blob表示形式,包含成对的浮点值(每个值4个字节,十六进制字符串8个字符)

请显示您的示例数据在目标表中的外观。嗯,为什么是bash?时间秒从何而来?持续时间取决于距离之外的各种因素,例如速度限制。每一行与我在上面写的第5列的前一行相比都有一个时间,所以它只需要求和,对于bash……为什么不呢?我对这台机器的访问权限非常有限,所以bash seam是一个合理的选择。但我不排除perl或python。到目前为止,您尝试了什么?迭代每一行,同时存储前一行中感兴趣的字段,以便以后访问它们,这并不是什么大问题。你们被困在哪里?我被困在计算点之间的距离和用十六进制字符串表示点上。但我们必须以任何方式快速完成,所以我为gosmore编写了一个补丁,添加了新的输出格式。这个问题仍然是一个练习。可以在bash:D中实现吗