Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

Please see the attached layer. I have used following code in the OnMouseDown event. my objective is to select the X_coor , and Y_coor field from the layer based on the arg.X and arg.y.

However when i run this code than on a single click there are several values of the X_coor and Y-coor. I observed that the values of x_coor and y_coor fields in the associated attribute table of the layer is differ by in fifth or sixth significant digit.

Actually this is my Time enabled data and I want to access it time in second corresponding to X-coor and Y-coor when the mouse is clicked. Any help........

IMxApplication pMxApp = null;
pMxApp = (IMxApplication)ArcMap.Application;
IMxDocument pMxDoc = null;
//pMxDoc = ArcMap.Document;
if (pMxDoc.SelectedLayer == null)
{
MessageBox.Show("There is no layer selected. First select a time-aware layer.");
return;
}
IMap pMap = pMxDoc.FocusMap;
IIdentify idft = null;
//mycode for enevelop
int Tolerance = 10;
Tolerance = pMxDoc.SearchTolerancePixels;
IPoint mypt = pMxDoc.CurrentLocation;
int X = arg.X;
int Y = arg.Y;
IDisplayTransformation pDispTrans = null;
pDispTrans = pMxApp.Display.DisplayTransformation;
tagRECT pToleranceRect = new tagRECT();
pToleranceRect.left = X - Tolerance;
pToleranceRect.right = X + Tolerance;
pToleranceRect.top = Y - Tolerance;
pToleranceRect.bottom = Y + Tolerance;

IEnvelope pSearchEnvelope = null;
pSearchEnvelope = new EnvelopeClass();
pDispTrans.TransformRect(pSearchEnvelope, ref pToleranceRect, (int)(esriDisplayTransformationEnum.esriTransformPosition | esriDisplayTransformationEnum.esriTransformToMap));

// identify feature points of measurement

pSearchEnvelope.SpatialReference = pMxDoc.ActiveView.FocusMap.SpatialReference;

idft = (IIdentify)pMap.get_Layer(0);

IArray pidarray = null;
IArray pidarray2 = null;
pidarray = idft.Identify(pSearchEnvelope);
if (pidarray != null)
{

MessageBox.Show("totL FOUND from currentloaction method" + pidarray.Count);
IIdentifyObj myobj = (IIdentifyObj)pidarray.get_Element(0);
IRowIdentifyObject rowobj = (IRowIdentifyObject)myobj;
MessageBox.Show("downrowobjfld0" + ":" + rowobj.Row.get_Value(0).ToString() + ":" + "rowobjfld2" + rowobj.Row.get_Value(2).ToString() + ":fld3: " + rowobj.Row.get_Value(3).ToString());

}
else
MessageBox.Show("pidarray null")
share|improve this question
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.