地图和图层
窗体界面:
要求:
1、加载MapDocument,并获取其包含的Map。
2、获取当前选中Map所包含的Layer。
3、显示选中Layer的属性信息。
1.加载MapDocument,并获取其包含的Map
public partial class Form1 : Form
{
IMapDocument pMapDocument; //全局变量 pMapDocument
public Form1()
{
InitializeComponent();
}
//加载MapDocument,并获取其包含的Map
private void LoadMxd_Click(object sender,EventArgs e)
{
comboBox1.Items.Clear();
OpenFileDialog pOpenFileDialog = new OpenFileDialog();
pOpenFileDialog.Title = "打开地图文档";
pOpenFileDialog.Filter = "地图文档(*.mxd)|*.mxd";
pOpenFileDialog.RestoreDirectory = true;
if (pOpenFileDialog.ShowDialog() == DialogResult.OK) //检查地图文档有效性
{
string MxdFilePath = pOpenFileDialog.FileName; //Mxd地图文档地址
if (axMapControl1.CheckMxFile(MxdFilePath)) //判断地址是否有效
{
axMapControl1.LoadMxFile(MxdFilePath,0,Type.Missing);
pMapDocument = new MapDocumentClass();
for (int i = 0; i < pMapDocument.MapCount; i++)
{
ComboBox1.Items.Add(axMapControl1.Map.Name);
}
axMapControl1.ActiveView.Refresh();
axMapControl1.Extent = axMapControl1.FullExtent;
}
else
{
MessageBox.Show("MxdFilePath" + "是无效的地图文档!", "信息提示");
return;
}
}
}
2.获取当前选中Map所包含的Layer
private void comboBox1_SelectedIndexChanged(object sender,EventArgs e)
{
listBox1.Items.Clear();
int MapIndex = ComboBox1.SelectedIndex;
axMapControl1.Map = pMapDocument.get_Map(MapIndex);
axMapControl1.ActiveView.Refresh();
axMapControl1.Extent = axMapControl1.FullExtent;
IMap pMap = axMapControl1.Map;
for (int LayerIndex = 0; LayerIndex < pMap.LayerCount; LayerIndex++)
{
ILayer pLayer = pMap.get_Layer(LayerIndex);
ListBox1.Items.Add(pLayer.Name);
}
}
3.显示选中Layer的属性信息
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int i = listBox1.SelectedIndex;
IMap pMap = axMapControl1.Map;
ILayer pLayer = pMap.get_Layer(i);
if (i < 0) return; //防止异常报错,如果i为-1,即没选择listBox1中的选项(一般此类空值,程序默认为-1)
bool ShowTips = pLayer.ShowTips;
textBox1.Text = pLayer.MinimumScale.ToString();
textBox2.Text = pLayer.MaximumScale.ToString();
if (ShowTips.ToString() == "true")
textBox3.Text = "Yes";
else
textBox3.Text = "No";
}
4.清除按钮
private void Clear_Click(object sender, EventArgs e)
{
axMapControl1.ClearLayers();
axMapControl1.Refresh();
comboBox1.Items.Clear();
listBox1.Items.Clear();
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
}
参考文章:
https://blog.csdn.net/Domen_Dragon/article/details/86497799
https://blog.csdn.net/m0_37768631/article/details/84346403