文章目录

  • Form1.Designer.cs
  • Form1.cs
  • Form1.Designer.cs(附)

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);}#endregionprivate 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; //获取分析结果路线的结点IDobjPathResult.EdgeIDsEnabled = true; //获取分析结果路线的弧段IDobjPathResult.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;//获取分析结果路线的结点IDobjPathResult.NodeIDsEnabled = true;//获取分析结果路线的弧段IDobjPathResult.EdgeIDsEnabled = true;//行驶导引表中的弧段名称字段objPathResult.EdgeNameField = "RoadName";//行驶导引表中的结点名称字段objPathResult.NodeNameField = "SmNodeID";//输出结果耗费信息objPathResult.ResultCostEnabled = true;m_Point.x = gobjSelectGeoPt.x;m_Point.y = gobjSelectGeoPt.y;//查找的设施点数为3,查找半径为1000米bool 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; //获取分析结果路线的结点IDobjPathResult.EdgeIDsEnabled = true; //获取分析结果路线的弧段IDobjPathResult.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();}//等值间距10dInterval = 10;//基准值为栅格数据的最小值dBase = 18.658669;//光滑系数为3iSmooth = 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)));//小于50objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(255, 235, 189)));//50~ -200objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(229, 224, 140)));//200~ 400objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(189, 235, 255)));//400~ 800objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(115, 223, 255))); //800-1600objColors.Add((uint)ColorTranslator.ToOle(Color.FromArgb(0, 113, 255)));//大于1600for (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 / 40000000objThemeGraph.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();}}
}

SuperMap Objects组件式开发相关推荐

  1. Agile.Net 组件式开发平台 - 平台系统介绍

    平台介绍 Agile.Net 组件式开发平台是一款针对企业级产品的开发框架,平台架构基于SOA服务体系,多层组件式架构打造.平台提供企业应用开发所需的诸如ORM.IOC.WCF.EBS.SOA等分布式 ...

  2. 系统分析师范文1:论软件的组件式开发

    摘要: 在我所担任的某移动短消息增值应用系统的规划和开发工作中,面对移动短消息广阔的应用领域,和众多不同行业的ASP,巨大的软件开发工作量.我们选择了组件式软件开发方式,在系统的功能.性能.开发效率和 ...

  3. Vue3+TypeScript+ElementPlus 组件式开发思路分享

    项目类型 移动端 写代码 三思而后行 工单模块 对比其他设计图可以发现重复利用的组件 1.开启设计思路(提取相同参数) Header.vue <template><div class ...

  4. Vue入门 ---- 组件式开发

    ##组件 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8 ...

  5. 组件式GIS开发总结(一)

    一.组件式开发的优缺点 1)优点 (1)高度的伸缩性 (2)灵活的拓展性 (3)易于开发 (4)易于集成 (5)更高的性价比 2)缺点 (1)与专业的GIS客户端软件相比,组件式GIS的效率相对低下 ...

  6. Unity3damp;amp;C#分布式游戏服务器ET框架介绍-组件式设计

    前几天写了<开源分享 Unity3d客户端与C#分布式服务端游戏框架>,受到很多人关注,QQ群几天就加了80多个人.开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列 ...

  7. 360奇舞团钟恒:选用Vue.js进行组件化开发,我们遇到了哪些坑?

    责编:陈秋歌,关注前端开发领域,寻求报道或者投稿请发邮件chenqg#csdn.net. 欢迎加入"CSDN前端开发者"微信群,参与热点.难点技术交流.请加群主微信「Rachel_ ...

  8. 从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件

    标题:从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/112 ...

  9. Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...

    <Android项目驱动式开发教程>第一章开发入门 1.4 项目框架分析 4 android:versionName="1.0" > 5 8 第9行代码andro ...

最新文章

  1. AI Drive 直播 | Objects365物体检测及CrowdHuman人体检测挑战赛线上颁奖
  2. Python大神用的贼溜,9个实用技巧分享给你
  3. GUN Global + Vim及其插件 打造Android源码阅读器
  4. matplotlib绘图入门详解
  5. CSS3中的群组选择器,后代选择器[空格]子元素选择器 >相邻兄弟选择器+兄弟选择器~
  6. 吴裕雄 python 神经网络——TensorFlow 图、张量及会话
  7. WebStorm使用教程
  8. android学习笔记---36_Activity生命周期
  9. 何恺明“终结”ImageNet预训练时代:从0开始训练神经网络,效果比肩COCO冠军
  10. Bailian3671 字符串排序【排序】
  11. iframe和response.sendRedirect()跳转到父页面的问题
  12. 腾讯视频转码,把qlv格式转换成mp4格式
  13. 惠州龙门大米飘香 国稻种芯-中国水稻节:广东乡村振兴样板
  14. 为ibus输入法框架制作新世纪五笔码表
  15. 【UOJ #390】【UNR #3】百鸽笼(指数型生成函数,二项式定理)
  16. ubuntu下重启tomcat
  17. 国务院建议探索区块链等技术缩短承兑期限 | 产业区块链发展周报
  18. mk突变点检测_mk突变检测
  19. 更多Windows Phone 8新功能详解
  20. 备份时,磁盘与磁带的抉择

热门文章

  1. AIS标准(ITU-R M.1371-5)和Python解码模块
  2. 三、PyQt5高级控件的使用
  3. linux du | sort 命令查找磁盘占用大户
  4. 从Scratch少儿编程收获的启示
  5. [译] Font-size:一个意外复杂的 CSS 属性
  6. 8086/8088 CPU寄存器组
  7. 墨画子卿第三章第7节:备战
  8. 算法面试题(格灵深瞳)
  9. 微软学术搜索新特征暴光
  10. OSG for Android实现VPB地形,倾斜影像与三维模型加载