• 33658阅读
  • 70回复

共享一个用QT4和mitab编写的显示mapinfo,mif格式电子地图的源码 [复制链接]

上一主题 下一主题
离线hugerat
 
图酷模式  只看楼主 倒序阅读 楼主  发表于: 2011-03-02
— 本帖被 XChinux 执行加亮操作(2016-09-18) —
这是我用qt4.7加mitab库写的一个在式linux或windows上显示mapinfo格式电子地图的程序,目前完成度不高,但已能完整显示南京地图。地图的一些细节显示进行了简单化的处理。

目前主要的问问题是程序效率不高,要等待一会,才能显示,正在改进中。

上一个在X11版linux上运行的图片



源码下载在这里
http://cid-6b7a311158eebf59.office.live.com/self.aspx/%e5%8e%9f%e5%88%9b%e5%85%b1%e4%ba%ab%e8%bd%af%e4%bb%b6/qt4^_mitab^_mif.rar
详细介绍请看我的博客

http://blogold.chinaunix.net/u2/75270/showart_2512453.html

感谢朋友们的支持。有人问到如何实现mapinfo格式和mif格式的互转,这里我再把我写的一个简单的互换小程序放出来。
tab2tab_qt.tar.gz (1453 K) 下载次数:653

/*******************************************************************/
哇,没想到有这么多人关心这个项目啊。

回各位,这个东西的编译,要求GCC 4.1以上版本,这是因为QT4要求是GCC4.1以上版本才行。

在windows下的编译,其实比较简单,安装好qt creator以后(试过,哪个版本的都可以),打开项目文件qt-map.pro,此时,一般会提示是否应用项目默认的选项,一定要选否。打开,在build菜单中,选择run qmake菜单项,重新生成qmake,再编译,应该就会通过了。

在linux下的编译,要注意,一定要使用你自已的用以编译qt4的GCC,重新编译一下mitab的库,将生成的库,共三个文件,拷贝到项目的mitab目录下,覆盖原文件即可。然后,也是同样要执行上面的步骤。一般就没问题了。
[ 此帖被hugerat在2011-03-15 10:44重新编辑 ]
离线杭城之舟
只看该作者 1楼 发表于: 2011-03-02
这个不错,楼主,我的毕业设计也要涉及到嵌入式电子海图的设计,我也在弄QT,应该可以从你那获取不少经验,希望能和你交流。。。
离线gemfield
只看该作者 2楼 发表于: 2011-03-02
支持楼主,加油楼主
离线long4268hf
只看该作者 3楼 发表于: 2011-03-02
顶起~~~
离线downstairs

只看该作者 4楼 发表于: 2011-03-02
8cuo  很好很强大
喜爱编程的猫头鹰
离线wxr159835
只看该作者 5楼 发表于: 2011-03-02
高级货
离线beikejidan1
只看该作者 6楼 发表于: 2011-03-02
请问楼主用的是哪个版本 我用的是Qt Creator 2.0.1 Based on Qt 4.7.0 (32 bit) 你用的是Qt Creator 2.0.1 吗?
离线hugerat
只看该作者 7楼 发表于: 2011-03-03
回 6楼(beikejidan1) 的帖子
QT creator的版本并不重要,重要的是QT本身的版本,QT creator中,是可以选择用哪个版本的QT的。比如,想要嵌入式编译,就选择系统中已安装的qt embedded即可。
离线beikejidan1
只看该作者 8楼 发表于: 2011-03-03
回 7楼(hugerat) 的帖子
我下载了你的源码,发现你的debug目录和工程目录都在一个文件夹下,而我的这个版本debug目录和工程目录是分开的两个文件夹。而编译后就找不到代码里面的目录,我把其中的路径都改成了绝对路径,结果编译直接出现
Starting E:\QtExercises\qt-map-build-desktop\debug\qt-map.exe...
E:\QtExercises\qt-map-build-desktop\debug\qt-map.exe exited with code -1073741515
然后什么都没有。我用的是windows下的Qt Creator 2.0.1 Based on Qt 4.7.0版本,所以我想问下你用的是哪个版本或者说如何在windows下面运行?
[ 此帖被beikejidan1在2011-03-03 09:41重新编辑 ]
离线long4268hf
只看该作者 9楼 发表于: 2011-03-03
这东西真棒,但是有个问题,就是放大缩小的时候,文字也会随着一起放大缩小,这里应该怎么修改,可以让文字不随着地图一起放大缩小呢?
离线dwhome

