-
Notifications
You must be signed in to change notification settings - Fork 120
ProGuide Relational Operations
Language: C#
Subject: Geometry
Contributor: ArcGIS Pro SDK Team <arcgisprosdk@esri.com>
Organization: Esri, http://www.esri.com
Date: 10/06/2024
ArcGIS Pro: 3.4
Visual Studio: 2022
This ProGuide shows how the Relate
method of the GeometryEngine
class can express existing relational operations.
In this example, you're expressing the Overlap
method by creating a pattern matrix string as described in the Geometry ProConcepts. Imagine polygon geometries in the following configuration:
In this example of testing the relationship between geometries, you're expressing the relationship where A-B evaluates to true
and A-C evaluates to false
.
You'll create polygon geometries similar to the configuration in the previous image. The coordinates in this example are in Redlands, California, and WebMercator is the projected coordinate system.
// create polygon A by creating a list of the corner coordinates
List<Coordinate2D> coordinatesPolygonA = new List<Coordinate2D>();
coordinatesPolygonA.Add(new Coordinate2D(-13046461, 4036405)); // top-left coordinate
coordinatesPolygonA.Add(new Coordinate2D(-13046423, 4036405)); // top-right coordinate
coordinatesPolygonA.Add(new Coordinate2D(-13046423, 4036380)); // bottom-right coordinate
coordinatesPolygonA.Add(new Coordinate2D(-13046461, 4036380)); // bottom-left coordinate
Polygon polygonA = PolygonBuilderEx.CreatePolygon(coordinatesPolygonA, SpatialReferences.WebMercator);
// create polygon B by creating a list of the corner coordinates
List<Coordinate2D> coordinatesPolygonB = new List<Coordinate2D>();
coordinatesPolygonB.Add(new Coordinate2D(-13046436, 4036421)); // top-left coordinate
coordinatesPolygonB.Add(new Coordinate2D(-13046410, 4036421)); // top-right coordinate
coordinatesPolygonB.Add(new Coordinate2D(-13046410, 4036395)); // bottom-right coordinate
coordinatesPolygonB.Add(new Coordinate2D(-13046436, 4036395)); // bottom-left coordinate
Polygon polygonB = PolygonBuilderEx.CreatePolygon(coordinatesPolygonB, SpatialReferences.WebMercator);
// create polygon C by creating a list of the corner coordinates
List<Coordinate2D> coordinatesPolygonC = new List<Coordinate2D>();
coordinatesPolygonC.Add(new Coordinate2D(-13046432, 4036372)); // top-left coordinate
coordinatesPolygonC.Add(new Coordinate2D(-13046420, 4036372)); // top-right coordinate
coordinatesPolygonC.Add(new Coordinate2D(-13046420, 4036360)); // bottom-right coordinate
coordinatesPolygonC.Add(new Coordinate2D(-13046432, 4036360)); // bottom-left coordinate
Polygon polygonC = PolygonBuilderEx.CreatePolygon(coordinatesPolygonC, SpatialReferences.WebMercator);
In the previous image, consider the relationship of interiors, boundaries, and exteriors for the combination of polygon A to polygon B and for polygon A to polygon C. The result should be similar to the following matrix. The union of interiors must be true and the union of the exterior and the interior must evaluate to true.
// test the spatial relationship by considering the following DE-9IM matrix
// | I(B) | B(B) | E(B)
// ------|------|------|------
// I(A) | T | * | T
// ------|------|------|------
// B(A) | * | * | *
// ------|------|------|------
// E(A) | T | * | *
// returns true, as polygon A and B do overlap
bool doTheyOverlap = GeometryEngine.Instance.Relate(polygonA, polygonB, "T*T***T**");
// returns false, as polygon A and C do not overlap
doTheyOverlap = GeometryEngine.Instance.Relate(polygonA, polygonC, "T*T***T**");
Home | API Reference | Requirements | Download | Samples
- Overview of the ArcGIS Pro SDK
- What's New for Developers at 3.4
- Installing ArcGIS Pro SDK for .NET
- Release notes
- Resources
- Pro SDK Videos
- ProSnippets
- ArcGIS Pro API
- ProGuide: ArcGIS Pro Extensions NuGet
Migration
- ProSnippets: Framework
- ProSnippets: DAML
- ProConcepts: Framework
- ProConcepts: Asynchronous Programming in ArcGIS Pro
- ProConcepts: Advanced topics
- ProGuide: Custom settings
- ProGuide: Command line switches for ArcGISPro.exe
- ProGuide: Reusing ArcGIS Pro Commands
- ProGuide: Licensing
- ProGuide: Digital signatures
- ProGuide: Command Search
- ProGuide: Keyboard shortcuts
Add-ins
- ProGuide: Installation and Upgrade
- ProGuide: Your first add-in
- ProGuide: ArcGIS AllSource Project Template
- ProConcepts: Localization
- ProGuide: Content and Image Resources
- ProGuide: Embedding Toolboxes
- ProGuide: Diagnosing ArcGIS Pro Add-ins
- ProGuide: Regression Testing
Configurations
Customization
- ProGuide: The Ribbon, Tabs and Groups
- ProGuide: Buttons
- ProGuide: Label Controls
- ProGuide: Checkboxes
- ProGuide: Edit Boxes
- ProGuide: Combo Boxes
- ProGuide: Context Menus
- ProGuide: Palettes and Split Buttons
- ProGuide: Galleries
- ProGuide: Dockpanes
- ProGuide: Code Your Own States and Conditions
Styling
- ProSnippets: Content
- ProSnippets: Browse Dialog Filters
- ProConcepts: Project Content and Items
- ProConcepts: Custom Items
- ProGuide: Custom Items
- ProGuide: Custom browse dialog filters
- ArcGIS Pro TypeID Reference
- ProSnippets: Editing
- ProConcepts: Editing
- ProConcepts: COGO
- ProConcepts: Annotation Editing
- ProConcepts: Dimension Editing
- ProGuide: Editing Tool
- ProGuide: Sketch Tool With Halo
- ProGuide: Construction Tools with Options
- ProGuide: Annotation Construction Tools
- ProGuide: Annotation Editing Tools
- ProGuide: Knowledge Graph Construction Tools
- ProGuide: Templates
3D Analyst Data
Plugin Datasources
Topology
Linear Referencing
Object Model Diagram
- ProSnippets: Geometry
- ProSnippets: Geometry Engine
- ProConcepts: Geometry
- ProConcepts: Multipatches
- ProGuide: Building Multipatches
Relational Operations
- ProSnippets: Knowledge Graph
- ProConcepts: Knowledge Graph
- ProGuide: Knowledge Graph Construction Tools
Reports
- ProSnippets: Map Authoring
- ProSnippets: Annotation
- ProSnippets: Charts
- ProSnippets: Labeling
- ProSnippets: Renderers
- ProSnippets: Symbology
- ProSnippets: Text Symbols
- ProConcepts: Map Authoring
- ProConcepts: Annotation
- ProConcepts: Dimensions
- ProGuide: Tray buttons
- ProGuide: Custom Dictionary Style
- ProGuide: Geocoding
3D Analyst
CIM
Graphics
Scene
Stream
Voxel
- ProSnippets: Map Exploration
- ProSnippets: Custom Pane with Contents
- ProConcepts: Map Exploration
- ProGuide: Map Pane Impersonation
- ProGuide: TableControl
Map Tools
- ProGuide: Feature Selection
- ProGuide: Identify
- ProGuide: MapView Interaction
- ProGuide: Embeddable Controls
- ProGuide: Custom Pop-ups
- ProGuide: Dynamic Pop-up Menu
Network Diagrams
- ArcGIS Pro API Reference Guide
- ArcGIS Pro SDK (pro.arcgis.com)
- arcgis-pro-sdk-community-samples
- ArcGISPro Registry Keys
- ArcGIS Pro DAML ID Reference
- ArcGIS Pro Icon Reference
- ArcGIS Pro TypeID Reference
- ProConcepts: Distributing Add-Ins Online
- ProConcepts: Migrating to ArcGIS Pro
- FAQ
- Archived ArcGIS Pro API Reference Guides
- Dev Summit Tech Sessions