Mam duży plik kształtu (1 gb) i muszę go zrasteryzować. Próbowałem już następujących.
1.) Zaimportuj go do GRASS przy użyciu v.in.ogr
tego błędu nie powiodło się z komunikatem o błędzie: BŁĄD: G_realloc: nie można przydzielić 498240036 bajtów w break_polygons.c: 188
2.) Moim drugim pomysłem było użycie PostGIS. Zaimportuj plik kształtu, ponownie próbkuj go w miejscu x, y siatki, a następnie wyeksportuj te punkty i utwórz siatkę z xyz. Z powodzeniem zaimportowałem pliki kształtów (wielokąty i punkty), ale przecinanie 1 miliona wielokątów z 300 000 punktów wydaje się być bardzo wolne. Użyłem następującej satysfakcji PostGIS, być może jest miejsce na poprawę.
select polygons.land_id,grid.geom from grid,polygons where grid.geom && polygons.geom and within(grid.geom,polygons.geom)
3.) Próbowałem także użyć simplify()
w PostGIS. Ale straciłem wiele małych wielokątów (tzn. Niektóre obszary pokryte tylko małymi wielokątami stały się zerowe).
Wszelkie pomysły będą mile widziane.
Odpowiedzi:
Możesz spróbować gdal_rasterize , chociaż nie użyłem go z tak dużym plikiem kształtu , więc możesz mieć takie same problemy jak z GRASS. Uważam, że coś takiego powinno działać (z GDAL> = 1.8.0):
Oczywiście będziesz musiał pobawić się niektórymi opcjami w zależności od źródłowego pliku kształtu. Najważniejszym parametrem jest -tr, który określa rozdzielczość piksela; bez tego możesz mieć bardzo dużego rastra ...
Jeśli chcesz trzymać się GRASS, spróbuj ustawić mniejszy zasięg rasteryzacji i podziel proces na możliwe do zarządzania części, a następnie połącz rastry w jeden.
źródło
Jeśli chodzi o twój pierwszy zamiar, czy mógłbyś spróbować uruchomić komendę v.in.ogr na maszynie posiadającej więcej pamięci RAM lub wymienić miejsce na dysku?
Jeśli nie, możesz podzielić go na wiele plików i zrasteryzować każdy z nich przed ponownym scaleniem.
źródło
Jeśli potrzebujesz większej kontroli podczas rasteryzacji, sprawdź skrypt poly_density.py perrygeo, który używa GDAL pod maską, ale może być używany do nakładania się funkcji lub dodawania ocen warunkowych poza tymi, które są możliwe
gdal_rasterize
same.źródło
Podobnie jak Kuba Rozpruwacz, rób to po części. Z postgis eksportuj plasterki danych importuj do trawy i konwertuj.
źródło
Oto przewodnik na temat rasteryzacji tabeli wektorów w PostGIS ...
źródło