I am currently obtaining slope and aspect of roofs using ArcGIS as follows:

  1. Mosaic several Lidar .asc files to new raster
  2. Extract by mask using Mastermap building outlines to get hold of just the building pixels.
  3. Spatial Analyst Tools – Surface – Slope
  4. Spatial Analyst Tools – Zonal – Zonal Statistics as Table - mean

I have a large amount of data to process. I could automate this using ModelBuilder in ArcGIS but I’m sure this is not the most efficient method of achieving the results I need. I’m considering the following:

  1. Script everything in Python
  2. Combination of Python/QGIS/GRASS
  3. R software
  4. Python/Saga combination

Does anyone have any experience of a similar problem and how did they solve it?

Does anyone have an opinion on which software or language I should select?

  • 2
    I think all of the combination will get the job done, so it is a matter of which of the programs and languages you are most confident with. Just make sure you use 64 bit not 32 bit processing :) – reima Mar 24 '15 at 6:22
  • 1
    I would add that GRASS has a set of modules for working with Lidar clouds. What might be of interest is the v.lidar.edgedetection module – Micha Mar 24 '15 at 7:08
  • I see no reason for step 2, provided you start with a polygon layer of buildings. Step 1 may be troublesome, too, insofar as it adds another layer of complexity and creates a much larger raster dataset to process. If all buildings will lie entirely within a least one of the Lidar files, you don't need step 1 at all. Just retain both the mean and the pixel count in step (4) and then later if there are multiple results for any building, retain the one with the largest pixel count (using simple table processing). Regardless of the language, these things can expedite the workflow. – whuber Mar 24 '15 at 15:03
  • I might add--on a different note--that the means of raw slopes could have extremely poor statistical characteristics. A single uncorrected bump in the middle of a roof could create such an extraordinarily large slope within its surrounding pixels that this error would dominate the mean. The LIDAR data must be well cleaned. Even then, consider using the zonal median rather than the mean. At the very least, retain a measure of dispersion--such as the zonal range or variance--and screen out all results showing too much dispersion: they will be unreliable. – whuber Mar 24 '15 at 15:06
  • Thank you to whuber. I will definitely check the data distribution. – Diane Palmer Mar 25 '15 at 12:53

ArcGIS and Python go very well together.

ArcGIS offers you arcpy, a python interface to all ArcGIS tools and more. Even if you are a beginner it is quite easier to learn. You can for example start building a model in Model builder and export the content as Python script.

Afterwards you adoped the script the way you want (eg add loops, or other custom code)

| improve this answer | |

As the others have mentioned, the "best" method is probably up to personal opinion. I'll recommend QGIS.

@Thomas has pretty much summed up what ArcGIS can do, QGIS is also capable of doing similar automated processing, exporting models to python scripts and offers a list of tools from a range of sources such as GRASS, SAGA and functions specific to LiDAR data:

Tools available from QGIS

| improve this answer | |

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