J'ai un grand fichier de formes (1 Go) et je dois le pixelliser. J'ai déjà essayé ce qui suit.
1.) L'importer dans GRASS en utilisant v.in.ogr
ceci a échoué avec le message d'erreur: ERREUR: G_realloc: impossible d'allouer 498240036 octets à break_polygons.c: 188
2.) Ma deuxième idée était d'utiliser PostGIS. Importez le fichier de formes, rééchantillonnez-le à l'emplacement x, y de la grille, puis exportez ces points et créez une grille à partir de xyz. J'ai importé avec succès les fichiers de formes (polygones et points) mais le croisement d'un million de polygones avec 300 000 points semble être très lent. J'ai utilisé le satement PostGIS suivant, peut-être qu'il y a place à amélioration.
select polygons.land_id,grid.geom from grid,polygons where grid.geom && polygons.geom and within(grid.geom,polygons.geom)
3.) J'ai également essayé d'utiliser simplify()
PostGIS. Mais j'ai perdu de nombreux petits polygones (c'est-à-dire que certaines zones qui n'étaient couvertes que de petits polygones sont devenues nulles).
Toutes les idées seraient grandement appréciées.
Réponses:
Vous pouvez essayer gdal_rasterize , bien que je ne l' aie pas utilisé avec un fichier de formes aussi volumineux, vous pouvez donc avoir les mêmes problèmes que vous l'avez fait avec GRASS. Je pense que quelque chose comme ce qui suit devrait fonctionner (avec GDAL> = 1.8.0):
Bien sûr, vous devrez jouer avec certaines des options en fonction de votre fichier de formes source. Le paramètre le plus important est -tr qui spécifie la résolution d'un pixel; sans cela, vous pouvez vous retrouver avec un très grand raster ...
Si vous souhaitez vous en tenir à GRASS, essayez de définir une plus petite étendue pour la pixellisation, et divisez le processus en morceaux gérables, puis mosaïquez les rasters en un seul.
la source
En ce qui concerne votre première intention, pourriez-vous essayer d'exécuter la commande v.in.ogr sur une machine ayant plus de RAM ou d'espace disque swap?
Sinon, vous pouvez le diviser en plusieurs fichiers et pixelliser chacun d'entre eux avant de les fusionner à nouveau.
la source
Si vous avez besoin de plus de contrôle lors de la pixellisation, consultez le script poly_density.py de perrygeo qui utilise GDAL sous le capot, mais peut être utilisé pour chevaucher des entités ou ajouter des évaluations conditionnelles au-delà de celles possibles avec
gdal_rasterize
seul.la source
Comme Jack l'Éventreur, faites-le par parties. À partir des tranches d'exportation postgis des données, importez dans l'herbe et convertissez.
la source
Voici un guide sur la façon de pixelliser une table vectorielle dans PostGIS ...
la source