Mam projekt pet do tworzenia obrazów map, gdzie rysuję drogi i inne rzeczy na konturze z rzędem elewacji terenu. Jest przeznaczony do planowania tras rowerowych (w przeszłości wykonałem ręcznie wektorowe rysunki i świetnie się sprawdzają przy wizualizacji).Ukryj kontur linestroke na pyplot.contourf, aby uzyskać tylko wypełnienia
Obecnie pobrać cyfrowego modelu terenu, w GeoTIFF, stąd: http://www.ecologia.ufrgs.br/labgeo/arquivos/downloads/dados/SRTM/geotiff/rs.rar
a następnie utworzyć wykres z funkcją GDAL i 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()
co daje:
Problem polega na tym, że linie konturu są "biały" i generuje pewne zanieczyszczenie wizualne, co jest niepożądane, ponieważ chcę rysować drogi i rzeki później.
Tak, staram się zmienić sposób contourf
tworzenia tych jaśniejszych linii, albo poprzez ustawienie parametru, lub poprzez włamania (zmiana kodu źródłowego), podobna do tej, proponowana tutaj:
How to format contour lines from Matplotlib
także , jeśli ktoś wie, jak wygenerować taką mapę w bardziej elegancki sposób, korzystając z innych bibliotek, byłbym bardzo wdzięczny za wskazówkę!
Dzięki za przeczytanie.
Cóż, oczywiście jest to teraz akceptowana odpowiedź, ponieważ wydaje się słusznie i nie-hackishly rozwiązać podstawowy problem. Dzięki za wysyłkę nawet po tak wiele czas !! – heltonbiker
Dzięki @heltonbiker za aktualizację antage tego rozwiązania jest to, że nie zwiększa rozmiaru pliku i nie pogarsza jakości obrazu. – divenex
Awesome! Czekałem na to i mam nadzieję, że nie zapomnę sprawdzić ulubionych postów następnym razem, kiedy tego potrzebuję;) –