zoukankan      html  css  js  c++  java
  • 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)

    希望能对大家有帮助!

  • 相关阅读:
    Installshield制作安装程序
    vista以上系统中开发的程序以管理员权限运行
    检查当前系统版本是否为Vista或更高的版本
    在程序运行过程中调用另一个程序
    Spin Control(旋转按钮控件、上下微调按钮控件)
    因改变工具栏图标导致菜单栏高度随之变大的解决方案
    Unicode环境下的字符差异
    注册表API
    文件的读写操作
    const char* 和 char* const
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978844.html
Copyright © 2011-2022 走看看