I would like to know how I can divide the attached list of points to as many clusters as possible based on the gap between the patches. Then I can decide which one should be kept and which remove. I tried different options in Findclusters command but none of them gave me a correct answer. Any help is really appreciated.
This gets you four clusters with points grouped together in
ccmp. The two large islands are depicted in orange and blue, the small long island in green, and a tiny island in red.
nng = NearestNeighborGraph[data, 8]; ccmp = ConnectedComponents[nng]; ListPointPlot3D[ccmp] (* Length@ccmp == 4 *)