J'ai un grand objet raster importé à partir d'un fichier image .tif. Je veux analyser les pixels de ce raster, à une distance radiale donnée du centre, afin d'identifier certains phénomènes axisymétriques que je peux remarquer dans l'image (ci-dessous). Pour ce faire, je veux extraire les valeurs de pixels qui se croisent avec des bandes circulaires d'un rayon donné (et de la largeur) à partir du centre de l'image (indiqué dans la figure ci-dessous).Extraction de valeurs le long de bandes circulaires personnalisées (distance radiale constante) à partir d'un raster
J'ai exploré plusieurs options pour ce faire, y compris la fonction d'extraction et le paquet d'imageur. Dans le paquetage imageur, vous pouvez facilement extraire des valeurs le long de lignes ou de colonnes, mais je n'ai pas trouvé de fonctions permettant d'extraire des valeurs avec des formes personnalisées comme je le demande. Je pourrais utiliser la fonction d'extraction avec l'argument SpatialPolygons, mais pour cela, je devrai entrer les emplacements de tous les points dans un objet polygone, ce qui nécessiterait une localisation très élevée des points (depuis les points, je pense , sont joints par des éléments de ligne). De plus, je veux faire varier la densité numérique des bandes sur lesquelles j'extrais les valeurs des pixels (et plus tard la moyenne) donc cette méthode serait à la fois fastidieuse et inflexible. Je me demandais donc si certains d'entre vous avaient des suggestions pour s'attaquer à ce problème.
> str(imRaster)
Formal class 'RasterLayer' [package "raster"] with 12 slots
[email protected] file :Formal class '.RasterFile' [package "raster"] with 13 slots
.. .. [email protected] name : chr "C:\\Users\\Nandu\\input_images\\All\\101_1A_1000ms.tif"
.. .. [email protected] datanotation: chr "INT2U"
.. .. [email protected] byteorder : chr "little"
.. .. [email protected] nodatavalue : num -Inf
.. .. [email protected] NAchanged : logi FALSE
.. .. [email protected] nbands : int 1
.. .. [email protected] blockrows : int 1
.. .. [email protected] blockcols : int 1392
.. .. [email protected] driver : chr "gdal"
.. .. [email protected] open : logi FALSE
[email protected] data :Formal class '.SingleLayerData' [package "raster"] with 13 slots
.
.
.
Alternativement, s'il existe d'autres méthodes (autres que par l'importation d'une image .tif à raster) qui permettrait une telle opération, qui pourrait aussi être utile. S'il vous plaît, faites-moi savoir.
Merci d'avance!
EDIT: Afin de rendre le problème reproductible, j'ai ajouté ici le lien vers l'image que je veux utiliser. Il est une image tiff, et peut être téléchargé ici
Link to the tiff image that I am trying to process in R
library(tiff)
library(raster)
imRaster = raster(file_path to the image)
plot(imRaster)
xy = cbind(684.4228, 599.0458) # Gives a rough location of the center in the image coordinates
Ce code peut être exécuté afin d'obtenir la trame décrite ci-dessus et le visualiser. J'espère que cela aide!
Ceci est une question intéressante. Veuillez fournir un [exemple minimal et reproductible] (http://stackoverflow.com/help/mcve). Par conséquent, vous pourriez jeter un oeil à [comment écrire un bon exemple R reproductible] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – loki
Merci @ loki. J'ai ajouté un lien vers l'image tiff et un exemple de code pour commencer immédiatement. J'espère que cela aide. Faites-moi savoir si autre chose est nécessaire. – Pradical2190