MapXtreme2008 无法加载.tab文件处理一法

.NET技术 专栏收录该内容
43 篇文章 0 订阅

 

    最近应公司的需要开发一个GIS系统,由于以前使用MapInfo公司的MapX开发过程序,自信应该使用最新的MapXTreme和Visual Studio2008来进行开发没问题,很快从MapInfo官方网站下载了最新的试用版MapXtreme,准备开始开发,没想到首先这东西就给我来了个下马威,原来在MapX下用得好好的地图文件,就是无法加载到地图中。使用MapXtreme2008自带的Workspace Manager程序加载原来的gst文件时出现以下提示:

 

err1

   

    

    这个对话框是相当的不友好!除了告诉我出错之外,没给出任何对解决问题有帮助的信息!反复试验均是如此,逐个图层加载时发现只有一个图层能加载上。起先怀疑难道是MapX5.0能用的Tab文件与MapXTreme能用的Tab文件不兼容?可是为什么有的Tab文件能加载有的就不能加载?后来翻到MapXtreme自带的示例程序,其中有一个MapLoader程序,拿它来加载GeoSet时总算有了点提示!

 

err2

 

    但是各位,从这个对话框我们能看出些什么信息呢?为了能发现点什么,我用记事本打开了这个Tab文件,它其实也就是一个文本,其内容如下:

 

!table
!version 300
!charset WindowsSimpChinese

Definition Table
  Type NATIVE Charset "Neutral"
  Fields 18
    FID Decimal (15, 0) ;
    FNode Decimal (15, 0) ;
    TNode Decimal (15, 0) ;
    Length Float ;
    Name Char (60) ;
    PopName Char (30) ;
    District Char (27) ;
    Attribute Char (11) ;
    Code Char (30) ;
    Speed Char (30) ;
    Limit Char (100) ;
    Toll Char (20) ;
    Doorplate Char (250) ;
    CName Char (254) ;
    EName Char (60) ;
    Update Date ;
    Source Integer ;
    GUID Char (32) ;

 

    虽然以前并不了解Tab文件内部的含义,不过从内容也可以猜测,这应该是类似于表中的字段定义,前面是字段名,后面是数据类型。根据提示信息Invalid identifier(date),我找到倒数第三行确实有个Date这单词。难道MapXTreme不支持Date数据类型吗?反正别无他法我就死马当活马医吧!索性把Date改成DateTime试试,结果还是出错。我索性把这个字段删除,字段数量也减1,保存后再加载,是不再出上面的提示框了,出来另一个对话框提示诸如数据源数据与定义不一致的信息。这也是可以想像的,毕竟不可能就这么把字段定义删除了还能得到正确结果的。那么还有什么办法呢?我差点要打电话找提供数据给我的人大骂他一顿了,为这个问题搞了一上午还是百思不得其解!

 

    生气之余还是没办法,只有冷静下来分析那少得可怜的错误信息——Found[;] while searching for [set]。等等!这个句式怎么那么熟悉呢?难道是……SQL语句?SQL语句中更新语法不就是Update XXX Set XXX=XXX吗?该不会在MapXtreme打开Tab文件时还把这里面的定义当SQL语句解析了?如果真是这样的话肯定有问题,毕竟Update是关键字,我们现在相当于把Update当字段名定义了(估计提供者提供这个字段的意思是最后更新日期)。果真如此,我只需……我马上用记事本将倒数第三行的Update Date;改为LastUpdate Date;保存,加载……OK!That's great!终于不再出现那种恶心的对话框了!

 

    总结了下(虽然还是没有深入了解MapInfo的Tab文件格式,但毕竟解决了问题):早期的MapX版本,对Tab文件的处理不如MapXTreme中加载Tab文件的方式“先进”,“先进”在哪具体还不清楚,但是它确实用SQL语法的解析来应用到Tab文件加载中了,为什么这么做可能另有原因,需要加紧学习MapXtreme的引擎,不过这要求我们在建立或处理用于MapXtreme引擎的Tab文件时一定要注意字段的命名,不要和SQL语句中的关键字发生冲突!只要稍微注意一下这种问题应该还是可以避免的。当时若有高手在旁指点迷津,也许根本就不会花费那么大精力去分析解决这个小问题了。因此将这个经历写出来,希望对和我一样的MapXtreme初学者有所帮助,不至于象我这样几乎抓狂了……

 

  • 0
    点赞
  • 8
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 8 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

洛阳老马

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值