0
点赞
收藏
分享

微信扫一扫

ArcGIS Pro 构建地图识别工具

惠特曼 2023-05-12 阅读 68

his tutorial demonstrates how to create an ArcGIS Pro add-in with a custom map identification tool.

With the ArcGIS Pro SDK for .NET, you can extend ArcGIS Pro with your own unique tools and workflows. Using Microsoft Visual Studio and the Pro SDK, developers can build Pro add-ins and solution configurations that provide users with custom functionality specific to their organization or industry.

In this tutorial, you will use C# to create a new map tool for feature identification which allows you to draw a circular selection area on the map and view the total number of features per feature layer

Tip

For more information, see the ArcGIS Pro wiki map exploration and map tools. Or see the ArcGIS Pro SDK API reference. For more samples, see the ArcGIS Pro user community's Map Exploration samples.

Prerequisites

  • Microsoft Visual Studio is required. See the ArcGIS Pro system requirements for latest version and compatibility.
  • Install ArcGIS Pro version 3.0 or higher.
  • Install the ArcGIS Pro SDK for .NET. See the Installation ProGuide for more information.
  • This tutorial uses Pro SDK Community sample data typically saved to your local C: drive.

Steps

Create a new ArcGIS Pro Add-In Visual Studio Project

  1. Start Visual Studio.
  2. Choose File > New > Project and then from ArcGIS templates group, select ArcGIS Pro Module Add-in. Name the add-in project "MapToolIdentify".More info

Create a new Pro map tool

  1. Right-click the project and choose Add > New Item and then from the ArcGIS Pro Add-ins group select ArcGIS Pro Map Tool from the list of item templates. Name the new class file IdentifyTool.cs and then click Add to close the dialog box.More info
  2. Open the Config.daml file and modify the tool item as shown in the following code:More info



<tool id="MapToolIdentify_IdentifyTool"
         caption="Identify Features"
         className="IdentifyTool"
         loadOnClick="true"
         smallImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonRed16.png"
         largeImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonRed32.png"
         condition="esri_mapping_mapPane">
      <tooltip heading="Identify Features">Identify features on the current map using a circular sketch.<disabledText /></tooltip>
   </tool>

  1. Compile and build the add-in project with Build > Build Solution.
  2. Once the build succeeds, click Start to start the debugger in ArcGIS Pro. When the ArcGIS Pro start page appears, select the previously-installed Pro SDK Community sample project: C:\\Data\\Interacting with Maps\\Interacting with Maps.aprx.
  3. Click the Add-In tab to confirm that your new map tool UI appears on the ribbon with the caption, tooltip, and the other modifications from step 4.
  4. Close ArcGIS Pro and stop debugging.

Create the identify map tool code and test

  1. Open the IdentifyTool.cs file and add the following using statements:More info



using ArcGIS.Desktop.Framework.Threading.Tasks;
   using ArcGIS.Desktop.Framework.Dialogs;

  1. Modify the IdentifyTool() constructor as follows:More info



public IdentifyTool()
   {
         IsSketchTool = true;
         SketchType = SketchGeometryType.Circle;
         SketchOutputMode = SketchOutputMode.Screen;
   }

  1. Modify the OnSketchCompleteAsync as follows, adding the async keyword to the method declaration:More info



protected override async Task<bool> OnSketchCompleteAsync(Geometry geometry)
   {
         var mv = MapView.Active;
         var identifyResult = await QueuedTask.Run(() =>
         {
            var sb = new StringBuilder();

            // Get the features that intersect the sketch geometry.
            var features = mv.GetFeatures(geometry);

            // Get all layer definitions.
            var lyrs = mv.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
            foreach (var lyr in lyrs)
            {
               var fCnt = features.ToDictionary().ContainsKey(lyr) ? features[lyr].Count : 0;
               sb.AppendLine($@"{fCnt} {(fCnt == 1 ? "record" : "records")} for {lyr.Name}");
            }
            return sb.ToString();
         });
         MessageBox.Show(identifyResult);
         return true;
   }

  1. Rebuild your solution and fix any compilation errors. Click Start to start the debugger in ArcGIS Pro. Open the same Interacting with Maps.aprx project from the previous step.
  2. Zoom in on an area of the map containing features from the different feature layers to confirm that your new Identify tool functions as expected. Click and hold to define the center point of your selection circle, and drag away to define the radius. Once you release the mouse button, a message box should appear with the number of visible features found within the circle you defined.More info

What's Next?

Learn how to use additional ArcGIS Pro SDK for .NET features in these tutorials:

  • Build your first configuration
  • Manage add-in loading
  • Edit attribute data
举报

相关推荐

0 条评论