1. 这是一个gps 数据过滤的小工具,目的是过滤到gps数据中不符合要求的数据,然后转为json 数据
需要两个小工具
bermuda.c ------> 过滤一定范围的数据
geo2json.c ------> 将gps 数据转换成json 格式
指的注意的是 需要在这两个文件的可执行文件中间建立连接管道
先看 bermuda.c 的代码
#include <stdio.h> int main() { float latitude; float longitude; char info[80]; while (scanf("%f,%f,%79[^\n]",&latitude,&longitude,info) == 3) { if (latitude > 26 && latitude < 34) { if (longitude > -76 && longitude < -64) { printf("%f,%f,%s\n",latitude,longitude,info); } } } return 0; }
再看geo2json.c 的代码
#include <stdio.h> int main() { float latitude; float longitude; char info[80]; int started = 0; puts("data=[");
while (scanf("%f,%f,%79[^\n]",&latitude,&longitude,info) == 3) { if (started) printf(",\n"); else started = 1; if (latitude < -90.0 || latitude > 90.0) { // stderr 是标准错误输出,一旦发生错误,不会把错误输入到标准输出的文件中,而是输出到前台 fprintf(stderr, "Invalid latitude: %f\n",latitude); return 2; } if (longitude < -180.0 || longitude > 180.0) { fprintf(stderr, "Invalid longitude: %f\n",longitude); return 2; } printf("latitude: %f, longitude : %f, info: ‘%s‘",latitude,longitude,info); } puts("\n]"); return 0; }
使用终端 进到 这两个文件的目录下,执行命令 编译成可执行文件
gcc bermuda.c -o bermuda gcc geo2json.c -o geo2json
然后 建立管道 传入 数据输入文件 到处到文件中outpu.json
(./bermuda | ./geo2json) <spooky.csv> output.json
输入文件 spooky.csv 的文件内容是
30.685163,-68.137207,Type=Yeti 28.304380,-74.575195,Type=UFO 29.132971,-71.136475,Type=Ship 28.343065,-62.753906,Type=Elvis 27.868217,-68.005371,Type=Goatsucker 30.496017,-73.333740,Type=Disappearance 26.224447,-71.477051,Type=UFO 29.401320,-66.027832,Type=Ship 37.879536,-69.477539,Type=Elvis 22.705256,-68.192139,Type=Elvis 27.166695,-87.484131,Type=Elvis
最终输出文件outpu.json 的内容是
data = [ latitude: 30.685163, longitude : -68.137207, info: ‘Type=Yeti‘, latitude: 28.304380, longitude : -74.575195, info: ‘Type=UFO‘, latitude: 29.132971, longitude : -71.136475, info: ‘Type=Ship‘, latitude: 27.868217, longitude : -68.005371, info: ‘Type=Goatsucker‘, latitude: 30.496017, longitude : -73.333740, info: ‘Type=Disappearance‘, latitude: 26.224447, longitude : -71.477051, info: ‘Type=UFO‘, latitude: 29.401320, longitude : -66.027832, info: ‘Type=Ship‘ ]
时间: 2024-10-13 17:35:56