1 votos

¿Cómo utilizar la herramienta de identificación por defecto en ArcMap desde C#?

He creado una herramienta "Buscar" personalizada (winform) que se activa al pulsar un botón específico en una barra de herramientas de ArcMap. En este nuevo formulario "Find" necesito usar identify para uno o más elementos seleccionados en DataGridRow. Hasta ahora no he encontrado una manera de llamar a la herramienta por defecto "Identificar" de ArcMap. Podría crear mi propia herramienta, pero parece una pérdida de tiempo, ya que no necesito ninguna funcionalidad personalizada.

¿Existe alguna forma de llamar al formulario "Identify" de ArcMap (con propiedades de características, etc.) desde mi herramienta winform personalizada pasando una o más características?

Soy relativamente nuevo en ArcMap, así como en C#.

1voto

kjo Puntos 197

Puede modificar el siguiente fragmento de Sitio web de ESRI

public void FindCommandAndExecute(ESRI.ArcGIS.Framework.IApplication application, System.String commandName)
{
  ESRI.ArcGIS.Framework.ICommandBars commandBars = application.Document.CommandBars;
  ESRI.ArcGIS.esriSystem.UID uid = new ESRI.ArcGIS.esriSystem.UIDClass();
  uid.Value = commandName; // Example: "esriFramework.HelpContentsCommand" or "{D74B2F25-AC90-11D2-87F8-0000F8751720}"
  ESRI.ArcGIS.Framework.ICommandItem commandItem = commandBars.Find(uid, false, false);

  if (commandItem != null)
    commandItem.Execute();
}

El UID de la herramienta de identificación en 9.3 es {CF605583-AEA3-41D8-9464-DDD1905243D9} o esriControls.ControlsMapIdentifyTool

No estoy seguro de si es lo mismo en la versión 10

Editar

Creo que está intentando que aparezca un formulario de atributos personalizado con los atributos de la característica seleccionada por el usuario. Estoy asumiendo un caso en el que el valor del campo "STREET_NAME" necesita ser rellenado en un cuadro de texto. Para esto,

Busca el ObjectId de la característica seleccionada. Consulte IFeatureSelection, IFeatureCursor etc.. //obtener los valores de campo

IFeature pFeature = featureClass.GetFeature(objectid);
string streetName = pFeature.Value(pFeature.Fields.FindField("STREET_NAME"));
txtStreetName.Text = streetName;

Si desea crear formularios de usuario dinámicos, deberá crear un bucle con todos los campos y valores de campo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X