MapXtreme开发经验分享-如何生成tab表,查询时返回全部字段

开发的时候遇到的两个问题,好容易解决了,和大家分享一下:

 

一、使用CreateTable 创建出来的tab文件有三个 .ID .MAP .DAT,唯一缺少一个 .TAB文件,好奇怪,明明按照例子里写的代码。

 

经过仔细研究加到处寻找,终于找到了答案,少了一个函数 .WriteTabFile()

 

生成tab的文件代码如下:

 

       Dim tableInfoNative As MapInfo.Data.TableInfoNative = New MapInfo.Data.TableInfoNative(tableName)
        tableInfoNative.TablePath = "C://" + tableName + ".TAB"
        tableInfoNative.Columns.Add(MapInfo.Data.ColumnFactory.CreateIntColumn("ID"))
        tableInfoNative.Columns.Add(MapInfo.Data.ColumnFactory.CreateStyleColumn())
        Dim coordSys As MapInfo.Geometry.CoordSys = MapControl1.Map.GetDisplayCoordSys()


        tableInfoNative.Columns.Add(MapInfo.Data.ColumnFactory.CreateFeatureGeometryColumn(coordSys))

        tableInfoNative.WriteTabFile() '非常关键,否则无法生成tab文件
        Dim table As MapInfo.Data.Table = MapInfo.Engine.Session.Current.Catalog.CreateTable(tableInfoNative)

 

二、查询的时候只返回三个字段,进行search的时候,默认只返回三个默认字段(好象是: ID ,geometry 和MI_TYPE),需要返回全部字段怎么办呢?

 

使用 si.QueryDefinition.Columns = Nothing 返回全部字段。

 

例子代码:

 

                Dim layer As MapInfo.Mapping.FeatureLayer = MapControl1.Map.Layers(sLayerName)
                Dim si As SearchInfo = MapInfo.Data.SearchInfoFactory.SearchWithinRect(searchRect, layer.CoordSys, ContainsType.Centroid)
                si.QueryDefinition.Columns = Nothing   '非常关键!否则只返回默认的三个字段:Geometry,type,key
                Dim rsfc As IResultSetFeatureCollection = _catalog.Search(layer.Table, si)

 

 

希望能对大家有帮助!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值