MapXtreme 2005 学习心得 一些基础函数代码(四)

网上看到的基本上代码都大同小异,经过本人小小修改或未修改的代码如下:

 一:先创建图层

1:创建图层函数代码:CreateLayer

MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四) /// <summary>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// 创建临时图层
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// by 路过秋天
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="tableName">表名</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="layerName">图层名</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// </summary>

MapXtreme 2005 学习心得 一些基础函数代码(四)    public static void CreateLayer(string tableName, string layerName)
MapXtreme 2005 学习心得 一些基础函数代码(四)    
{
MapXtreme 2005 学习心得 一些基础函数代码(四)        MapInfo.Mapping.Map myMap 
= MapInfo.Engine.Session.Current.MapFactory[0];//取得当前地图
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//建立内存表信息(TableInfo中的一种,所以当然还有其它很多种表类型)
MapXtreme 2005 学习心得 一些基础函数代码(四)
        MapInfo.Data.TableInfoMemTable tblInfo = new MapInfo.Data.TableInfoMemTable(tableName);
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//向表信息中添加可绘图列(必备的列)
MapXtreme 2005 学习心得 一些基础函数代码(四)
        tblInfo.Columns.Add(MapInfo.Data.ColumnFactory.CreateFeatureGeometryColumn(myMap.GetDisplayCoordSys()));
MapXtreme 2005 学习心得 一些基础函数代码(四)        tblInfo.Columns.Add(MapInfo.Data.ColumnFactory.CreateStyleColumn());
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//向表信息中添加其它数据列(可选的列)
MapXtreme 2005 学习心得 一些基础函数代码(四)
        tblInfo.Columns.Add(MapInfo.Data.ColumnFactory.CreateIntColumn("index"));//创建整形的列,当然还有其它日期型的,doule型的等等
MapXtreme 2005 学习心得 一些基础函数代码(四)
        tblInfo.Columns.Add(MapInfo.Data.ColumnFactory.CreateStringColumn("value"20));//创建字符串型的列,并指定长度
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//确保当前目录下不存在同名表
MapXtreme 2005 学习心得 一些基础函数代码(四)
        MapInfo.Data.Table table = MapInfo.Engine.Session.Current.Catalog.GetTable(tableName);
MapXtreme 2005 学习心得 一些基础函数代码(四)        
if (table != null)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
{
MapXtreme 2005 学习心得 一些基础函数代码(四)            MapInfo.Engine.Session.Current.Catalog.CloseTable(tableName);
MapXtreme 2005 学习心得 一些基础函数代码(四)        }

MapXtreme 2005 学习心得 一些基础函数代码(四)        
//根据表信息创建临时表
MapXtreme 2005 学习心得 一些基础函数代码(四)
        table = MapInfo.Engine.Session.Current.Catalog.CreateTable(tblInfo);
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//创建图层(并关联表)
MapXtreme 2005 学习心得 一些基础函数代码(四)
        FeatureLayer tempLayer = new FeatureLayer(table, layerName, layerName);
MapXtreme 2005 学习心得 一些基础函数代码(四)        
MapXtreme 2005 学习心得 一些基础函数代码(四)        myMap.Layers.Add(tempLayer);
MapXtreme 2005 学习心得 一些基础函数代码(四)    }

 

二:在图层的基础上,创建点,线,或其它图型

1:创建点函数代码:AddPoint

MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四) /// <summary>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// 添加点
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// by 路过秋天
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// </summary>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="layerName">图层名称</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="dPoint">点的坐标</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="shortCode">点的代码,不同的数字有不同的形状(圆型,三角型,正方型等)</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="color">点的颜色</param>

