2017-07-05 32 views
0

QGISやリーフレットのように、matojsonファイルを読み込むのが基本ですが、matplotlibのようなものです。私はこの方法でやりたいので、正確には6000個のgeojsonファイルを読み込み、スタイリングのいくつかを変更してイメージとしてエクスポートすることができます。Pythonでmatplotlibに表示するgeoJsonファイルを表示するにはどうすればいいですか?

私はthis oneなどの他のリンクをたどってきましたが、この方法で「境界」を設定しようとするとKeyErrorsを取得しています。

def setPlotExtent(ax, data): 
    # get feature extents (a property of the cloudmade geojson) 
    # note this was previously bbox 
    minx = data['bounds'][0][0] 
    maxx = data['bounds'][1][0] 
    miny = data['bounds'][0][1] 
    maxy = data['bounds'][1][1] 

    # set the graph axes to the feature extents 
    ax.set_xlim(minx, maxx) 
    ax.set_ylim(miny, maxy) 

私はQGISでこれをやってみましたが、あまり成功しました、私は、ArcGISの試用版をダウンロードし、それをやろうとしていると考えられてきましたが、matplot libにとそれを行うと、最も簡単になります。擬似コードで

は、私がやりたいすべてが

(かなり多く、他のスタックの質問にあったものだけです)...

for geoJsonFile in geoJsonDir 
    loadIntoMatPlotLib(geoJsonFile) 
    changeSomeFeatures() 
    exportAsPNG() 

私の完全なコードはここにある...何かのようです

from matplotlib import pyplot 
from descartes import PolygonPatch 
import simplejson 

def configurePlot(): 
    # set up the mapplotlib 
    fig = pyplot.figure(1, figsize=(10, 4), dpi=180) 
    ax = fig.add_subplot(121) 
    return fig, ax 


def setPlotExtent(ax, data): 
    # get feature extents (a property of the cloudmade geojson) 
    # note this was previously bbox 
    minx = data['bounds'][0][0] 
    maxx = data['bounds'][1][0] 
    miny = data['bounds'][0][1] 
    maxy = data['bounds'][1][1] 

    # set the graph axes to the feature extents 
    ax.set_xlim(minx, maxx) 
    ax.set_ylim(miny, maxy) 


def plotFeature(coordinates, myplot): 
    poly = {"type": "Polygon", "coordinates": coordinates} 
    patch = PolygonPatch(poly, fc='#6699cc', ec='#6699cc', alpha=0.5, zorder=2) 
    # plot it on the graph 
    myplot.add_patch(patch) 


# turn the geojson into a python object 
with open(r"Geo_AOI_1_RIO_img163.geojson") as f: 
    pydata = simplejson.load(f) 
print(pydata) 

fig, myplot = configurePlot() 
setPlotExtent(myplot, pydata) 

plotFeature(pydata['coordinates'], myplot) 

# save the plot as an image 
pyplot.show() 
fig.savefig('myplot.png') 

最終的に、これはGeoJSONファイルから生成しようとしている画像です。私はQGISで手動で行った。 enter image description here

答えて

0

これは完全な答えではありませんが、私はQGISでこれをPyQGISでスクリプトを書くことで実現できました。それは非常に遅く、仕事を終わらせますが、QGISを使用しない方法を誰かが知っていれば答えてください!

関連する問題