地图是ArcGIS Pro中的基础起点,也是大多数工程的基础。主要用于显示表示空间数据的图层。
一、地图(Map)的基本操作示例
1、获取当前地图
var map = MapView.Active.Map;
2、获取一级图层
var lys = map.Layers;
用于获取地图中的单一图层,以及图层组。但不包括图层组下面的图层。
3、获取所有图层
var lys = map.GetLayersAsFlattenedList();
【GetLayersAsFlattenedList()】方法用于获取地图中的所有图层。
4、获取单一类型的图层
var lys = map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
在【GetLayersAsFlattenedList()】方法加上【OfType】则会对获取的图层按类型进行筛选。如【FeatureLayer】代表要素图层,【GroupLayer】代表图层组等。
5、获取当前选定的图层
var lys = MapView.Active.GetSelectedLayers();
【GetSelectedLayers()】方法用于获取当前选定的图层。
6、获取独立表
var lys = map.GetStandaloneTablesAsFlattenedList();
【GetLayersAsFlattenedList()】方法用于获取地图中的所有独立表。
7、查找图层
var lys = map.FindLayers(LayerName);
【FindLayers(LayerName)】方法用于按图层名查找相应图层,注意这里的LayerName不支持模糊查找。
8、获取坐标系
var sr = map.SpatialReference;
Map的【SpatialReference】属性返回地图的坐标系。
9、移动图层
-
// 获取当前地图
-
var map = MapView.Active.Map;
-
// 获取第一个图层
-
var ly = map.GetLayersAsFlattenedList();
-
// 移动到最后的位置
-
QueuedTask.Run(
async () =>
-
{
-
map.MoveLayer(ly[
0],
-1);
-
});
【MoveLayer(Layer, index)】方法用于按标签位置移动图层的位置。
这里演示的是将地图中的第1个图层移动到最后的位置。
10、移除所有图层
-
// 获取当前地图
-
var map = MapView.Active.Map;
-
// 获取所有图层
-
var lys = map.GetLayersAsFlattenedList();
-
// 移除所有图层
-
QueuedTask.Run(
async () =>
-
{
-
map.RemoveLayers(lys);
-
});
【RemoveLayers(lys)】方法用于移除图层列表。
【RemoveLayer(ly)】方法用于移除单一图层。
这里演示的是用【RemoveLayers(lys)】方法移除地图中的所有图层。
11、将要素添加到当前地图
-
// 获取当前地图
-
var map = MapView.Active.Map;
-
//打开对话框
-
OpenItemDialog openDlg =
new OpenItemDialog()
-
{
-
Title =
"选择要素",
//打开对话框标题
-
Filter = ItemFilters.FeatureClasses_All,
//类型筛选
-
};
-
//打开对话框
-
bool? ok = openDlg.ShowDialog();
-
//如果没有选择内容,则返回
-
if (!ok.HasValue)
-
return;
-
// 获取返回的要素路径
-
var fc = openDlg.Items.First().Path;
-
// 按返回的要素路径将要素添加到当前地图中
-
Uri uri =
new Uri(fc);
-
QueuedTask.Run(
async () =>
-
{
-
LayerFactory.Instance.CreateLayer(uri,map);
-
});
【LayerFactory.Instance.CreateLayer()】方法用于将要素添加到当前地图。
需要先将路径转换成Uri。
12、保存地图
-
// 获取当前地图
-
var map = MapView.Active.Map;
-
//打开对话框
-
SaveItemDialog saveDlg =
new SaveItemDialog()
-
{
-
Title =
"保存地图为",
//打开对话框标题
-
Filter = ItemFilters.Maps_All,
//类型筛选
-
};
-
//打开对话框
-
bool? ok = saveDlg.ShowDialog();
-
//如果没有选择内容,则返回
-
if (!ok.HasValue)
-
return;
-
// 按返回的工程路径保存地图
-
QueuedTask.Run(
async () =>
-
{
-
map.SaveAsFile(saveDlg.FilePath,
true);
-
});
【SaveAsFile()】方法用于将地图保存为地图文件。
13、替换地图内图层的数据库路径
map.FindAndReplaceWorkspacePath(path1, path2);
其中path1为当前要素图层所在的数据库,path2为要替换的数据库。
一个应用场景:如村庄规划,地图内的要素全部来自一个村庄成果数据库。复制一个新的地图,并将地图的数据库路径替换成新的村庄数据库,代码运行结果会将地图内的图层全部替换,不用遍历所有图层。
二、工程文件分享
最后,放上工程文件的链接:
MapManagerhttps://pan.baidu.com/s/1JqITwFtqSFjww5JTOM0RZQ?pwd=4myr
转载:https://blog.csdn.net/xcc34452366/article/details/129200249