私は地図の画像を作成するためのペット プロジェクトを持っています。ここでは、地形標高の等高線上に道路やその他のものを描きます。これは、マウンテン バイクのルートを計画することを目的としています (私は過去にいくつかのベクトル図を手作業で作成しましたが、それらは視覚化に最適です)。
現在、GeoTIFF の Digital Elevation Model をここからダウンロードします: http://www.ecologia.ufrgs.br/labgeo/arquivos/downloads/dados/SRTM/geotiff/rs.rar
次に、GDAL と Matplotlibcontourf
関数を使用してプロットを作成します。
from osgeo import gdal
import matplotlib
import matplotlib.pyplot as plt
from pylab import cm
import numpy
f = 'rs.tif'
elev = gdal.Open(f)
a = elev.GetRasterBand(1).ReadAsArray()
w = elev.RasterXSize
h = elev.RasterYSize
print w, h
altura = (0.35, 0.42)
largura = (0.70, 0.82)
a = a[int(h*altura[0]):int(h*altura[1]),
int(w*largura[0]):int(w*largura[1])]
cont = plt.contourf(a, origin='upper', cmap=cm.gist_earth, levels=numpy.arange(0,1000,20))
plt.title('Altitudes - max: %d m; min: %d m' % (numpy.amax(a), numpy.amin(a)))
plt.show()
これにより、次のことが得られます。
問題は、等高線が「白」であり、道路や川を後でプロットしたいので望ましくない視覚的な汚染を生成することです。
contourf
そのため、ここで提案されているものと同様に、パラメーター設定またはハック (ソース コードの変更) を介して、これらのより軽い線を作成する方法を変更しようとしています。
また、他のライブラリを使用して、よりエレガントな方法でそのようなマップを生成する方法を誰かが知っている場合は、そのヒントをいただければ幸いです!
読んでくれてありがとう。