我正在尝试在大叶中绘制雷达数据,我快到了。我按照这个示例( Contour plot data (lat,lon,value) within boundaries and export GeoJSON )将我的数据转换为 GeoJson 格式。

nb_class = 20
collec_poly = plt.contourf(lons,lats,np.array(poshdata), nb_class,alpha=0.5)

gdf = collec_to_gdf(collec_poly) # From link above
gdf.to_json()
colors = [p.get_facecolor().tolist()[0] for p in collec_poly.collections]
gdf['RGBA'] = colors

gdf

这将输出两列:几何和 RGBA。
    RGBA    geometry
0   [0.0, 0.0, 0.713903743316, 1.0] (POLYGON ((-71.57032079644679 42.2775236331535...
1   [0.0, 0.0960784313725, 1.0, 1.0]    (POLYGON ((-71.56719970703125 42.2721176147460...
2   [0.0, 0.503921568627, 1.0, 1.0] (POLYGON ((-71.55678558349609 42.2721176147460...
3   [0.0, 0.896078431373, 0.970904490829, 1.0]  (POLYGON ((-71.52552795410156 42.2849182620049...
4   [0.325743200506, 1.0, 0.641998734978, 1.0]  (POLYGON ((-71.49427795410156 42.2939676156927...
5   [0.641998734978, 1.0, 0.325743200506, 1.0]  (POLYGON ((-71.47344207763672 42.3003084448852...
6   [0.970904490829, 0.959331880901, 0.0, 1.0]  (POLYGON ((-71.26508331298828 42.3200411822557...
7   [1.0, 0.581699346405, 0.0, 1.0] (POLYGON ((-71.15048217773438 42.3333218460720...

从那里我制作了我的叶子 map :
import folium

# Picked location between Sudbury and Somerville:
maploc = folium.Map(location=[42.377157,-71.236088],zoom_start=11,tiles="Stamen Toner")

folium.GeoJson(gdf).add_to(maploc)

这创建了我漂亮的叶子 map ,但多边形根本没有着色。如何让轮廓填充正确的颜色?并修复不透明度?

python - 用大叶中的地理数据框绘制彩色多边形-LMLPHP

最佳答案

我想我想通了。在我之前的代码中,polygon.get_facecolor() 返回 0-1 范围内的 RGBA 值列表。我添加了这个功能(修改自 this 帖子):

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

将其转换为十六进制字符串。然后:
gdf['RGBA'] = convert_to_hex(colors)

然后要绘制大叶中的颜色,我这样做:
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)

这创造了一个非常漂亮的情节! (属性名称有点误导 - 它实际上不是 RGBA 值,而是十六进制字符串。)

关于python - 用大叶中的地理数据框绘制彩色多边形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35516318/

10-13 00:17