Friday, 9 August 2019

arcgis desktop - Extracting all points within a certain distance and height difference from a Raster


I have a raster containing tens of millions of points all with X, Y and Z data defined. I need to figure out a simple way to extract and create a new raster or vector with ALL points at a 720 m distance from each other (X,Y) and at 120 m elevation difference (Z) from each other.


I have ZERO knowledge of SQL and Python. I have been trying to do this on VBA and came up with a couple of algorithms but the processing time is unreasonable and unrealistic. I am sure there must be a simple GIS approach to accomplish this but cannot seem to find it.


I am using ArcMap.



Answer



A perhaps-too-simple approach would be to use Focal Statistics.



  • Define the neighborhood of interest as an annulus, with inner radius just under 720m and outer radius just over 720m. (This depends somewhat on cell size. For example, 5m cells would have an annulus of 717.5 - 722.5; this might be too large a window for a 1m cell raster, though.)


  • Use statistics type MIN, to find the lowest elevation value in the neighborhood.

  • Repeat a second time, use statistics type MAX, to find the highest elevation value in the neighborhood.


  • Using Raster Calculator, evaluate whether the elevation differences are large enough. Something like


    Con((Abs("DEM" - "FSMin") > 120) | (Abs("DEM" - "FSMax") > 120), 1, 0)


    If the original-min difference or original-max difference exceeds 120m, the value is 1, otherwise 0. (Note: I haven't tested the syntax.)




This only tells you whether a cell has one or more neighboring cells that meet your distance/elevation criteria, it does not tell you how many.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...