只看该作者 10楼 发表于: 2011-03-03
好人!
想把它改到wince下
离线hugerat
只看该作者 11楼 发表于: 2011-03-04
回 8楼(beikejidan1) 的帖子
我用的是4.6的版本。在windows可以编译。你可以直接试试在源码的release下的文件,那是一个静态编译版的,应该可以直接执行的。
离线hugerat
只看该作者 12楼 发表于: 2011-03-04
回 9楼(long4268hf) 的帖子
目前还没考虑到这个问题。目前主要是在解决效率较差的问题。在pc上启动一下就要很久,还占很多内存,在嵌入式linux上就更慢了。
离线forwz2010
只看该作者 13楼 发表于: 2011-03-05
回 9楼(long4268hf) 的帖子
地图就该这样啊,如果不一起缩放的话,地图缩小后有点难看哦~~~
C++ GUI QT4 第八章有个CityBlock例子,那里面就没有把文字和地图一起缩小
离线long4268hf
只看该作者 14楼 发表于: 2011-03-07
回 13楼(forwz2010) 的帖子
好的 非常感谢!
离线long4268hf
只看该作者 15楼 发表于: 2011-03-07
回 12楼(hugerat) 的帖子
哦 好 楼主加油!
离线long4268hf
只看该作者 16楼 发表于: 2011-03-07
回 13楼(forwz2010) 的帖子
如果我想在地图上添加一个移动点,您知道应该怎么实现么?如果可以,我们想在这个代码上做修改,做成类似于gps的软件,显示移动点的位置信息。
离线hugerat
只看该作者 17楼 发表于: 2011-03-07
想添加移动点或移动的轨迹不成问题,可是要想加导航功能,我是一点概念都没有。
离线georgefrank
只看该作者 18楼 发表于: 2011-03-08
我用QT4.5版本的可以么?
离线georgefrank
只看该作者 19楼 发表于: 2011-03-08
怎么编译提示没有库支持呀
离线forwz2010
只看该作者 20楼 发表于: 2011-03-10
回 19楼(georgefrank) 的帖子
GCC什么版本
离线forwz2010
只看该作者 21楼 发表于: 2011-03-10
回 16楼(long4268hf) 的帖子
我也有这个想法,但是目前正在看源代码。。。。注解很少 0.0 今天看了10多分钟
离线georgefrank
只看该作者 22楼 发表于: 2011-03-11
回 20楼(forwz2010) 的帖子
我的GCC是3.2的
离线forwz2010
只看该作者 23楼 发表于: 2011-03-11
回 22楼(georgefrank) 的帖子
额~~~没有什么库支持?我以前装的redhat 5.5 和Centos5.5都一样,编译Qt demo的时候也提示没有库支持,因为为了保持稳定,有些库比较旧,我现在装的fedora 14 没有问题
离线georgefrank
只看该作者 24楼 发表于: 2011-03-11
回 23楼(forwz2010) 的帖子
比较奇怪,刚才编译提示找不到mitab的接口函数
mitab_c_open()等函数未定义
离线georgefrank
只看该作者 25楼 发表于: 2011-03-11
回 23楼(forwz2010) 的帖子
你好!
离线forwz2010
只看该作者 26楼 发表于: 2011-03-11
是不是没有包含mitab-capi。h
离线forwz2010
只看该作者 27楼 发表于: 2011-03-11
linux下QT编译出现:: error: ./mitab/libmitab.so:没有那个文件或目录,
但是可以找到文件阿 ~~
还有就是我在mitab下重新编译了下
出现了3个文件
libmitab.so
libmitab.so.1
libmitab.so.1.0.1
但是其实都是一个文件 so链接到了so.1 然后so.1链接到了so.1.0.1~~~
离线forwz2010
只看该作者 28楼 发表于: 2011-03-11
回 25楼(georgefrank) 的帖子
你那个是因为没有在工程文件中添加
unix:LIBS += ./mitab/libmitab.so
但是我添加了 出现没有libmitab。so的文件。。。。
离线forwz2010
只看该作者 29楼 发表于: 2011-03-11
终于可以在linux运行了~~ --!
刚开始一直提示我少了libmitab。so。1 。。。。。通过ldd filename 查看库路径  放到了/usr/lib下就OK了
关于运行效率问题 。。。
我觉得有些地方显示太详细了(地图缩小后,很多很小的点也在地图上。。)
离线georgefrank
只看该作者 30楼 发表于: 2011-03-11
回 28楼(forwz2010) 的帖子
你好,现在又出现了这个。
离线georgefrank
只看该作者 31楼 发表于: 2011-03-12
回 楼主(hugerat) 的帖子
楼主你好,编译出差错了,怎么会呀?
离线georgefrank
只看该作者 32楼 发表于: 2011-03-12
回 29楼(forwz2010) 的帖子
你好,我重新安装了gcc3.4.0编译器后出现这些错误。该怎么解决呀?
离线beikejidan1
只看该作者 33楼 发表于: 2011-03-12
请问Windows下如何在Qt中加载并使用mitab类库,具体步骤有哪些?谢谢
离线forwz2010
只看该作者 34楼 发表于: 2011-03-13
回 33楼(georgefrank) 的帖子
我的:gcc 版本 4.5.1 20100924 (Red Hat 4.5.1-4) (GCC)
是不是你的GCC版本太低了。。。。
离线forwz2010
只看该作者 35楼 发表于: 2011-03-13
回 33楼(beikejidan1) 的帖子
windows中貌似只要dll文件就可以阿
离线beikejidan1
只看该作者 36楼 发表于: 2011-03-13
回 35楼(forwz2010) 的帖子
请问能说的明白一些吗 是mitab.dll文件么 放在哪个路径下面
离线forwz2010
只看该作者 37楼 发表于: 2011-03-20
回 36楼(beikejidan1) 的帖子
恩 ,对 把mitab。dll文件放在源文件目录和debug目录。。。。
ontains a precompiled version of the TAB2TAB command-line conversion program for WIN32 (DOS executable under Windows 95/98/NT/2000/XP) and of mitab.dll+mitab_capi.h (all you need to use the C API on Windows). -----mitab的windows zip压缩包说明
离线sblpp

只看该作者 38楼 发表于: 2011-03-29
顶楼主!
优化显示方面建议:
1 根据GPS来的坐标数据 从mitab读取mapinfo的相关的数据 就可以啦
离线forwz2010
只看该作者 39楼 发表于: 2011-03-31
回 楼主(hugerat) 的帖子
我转换出来的mif和mid文件中 ,mif只有2个字段
比如:"今古贯道花园","0XFF91"
而你的mid文件中的是:"今古贯道花园","0XFF91",0,"320105000",0,"20031123"
求教你用什么转换的
快速回复
限100 字节
 
上一个 下一个