Ich habe ein großes Shapefile (1 GB) und muss es rastern. Folgendes habe ich schon ausprobiert.
1.) Der Import in GRASS ist v.in.ogr
mit der folgenden Fehlermeldung fehlgeschlagen: FEHLER: G_realloc: 498240036 Bytes konnten in break_polygons.c: 188 nicht zugeordnet werden
2.) Meine zweite Idee war die Verwendung von PostGIS. Importieren Sie das Shapefile, nehmen Sie es an der x, y-Position des Rasters erneut auf, exportieren Sie diese Punkte und erstellen Sie ein Raster aus xyz. Ich habe die Shapefiles (Polygone und Punkte) erfolgreich importiert, aber es scheint sehr langsam zu sein, 1 Million Polygone mit 300.000 Punkten zu schneiden. Ich habe den folgenden PostGIS-Satz verwendet, möglicherweise gibt es Raum für Verbesserungen.
select polygons.land_id,grid.geom from grid,polygons where grid.geom && polygons.geom and within(grid.geom,polygons.geom)
3.) Ich habe auch versucht, simplify()
in PostGIS zu verwenden. Aber ich habe gegen viele kleine Polygone verloren (dh einige Bereiche, die nur mit kleinen Polygonen bedeckt waren, wurden null).
Irgendwelche Ideen wären sehr dankbar.
Antworten:
Sie könnten es mit gdal_rasterize versuchen , obwohl ich es bei einem so großen Shapefile nicht verwendet habe, sodass Sie möglicherweise dieselben Probleme haben wie bei GRASS. Ich gehe davon aus, dass Folgendes funktionieren sollte (mit GDAL> = 1.8.0):
Natürlich müssen Sie abhängig von Ihrem Quell-Shapefile mit einigen Optionen herumspielen. Der wichtigste Parameter ist -tr, der die Auflösung eines Pixels angibt. Ohne sie könnten Sie sich mit einem sehr großen Raster wiederfinden ...
Wenn Sie bei GRASS bleiben möchten, versuchen Sie, ein kleineres Ausmaß für die Rasterung festzulegen, und teilen Sie den Prozess in handhabbare Abschnitte auf. Mosaikieren Sie dann die Raster in einen.
quelle
Könnten Sie in Bezug auf Ihre erste Absicht versuchen, den Befehl v.in.ogr auf einem Computer auszuführen, der über mehr RAM verfügt, oder den Speicherplatz auszutauschen ?
Wenn nicht, können Sie es in viele Dateien aufteilen und sie rastern, bevor Sie sie wieder zusammenführen.
quelle
Wenn Sie beim Rasterisieren mehr Kontrolle benötigen, lesen Sie das Skript poly_density.py von perrygeo, in dem GDAL unter der Haube verwendet wird, das jedoch zum Überlappen von Features oder Hinzufügen von bedingten Auswertungen verwendet werden kann, die über die
gdal_rasterize
allein möglichen hinausgehen .quelle
Tun Sie es wie Jack the Ripper nach Teilen. Aus dem Postgis-Export werden Scheiben der Daten in Gras importiert und konvertiert.
quelle
Hier finden Sie eine Anleitung zum Rastern einer Vektortabelle in PostGIS ...
quelle