navit  0.5.3-trunk
gpx2navit_txt.h
Go to the documentation of this file.
1 
20 #ifndef GPX2SHP_H_INCLUDED
21 #define GPX2SHP_H_INCLUDED
22 
23 #define PROG gpx2navit_txt
24 #define FILENAMELENGTH 255 /* 255 is max length for dbf string column */
25 #define COMMENTLENGTH 255 /* 255 is max length for dbf string column */
26 #define NAMELENGTH 32
27 #define TIMELENGTH 32
28 #define TYPELENGTH 16
29 #define BUFFSIZE 8192
30 #define DATABUFSIZE 16
31 #define failToWriteAttr(S, T) failToWriteAttrRep((S), (T),__FILE__, __LINE__ )
32 
33 #include <stdio.h>
34 #include <string.h>
35 #include <ctype.h>
36 #include <stdlib.h>
37 #include <unistd.h>
38 #include <libgen.h>
39 #include <getopt.h>
40 #include <time.h>
41 #include <assert.h>
42 #include <expat.h>
43 #include "errorcode.h"
44 //#include "shapefil.h"
45 
46 
47 #define DEBUG 0
51 typedef struct parent {
52  char *name;
53  struct parent *parentptr;
56 
60 typedef struct g2scolumns {
64  int name;
65  int cmt;
66  int desc;
67  int src;
68  int link;
69  int type;
70  int time;
71  int number;
72  int ele;
73  int magvar;
75  int sym;
76  int fix;
77  int sat;
78  int hdop;
79  int vdop;
80  int pdop;
82  int dgpsid;
83  int length;
84  int interval;
85  int speed;
86  int points;
87  int gpxline;
89 
93 typedef struct pathattr {
99  int number;
101  double length;
102  double interval;
103  double speed;
104  /*
105  double *x;
106  double *y;
107  double *z;
108  */
109  double *point;
110  int count;
112 
116 typedef struct g2sattr {
120  double lon;
121  double lat;
122  double minlon;
123  double minlat;
124  double maxlon;
125  double maxlat;
133  int number;
134  double ele;
135  double magvar;
136  double geoidheight;
139  int sat;
140  double hdop;
141  double vdop;
142  double pdop;
144  int dgpsid;
148  int year;
151 
155 typedef struct g2sstats {
156  int trkpoints;
157  int trkcount;
158  double trklength;
159  int rtepoints;
160  int rtecount;
161  double rtelength;
162  int wptpoints;
166 
170 //typedef struct dbfhandles {
171 // DBFHandle trk; /** for track */
172 // DBFHandle wpt; /** for waypoint */
173 // DBFHandle rte; /** for route */
174 // DBFHandle trk_edg; /** for track each edge */
175 // DBFHandle trk_pnt; /** for track each point */
176 // DBFHandle rte_edg; /** for route each edge */
177 // DBFHandle rte_pnt; /** for route each point */
178 //} dbfhandles;
179 
183 //typedef struct shphandles {
184 // SHPHandle trk; /** for track */
185 // SHPHandle wpt; /** for waypoint */
186 // SHPHandle rte; /** for route */
187 // SHPHandle trk_edg; /** for track each edge */
188 // SHPHandle trk_pnt; /** for track each point */
189 // SHPHandle rte_edg; /** for route each edge */
190 // SHPHandle rte_pnt; /** for route each point */
191 //} shphandles;
192 
196 typedef struct g2sprop {
197  int parseWpt;
198  int parseTrk;
199  int parseRte;
200  int is3d;
201  int isEdge;
202  int isPoint;
203  int isFast;
205  int minpoints;
206  int minlength;
207  int mintime;
208  int verbose;
209  char *sourcefile;
210  char *output;
211  char *ellipsoid;
212  char *lengthUnit;
213  double length2meter;
214  char *timeUnit;
215  double time2sec;
218  double speed2meter;
220  int speed2sec;
225 
229 typedef struct parsedata {
230  int depth;
231  char *databuf;
232  char *bufptr;
233  int failed;
234  int failedid;
235  XML_Parser parser;
238  FILE *fp;
239 // shphandles *shps; /** .shp file cluster that is used in this program */
240 // dbfhandles *dbfs; /** .dbf file cluster that is used in this program */
245 
246 /* utils.c */
247 void checkEllpsUnit(char *unit);
248 double checkLengthUnit(char *unit);
249 int checkTimeUnit(char *unit);
250 double getTimeInterval(char *_t, char *t);
251 double getSpeed(double length, double ti, double to_meter, int to_sec);
252 double getDistance(double _x, double _y, double x, double y);
253 //void closeShpFiles(shphandles * shps);
254 //void closeDbfFiles(dbfhandles * dbfs);
255 void *myMallocRep(size_t size, const char *fileName, int line);
256 
257 /* misc.c */
258 void failToWriteAttrRep(int iShape, int col, char *file, int line);
259 void showStats(g2sprop * prop);
260 void wipePathAttr(pathattr * pattr);
261 pathattr *createPathAttr(void);
262 void wipeAttr(g2sattr * attr);
263 void setColsDefault(g2scolumns * cols);
264 g2scolumns *createCols(void);
265 g2sattr *createAttr(void);
266 g2sprop *createProp(void);
267 void closeProp(g2sprop * prop);
268 //shphandles *createShps(void);
269 //dbfhandles *createDbfs(void);
270 parsedata *createParsedata(XML_Parser parser, g2sprop * prop);
271 void closeParsedata(parsedata * pdata);
272 
273 /* parser.c */
274 void parseMain(g2sprop * pr);
275 
276 /* elementControl.c */
277 void startElementControl(parsedata * pdata, const char *element,
278  const char **attr);
279 void endElementControl(parsedata * pdata, const char *element);
280 
281 /* setwpt.c */
282 void setWpt( parsedata * pdata);
283 
284 /* setpath.c */
285 void initPathAttr(pathattr * pattr, g2sattr * attr);
286 void setPathInterval(parsedata *pdata);
287 void setPathData(pathattr * parrt, g2sattr * attr);
288 void setPath( parsedata * pdata);
289 
290 /* setmetadata.c */
291 void setMetadata(parsedata * pdata);
292 
293 #endif
int length
Definition: garmin_img.c:1
int size
Definition: garmin_img.c:3
GEOD_EXTERN double to_meter
Definition: geodesic.h:61
void setWpt(parsedata *pdata)
Definition: setwpt.c:27
void * myMallocRep(size_t size, const char *fileName, int line)
void closeProp(g2sprop *prop)
Definition: misc.c:260
double checkLengthUnit(char *unit)
Definition: utils.c:59
g2sprop * createProp(void)
Definition: misc.c:218
int checkTimeUnit(char *unit)
Definition: utils.c:87
void setPathInterval(parsedata *pdata)
Definition: setpath.c:95
void failToWriteAttrRep(int iShape, int col, char *file, int line)
Definition: misc.c:40
void setPath(parsedata *pdata)
Definition: setpath.c:218
void wipeAttr(g2sattr *attr)
Definition: misc.c:128
g2scolumns * createCols(void)
Definition: misc.c:198
struct g2sstats g2sstats
double getDistance(double _x, double _y, double x, double y)
Definition: utils.c:156
g2sattr * createAttr(void)
Definition: misc.c:208
double getTimeInterval(char *_t, char *t)
Definition: utils.c:105
#define TIMELENGTH
Definition: gpx2navit_txt.h:27
void checkEllpsUnit(char *unit)
Definition: utils.c:35
#define NAMELENGTH
Definition: gpx2navit_txt.h:26
struct g2scolumns g2scolumns
void endElementControl(parsedata *pdata, const char *element)
Definition: elementControl.c:96
#define COMMENTLENGTH
Definition: gpx2navit_txt.h:25
parsedata * createParsedata(XML_Parser parser, g2sprop *prop)
Definition: misc.c:310
struct parent parent
void showStats(g2sprop *prop)
Definition: misc.c:48
void setMetadata(parsedata *pdata)
Definition: setmeta.c:25
void setColsDefault(g2scolumns *cols)
Definition: misc.c:168
#define FILENAMELENGTH
Definition: gpx2navit_txt.h:24
struct parsedata parsedata
void closeParsedata(parsedata *pdata)
Definition: misc.c:342
void wipePathAttr(pathattr *pattr)
Definition: misc.c:100
pathattr * createPathAttr(void)
Definition: misc.c:118
struct pathattr pathattr
void parseMain(g2sprop *pr)
Definition: parser.c:110
struct g2sprop g2sprop
struct g2sattr g2sattr
double getSpeed(double length, double ti, double to_meter, int to_sec)
Definition: utils.c:131
void startElementControl(parsedata *pdata, const char *element, const char **attr)
Definition: elementControl.c:30
#define TYPELENGTH
Definition: gpx2navit_txt.h:28
void initPathAttr(pathattr *pattr, g2sattr *attr)
Definition: setpath.c:37
void setPathData(pathattr *parrt, g2sattr *attr)
Definition: setpath.c:129
Definition: attr.h:157
Definition: layout.h:36
Definition: file.h:36
Definition: gpx2navit_txt.h:116
char src[COMMENTLENGTH]
Definition: gpx2navit_txt.h:129
char type[TYPELENGTH]
Definition: gpx2navit_txt.h:131
char sym[NAMELENGTH]
Definition: gpx2navit_txt.h:137
int dgpsid
Definition: gpx2navit_txt.h:144
double vdop
Definition: gpx2navit_txt.h:141
double ageofdgpsdata
Definition: gpx2navit_txt.h:143
double maxlat
Definition: gpx2navit_txt.h:125
char link[FILENAMELENGTH]
Definition: gpx2navit_txt.h:130
double ele
Definition: gpx2navit_txt.h:134
char author[NAMELENGTH]
Definition: gpx2navit_txt.h:145
char fix[NAMELENGTH]
Definition: gpx2navit_txt.h:138
int number
Definition: gpx2navit_txt.h:133
double minlon
Definition: gpx2navit_txt.h:122
double maxlon
Definition: gpx2navit_txt.h:124
char cmt[COMMENTLENGTH]
Definition: gpx2navit_txt.h:127
char time[TIMELENGTH]
Definition: gpx2navit_txt.h:132
double pdop
Definition: gpx2navit_txt.h:142
char desc[COMMENTLENGTH]
Definition: gpx2navit_txt.h:128
double hdop
Definition: gpx2navit_txt.h:140
char keywords[NAMELENGTH]
Definition: gpx2navit_txt.h:146
char name[NAMELENGTH]
Definition: gpx2navit_txt.h:126
char copyright[NAMELENGTH]
Definition: gpx2navit_txt.h:147
int year
Definition: gpx2navit_txt.h:148
int sat
Definition: gpx2navit_txt.h:139
double geoidheight
Definition: gpx2navit_txt.h:136
char license[NAMELENGTH]
Definition: gpx2navit_txt.h:149
double magvar
Definition: gpx2navit_txt.h:135
double minlat
Definition: gpx2navit_txt.h:123
double lat
Definition: gpx2navit_txt.h:121
double lon
Definition: gpx2navit_txt.h:120
Definition: gpx2navit_txt.h:60
int geoidheight
Definition: gpx2navit_txt.h:74
int desc
Definition: gpx2navit_txt.h:66
int hdop
Definition: gpx2navit_txt.h:78
int magvar
Definition: gpx2navit_txt.h:73
int ageofdgpsdata
Definition: gpx2navit_txt.h:81
int ele
Definition: gpx2navit_txt.h:72
int sat
Definition: gpx2navit_txt.h:77
int fix
Definition: gpx2navit_txt.h:76
int dgpsid
Definition: gpx2navit_txt.h:82
int interval
Definition: gpx2navit_txt.h:84
int vdop
Definition: gpx2navit_txt.h:79
int gpxline
Definition: gpx2navit_txt.h:87
int pdop
Definition: gpx2navit_txt.h:80
int length
Definition: gpx2navit_txt.h:83
int points
Definition: gpx2navit_txt.h:86
int type
Definition: gpx2navit_txt.h:69
int number
Definition: gpx2navit_txt.h:71
int name
Definition: gpx2navit_txt.h:64
int cmt
Definition: gpx2navit_txt.h:65
int link
Definition: gpx2navit_txt.h:68
int src
Definition: gpx2navit_txt.h:67
int speed
Definition: gpx2navit_txt.h:85
int sym
Definition: gpx2navit_txt.h:75
int time
Definition: gpx2navit_txt.h:70
Definition: gpx2navit_txt.h:196
int isFast
Definition: gpx2navit_txt.h:203
int nospeedcheck
Definition: gpx2navit_txt.h:223
int minpoints
Definition: gpx2navit_txt.h:205
g2sstats * stats
Definition: gpx2navit_txt.h:221
char * timeUnit
Definition: gpx2navit_txt.h:214
char * ellipsoid
Definition: gpx2navit_txt.h:211
int isEdge
Definition: gpx2navit_txt.h:201
char * lengthUnit
Definition: gpx2navit_txt.h:212
int minlength
Definition: gpx2navit_txt.h:206
int needsStats
Definition: gpx2navit_txt.h:204
int speed2sec
Definition: gpx2navit_txt.h:220
char * speedTimeUnit
Definition: gpx2navit_txt.h:219
int mintime
Definition: gpx2navit_txt.h:207
int parseRte
Definition: gpx2navit_txt.h:199
double length2meter
Definition: gpx2navit_txt.h:213
g2scolumns * cols
Definition: gpx2navit_txt.h:222
char * speedLengthUnit
Definition: gpx2navit_txt.h:216
int is3d
Definition: gpx2navit_txt.h:200
double time2sec
Definition: gpx2navit_txt.h:215
int parseWpt
Definition: gpx2navit_txt.h:197
int verbose
Definition: gpx2navit_txt.h:208
char * output
Definition: gpx2navit_txt.h:210
char * sourcefile
Definition: gpx2navit_txt.h:209
int isPoint
Definition: gpx2navit_txt.h:202
int parseTrk
Definition: gpx2navit_txt.h:198
double speed2meter
Definition: gpx2navit_txt.h:218
Definition: gpx2navit_txt.h:155
int rteunconverted
Definition: gpx2navit_txt.h:164
int rtepoints
Definition: gpx2navit_txt.h:159
int trkunconverted
Definition: gpx2navit_txt.h:163
double rtelength
Definition: gpx2navit_txt.h:161
int trkcount
Definition: gpx2navit_txt.h:157
int rtecount
Definition: gpx2navit_txt.h:160
double trklength
Definition: gpx2navit_txt.h:158
int trkpoints
Definition: gpx2navit_txt.h:156
int wptpoints
Definition: gpx2navit_txt.h:162
Definition: gpx2navit_txt.h:51
char * name
Definition: gpx2navit_txt.h:52
struct parent * parentptr
Definition: gpx2navit_txt.h:53
Definition: gpx2navit_txt.h:229
char * bufptr
Definition: gpx2navit_txt.h:232
int failedid
Definition: gpx2navit_txt.h:234
parent * parent
Definition: gpx2navit_txt.h:236
g2sprop * prop
Definition: gpx2navit_txt.h:243
XML_Parser parser
Definition: gpx2navit_txt.h:235
int failed
Definition: gpx2navit_txt.h:233
pathattr * pattr
Definition: gpx2navit_txt.h:242
int depth
Definition: gpx2navit_txt.h:230
g2sattr * attr
Definition: gpx2navit_txt.h:241
char * databuf
Definition: gpx2navit_txt.h:231
FILE * fp
Definition: gpx2navit_txt.h:238
parent * current
Definition: gpx2navit_txt.h:237
Definition: gpx2navit_txt.h:93
double interval
Definition: gpx2navit_txt.h:102
char type[TYPELENGTH]
Definition: gpx2navit_txt.h:100
char link[FILENAMELENGTH]
Definition: gpx2navit_txt.h:98
char cmt[COMMENTLENGTH]
Definition: gpx2navit_txt.h:95
char src[COMMENTLENGTH]
Definition: gpx2navit_txt.h:97
int number
Definition: gpx2navit_txt.h:99
char name[NAMELENGTH]
Definition: gpx2navit_txt.h:94
double * point
Definition: gpx2navit_txt.h:109
double speed
Definition: gpx2navit_txt.h:103
char desc[COMMENTLENGTH]
Definition: gpx2navit_txt.h:96
int count
Definition: gpx2navit_txt.h:110
double length
Definition: gpx2navit_txt.h:101