I am trying to use model builder to create a number of DEMs from LiDAR point clouds. To do so, I need to filter the point clouds for ground points only and then convert the points to raster. In the past, I have used the tool "LAS Dataset to Raster" but I am unable to set the filters through this tool. (I would have to go into the properties of each layer individually and set the filter which is not an option for the number of files I have). In searching other questions, I saw that the tool "Make LAS Dataset Layer" allows me to set the filters and combined with "LAS Dataset to Raster" I can set the filters and create the DEM through model builder (see this question and answer: How to specify LAS dataset filters in ArcMap ModelBuilder?).

My lingering issue is that I cannot get any of the iterators to work with lasd files. And when I try to connect the iterator to "Make LAS Dataset Layer", my only option is as a precondition. How do I connect this process to an iterator with lasd files?

Screenshot of model

  • Sounds like a bug. How are you at python? It's very easy to iterate in python this could be a good place to start if you're not proficient already. If your LAS are ASPRS compliant classified your 'ground' should be class 2 and 8 (possibly 9). 2 is ground, 8 is model key (ground) and 9 is water. How do you have so many lasd files? you've got more than one las file per lasd haven't you? – Michael Stimson Nov 30 '17 at 1:11
  • I know you said you tried all the iterators, but have you tried 'Iterate Multivalue'? Try this. If that doesn't work try adding all the LAS files into the model(if feasible) and connect them all to the 'Iterate Multivalue' iterator. If it's not feasible to add all LAS files into the model, use 'Collect Values' (model only tool) to collect the values from the LIDAR workspace to pass into the multivalue iterator. I haven't tested this. – jbalk Nov 30 '17 at 6:04
  • @jbalk I got this method to work for one file at a time. How do I change the output names of the individual files? Usually I use %Name% but there isn't a name variable created in Iterate Multivalue. So it is just overwriting to the same raster file for each lasd. – Emily Dec 8 '17 at 20:50
  • @MichaelStimson I only have one las file per lasd. I have about 600 lasd files. I don't know python, but I will investigate it if I can't get these other methods to work. – Emily Dec 8 '17 at 20:51
  • @jbalk I actually answered my own question by using the Parce Path and creating a Name parameter. But I still have one issue with this method- The model keeps running continuously. It runs through all the files and then starts over again at the beginning again. Any thoughts on why? – Emily Dec 8 '17 at 21:33

I was able to get this to work and wanted to post my final solution. I used @jbalk 's answer with a Parse Path. I used Iterate Multivalue (input the lasd files). I connected the Value output to Make LAS Dataset Layer where I set the filter to 2, 8, and 9.

I also added the tool "Parse Path" to get the file name to use in the name outputs for both Make LAS Dataset Layer and LAS Dataset to Raster. The parse path name must be set as a precondition to Make LAS Dataset Layer. I attached a screenshot so it's clear.

Final Model Screenshot


It's an issue with the iterator and I have come across this problem before, fortunately it can be easily fixed as shown below:


The trick is to use the model only tool Calculate Value to "convert" the output of the iterator to a LAS dataset. All I did is shown below then it can be connected to the Make LAS Dataset Layer tool.

Calculate Value Tool

  • I'm not able to get this work. I think I might be misunderstanding what you are suggesting. Do I connect the File iterator file to the Calculate value? It is only letting me connect it as a precondition. – Emily Dec 8 '17 at 20:56
  • No you do not, look at the calculate value tool it is referencing the output of the iterator using in-line substitution, if you do not know what that is refer to the help file. – Hornbydd Dec 8 '17 at 23:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.