es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

altair traducir mapa (mover mapa)

Tengo un mapa mundial de Altair con algunos datos proyectados en él (puntos gps).
Puedo escalar el mapa, pero cuando traslado el mapa (moviéndolo) obtengo un error:

AttributeError: el objeto 'lista' no tiene el atributo 'get'

Cuando elimino la parte:

translate = [100, 550]

se muestra el mapa, pero quiero mostrar una zona diferente del mundo.
¿Por qué ocurre este error?

Este es mi código para mostrar el mapa:

# Fondo del mundo
world = alt.topo_feature(data.world_110m.url, 'countries')
background = alt.Chart(world).mark_geoshape(fill='lightgray', 
stroke='white').properties(width=800, height=800).project(type='mercator', scale=300, 
translate=[100, 550])

# Posición gps de las fotos *.jpg
points = alt.Chart(df).mark_circle().encode(
latitude='latitude',
longitude='longitude',
color=alt.value('steelblue'),
tooltip=['name']
).project(scale=300)

st.altair_chart(background + points, use_container_width=True)
Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “AttributeError: el objeto ‘lista’ no tiene el atributo ‘get'” indica que hay un problema con la proyección del mapa. Específicamente, parece que el atributo de traducción, que se utiliza para ajustar la posición del mapa, está causando el error.

    Una posible solución es utilizar el método transform_geo() de altair para ajustar la proyección del mapa. Este método te permite especificar el nivel de zoom deseado, el centro del mapa y la traducción para desplazar el mapa. Aquí tienes un ejemplo de cómo podrías modificar el código para ajustar la proyección del mapa:

    # Fondo del mundo
    world = alt.topo_feature(data.world_110m.url, 'countries')
    background = alt.Chart(world).mark_geoshape(fill='lightgray', 
    stroke='white').properties(width=800,height=800)
    
    # Posición GPS de las fotos *.jpg
    points = alt.Chart(df).mark_circle().encode(
    latitude='latitude',
    longitude='longitude',
    color=alt.value('steelblue'),
    tooltip=['naam']
    ).project(type='mercator')
    
    # Ajustar la proyección del mapa
    background = background.transform_geo(
      projection='mercator',
      scale=400,
      translate=[-60, 300]
    )
    
    st.altair_chart(background + points, use_container_width=True)
    

    En este código, primero creamos el mapa del mundo sin especificar la proyección ni la traducción. Luego, utilizamos el método transform_geo() para ajustar la proyección del mapa. Especificamos la proyección como ‘mercator’, el nivel de zoom a 400 (para acercar) y la traducción a [-60, 300] (para desplazar la posición del mapa). Por último, agregamos los puntos al mapa y lo mostramos utilizando st.altair_chart().

    Ten en cuenta que puedes ajustar los valores de escala y traducción para obtener la posición y el nivel de zoom deseados para tu mapa.

Comments are closed.