Rendering Point Cloud Data

491
3
02-27-2020 10:24 PM
RobBever
New Contributor III

I've got some LIDAR data in a custom format, and I'd like to programmatically load it into my view. So assuming I have the locations of the points in lat/lon/alt format, how can I render it?

I tried creating spheres for each point, and while that does work, there are ~1k points per file, and there are many files. With all the spheres in the scene, performance was slow, and they would sometimes take a while to render in when moving the camera around. And that was just for one file, so many files clearly wouldn't work.

Is there a correct way to do this, so the points are rendered efficiently and I can have several thousand of them at a time?

I assume if I was able to make and load a Point Cloud .slpk file, the points would be handled in a "point cloud" mode that would have better performance. However, in my case I'm offline when I receive the LIDAR data, so as far as I can tell the ArcGIS Pro Python libraries are not usable since they don't work offline, not that I know how to use them to create a .slpk file.

So if I've got the data in memory, can I create a Point Cloud construct in the ArcGIS Runtime directly? If not, how would I go about creating a Point Cloud or activating Point Cloud-like behavior in the runtime?

0 Kudos
3 Replies
dotMorten_esri
Esri Frequent Contributor

Are you sure Pro can't work offline? I don't think that's correct. Anyway you need the data packages as .slpk, and Pro is usually the way to do that. There's a lot of preprocessing of the data used to create the slpk so that it can render millions of points, even on a small mobile device. The runtime doesn't provide a way to create the preprocessing.

0 Kudos
RobBever
New Contributor III

I think there's an offline-compatible license for ArcGIS Pro, so if you were converting by hand maybe you could do that. If you want to convert things programmatically, though, from what I saw the Python library will immediately check servers upon importing the tools and will fail if you're offline. It fails on the "import" line, so I'm not sure how you'd provide it an offline license, even if you had one.

Would a renderer attached to a 3D GraphicsLayer work for rendering a few thousand or tens of thousands of points? I need to do this programmatically offline and I don't want to force every user to pay for an ArcGIS Pro license just so I can convert my points to .slpk, even if it is possible to use the ArcGIS Pro Python libraries offline.

Thanks.

0 Kudos
ClaudeHe
New Contributor II

Hi, I think I got the same problem.

I have thousands of Lidar data points, each one is defined by latitude, longitude, and altitude as GIS position and a float value as concentration (to be render by different colors in ). These real-time data are collected via some ground-based laser radar and to be displayed synchronously in esri:SceneView, a WPF application, exactly like this:

ClaudeHe_0-1637299796961.png

I spent a couple of days studying here: https://github.com/Esri/arcgis-runtime-samples-dotnet, but these samples should load point cloud from some '.slpk' file.

I am not planing to be an expert in GIS, so what I want to know is, is there a way for 'Arcgis Runtime for .Net' to create these points programmatically rather than slpk file?

Thanks in advance!

0 Kudos