ArcGIS Pro SDK 地图创作
地图创作
地图
获取活动地图
1 | Map map = MapView.Active.Map; |
使用默认底图图层创建新地图
1 | await QueuedTask.Run(() => |
在工程中查找地图并将其打开
1 | public static async Task<Map> FindOpenExistingMapAsync(string mapName) |
打开 web 地图
1 | Map map = null; |
获取地图窗格
1 | public static IEnumerable<IMapPane> GetMapPanes() |
从地图窗格中获取唯一的地图列表
1 | public static IReadOnlyList<Map> GetMapsFromMapPanes() |
更改地图名称
1 | MapView.Active.Map.SetName("Test"); |
重命名窗格的标题
1 | ProApp.Panes.ActivePane.Caption = "Caption"; |
将地图转换为局部场景
1 | //Note: Run within the context of QueuedTask.Run |
获取底图
1 | //Basemaps stored locally in the project. This is usually an empty collection |
将地图另存为 MapX
1 | map.SaveAsFile(@"C:\Data\MyMap.mapx", true); |
将 2D 地图另存为 Web 地图 在磁盘上
1 | //2D maps only |
裁剪映射到提供的裁剪多边形
1 | //Run within QueuedTask |
清除当前地图剪辑几何
1 | //Run within QueuedTask |
获取地图裁剪几何
1 | var map = MapView.Active.Map; |
获取当前地图位置单元
1 | //var map = MapView.Active.Map; |
获取可用的地图位置单位列表
1 | //var map = MapView.Active.Map; |
使用当前地图位置单元设置位置格式
1 | var mv = MapView.Active; |
设置当前地图的位置单位
1 | var mv = MapView.Active; |
获取当前地图高程单位
1 | //var map = MapView.Active.Map; |
获取可用的地图高程单位列表
1 | //var map = MapView.Active.Map; |
使用当前地图高程单位设置高程格式
1 | var mv = MapView.Active; |
设置当前地图的高程单位
1 | var map = MapView.Active.Map; |
离线地图
检查地图是否具有启用同步的内容
1 | //namespace ArcGIS.Desktop.Mapping.Offline |
为启用同步的内容生成副本
1 | //namespace ArcGIS.Desktop.Mapping.Offline |
检查地图是否具有本地可同步内容
1 | //namespace ArcGIS.Desktop.Mapping.Offline |
同步可同步内容的副本
1 | //namespace ArcGIS.Desktop.Mapping.Offline |
删除可同步内容的副本
1 | //namespace ArcGIS.Desktop.Mapping.Offline |
导出地图栅格切片缓存内容
1 | //namespace ArcGIS.Desktop.Mapping.Offline |
导出地图矢量切片缓存内容
1 | //namespace ArcGIS.Desktop.Mapping.Offline |
创建图层
创建图层并将其添加到活动地图
1 | /* |
使用创建参数创建图层
1 | var flyrCreatnParam = new FeatureLayerCreationParams(new Uri(@"c:\data\world.gdb\cities")) |
创建要素图层并使用图层创建参数添加到地图
1 | //Note: Call within QueuedTask.Run() |
创建要素图层并设置为不显示在地图中。
1 | //The catalog path of the feature layer to add to the map |
使用渲染器创建要素图层
1 | //Note: Call within QueuedTask.Run() |
使用查询定义创建要素图层
1 | //The catalog path of the feature layer to add to the map |
将地图注释添加到活动地图
1 | //Gets the collection of layer template packages installed with Pro for use with maps |
应用目录中图层的符号系统
1 | //Note: Call within QueuedTask.Run() |
创建新的子类型图层组
1 | var subtypeGroupLayerCreateParam = new SubtypeGroupLayerCreationParams |
从 lyrx 文件创建图层
1 | var lyrDocFromLyrxFile = new LayerDocument(@"d:\data\cities.lyrx"); |
将符号系统应用于图层文件中的图层
1 | //Note: Run within QueuedTask.Run |
添加 WMS 服务
1 | // Create a connection to the WMS server |
添加 WFS 服务
1 | CIMStandardDataConnection cIMStandardDataConnection = new CIMStandardDataConnection() |
添加和更改 WMS 服务图层的样式
1 | var serverConnection = new CIMInternetServerConnection { URL = "https://spritle.esri.com/arcgis/services/sanfrancisco_sld/MapServer/WMSServer" }; |
创建查询图层
1 | await QueuedTask.Run(() => |
使用默认值分类间隔渲染器创建要素图层
1 | await QueuedTask.Run(() => |
使用分类间隔渲染器创建要素图层
1 | string colorBrewerSchemesName = "ColorBrewer Schemes (RGB)"; |
底图图层
更新地图的底图图层
1 | aMap.SetBasemapLayers(Basemap.Gray); |
从地图中移除底图图层
1 | aMap.SetBasemapLayers(Basemap.None); |
使用图层
从地图中获取按图层类型过滤的图层列表
1 | List<FeatureLayer> featureLayerList = aMap.GetLayersAsFlattenedList().OfType<FeatureLayer>().ToList(); |
获取特定几何类型的图层
1 | //Get an existing Layer. This layer has a symbol you want to use in a new layer. |
查找图层
1 | //Finds layers by name and returns a read only list of Layers |
查找独立表
1 | // these routines find a standalone table whether it is a child of the Map or a GroupLayer |
使用部分名称搜索查找图层
1 | Map map = MapView.Active.Map; |
更改图层可见性、可编辑性、捕捉性
1 | if (!layer.IsVisible) |
创建 Lyrx 文件
1 | LayerDocument layerDocument = new LayerDocument(layer); |
计算图层上所选要素的数量
1 | var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); |
访问图层的显示字段
1 | var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); |
在图层上启用标注
1 | var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); |
将 2D 组中的图层移动到局部场景中的 3D 组
1 | //The layer in the 2D group to move to the 3D Group in a Local Scene |
重置要素服务图层的 URL
1 | CIMStandardDataConnection dataConnection = dataConnectionLayer.GetDataConnection() as CIMStandardDataConnection; |
更改要素图层的基础数据源 - 相同的工作空间类型
1 | //This is the existing layer for which we want to switch the underlying datasource |
将图层的地理数据库版本更改为地图中的指定版本
1 | await QueuedTask.Run(() => |
查询要素图层
1 | var count = await QueuedTask.Run(() => |
获取图层的属性旋转字段
1 | var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); |
查找要旋转的连接属性字段
1 | var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); |
切换“设置参考比例时缩放图层符号”
1 | var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); |
设置图层缓存
1 | var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); |
更改图层选择颜色
1 | var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); |
删除所有未选中的图层
1 | var map = MapView.Active.Map; |
删除空组
1 | var map = MapView.Active.Map; |
在地图定义中创建缩写字典并将其应用于图层
1 | public static void CreateDictionary() |
属性表 - ITablePane
设置属性表的缩放级别
1 | if (FrameworkApplication.Panes.ActivePane is ITablePane tablePane) |
检索属性表中所选像元的值
1 | if (FrameworkApplication.Panes.ActivePane is ITablePane tablePane) |
移动到特定行
1 | if (FrameworkApplication.Panes.ActivePane is ITablePane tablePane) |
元数据
获取和设置地图元数据
1 | var map = MapView.Active.Map; |
图层元数据
1 | MapMember mapMember = map.GetLayersAsFlattenedList().FirstOrDefault(); //Search for only layers/tables here if needed. |
渲染器
将唯一值渲染器设置为活动地图的所选要素图层
1 | await QueuedTask.Run(() => |
创建一个唯一值呈现器以指定值的符号
1 | return QueuedTask.Run(() => |
创建热图渲染器
1 | string colorBrewerSchemesName = "ArcGIS Colors"; |
创建未分类渲染器
1 | string colorBrewerSchemesName = "ArcGIS Colors"; |
创建最大和最小符号大小上限的比例渲染器
1 | string colorBrewerSchemesName = "ArcGIS Colors"; |
创建真实比例渲染器
1 | string colorBrewerSchemesName = "ArcGIS Colors"; |
拱廊
使用 Arcade 修改渲染器
1 | var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(f => f.ShapeType == esriGeometryType.esriGeometryPolygon); |
使用 Arcade 修改标注表达式
1 | var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(f => f.ShapeType == esriGeometryType.esriGeometryPolygon); |
高程表面图层
创建具有地表图层的场景
1 | // wrap in QueuedTask.Run |
创建新的高程表面
1 | //Note: call within QueuedTask.Run() |
将自定义高程表面设置为 Z 感知图层
1 | //Define the custom elevation surface to use |
将高程源添加到现有高程表面图层
1 | // wrap in QueuendTask.Run |
从地图中获取高程表面图层和高程源图层
1 | // retrieve the elevation surface layers in the map including the Ground |
查找高程表面图层
1 | var surfaceLayers = map.GetElevationSurfaceLayers(); |
移除高程表面图层
1 | // wrap in a QueuedTask.Run |
从曲面获取 Z 值
1 | var geometry = await QueuedTask.Run<Geometry>(() => |
栅格图层
创建栅格图层
1 | string url = @"C:\Images\Italy.tif"; |
更新栅格图层上的栅格着色器
1 | await QueuedTask.Run(() => |
更新栅格图层上的 RGB 着色器
1 | await QueuedTask.Run(() => |
检查是否可以将某个着色器应用于栅格图层
1 | await QueuedTask.Run(() => |
基于默认着色器定义创建新的着色器并将其应用于栅格图层
1 | await QueuedTask.Run(async () => |
基于自定义着色器定义创建新的着色器并将其应用于栅格图层
1 | await QueuedTask.Run(async () => |
使用新的着色器定义创建栅格图层
1 | // Create a new stretch colorizer definition using default constructor. |
马赛克图层
创建镶嵌图层
1 | MosaicLayer mosaicLayer = null; |
更新镶嵌图层上的栅格着色器
1 | await QueuedTask.Run(() => |
更新镶嵌图层上的 RGB 着色器
1 | await QueuedTask.Run(() => |
检查是否可以将某种着色器应用于马赛克图层
1 | await QueuedTask.Run(() => |
基于默认着色器定义创建新的着色器并将其应用于镶嵌图层
1 | await QueuedTask.Run(async () => |
基于自定义着色器定义创建新的着色器并将其应用于镶嵌图层
1 | await QueuedTask.Run(async () => |
使用新的着色器定义创建镶嵌图层
1 | // Create a new colorizer definition using default constructor. |
更新镶嵌图层上的排序顺序 - 镶嵌方法
1 | await QueuedTask.Run(() => |
更新镶嵌图层上的解析重叠 - 镶嵌运算符
1 | await QueuedTask.Run(() => |
影像服务图层
创建影像服务图层
1 | ImageServiceLayer isLayer = null; |
更新影像服务图层上的栅格着色器
1 | await QueuedTask.Run(() => |
更新影像服务图层上的 RGB 着色器
1 | await QueuedTask.Run(() => |
检查是否可以将特定着色器应用于影像服务图层
1 | await QueuedTask.Run(() => |
基于默认着色器定义创建新的着色器并将其应用于影像服务图层
1 | await QueuedTask.Run(async () => |
基于自定义着色器定义创建新的着色器并将其应用于影像服务图层
1 | await QueuedTask.Run(async () => |
使用新的着色器定义创建影像服务图层
1 | // Create a new colorizer definition using default constructor. |
更新影像服务图层上的排序顺序 - 镶嵌方法
1 | await QueuedTask.Run(() => |
更新影像服务图层上的解决重叠 - 镶嵌运算符
1 | await QueuedTask.Run(() => |
使用独立表
创建独立表
1 | //container can be a map or group layer |
从表的容器中检索表
1 | var container = MapView.Active.Map; |
移动独立表
1 | //get the first group layer that has at least one table |
删除独立表
1 | //get the first group layer that has at least one table |
符号图层绘制 (SLD)
添加 SLD
1 | QueuedTask.Run(() => |
确定图层是否添加了 SLD
1 | //SLD can be added to feature layers and group layers |
启用/禁用 SLD
1 | QueuedTask.Run(() => |
设备位置 API、GPS/GNSS 设备
连接到设备位置源
1 | var newSrc = new SerialPortDeviceLocationSource(); |
获取当前设备位置源
1 | var source = DeviceLocationService.Instance.GetSource(); |
关闭当前设备位置源
1 | //Is there a current device source? |
获取当前设备位置源和属性
1 | bool isConnected = DeviceLocationService.Instance.IsDeviceConnected(); |
更新当前设备位置源上的属性
1 | await QueuedTask.Run(() => |
订阅设备位置属性更新事件
1 | private void SubscribeToPropertiesEvents() |
订阅设备位置源更改事件
1 | private void SubscribeToSourceEvents() |
映射设备位置选项
启用/禁用地图的当前设备位置源
1 | bool enabled = MapDeviceLocationService.Instance.IsDeviceLocationEnabled; |
获取当前地图设备位置选项
1 | var options = MapDeviceLocationService.Instance.GetDeviceLocationOptions(); |
检查地图上是否启用了当前设备位置
1 | if (MapDeviceLocationService.Instance.IsDeviceLocationEnabled) |
设置当前地图设备位置选项
1 | //Must be on the QueuedTask.Run() |
缩放/平移地图到最新位置
1 | //Must be on the QueuedTask.Run() |
将最新位置添加到图形图层
1 | //var graphicsLayer = ... ; |
订阅位置快照事件
1 | private void SubscribeToSnapshotEvents() |
特征遮罩
获取要素的遮罩几何
1 | var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList() |
风格管理
如何按名称获取项目中的样式
1 | //Get all styles in the project |
如何创建新样式
1 | //Full path for the new style file (.stylx) to be created |
如何向项目添加样式
1 | //For ArcGIS Pro system styles, just pass in the name of the style to add to the project |
如何从项目中删除样式
1 | //For ArcGIS Pro system styles, just pass in the name of the style to remove from the project |
如何将样式项添加到样式
1 | public Task AddStyleItemAsync(StyleProjectItem style, StyleItem itemToAdd) |
如何从样式中删除样式项
1 | public Task RemoveStyleItemAsync(StyleProjectItem style, StyleItem itemToRemove) |
如何确定样式是否可以升级
1 | //Pass in the full path to the style file on disk |
如何确定样式是否为只读
1 | //Pass in the full path to the style file on disk |
如何确定样式是否为当前样式
1 | //Pass in the full path to the style file on disk |
如何升级样式
1 | //Pass in the full path to the style file on disk |
符号
如何构建特定颜色和大小的点符号
1 | await QueuedTask.Run(() => |
如何构建特定颜色、大小和形状的点符号
1 | await QueuedTask.Run(() => |
如何根据标记构造点符号
1 | await QueuedTask.Run(() => |
如何从磁盘上的文件构造点符号
1 | //The following file formats can be used to create the marker: DAE, 3DS, FLT, EMF, JPG, PNG, BMP, GIF |
如何从内存图形构造点符号
1 | //Create a stream for the image |
如何构造特定颜色和填充样式的面符号
1 | CIMPolygonSymbol polygonSymbol = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.RedRGB, SimpleFillStyle.Solid); |
如何构建特定颜色、填充样式和轮廓的多边形符号
1 | CIMStroke outline = SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.BlueRGB, 2.0, SimpleLineStyle.Solid); |
如何在没有轮廓的情况下构建面符号
1 | CIMPolygonSymbol fillWithoutOutline = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.RedRGB, SimpleFillStyle.Solid, null); |
如何构建特定颜色、大小和线条样式的线符号
1 | CIMLineSymbol lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlueRGB, 4.0, SimpleLineStyle.Solid); |
如何根据笔划构造线条符号
1 | CIMStroke stroke = SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.BlackRGB, 2.0); |
如何构建线端带有圆形标记的多图层线符号
1 | //These methods must be called within the lambda passed to QueuedTask.Run |
如何构建末端带有箭头的多图层线符号
1 | //These methods must be called within the lambda passed to QueuedTask.Run |
如何从符号获取符号引用
1 | CIMPolygonSymbol symbol = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.RedRGB); |
修改从字符标记创建的点符号
1 | //create marker from the Font, char index,size,color |
获取可用字体的列表
1 | //Must use QueuedTask.Run(...) |
获取/设置默认字体
1 | //Must use QueuedTask.Run(...) |
使用选项构建文本符号
1 | QueuedTask.Run(() => |
为给定符号创建色板
1 | //Note: call within QueuedTask.Run() |
查找符号
1 | //Note: Run within QueuedTask.Run |
符号搜索
如何在样式中搜索特定项目
1 | public Task<SymbolStyleItem> GetSymbolFromStyleAsync(StyleProjectItem style, string key) |
如何在样式中搜索点符号
1 | public Task<IList<SymbolStyleItem>> GetPointSymbolsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索线符号
1 | public Task<IList<SymbolStyleItem>> GetLineSymbolsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索面符号
1 | public async Task<IList<SymbolStyleItem>> GetPolygonSymbolsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索颜色
1 | public async Task<IList<ColorStyleItem>> GetColorsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索色带
1 | public async Task<IList<ColorRampStyleItem>> GetColorRampsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索指北针
1 | public Task<IList<NorthArrowStyleItem>> GetNorthArrowsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索比例尺
1 | public Task<IList<ScaleBarStyleItem>> GetScaleBarsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索标签展示位置
1 | public Task<IList<LabelPlacementStyleItem>> GetLabelPlacementsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索图例
1 | public Task<IList<LegendStyleItem>> GetLegendFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索图例项
1 | public Task<IList<LegendItemStyleItem>> GetLegendItemsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索网格
1 | public Task<IList<GridStyleItem>> GetGridsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索地图整饰
1 | public Task<IList<MapSurroundStyleItem>> GetMapSurroundsFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索表格框
1 | public Task<IList<TableFrameStyleItem>> GetTableFramesFromStyleAsync(StyleProjectItem style, string searchString) |
如何在样式中搜索表格框字段
1 | public Task<IList<TableFrameFieldStyleItem>> GetTableFrameFieldsFromStyleAsync(StyleProjectItem style, string searchString) |
要素图层符号系统
如何为使用简单渲染器符号化的要素图层设置符号
1 | public Task SetFeatureLayerSymbolAsync(FeatureLayer ftrLayer, CIMSymbol symbolToApply) |
如何将样式中的符号应用于要素图层
1 | public Task SetFeatureLayerSymbolFromStyleItemAsync( |
如何将样式中的点符号应用于要素图层
1 | // var map = MapView.Active.Map; |
如何将样式的色带应用于要素图层
1 | public async Task ApplyColorRampAsync(FeatureLayer featureLayer, List<string> fields) |
地图创作-注释片段
创建注记构造工具
1 | //In your config.daml...set the categoryRefID |
通过属性更新批注文本。警告:TEXTSTRING Anno 属性必须存在
1 | //See "Change Annotation Text Graphic" for an alternative if TEXTSTRING is missing from the schema |
旋转或移动批注
1 | await QueuedTask.Run(() => |
获取批注文本图形
1 | await QueuedTask.Run(() => |
获取注释的轮廓几何图形
1 | var annoLayer = MapView.Active.Map.GetLayersAsFlattenedList() |
获取注释的遮罩几何图形
1 | var annoLayer = MapView.Active.Map.GetLayersAsFlattenedList() |
地图创作标记代码段
获取活动地图的标注引擎 - Maplex 或标准标注引擎
1 | //Note: call within QueuedTask.Run() |
将活动地图的标注引擎从标准更改为 Maplex,反之亦然
1 | //Note: call within QueuedTask.Run() |
将文本符号应用于要素图层
1 | //Note: call within QueuedTask.Run() |
启用图层标注
1 | //Note: call within QueuedTask.Run() |
修改标签的位置/位置 - 点几何
1 | //Note: call within QueuedTask.Run() |
修改标签的位置/位置 - 线几何
1 | //Note: call within QueuedTask.Run() |
修改标注的位置/位置 - 多边形几何
1 | //Note: call within QueuedTask.Run() |
使用 MaplexEngine 修改标注的方向 - 点和面几何
1 | //Note: call within QueuedTask.Run() |
使用 MaplexEngine - 线几何修改标注的方向
1 | //Note: call within QueuedTask.Run() |
修改标签旋转 - 点几何
1 | //Note: call within QueuedTask.Run() |
在多边形几何中展开标注
1 | //Note: call within QueuedTask.Run() |
修改标签的引出线锚点属性 - 多边形几何
1 | //Note: call within QueuedTask.Run() |
n
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WineMonk!
评论