SuperMap Objects组件式开发

Form1.Designer.cs

namespace experiment10
{
    partial class Form1
    {
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows 窗体设计器生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
            this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
            this.ToolStripfile = new System.Windows.Forms.ToolStripMenuItem();
            this.ToolStripOpen = new System.Windows.Forms.ToolStripMenuItem();
            this.ToolStripClose = new System.Windows.Forms.ToolStripMenuItem();
            this.ToolStripEx = new System.Windows.Forms.ToolStripMenuItem();
            this.ToolStripMap = new System.Windows.Forms.ToolStripMenuItem();
            this.toolStripPointSel = new System.Windows.Forms.ToolStripMenuItem();
            this.toolStripZoomIn = new System.Windows.Forms.ToolStripMenuItem();
            this.toolStripZoomOut = new System.Windows.Forms.ToolStripMenuItem();
            this.toolStripman = new System.Windows.Forms.ToolStripMenuItem();
            this.toolStripViewEntire = new System.Windows.Forms.ToolStripMenuItem();
            this.ToolStripget = new System.Windows.Forms.ToolStripMenuItem();
            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
            this.splitContainer3 = new System.Windows.Forms.SplitContainer();
            this.axSuperWkspManager1 = new AxSuperWkspManagerLib.AxSuperWkspManager();
            this.axSuperLegend1 = new AxSuperLegendLib.AxSuperLegend();
            this.axSuperTopo1 = new AxSuperTopoLib.AxSuperTopo();
            this.axSuperMap1 = new AxSuperMapLib.AxSuperMap();
            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
            this.toolStripBtnPointSel = new System.Windows.Forms.ToolStripButton();
            this.toolStripBtnZoomIn = new System.Windows.Forms.ToolStripButton();
            this.toolStripBtnZoomOut = new System.Windows.Forms.ToolStripButton();
            this.toolStripBtnPan = new System.Windows.Forms.ToolStripButton();
            this.toolStripBtnViewEntire = new System.Windows.Forms.ToolStripButton();
            this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
            this.axSuperWorkspace1 = new AxSuperMapLib.AxSuperWorkspace();
            this.axSuperAnalyst1 = new AxSuperAnalystLib.AxSuperAnalyst();
            this.tableLayoutPanel1.SuspendLayout();
            this.menuStrip1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
            this.splitContainer1.Panel1.SuspendLayout();
            this.splitContainer1.Panel2.SuspendLayout();
            this.splitContainer1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
            this.splitContainer3.Panel1.SuspendLayout();
            this.splitContainer3.Panel2.SuspendLayout();
            this.splitContainer3.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperWkspManager1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperLegend1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperTopo1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperMap1)).BeginInit();
            this.toolStrip1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperWorkspace1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperAnalyst1)).BeginInit();
            this.SuspendLayout();
            // 
            // tableLayoutPanel1
            // 
            this.tableLayoutPanel1.ColumnCount = 1;
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
            this.tableLayoutPanel1.Controls.Add(this.menuStrip1, 0, 0);
            this.tableLayoutPanel1.Controls.Add(this.statusStrip1, 0, 3);
            this.tableLayoutPanel1.Controls.Add(this.splitContainer1, 0, 2);
            this.tableLayoutPanel1.Controls.Add(this.toolStrip1, 0, 1);
            this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
            this.tableLayoutPanel1.Name = "tableLayoutPanel1";
            this.tableLayoutPanel1.RowCount = 4;
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
            this.tableLayoutPanel1.Size = new System.Drawing.Size(714, 470);
            this.tableLayoutPanel1.TabIndex = 0;
            // 
            // menuStrip1
            // 
            this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.ToolStripfile,
            this.ToolStripMap,
            this.ToolStripget});
            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
            this.menuStrip1.Name = "menuStrip1";
            this.menuStrip1.Size = new System.Drawing.Size(714, 28);
            this.menuStrip1.TabIndex = 3;
            this.menuStrip1.Text = "menuStrip1";
            // 
            // ToolStripfile
            // 
            this.ToolStripfile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.ToolStripOpen,
            this.ToolStripClose,
            this.ToolStripEx});
            this.ToolStripfile.Name = "ToolStripfile";
            this.ToolStripfile.Size = new System.Drawing.Size(51, 24);
            this.ToolStripfile.Text = "文件";
            // 
            // ToolStripOpen
            // 
            this.ToolStripOpen.Name = "ToolStripOpen";
            this.ToolStripOpen.Size = new System.Drawing.Size(174, 26);
            this.ToolStripOpen.Text = "打开工作空间";
            this.ToolStripOpen.Click += new System.EventHandler(this.ToolStripOpen_Click);
            // 
            // ToolStripClose
            // 
            this.ToolStripClose.Name = "ToolStripClose";
            this.ToolStripClose.Size = new System.Drawing.Size(174, 26);
            this.ToolStripClose.Text = "关闭工作空间";
            this.ToolStripClose.Click += new System.EventHandler(this.ToolStripClose_Click);
            // 
            // ToolStripEx
            // 
            this.ToolStripEx.Name = "ToolStripEx";
            this.ToolStripEx.Size = new System.Drawing.Size(174, 26);
            this.ToolStripEx.Text = "退出";
            this.ToolStripEx.Click += new System.EventHandler(this.ToolStripEx_Click);
            // 
            // ToolStripMap
            // 
            this.ToolStripMap.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.toolStripPointSel,
            this.toolStripZoomIn,
            this.toolStripZoomOut,
            this.toolStripman,
            this.toolStripViewEntire});
            this.ToolStripMap.Name = "ToolStripMap";
            this.ToolStripMap.Size = new System.Drawing.Size(51, 24);
            this.ToolStripMap.Text = "地图";
            // 
            // toolStripPointSel
            // 
            this.toolStripPointSel.Name = "toolStripPointSel";
            this.toolStripPointSel.Size = new System.Drawing.Size(144, 26);
            this.toolStripPointSel.Text = "点选";
            this.toolStripPointSel.Click += new System.EventHandler(this.toolStripPointSel_Click);
            // 
            // toolStripZoomIn
            // 
            this.toolStripZoomIn.Name = "toolStripZoomIn";
            this.toolStripZoomIn.Size = new System.Drawing.Size(144, 26);
            this.toolStripZoomIn.Text = "放大";
            this.toolStripZoomIn.Click += new System.EventHandler(this.toolStripZoomIn_Click_1);
            // 
            // toolStripZoomOut
            // 
            this.toolStripZoomOut.Name = "toolStripZoomOut";
            this.toolStripZoomOut.Size = new System.Drawing.Size(144, 26);
            this.toolStripZoomOut.Text = "缩小";
            this.toolStripZoomOut.Click += new System.EventHandler(this.toolStripZoomOut_Click_1);
            // 
            // toolStripman
            // 
            this.toolStripman.Name = "toolStripman";
            this.toolStripman.Size = new System.Drawing.Size(144, 26);
            this.toolStripman.Text = "漫游";
            this.toolStripman.Click += new System.EventHandler(this.toolStripPan_Click);
            // 
            // toolStripViewEntire
            // 
            this.toolStripViewEntire.Name = "toolStripViewEntire";
            this.toolStripViewEntire.Size = new System.Drawing.Size(144, 26);
            this.toolStripViewEntire.Text = "全幅显示";
            this.toolStripViewEntire.Click += new System.EventHandler(this.toolStripViewEntire_Click);
            // 
            // ToolStripget
            // 
            this.ToolStripget.Name = "ToolStripget";
            this.ToolStripget.Size = new System.Drawing.Size(111, 24);
            this.ToolStripget.Text = "提取面边界线";
            this.ToolStripget.Click += new System.EventHandler(this.ToolStripget_Click);
            // 
            // statusStrip1
            // 
            this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
            this.statusStrip1.Location = new System.Drawing.Point(0, 450);
            this.statusStrip1.Name = "statusStrip1";
            this.statusStrip1.Size = new System.Drawing.Size(714, 20);
            this.statusStrip1.TabIndex = 2;
            this.statusStrip1.Text = "statusStrip1";
            // 
            // splitContainer1
            // 
            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.splitContainer1.Location = new System.Drawing.Point(3, 63);
            this.splitContainer1.Name = "splitContainer1";
            // 
            // splitContainer1.Panel1
            // 
            this.splitContainer1.Panel1.Controls.Add(this.splitContainer3);
            // 
            // splitContainer1.Panel2
            // 
            this.splitContainer1.Panel2.Controls.Add(this.axSuperMap1);
            this.splitContainer1.Size = new System.Drawing.Size(708, 384);
            this.splitContainer1.SplitterDistance = 140;
            this.splitContainer1.TabIndex = 0;
            // 
            // splitContainer3
            // 
            this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
            this.splitContainer3.Location = new System.Drawing.Point(0, 0);
            this.splitContainer3.Name = "splitContainer3";
            this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
            // 
            // splitContainer3.Panel1
            // 
            this.splitContainer3.Panel1.Controls.Add(this.axSuperWkspManager1);
            this.splitContainer3.Panel1.Controls.Add(this.axSuperAnalyst1);
            // 
            // splitContainer3.Panel2
            // 
            this.splitContainer3.Panel2.Controls.Add(this.axSuperLegend1);
            this.splitContainer3.Panel2.Controls.Add(this.axSuperTopo1);
            this.splitContainer3.Size = new System.Drawing.Size(140, 384);
            this.splitContainer3.SplitterDistance = 160;
            this.splitContainer3.TabIndex = 0;
            // 
            // axSuperWkspManager1
            // 
            this.axSuperWkspManager1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.axSuperWkspManager1.Enabled = true;
            this.axSuperWkspManager1.Location = new System.Drawing.Point(0, 0);
            this.axSuperWkspManager1.Name = "axSuperWkspManager1";
            this.axSuperWkspManager1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSuperWkspManager1.OcxState")));
            this.axSuperWkspManager1.Size = new System.Drawing.Size(140, 160);
            this.axSuperWkspManager1.TabIndex = 0;
            this.axSuperWkspManager1.LDbClick += new AxSuperWkspManagerLib._DSuperWkspManagerEvents_LDbClickEventHandler(this.axSuperWkspManager1_LDbClick);
            // 
            // axSuperLegend1
            // 
            this.axSuperLegend1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.axSuperLegend1.Enabled = true;
            this.axSuperLegend1.Location = new System.Drawing.Point(0, 0);
            this.axSuperLegend1.Name = "axSuperLegend1";
            this.axSuperLegend1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSuperLegend1.OcxState")));
            this.axSuperLegend1.Size = new System.Drawing.Size(140, 220);
            this.axSuperLegend1.TabIndex = 0;
            // 
            // axSuperTopo1
            // 
            this.axSuperTopo1.Enabled = true;
            this.axSuperTopo1.Location = new System.Drawing.Point(85, 183);
            this.axSuperTopo1.Name = "axSuperTopo1";
            this.axSuperTopo1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSuperTopo1.OcxState")));
            this.axSuperTopo1.Size = new System.Drawing.Size(32, 32);
            this.axSuperTopo1.TabIndex = 1;
            // 
            // axSuperMap1
            // 
            this.axSuperMap1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.axSuperMap1.Enabled = true;
            this.axSuperMap1.Location = new System.Drawing.Point(0, 0);
            this.axSuperMap1.Name = "axSuperMap1";
            this.axSuperMap1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSuperMap1.OcxState")));
            this.axSuperMap1.Size = new System.Drawing.Size(564, 384);
            this.axSuperMap1.TabIndex = 0;
            this.axSuperMap1.DblClick += new System.EventHandler(this.axSuperMap1_DblClick);
            this.axSuperMap1.MouseWheelEvent += new AxSuperMapLib._DSuperMapEvents_MouseWheelEventHandler(this.axSuperMap1_MouseWheelEvent);
            // 
            // toolStrip1
            // 
            this.toolStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.toolStripBtnPointSel,
            this.toolStripBtnZoomIn,
            this.toolStripBtnZoomOut,
            this.toolStripBtnPan,
            this.toolStripBtnViewEntire});
            this.toolStrip1.Location = new System.Drawing.Point(0, 30);
            this.toolStrip1.Name = "toolStrip1";
            this.toolStrip1.Size = new System.Drawing.Size(714, 25);
            this.toolStrip1.TabIndex = 4;
            this.toolStrip1.Text = "toolStrip1";
            // 
            // toolStripBtnPointSel
            // 
            this.toolStripBtnPointSel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripBtnPointSel.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripBtnPointSel.Name = "toolStripBtnPointSel";
            this.toolStripBtnPointSel.Size = new System.Drawing.Size(23, 22);
            this.toolStripBtnPointSel.Text = "点选";
            this.toolStripBtnPointSel.ToolTipText = "点选";
            this.toolStripBtnPointSel.Click += new System.EventHandler(this.toolStripPointSel_Click);
            // 
            // toolStripBtnZoomIn
            // 
            this.toolStripBtnZoomIn.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripBtnZoomIn.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripBtnZoomIn.Name = "toolStripBtnZoomIn";
            this.toolStripBtnZoomIn.Size = new System.Drawing.Size(23, 22);
            this.toolStripBtnZoomIn.Text = "放大";
            this.toolStripBtnZoomIn.Click += new System.EventHandler(this.toolStripZoomIn_Click_1);
            // 
            // toolStripBtnZoomOut
            // 
            this.toolStripBtnZoomOut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripBtnZoomOut.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripBtnZoomOut.Name = "toolStripBtnZoomOut";
            this.toolStripBtnZoomOut.Size = new System.Drawing.Size(23, 22);
            this.toolStripBtnZoomOut.Text = "缩小";
            this.toolStripBtnZoomOut.Click += new System.EventHandler(this.toolStripZoomOut_Click_1);
            // 
            // toolStripBtnPan
            // 
            this.toolStripBtnPan.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripBtnPan.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripBtnPan.Name = "toolStripBtnPan";
            this.toolStripBtnPan.Size = new System.Drawing.Size(23, 22);
            this.toolStripBtnPan.Text = "平移";
            this.toolStripBtnPan.Click += new System.EventHandler(this.toolStripPan_Click);
            // 
            // toolStripBtnViewEntire
            // 
            this.toolStripBtnViewEntire.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripBtnViewEntire.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripBtnViewEntire.Name = "toolStripBtnViewEntire";
            this.toolStripBtnViewEntire.Size = new System.Drawing.Size(23, 22);
            this.toolStripBtnViewEntire.Text = "全屏显示";
            this.toolStripBtnViewEntire.Click += new System.EventHandler(this.toolStripViewEntire_Click);
            // 
            // openFileDialog1
            // 
            this.openFileDialog1.FileName = "openFileDialog1";
            // 
            // axSuperWorkspace1
            // 
            this.axSuperWorkspace1.Enabled = true;
            this.axSuperWorkspace1.Location = new System.Drawing.Point(0, 0);
            this.axSuperWorkspace1.Name = "axSuperWorkspace1";
            this.axSuperWorkspace1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSuperWorkspace1.OcxState")));
            this.axSuperWorkspace1.Size = new System.Drawing.Size(32, 32);
            this.axSuperWorkspace1.TabIndex = 1;
            // 
            // axSuperAnalyst1
            // 
            this.axSuperAnalyst1.Enabled = true;
            this.axSuperAnalyst1.Location = new System.Drawing.Point(49, 89);
            this.axSuperAnalyst1.Name = "axSuperAnalyst1";
            this.axSuperAnalyst1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSuperAnalyst1.OcxState")));
            this.axSuperAnalyst1.Size = new System.Drawing.Size(32, 32);
            this.axSuperAnalyst1.TabIndex = 1;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.SystemColors.ControlLight;
            this.ClientSize = new System.Drawing.Size(714, 470);
            this.Controls.Add(this.tableLayoutPanel1);
            this.Controls.Add(this.axSuperWorkspace1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
            this.tableLayoutPanel1.ResumeLayout(false);
            this.tableLayoutPanel1.PerformLayout();
            this.menuStrip1.ResumeLayout(false);
            this.menuStrip1.PerformLayout();
            this.splitContainer1.Panel1.ResumeLayout(false);
            this.splitContainer1.Panel2.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
            this.splitContainer1.ResumeLayout(false);
            this.splitContainer3.Panel1.ResumeLayout(false);
            this.splitContainer3.Panel2.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit();
            this.splitContainer3.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.axSuperWkspManager1)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperLegend1)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperTopo1)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperMap1)).EndInit();
            this.toolStrip1.ResumeLayout(false);
            this.toolStrip1.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperWorkspace1)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.axSuperAnalyst1)).EndInit();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
        private System.Windows.Forms.OpenFileDialog openFileDialog1;
        private AxSuperMapLib.AxSuperWorkspace axSuperWorkspace1;
        private System.Windows.Forms.StatusStrip statusStrip1;
        private System.Windows.Forms.SplitContainer splitContainer1;
        private System.Windows.Forms.SplitContainer splitContainer3;
        private AxSuperWkspManagerLib.AxSuperWkspManager axSuperWkspManager1;
        private AxSuperLegendLib.AxSuperLegend axSuperLegend1;
        private AxSuperTopoLib.AxSuperTopo axSuperTopo1;
        private AxSuperMapLib.AxSuperMap axSuperMap1;
        private System.Windows.Forms.MenuStrip menuStrip1;
        private System.Windows.Forms.ToolStripMenuItem ToolStripfile;
        private System.Windows.Forms.ToolStripMenuItem ToolStripOpen;
        private System.Windows.Forms.ToolStripMenuItem ToolStripClose;
        private System.Windows.Forms.ToolStripMenuItem ToolStripEx;
        private System.Windows.Forms.ToolStripMenuItem ToolStripMap;
        private System.Windows.Forms.ToolStripMenuItem toolStripPointSel;
        private System.Windows.Forms.ToolStripMenuItem toolStripZoomIn;
        private System.Windows.Forms.ToolStripMenuItem toolStripZoomOut;
        private System.Windows.Forms.ToolStripMenuItem toolStripman;
        private System.Windows.Forms.ToolStripMenuItem toolStripViewEntire;
        private System.Windows.Forms.ToolStripMenuItem ToolStripget;
        private System.Windows.Forms.ToolStrip toolStrip1;
        private System.Windows.Forms.ToolStripButton toolStripBtnPointSel;
        private System.Windows.Forms.ToolStripButton toolStripBtnZoomIn;
        private System.Windows.Forms.ToolStripButton toolStripBtnZoomOut;
        private System.Windows.Forms.ToolStripButton toolStripBtnPan;
        private System.Windows.Forms.ToolStripButton toolStripBtnViewEntire;
        private AxSuperAnalystLib.AxSuperAnalyst axSuperAnalyst1;
    }
}

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using SuperMapLib;
using System.IO;
using SuperTopoLib;
using System.Collections;

