4 votos

¿Cambiar el intervalo de la barra de escala y otros ajustes en las páginas individuales basadas en datos?

A veces tengo un MXD configurado como libro de mapas utilizando Data Driven Pages, pero me gustaría mostrar ciertas páginas a una escala diferente que otras en el mismo libro de mapas. Puedo hacerlo utilizando la opción Data Driven Scale en Data Driven Pages, pero cuando esas páginas se visualizan o renderizan, la barra de escala utiliza las mismas unidades y divisiones (por ejemplo, dos secciones de 1000 pies) para todas las páginas y simplemente se estira o comprime para que coincida correctamente con la escala de visualización de cada página. Así que si tengo un libro de mapas donde la mayoría de las páginas son 1:12000, y una página es 1:6000, esa página tendrá una barra de escala que es dos veces más larga que las otras páginas, porque ArcGIS está utilizando la misma configuración (unidades de división, valor de división) para la barra de escala en cada página.

¿Hay alguna manera de cambiar esto, de modo que pueda establecer los parámetros de la barra de escala independientemente para cada página?

Por ejemplo, si paso de una escala de 1:24000 a 1:10000, podría utilizar incrementos de 0,25 millas y 500 pies respectivamente.

En la actualidad, si tengo, por ejemplo, un libro de mapas de 80 páginas con algunas páginas a una escala diferente del resto, renderizo primero la mayoría de las páginas y luego cambio la configuración de la barra de escala manualmente para las pocas páginas que se verían mejor con una barra de escala diferente. Pero si alguien viene y abre el MXD después de mí y trata de renderizar el mismo mapbook, puede que no tome ese paso y las barras de escala no serán correctas.

2 votos

No es una respuesta, sólo una idea: No creo que lo que pides sea directamente posible, pero tal vez podrías intentar algo con un segundo marco de datos vacío, que sólo tenga una barra de escala configurada en las unidades/estilo que quieres como dije, sólo una idea

3 votos

Me gusta la idea de @Adam. Sin embargo, no creo que necesites un segundo marco de datos. Pero, tal vez usted podría tener una segunda o tercera barra de escala. Una para cada unidad que quieras mostrar y darles un nombre único. Usando python, puedes mover la barra de escala fuera de la página y mover la otra de vuelta a la página.

0 votos

Esta pregunta se refiere a los intervalos de las barras de escala más que a las cuadrículas/grículas, pero creo que está en las proximidades de gis.stackexchange.com/questions/23375/ Conseguir un mayor control sobre los intervalos de las cuadrículas/grículas durante la automatización de los mapas es uno de mis mayores problemas.

3voto

Dustin Laine Puntos 213

No creo que pueda cambiar las propiedades de la barra de escala utilizando la funcionalidad de Data Driven Pages.

Sin embargo, eso no quiere decir que lo que se pretende hacer sea imposible.

No sería terriblemente difícil hacer esto usando ArcPy y se describe a grandes rasgos en esta [Página de ayuda de ESRI][1]. Usando su ejemplo, podrías configurar múltiples barras de escala, una para cada configuración que prefieras, y luego moverlas dentro y fuera de la página en función de la escala de una página determinada basada en datos.

Para que funcione tendría que saltarse la exportación normal de páginas con datos y hacer un bucle a través de las páginas usando Python y el ejemplo anterior.

Algo parecido a esto ( NO HE PROBADO ESTO, TENDRÁS QUE ADAPTARLO A TU DOCUMENTO ):

#You're going to need to reference your current map document and the data frame, assuming you just have one 
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]

#Associate scale bars in your layout with variables that arcpy can manipulate
m_scale = arcpy.mapping.ListLayoutElements(mxd, "MAPSURROUND_ELEMENT", "m scale bar")[0]
km_scale = arcpy.mapping.ListLayoutElements(mxd, "MAPSURROUND_ELEMENT", "km scale bar")[0]

#Iterate through all the pages, for each page, look at the scale, then adjust the scale bars to be on, or off, the page.
for page in range(1, mxd.dataDrivenPages.pageCount +1):

    #Check the scale and move the elements around to get the right scale bar on the page
    if df.scale < 25000:
        m_scale.elementPositionX = 5 #on the page
        km_scale.elementPostitionX = 15 #off the page

        #Export the current page to a pdf, using a specified path
        arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Output\Project1.pdf", df)
    else:
        m_scale.elementPositionX = 15 #off the page
        km_scale.elementPostitionX = 5 #on the page

        #Export the current page to a pdf, using a specified path
        arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Output\Project1.pdf", df)
    mxd.dataDrivenPages.refresh()

0 votos

Gracias. Eso ayuda, usar arcpy para mover algunas barras de escala diferentes dentro y fuera del diseño se me ocurrió pero no sabía cómo hacerlo. Todavía me gustaría ver si hay una solución de GUI, estoy tratando de hacer que si alguien tiene que hacer una revisión de uno de estos mapbooks y no estoy cerca, puede exportarlo sin necesidad de un script. Pero puede que eso no sea posible..

1voto

dr.manhattan Puntos 820

Acabo de hacer algo así en ArcMap 10.5. En el cuadro de diálogo de configuración del DDP, en "Exent", seleccione la opción de Escala Dirigida por Datos. Esta opción le permite extraer la escala de un campo de atributo. A continuación, configure su barra de escala en el formato deseado (para mí, esto fue con un valor de división de 0.5mi, 2 subdivisiones y la opción de redimensionamiento de ajustar el número de divisiones - por defecto es ajustar el ancho también la longitud). Ahora, cuando me desplazo por el DDP en mi MXD, la barra de escala también cambia, pero sigue teniendo el mismo tamaño de mapa a mapa.

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