This practical is to solve GPS points that are very close to each other in the same imagery pixel.

Load library

Read raster and shapefile point

point<-shapefile("F:\\Research\\Research_Cooperation\\ILRI\\UTM_Shapefile.shp")

point$Sum_Cx<-as.numeric(point$Sum_Cx)

path<-"F:\\Research\\Research_Cooperation\\ILRI\\output.tif"

myraster<-stack(path)

Extract the positional number of points in raster

mynumber<-cellFromXY(myraster, point)

Merging mynumber to point and convert to sf geodataframe

point$Raster_ID<-mynumber

library(sf)

Mypoint<-st_as_sf(point)

Mypoint$Raster_ID<-as.factor(Mypoint$Raster_ID)

Summary and merge

# Calculate the total of Sum_Cx grouped by Raster_ID
Mytotal<- Mypoint %>% group_by(Raster_ID)%>% summarise(Sum_total=sum(Sum_Cx))

# Remove duplicated Raster_ID 

Mypoint_Uni_Raster_ID<-Mypoint[!duplicated(Mypoint$Raster_ID),]

# Join two datasets together

Mypoint_final<-st_join(Mytotal,Mypoint_Uni_Raster_ID,by="Raster_ID")

head(Mypoint_final)
Simple feature collection with 6 features and 17 fields
geometry type:  POINT
dimension:      XY
bbox:           xmin: 566512.2 ymin: 2337469 xmax: 567087.4 ymax: 2337871
CRS:            +proj=utm +zone=48 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
LS0tDQp0aXRsZTogIlJlbW92ZSBQb2ludHMgZmFsbCB3aXRoaW4gdGhlIHNhbWUgcGl4ZWwiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGlzIHByYWN0aWNhbCBpcyB0byBzb2x2ZSBHUFMgcG9pbnRzIHRoYXQgYXJlIHZlcnkgY2xvc2UgdG8gZWFjaCBvdGhlciBpbiB0aGUgc2FtZSBpbWFnZXJ5IHBpeGVsLg0KDQojIyMgTG9hZCBsaWJyYXJ5DQoNCmBgYHtyfQ0KbGlicmFyeShyYXN0ZXIpDQpsaWJyYXJ5KHRpZHlyKQ0KbGlicmFyeShkcGx5cikNCg0KYGBgDQoNCg0KIyMjIFJlYWQgcmFzdGVyIGFuZCBzaGFwZWZpbGUgcG9pbnQNCg0KYGBge3J9DQpwb2ludDwtc2hhcGVmaWxlKCJGOlxcUmVzZWFyY2hcXFJlc2VhcmNoX0Nvb3BlcmF0aW9uXFxJTFJJXFxVVE1fU2hhcGVmaWxlLnNocCIpDQoNCnBvaW50JFN1bV9DeDwtYXMubnVtZXJpYyhwb2ludCRTdW1fQ3gpDQoNCnBhdGg8LSJGOlxcUmVzZWFyY2hcXFJlc2VhcmNoX0Nvb3BlcmF0aW9uXFxJTFJJXFxvdXRwdXQudGlmIg0KDQpteXJhc3Rlcjwtc3RhY2socGF0aCkNCmBgYA0KDQojIyMgRXh0cmFjdCB0aGUgcG9zaXRpb25hbCBudW1iZXIgb2YgcG9pbnRzIGluIHJhc3RlciANCg0KYGBge3J9DQpteW51bWJlcjwtY2VsbEZyb21YWShteXJhc3RlciwgcG9pbnQpDQpgYGANCg0KIyMjIE1lcmdpbmcgbXludW1iZXIgdG8gcG9pbnQgYW5kIGNvbnZlcnQgdG8gc2YgZ2VvZGF0YWZyYW1lDQoNCmBgYHtyfQ0KcG9pbnQkUmFzdGVyX0lEPC1teW51bWJlcg0KDQpsaWJyYXJ5KHNmKQ0KDQpNeXBvaW50PC1zdF9hc19zZihwb2ludCkNCg0KTXlwb2ludCRSYXN0ZXJfSUQ8LWFzLmZhY3RvcihNeXBvaW50JFJhc3Rlcl9JRCkNCmBgYA0KDQojIyMgU3VtbWFyeSBhbmQgbWVyZ2UgDQoNCmBgYHtyfQ0KIyBDYWxjdWxhdGUgdGhlIHRvdGFsIG9mIFN1bV9DeCBncm91cGVkIGJ5IFJhc3Rlcl9JRA0KTXl0b3RhbDwtIE15cG9pbnQgJT4lIGdyb3VwX2J5KFJhc3Rlcl9JRCklPiUgc3VtbWFyaXNlKFN1bV90b3RhbD1zdW0oU3VtX0N4KSkNCg0KIyBSZW1vdmUgZHVwbGljYXRlZCBSYXN0ZXJfSUQgDQoNCk15cG9pbnRfVW5pX1Jhc3Rlcl9JRDwtTXlwb2ludFshZHVwbGljYXRlZChNeXBvaW50JFJhc3Rlcl9JRCksXQ0KDQojIEpvaW4gdHdvIGRhdGFzZXRzIHRvZ2V0aGVyDQoNCk15cG9pbnRfZmluYWw8LXN0X2pvaW4oTXl0b3RhbCxNeXBvaW50X1VuaV9SYXN0ZXJfSUQsYnk9IlJhc3Rlcl9JRCIpDQoNCmhlYWQoTXlwb2ludF9maW5hbCkNCg0KYGBgDQoNCg==