namespace experiment10
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void ConnectSuperMap()
        {//关联SuperMap,SuperWorkspaceManager控件
            object objWSHandle = this.axSuperWorkspace1.CtlHandle;
            object objSMHandle = this.axSuperMap1.CtlHandle;
            axSuperLegend1.Connect(objSMHandle);
            this.axSuperMap1.Connect(objWSHandle);
            this.axSuperWkspManager1.Connect(objWSHandle);

            ReleaseObjects(objWSHandle);
            ReleaseObjects(objSMHandle);

        }
        private void DisConnectSuperMap()
        {
            axSuperWkspManager1.Disconnect();
            axSuperLegend1.Disconnect();
            axSuperMap1.Disconnect();
            axSuperMap1.Close();
            axSuperWorkspace1.Close();
            axSuperMap1.Refresh();
        }

        private void ReleaseObjects(object superObject)
        {//释放对象
            if (superObject != null)
            {
                Marshal.ReleaseComObject(superObject);
                superObject = null;
            }
        }
        private void ControlState(seAction MapAction)
        {//设置工具栏和菜单的状态
            toolStripBtnPointSel.Checked = false;
            toolStripPointSel.Checked = false;
            toolStripBtnZoomOut.Checked = false;
            toolStripZoomOut.Checked = false;
            toolStripBtnZoomIn.Checked = false;
            toolStripZoomIn.Checked = false;
            toolStripBtnPan.Checked = false;

            if (MapAction == SuperMapLib.seAction.scaSelect)
            {
                toolStripBtnPointSel.Checked = true;
                toolStripPointSel.Checked = true;
            }
            else if (MapAction == SuperMapLib.seAction.scaZoomOut)
            {
                toolStripBtnZoomOut.Checked = true;
                toolStripZoomOut.Checked = true;
            }
            else if (MapAction == SuperMapLib.seAction.scaZoomIn)
            {
                toolStripBtnZoomIn.Checked = true;
                toolStripZoomIn.Checked = true;
            }
        }
        private void ToolStripOpen_Click(object sender, EventArgs e)
        {
            bool blnOpen = false;
            string strOpenPath = string.Empty;
            this.openFileDialog1.Title = "打开工作空间";
            this.openFileDialog1.FileName = "";
            this.openFileDialog1.Filter = "工作空间(.smw)|*.smw";
            this.openFileDialog1.InitialDirectory = System.IO.Path.GetFullPath(Application.ExecutablePath + @"\..\..\..\..\Data");
            if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                strOpenPath = this.openFileDialog1.FileName;
                this.ConnectSuperMap();//连接工作空间
                blnOpen = this.axSuperWorkspace1.Open(strOpenPath, "");//打开工作空间
                if (!blnOpen)
                {
                    MessageBox.Show("打开工作空间失败");
                    return;
                }
                else
                {//设置被选择面对象的风格
                    soSelection objSelection = axSuperMap1.selection;
                    soStyle objStyle = objSelection.Style;
                    objStyle.BrushStyle = 0;
                    objStyle.PenStyle = 0;
                    objStyle.BrushColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(255, 190, 189)));
                    objStyle.PenColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(0, 0, 255)));
                    ReleaseObjects(objStyle);
                    ReleaseObjects(objSelection);
                    this.axSuperWkspManager1.Refresh();
                    axSuperLegend1.Refresh();
                }
            }
            else
            {
                MessageBox.Show("打开工作空间失败");
                return;
            }
        }

        private void ToolStripClose_Click(object sender, EventArgs e)
        {
            axSuperWkspManager1.Disconnect();
            axSuperLegend1.Disconnect();
            axSuperMap1.Disconnect();
            axSuperMap1.Close();
            axSuperWorkspace1.Close();
            axSuperWkspManager1.Refresh();
            axSuperMap1.Refresh();
        }

        private void ToolStripEx_Click(object sender, EventArgs e)
        {//退出
            this.Close();
        }
        private void toolStripPointSel_Click(object sender, EventArgs e)
        {//点选
            axSuperMap1.Action = SuperMapLib.seAction.scaSelect;
            ControlState(seAction.scaSelect);
        }
        private void toolStripZoomIn_Click_1(object sender, EventArgs e)
        {
            //放大
            axSuperMap1.Action = SuperMapLib.seAction.scaZoomIn;
            ControlState(seAction.scaZoomIn);
        }

        private void toolStripZoomOut_Click_1(object sender, EventArgs e)
        {
            //缩小
            axSuperMap1.Action = SuperMapLib.seAction.scaZoomOut;
            ControlState(seAction.scaZoomOut);
        }

        private void toolStripPan_Click(object sender, EventArgs e)
        {//平移
            axSuperMap1.Action = SuperMapLib.seAction.scaPan;
            ControlState(seAction.scaPan);
        }
        private void axSuperWkspManager1_LDbClick(object sender, AxSuperWkspManagerLib._DSuperWkspManagerEvents_LDbClickEvent e)
        {
            switch (e.nFlag)
            {
                case SuperMapLib.seSelectedItemFlag.scsDataset:
                    {//当双击对象为数据集时,将数据集添加到地图窗口
                        soDataSources objDss = this.axSuperWorkspace1.Datasources;
                        soDataSource objDs = objDss[e.strParent];
                        soDatasets objDts = objDs.Datasets;
                        soDataset objDt = objDts[e.strSelected];
                        soLayers objLys = axSuperMap1.Layers;
                        soLayer objLy = objLys.AddDataset(objDt, true);//添加指定数据集到地图窗口中
                        this.axSuperMap1.ViewEntire();
                        axSuperMap1.Refresh();
                        axSuperLegend1.Refresh();
                        ReleaseObjects(objLy);
                        ReleaseObjects(objLys);
                        ReleaseObjects(objDt);
                        ReleaseObjects(objDs);
                        ReleaseObjects(objDts);
                        ReleaseObjects(objDss);
                        break;
                    }
                case SuperMapLib.seSelectedItemFlag.scsMap:
                    {//当双击对象为地图时,在地图窗口中显示当前地图
                        bool bResult;
                        soLayers objLys2 = axSuperMap1.Layers;
                        objLys2.RemoveAll();
                        bResult = axSuperMap1.OpenMap(e.strSelected);
                        axSuperMap1.ViewEntire();
                        axSuperMap1.Refresh();
                        axSuperLegend1.Refresh();
                        ReleaseObjects(objLys2);
                        break;
                    }
                case SuperMapLib.seSelectedItemFlag.scsSymbolLib:
                    {//当双击对象为点符号时,显示点符号编辑器
                        soResources objResources = this.axSuperWorkspace1.Resources;
                        soSymbolLib objSymbolLib = objResources.SymbolLib;
                        objSymbolLib.ShowEditor();
                        ReleaseObjects(objSymbolLib);
                        ReleaseObjects(objResources);
                        break;
                    }
                case SuperMapLib.seSelectedItemFlag.scsLineStyleLib:
                    {//当双击对象为线符号时,显示线符号编辑器
                        soResources objResources = this.axSuperWorkspace1.Resources;
                        soLineStyleLib objLineStyleLib = objResources.LineStyleLib;
                        objLineStyleLib.ShowEditor();
                        ReleaseObjects(objLineStyleLib);
                        ReleaseObjects(objResources);
                        break;
                    }
                case SuperMapLib.seSelectedItemFlag.scsFillStyleLib:
                    {//当双击对象为填充符号时,显示填充符号编辑器
                        soResources objResources = this.axSuperWorkspace1.Resources;
                        soFillStyleLib objFillLib = objResources.FillStyleLib;
                        objFillLib.ShowEditor();
                        ReleaseObjects(objFillLib);
                        ReleaseObjects(objResources);
                        break;
                    }
            }
        }

        private void axSuperMap1_DblClick(object sender, EventArgs e)
        {//双击对话框显示对象属性
            soSelection objSelection = this.axSuperMap1.selection;  //获得选择集;
            soRecordset objRd = objSelection.ToRecordset(false);    //转化为记录集;
            if (objRd == null)
            {
                MessageBox.Show("请进行地图点选或确认点选对象", "提示");
                return;
            }
            if (objRd.RecordCount > 0)
            {
                string str = "";
                for (int i = 1; i <= objRd.FieldCount; i++)//提取所选对象的属性数据
                {
                    str += objRd.GetFieldInfo(i).Name; //得到属性名                                                                  
                    str += ":" + objRd.GetFieldValue(i).ToString() + "\n"; //得到属性值                                                   
                }
                MessageBox.Show(str, "属性");
            }
            objRd.Close();
            ReleaseObjects(objSelection);
            ReleaseObjects(objRd);
        }

        private void axSuperMap1_MouseWheelEvent(object sender, AxSuperMapLib._DSuperMapEvents_MouseWheelEvent e)
        {
            if (e.zDelta > 0)//当滚轮向上滚动时表示地图放大
            {
                axSuperMap1.Zoom(2);
                axSuperMap1.Refresh();
            }
            else if (e.zDelta < 0)//当滚轮向下滚动时表示地图缩小
            {
                axSuperMap1.Zoom(0.5);
                axSuperMap1.Refresh();
            }
        }

        private void toolStripViewEntire_Click(object sender, EventArgs e)
        {//全幅显示
            axSuperMap1.ViewEntire();
            axSuperMap1.Refresh();
        }

        private void ToolStripget_Click(object sender, EventArgs e)
        {
            soLayers objLys = axSuperMap1.Layers;
            objLys.RemoveAll();
            axSuperMap1.Refresh();
            soDataSources objDSs = axSuperWorkspace1.Datasources;
            soDataSource objDs = objDSs[1];
            soDatasets objDatasets = objDs.Datasets;
            soDataset objDataset = objDatasets["Provinces_S"];
            if (objDataset == null)
            {
                MessageBox.Show("提取面边界线失败!", "提示");
                ReleaseObjects(objDSs);
                ReleaseObjects(objDs);
                ReleaseObjects(objDatasets);
                return;
            }
            soDatasetVector objDatasetv = (soDatasetVector)objDataset;
            soDataset objDatasete = objDatasets["Provices_S_L"];
            if (objDatasete != null)
            {
                objDs.DeleteDataset("Provices_S_L");
            }
            bool bExB = axSuperTopo1.ExtractBorder(objDatasetv, objDs, "Provices_S_L", "SmID", true);//拓扑构面
            if (bExB)
            {
                MessageBox.Show("提取面边界线成功!", "提示");
                soDataset objDataset1 = objDatasets["Provices_S_L"];
                soLayer objLy1 = objLys.AddDataset(objDataset1, true);//添加指定数据集到地图窗口中
                soStyle objStyle1 = objLy1.Style;
                objStyle1.BrushColor = (uint)ColorTranslator.ToOle(Color.FromArgb(0, 230, 244, 191));
                this.axSuperMap1.ViewEntire();
                axSuperMap1.Refresh();
                axSuperLegend1.Refresh();
                axSuperWkspManager1.Refresh();
                ReleaseObjects(objLy1);
                ReleaseObjects(objStyle1);
                ReleaseObjects(objDataset1);
            }
            else
            {
                MessageBox.Show("提取面边界线失败!", "提示");
            }
            ReleaseObjects(objLys);
            ReleaseObjects(objDSs);
            ReleaseObjects(objDs);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataset);
        }
    }
}

Form1.Designer.cs(附)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using SuperMapLib;
using System.IO;
using System.Collections;
using SuperTopoLib;
using SuperAnalystLib;

namespace experiment7
{
    public partial class Form1 : Form
    {
        string strOpath = string.Empty;
        public soRecordset gobjSelectRd = null;
        public soGeoPoint gobjSelectGeoPt = null;
        AnalystSetting frmAnalystSetting = null;
        PathAnalyst frmPathAnalyst = null;
        Layout frmLayout = null;
        private soPoints m_Points = null;
        private soStyle m_objStyle = null;
        private soPoint m_Point = null;
        private long ID;
        int flag = 0;
        int log = 0;
        public Form1()
        {
            InitializeComponent();
        }
        private void ConnectSuperMap()
        {//关联SuperMap,SuperWorkspaceManager控件
            object objWSHandle = this.axSuperWorkspace1.CtlHandle;
            object objSMHandle = this.axSuperMap1.CtlHandle;
            axSuperLegend1.Connect(objSMHandle);
            this.axSuperMap1.Connect(objWSHandle);
            this.axSuperAnalyst1.Connect(objWSHandle);
            this.axSuperWkspManager1.Connect(objWSHandle);

            ReleaseObjects(objWSHandle);
            ReleaseObjects(objSMHandle);

        }
        private void DisConnectSuperMap()
        {
            axSuperAnalyst1.Disconnect();
            axSuperWkspManager1.Disconnect();
            axSuperLegend1.Disconnect();
            axSuperMap1.Disconnect();
            axSuperMap1.Close();
            axSuperWorkspace1.Close();
            axSuperMap1.Refresh();
        }

        private void ReleaseObjects(object superObject)
        {//释放对象
            if (superObject != null)
            {
                Marshal.ReleaseComObject(superObject);
                superObject = null;
            }
        }
        private void ControlState(seAction MapAction)
        {//设置工具栏和菜单的状态
            toolStripPointSel.Checked = false;
            toolStripZoomOut.Checked = false;
            toolStripZoomIn.Checked = false;
            toolStripAutoZoom.Checked = false;
            toolStripPan.Checked = false;

            if (MapAction == SuperMapLib.seAction.scaSelect)
            {
                toolStripPointSel.Checked = true;
            }
            else if (MapAction == SuperMapLib.seAction.scaZoomOut)
            {
                toolStripZoomOut.Checked = true;
            }
            else if (MapAction == SuperMapLib.seAction.scaZoomIn)
            {
                toolStripZoomIn.Checked = true;
            }
            else if (MapAction == SuperMapLib.seAction.scaZoomFree)
            {
                toolStripAutoZoom.Checked = true;
            }
            else if (MapAction == SuperMapLib.seAction.scaPan)
            {
                toolStripPan.Checked = true;
            }
        }

