将GPS数据保存到SD卡中,是一件比较容易的事情,用C语言实现文件保存即可,很多基于单片机方案的GPS产品大都能实现这个功能。但如果要实现直接存贮为GOOGLE MAP能识别的KML格式,则相对来讲要麻烦得多。网上很多方案由于受自身方案的限制,都需要在PC端运行一个转换软件,将GPS轨迹文件进行转换之后才能在GOOGLE地球或地图上显示其轨迹。这对普通用户来说非常不方便,在DVR端直接生成KML格式的轨迹文件,就要省事很多。
KML格式现在已经成了一个国际标准,实际就是XML语言的一个应用而已。在PC端实现XML文件格式的解析非常简单,C#提供了专门的API函数,直接调用就好,但要用纯C语言在嵌入式系统上实现,就要花点功夫,因为目前还没有发现比较合适的范例。网上有C写的XML的LIB文件,但移植编译相当麻烦。本人以前做过图象识别相关的工作,对OPENCV有深入的研究,OPENCV有专门的XML解析部分,而且是开源的,移植起来非常方便。在ZORAN COACH平台上花了几天时间就完成了KML的文件解析和生成。在录象的同时通过UART口将GPS数据实时保存为KML格式的轨迹文件。下面是示例程序
void
KML_Save(char* filename,CvSeq* seq)
{
CvFileStorage* fs = 0;
int i = 0;
fs = cvOpenFileStorage( filename, 0, CV_STORAGE_WRITE );
if( !fs )
{
printf("Could not open the file storage!/n" );
return;
}
for(i = 0;i<seq->total