I'm trying to generate a slope raster from a DEM raster. It seems there is a pretty significant error due to the 'z-factor' option.
I'm fairly new to this, but some other posts and responses indicate a general workflow:
1) obtain a DEM. The ones I got (NED) are unprojected: horizontal coords are lat-lon, and vertical coords are meters.
Two possible branches here, A or B:
A2) project the DEM to UTM so that horizontal and vertical coords are in the same units A3) then do slope analysis on the UTM-projected DEM, using z-factor = 1.0
OR
B2) do slope analysis on the unprojected DEM, using z-factor = 111120 (which has been suggested in some posts as a number of meters per degree - see error discussion below) B3) then project the raster to UTM
Problem with option A: the projection process introduces gridded artifacts, and these get amplified in the slope raster:
Original DEM (NAD83, unprojected; zoomed in to one peak; min/max set to show high contrast here):

DEM projected to NAD83 UTM zone 10, note gridded artifacts:

slope analysis output from NAD83-UTMz10-projected DEM, note the same artifacts:

Problem with option B: 111120 seems vastly oversimplified and produces significant errors, see error table below - though, gridded artifacts are greatly reduced since they don't exist in the DEM that you run slope analysis on. First, number of meters per degree of latitude is not the same at all latitudes, due to the earth not being a perfect sphere. Second, and more obvious, number of meters per degree of longitude is a function of latitude, varying from ~111km at the equator to 0 at the poles.
For our area (Nevada County, California) here are some numbers from an online calculator, referenced in other places as a trusted source (but feel free to verify these):
Nevada County S extent ~ 39.0deg (WGS84) Nevada County N extent ~ 39.5deg (WGS84) Nevada City ~ 39.25deg (WGS84)
39.0 deg: 1 deg lat = 111015.45 meters 1 deg lon = 86626.37 meters
39.25 deg: 1 deg lat = 111020.23 meters 1 deg lon = 86320.71 meters
39.5 deg: 1 deg lat = 111025.01 meters (about 9.5 meters longer than at S extent of Nevada County) 1 deg lon = 86013.39 meters (about 613 meters shorter than at S extent of Nevada County)
(at equator, for reference:) 0.0 deg: 1 deg lat = 110574.27 meters 1 deg lon = 111319.46 meters
So, making some straightforward assumptions about how qgis uses the 'Z Factor' argument, here are some resulting errors (note this is in Nevada County but not the same location as the above images), along with Range-Bearing Line from Terrain Navigator Pro which is treated as gospel in this case; also note that this is just for one sample set of from/to; error would vary by compass direction of the from-to line also:

(z-factor is entered by hand for each row; all the other columns are calculated from it)
So, any ideas? Am I calculating something wrong, or is there a better workflow, or is there just no really good way to get around the error?