Revision: 5958
          http://sourceforge.net/p/jump-pilot/code/5958
Author:   ma15569
Date:     2018-10-04 08:44:30 +0000 (Thu, 04 Oct 2018)
Log Message:
-----------
a) Correction on compute hillshade according ESRI definition 
(http://edndoc.esri.com/arcobjects/9.2/net/shared/geoprocessing/spatial_analyst_tools/how_hillshade_works.htm)
b) add missing class on histogram algorithms

Modified Paths:
--------------
    
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/hillshade/HillshadeStripe.java

Added Paths:
-----------
    
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/rastertools/classifiers/GivenIntervals.java

Modified: 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/hillshade/HillshadeStripe.java
===================================================================
--- 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/hillshade/HillshadeStripe.java
        2018-09-25 20:14:49 UTC (rev 5957)
+++ 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/hillshade/HillshadeStripe.java
        2018-10-04 08:44:30 UTC (rev 5958)
@@ -2,6 +2,7 @@
 
 import com.geomaticaeambiente.openjump.klem.grid.DoubleBasicGrid;
 import com.geomaticaeambiente.openjump.klem.parallel.Shifter;
+
 import java.io.IOException;
 import java.util.concurrent.Callable;
 
@@ -50,10 +51,33 @@
                     double slopeRad = 
Math.toRadians(slopeDegsGrid.getValue(col, row));
                     double aspectRad = 
Math.toRadians(aspectDegsGrid.getValue(col, row));
                     
-                    double hillshade = 255.0 *
-                            ((Math.cos(zenithRad) * Math.cos(slopeRad)) +
-                            (Math.sin(zenithRad) * Math.sin(slopeRad) * 
Math.cos(azimuthRad - aspectRad)));
-                    hillshadeGrid.setValue(col, row, 
Math.toDegrees(hillshade));
+                    double aspectRad2;
+                    /*
+                     * [Giuseppe Aruta =ct 4 2018] correctios from:
+                     * http://edndoc.esri.com/arcobjects/9.2/net/shared/
+                     * geoprocessing
+                     * /spatial_analyst_tools/how_hillshade_works.htm
+                     */
+                    //
+                    if (aspectRad < 0) {
+                        aspectRad2 = 2 * Math.PI + aspectRad;
+                    } else {
+                        aspectRad2 = aspectRad;
+                    }
+
+                    final double hillshade = 255.0 * ((Math.cos(zenithRad) * 
Math
+                            .cos(slopeRad)) + (Math.sin(zenithRad)
+                            * Math.sin(slopeRad) * Math.cos(azimuthRad
+                            - aspectRad2)));
+                    long hillshade2;
+                    if (hillshade < 0) {
+                        hillshade2 = 0;
+                    } else {
+                        hillshade2 = Math.round(hillshade);
+                    }
+                    // hillshadeGrid.setValue(col, row,
+                    // Math.toDegrees(hillshade));
+                    hillshadeGrid.setValue(col, row, hillshade2);
                 }
             }
         }

Added: 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/rastertools/classifiers/GivenIntervals.java
===================================================================
--- 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/rastertools/classifiers/GivenIntervals.java
                           (rev 0)
+++ 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/rastertools/classifiers/GivenIntervals.java
   2018-10-04 08:44:30 UTC (rev 5958)
@@ -0,0 +1,63 @@
+package com.geomaticaeambiente.openjump.klem.rastertools.classifiers;
+
+import com.geomaticaeambiente.openjump.klem.grid.DoubleBasicGrid;
+
+public class GivenIntervals implements ClassAlgo {
+    public final DoubleBasicGrid grid;
+    public double interval;
+    public final Double baseVal;
+
+    public GivenIntervals(DoubleBasicGrid grid, double interval, Double base) {
+        this.grid = grid;
+        this.interval = interval;
+        baseVal = base;
+    }
+
+    @Override
+    public double[] getBreakValues() {
+        double minVal = Double.MAX_VALUE;
+        double maxVal = -4.9E-324D;
+        for (int r = 0; r < grid.getRowCount(); r++) {
+            for (int c = 0; c < grid.getColumnCount(); c++) {
+                final double value = grid.getValue(c, r);
+                if (!grid.isNoData(value)) {
+                    if (value < minVal) {
+                        minVal = value;
+                    }
+                    if (value > maxVal) {
+                        maxVal = value;
+                    }
+                }
+            }
+        }
+        int intvCount = (int) ((maxVal - minVal) / interval);
+        if (intvCount > 100) {
+            intvCount = 100;
+            interval = ((maxVal - minVal) / 100.0D);
+        }
+        if (baseVal != null) {
+            if (baseVal.doubleValue() == 0.0D) {
+                minVal = (int) (minVal / interval) * interval;
+            }
+            if ((baseVal.doubleValue() > 0.0D) && (minVal > 0.0D)) {
+                minVal = (int) (minVal / baseVal.doubleValue())
+                        * baseVal.doubleValue();
+            } else if ((baseVal.doubleValue() < 0.0D) && (minVal < 0.0D)) {
+                minVal = (int) (baseVal.doubleValue() / minVal)
+                        * baseVal.doubleValue();
+            } else if ((baseVal.doubleValue() < 0.0D) && (minVal > 0.0D)) {
+                minVal = (int) (Math.abs(minVal) / Math.abs(baseVal
+                        .doubleValue())) * Math.abs(baseVal.doubleValue());
+            }
+        }
+        double endVal = minVal;
+
+        final double[] breaks = new double[intvCount];
+        for (int i = 0; i < intvCount; i++) {
+            final double startVal = endVal;
+            endVal = startVal + interval;
+            breaks[i] = endVal;
+        }
+        return breaks;
+    }
+}


Property changes on: 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/rastertools/classifiers/GivenIntervals.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property


_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to