Parece que ArcMap mantiene un caché para cada capa que contiene datos de entidades y cada vez que desea actualizar la capa o aplicar un cambio, utiliza este caché. Como descubrí, cuando ArcMap quiere dibujar una capa desde cero, envía esta consulta a la geodatabase:
seleccione ObjectId, Shape desde "featureClassName" [donde "expresión de consulta de definición de capa"]
En el modo de edición, cuando se usa el ajuste, parece que los datos de características en este caché se usan para determinar el estado de ajuste mientras se mueve el mouse. No sé cómo ArcMap almacena datos espaciales en este caché, en formato de forma ESRI o como WKB, pero necesito recuperar estos datos de entidades.
¿Hay alguna forma de recuperar datos de características de una capa usando su caché (caché de capa) en lugar de usar el IFeatureClass::get_Feature
método? ..... Tal vez mi idea no es correcta y una capa no tiene caché (no me refiero a la caché, que es opcional para las capas y aumenta la velocidad del dibujo de la capa), pero estoy casi seguro de datos espaciales de capas (mapa) se almacena en la memoria de ArcMap en algún lugar y ArcMap lo usa para su operación, como el ajuste durante la operación de edición. ¿Hay alguna forma de acceder a esta parte de los datos de ArcMap (si realmente existe)?
No quiero configurar un caché, quiero recuperar datos de ArcMap cache.ISpatialCacheManager
que no ofrece ningún método para obtener datos específicos de él. Déjame discutir lo que quiero decir con más detalles.
Cuando pongo este código dentro de mi programa
//C#
IFeature ipF=ipMyFeatureClassObject.GetFeature(10);
ArcMap emite un comando de selección para geodatabase, supongamos:
select * from MyFeatureClassTableName Where ObjectId=10
y devuelve un registro de datos.
En el modo de edición, ArcMap no puede usar este método para obtener datos espaciales y calcular el estado de ajuste para las entidades en el mapa debido a que este método consume mucho tiempo y el cálculo de ajuste necesita una recuperación de datos de alta velocidad, también porque el mouse puede moverse por todas partes el mapa y el ajuste están habilitados para cualquier zoom, todos estos testigos muestran que los datos espaciales deben estar disponibles en algún lugar de la memoria y estoy buscando un método para acceder a ellos.
Si todos estos consumos no se hacen realidad, entonces debe haber un método perfecto que ArcMap use para recuperar datos espaciales de la geodatabase sobre la marcha (por ejemplo, indexación espacial de 4 o 6 niveles en función de la extensión del mapa y use la posición del mouse para recuperar solo una parte de datos espaciales mientras el movimiento del mouse es muy rápido, de esta manera solo tiene acceso a la geodatabase cuando cambia el área de indexación más pequeña del mouse).
Estoy tratando de desarrollar una herramienta como "Herramienta de croquis y" Herramienta de edición "para una fuente de datos distinta de la fuente de datos de ArcObject y no quiero configurar una caché paralela a ArcMap. Si es posible, quiero usar los mismos datos que ArcMap almacena en la memoria para esta fuente de datos.
Ahora, ¿piensan que estos son supuestos verdaderos y si es así, hay alguna forma de acceder a los datos espaciales de ArcMap en su memoria?