In a previous post Part I @Julian S proposed an interesting method in order to segment the data. A copy of the data file can be found here: data. I know that I should provide a minimal working example but the particular structure of the data do not allow me to replicate them with random distributions.
data = Import["spiral.out", "Table"];
radius = 15.3;
data1 = FindClusters[Select[data, Norm[#] > radius &], 2, Method -> "Agglomerate"];
L0 = Show[
ListPlot[data1, PlotRange -> Full, AspectRatio -> 1,
PlotStyle -> {Directive[Darker[Green], PointSize[0.003]],
Directive[Red, PointSize[0.003]]}],
ListPlot[Select[data, Norm[#] < radius &], PlotRange -> Full,
AspectRatio -> 1,
PlotStyle -> {Directive[PointSize[0.001], Gray]}]
]
This works fine if the two spirals do not merge together. Here is an example

If however the two spiral arms merge the method fails. Here is another example

So, my question: Is there a way to improve the method in order to work also when the two spiral arms merge together? The spiral that start from + 15.3 should be in green color, while its twin starting from - 15.3 in red.
Any suggestions?