У меня есть проект для домашних животных, чтобы создавать изображения карт, где я рисую дороги и другие вещи по контурному сюжету местности. Он предназначен для планирования маршрутов на горных велосипедах (в прошлом я сделал несколько векторных рисунков вручную, и они отлично работают для визуализации).
В настоящее время я загружаю Digital Elevation Model, в GeoTIFF, отсюда: http://www.ecologia.ufrgs.br/labgeo/arquivos/downloads/dados/SRTM/geotiff/rs.rar
а затем создайте график с помощью функции GDAL и Matplotlib contourf
:
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
создавать эти более светлые строки либо с помощью установки параметров, либо с помощью взлома (смены исходного кода), аналогично предложенному здесь:
Как форматировать контурные линии от Matplotlib
Кроме того, если кто-нибудь знает, как создать такую карту более элегантным способом, используя другие библиотеки, я был бы очень признателен за отзыв!
Спасибо за чтение.