Issue with ConvexHullMesh function

List of points

{ x=easting | y=northing | z=elevation }.
In[]:=
xyz=
Points
;
Show number of points in the dataset.
In[]:=
xyz//Length
Out[]=
56752
Take just the { easting | northing } values.
In[]:=
xy=xyz[[All,;;2]]
Out[]=
{{612293.,188958.},{612288.,188961.},{612299.,188966.},{612306.,188968.},{612309.,188968.},{612313.,188968.},{612297.,188961.},{612299.,188963.},{612303.,188965.},{612314.,188966.},{612322.,188965.},{612336.,188961.},{612361.,188954.},{612379.,188949.},
⋯56725⋯
,{611860.,189782.},{612637.,188816.},{611912.,189755.},{612096.,189132.},{612075.,189172.},{612058.,189129.},{612113.,189861.},{611946.,189494.},{611944.,189510.},{611952.,189483.},{612030.,189208.},{611917.,189590.},{611953.,189718.}}
Full expression not available
(
original memory size:
0.9 MB)

Use Jon McLoone’s Resource function to get a non-convex hull mesh

This works fine.
In[]:=
Show[​​resourceFunctionBM=BoundaryMesh[ResourceFunction["NonConvexHullMesh"][xy,90]],​​ListPlot[xyz[[All,1;;2]],AspectRatio->Automatic,FrameLabel->{"Easting","Northing"},PlotRange->All]​​,Frame->True​​]
Out[]=

Use system function to get the convex hull mesh

In[]:=
convexHull=ConvexHullMesh[xy,Frame->True]
Out[]=

Use system function to get a concave hull mesh

This fails (even with the alpha value set to Infinity)...

In[]:=
ConcaveHullMesh[xy,Infinity]
Out[]=
ConcaveHullMesh[{{612293.,188958.},{612288.,188961.},{612299.,188966.},{612306.,188968.},{612309.,188968.},{612313.,188968.},{612297.,188961.},{612299.,188963.},{612303.,188965.},{612314.,188966.},{612322.,188965.},{612336.,188961.},{612361.,188954.},
⋯56726⋯
,{611860.,189782.},{612637.,188816.},{611912.,189755.},{612096.,189132.},{612075.,189172.},{612058.,189129.},{612113.,189861.},{611946.,189494.},{611944.,189510.},{611952.,189483.},{612030.,189208.},{611917.,189590.},{611953.,189718.}},∞]
Full expression not available
(
original memory size:
0.9 MB)

A concave hull mesh is retuned if the function is fed a sub-sample of the point dataset

Whilst this might provide a clue as to what’s causing the issue, it isn’t a satisfactory solution.
In[]:=
ConcaveHullMesh[RandomChoice[xy,10000],200,Frame->True]
Out[]=

A solution...

It appears that the modestly large coordinate values, possibly combined with the large number of points in the dataset, causes the function to fail. Shifting the mesh seems to resolve the issue. Here, I’ve shifted all the point coordinates such that they are centred around the centroid of the point set’s convex hull mesh region.
In[]:=
xyCentroid=RegionCentroid[convexHull]
Out[]=
{612162.,189605.}
In[]:=
concaveHullMesh=ConcaveHullMesh[#-xyCentroid&/@xy,45,Frame->True]
Out[]=
In[]:=
BoundaryMesh[concaveHullMesh,Frame->True,MeshCellStyle->{1->Directive[{Red,Thick}],2->None}]
Out[]=
​​