        private void ToolStripOpenWS_Click(object sender, EventArgs e)
        {
            bool blnOpen = false;
            string strOpenPath = string.Empty;
            this.openFileDialog1.Title = "打开工作空间";
            this.openFileDialog1.FileName = "";
            this.openFileDialog1.Filter = "工作空间(.smw)|*.smw";
            this.openFileDialog1.InitialDirectory = System.IO.Path.GetFullPath(Application.ExecutablePath + @"\..\..\..\..\Data");
            if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                strOpenPath = this.openFileDialog1.FileName;
                this.strOpath = strOpenPath;
                this.ConnectSuperMap();//连接工作空间
                blnOpen = this.axSuperWorkspace1.Open(strOpenPath, "");//打开工作空间
                if (!blnOpen)
                {
                    MessageBox.Show("打开工作空间失败");
                    return;
                }
                else
                {//设置被选择面对象的风格
                    if (this.axSuperMap1.OpenMap("图斑线@topo"))
                    {
                        flag = 0;
                        log = 0;
                        ToolStripDataTackle.Enabled = true;
                        this.axSuperMap1.ViewEntire();
                        this.axSuperMap1.Refresh();
                    }
                    if(this.axSuperMap1.OpenMap("长春市区图"))
                    {
                        flag = 0;
                        log = 0;
                        mnuBufferQuery.Enabled = true;
                        this.axSuperMap1.ViewEntire();
                        this.axSuperMap1.Refresh();
                    }
                    if (this.axSuperMap1.OpenMap("土地利用图"))
                    {
                        flag = 0;
                        log = 0;
                        mnuOverlay.Enabled = true;
                        this.axSuperMap1.ViewEntire();
                        this.axSuperMap1.Refresh();
                    }
                    if (this.axSuperMap1.OpenMap("Changchun1"))
                    {
                        log = 0;
                        flag = 1;
                        this.WindowState = System.Windows.Forms.FormWindowState.Normal;
                        this.frmPathAnalyst = new PathAnalyst(this);
                        this.mnuNetAnalyst.Enabled = true;
                        Critical.Enabled = true;
                        this.axSuperMap1.ViewEntire();
                        this.axSuperMap1.Refresh();
                    }
                    if (this.axSuperMap1.OpenMap("Grid_Analysis"))
                    {
                        flag = 0;
                        log = 1;
                        mnuGridAnalyst.Enabled = true;
                        this.axSuperMap1.Layers.AddDataset(axSuperWorkspace1.Datasources[1].Datasets["AWS"], true);
                        this.axSuperWkspManager1.Refresh();
                        this.axSuperMap1.ViewEntire();
                        this.axSuperMap1.Refresh();
                        this.axSuperLegend1.Refresh();
                    }
                    if (this.axSuperMap1.OpenMap("基础地图"))
                    {
                        flag = 0;
                        log = 0;
                        专题图ToolStripMenuItem1.Enabled = true;
                        mnuOutputMapAsFile.Enabled = true;
                        mnuSaveMap.Enabled = true;
                        this.axSuperMap1.ViewEntire();
                        this.axSuperMap1.Refresh();
                    }
                    if (this.axSuperMap1.OpenMap("2003年各省农林牧渔业总产值绝对数(亿元)"))
                    {
                        flag = 0;
                        log = 0;
                        布局排版ToolStripMenuItem.Enabled = true;
                        this.axSuperMap1.ViewEntire();
                        this.axSuperMap1.Refresh();
                    }
                    soSelection objSelection = axSuperMap1.selection;
                    soStyle objStyle = objSelection.Style;
                    objStyle.BrushStyle = 0;
                    objStyle.PenStyle = 0;
                    objStyle.BrushColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(255, 190, 189)));
                    objStyle.PenColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(0, 0, 255)));
                    ReleaseObjects(objStyle);
                    ReleaseObjects(objSelection);
                    this.axSuperWkspManager1.Refresh();
                    axSuperLegend1.Refresh();
                }
            }
            else
            {
                MessageBox.Show("打开工作空间失败");
                return;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            axSuperMap1.BorderStyle = 1; //设置 SuperMap 控件的边框样式,BorderStyle = 0 时,为无边框;BorderStyle = 1 时,为单线边框
            soSelection mapSelection = axSuperMap1.selection;
            soStyle selStyle = mapSelection.Style;
            selStyle.BrushStyle = 2;
            selStyle.BrushColor = 16711680;
            selStyle.BrushBackTransparent = true;

            ReleaseObjects(mapSelection);
            ReleaseObjects(selStyle);
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {//退出系统时断开所有连接
            axSuperMap1.Close();
            axSuperWkspManager1.Disconnect();
            axSuperLegend1.Disconnect();
            axSuperMap1.Disconnect();
            axSuperMap1.Close();
            this.axSuperWorkspace1.Close();
            axSuperMap1.Refresh();
        }

        private void ToolStripCloseWS_Click_Click(object sender, EventArgs e)
        {//关闭工作空间
            if (axSuperMap1.OpenMap("图斑线@topo"))
            {
                ToolStripDataTackle.Enabled = false;
            }
            if (axSuperMap1.OpenMap("长春市区图"))
            {
                mnuBufferQuery.Enabled = false;
            }
            if (axSuperMap1.OpenMap("土地利用图"))
            {
                mnuOverlay.Enabled = false;
            }
            if (axSuperMap1.OpenMap("Changchun1"))
            {
                mnuNetAnalyst.Enabled = false;
                this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
                this.Critical.Enabled = false;
                this.Logistics.Enabled = false;
                this.ServiceArea.Enabled = false;
                this.ClosestFacility.Enabled = false;
                this.TSPPath.Enabled = false;
                this.mnuPath.Enabled = false;
            }
            if (this.axSuperMap1.OpenMap("Grid_Analysis"))
            {
                mnuGridAnalyst.Enabled = false;
            }
            if (this.axSuperMap1.OpenMap("基础地图"))
            {
                专题图ToolStripMenuItem1.Enabled = false;
                mnuOutputMapAsFile.Enabled = false;
                mnuSaveMap.Enabled = false;
            }
            布局排版ToolStripMenuItem.Enabled = false;
            axSuperWkspManager1.Disconnect();
            axSuperLegend1.Disconnect();
            axSuperMap1.Disconnect();
            axSuperMap1.Close();
            axSuperWorkspace1.Close();
            axSuperWkspManager1.Refresh();
            axSuperMap1.Refresh();
        }
        private void ToolStripEx(object sender, EventArgs e)
        {//退出
            this.Close();
        }

        private void toolStripPointSel_Click(object sender, EventArgs e)
        {//点选
            axSuperMap1.Action = SuperMapLib.seAction.scaSelect;
            ControlState(seAction.scaSelect);
        }
        private void toolStripZoomIn_Click_1(object sender, EventArgs e)
        {
            //放大
            axSuperMap1.Action = SuperMapLib.seAction.scaZoomIn;
            ControlState(seAction.scaZoomIn);
        }

        private void toolStripZoomOut_Click_1(object sender, EventArgs e)
        {
            //缩小
            axSuperMap1.Action = SuperMapLib.seAction.scaZoomOut;
            ControlState(seAction.scaZoomOut);
        }

        private void toolStripAutoZoom_Click_1(object sender, EventArgs e)
        {
            //自由缩放
            axSuperMap1.Action = SuperMapLib.seAction.scaZoomFree;
            ControlState(seAction.scaZoomFree);
        }

        private void toolStripPan_Click(object sender, EventArgs e)
        {
            //平移
            axSuperMap1.Action = SuperMapLib.seAction.scaPan;
            ControlState(seAction.scaPan);
        }

        private void toolStripViewEntire_Click(object sender, EventArgs e)
        {
            //全幅显示
            axSuperMap1.ViewEntire();
            axSuperMap1.Refresh();
        }
        private void ToolStriprefresh_Click(object sender, EventArgs e)
        {
            axSuperMap1.Refresh();
        }
        private void axSuperWkspManager1_LDbClick(object sender, AxSuperWkspManagerLib._DSuperWkspManagerEvents_LDbClickEvent e)
        {
            switch (e.nFlag)
            {
                case SuperMapLib.seSelectedItemFlag.scsDataset:
                    {//当双击对象为数据集时,将数据集添加到地图窗口
                        if(log == 1)
                        {
                            soDataSources objDss = null;
                            objDss = this.axSuperWorkspace1.Datasources;
                            soDataSource objDs = objDss[e.strParent];

                            soDatasets objDts = objDs.Datasets;
                            soDataset objDt = objDts[e.strSelected];
                            if (objDt.Type == seDatasetType.scdTabular)
                            {
                                soDatasetVector objDv = (soDatasetVector)objDt;
                                soRecordset objRec = objDv.Query("", false, null, "");
                                FrmAttibute frmChl = new FrmAttibute(objRec);
                                frmChl.ShowDialog(this);

                                Marshal.ReleaseComObject(objRec);
                                objRec = null;
                                Marshal.ReleaseComObject(objDv);
                                objDv = null;
                                Marshal.ReleaseComObject(objDt);
                                objDt = null;
                                Marshal.ReleaseComObject(objDs);
                                objDs = null;
                                Marshal.ReleaseComObject(objDts);
                                objDts = null;
                            }
                            else
                            {
                                soLayers objLys = this.axSuperMap1.Layers;
                                if (objLys.Count != 0)
                                {
                                    objLys.RemoveAll();
                                }

                                soLayer objLy = objLys.AddDataset(objDt, true);
                                this.axSuperMap1.ViewEntire();
                                axSuperMap1.Refresh();
                                axSuperLegend1.Refresh();
                                Marshal.ReleaseComObject(objLy);
                                objLy = null;
                                Marshal.ReleaseComObject(objLys);
                                objLys = null;
                                Marshal.ReleaseComObject(objDt);
                                objDt = null;
                                Marshal.ReleaseComObject(objDs);
                                objDs = null;
                                Marshal.ReleaseComObject(objDts);
                                objDts = null;
                                Marshal.ReleaseComObject(objDss);
                                objDss = null;
                            }
                        }
                        else
                        {
                            soDataSources objDss = this.axSuperWorkspace1.Datasources;
                            soDataSource objDs = objDss[e.strParent];
                            soDatasets objDts = objDs.Datasets;
                            soDataset objDt = objDts[e.strSelected];
                            soLayers objLys = axSuperMap1.Layers;
                            soLayer objLy = objLys.AddDataset(objDt, true);//添加指定数据集到地图窗口中
                            this.axSuperMap1.ViewEntire();
                            axSuperMap1.Refresh();
                            axSuperLegend1.Refresh();
                            ReleaseObjects(objLy);
                            ReleaseObjects(objLys);
                            ReleaseObjects(objDt);
                            ReleaseObjects(objDs);
                            ReleaseObjects(objDts);
                            ReleaseObjects(objDss);
                        }
                        break;
                    }
                case SuperMapLib.seSelectedItemFlag.scsMap:
                    {//当双击对象为地图时,在地图窗口中显示当前地图
                        bool bResult;
                        soLayers objLys2 = axSuperMap1.Layers;
                        objLys2.RemoveAll();
                        bResult = axSuperMap1.OpenMap(e.strSelected);
                        axSuperMap1.ViewEntire();
                        axSuperMap1.Refresh();
                        axSuperLegend1.Refresh();
                        ReleaseObjects(objLys2);
                        break;
                    }
                case SuperMapLib.seSelectedItemFlag.scsSymbolLib:
                    {//当双击对象为点符号时,显示点符号编辑器
                        soResources objResources = this.axSuperWorkspace1.Resources;
                        soSymbolLib objSymbolLib = objResources.SymbolLib;
                        objSymbolLib.ShowEditor();
                        ReleaseObjects(objSymbolLib);
                        ReleaseObjects(objResources);
                        break;
                    }
                case SuperMapLib.seSelectedItemFlag.scsLineStyleLib:
                    {//当双击对象为线符号时,显示线符号编辑器
                        soResources objResources = this.axSuperWorkspace1.Resources;
                        soLineStyleLib objLineStyleLib = objResources.LineStyleLib;
                        objLineStyleLib.ShowEditor();
                        ReleaseObjects(objLineStyleLib);
                        ReleaseObjects(objResources);
                        break;
                    }
                case SuperMapLib.seSelectedItemFlag.scsFillStyleLib:
                    {//当双击对象为填充符号时,显示填充符号编辑器
                        soResources objResources = this.axSuperWorkspace1.Resources;
                        soFillStyleLib objFillLib = objResources.FillStyleLib;
                        objFillLib.ShowEditor();
                        ReleaseObjects(objFillLib);
                        ReleaseObjects(objResources);
                        break;
                    }
            }
        }

        private void axSuperMap1_DblClick(object sender, EventArgs e)
        {//双击对话框显示对象属性
            soSelection objSelection = this.axSuperMap1.selection;  //获得选择集;
            soRecordset objRd = objSelection.ToRecordset(false);    //转化为记录集;
            if (objRd == null)
            {
                MessageBox.Show("请进行地图点选", "提示");
                return;
            }
            if (objRd.RecordCount > 0)
            {
                string str = "";
                for (int i = 1; i <= objRd.FieldCount; i++)//提取所选对象的属性数据
                {
                    str += objRd.GetFieldInfo(i).Name; //得到属性名                                                                  
                    str += ":" + objRd.GetFieldValue(i).ToString() + "\n"; //得到属性值                                                   
                }
                MessageBox.Show(str, "属性");
            }
            objRd.Close();
            ReleaseObjects(objSelection);
            ReleaseObjects(objRd);
        }

        private void axSuperMap1_MouseWheelEvent(object sender, AxSuperMapLib._DSuperMapEvents_MouseWheelEvent e)
        {
            if (e.zDelta > 0)//当滚轮向上滚动时表示地图放大
            {
                axSuperMap1.Zoom(2);
                axSuperMap1.Refresh();
            }
            else if (e.zDelta < 0)//当滚轮向下滚动时表示地图缩小
            {
                axSuperMap1.Zoom(0.5);
                axSuperMap1.Refresh();
            }
        }

        private void axSuperLegend1_Modified(object sender, EventArgs e)
        {
            axSuperMap1.Refresh();
        }

        private void ToolStripLineToRegion_Click(object sender, EventArgs e)
        {//线数据拓扑构面 如果数据源中已存在DLTB2数据集,请先删除,否则拓扑构面失败
            soLayers objLys = axSuperMap1.Layers;
            objLys.RemoveAll();  //移除所有数据集
            soDataSources objDSs = axSuperWorkspace1.Datasources;
            soDataSource objDs = objDSs["topo"];
            soDatasets objDatasets = objDs.Datasets;
            soDataset objDataset = objDatasets["DLJX"];
            if (objDataset == null)
            {
                ReleaseObjects(objLys);
                ReleaseObjects(objDSs);
                ReleaseObjects(objDs);
                ReleaseObjects(objDatasets);
                return;
            }
            axSuperTopo1.CleanIdenticalVertices = true; //去除冗余点
            axSuperTopo1.CleanRepeatedLines = true;   //去除重复线
            axSuperTopo1.ExtendDangleLines = true;    //延伸长悬线
            axSuperTopo1.IntersectLines = true;       //弧段求交
            axSuperTopo1.CleanOvershootDangles = true; //删除短悬线
            axSuperTopo1.MergePseudoNodes = true;      //合并假结点
            axSuperTopo1.MergeRedundantNodes = true;   //合并邻近端点
            axSuperTopo1.Clean(objDataset);  //对一个线或者网络数据集进行弧段求交、去除冗余点、合并邻近点、去除重复线、合并假结点、去除短悬线、长悬线延伸等拓扑处理操作。
            bool boolPolygon = axSuperTopo1.BuildPolygons(objDataset, objDs, "DLTB2");//拓扑构面
            if (boolPolygon)
            {
                MessageBox.Show("创建拓扑多边形成功!", "提示");
                soDataset objDataset1 = objDatasets["DLTB1"];
                soDataset objDatasetR = objDatasets["DLTB2"];
                axSuperMap1.OpenMap("图斑线@topo");//重新打开地图
                soLayer objLy1 = objLys.AddDataset(objDataset1, true);//添加指定数据集到地图窗口中
                soLayer objLy2 = objLys.AddDataset(objDatasetR, true);//添加指定数据集到地图窗口中
                soStyle objStyle1 = objLy1.Style;
                objStyle1.BrushColor = (uint)ColorTranslator.ToOle(Color.FromArgb(0, 230, 244, 191));
                soStyle objStyle2 = objLy2.Style;
                objStyle2.BrushColor = (uint)ColorTranslator.ToOle(Color.FromArgb(0, 255, 0, 0));
                this.axSuperMap1.ViewEntire();
                axSuperMap1.Refresh();
                axSuperLegend1.Refresh();
                axSuperWkspManager1.Refresh();
                ReleaseObjects(objLy1);
                ReleaseObjects(objLy2);
                ReleaseObjects(objStyle1);
                ReleaseObjects(objStyle2);
                ReleaseObjects(objDatasetR);
                ReleaseObjects(objDataset1);
            }
            ReleaseObjects(objLys);
            ReleaseObjects(objDSs);
            ReleaseObjects(objDs);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataset);
        }

        private void ToolStripCheckRepeatRegion_Click(object sender, EventArgs e)
        {//检查重复面
            soLayers objLys = axSuperMap1.Layers;
            objLys.RemoveAll();  //移除所有图层
            soDataSources objDSs = axSuperWorkspace1.Datasources;
            soDataSource objDs = objDSs["topo"];
            soDatasets objDatasets = objDs.Datasets;
            soDataset objDataset = objDatasets["DLTB2"];
            if (objDataset == null)
            {
                ReleaseObjects(objLys);
                ReleaseObjects(objDSs);
                ReleaseObjects(objDs);
                ReleaseObjects(objDatasets);
                return;
            }
            soDataset objDatasetCompare = objDatasets["DLTB1"];
            if (objDatasetCompare == null)
            {
                ReleaseObjects(objLys);
                ReleaseObjects(objDSs);
                ReleaseObjects(objDs);
                ReleaseObjects(objDatasets);
                ReleaseObjects(objDataset);
                return;
            }
            soTopoCheck objTopoCheck = new soTopoCheckClass();
            soDatasetVector objCheckVector;
            soDatasetVector objCompareVector;
            soDatasetVector objDatasetVector;
            objCheckVector = (soDatasetVector)objDataset;
            objCompareVector = (soDatasetVector)objDatasetCompare;
            objTopoCheck.PreprocessData = true;
            String strVectorName = "errorResult";//下行代码为检查重复面
            objDatasetVector = objTopoCheck.CheckTopoErrorEx(objDataset, objDatasetCompare, 3, objDs, strVectorName);
            if (objDatasetVector != null)
            {
                soDataset objDataset1 = objDatasets["DLTB1"];
                soDataset objDataset2 = objDatasets["DLTB2"];
                soDataset objDatasetR = objDatasets["errorResult"];
                axSuperMap1.OpenMap("图斑线@topo");//重新打开地图

                soLayer objLy1 = objLys.AddDataset(objDataset1, true);//添加指定数据集到地图窗口中
                soLayer objLy2 = objLys.AddDataset(objDataset2, true);//添加指定数据集到地图窗口中
                soLayer objLyR = objLys.AddDataset(objDatasetR, true);//添加指定数据集到地图窗口中
                soStyle objStyle1 = objLy1.Style;
                objStyle1.BrushColor = (uint)ColorTranslator.ToOle(Color.FromArgb(0, 230, 244, 191));
                soStyle objStyle2 = objLy2.Style;
                objStyle2.BrushColor = (uint)ColorTranslator.ToOle(Color.FromArgb(0, 115, 178, 255));
                soStyle objStyle = objLyR.Style;
                objStyle.BrushColor = (uint)ColorTranslator.ToOle(Color.Red);

                this.axSuperMap1.ViewEntire();
                axSuperMap1.Refresh();
                axSuperWkspManager1.Refresh();
                axSuperLegend1.Refresh();

                ReleaseObjects(objLy1);
                ReleaseObjects(objLy2);
                ReleaseObjects(objLyR);
                ReleaseObjects(objStyle1);
                ReleaseObjects(objStyle2);
                ReleaseObjects(objStyle);
                ReleaseObjects(objDatasetR);
                ReleaseObjects(objDataset1);
                ReleaseObjects(objDataset2);
            }
            ReleaseObjects(objLys);
            ReleaseObjects(objDSs);
            ReleaseObjects(objDs);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataset);
            ReleaseObjects(objDatasetCompare);
            ReleaseObjects(objCheckVector);
            ReleaseObjects(objCompareVector);
            ReleaseObjects(objDatasetVector);
            ReleaseObjects(objTopoCheck);
        }

        private void ToolStripRemoveRepeatRegion_Click(object sender, EventArgs e)
        {//去除重复面
            soLayers objLys = axSuperMap1.Layers;
            objLys.RemoveAll();  //移除所有图层
            soDataSources objDSs = axSuperWorkspace1.Datasources;
            soDataSource objDs = objDSs["topo"];
            soDatasets objDatasets = objDs.Datasets;
            soDataset objDataset = objDatasets["DLTB2"];
            if (objDataset == null)
            {
                ReleaseObjects(objLys);
                ReleaseObjects(objDSs);
                ReleaseObjects(objDs);
                ReleaseObjects(objDatasets);
                return;
            }
            soDataset objDatasetR = objDatasets["errorResult"];
            if (objDatasetR == null)
            {
                ReleaseObjects(objLys);
                ReleaseObjects(objDSs);
                ReleaseObjects(objDs);
                ReleaseObjects(objDatasets);
                ReleaseObjects(objDataset);
                return;
            }
            soDatasetVector objDtvE = (soDatasetVector)objDatasetR;//错误结果数据集
            soDatasetVector objDtvBeCheck = (soDatasetVector)objDataset;//被处理的数据集
            soDataset objDatasetResult = objDs.CreateDataset("Result", seDatasetType.scdRegion, seDatasetOption.scoDefault, null);   //新建用于存放结果的数据集
            if (objDatasetResult == null)
            {
                //如果没建成功有可能是数据源里已有这个数据集了
                objDatasetResult = objDatasets["Result"];
            }
            soDatasetVector objDtvResult = (soDatasetVector)objDatasetResult;
            soOverlayAnalyst objAnalyst = new soOverlayAnalyst(); //新建叠加分析对象
            if (objAnalyst.Erase(objDtvBeCheck, objDtvE, objDtvResult)) //擦除
            {
                MessageBox.Show("数据集裁剪成功!", "提示");
            }
            soLayer objLayerR = objLys.AddDataset(objDatasetR, true);
            soLayer objLayerResult = objLys.AddDataset(objDatasetResult, true);
            soStyle objStyleResult = objLayerResult.Style;
            objStyleResult.BrushColor = (uint)ColorTranslator.ToOle(Color.FromArgb(0, 230, 244, 191));
            soStyle objStyleR = objLayerR.Style;
            objStyleR.BrushColor = (uint)ColorTranslator.ToOle(Color.FromArgb(0, 255, 0, 0));

            axSuperMap1.Refresh();
            axSuperLegend1.Refresh();
            axSuperWkspManager1.Refresh();

            ReleaseObjects(objLys);
            ReleaseObjects(objDSs);
            ReleaseObjects(objDs);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataset);
            ReleaseObjects(objDatasetR);
            ReleaseObjects(objLayerR);
            ReleaseObjects(objLayerResult);
            ReleaseObjects(objStyleR);
            ReleaseObjects(objLayerResult);
            ReleaseObjects(objDtvE);
            ReleaseObjects(objDtvBeCheck);
            ReleaseObjects(objDatasetResult);
            ReleaseObjects(objDtvResult);
            ReleaseObjects(objAnalyst);
        }

        private void ToolStripDataUnion_Click(object sender, EventArgs e)
        {//两数据集合并 将Result中的记录追加到DLTB1里
            soLayers objLys = axSuperMap1.Layers;
            objLys.RemoveAll();  //移除所有图层
            soDataSources objDSs = axSuperWorkspace1.Datasources;
            soDataSource objDs = objDSs["topo"];
            soDatasets objDatasets = objDs.Datasets;
            soDataset objDataset = objDatasets["DLTB1"];
            if (objDataset == null)
            {
                ReleaseObjects(objLys);
                ReleaseObjects(objDSs);
                ReleaseObjects(objDs);
                ReleaseObjects(objDatasets);
                return;
            }
            soDataset objDatasetR = objDatasets["Result"];
            if (objDatasetR == null)
            {
                ReleaseObjects(objLys);
                ReleaseObjects(objDSs);
                ReleaseObjects(objDs);
                ReleaseObjects(objDatasets);
                ReleaseObjects(objDataset);
                return;
            }
            soDatasetVector objDtvAppend = (soDatasetVector)objDatasetR;
            soRecordset objRecordset = objDtvAppend.Query("", true, null, "");
            soDatasetVector objDtvBeApppend = (soDatasetVector)objDataset;
            if (objDtvBeApppend.Append(objRecordset, true)) //数据集追加
            {
                MessageBox.Show("数据集追加成功", "提示");
            }
            soLayer objLayer = objLys.AddDataset(objDataset, true);
            soStyle objStyle = objLayer.Style;
            objStyle.BrushColor = (uint)ColorTranslator.ToOle(Color.FromArgb(0, 230, 244, 191));
            objRecordset.Close();

            axSuperMap1.Refresh();
            axSuperLegend1.Refresh();
            axSuperWkspManager1.Refresh();

            ReleaseObjects(objLys);
            ReleaseObjects(objDSs);
            ReleaseObjects(objDs);
            ReleaseObjects(objStyle);
            ReleaseObjects(objLayer);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataset);
            ReleaseObjects(objDatasetR);
            ReleaseObjects(objDtvAppend);
            ReleaseObjects(objRecordset);
            ReleaseObjects(objDtvBeApppend);
        }

        private void mnuCreateBuffer_Click(object sender, EventArgs e)
        {//创建缓冲区
            //设置缓冲区对象的风格
            soStyle objStyle = new soStyleClass();
            objStyle.BrushStyle = 2;
            objStyle.BrushBackTransparent = true;
            objStyle.PenColor = (uint)ColorTranslator.ToOle(Color.Blue);
            objStyle.PenWidth = 5;
            objStyle.BrushColor = (uint)ColorTranslator.ToOle(Color.DarkRed);

            soTrackingLayer objTrackingLayer = axSuperMap1.TrackingLayer;
            soSelection objSelect = axSuperMap1.selection;//获得选择集,选择火炬传递路线
            soRecordset objSelectRd = objSelect.ToRecordset(true);//将选择集转化为记录集
            objSelectRd.MoveFirst();
            soGeoRegion objBufferRegion = null;
            objTrackingLayer.ClearEvents();
            for (int iRecordCount = 1; iRecordCount <= objSelectRd.RecordCount; iRecordCount++)
            {
                soGeometry objSelectGeo = objSelectRd.GetGeometry();
                if (objSelectGeo.Type == seGeometryType.scgLine)
                {
                    soGeoLine objGeoLine = (soGeoLine)objSelectGeo;
                    soSpatialOperator objspOper = objGeoLine.SpatialOperator;
                    //进行缓冲区分析
                    objBufferRegion = objspOper.Buffer(200, 20);//根据200米范围作查询,光滑系数设置为20
                }

                if (objBufferRegion != null)
                {
                    soTextPart oTp = new soTextPartClass();
                    soGeoText oGt = new soGeoTextClass();
                    soTextStyle oTStyle = new soTextStyleClass();
                    oTp.Text = "200米警戒范围";
                    oTp.x = objBufferRegion.CentroidPoint.x;
                    oTp.y = objBufferRegion.CentroidPoint.y;
                    oGt.AddPart(oTp);
                    oTStyle.Align = seTextAlign.sctMiddleCenter;
                    oTStyle.FontHeight = 200;
                    oTStyle.Color = (uint)ColorTranslator.ToOle(Color.Red);
                    oTStyle.Bold = true;
                    oGt.TextStyle = oTStyle;

                    objTrackingLayer.AddEvent((soGeometry)oGt, null, "");//将文本添加到跟踪层上显示
                    objTrackingLayer.AddEvent((soGeometry)objBufferRegion, objStyle, "");//将缓冲范围添加到跟踪层上显示

                    Marshal.ReleaseComObject(objBufferRegion);
                    objBufferRegion = null;
                    Marshal.ReleaseComObject(oTp);
                    oTp = null;
                    Marshal.ReleaseComObject(oTStyle);
                    oTStyle = null;
                    Marshal.ReleaseComObject(oGt);
                    oGt = null;
                }

                Marshal.ReleaseComObject(objSelectGeo);
                objSelectGeo = null;

                objSelectRd.MoveNext();
            }
            objTrackingLayer.Refresh();
            mnuQuery.Enabled = true;
            Marshal.ReleaseComObject(objSelectRd);
            objSelectRd = null;
            Marshal.ReleaseComObject(objSelect);
            objSelect = null;
            Marshal.ReleaseComObject(objStyle);
            objStyle = null;
            Marshal.ReleaseComObject(objTrackingLayer);
            objTrackingLayer = null;
        }

        private void mnuQuery_Click(object sender, EventArgs e)
        {//缓冲区查询
            soTrackingLayer objTrackingLayer = axSuperMap1.TrackingLayer;
            //设置点风格
            soStyle objStyle = new soStyleClass();
            objStyle.PenColor = (uint)ColorTranslator.ToOle(Color.Blue);
            objStyle.PenWidth = 20;
            objStyle.SymbolSize = 24;
            objStyle.SymbolStyle = 66;
            soGeoEvent objGeoEv = objTrackingLayer.get_Event(2);
            soGeometry objTrackedGeo = objGeoEv.geometry;
            soGeoRegion objGeoregion = (soGeoRegion)objTrackedGeo;

            soLayers objLys = axSuperMap1.Layers;
            //查询政府单位这个图层的信息
            soLayer objLy = objLys["Government@changchun"];
            soDataset objDt = objLy.Dataset;
            soDatasetVector objDtv = (soDatasetVector)objDt;
            //进行空间查询,查询所有包含在缓冲区内的政府单位点对象
            soRecordset objRd = objDtv.QueryEx((soGeometry)objGeoregion, seSpatialQueryMode.scsContaining, "Code=3");
            if (objRd != null)
            {
                objRd.MoveFirst();
                for (int iRecordCount = 1; iRecordCount <= objRd.RecordCount; iRecordCount++)
                {
                    soGeometry oGeo = objRd.GetGeometry();
                    soTextStyle oTStyl = new soTextStyleClass();
                    oTStyl.FontHeight = 200;
                    oTStyl.Align = seTextAlign.sctBottomLeft;
                    soTextPart oTp = new soTextPartClass();
                    oTp.Text = "警力:" + objRd.GetFieldValue("Power").ToString() + "人";
                    soGeoPoint oGp = (soGeoPoint)oGeo;
                    oTp.x = oGp.x;
                    oTp.y = oGp.y;

                    soGeoText oGt = new soGeoTextClass();
                    oGt.AddPart(oTp);
                    oGt.TextStyle = oTStyl;
                    objTrackingLayer.AddEvent(oGeo, objStyle, "");//跟踪层添加点对象
                    objTrackingLayer.AddEvent((soGeometry)oGt, null, "");//跟踪层添加文本
                    Marshal.ReleaseComObject(oTStyl);
                    oTStyl = null;
                    Marshal.ReleaseComObject(oGeo);
                    oGeo = null;
                    Marshal.ReleaseComObject(oGp);
                    oGp = null;
                    Marshal.ReleaseComObject(oGt);
                    oGt = null;
                    Marshal.ReleaseComObject(oTp);
                    oTp = null;
                    objRd.MoveNext();

                }
                objTrackingLayer.Refresh();
            }
            else
            {
                MessageBox.Show("没有符合条件的记录", "提示");
                return;
            }

            Marshal.ReleaseComObject(objRd);
            objRd = null;
            Marshal.ReleaseComObject(objDtv);
            objDtv = null;
            Marshal.ReleaseComObject(objDt);
            objDt = null;
            Marshal.ReleaseComObject(objLy);
            objLy = null;
            Marshal.ReleaseComObject(objLys);
            objLys = null;
            Marshal.ReleaseComObject(objGeoregion);
            objGeoregion = null;
            Marshal.ReleaseComObject(objTrackedGeo);
            objTrackedGeo = null;
            Marshal.ReleaseComObject(objStyle);
            objStyle = null;
            Marshal.ReleaseComObject(objGeoEv);
            objGeoEv = null;
            Marshal.ReleaseComObject(objTrackingLayer);
            objTrackingLayer = null;
        }
        private void AddPointInfo(soGeoPoint objGp, ListView lview)
        {
            //向listview添加所选对象的相关内容
            lview.Items.Add((lview.Items.Count + 1).ToString());
            lview.Items[lview.Items.Count - 1].SubItems.Add(objGp.ID.ToString());
            lview.Items[lview.Items.Count - 1].SubItems.Add(objGp.x.ToString());
            lview.Items[lview.Items.Count - 1].SubItems.Add(objGp.y.ToString());
        }

        private void axSuperMap1_GeometrySelected(object sender, AxSuperMapLib._DSuperMapEvents_GeometrySelectedEvent e)
        {//选择几何对象
            if (flag == 1)
            {
                soSelection objSelect = axSuperMap1.selection;
                soStyle objStyle = new soStyle();
                objStyle.PenColor = (uint)ColorTranslator.ToOle(Color.Red);
                objStyle.PenWidth = 40;
                objSelect.Style = objStyle;
                if (objSelect.Dataset.Type == seDatasetType.scdPoint)
                {
                    this.gobjSelectRd = objSelect.ToRecordset(false);
                    this.gobjSelectRd.MoveFirst();
                    m_Point = new soPoint();
                    this.gobjSelectGeoPt = (soGeoPoint)gobjSelectRd.GetGeometry();

                    ID = gobjSelectRd.GetID();
                    AddPointInfo(this.gobjSelectGeoPt, this.frmPathAnalyst.listView1);

                    Marshal.ReleaseComObject(objSelect);
                    objSelect = null;
                }
                else
                {
                    MessageBox.Show("请选择点对象!", "提示");
                }
                Marshal.ReleaseComObject(objStyle);
                objStyle = null;
                }
            else
            {
                soSelection objSelect = this.axSuperMap1.selection;
                if (objSelect.Count != 0)
                {
                    this.mnuCreateBuffer.Enabled = true;
                }
                else
                {
                    this.mnuCreateBuffer.Enabled = false;
                }
            }
        }

        private void ToolStripclear_Click(object sender, EventArgs e)
        {
            soTrackingLayer objTrl = axSuperMap1.TrackingLayer;
            objTrl.ClearEvents();
            objTrl.Refresh();
            axSuperMap1.Refresh();
            Marshal.ReleaseComObject(objTrl);
            objTrl = null;
        }
        private ArrayList GetPoints(string filePath)
        {//读取文本文件,获得坐标点信息
            FileStream fileStream = File.OpenRead(filePath);
            StreamReader streamReader = new StreamReader(fileStream);
            string strTmp = "";
            ArrayList arrayList = new ArrayList();
            while ((strTmp = streamReader.ReadLine()) != null)
            {
                //获得坐标                
                string[] strXY = strTmp.Split(',');
                int tmpCount = strXY.Length;
                for (int i = 0; i < tmpCount; i++)
                {
                    arrayList.Add(strXY[i]);
                }
            }
            fileStream.Close();
            return arrayList;
        }
        private void StaticRegion(soGeoRegion geoRegion)
        {
            //对绘制的或者通过读入文本文件中的坐标值构造的面对象进行处理
            soStyle regionStyle = new soStyle();
            regionStyle.PenColor = 0;
            regionStyle.BrushColor = 255;
            regionStyle.BrushStyle = 0;
            regionStyle.PenStyle = 0;
            regionStyle.BrushOpaqueRate = 80;

            soTrackingLayer trackLayer = axSuperMap1.TrackingLayer;//跟踪层
            trackLayer.ClearEvents();
            trackLayer.AddEvent(geoRegion as soGeometry, regionStyle, "");//添加绘制的面到跟踪层

            ReleaseObjects(regionStyle);
            ReleaseObjects(trackLayer);

            soLayers mapLayers = axSuperMap1.Layers;
            soLayer mapLayer = mapLayers["地类图斑@某县"];//地类图斑图层
            if (mapLayer == null)
            {
                ReleaseObjects(mapLayers);
                MessageBox.Show("请打开土地利用图");
                return;
            }
            soDataset dataSet = mapLayer.Dataset;//地类图斑数据集
            soDatasetVector dataSetV = dataSet as soDatasetVector;

            soDataSources dataSources = axSuperWorkspace1.Datasources;
            soDataSource dataSource = dataSources[1];
            string dtName = dataSource.GetUnoccupiedDatasetName("clip");//用clip数据集作为模板创建一个新数据集存储结果,因此结果数据集都以clip开头
            soDataset newDt = dataSource.CreateDatasetFrom(dtName, dataSetV);
            soDatasetVector newDtV = newDt as soDatasetVector;

            string staticInfo = "";
            soOverlayAnalyst overlayAnalyt = new soOverlayAnalyst();
            bool bClip = overlayAnalyt.Clip(dataSetV, geoRegion, newDtV);//用新绘制或者导入的面对地类图斑进行裁剪
            if (bClip == true)
            {
                soStrings fieldList = new soStrings();
                fieldList.Add("DLMC as 地类名称"); //设置查询返回的字段
                fieldList.Add("Sum(TBMJ) as 图斑面积"); //统计图斑面积
                soRecordset recordSet = newDtV.Query("", false, fieldList, "group by DLMC");//统计裁剪结果中包含的各地类及面积
                if (recordSet != null)
                {
                    string strTmp = "";
                    while (recordSet.IsEOF() == false)
                    {
                        strTmp = "地类名称:" + recordSet.GetFieldValue(1).ToString() +
                                 ",图斑面积:" + recordSet.GetFieldValue(2).ToString();
                        staticInfo += strTmp + "\n";
                        recordSet.MoveNext();
                    }
                }
                recordSet.Close();
                ReleaseObjects(recordSet);
                ReleaseObjects(fieldList);

                axSuperWkspManager1.Refresh();
            }
            else
            {
                staticInfo = "裁剪失败";
            }
            ReleaseObjects(mapLayers);
            ReleaseObjects(mapLayer);
            ReleaseObjects(dataSet);
            ReleaseObjects(dataSetV);
            ReleaseObjects(dataSources);
            ReleaseObjects(dataSource);
            ReleaseObjects(newDt);
            ReleaseObjects(newDtV);
            ReleaseObjects(overlayAnalyt);

            axSuperMap1.EnsureVisibleGeometry(geoRegion as soGeometry, 3);
            axSuperMap1.Refresh();

            MessageBox.Show(staticInfo, "统计结果");//显示分类统计的结果
        }
        private void mnuOverlayDraw_Click(object sender, EventArgs e)
        {//绘制建设用地面对象
            axSuperMap1.Action = seAction.scaTrackPolygon;
        }

        private void mnuOverlayImport_Click(object sender, EventArgs e)
        {//导入建设用地
            openFileDialog1.Title = "导入坐标文件";
            openFileDialog1.Filter = "坐标文件(*.txt)|*.txt";
            openFileDialog1.FileName = "";
            openFileDialog1.InitialDirectory = Application.StartupPath + @"..\..\..\..\Data\";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog1.FileName;
                ArrayList points = GetPoints(filePath);

                int pointCount = points.Count / 2;
                soPoints tmpPoints = new soPoints();
                for (int i = 0; i < pointCount; i++)
                {
                    double dx = Convert.ToDouble(points[i * 2]);
                    double dy = Convert.ToDouble(points[i * 2 + 1]);
                    tmpPoints.Add2(dx, dy);//构造点集合,读取的文本文件中的坐标值
                }
                //tmpPoints.Add(tmpPoints[1]);
                soGeoRegion geoRegion = new soGeoRegion();
                geoRegion.AddPart(tmpPoints);  //构造面对象

                StaticRegion(geoRegion);  //构造的新面对象

                ReleaseObjects(geoRegion);
                ReleaseObjects(tmpPoints);
            }
        }

        private void mnuOverlayUnion_Click(object sender, EventArgs e)
        {//统计各村土地情况
            soLayers mapLayers = axSuperMap1.Layers;
            soLayer mapLayerDLTB = mapLayers["地类图斑@某县"];//地类图斑图层
            soLayer mapLayerDistrict = mapLayers["行政区@某县"];//行政区图层
            if (mapLayerDLTB == null || mapLayerDistrict == null)
            {
                ReleaseObjects(mapLayers);
                MessageBox.Show("请打开土地利用图");
                return;
            }
            soDataset dataSetDLTB = mapLayerDLTB.Dataset;//地类图斑数据集
            soDatasetVector dataSetVDLTB = dataSetDLTB as soDatasetVector;
            soDataset dataSetDistrict = mapLayerDistrict.Dataset;//行政区数据集
            soDatasetVector dataSetVDistrict = dataSetDistrict as soDatasetVector;

            soDataSources dataSources = axSuperWorkspace1.Datasources;
            soDataSource dataSource = dataSources[1];
            soDataset dataSetUnionResult = dataSource.Datasets["UnionResult"]; //一个新建的面数据集作为模板,用于创建一个新的面数据集,保存合并的结果
            soDatasetVector dataSetVUnionResult = dataSetUnionResult as soDatasetVector;

            string dtNameUnion = dataSource.GetUnoccupiedDatasetName("UnionResult"); //用UnionResult面数据集作为模板创建一个新数据集存储结果,因此结果数据集都以UnionResult开头
            soDataset newDtUnion = dataSource.CreateDatasetFrom(dtNameUnion, dataSetVUnionResult);//采用模板创建一个面数据集
            soDatasetVector newDtVUnion = newDtUnion as soDatasetVector;

            string staticInfo = "与泉村土地利用情况如下:" + "\n";  //统计一个村的情况
            soOverlayAnalyst overlayAnalyt = new soOverlayAnalyst(); //叠加分析对象
            bool bUnion = overlayAnalyt.Union(dataSetVDLTB, dataSetVDistrict, newDtVUnion, true); //用新绘制或者导入的面对地类图斑进行裁剪
            if (bUnion == true)
            {
                soStrings fieldList = new soStrings();
                fieldList.Add("DLMC as 地类名称");   //设置查询返回的字段
                fieldList.Add("Sum(TBMJ) as 图斑面积");  //统计各图斑类型的总面积
                soRecordset recordSet = newDtVUnion.Query("XZQMC like '与泉村' ", false, fieldList, "group by DLMC");//统计合并结果中“与泉村”这个面包含的各地类类型及面积
                if (recordSet != null)
                {
                    string strTmp = "";
                    while (recordSet.IsEOF() == false)
                    {
                        strTmp = "地类类型:" + recordSet.GetFieldValue(1).ToString() +
                                 ",图斑面积:" + recordSet.GetFieldValue(2).ToString();
                        staticInfo += strTmp + "\n";
                        recordSet.MoveNext();
                    }
                }
                recordSet.Close();
                ReleaseObjects(recordSet);
                ReleaseObjects(fieldList);
                axSuperWkspManager1.Refresh();
            }
            else
            {
                MessageBox.Show("合并失败");
            }
            ReleaseObjects(mapLayers);
            ReleaseObjects(mapLayerDLTB);
            ReleaseObjects(dataSetDLTB);
            ReleaseObjects(dataSetVDLTB);
            ReleaseObjects(mapLayerDistrict);
            ReleaseObjects(dataSetDistrict);
            ReleaseObjects(dataSetVDistrict);
            ReleaseObjects(dataSources);
            ReleaseObjects(dataSource);
            ReleaseObjects(newDtUnion);
            ReleaseObjects(newDtVUnion);
            ReleaseObjects(dataSetUnionResult);
            ReleaseObjects(dataSetVUnionResult);
            ReleaseObjects(overlayAnalyt);
            MessageBox.Show(staticInfo, "统计信息");//显示分类统计的结果
        }

        private void axSuperMap1_Tracked(object sender, EventArgs e)
        {
            soGeometry geometry = axSuperMap1.TrackedGeometry;
            soGeoRegion geoRegion = geometry as soGeoRegion;

            StaticRegion(geoRegion); //绘制的新面对象

            ReleaseObjects(geometry);
            ReleaseObjects(geoRegion);
        }
        private void ClearTrackLayer()
        {
            soTrackingLayer trackLayer = this.axSuperMap1.TrackingLayer;
            trackLayer.ClearEvents();
            trackLayer.Refresh();
            ReleaseObjects(trackLayer);
            this.axSuperMap1.Refresh();
        }

        private void mnuAnalystSetting_Click(object sender, EventArgs e)
        {//网络分析环境设置
            this.frmAnalystSetting = new AnalystSetting(this);
            if (this.frmAnalystSetting.ShowDialog() == DialogResult.OK)
            {
                TSPPath.Enabled = frmAnalystSetting.ItemEnabled;
                Logistics.Enabled = frmAnalystSetting.ItemEnabled;
                mnuPath.Enabled = frmAnalystSetting.ItemEnabled;

                this.axSuperAnalyst1.NetworkAnalyst.Tolerance = frmAnalystSetting.Tolerance;
                this.axSuperAnalyst1.NetworkAnalyst.NetworkSetting.NodeIDField = frmAnalystSetting.NetworkSetting.NodeIDField;
                this.axSuperAnalyst1.NetworkAnalyst.NetworkSetting.EdgeIDField = frmAnalystSetting.NetworkSetting.EdgeIDField;
                this.axSuperAnalyst1.NetworkAnalyst.NetworkSetting.FTWeightField = frmAnalystSetting.NetworkSetting.FTWeightField; ;
                this.axSuperAnalyst1.NetworkAnalyst.NetworkSetting.TFWeightField = frmAnalystSetting.NetworkSetting.TFWeightField;
            }
        }

        private void mnuPath_Click(object sender, EventArgs e)
        { //最佳路径分析
            this.frmPathAnalyst = new PathAnalyst(this);
            this.frmPathAnalyst.Show();
        }

        private void TSPPathToolStripMenuItem_Click(object sender, EventArgs e)
        {//旅行商分析,先不指定终止点
            soNetworkAnalystEx objNetworkAnalyst = this.axSuperAnalyst1.NetworkAnalyst;
            objNetworkAnalyst.OutputDatasourceAlias = "result";
            soNetworkSetting objNetworkSetting = objNetworkAnalyst.NetworkSetting;
            objNetworkSetting.NetworkDataset = (soDatasetVector)this.axSuperWorkspace1.Datasources[1].Datasets["RoadNet"];

            System.DateTime now = System.DateTime.Now;
            String strNowDate = "" + now.Year + now.Month + now.Day + now.Hour + now.Minute + now.Second + now.Millisecond;
            soPathResultSetting objPathResult = new soPathResultSetting();

            soLongArray objLongArray = new soLongArrayClass();
            soDataSource objDataSource = axSuperWorkspace1.Datasources[1];
            soDatasets objDatasets = objDataSource.Datasets;
            //旅行商经过的站点,使用网络结点,需历经的 ID 为(5415,4538,4313,3832,4280)
            objLongArray.Add(5415);
            objLongArray.Add(4538);
            objLongArray.Add(4313);
            objLongArray.Add(3832);
            objLongArray.Add(4280);

            //行驶导引表信息
            soPathResultInfo objPathInfo = new soPathResultInfo();
            objPathResult.PathTableEnabled = true;   //创建行驶导引表
            string strDtName = "引导表";
            objPathResult.PathTableName = strDtName; //设置行驶导引表的名称
            objPathResult.RouteDatasetEnabled = true;   //创建结果路由数据集
            string strpathname = "Path";
            objPathResult.RouteDatasetName = strpathname;  //结果路由数据集名称
            objPathResult.NodeIDsEnabled = true; //获取分析结果路线的结点ID
            objPathResult.EdgeIDsEnabled = true; //获取分析结果路线的弧段ID
            objPathResult.EdgeNameField = "NameTime";  //行驶导引表中的弧段名称字段
            objPathResult.NodeNameField = "NAME_E";  //行驶导引表中的节点名称字段
            objPathResult.ResultCostEnabled = true;  //输出结果耗费信息
            bool bTspResult = objNetworkAnalyst.TSPPathEx2(objLongArray, objPathResult, objPathInfo, false, 10000);
            if (bTspResult == true)
            {
                //oLayers this.axSuperMap1.Layers = this.axSuperMap1.Layers;
                soLayer objLy = this.axSuperMap1.Layers[1];
                soDataset objDt = objLy.Dataset;
                soDatasetVector objDtv = (soDatasetVector)objDt;
                soTrackingLayer oTLy;
                //设置添加跟踪层上的风格
                oTLy = this.axSuperMap1.TrackingLayer;
                this.m_objStyle = new soStyle();
                this.m_objStyle.PenColor = (uint)ColorTranslator.ToOle(Color.Purple);
                this.m_objStyle.PenWidth = 8;
                this.m_objStyle.SymbolSize = 50;
                ////获取数据源数据集集合
                soDataSources objDss = this.axSuperWorkspace1.Datasources;
                soDataSource objDs = objDss[objNetworkAnalyst.OutputDatasourceAlias];
                soDatasets objDts = objDs.Datasets;
                oTLy.ClearEvents();

                /////////////////////////////////////////////////////////////////////////////////
                //添加路由结果在跟踪层上
                soDataset objPathdt = objDts[strpathname];
                soDatasetVector objPathdtv = (soDatasetVector)objPathdt;
                if (objPathdtv == null) return;
                soRecordset objPathrst = objPathdtv.Query("", true, null, "");
                soGeoLineM objGeoLineM = null;
                soPointMs objPtMs = null;
                soPointM objPtM = null;
                soGeoPoint objTempGeopt = new soGeoPointClass();
                for (int i = 1; i <= objPathrst.RecordCount; i++)
                {
                    soGeometry objtempgeo = objPathrst.GetGeometry();
                    objGeoLineM = (soGeoLineM)objtempgeo;
                    objPtMs = objGeoLineM.GetPartAt(1);                 //获取线标点串
                    objPtM = objPtMs[objPtMs.Count];     //取得最后一个线标点
                    objTempGeopt.x = objPtM.x;
                    objTempGeopt.y = objPtM.y;
                    oTLy.AddEvent(objtempgeo, this.m_objStyle, "");
                }
                oTLy.Refresh(); //刷新跟踪层,刷新工作空间管理器  
            }
            else
            {
                MessageBox.Show("旅行商分析失败!", "提示");
                return;
            }
            this.axSuperMap1.Action = seAction.scaNull;
        }

        private void 选择事件点ToolStripMenuItem_Click(object sender, EventArgs e)
        {// 设置事件点
            axSuperMap1.Action = seAction.scaSelect;
        }

        private void 查找设施点ToolStripMenuItem_Click(object sender, EventArgs e)
        {//进行最近设施点查找
            if (ID <= 0)
            {
                MessageBox.Show("请先设置网络分析站点!", "提示");
                return;
            }
            ClearTrackLayer();
            soDataSources objDss = this.axSuperWorkspace1.Datasources;
            soDataSource objDs = objDss[1];
            soDatasets objDts = objDs.Datasets;
            soDataset objDt = objDts["Hospital"];
            if (objDt == null) return;
            soDatasetVector objFacDtv = (soDatasetVector)objDt;
            //获取设施点串
            soPoints objFacilitiesPts = new soPointsClass();
            soRecordset objFacRst = objFacDtv.Query("", true, null, "");
            int nCount = objFacRst.RecordCount;
            //取到点对象再将其添加到点串中
            while (!objFacRst.IsEOF())
            {
                soGeometry objFacGeo = objFacRst.GetGeometry();
                soGeoPoint objFacGeopt = (soGeoPoint)objFacGeo;
                objFacilitiesPts.Add2(objFacGeopt.x, objFacGeopt.y);
                objFacRst.MoveNext();
            }

            soGeoLineMs objGeoLineMs = new soGeoLineMsClass();
            soGeoLineM objGeoLineM = new soGeoLineMClass();
            soTrackingLayer objTrackLy = null;
            soStyle objStyle = new soStyleClass();

            objTrackLy = this.axSuperMap1.TrackingLayer;
            objStyle.PenColor = (uint)ColorTranslator.ToOle(Color.Yellow);
            objStyle.PenWidth = 500;

            soNetworkAnalystEx objNetworkAnalyst = this.axSuperAnalyst1.NetworkAnalyst;
            objNetworkAnalyst.OutputDatasourceAlias = "result";
            soNetworkSetting objNetworkSetting = objNetworkAnalyst.NetworkSetting;
            objNetworkSetting.NetworkDataset = (soDatasetVector)this.axSuperWorkspace1.Datasources[1].Datasets["RoadNet"];

            System.DateTime now = System.DateTime.Now;
            String strNowDate = "" + now.Year + now.Month + now.Day + now.Hour + now.Minute + now.Second + now.Millisecond;
            //最近设施查找结果信息
            soPathResultInfo objPathResInfo = new soPathResultInfoClass();
            //最近设施查找结果设置
            soPathResultSetting objPathResult = new soPathResultSettingClass();
            //创建行驶导引表
            objPathResult.PathTableEnabled = true;
            string strDtName = "引导表" + strNowDate;
            //设置行驶导引表的名称
            objPathResult.PathTableName = strDtName;
            objPathResult.RouteObjectsEnabled = true;
            //创建结果路由数据集
            objPathResult.RouteDatasetEnabled = true;
            string strpathname = "Path" + strNowDate;
            //结果路由数据集名称
            objPathResult.RouteDatasetName = strpathname;
            //获取分析结果路线的结点ID
            objPathResult.NodeIDsEnabled = true;
            //获取分析结果路线的弧段ID
            objPathResult.EdgeIDsEnabled = true;
            //行驶导引表中的弧段名称字段
            objPathResult.EdgeNameField = "RoadName";
            //行驶导引表中的结点名称字段
            objPathResult.NodeNameField = "SmNodeID";
            //输出结果耗费信息
            objPathResult.ResultCostEnabled = true;

            m_Point.x = gobjSelectGeoPt.x;
            m_Point.y = gobjSelectGeoPt.y;
            //查找的设施点数为3,查找半径为1000bool bResult = objNetworkAnalyst.ClosestFacilityEx2(m_Point, objFacilitiesPts, 3, objPathResult, objPathResInfo, true, 1000);
            if (bResult)
            {
                objGeoLineMs = objPathResInfo.ResultRouteObjects;
                if (objGeoLineMs != null)
                {
                    MessageBox.Show("查找出的最近路径有:" + objGeoLineMs.Count.ToString() + "条,请放大地图查看!", "查询结果");
                    int nLinMsCount;
                    nLinMsCount = objGeoLineMs.Count;
                    objStyle.PenColor = (uint)ColorTranslator.ToOle(Color.Purple);
                    objStyle.PenWidth = 5;
                    for (int i = 1; i <= nLinMsCount; i++)
                    {
                        //获取到GeoLineMs中的路由对象
                        objGeoLineM = objGeoLineMs[i];
                        //将查询得到的路径添加在跟踪层上
                        objTrackLy.AddEvent((soGeometry)objGeoLineM, objStyle, "最近路径");
                        objTrackLy.Refresh();
                    }
                }
                else
                {
                    MessageBox.Show("获取路由集合对象失败,请检查参数设置是否正确!", "提示");
                    return;
                }
            }
            else
            {
                MessageBox.Show("最近设施查找失败,请检查设置的参数是否正确!", "提示");
                soError objerror = new soErrorClass();
                MessageBox.Show(objerror.LastErrorMsg.ToString(), "错误原因提示");

                Marshal.ReleaseComObject(objerror);
                objerror = null;
                return;
            }
            this.axSuperMap1.Action = seAction.scaNull;
        }

        private void 分析ToolStripMenuItem_Click(object sender, EventArgs e)
        {//服务区分析
            ClearTrackLayer();

            soDataSources objDss = this.axSuperWorkspace1.Datasources;
            soDataSource objDs = objDss[1];
            soNetworkAnalystEx objNetworkAnalyst = axSuperAnalyst1.NetworkAnalyst;
            objNetworkAnalyst.OutputDatasourceAlias = "result";
            soNetworkSetting objNetworkSetting = objNetworkAnalyst.NetworkSetting;
            objNetworkSetting.NetworkDataset = (soDatasetVector)this.axSuperWorkspace1.Datasources[1].Datasets["RoadNet"];

            soDoubleArray objDoubleArray = new soDoubleArrayClass();
            //给定服务区半径
            objDoubleArray.Add(1000);
            //定义生成的结果路由数据集的名称
            string strServiceLineM = string.Empty;
            //定义生成的结果服务区数据集名称
            string strServiceArea = string.Empty;
            System.DateTime now = System.DateTime.Now;
            String strNowDate = "" + now.Year + now.Month + now.Day + now.Hour + now.Minute + now.Second + now.Millisecond;
            strServiceLineM = "ServiceLineM" + strNowDate;
            strServiceArea = "ServiceRegion" + strNowDate;
            m_Points = new soPointsClass();
            m_Point = new soPoint();
            m_Point.x = gobjSelectGeoPt.x;
            m_Point.y = gobjSelectGeoPt.y;
            //中心点点串中添加在地图窗口上点击获得到的点
            m_Points.Add(m_Point);

            bool bResult = objNetworkAnalyst.ServiceAreaEx(m_Points, objDoubleArray, true, false, strServiceLineM, strServiceArea);
            if (bResult == true)
            {
                soDataSources objDatasources = axSuperWorkspace1.Datasources;
                soDataSource objDataSource = objDatasources[objNetworkAnalyst.OutputDatasourceAlias];
                soDatasets objDatasets = objDataSource.Datasets;
                soDataset objDataset = objDatasets[strServiceArea];
                if (objDataset != null)
                {
                    soLayers objLys = axSuperMap1.Layers;
                    objLys.AddDataset(objDataset, true);
                    axSuperMap1.Refresh();
                    axSuperLegend1.Refresh();

                    //以下代码为变量释放
                    Marshal.ReleaseComObject(objDatasources);
                    objDatasources = null;
                    Marshal.ReleaseComObject(objDataSource);
                    objDataSource = null;
                    Marshal.ReleaseComObject(objDatasets);
                    objDatasets = null;
                    Marshal.ReleaseComObject(objDataset);
                    objDataset = null;
                    Marshal.ReleaseComObject(objLys);
                    objLys = null;
                }
            }
            else
            {
                MessageBox.Show("服务区分析失败!", "提示");
                return;
            }
            this.axSuperMap1.Action = seAction.scaNull;
        }

        private void LogisticsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ClearTrackLayer();
            soDataSource objDataSource = axSuperWorkspace1.Datasources[1];
            soDatasets objDatasets = objDataSource.Datasets;
            //获取到网路数据集
            soDataset objNetDt = objDatasets["RoadNet"];
            soDatasetVector objNetDtv = (soDatasetVector)objNetDt;
            soLongArray objLongArry = new soLongArrayClass();
            SuperAnalystLib.soNetworkAnalystEx analystEx = axSuperAnalyst1.NetworkAnalyst;
            analystEx.OutputDatasourceAlias = "result";

            //获取配送中心点
            soDataset objCenterPointsDt = objDatasets["Point"];
            soDatasetVector objCenterPointsDtv = (soDatasetVector)objCenterPointsDt;
            soRecordset objCenterPtRst = objCenterPointsDtv.Query("", true, null, "");
            int nRstCount = objCenterPtRst.RecordCount;
            soPoints objCenterPts = new soPointsClass();
            for (int i = 1; i <= nRstCount; i++)
            {
                soGeometry objTempGeo = objCenterPtRst.GetGeometry();
                soGeoPoint objTempGeoPt = (soGeoPoint)objTempGeo;
                objCenterPts.Add2(objTempGeoPt.x, objTempGeoPt.y);

                objCenterPtRst.MoveNext();
            }
            //获取配送目的地
            soDataset objPointsDt = objDatasets["TransportCompany"];
            soDatasetVector objPointsDtv = (soDatasetVector)objPointsDt;
            soRecordset objPtRst = objPointsDtv.Query("", true, null, "");
            int nCount = objPtRst.RecordCount;
            soPoints objPts = new soPointsClass();
            for (int j = 1; j <= nCount; j++)
            {
                soGeometry objTempGeoPt = objPtRst.GetGeometry();
                soGeoPoint objTempGeoPoint = (soGeoPoint)objTempGeoPt;
                objPts.Add2(objTempGeoPoint.x, objTempGeoPoint.y);

                objPtRst.MoveNext();
            }

            //行驶导引表信息
            soPathResultSetting objPathResult = new soPathResultSetting();
            soPathResultInfo objPathInfo = new soPathResultInfo();
            System.DateTime now = System.DateTime.Now;
            String strNowDate = "" + now.Year + now.Month + now.Day + now.Hour + now.Minute + now.Second + now.Millisecond;
            objPathResult.PathTableEnabled = true;   //创建行驶导引表
            string strDtName = "引导表" + strNowDate;
            objPathResult.PathTableName = strDtName; //设置行驶导引表的名称
            objPathResult.RouteDatasetEnabled = true;   //创建结果路由数据集
            string strpathname = "Path" + strNowDate;
            objPathResult.RouteDatasetName = strpathname;  //结果路由数据集名称
            objPathResult.NodeIDsEnabled = true; //获取分析结果路线的结点ID
            objPathResult.EdgeIDsEnabled = true; //获取分析结果路线的弧段ID
            objPathResult.EdgeNameField = "SmID";  //行驶导引表中的弧段名称字段
            objPathResult.NodeNameField = "SmID";  //行驶导引表中的节点名称字段
            objPathResult.ResultCostEnabled = true;  //输出结果耗费信息
            //进行物流配送分析
            bool bResult = analystEx.Logistics(objCenterPts, objPts, objLongArry, objPathResult, objPathInfo, false);
            if (bResult)
            {
                MessageBox.Show("物流配送分析成");
                ClosestFacility.Enabled = frmAnalystSetting.ItemEnabled;
                ServiceArea.Enabled = frmAnalystSetting.ItemEnabled;
                soStyle style = new soStyleClass();
                style.PenColor = (uint)ColorTranslator.ToOle(Color.Black);
                style.PenStyle = 0;
                style.PenWidth = 10;
                soTrackingLayer oTLy = axSuperMap1.TrackingLayer;
                //添加路由结果在跟踪层上
                soDataSource objDs = axSuperWorkspace1.Datasources[analystEx.OutputDatasourceAlias];
                soDatasets objDts = objDs.Datasets;
                soDataset objPathdt = objDts[strpathname];
                soDatasetVector objPathdtv = (soDatasetVector)objPathdt;
                if (objPathdtv == null) return;
                soRecordset objPathrst = objPathdtv.Query("", true, null, "");
                soGeoLineM objGeoLineM = null;
                soGeoPoint objTempGeopt = new soGeoPointClass();
                for (int i = 1; i <= objPathrst.RecordCount; i++)
                {
                    soGeometry objtempgeo = objPathrst.GetGeometry();
                    objGeoLineM = (soGeoLineM)objtempgeo;
                    this.axSuperMap1.TrackingLayer.AddEvent(objtempgeo, style, "GeoLineM" + i);
                    objPathrst.MoveNext();
                }
                oTLy.Refresh(); //刷新跟踪层
            }
            else
            {
                MessageBox.Show("分析失败", "提示");
                return;
            }
            this.axSuperMap1.Action = seAction.scaNull;
        }

        private void 通达点分析ToolStripMenuItem_Click(object sender, EventArgs e)
        {//通达点分析
            if (ID <= 0)
            {
                MessageBox.Show("请先设置网络分析站点!", "提示");
                return;
            }
            //清除跟踪层
            ClearTrackLayer();
            soGeoLineMs objGeoLineMs = new soGeoLineMsClass();
            soGeoLineM objGeoLineM = new soGeoLineMClass();
            soTrackingLayer objTrackLy = null;
            soStyle objStyle = new soStyleClass();
            objTrackLy = this.axSuperMap1.TrackingLayer;
            //通达点样式
            objStyle.PenColor = (uint)ColorTranslator.ToOle(Color.DarkBlue);
            objStyle.SymbolStyle = 1;

            soNetworkAnalyst objNetworkAnalyst = new soNetworkAnalyst();
            soDataset objDt = null;
            soLayer objLy = null;
            soLayers objLys = this.axSuperMap1.Layers;
            for (Int32 i = 1; i < objLys.Count + 1; i++)
            {
                objLy = objLys[i];
                if (objLy.Dataset.Type == seDatasetType.scdNetwork)
                {
                    objDt = objLy.Dataset;
                    break;
                }
            }
            soDatasetVector objDtv = (soDatasetVector)objDt;
            if (objDt != null)
            {
                soSelection selection = objNetworkAnalyst.FindConnectedNodes(objDtv, (Int32)ID, sePathFindingDirection.scdBoth, 2);
                if (selection.Count > 0)
                {
                    MessageBox.Show("查找出的通达点有:" + selection.Count.ToString() + "个", "查询结果");
                    soRecordset recordset = selection.ToRecordset(true);
                    if (recordset != null)
                    {
                        recordset.MoveFirst();
                        soGeometry geometry = null;
                        while (!recordset.IsEOF())
                        {
                            geometry = recordset.GetGeometry();
                            String strTag = String.Format("{0}@{1}", "通达点", recordset.GetID());
                            objTrackLy.AddEvent(geometry, objStyle, strTag);
                            recordset.MoveNext();
                        }
                        objTrackLy.Refresh();
                        recordset.Close();
                        recordset = null;
                        geometry = null;
                    }
                }
            }
            else
            {
                MessageBox.Show("没有找到用于分析的网络数据集!", "提示");
            }
        }

        private void ClearTrackLayertoolStripMenuItem_Click(object sender, EventArgs e)
        {
            ClearTrackLayer();
        }

        private void mnuInterPolate_Click(object sender, EventArgs e)
        {//空间插值
            soSurfaceAnalyst objSurface = null;
            soInterpolateOperator objInterpolate = null;
            soDataSources objDss = null;
            soDataSource objDs = null;
            soDatasets objDts = null;
            soDataset objDt = null;
            soDatasetVector objDtv = null;
            soLayers objLys = null;
            soLayer objLy = null;
            try
            {
                objLys = axSuperMap1.Layers;
                objLys.RemoveAll();
                axSuperMap1.Refresh();
                //栅格表面分析                
                objSurface = axSuperAnalyst1.SurfaceAnalyst;//获得表面分析对象
                objInterpolate = objSurface.Interpolation;//获得空间插值分析对象
                objDss = axSuperWorkspace1.Datasources;
                objDs = objDss[1];
                objDts = objDs.Datasets;
                objDt = objDts["AWS"];
                if (objDt == null)
                {
                    return;
                }
                objDtv = (soDatasetVector)objDt;

                string strFieldName = "气温";
                string strNewDtRName = "CZRaster";
                bool bOKName = objDs.IsAvailableDatasetName(strNewDtRName);
                if (!bOKName)
                {

                    bool aa = objLys.RemoveAt("CZRaster@radar");
                    axSuperMap1.Refresh();


                    Marshal.ReleaseComObject(objLys);
                    objLys = null;
                    objDs.DeleteDataset("CZRaster");
                    axSuperWkspManager1.Refresh();
                }
                //设置查找点的查找模式
                soSearchRadiusParam objSearchOption = new soSearchRadiusParam();
                int iPtCount = 9;
                double dRLength = 5;
                //设置变长查找,点数为5,最大半径设为0则对全幅范围做插值
                objSearchOption.SetVariant(iPtCount, dRLength);
                soDatasetRaster objNewRaster = null;
                //使用IDW方法插值
                objNewRaster = objInterpolate.IDW(objDtv, strFieldName, objSearchOption, 2, objDs, strNewDtRName);
                if (objNewRaster != null)
                {
                    MessageBox.Show("IDW插值分析成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    axSuperWkspManager1.Refresh();
                    objLys = axSuperMap1.Layers;
                    objLys.RemoveAll();
                    //添加结果数据图层
                    objLy = objLys.AddDataset((soDataset)objNewRaster, true);
                    axSuperMap1.Refresh();
                    axSuperLegend1.Refresh();

                    Marshal.ReleaseComObject(objNewRaster);
                    objNewRaster = null;
                    Marshal.ReleaseComObject(objLys);
                    objLys = null;
                    Marshal.ReleaseComObject(objLy);
                    objLy = null;
                }
                else
                {
                    MessageBox.Show("IDW插值分析失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }


                Marshal.ReleaseComObject(objSearchOption);
                objSearchOption = null;
                Marshal.ReleaseComObject(objDs);
                objDs = null;
                Marshal.ReleaseComObject(objDss);
                objDss = null;
                Marshal.ReleaseComObject(objDtv);
                objDtv = null;
                Marshal.ReleaseComObject(objDt);
                objDt = null;
                Marshal.ReleaseComObject(objDts);
                objDts = null;
                Marshal.ReleaseComObject(objInterpolate);
                objInterpolate = null;
                Marshal.ReleaseComObject(objSurface);
                objSurface = null;

            }
            catch (System.Exception ex)
            {

            }
        }

        private void mnuIsoLine_Click(object sender, EventArgs e)
        {//提取等值线
            string strDt = "";
            double dBase;
            double iSmooth;
            double dInterval;

            soDatasetVector objDv = null;
            soDatasetRaster objDataR = null;
            //soDataSource objDataScource = null;
            soDataSource objDsSr = null;
            seSmoothMethod smMethod;
            soSurfaceAnalyst objSurAnl = null;
            soSurfaceOperator objSurOpe = null;
            soLayers objLys = null;
            try
            {
                //设置表面分析对象
                objSurAnl = axSuperAnalyst1.SurfaceAnalyst;
                objSurOpe = objSurAnl.Surface;
                objLys = axSuperMap1.Layers;
                objDsSr = axSuperWorkspace1.Datasources[1];
                //设置被提取等值线的栅格数据集,即之前插值生成的栅格数据集
                objDataR = (soDatasetRaster)objDsSr.Datasets["CZRaster"];
                objSurAnl.AnalysisEnvironment.OutputDatasourceAlias = objDsSr.Alias;
                //设置光滑方法为磨角法
                smMethod = seSmoothMethod.scsmPolish;
                if (!objDsSr.IsAvailableDatasetName("IsoLine"))
                {
                    objLys.RemoveAt("IsoLine@radar");
                    objDsSr.DeleteDataset("IsoLine");
                    Marshal.ReleaseComObject(objLys);
                    objLys = null;
                    axSuperMap1.Refresh();
                    axSuperWkspManager1.Refresh();
                }
                //等值间距10
                dInterval = 10;
                //基准值为栅格数据的最小值
                dBase = 18.658669;
                //光滑系数为3
                iSmooth = 3;
                strDt = "IsoLine";
                objDv = objSurOpe.IsoLineEx(objDataR, strDt, dInterval, dBase, smMethod, iSmooth, false, true, false);
                if (objDv == null)
                {
                    MessageBox.Show("提取等值线失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Marshal.ReleaseComObject(objDsSr);
                    objDsSr = null;
                    Marshal.ReleaseComObject(objDataR);
                    objDataR = null;
                    axSuperWkspManager1.Refresh();
                    return;
                }
                else
                {
                    MessageBox.Show("提取等值线成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    axSuperMap1.OpenMap("Grid_Analysis");
                    axSuperMap1.Refresh();
                    axSuperLegend1.Refresh();
                    axSuperWkspManager1.Refresh();
                    Marshal.ReleaseComObject(objDv);
                    objDv = null;
                    Marshal.ReleaseComObject(objDataR);
                    objDataR = null;
                    Marshal.ReleaseComObject(objDsSr);
                    objDsSr = null;
                    Marshal.ReleaseComObject(objSurAnl);
                    objSurAnl = null;
                    Marshal.ReleaseComObject(objSurOpe);
                    objSurOpe = null;
                }

            }
            catch (System.Exception ex)
            {

            }
        }

        private void mnuStatisticsEx_Click(object sender, EventArgs e)
        {//分带统计
            soGridAnalystEx objGridAnalyst;
            soStatisticOperator objStatOperator;
            soDataSource objds;
            soDatasetRaster objValueR;   //值栅格
            soDataset objZoneDt;    //分带数据集
            soDatasetRaster objOutR;  //统计结果栅格

            try
            {
                objGridAnalyst = axSuperAnalyst1.GridAnalyst;
                objStatOperator = objGridAnalyst.Statistics;
                objds = axSuperWorkspace1.Datasources[1];
                objValueR = objds.Datasets["PDRaster"] as soDatasetRaster;//值栅格
                objZoneDt = objds.Datasets["DLTB"];//分带数据集
                if (!objds.IsAvailableDatasetName("Stat_Raster"))
                {
                    soLayers objLys = axSuperMap1.Layers;
                    objLys.RemoveAll();

                    objds.DeleteDataset("Stat_Raster");
                    Marshal.ReleaseComObject(objLys);
                    objLys = null;
                    axSuperMap1.Refresh();
                    axSuperWkspManager1.Refresh();
                    axSuperLegend1.Refresh();
                }
                if (!objds.IsAvailableDatasetName("Stat_Table"))
                {
                    bool aa = objds.DeleteDataset("Stat_Table");
                    axSuperWkspManager1.Refresh();
                }
                //分带统计
                objOutR = objStatOperator.OverlayStatisticsEx(objZoneDt, "DLBM", objValueR, seStatisticMode.scsMajority, "Stat_Raster", "Stat_Table", true, objds, objds, true);
                if (objOutR == null)
                {
                    MessageBox.Show("分带统计失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    axSuperWkspManager1.Disconnect();
                    axSuperLegend1.Disconnect();
                    axSuperMap1.Disconnect();
                    axSuperMap1.Close();
                    axSuperWorkspace1.Close();
                    axSuperWkspManager1.Refresh();
                    axSuperMap1.Refresh();
                    this.ConnectSuperMap();//连接工作空间
                    this.axSuperWorkspace1.Open(strOpath, "");//打开工作空间
                    if (this.axSuperMap1.OpenMap("Grid_Analysis"))
                    {
                        flag = 0;
                        log = 1;
                        mnuGridAnalyst.Enabled = true;
                        this.axSuperMap1.Layers.AddDataset(axSuperWorkspace1.Datasources[1].Datasets["AWS"], true);
                        this.axSuperWkspManager1.Refresh();
                        this.axSuperMap1.ViewEntire();
                        this.axSuperMap1.Refresh();
                        this.axSuperLegend1.Refresh();
                    }
                    MessageBox.Show("分带统计成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    axSuperWkspManager1.Refresh();
                }
                Marshal.ReleaseComObject(objGridAnalyst);
                objGridAnalyst = null;
                Marshal.ReleaseComObject(objStatOperator);
                objStatOperator = null;
                Marshal.ReleaseComObject(objds);
                objds = null;
                Marshal.ReleaseComObject(objValueR);
                objValueR = null;
                Marshal.ReleaseComObject(objZoneDt);
                objZoneDt = null;
                Marshal.ReleaseComObject(objOutR);
                objOutR = null;
            }
            catch (System.Exception ex)
            {

            }
        }

        private void mnuLayerStyle_Click(object sender, EventArgs e)
        {//采用已有的数据,制作我国主要的商品粮基地地图
            //设置面图层/ 文本图层的风格
            //首先打开“基础地图”
            this.axSuperMap1.OpenMap("基础地图");
            this.axSuperMap1.Refresh();
            //添加图层
            soDataSources objDataSources = this.axSuperWorkspace1.Datasources;
            soDataSource objDataSource = objDataSources[1];

            soDatasets objDatasets = objDataSource.Datasets;
            soDataset objDt = objDatasets["主要商品粮基地"];//根据名称获得专题数据集
            soDataset objDtText = objDatasets["商品粮基地注记"];//根据名称获得专题数据集
            if (objDt == null)
            {
                MessageBox.Show("数据源中没有‘主要商品粮基地’面数据集");
                ReleaseObjects(objDataSource);
                ReleaseObjects(objDatasets);
                return;
            }

            soLayers objLayers = this.axSuperMap1.Layers;
            soLayer objLayer = objLayers["主要商品粮基地@China"];//根据图层名称获得专题图层
            soLayer objLayerText = objLayers["商品粮基地注记@China"];//根据图层名称获得专题图层
            soLayer objLayerMainCities = objLayers["主要城市@China"];
            objLayerMainCities.Visible = false; //设置该图层不可见
            if (objLayer == null)
            {
                objLayer = objLayers.AddDataset(objDt, true);//如果该图层不在当前地图窗口中,打开该数据集
            }
            if (objLayerText == null)
            {
                objLayerText = objLayers.AddDataset(objDtText, true);//打开数据集
            }
            //设置面图层的风格
            soStyle objStyle = new soStyleClass();
            //objStyle.BrushStyle = 1;
            objStyle.BrushColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(255, 140, 85)));
            objStyle.PenColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(255, 0, 128)));
            objStyle.PenWidth = 1;
            objLayer.Style = objStyle;  //设置面图层风格

            //设置文本的风格
            soDatasetVector objDtVText = (soDatasetVector)objDtText;
            bool bEditable = objLayers.SetEditableLayer(objLayerText); //设置文本图层可编辑,才可修改文本风格

            soTextStyle objTextStyle = new soTextStyleClass();
            objTextStyle.FontName = "黑体"; //字体名称
            objTextStyle.Color = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(0, 0, 0)));
            objTextStyle.BgColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.Black));
            objTextStyle.FixedSize = false;

            objTextStyle.FontWidth = 50000; //字体宽度
            objTextStyle.FontHeight = 100000;
            objTextStyle.Transparent = true;
            objTextStyle.Bold = true; //字体加粗
            //objTextStyle.Outline = true;
            soRecordset objRd = objDtVText.Query("", true, null, "");//查询出所有的文本记录
            objRd.MoveFirst();
            for (int i = 1; i <= objRd.RecordCount; i++)
            {
                soGeoText objGeoText = (soGeoText)objRd.GetGeometry();//获得文本几何对象
                objGeoText.TextStyle = objTextStyle;//设置文本对象的风格

                objRd.Edit(); //锁定记录
                objRd.SetGeometry((soGeometry)objGeoText);//设置文本风格
                objRd.Update(); //更新数据
                objRd.MoveNext();

                ReleaseObjects(objGeoText);
            }
            objRd.Close();
            this.axSuperMap1.ViewEntire();
            this.axSuperLegend1.Refresh();

            ReleaseObjects(objRd);
            ReleaseObjects(objTextStyle);
            ReleaseObjects(objDtVText);
            ReleaseObjects(objStyle);
            ReleaseObjects(objLayers);
            ReleaseObjects(objLayer);
            ReleaseObjects(objDtText);
            ReleaseObjects(objDt);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataSource);
            ReleaseObjects(objDataSources);
        }

        private void mnuThemeUnique_Click(object sender, EventArgs e)
        {//制作单值专题图,显示中国温度带的划分
            //首先打开“基础地图”,叠加“温度带的划分”面数据集
            this.axSuperMap1.OpenMap("基础地图");
            this.axSuperMap1.Refresh();
            //判断并添加‘温度带的划分’面数据集到基础地图上
            soDataSources objDataSources = this.axSuperWorkspace1.Datasources;
            soDataSource objDataSource = objDataSources[1];
            soDatasets objDatasets = objDataSource.Datasets;
            soDataset objDt = objDatasets["我国温度带的划分"];
            if (objDt == null)
            {
                MessageBox.Show("数据源中没有‘温度带的划分’面数据集");
                ReleaseObjects(objDataSource);
                ReleaseObjects(objDatasets);
                return;
            }

            //步骤一:获得单值专题图对象
            soLayer objLayer = null;
            soThemeUnique objThemeUnique = null;
            soLayers objLayers = this.axSuperMap1.Layers;
            objLayer = objLayers["我国温度带的划分@China"];//获得专题图层
            if (objLayer == null)
            {
                objLayer = objLayers.AddDataset(objDt, false);//打开数据集
            }
            objThemeUnique = objLayer.ThemeUnique;//获得单值专题图对象

            //步骤二:设置单值专题图中的必须参数
            objThemeUnique.Enable = true;//专题图可见
            objThemeUnique.Field = "code"; //字段

            //类似于添加所有值
            objThemeUnique.MakeDefault(); //制作缺省的单值专题图

            //步骤三:为每个不同的等级设置风格颜色
            soColors objColors = new soColors();
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(182, 189, 243)));
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(218, 192, 224)));
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(153, 210, 115)));
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(253, 235, 151)));
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(254, 194, 105)));
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(236, 157, 70)));

            for (int i = 1; i <= objThemeUnique.ValueCount; i++)
            {
                soStyle objStyle = new soStyleClass();
                objStyle.BrushColor = objColors[i];  //填充颜色
                objStyle.PenStyle = 1;   //设置面的边线风格
                objThemeUnique.set_Style(i, objStyle);//设置每个单值的风格

                ReleaseObjects(objStyle);
            }
            this.axSuperMap1.ViewEntire();
            this.axSuperMap1.Refresh(); //刷新地图
            this.axSuperLegend1.Refresh();

            ReleaseObjects(objColors);
            ReleaseObjects(objLayer);
            ReleaseObjects(objThemeUnique);
            ReleaseObjects(objLayers);
            ReleaseObjects(objDt);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataSource);
            ReleaseObjects(objDataSources);
        }

        private void mnuThemeLabel_Click(object sender, EventArgs e)
        {//制作标签专题图,显示中国各温度带的名称
            this.axSuperMap1.OpenMap("我国温度带划分图");//打开已有地图
            this.axSuperMap1.Refresh();
            //判断并添加‘温度带的划分’面数据集到基础地图上
            soDataSources objDataSources = this.axSuperWorkspace1.Datasources;
            soDataSource objDataSource = objDataSources[1];
            soDatasets objDatasets = objDataSource.Datasets;
            soDataset objDt = objDatasets["我国温度带的划分"];
            if (objDt == null)
            {
                MessageBox.Show("数据源中没有‘温度带的划分’面数据集");
                ReleaseObjects(objDataSource);
                ReleaseObjects(objDatasets);
                return;
            }
            soThemeLabel objThemeLabel = null;
            soLayers objLayers = this.axSuperMap1.Layers;
            if (objLayers == null) return;
            soLayer objLayer = objLayers["我国温度带的划分@China"];//获得专题图层
            if (objLayer == null)
            {
                objLayer = objLayers.AddDataset(objDt, false);//打开数据集
            }
            objThemeLabel = objLayer.ThemeLabel;//获得标签专题图对象
            if (objThemeLabel.Valid)  //判断标签专题图是否已经制作
            {
                String strName = objThemeLabel.Caption;//专题图标题
                objLayer.DeleteThematicMap(strName); //如果该图层已经制作标签专题图,则删除
            }
            soTextStyle objTextStyle = new soTextStyle();   //定义显示的字体风格变量
            objTextStyle.FontName = "宋体";                 //定义显示的字体风格
            objTextStyle.FixedSize = true;
            //objTextStyle.FixedTextSize = 80;
            objTextStyle.FontWidth = 30;
            objTextStyle.FontHeight = 50;
            objTextStyle.Outline = true;
            objTextStyle.Transparent = true;
            objTextStyle.Color = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.Red));
            objTextStyle.BgColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.White));

            objThemeLabel.Enable = true;                    //显示标签专题图
            objThemeLabel.Field = "Name";                   //定义制作标签专题图的字段
            objThemeLabel.Caption = "省会名称";                 //标签专题图的名称
            objThemeLabel.TextStyle = objTextStyle;         //标签显示的字体
            objThemeLabel.EnableFlow = true;                //流动注记
            objThemeLabel.OnTop = true;       //标签置顶显示
            objThemeLabel.IgnoreSmallObject = true;
            objThemeLabel.AutoAvoidOverlapped = true;
            //objThemeLabel.OffsetX = -60000; //将标签偏移一定的距离
            //objThemeLabel.OffsetY = 60000;

            this.axSuperMap1.ViewEntire();
            this.axSuperLegend1.Refresh();

            ReleaseObjects(objTextStyle);
            ReleaseObjects(objThemeLabel);
            ReleaseObjects(objLayers);
            ReleaseObjects(objLayer);
            ReleaseObjects(objDt);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataSource);
            ReleaseObjects(objDataSources);
        }

        private void mnuThemeRange_Click(object sender, EventArgs e)
        {//制作范围分段专题图,显示中国年降水量分布
            //然后添加年降水量线数据集,设置线风格,突出体现分布边界
            //添加年降水量文本数据集,显示年降水量值

            this.axSuperMap1.OpenMap("基础地图");//首先打开“基础地图”
            this.axSuperMap1.Refresh();
            //判断并添加‘我国降水量’面数据集到基础地图上
            soDataSources objDataSources = this.axSuperWorkspace1.Datasources;
            soDataSource objDataSource = objDataSources[1];
            soDatasets objDatasets = objDataSource.Datasets;
            soDataset objDt = objDatasets["我国年降水量"];
            if (objDt == null)
            {
                MessageBox.Show("数据源中没有‘我国降水量’面数据集");
                ReleaseObjects(objDataSource);
                ReleaseObjects(objDatasets);
                return;
            }

            soLayers objLayers = this.axSuperMap1.Layers;
            if (objLayers == null) return;
            soLayer objLayer = objLayers["我国年降水量@China"];//注意区分大小写
            if (objLayer == null)
            {
                objLayer = objLayers.AddDataset(objDt, false);//将‘中国年降水量’面数据集添加到地图窗口中,并置于底层
            }
            soThemeRange objThemeRange = objLayer.ThemeRange;
            if (objThemeRange.Valid)      //删除已有的范围分段专题图
            {
                String strName = objThemeRange.Caption;
                objLayer.DeleteThematicMap(strName);
            }
            soStyle objStyle = new soStyle();
            objThemeRange.Enable = true;      //显示专题图
            objThemeRange.Field = "rainfall";  //字段
            objThemeRange.BreakCount = 5;   //5个分段点,6段
            objThemeRange.Caption = "中国年降水量分布图";  //专题图的标题

            objThemeRange.set_BreakValue(1, 50);//分段点的值
            objThemeRange.set_BreakValue(2, 200);
            objThemeRange.set_BreakValue(3, 400);
            objThemeRange.set_BreakValue(4, 800);
            objThemeRange.set_BreakValue(5, 1600);

            soColors objColors = new soColors();  //设置每个分段的颜色
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(255, 211, 123)));//小于50
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(255, 235, 189)));//50~ -200
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(229, 224, 140)));//200~ 400
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(189, 235, 255)));//400~ 800
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(115, 223, 255))); //800-1600
            objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(0, 113, 255)));//大于1600

            for (int i = 1; i <= 6; i++)
            {
                objStyle.BrushColor = objColors[i];
                objStyle.PenStyle = 4;   //将边线的线型设置为空
                objThemeRange.set_Style(i, objStyle);
            }
            objThemeRange.set_ItemCaption(1, "年降水量在50毫米以下"); //设置每个分段的标题
            objThemeRange.set_ItemCaption(2, "年降水量50-200毫米");
            objThemeRange.set_ItemCaption(3, "年降水量200-400毫米");
            objThemeRange.set_ItemCaption(4, "年降水量400-800毫米");
            objThemeRange.set_ItemCaption(5, "年降水量800-1600毫米");
            objThemeRange.set_ItemCaption(6, "年降水量大于1600毫米");

            //下面添加年降水量线数据集,设置线风格
            //添加年降水量文本数据集,设置文本风格
            soDataset objDtLine = objDatasets["年降水量线"];
            soDataset objDtText = objDatasets["我国年降水量注记"];
            soLayer objLayerLine = objLayers.AddDataset(objDtLine, true);
            soLayer objLayerText = objLayers.AddDataset(objDtText, true);
            soStyle objStyle2 = new soStyleClass();
            objStyle2.PenColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(231, 0, 173)));
            objStyle2.PenWidth = 1;
            objLayerLine.Style = objStyle2;  //设置年降水量线图层的风格

            this.axSuperMap1.ViewEntire();  //全幅显示地图
            this.axSuperMap1.Refresh();
            this.axSuperLegend1.Refresh();
            this.axSuperLegend1.Expand();

            ReleaseObjects(objDtLine);
            ReleaseObjects(objDtText);
            ReleaseObjects(objLayerLine);
            ReleaseObjects(objLayerText);
            ReleaseObjects(objStyle2);
            ReleaseObjects(objColors);
            ReleaseObjects(objStyle);
            ReleaseObjects(objThemeRange);
            ReleaseObjects(objLayer);
            ReleaseObjects(objLayers);
            ReleaseObjects(objDt);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataSource);
            ReleaseObjects(objDataSources);
        }

        private void mnuThemeDotDensity_Click(object sender, EventArgs e)
        {//制作人口密度图,显示中国的人口分布情况;并添加人口分界限
            this.axSuperMap1.OpenMap("基础地图");//首先打开“基础地图”
            this.axSuperMap1.Refresh();
            soThemeDotDensity objThemeDotDensity = null; //点密度专题图对象
            soLayers objLayers = this.axSuperMap1.Layers;

            soLayer objLayer = objLayers["国家与地区@China"];
            if (objLayer == null)    //如果图层对象不为空,则制作点密度专题图
            {
                MessageBox.Show("请将'国家与地区'面数据集添加到地图窗口中");
                ReleaseObjects(objLayers);
                return;
            }
            objThemeDotDensity = objLayer.ThemeDotDensity; //取得图层的点密度专题图对象 
            if (objThemeDotDensity.Valid)    // 如果图层已有点密度题图,则栅除
            {
                String strName = objThemeDotDensity.Caption;//专题图标题
                objLayer.DeleteThematicMap(strName);//删除已有的点密度图
            }
            objThemeDotDensity.DotColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(0, 0, 0)));
            objThemeDotDensity.DotSize = 3;               //点的大小
            objThemeDotDensity.DotValue = 60;           //每个点代表的数值
            objThemeDotDensity.Field = "Pop_1990";     //制做专题图所用的字段
            objThemeDotDensity.Enable = true;             //设置点密度专题图可见

            //添加我国的人口分界线到地图窗口中
            soDataSource objDataSource = this.axSuperWorkspace1.Datasources[1];
            soDatasets objDatasets = objDataSource.Datasets;
            soDataset objDt = objDatasets["腾冲至黑河"];
            soLayer objLayerLine = objLayers.AddDataset(objDt, true); //人口分界线对应的图层
            soStyle objStyle = new soStyleClass();
            objStyle.PenStyle = 1;
            objStyle.PenColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(173, 1, 1)));
            objStyle.PenWidth = 4;
            objLayerLine.Style = objStyle;

            this.axSuperMap1.ViewEntire(); //地图全幅显示
            this.axSuperLegend1.Refresh(); //刷新图例  

            ReleaseObjects(objStyle);
            ReleaseObjects(objLayerLine);
            ReleaseObjects(objDt);
            ReleaseObjects(objDatasets);
            ReleaseObjects(objDataSource);
            ReleaseObjects(objThemeDotDensity);
            ReleaseObjects(objLayer);
        }

        private void mnuThemeGraph_Click(object sender, EventArgs e)
        {//制作统计专题图,显示97/98/98年中国各省份或自治区的GDP值对比
            this.axSuperMap1.OpenMap("基础地图");//打开“基础地图”
            this.axSuperMap1.Refresh();

            soThemeGraph objThemeGraph = null;     //分段统计专题图对象
            soLayers objLayers = this.axSuperMap1.Layers;
            soLayer objLayer = objLayers["国家与地区@China"];
            if (objLayer == null)
            {
                MessageBox.Show("请将’国家与地区‘面数据集添加到地图窗口中");
                ReleaseObjects(objLayers);
                return;
            }
            objThemeGraph = objLayer.ThemeGraph; //获得统计专题图对象
            if (objThemeGraph.Valid) //如果已经制作了一个统计专题图,先删除
            {
                String strName = objThemeGraph.Caption;
                objLayer.DeleteThematicMap(strName);
            }
            objThemeGraph.Caption = "97/98/98年中国各地区的GDP值对比"; //定义专题图的名称
            objThemeGraph.Enable = true;           //是否显示统计专题图
            objThemeGraph.AddField("GDP_1997");//添加三个不同年份的GDP字段
            objThemeGraph.AddField("GDP_1998");
            objThemeGraph.AddField("GDP_1999");

            soStyle objStyle = new soStyleClass();         //定义三个扇形的颜色
            objStyle.BrushColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(200, 147, 67)));
            objThemeGraph.set_Style(1, objStyle);  //分别为它们设置风格

            objStyle.BrushColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(191, 79, 71)));
            objThemeGraph.set_Style(2, objStyle);

            objStyle.BrushColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(60, 170, 135)));
            objThemeGraph.set_Style(3, objStyle);

            objThemeGraph.GraphType = seGraphType.scpBar; //设置统计专题图的类型
            objThemeGraph.set_ItemCaption(1, "GDP_1997");   //设置统计专题图中每个子项的名称
            objThemeGraph.set_ItemCaption(2, "GDP_1998");
            objThemeGraph.set_ItemCaption(3, "GDP_1999");

            objThemeGraph.GraduatedMode = seGraduatedMode.scgSquareRoot;//平方根
            objThemeGraph.ShowItemText = true;  //显示统计图上的文字标注
            objThemeGraph.EnableFlow = false;  //不流动显示统计图
            objThemeGraph.VisibleScaleMax = 0.00000025; //1 / 40000000
            objThemeGraph.OnTop = true;  //置顶显示
            objThemeGraph.ItemTextFormat = seGraphTextFormat.scgTextPercent;//显示的子项文本

            this.axSuperMap1.ViewEntire();//地图全幅显示
            this.axSuperLegend1.Refresh(); //刷新图例

            ReleaseObjects(objThemeGraph);
            ReleaseObjects(objStyle);
            ReleaseObjects(objLayers);
            ReleaseObjects(objLayer);
        }

        private void mnuSaveMap_Click(object sender, EventArgs e)
        {//另存地图
            string strMapName = "newMap";
            string strCurrentMinute = System.DateTime.Now.Minute.ToString();
            string strCurrentSecond = System.DateTime.Now.Second.ToString();
            bool blnSaveMapAs = axSuperMap1.SaveMapAs(strMapName + strCurrentMinute + strCurrentSecond, false);
            if (blnSaveMapAs)
            {
                MessageBox.Show("地图另存成功!", "提示");
                axSuperWkspManager1.Refresh();
            }
            else
            {
                MessageBox.Show("地图另存失败!", "提示");
            }
        }

        private void mnuOutputMapAsFile_Click(object sender, EventArgs e)
        {
            String strPicName = string.Empty;
            seFileType nImageType = 0;
            saveFileDialog1.Filter = "TIFF Files(.tif)|*.tif||";
            this.axSuperMap1.OpenMap("我国温度带划分图");
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                strPicName = saveFileDialog1.FileName; //设置要输出的影像文件名
                nImageType = seFileType.scfTIF;  //结果文件的类型
                if (this.axSuperMap1.OutputMapToFile(strPicName, nImageType))
                {
                    MessageBox.Show("输出地图为影像文件成功!");
                }
                else
                {
                    MessageBox.Show("输出地图为影像文件失败!");
                }
            }
            else
            {
                return;
            }
            this.axSuperMap1.Refresh();
        }

        private void 保存工作空间ToolStripMenuItem_Click(object sender, EventArgs e)
        {//保存工作空间
            bool bIsModified = false;
            bIsModified = axSuperWorkspace1.Modified;  //工作空间是否有修改
            if (bIsModified == true)
            {
                axSuperWorkspace1.Save();
                MessageBox.Show("保存工作空间成功");
                return;
            }
            else
            {
                MessageBox.Show("工作空间未修改");
                return;
            }
        }

        private void 布局排版ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.frmLayout = new Layout(this);
            this.frmLayout.Show();
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值