Jak wygenerować miniatury obrazów z wielu plików kształtów?


9

Niedawno wydałem wspólnie z kolegą projekt Open Source o nazwie Mapoteca, który jest zestawem skryptów Python, który integruje się z instalacją GDAL / FWTools, umożliwiając pełny przegląd katalogów szukających danych przestrzennych i wydobywania zasięgu, geometrii, liczby elementów, projekcji i użytkownik zapisujący go do pliku csv. Pracujemy nad częścią, która opisuje powiązane pliki DBF i chcieliśmy wygenerować obraz miniatury każdego pliku kształtu, czy znasz sposób generowania tych miniatur w formacie JPEG lub PNG za pomocą Pythona?

Odpowiedzi:




2

Najprostszym sposobem byłoby wywołanie gdal_rasterize za pomocą subprocess.call (), ale podejrzewam, że nie wykonuje żadnej interpolacji, więc byłby alias do punktu nieczytelności, gdyby wygenerować obraz miniatury bezpośrednio z danych. Powinieneś więc wygenerować tymczasowy obraz „rozsądnej wielkości” * i użyć biblioteki obrazów Python, aby skalować go do pożądanego rozmiaru.

Ale spodziewam się, że największym problemem będzie to, na jakich atrybutach oprzesz stylizację? Pliki kształtów nie mają nieodłącznych informacji o wyświetlaniu, ponieważ jestem pewien, że wiesz, więc musisz znaleźć sposób, aby zdecydować, które kolory użyć. gdal_rasterize daje taką możliwość, ale zwykle wybór jest oparty na wiedzy specyficznej dla domeny. Aby mieć ogólne narzędzie, musisz mieć ogólny schemat stylizacji.

* To też jest coś, co może wymagać kilku sztywnych zasad. Być może zacznij od idealnego rozmiaru piksela (powiedzmy 10 m na piksel) i zwiększ go, jeśli wynikowy obraz jest zbyt duży, aby był praktyczny.



1

Tylko ze względu na kompletność - mapserver może również renderować dobrze wyglądające mapy z zakresu podstawowych danych, w wierszu poleceń za pomocą narzędzia shp2img . Ponownie musisz wybrać bardzo ogólny, bardzo prosty styl, który pasuje do twoich celów.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.