PROBLEM

Inserting a point of data in a map produces inaccurate results

Last Published: April 25, 2020

Description

When adding a point feature to a map in ArcGIS Desktop 10 by clicking in the map using an add-in tool or a COM component base tool, the coordinates of the newly created point are incorrect.

Cause

The coordinates are incorrect because they are currently screen coordinates, and not map coordinates.

Solution or Workaround

Convert the X and Y onMouseDown event arguments from screen coordinates to map coordinates using IDisplayTransformation::ToMapPoint(). The map coordinates use the coordinate system of the newly created feature’s feature class.

Below is a code sample based on the following link: ArcObjects Help for .NET
Code:
/// The code herein is based on the Add-In sample at this link on ESRI's Resources Website:
/// http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/index.html#//000100000969000000
///

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using ESRI.ArcGIS.ArcMapUI;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geometry;
namespace AddIn_OnMouseDown_Tool
{
public class Class_OnMouseDown_Tool : ESRI.ArcGIS.Desktop.AddIns.Tool
{
// Module level variables
private IActiveView m_focusMap;
public Class_OnMouseDown_Tool()

{
}

protected override void OnUpdate()
{
Enabled = ArcMap.Application != null;
}

protected override void OnMouseDown(MouseEventArgs arg)
{

IMxDocument mxDoc = ArcMap.Document;
m_focusMap = mxDoc.FocusMap as IActiveView;
IPoint point = m_focusMap.ScreenDisplay.DisplayTransformation.ToMapPoint(arg.X, arg.Y) as IPoint;

System.Windows.Forms.MessageBox.Show(
"point.X = " + point.X + "\n" +
"point.Y = " + point.Y + "\n"
);

}
}

}

Article ID:000012011

Software:
  • ArcMap

Get help from ArcGIS experts

Contact technical support

Download the Esri Support App

Go to download options

Related Information

Discover more on this topic