Saltar al contenido

Trazar polígonos de colores con geodataframe en folio

Solución:

Creo que lo descubrí. En mi código anterior, polygon.get_facecolor () devuelve una lista de valores RGBA que van de 0 a 1. Agregué esta función (modificada de esta publicación):

def convert_to_hex(rgba_color) :
    red = str(hex(int(rgba_color[0]*255)))[2:].capitalize()
    green = str(hex(int(rgba_color[1]*255)))[2:].capitalize()
    blue = str(hex(int(rgba_color[2]*255)))[2:].capitalize()

    if blue=='0':
        blue="00"
    if red=='0':
        red = '00'
    if green=='0':
        green='00'

    return '#'+ red + green + blue

para convertirlo en una cadena hexadecimal. Luego:

gdf['RGBA'] = convert_to_hex(colors)

Luego, para trazar los colores en folio, hago:

maploc = folium.Map(location=[42.377157,-71.236088],zoom_start=10,tiles="Stamen Toner")

colors = []
folium.GeoJson(
    gdf,
    style_function=lambda feature: {
        'fillColor': feature['properties']['RGBA'],
        'color' : feature['properties']['RGBA'],
        'weight' : 1,
        'fillOpacity' : 0.5,
        }
    ).add_to(maploc)

¡y eso creó una trama muy bonita! (El nombre de la propiedad es un poco engañoso; en realidad, no son valores RGBA, sino cadenas hexadecimales).

No soy un experto … Acabo de empezar con folium y jupyter y tuve un problema similar pero con líneas. Dices que tienes GeoJson y polígonos y que el color está incluido en el json, supongo.

¿La función style_function podría ayudarlo a obtener lo que desea?

El siguiente ejemplo se produce con esta página: http://geojson.io/ Todo lo que tuve que hacer fue un “mapeo” con style_function. También es posible utilizar una función autodefinida, consulte: https://github.com/python-visualization/folium/blob/master/examples/Colormaps.ipynb

import folium
geoJsonData = {
    "features": [
        {
            "geometry": {
                "coordinates": [
                    [
                        12.98583984375,
                        56.70450561416937
                    ],
                    [
                        14.589843749999998,
                        57.604221411628735
                    ],
                    [
                        13.590087890625,
                        58.15331598640629
                    ],
                    [
                        11.953125,
                        57.955674494979526
                    ],
                    [
                        11.810302734375,
                        58.76250326278713
                    ]
                ],
                "type": "LineString"
            },
            "properties": {
                "stroke": "#fc1717",
                "stroke-opacity": 1,
                "stroke-width": 2
            },
            "type": "Feature"
        },
        {
            "geometry": {
                "coordinates": [
                    [
                        14.9468994140625,
                        57.7569377956732
                    ],
                    [
                        15.078735351562498,
                        58.06916140721414
                    ],
                    [
                        15.4302978515625,
                        58.09820267068277
                    ],
                    [
                        15.281982421875002,
                        58.318144965188246
                    ],
                    [
                        15.4852294921875,
                        58.36427519285588
                    ]
                ],
                "type": "LineString"
            },
            "properties": {
                "stroke": "#1f1a95",
                "stroke-opacity": 1,
                "stroke-width": 2
            },
            "type": "Feature"
        }
    ],
    "type": "FeatureCollection"
}
m = folium.Map(location=[ 56.7, 12.9], zoom_start=6)
folium.GeoJson(geoJsonData,
    style_function=lambda x: {
        'color' : x['properties']['stroke'],
        'weight' : x['properties']['stroke-width'],
        'opacity': 0.6,
        'fillColor' : x['properties']['fill'],
        }).add_to(m)
m

El código fuente de folium en git hub también incluye varios buenos ejemplos:
https://github.com/python-visualization/folium/tree/master/examples
Aquí encuentras las opciones para jugar:
http://leafletjs.com/reference.html#path-options

¡Espero que esto te haga avanzar!

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *