嵌入式GIS是GIS发展的一个新的方向.docx
《嵌入式GIS是GIS发展的一个新的方向.docx》由会员分享,可在线阅读,更多相关《嵌入式GIS是GIS发展的一个新的方向.docx(12页珍藏版)》请在冰豆网上搜索。
嵌入式GIS是GIS发展的一个新的方向
嵌入式GIS是GIS发展的一个新的方向。
市场前景广泛。
利用嵌入式系统体积小携带方便的特点。
在很多行业都有发展前途。
小弟从研究生学生时代即开始作这方面的工作。
有点体会,放上来和大家共享。
系统已经从底层开发了快3年了。
最近大部分的功能都已经实现了。
包括开发的数据格式(shape文件)、遥感图像的支持、GPS、点线面的勾画都已经完成。
发几张图片和大家共享。
有兴趣的可以联系我。
email:
cyg_gis@
嵌入式GIS是同其它软件相同,都是一种应用软件。
也就是说离不开系统平台的支持。
嵌入式系统现在主要有以下几种:
(1)WindowsCE.开发工具主要有EVC,VC++2005,.NETCF,Java.开发GUI主要用MFC,WTL和.NETCF.因为有良好的开发工具支持,在所有的平台当中是最简单的平台。
(2)Symbian:
是由Nokia为主的一个操作系统,现在在市场上占有的份额最多。
开发工具是C++,和Java.开发工具支持不是很好,系统的调试很麻烦。
(3)eLinux:
是免费的系统。
开发工具主要是c++和Java.GUI有QT,gdk还有我们国内的miniGUI.
(3)Palm:
是原来嵌入式操作系统的老大。
但风光不在市场在下滑。
最近刚被日本的ACCESS收购。
开发很麻烦。
运行嵌入式GIS还是有点问题。
已经是第三篇嵌入式GIS的内容。
这次小弟结合这几年来的经验谈谈嵌入式GIS开发的一些关键问题。
不论在何种平台(WindowsCE,eLinux,Symbian,Plam).嵌入式GIS开发的最大问题是“资源受限”。
内存不足,处理能力太弱,屏幕太小,开发工具支持不够等等。
一系列问题。
所以开发嵌入式GIS系统的关键是,代码要小巧精干,各方面的开销要小。
如在进行加载矢量数据和影像数据的时候,要尽量采用”索引“机制。
呵呵,看来大学时候的《数据结构》可不是白学的,当然各种“树”的使用要用上了。
这是系统最关键的一环。
因为系统是小弟从底层做起,感慨很多。
最近一直想办法推广。
因为一个产品一个东西是不是成功是要让它去到市场去使用,而不是坐在家里说如何如何的高级。
现在在做在“林业”上的应用。
因为要用到遥感图像,然而,遥感图像的数据量都是非常大的。
所以,”索引“是非常重要的。
现在在可以在系统上使用500多M的数据,如果没有索引,这是根本不可能的。
(呵呵,如果有感兴趣的同仁,可以和我联系合作)。
前几篇,小弟简单的写了一些开发嵌入式GIS的心得和体会。
可能大家早就看的不耐烦了。
都是理论和说教,没有一点形象的(成了刚说不练,买狗皮膏药的了)
500){this.resized=true;this.style.width=500;}">。
好!
小弟就贴几张小弟开发的系统的截图。
希望大家给点意见。
毕竟是小弟几年来的心血。
捧个人场了。
更重要是除了MobileMapx,eSumperMap,ArcPad等天价产品之外,小弟有了自己弄的一套(支持GPS,开放的数据格式和遥感影像支持)。
500){this.resized=true;this.style.width=500;}">小弟emial:
cyg_gis@
500){this.resized=true;this.style.width=500;}">
图1大数据量测试(这是一个实际地方的森林数据,多边形有3千多个)
500){this.resized=true;this.style.width=500;}">
图2直接用“触笔”勾画多边形(Polygon)
500){this.resized=true;this.style.width=500;}">
图3勾画的多边形(Polygon)对应的属性数据
500){this.resized=true;this.style.width=500;}">
嵌入式GIS--开发之C++
C++开发视乎成了神话,很多人认为C++太难了,MFC太大了太丑陋了。
小弟一直想从底层开发一套同时可以运行在手机和PPC上的系统。
但是,遗憾的是MFC根本不能在SmartPhone上运行。
而且用MFC开发出来的嵌入式GIS的体积都是比较大,效率也不高。
API丑陋的令人难受。
WTL是个不错的选择。
利用WTL来开发可以同时运行在SmartPhone和PPC的嵌入式GIS系统,并且速度高速。
小弟已经对GDI进行了完全面向对象的包装(模仿c#下的GDI+),内存的问题也得到了很好的解决。
绘图引擎也做了起来。
(
500){this.resized=true;this.style.width=500;}">小弟手头的钱不多,大约有2万。
如果多的话,做成产品前途一片大好,嗨.........无语)
嵌入式GIS开发(6)----之GPS导航
嵌入式GIS没有GPS导航的功能,也是死水一滩。
下面我就简单的说说GPGGA这个格式吧。
至于其它的坐标等问题,以后在谈。
内容有点多。
不过是不难的。
500){this.resized=true;this.style.width=500;}">
小弟email:
cyg_gis@
GPS接收机能提供ASCII和二进制两种格式。
其中ASCII码为NMEA-0183,NMEA-0183是美国国家海洋电子协会为海用电子设备制定的标准格式。
它是在过去海用电子设备的标准格式0180和0182的基础上,增加了GPS接收机输出的内容而完成的。
目前广泛采用的是Ver2.00版本。
现在除少数GPS接收机外,几乎所有的接收机均采用了这一格式。
各条语句都以$开头,格式为:
$AAXXX,ddd…ddd,*hh。
AA为识别符,XXX为语句名,ddd…ddd为发送的数据内容,*后hh为校验和,回车、换行符。
GPS接收机可以输出多种数据格式。
如GGA、ZDA、GLL、GSA、GSV、VTG等格式。
其中$GPGGA是最常用的一种数据格式。
下面是$GPGGA的一个例子。
$GPGGA,050901,3931.4449,N,11643.5123,E,1,07,1.4,76.2,M,-7.0,M,,*65
说明如下:
(1)GGA表示定位语句。
(2)定位UTC时间:
050901表示05时09分01秒
(3)接收机所在纬度值(格式ddmm.mmmm),N/S(北纬或南纬)。
3931.4449,N表示北纬39度31.4449分。
(4)经度(格式dddmm.mmmm),E/W(东经或西经)。
11643.5123,E表示东经116度43.5123分。
(5)定位代号(0为未定位或无效的定位;1为GPSSPS格式(SPS为商业用途格式),已定位;2为偏差修正GPS(即DGPS),SPS格式,已定位;3为GPSPPS格式(PPS为军用格式),已定位)。
1表示使用SPS定位服务而且是有效的定位。
(6)可使用的卫星数。
07表示可使用的卫星数为7颗。
(7)水平精度因子(HDOP),1.4表示水平精度因子为1.4。
(8)天线MSL(MSL-MainSeaLevel公海平面)高程(海平面,-9999.9~99999.9,单位:
m),76.2为天线MSL高程。
(9)大地椭球面相对海平面的高度(-999.9~9999.9,单位:
m),-7.0m。
(10)差分GPS数据年龄,实时GPS时无:
无。
(11)差分基准站号(0000~1023),实时GPS时无:
无。
(12)*总和校验域(hh),总和校验数为65。
NMEA-0183的串行通讯协议为:
波特率为4800,无校验位,8个数据位,开始位和停止位各为1。
嵌入式GIS开发(7)----之GPS导航(坐标问题)
从GPS硬件中取得了坐标(经纬度),但此时的坐标是在大地经纬度坐标系下,而我国常用的地图是在平面坐标系下(高斯-克
吕格坐标系)。
另外,GPS的参考椭球是WGS-84椭球,而我国的地图是在克氏椭球和IAG75椭球下的(北京54和西安80坐标)。
这就涉及到一系列的坐标变换问题。
下面就是相关的步骤和原理。
内容挺多,小弟不才,如有问题,请大家指正。
500){this.resized=true;this.style.width=500;}">小弟email:
cyg_gis@
GPS测出的点的坐标和我国的现有坐标系是不同的。
GPS系统使用的是WGS-84坐标系。
我国现阶段有54和80两种坐标系。
54坐标系的参考椭球为克拉索夫斯基椭球。
80坐标系的参考椭球为IAG--75椭球。
需要在这些坐标系中进行相互的变换。
首先,把从接收机接收到的接收机的大地坐标系坐标[B,L,H]T转换为空间直角坐标系[X,Y,Z]T坐标。
公式如下,
500){this.resized=true;this.style.width=500;}">
注意,此时的空间坐标系值[X,Y,Z]T是WGS-84下的坐标,而不是我国的坐标。
其次,把WGS-84下[X,Y,Z]T84的坐标转换为我国的坐标系下。
常用方法为七参数法,模型为布尔莎公式。
布尔莎公式如下:
500){this.resized=true;this.style.width=500;}">
通过此公式的转换[X,Y,Z]T84坐标系下的坐标可以转换为54或80下的坐标[X,Y,Z]T54或[X,Y,Z]T80。
然后,把克拉索夫斯基椭球或IAG--75椭球下的空间直角坐标系[X,Y,Z]T54或[X,Y,Z]T80再次转换为大地坐标系下的坐标[B,L,H]T54或[B,L,H]T80。
其转换公式如下:
500){this.resized=true;this.style.width=500;}">
最后,利用高斯正算将大地坐标系下的坐标[B,L,H]T54或[B,L,H]T80转换为高斯平面上的坐标[x,y]T。
其转换公式如下:
500){this.resized=true;this.style.width=500;}"resized="true">
通过多步坐标转换,GPS接收机接收下来的点位坐标最终可以表示在平面的地图上了。