济宁苍南网站建设,湖北省建设工程教育协会网站,网站地图制作怎么做,网站开发项目需求ArcGIS Pro SDK #xff08;五#xff09;内容 2 地图工程 目录 ArcGIS Pro SDK #xff08;五#xff09;内容 2 地图工程1 将文件夹连接项添加到当前工程2.2 获取所有工程项2.3 获取工程的所有“MapProjectItems”2.4 获取特定的“MapProjectItem”2.5 获取所有“样式工程…ArcGIS Pro SDK 五内容 2 地图工程 目录 ArcGIS Pro SDK 五内容 2 地图工程1 将文件夹连接项添加到当前工程2.2 获取所有工程项2.3 获取工程的所有“MapProjectItems”2.4 获取特定的“MapProjectItem”2.5 获取所有“样式工程项”2.6 获取特定的“样式工程项”2.7 获取“收藏夹”样式工程项2.8 获取所有“GDBProjectItems”2.9 获取特定的“GDBProjectItem”2.10 获取所有“服务器连接工程项”2.11 获取特定的“服务器连接工程项”2.12 获取工程中的所有文件夹连接2.13 获取特定文件夹连接2.14 删除特定文件夹连接2.15 获取特定的“布局工程项”2.16 获取工程中的所有布局2.17 获取特定的“地理处理工程项”2.18 获取工程中的所有地理处理工程项2.19 在工程中搜索特定工程2.20 获取默认工程文件夹2.21 刷新文件夹连接项的子项2.22 获取工程类别2.23 使用工程类别2.24 使用模板创建工程2.25 选择工程容器 - 用于 SelectItemAsync2.26 工程项获取项或查找项2.27 在目录窗格中选择一个工程 环境Visual Studio 2022 .NET6 ArcGIS Pro SDK 3.0 1 将文件夹连接项添加到当前工程
//添加文件夹连接
string folderPath C:\\myDataFolder;
var folder await QueuedTask.Run(() {//创建文件夹连接工程项var item ItemFactory.Instance.Create(folderPath) as IProjectItem;//如果成功添加到程项中返回文件夹连接工程项否则返回nullreturn Project.Current.AddItem(item) ? item as FolderConnectionProjectItem : null;});//添加GDB
string gdbPath C:\\myDataFolder\\myData.gdb;
var newlyAddedGDB await QueuedTask.Run(() {//创建GDB工程项var item ItemFactory.Instance.Create(gdbPath) as IProjectItem;//如果成功添加到程项中返回GDB工程项否则返回nullreturn Project.Current.AddItem(item) ? item as GDBProjectItem : null;});2.2 获取所有工程项
IEnumerableItem allProjectItems Project.Current.GetItemsItem();
foreach (var pi in allProjectItems)
{//功能代码...
}2.3 获取工程的所有“MapProjectItems”
IEnumerableMapProjectItem newMapItemsContainer project.GetItemsMapProjectItem();await QueuedTask.Run(() {foreach (var mp in newMapItemsContainer){//对地图做点什么。例如:Map myMap mp.GetMap();}});2.4 获取特定的“MapProjectItem”
MapProjectItem mapProjItem Project.Current.GetItemsMapProjectItem().FirstOrDefault(item item.Name.Equals(EuropeMap));2.5 获取所有“样式工程项”
IEnumerableStyleProjectItem newStyleItemsContainer null;
newStyleItemsContainer Project.Current.GetItemsStyleProjectItem();
foreach (var styleItem in newStyleItemsContainer)
{//对样式做点什么。
}2.6 获取特定的“样式工程项”
var container Project.Current.GetItemsStyleProjectItem();
StyleProjectItem testStyle container.FirstOrDefault(style (style.Name ArcGIS 3D));
StyleItem cone null;
if (testStyle ! null)cone testStyle.LookupItem(StyleItemType.PointSymbol, Cone_Volume_3);2.7 获取“收藏夹”样式工程项
var fav_style_item await QueuedTask.Run(() {var containerStyle Project.Current.GetProjectItemContainer(Style);return containerStyle.GetItems().OfTypeStyleProjectItem().First(item item.TypeID personal_style);});2.8 获取所有“GDBProjectItems”
IEnumerableGDBProjectItem newGDBItemsContainer null;
newGDBItemsContainer Project.Current.GetItemsGDBProjectItem();
foreach (var GDBItem in newGDBItemsContainer)
{//对GDB做点什么
}2.9 获取特定的“GDBProjectItem”
GDBProjectItem GDBProjItem Project.Current.GetItemsGDBProjectItem().FirstOrDefault(item item.Name.Equals(myGDB));2.10 获取所有“服务器连接工程项”
IEnumerableServerConnectionProjectItem newServerConnections null;
newServerConnections project.GetItemsServerConnectionProjectItem();
foreach (var serverItem in newServerConnections)
{//对server做点什么
}2.11 获取特定的“服务器连接工程项”
ServerConnectionProjectItem serverProjItem Project.Current.GetItemsServerConnectionProjectItem().FirstOrDefault(item item.Name.Equals(myServer));2.12 获取工程中的所有文件夹连接
//获取当前工程中的所有文件夹连接
var projectFolders Project.Current.GetItemsFolderConnectionProjectItem();
foreach (var FolderItem in projectFolders)
{//对文件夹连接做点什么
}2.13 获取特定文件夹连接
//获取当前工程中的特定文件夹连接
FolderConnectionProjectItem myProjectFolder Project.Current.GetItemsFolderConnectionProjectItem().FirstOrDefault(folderPI folderPI.Name.Equals(myDataFolder));2.14 删除特定文件夹连接
// 从工程中删除文件夹连接;未删除本地磁盘或网络上的文件夹
FolderConnectionProjectItem folderToRemove Project.Current.GetItemsFolderConnectionProjectItem().FirstOrDefault(myfolder myfolder.Name.Equals(PlantSpecies));
if (folderToRemove ! null)Project.Current.RemoveItem(folderToRemove as IProjectItem);2.15 获取特定的“布局工程项”
LayoutProjectItem layoutProjItem Project.Current.GetItemsLayoutProjectItem().FirstOrDefault(item item.Name.Equals(myLayout));2.16 获取工程中的所有布局
//获取当前项目中的所有布局
var projectLayouts Project.Current.GetItemsLayoutProjectItem();
foreach (var layoutItem in projectLayouts)
{//对布局做点什么
}2.17 获取特定的“地理处理工程项”
GeoprocessingProjectItem GPProjItem Project.Current.GetItemsGeoprocessingProjectItem().FirstOrDefault(item item.Name.Equals(myToolbox));2.18 获取工程中的所有地理处理工程项
//获取当前项目中的所有GeoprocessingProjectItem
var GPItems Project.Current.GetItemsGeoprocessingProjectItem();
foreach (var tbx in GPItems)
{//对工具箱做点什么
}2.19 在工程中搜索特定工程
ListItem _mxd new ListItem();
//获取当前工程中的所有文件夹连接
var allFoldersItem Project.Current.GetItemsFolderConnectionProjectItem();
if (allFoldersItem ! null)
{//遍历找到的所有文件夹连接项foreach (var folderItem in allFoldersItem){//在该文件夹连接中搜索mxd文件并将其添加到ListT//注意:ArcGIS Pro在构建和使用工程时自动创建和动态更新可搜索索引。//将项添加到工程时它们将被编入索引。//第一次索引文件夹或数据库时如果它包含大量项目则索引可能需要一段时间。//创建索引时搜索不会返回任何结果。_mxd.AddRange(folderItem.GetItems());}
}2.20 获取默认工程文件夹
//获取Pro的默认项目设置。
var defaultSettings Project.GetDefaultProjectSettings();
var defaultProjectPath defaultSettings.LocationPath;
if (defaultProjectPath null)
{// 如果没有设置项目将保存在用户的...\My Documents\ArcGIS\Projects文件夹中;// 如果该文件夹不存在则创建该文件夹。defaultProjectPath System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),ArcGIS\Projects);
}2.21 刷新文件夹连接项的子项
var contentItem Project.Current.GetItemsFolderConnectionProjectItem().First();
//var contentItem ...
//Check if the MCT is required for Refresh()
//检查刷新是否需要使用MCT线程
if (contentItem.IsMainThreadRequired)
{//如果item.IsMainThreadRequired为true必须使用QueuedTask.Run()//返回trueQueuedTask.Run(() contentItem.Refresh());
}
else
{//如果item.IsMainThreadRequired为false任何线程都可以调用Refresh()但首选BackgroundTask。contentItem.Refresh();//或者通过BackgroundTaskArcGIS.Core.Threading.Tasks.BackgroundTask.Run(() contentItem.Refresh(), ArcGIS.Core.Threading.Tasks.BackgroundProgressor.None);
}2.22 获取工程类别
//获取与项关联的项目类别
Item gdb ItemFactory.Instance.Create(E:\CurrentProject\RegionalPolling\polldata.gdb);
ListItemCategory gdbItemCategories gdb.ItemCategories;2.23 使用工程类别
//使用ItemCategory作为筛选器浏览项目
IEnumerableItem gdbContents gdb.GetItems();
IEnumerableItem filteredGDBContents1 gdbContents.Where(item item.ItemCategories.OfTypeItemCategoryDataSet().Any());
IEnumerableItem filteredGDBContents2 new ItemCategoryDataSet().Items(gdbContents);2.24 使用模板创建工程
var projectFolder System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),ArcGIS\Projects);CreateProjectSettings ps new CreateProjectSettings()
{Name MyProject,LocationPath projectFolder,TemplatePath C:\data\my_templates\custom_template.aptx
};var project await Project.CreateAsync(ps);2.25 选择工程容器 - 用于 SelectItemAsync
//使用 Project.Current.ProjectItemContainers
var folderContainer Project.Current.ProjectItemContainers.First(c c.Path FolderConnection);
var gdbContainer Project.Current.ProjectItemContainers.First(c c.Path GDB);
var mapContainer Project.Current.ProjectItemContainers.First(c c.Path Map);
var layoutContainer Project.Current.ProjectItemContainers.First(c c.Path Layout);
var toolboxContainer Project.Current.ProjectItemContainers.First(c c.Path GP);//或者使用 Project.Current.GetProjectItemContainerfolderContainer Project.Current.GetProjectItemContainer(FolderConnection);
gdbContainer Project.Current.GetProjectItemContainer(GDB);
mapContainer Project.Current.GetProjectItemContainer(Map);
layoutContainer Project.Current.GetProjectItemContainer(Layout);
toolboxContainer Project.Current.GetProjectItemContainer(GP);2.26 工程项获取项或查找项
//GetItems搜索项内容
var map Project.Current.GetItemsMapProjectItem().FirstOrDefault(m m.Name Map1);
var layout Project.Current.GetItemsLayoutProjectItem().FirstOrDefault(m m.Name Layout1);
var folders Project.Current.GetItemsFolderConnectionProjectItem();
var style Project.Current.GetItemsStyleProjectItem().FirstOrDefault(s s.Name ArcGIS 3D);//“查找项”使用目录路径。路径可以是文件或数据集
var fcPath C:\Pro\CommunitySampleData\Interacting with Maps\Interacting with Maps.gdb\Crimes;
var pdfPath C:\Temp\Layout1.pdf;
var imgPath C:\Temp\AddinDesktop16.png;var fc Project.Current.FindItem(fcPath);
var pdf Project.Current.FindItem(pdfPath);
var img Project.Current.FindItem(imgPath);2.27 在目录窗格中选择一个工程
//获取目录窗格
ArcGIS.Desktop.Core.IProjectWindow projectWindow Project.GetCatalogPane();
//或者获取活动目录视图……
//ArcGIS.Desktop.Core.IProjectWindow projectWindow Project.GetActiveCatalogWindow();//eg 在工程中找到一个工具箱
string gpName Interacting with Maps.tbx;
var toolbox Project.Current.GetItemsGeoprocessingProjectItem().FirstOrDefault(tbx tbx.Name gpName);
//在“工具箱”下选择它
projectWindow.SelectItemAsync(toolbox, true, true, null);//Null在第一个容器中选择它-可选的await
//注意:Project.Current.GetProjectItemContainer(“GP”)将得到toolbox container…//假设toolbox也在文件夹容器下。在文件夹下而不是工具箱下选择它
var foldersContainer Project.Current.ProjectItemContainers.First(c c.Path FolderConnection);
//必须指定容器因为文件夹排在第二位(在工具箱之后)。
projectWindow.SelectItemAsync(toolbox, true, true, foldersContainer);//optionally await//找到一张地图并选择它
var mapItem Project.Current.GetItemsMapProjectItem().FirstOrDefault(m m.Name Map);
//Map只出现在“Maps”下因此不需要指定容器
projectWindow.SelectItemAsync(mapItem, true, false, null);