【问题标题】:Export Python Plot to KML将 Python 绘图导出到 KML
【发布时间】:2015-07-29 19:27:24
【问题描述】:

如何使用 Matplotlib 创建一个经纬度图,该图可以导出到 Google 地球,并在 G.E. 上显示点。正确。图片可以在这里看到:http://imgur.com/4szLzNF 似乎我导出的图形周围总是有一个轻微的边框,因此我在 plot 中定义的点在 G.E. 中是关闭的。

x = [0, 10, 10, 0, 0]
y = [10, 10, 0, 0, 10]
x1=[0,1,2,3,4,5,6,7,8,9,10]

fig = Figure(facecolor=None, frameon=False)
ax = fig.add_axes([0,0,1,1])
ax.axis('off')

ppl.plot(x, y, 'r',  axes=ax)
ppl.plot(x, y, '.b', axes=ax)
ppl.plot(x1, x1, 'g', axes=ax)

ppl.axis('off')
ppl.tight_layout(0,h_pad=0, w_pad=0)
border1 = ppl.axis(bbox_inches='tight')
ppl.show()

pngName = 'temp.png'
py.savefig(pngName, bbox_inches='tight', pad_inches=0, transparent=True)

bottomleft  = (border1[0],border1[2])
bottomright = (border1[1],border1[2])
topright    = (border1[1],border1[3])
topleft     = (border1[0],border1[3])

kml = simplekml.Kml()
ground = kml.newgroundoverlay(name='GroundOverlay')
ground.icon.href = pngName
ground.gxlatlonquad.coords =[bottomleft, bottomright, topright, topleft]
kml.save("GroundOverlay_temp.kml")

【问题讨论】:

    标签: python matplotlib kml


    【解决方案1】:

    我有一个解决方案,但我对 Figure 和 Artist 类不够熟悉,无法清楚地解释为什么它是正确的。

    你需要做这两件事:

    1. 使用fig = ppl.figure() 而不是matplotlib.figure.Figure()
    2. 保存为fig.savefig() 而不是ppl.savefig()

    也不需要使用tight_layout 和padding。我还为图形设置了 facecolor,以便我可以看到真实的边界。使用图像查看器查看输出图像 temp.png,您应该会看到矩形边界线位于图形边缘;当我运行您的原始代码并查看图像时,矩形和图形边界之间总是有一些空间。

    这里是固定代码:

    import matplotlib
    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as ppl
    from pylab import rcParams
    import simplekml
    rcParams['figure.figsize'] = (8,8)
    # create rectangle over 0 to 10 degrees longitude and 0 to 10 degrees latitude
    x = [0, 10, 10, 0, 0]
    y = [10, 10, 0, 0, 10]
    x1=range(0,11)    # to draw a diagonal line
    
    fig = ppl.figure(1)
    ax = fig.add_axes([0,0,1,1])
    ax.axis('off')
    fig.patch.set_facecolor('blue')  # so we can see the true extent
    
    ppl.plot(x, y, 'r', linewidth=3)
    ppl.plot(x, y, '.b', linewidth=3)
    ppl.plot(x1, x1, 'g', linewidth=3)
    
    ppl.axis('off')
    border1 = ppl.axis()
    print 'Border = %s' %(str(border1))
    if False:
        ppl.show()
    else:
        pngName = 'Overlay.png'
        fig.savefig(pngName, facecolor=fig.get_facecolor(), transparent=False)
    
    bottomleft  = (border1[0],border1[2])
    bottomright = (border1[1],border1[2])
    topright    = (border1[1],border1[3])
    topleft     = (border1[0],border1[3])
    
    kml = simplekml.Kml()
    ground = kml.newgroundoverlay(name='GroundOverlay')
    ground.icon.href = pngName
    ground.gxlatlonquad.coords =[bottomleft, bottomright, topright, topleft]
    kml.save("GroundOverlay.kml")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多