diff options
Diffstat (limited to 'navit/tools/gpx2navit_txt/src/setpath.c')
-rw-r--r-- | navit/tools/gpx2navit_txt/src/setpath.c | 198 |
1 files changed, 95 insertions, 103 deletions
diff --git a/navit/tools/gpx2navit_txt/src/setpath.c b/navit/tools/gpx2navit_txt/src/setpath.c index 3642415a8..6350f4e1f 100644 --- a/navit/tools/gpx2navit_txt/src/setpath.c +++ b/navit/tools/gpx2navit_txt/src/setpath.c @@ -21,7 +21,7 @@ void initPathAttr(pathattr * pattr, g2sattr * attr); void setEdge(parsedata * pdata, double _x, double _y, double _z, - double length, double interval, double speed); + double length, double interval, double speed); void setPathInterval(parsedata * pdata); void setPathData(pathattr * pattr, g2sattr * attr); void countUnconverted(parsedata * pdata); @@ -34,8 +34,7 @@ void setPath( parsedata * pdata); /** * initialize a path attribute */ -void initPathAttr(pathattr * pattr, g2sattr * attr) -{ +void initPathAttr(pathattr * pattr, g2sattr * attr) { strcpy(pattr->name, attr->name); strcpy(pattr->cmt, attr->cmt); strcpy(pattr->desc, attr->desc); @@ -55,21 +54,20 @@ void initPathAttr(pathattr * pattr, g2sattr * attr) * set edge data and store it */ void setEdge(parsedata * pdata, double _x, double _y, double _z, - double length, double interval, double speed) -{ + double length, double interval, double speed) { pathattr *pattr = pdata->pattr; static int isFirstTrkAsEdge = 1; static int isFirstRteAsEdge = 1; double x[2], y[2], z[2]; double _length, _interval, _speed; if (!strcmp(pdata->current->name, "trkpt")) { - if (isFirstTrkAsEdge) { - isFirstTrkAsEdge = 0; - } + if (isFirstTrkAsEdge) { + isFirstTrkAsEdge = 0; + } } else { - if (isFirstRteAsEdge) { - isFirstRteAsEdge = 0; - } + if (isFirstRteAsEdge) { + isFirstRteAsEdge = 0; + } } _length = pattr->length; _interval = pattr->interval; @@ -94,8 +92,7 @@ void setEdge(parsedata * pdata, double _x, double _y, double _z, /** * sets interval data between two track points */ -void setPathInterval(parsedata * pdata) -{ +void setPathInterval(parsedata * pdata) { pathattr *pattr = pdata->pattr; g2sattr *attr = pdata->attr; g2sprop *prop = pdata->prop; @@ -105,21 +102,21 @@ void setPathInterval(parsedata * pdata) double leng = 0; double spd; if (pattr->count == 1) { - strcpy(_t, attr->time); + strcpy(_t, attr->time); } else { - /* time interval */ - intvl = getTimeInterval(_t, attr->time); - pattr->interval = pattr->interval + intvl; - strcpy(_t, attr->time); - /* length interval */ - leng = getDistance(_x, _y, attr->lon, attr->lat); - pattr->length = pattr->length + leng; - /* interval speed */ - spd = getSpeed(leng, intvl, prop->speed2meter, prop->speed2sec); - /* sets edge data */ - if (prop->isEdge) { - setEdge(pdata, _x, _y, _z, leng, intvl, spd); - } + /* time interval */ + intvl = getTimeInterval(_t, attr->time); + pattr->interval = pattr->interval + intvl; + strcpy(_t, attr->time); + /* length interval */ + leng = getDistance(_x, _y, attr->lon, attr->lat); + pattr->length = pattr->length + leng; + /* interval speed */ + spd = getSpeed(leng, intvl, prop->speed2meter, prop->speed2sec); + /* sets edge data */ + if (prop->isEdge) { + setEdge(pdata, _x, _y, _z, leng, intvl, spd); + } } _x = attr->lon; _y = attr->lat; @@ -129,16 +126,15 @@ void setPathInterval(parsedata * pdata) /** * sets each track point data in array. */ -void setPathData(pathattr * pattr, g2sattr * attr) -{ +void setPathData(pathattr * pattr, g2sattr * attr) { const int reallocsize = 100; if (pattr->count == 0) { - pattr->point = malloc(sizeof(double) * 3 * reallocsize); + pattr->point = malloc(sizeof(double) * 3 * reallocsize); } if ((pattr->count % reallocsize) == 0) { - pattr->point = realloc(pattr->point, - sizeof(double) * 3 * (pattr->count + - reallocsize)); + pattr->point = realloc(pattr->point, + sizeof(double) * 3 * (pattr->count + + reallocsize)); } pattr->point[pattr->count * 3] = attr->lon; pattr->point[pattr->count * 3 + 1] = attr->lat; @@ -149,72 +145,69 @@ void setPathData(pathattr * pattr, g2sattr * attr) /** * counts paths that wasn't converted */ -void countUnconverted(parsedata * pdata) -{ +void countUnconverted(parsedata * pdata) { g2sstats *stats = pdata->prop->stats; if (!strcmp(pdata->current->name, "trkseg")) - stats->trkunconverted++; + stats->trkunconverted++; else - stats->rteunconverted++; + stats->rteunconverted++; } /** - * counts paths + * counts paths */ -void countPath(parsedata * pdata) -{ +void countPath(parsedata * pdata) { g2sstats *stats = pdata->prop->stats; pathattr *pattr = pdata->pattr; if (!strcmp(pdata->current->name, "trkseg")) { - stats->trkcount++; - stats->trklength += pattr->length; - stats->trkpoints += pattr->count; + stats->trkcount++; + stats->trklength += pattr->length; + stats->trkpoints += pattr->count; } else { - stats->rtecount++; - stats->rtelength += pattr->length; - stats->rtepoints += pattr->count; + stats->rtecount++; + stats->rtelength += pattr->length; + stats->rtepoints += pattr->count; } } -int checkPath(parsedata * pdata) -{ +int checkPath(parsedata * pdata) { pathattr *pattr = pdata->pattr; g2sprop *prop = pdata->prop; /* check point count. */ if (pattr->count < prop->minpoints) { - fprintf - (stderr, - "gpx2navit_txt:%s:%i track was not converted because of less then %d points. \n", - prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser), - prop->minpoints); - countUnconverted(pdata); - return 0; - /* check path length */ + fprintf + (stderr, + "gpx2navit_txt:%s:%i track was not converted because of less then %d points. \n", + prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser), + prop->minpoints); + countUnconverted(pdata); + return 0; + /* check path length */ } else if (pattr->length < prop->minlength * prop->length2meter) { - fprintf - (stderr, - "gpx2navit_txt:%s:%i track was not converted because it is shorter than %dm.\n", - prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser), - prop->minlength); - countUnconverted(pdata); - return 0; - /* check path time */ + fprintf + (stderr, + "gpx2navit_txt:%s:%i track was not converted because it is shorter than %dm.\n", + prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser), + prop->minlength); + countUnconverted(pdata); + return 0; + /* check path time */ } else if (pattr->interval < prop->mintime * prop->time2sec) { - fprintf - (stderr, - "gpx2navit_txt:%s:%i track was not converted because it is shorter than %d sed.\n", - prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser), - prop->mintime); - countUnconverted(pdata); - return 0; - /* check path speed */ + fprintf + (stderr, + "gpx2navit_txt:%s:%i track was not converted because it is shorter than %d sed.\n", + prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser), + prop->mintime); + countUnconverted(pdata); + return 0; + /* check path speed */ } else if (!prop->nospeedcheck && pattr->speed == .0) { - fprintf - (stderr, - "gpx2navit_txt:%s:%i track was not converted because no move recorded. Use --no-speed-check option to bypass this check.\n", - prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser)); - countUnconverted(pdata); - return 0; + fprintf + (stderr, + "gpx2navit_txt:%s:%i track was not converted because no move recorded. Use --no-speed-check option to bypass this check.\n", + prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser)); + countUnconverted(pdata); + return 0; } return 1; } @@ -222,39 +215,38 @@ int checkPath(parsedata * pdata) /** * saves path data into files. */ -void setPath( parsedata * pdata) -{ +void setPath( parsedata * pdata) { pathattr *pattr = pdata->pattr; g2sprop *prop = pdata->prop; int isOk = 0; pattr->speed = - getSpeed(pattr->length, pattr->interval, prop->speed2meter, - prop->speed2sec); + getSpeed(pattr->length, pattr->interval, prop->speed2meter, + prop->speed2sec); if (prop->isFast) { - isOk = 1; + isOk = 1; } else { - isOk = checkPath(pdata); + isOk = checkPath(pdata); } if (isOk) { - double x[pattr->count]; - double y[pattr->count]; - double z[pattr->count]; - int i; - fprintf(pdata->fp,"type=track label=\"%s\" desc=\"%s\" type=\"%s\"\ length=\"%5.3f\" count=\"%5d\"\n" - ,pdata->pattr->name,pdata->pattr->desc, - pdata->pattr->type,pdata->pattr->length, - pdata->pattr->count); - - for (i = 0; i < pattr->count; i++) { - x[i] = pattr->point[i * 3]; - y[i] = pattr->point[i * 3 + 1]; - z[i] = pattr->point[i * 3 + 2]; - fprintf(pdata->fp,"%3.6f %4.6f\n",x[i],y[i]); - } - if (pdata->prop->is3d) { - } else { - } - countPath(pdata); + double x[pattr->count]; + double y[pattr->count]; + double z[pattr->count]; + int i; + fprintf(pdata->fp,"type=track label=\"%s\" desc=\"%s\" type=\"%s\"\ length=\"%5.3f\" count=\"%5d\"\n" + ,pdata->pattr->name,pdata->pattr->desc, + pdata->pattr->type,pdata->pattr->length, + pdata->pattr->count); + + for (i = 0; i < pattr->count; i++) { + x[i] = pattr->point[i * 3]; + y[i] = pattr->point[i * 3 + 1]; + z[i] = pattr->point[i * 3 + 2]; + fprintf(pdata->fp,"%3.6f %4.6f\n",x[i],y[i]); + } + if (pdata->prop->is3d) { + } else { + } + countPath(pdata); } free(pattr->point); } |