MapXtreme 2005 学习心得 一些基础函数代码(四)    public static void AddPoint(string layerName, DPoint dPoint, short shortCode, Color color)
MapXtreme 2005 学习心得 一些基础函数代码(四)    
{
MapXtreme 2005 学习心得 一些基础函数代码(四)        MapInfo.Mapping.Map myMap 
= MapInfo.Engine.Session.Current.MapFactory[0];
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//获取图层和表
MapXtreme 2005 学习心得 一些基础函数代码(四)
        FeatureLayer workLayer = (MapInfo.Mapping.FeatureLayer)myMap.Layers[layerName];
MapXtreme 2005 学习心得 一些基础函数代码(四)        MapInfo.Data.Table table 
= workLayer.Table;
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//创建点
MapXtreme 2005 学习心得 一些基础函数代码(四)
        FeatureGeometry point = new MapInfo.Geometry.Point(workLayer.CoordSys, dPoint);
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//以下两行是图形的样式
MapXtreme 2005 学习心得 一些基础函数代码(四)
        MapInfo.Styles.SimpleVectorPointStyle spsPoint = new MapInfo.Styles.SimpleVectorPointStyle(shortCode, color, 20);
MapXtreme 2005 学习心得 一些基础函数代码(四)        MapInfo.Styles.CompositeStyle pointStyle 
= new MapInfo.Styles.CompositeStyle(spsPoint);
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//接下来创建一行数据
MapXtreme 2005 学习心得 一些基础函数代码(四)
        MapInfo.Data.Feature pointRow = new MapInfo.Data.Feature(table.TableInfo.Columns);
MapXtreme 2005 学习心得 一些基础函数代码(四)        pointRow.Geometry 
= point;//必备列[图形]
MapXtreme 2005 学习心得 一些基础函数代码(四)
        pointRow.Style = pointStyle;//必备列[图形样式]
MapXtreme 2005 学习心得 一些基础函数代码(四)
        pointRow["index"= new Random().Next(999);
MapXtreme 2005 学习心得 一些基础函数代码(四)        pointRow[
"value"= "this is a point";
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//将一行数据放入表中
MapXtreme 2005 学习心得 一些基础函数代码(四)
        table.InsertFeature(pointRow);
MapXtreme 2005 学习心得 一些基础函数代码(四)    }

说明:

关于shortCode:

参考C:\Program Files\MapInfo\MapXtreme\6.7.1\Documentation\PDF\MapXtreme2005_DevGuide.pdf

下的Appendix G:Style Lookups(附录G,样式查找)下的Vector Symbols(矢量符号)->Map Symbols (地图符号)

 

2:创建线函数代码:AddLine

MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)/// <summary>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// 添加线[代码和创建点的相差无几]
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// by 路过秋天
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="layerName">图层名</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="startPoint">线段起点坐标</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="endPoint">线段终点坐标</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="shortCode">线的shortCode(线的型状也有多种,比如单箭头,双箭头等)</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="color">线的颜色</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// </summary>

MapXtreme 2005 学习心得 一些基础函数代码(四)    public static void AddLine(string layerName, DPoint startPoint, DPoint endPoint, int shortCode, Color color)
MapXtreme 2005 学习心得 一些基础函数代码(四)    
{
MapXtreme 2005 学习心得 一些基础函数代码(四)        MapInfo.Mapping.Map myMap 
= MapInfo.Engine.Session.Current.MapFactory[0];
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//获取图层和表
MapXtreme 2005 学习心得 一些基础函数代码(四)
        FeatureLayer workLayer = (MapInfo.Mapping.FeatureLayer)myMap.Layers[layerName];
MapXtreme 2005 学习心得 一些基础函数代码(四)        MapInfo.Data.Table table 
= workLayer.Table;
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//创建线
MapXtreme 2005 学习心得 一些基础函数代码(四)
        FeatureGeometry line = MultiCurve.CreateLine(workLayer.CoordSys, startPoint, endPoint);
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//以下两行是图形的样式
MapXtreme 2005 学习心得 一些基础函数代码(四)
        MapInfo.Styles.SimpleLineStyle slsLine = new MapInfo.Styles.SimpleLineStyle(new LineWidth(3, LineWidthUnit.Pixel), shortCode, color);
MapXtreme 2005 学习心得 一些基础函数代码(四)        MapInfo.Styles.CompositeStyle lineStyle 
= new MapInfo.Styles.CompositeStyle(slsLine);
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//接下来创建一行数据
MapXtreme 2005 学习心得 一些基础函数代码(四)
        MapInfo.Data.Feature ptLine = new MapInfo.Data.Feature(table.TableInfo.Columns);
MapXtreme 2005 学习心得 一些基础函数代码(四)        ptLine.Geometry 
= line;
MapXtreme 2005 学习心得 一些基础函数代码(四)        ptLine.Style 
= lineStyle;
MapXtreme 2005 学习心得 一些基础函数代码(四)        ptLine[
"index"= new Random().Next(999); ;
MapXtreme 2005 学习心得 一些基础函数代码(四)        ptLine[
"value"= "this is a line";
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//将线图元加入图层
MapXtreme 2005 学习心得 一些基础函数代码(四)
        table.InsertFeature(ptLine);
MapXtreme 2005 学习心得 一些基础函数代码(四)    }

 

三:显示标注文本

1:显示标注文本函数代码:ShowValue

MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四) /// <summary>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// 显示标注
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// by 路过秋天
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="tableName">标注的表名</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// <param name="columnName">标注的列名</param>
MapXtreme 2005 学习心得 一些基础函数代码(四)    
/// </summary>

MapXtreme 2005 学习心得 一些基础函数代码(四)    public static void ShowValue(string tableName, string columnName)
MapXtreme 2005 学习心得 一些基础函数代码(四)    
{
MapXtreme 2005 学习心得 一些基础函数代码(四)        MapInfo.Mapping.Map myMap 
= MapInfo.Engine.Session.Current.MapFactory[0];
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//新建标注图层并绑定数据(整个过程有点像DataGrid控件指定数据源控件SqlDataSource,而数据源控件又绑定了DataTable)
MapXtreme 2005 学习心得 一些基础函数代码(四)
        LabelLayer labelLayer = new LabelLayer();
MapXtreme 2005 学习心得 一些基础函数代码(四)        myMap.Layers.Add(labelLayer);
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//指定要标注的数据表
MapXtreme 2005 学习心得 一些基础函数代码(四)
        MapInfo.Data.Table table = MapInfo.Engine.Session.Current.Catalog.GetTable(tableName);
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        LabelSource source 
= new LabelSource(table);//绑定Table
MapXtreme 2005 学习心得 一些基础函数代码(四)
        labelLayer.Sources.Append(source);//加载指定数据
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//指定哪个字段作为显示标注(在非必备的自定义列里挑一个,比如我们就挑"value"列)
MapXtreme 2005 学习心得 一些基础函数代码(四)
        source.DefaultLabelProperties.Caption = columnName;
MapXtreme 2005 学习心得 一些基础函数代码(四)
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//标注样式等属性,注意这段注释的代码,是指在一定的缩放比例范围内才显示文本,要是不注释掉,可能折腾半天也看不到为啥显示不出来文本
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//source.DefaultLabelProperties.Visibility.Enabled = true;
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//source.DefaultLabelProperties.Visibility.VisibleRangeEnabled = true;
MapXtreme 2005 学习心得 一些基础函数代码(四)        
//source.DefaultLabelProperties.Visibility.VisibleRange = new VisibleRange(0.01, 10, MapInfo.Geometry.DistanceUnit.Mile);
MapXtreme 2005 学习心得 一些基础函数代码(四)

MapXtreme 2005 学习心得 一些基础函数代码(四)        source.DefaultLabelProperties.Visibility.AllowDuplicates 
= true;
MapXtreme 2005 学习心得 一些基础函数代码(四)        source.DefaultLabelProperties.Visibility.AllowOverlap 
= true;
MapXtreme 2005 学习心得 一些基础函数代码(四)        source.DefaultLabelProperties.Visibility.AllowOutOfView 
= true;
MapXtreme 2005 学习心得 一些基础函数代码(四)        source.Maximum 
= 50;
MapXtreme 2005 学习心得 一些基础函数代码(四)        source.DefaultLabelProperties.Layout.UseRelativeOrientation 
= true;
MapXtreme 2005 学习心得 一些基础函数代码(四)        source.DefaultLabelProperties.Layout.RelativeOrientation 
= MapInfo.Text.RelativeOrientation.FollowPath;
MapXtreme 2005 学习心得 一些基础函数代码(四)        source.DefaultLabelProperties.Layout.Angle 
= 33.0;
MapXtreme 2005 学习心得 一些基础函数代码(四)        source.DefaultLabelProperties.Layout.Offset 
= 7;
MapXtreme 2005 学习心得 一些基础函数代码(四)        source.DefaultLabelProperties.Layout.Alignment 
= MapInfo.Text.Alignment.CenterCenter;
MapXtreme 2005 学习心得 一些基础函数代码(四)        MapInfo.Styles.Font font 
= new MapInfo.Styles.Font("黑体"12);
MapXtreme 2005 学习心得 一些基础函数代码(四)        font.ForeColor 
= System.Drawing.Color.Red;
MapXtreme 2005 学习心得 一些基础函数代码(四)        source.DefaultLabelProperties.Style.Font 
= font;
MapXtreme 2005 学习心得 一些基础函数代码(四)    }

 

先上这四个最基本的函数,如果把这几个函数放一个类中,别忘了加名称空间

using MapInfo.Geometry;
using MapInfo.Mapping;
using MapInfo.Styles;
using MapInfo.Data;
using MapInfo.Text;
using System.Drawing;

 


上一篇:OceanBase 2.2 开发者指南(文档)


下一篇:分布式数据库选型——数据水平拆分方案