# Point Cloud to STL File

I had a friend request that I print out the Bathymetry of Lake Michigan as a gift for her PhD adviser. I went to NOAA and the site had a few files for the Bathymetry of Lake Michigan.

Files and types are located here: http://www.ngdc.noaa.gov/mgg/greatlakes/michigan.html

I am trying to convert this into an STL file to print in my 3D printer however I am having no luck in converting this into a mesh I can use. I have tried multiple approaches with the different files that are listed but cannot seem to get it to properly convert to a mesh. I have tried the following so far:

-Import an .xyz file into MeshLab to convert it to an STL. After I import it looks like nothing imported and I can't navigate around in the file

-Import an ASC file into MeshLab to convert it to an STL. After I import it, I get no errors but the output is a long, thin mesh that looks nothing like lake Michigan

-Just for a test, I imported the .xyz file into Autodesk ReCap just to see what would happen. I noticed that the points were in a long thin area similar to the ASC import but as I browsed around I noticed that the each layer of dots was the actual Bathymetry contours.

I have tried multiple approaches and software beyond these but can't seem to get the files to convert into a printable mesh that I can manipulate to send to my 3D printer.

• I took a quick look at the .xyz file. It seems to contain a grid of points overlaying the lake. They are in the format of Longitude, Latitude, Altitude, and are arranged in rows by Latitude. The northern most latitudes, 46.00-46.09 degrees, have NAN for altitudes. This probably broke most the software. The dataset extends from -88 to -84.5 long and 41.62 to 45.99 lat which nicely covers the lake c1.staticflickr.com/3/2682/4036834071_74d19b6327_b.jpg Jul 12, 2021 at 20:38

In order to properly get an STL file out of a point cloud, you'll need some tool to help triangulate the points to create proper vectors. The shell that is created in an STL is what the slicing engine will "slice".

I'm not as familiar with the full potential of MeshLab, but I would think this tool is best suited for files that at least have most of shell already in place. Essentially best for fixing STL's.

In the past, I've used (the very expensive) Unigraphics NX8. This CAD/CAM software is very powerful and has tools for creating meshes out of point clouds. I believe it was the sew tool that allowed me to do this in the past (I no longer have access to the software). Other CAD programs such as SolidWorks, Rhino, AutoCAD, etc. might have similar features.

Alternatively, I think it looks like you might be able to convert a 3D point cloud in SketchUp. If the cloud is layered by height and each layer had points on the same -Z- plane, then you might be able to automate creating lines between the nearest points on the same plane. Then it might just take a little bit of manual labor to "fix" the model to become 3D printing ready. Also check out this forum post, it looks like someone had luck in converting terrain point clouds.

Completely alternatively, have you considered converting an image to STL? I've done this many times before and it turns out quite nicely. If you can find topographical map of the lake, you could alter the image into grayscale (play with it a bit). Then use software to convert the grayscale image to STL.

• Thanks TBM! I'll check into these tonight and let you know. I appreciate you giving a little bit of background as well. Mar 9, 2016 at 16:09
• No problem! Hope it helps. Please keep us updated on the project, it sounds like a cool print! It'd be nice to see how you end up getting this to work if you are able to convert the point cloud. Mar 9, 2016 at 16:14
• Just an update. I went through various methods last night and the links you provided and I tried "CloudCompare" to import the point cloud. It originally had the same issues as MeshLab until I realized that the z-axis is elongated for some reason on the import. I fixed this and I actually saw the bathymetry but had some odd noise on the land portion of the lake. I'll continue tonight and may revisit MeshLab now that I know the z-axis has that issue and how to fix it. Mar 10, 2016 at 15:43
• You pointed me in the right direction. I used CloudCompare to import the cloud and then I rasterized the cloud and exported it to an STL file. Thanks for your help. Mar 11, 2016 at 2:44
• So, was CloudCompare able to clean up the noise you found in the point cloud? Thanks for the update, I'll have to start looking into CloudCompare for future projects! Mar 11, 2016 at 20:32

I was able to download the file collection from the link you posted, although I used none of the Grid files, as they seemed inappropriate to this task. The shape files were then imported into AutoCAD using the trial version of Spatial Manager.

The resulting drawing indicates that it's in 3D. When the 3D orbit tool is selected, the image rotates a flat drawing.

I saved the AutoCAD DWG file and imported it with SketchUp, ostensibly not the smartest program for this sort of thing. The result was a flat image, not a 3D one.

I suspect that the resulting flat drawing IS the image and cannot be 3D printed, unless you have reason to believe otherwise.

You can do this using MATLAB, or possibly Octave (the open-source version of MATLAB). I'm doing this right now to print a globe with exaggerated topography and bathymetry. MATLAB has tons of tools for importing data. I'm sure you can import the Lake Michigan bathymetry data, though you may have to hunt for an importing script on the MATLAB exchange.

As long as you can get your data imported as a 2D matrix of X, Y and Z values, you can use the surf2stl() function by Bill McDonald, available here:

https://www.mathworks.com/matlabcentral/fileexchange/4512-surf2stl

This creates an STL you can use. Note that it's just a surface, so you'll need to give it depth some other way so your printed object isn't paper-thin.