Conversion de la couche de points en grille raster qui affiche la fréquence des points par cellule en utilisant QGIS

9

J'ai une couche de points qui montre la distribution d'une espèce.

Est-il possible dans QGIS de convertir cette couche de points en une grille raster dans laquelle la valeur de chaque cellule correspond à la quantité de points dans cette cellule?

Jusqu'à présent, je n'arrivais qu'à attacher des valeurs d'attribut aux cellules de la grille. J'ai déjà ajouté une colonne dans ma table d'attributs qui a la valeur «1» pour chaque point, en espérant qu'il existe un moyen d'utiliser une somme d'attributs pour chaque cellule de la grille.

Murphy
la source
1
Juste une petite note sur votre logique: si vous additionnez simplement les valeurs de 1 pour chaque cellule de la grille, vous surestimerez très probablement la richesse (si c'est ce que vous voulez calculer) car ce calcul ne vérifie pas si une espèce a déjà été ajoutée à une grille.
Courlis
J'ai un modèle de distribution des espèces, un point par individu observé. Je veux vérifier l'agrégation et lier la distribution de l'espèce à l'habitat sous-jacent dans le SIG. Maintenant, de nombreux points sont situés au-dessus et très proches les uns des autres, donc pour la visualisation, j'aimerais «simplifier» ce modèle et utiliser une grille qui montre le nombre d'individus qui ont été observés par cellule. J'espère que cela explique un peu mieux.
Murphy

Réponses:

10

C'est un kludge mais cela fonctionne - je n'ai pas encore trouvé un moyen d'aller directement des points au raster (mais j'espère que quelqu'un donne une solution ici!).

En commençant par une grille de points (points aléatoires dans le Serengeti de l' Vector|Research tools|Random pointsoutil):

entrez la description de l'image ici

Créez une grille polygonale de la même étendue et de la même taille de cellule que le raster que vous souhaitez avoir (à partir de Vector|Research tools|Vector grid):

entrez la description de l'image ici

Utilisez Vector|Analysis tools|Points in polygon, en utilisant la grille polygonale et la couche de points:

entrez la description de l'image ici

Cela vous donne une nouvelle grille (ici codée en couleur par le nombre de points dans chaque cellule de polygone):

entrez la description de l'image ici

Utilisez maintenant Raster|Conversion|Rasterizepour convertir ceci en raster, en utilisant l'attribut PNTCNT pour les valeurs du raster et la même taille de cellule que chosend pour la grille:

entrez la description de l'image ici

... donnant un raster avec des valeurs selon les points de chaque cellule:

entrez la description de l'image ici

Simbamangu
la source
2

Manière la plus simple et la plus simple:

  • Supposons que vous ayez une colonne avec un identifiant de point unique (le nom de l'espèce)
  • Fractionnez votre couche de points par cet attribut (QGIS -> Gestion des données -> Fractionner)
  • Pixellisez chaque couche ponctuelle par exemple avec l'outil de tramage GDAL ou les outils SAGA ou GRASS disponibles dans la boîte à outils de traitement. Assurez-vous que vous utilisez la même taille de cellule et l'étendue résultante.
  • Récapitulez simplement tous les Rasterlayers générés. Par exemple avec la fonction SAGA "Grids sum" ou dans GRASS "r.sum". Les deux fonctions sont également disponibles dans la boîte à outils de traitement.

Pour ce faire automatiquement, je vous suggère d'éther de vous écrire un script, un modèle de traitement ou de cliquer x fois sur le traitement par lots dans la boîte à outils de traitement QGIS. EDIT: Si vous êtes capable d'utiliser R, alors commencez directement à partir d' ici et adaptez le code à vos besoins (boucle à travers des points séparés).
Ou vous attendez encore un peu. Dans mon temps libre, je suis actuellement en train d'écrire un nouveau plugin pour QGIS (traitant des calculs macroécologiques) et il pourrait avoir une fonction similaire à ce dont vous avez besoin.

Courlis
la source
Je pense que la question concerne une seule couche d' espèce - qui ne peut pas (et ne devrait pas) être divisée pour une solution. OP a besoin d'une solution de «somme de points dans la cellule raster».
Simbamangu
Eh bien, vous pouvez le faire sans fractionner, mais cela nécessite presque certainement une boucle, respectivement une solution scriptée. Pour une seule espèce, votre solution fonctionne bien sûr car elle affiche simplement la densité d'occurrence agrégée.
Courlis
-2

J'ai trouvé ce manque de support dans QGIS très ennuyeux car c'est une étape de géotraitement importante dont j'ai toujours besoin. La rastérisation via le résille, comme suggéré ci-dessus, est très lente si vous avez beaucoup de points de données (disons 100 000) car elle effectue une opération vectorielle qui consomme votre CPU. De plus, la résille est de taille massive par rapport à une couche raster élégante.

GDAL a des fonctionnalités pour effectuer cette opération dans un minimum de temps de traitement, mais il n'est pas implémenté dans QGIS (malheureusement). Dans l'intérêt de l'environnement et de vos nerfs, vous pouvez cependant utiliser la fonction gdal sur la ligne de commande ou dans d'autres environnements logiciels. Je préfère utiliser R qui a plusieurs packages liés à GDAL. Vous pouvez voir comment le faire en R à au polygones pixellisation avec la fonction « gdal_rasterize » dans R .

joaoal
la source