Digamos que tienes un mapa con tres o cuatro marcos de datos. En cada marco de datos es la misma capa de la carretera. Hay forma de asegurar que toda la simbología/etiquetado/anotación es la misma para esa capa en todas las tramas de datos. ¿Así que vamos a decir que modificar la simbología de la capa de la carretera en el cuadro de datos 1, es posible automatizar cambia a través de todos los datos de marcos?
Respuestas
¿Demasiados anuncios?Hay un par de opciones automáticas puede utilizar
1) La Representación Cartográfica
Las Representaciones cartográficas añadir nuevos campos a la geodatabase para que la simbología que se almacena en los datos. Esto le permitirá hacer un cambio en la representación (el uso de la edición), de modo que cualquier cambio que realice se refleja en todos los lugares de la representación está siendo utilizado
2) puntos de vista Visual y Especificaciones
Las vistas están disponibles con la Producción de la Cartografía (Previamente PLTS) y se almacenan Dataframe Propiedades y permiten especificar qué componentes de un dataframe están siendo utilizados a partir de la base de datos almacenada versión del Dataframe. Donde Como Visual Especificaciones de SQL Consultas de selección que se utilizan en la Producción de Asignación para asignar las Representaciones Cartográficas basadas en campos de atributo
Estas son sólo algunas ideas, voy a editar y añadir más a medida que pienso en ellos, pero basada en casos de uso, yo diría carto las Repeticiones son el ir, tendrá que ser en cualquiera de Geodatabase de Archivos o de SDE.
Divertirse, CDB
Estoy de acuerdo con el enfoque que describe dmsnell, pero usted puede simplemente copiar la capa de un Dataframe a otro por un clic derecho sobre la capa-> seleccione copia-> clic derecho el otro nombre del Dataframe-> seleccione capas de pasta.
No he encontrado ningún script de automatización o complemento de esta tarea.
Usted tiene que actualizar cada marco de datos de forma manual, por lo que yo sé. Usted puede hacer clic derecho en una capa y guárdelo como una "Capa" de archivo (.lyr), a continuación, haga clic en las otras tramas de datos y el uso de la opción "Agregar Datos" herramienta para encontrar que guarda el archivo de capa. Si usted hace los cambios, vuelva a guardar la capa a la misma .archivo lyr y eliminar y volver a agregar a cada marco de datos.
He estado buscando algún tipo de archivo de texto basado en reglas (como XML) para la descripción de la simbología y de la superposición, y ser capaz de aplicarlas a un mapa, en el mapa cargar ese archivo, al menos, en cada programa de la carga, así que pensé que podría cambiar el archivo, pero hasta ahora no he sido capaz de encontrar nada de eso.
Actualización:
Al poco de que el código que he mencionado era sólo fragmentos. Pero creo que la funcionalidad que desea que fue la parte que yo (más o menos) tiene a través de. Me dejó caer en una de ArcGIS 10 Addin para probar: http://dl.dropbox.com/u/1156285/SynchLayers.avi
Como se puede ver, este código no manejar el grupo/compuesto de capas (la necesidad de buscar de forma recursiva compuesto de capas). Y es una de ArcGIS 10 botón de complemento y usted está en 9.3. Me voy a poner el código en esta respuesta) no debería difícil de alambre de hasta 9.3 (no creo que he usado nada nuevo a 10):
namespace SynchronizeLayer
{
using System;
using System.IO;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Catalog;
public class SynchronizeLayerByLayerName : ESRI.ArcGIS.Desktop.AddIns.Button
{
private const string LayerFileName = "u{0}.lyr";
public SynchronizeLayerByLayerName()
{
}
protected override void OnClick()
{
ArcMap.Application.CurrentTool = null;
try
{
string temporaryLayerFilePath = Path.Combine(
Path.GetTempPath(),
String.Format(LayerFileName, System.Guid.NewGuid().ToString("N")));
ILayer selectedLayer = ArcMap.Document.SelectedLayer;
if (selectedLayer != null && selectedLayer.Valid)
{
ILayerFile layerFile = new LayerFileClass();
layerFile.New(temporaryLayerFilePath);
layerFile.ReplaceContents(selectedLayer);
layerFile.SaveAs(temporaryLayerFilePath);
for (int i = 0; i < ArcMap.Document.Maps.Count; i++)
{
IMap map = ArcMap.Document.Maps.get_Item(i);
if (map != null)
{
IEnumLayer mapLayers = map.get_Layers(null, false);
ILayer maplayer = null;
int layerindex = 0;
while ((maplayer = mapLayers.Next()) != null)
{
if (maplayer.Name.Equals(selectedLayer.Name)
&& selectedLayer != maplayer)
{
IGxLayer gxlayer = new GxLayer();
IGxFile gxfile = gxlayer as GxFile;
gxfile.Path = temporaryLayerFilePath;
map.AddLayer(gxlayer.Layer);
map.MoveLayer(gxlayer.Layer, layerindex);
map.DeleteLayer(maplayer);
}
layerindex++;
}
}
}
if (File.Exists(temporaryLayerFilePath))
{
File.Delete(temporaryLayerFilePath);
}
ArcMap.Document.UpdateContents();
}
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
throw;
}
}
protected override void OnUpdate()
{
Enabled = ArcMap.Application != null;
}
}
}
Tal vez hace un año, yo estaba trabajando en un ArcMap botón que permitiría mantener las capas en la sincronización y a lo largo de la misma idea como dmsnell's de copia manual, excepto que yo estaba trabajando para automatizar el proceso de actualización de capas con capas almacenados en un repositorio de subversion.
En mi caso, tuve la capa de archivos en un repositorio de subversion, y yo estaba buscando para reemplazar cualquier capa en una MXD que era más antiguo que el archivo de capa en mi repositorio de subversion.
Creo que @dassouki pregunta es la misma, excepto que en lugar de una capa en un repositorio de subversion, su capa es la que acaba de modificar. Y él es sólo querer modificar el MXD que él es, más que cualquier MXD (a pesar de que es probablemente útil también). Yo creo que es justo quitar una capa y añadir una nueva capa (que es una copia) en el mismo lugar. Este fue el trabajo que estaba de baja prioridad para mí y me detuvo antes de que fuera completado, pero yo creo que tengo algo de código para el nivel de operaciones(swap), enterrado en algún lugar. Voy a mirar a su alrededor y actualización de esta respuesta.
El reto para mi solución fue identificar las capas (que de persistir con la capa)--que me logra mediante el uso de un guid en la capa de propiedades de extensión. Dado el número de usuarios finales que me apoyo, utilizando el nombre de la capa sería arriesgado ya que la posibilidad de una capa con diferentes representaciones que tenga el mismo nombre de la capa es alta. El importe de nuestra capa de modificaciones disminuido y con la promesa de servicios de mapas web, todo esto parecía una exageración, así que dejé el trabajo.
La única cosa que se completó fue una de ArcMap botón para modificar la capa de propiedades de extensión.
Actualización: Se me acaba de ocurrir que balbuceó sin responder a la pregunta de si es posible automatizar la capa de cambios a través de las tramas de datos.
Sí, pero no con algunas código personalizado.