Revision: 5970
          http://sourceforge.net/p/jump-pilot/code/5970
Author:   ma15569
Date:     2018-10-10 09:03:45 +0000 (Wed, 10 Oct 2018)
Log Message:
-----------
Added real area algorithm

Modified Paths:
--------------
    plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/ChangeLog

Added Paths:
-----------
    
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/
    
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaCalculator.java
    
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaStripe.java

Modified: plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/ChangeLog
===================================================================
--- plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/ChangeLog  2018-10-08 06:29:45 UTC 
(rev 5969)
+++ plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/ChangeLog  2018-10-10 09:03:45 UTC 
(rev 5970)
@@ -3,6 +3,9 @@
 # 2. make sure that lines break at 80 chars for constricted display situations
 #<-------------------------------- 80 chars 
---------------------------------->#
 
+2018-10-10 Giuseppe Aruta.
+  * Added Real Area algorithm
+  
 2018-10-04 Giuseppe Aruta.
   * Correction on compute hillshade according ESRI definition 
    (http://edndoc.esri.com/arcobjects/9.2/net/shared/geoprocessing/
@@ -12,7 +15,7 @@
 2018-07-26 Giuseppe Aruta. Ricompiled the libraries:
   * Enabled project specific setting on Project/Java compiler/Error-Warning
     to deactivated some warning on compiling
-  * Delate class it.geomaticaambiente.klem.klemDA as creating error on 
compiling
+  * Delete class it.geomaticaambiente.klem.klemDA as creating error on 
compiling
     
 2018-07-13 Giuseppe Aruta
   * Class: com.geomaticaeambiente.openjump.klem.slope.SlopeStripe

Added: 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaCalculator.java
===================================================================
--- 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaCalculator.java
                              (rev 0)
+++ 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaCalculator.java
      2018-10-10 09:03:45 UTC (rev 5970)
@@ -0,0 +1,95 @@
+package com.geomaticaeambiente.openjump.klem.realArea;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+import com.geomaticaeambiente.openjump.klem.grid.DoubleBasicGrid;
+import com.geomaticaeambiente.openjump.klem.grid.GridDestriper;
+import com.geomaticaeambiente.openjump.klem.grid.GridStriper;
+import com.geomaticaeambiente.openjump.klem.parallel.ExecutorBuilder;
+
+/**
+ *
+ * @author AdL
+ */
+public class RealAreaCalculator {
+
+    /**
+     * Calculates the hillshade
+     * 
+     * @param slopeDegsGrid
+     * @param aspectDegsGrid
+     * @param zenithDegs
+     * @param azimuthDegs
+     */
+    public RealAreaCalculator(DoubleBasicGrid slopeDegsGrid, double zenithDegs,
+            double azimuthDegs) {
+        this.slopeDegsGrid = slopeDegsGrid;
+
+        this.zenithDegs = zenithDegs;
+        this.azimuthDegs = azimuthDegs;
+    }
+
+    /**
+     * Calculates the aspect (in radians).
+     * 
+     * @return The aspect (radians).
+     * @throws InterruptedException
+     * @throws ExecutionException
+     * @throws IOException
+     */
+    public DoubleBasicGrid calculate() throws InterruptedException,
+            ExecutionException, IOException {
+
+        final int rowCount = slopeDegsGrid.getRowCount();
+        final ExecutorBuilder execBuilder = new ExecutorBuilder(rowCount);
+        final int stripeRowCount = execBuilder.getRowPerStripeCount();
+        final int stripeCount = execBuilder.getStripeCount();
+
+        final List<Callable<DoubleBasicGrid>> asepectToDos_l = new 
ArrayList<Callable<DoubleBasicGrid>>();
+
+        final DoubleBasicGrid[] hillshadeDegStripes = GridStriper
+                .stripeDoubleGrid(slopeDegsGrid, stripeRowCount);
+
+        /* Stripe */
+        for (int s = 0; s < stripeCount; s++) {
+
+            int stripeEffectiveRows;
+            if (s != stripeCount - 1) {
+                stripeEffectiveRows = stripeRowCount;
+            } else {
+                stripeEffectiveRows = rowCount - (s * stripeRowCount);
+            }
+
+            final int offset = s * stripeRowCount;
+
+            final RealAreaStripe aspectStripe = new RealAreaStripe(
+                    stripeEffectiveRows, slopeDegsGrid, offset, zenithDegs,
+                    azimuthDegs);
+
+            asepectToDos_l.add(aspectStripe);
+
+        }
+
+        /* Calculate */
+        final List<Future<DoubleBasicGrid>> aspectFutures_l = execBuilder
+                .getExecutorService().invokeAll(asepectToDos_l);
+        final List<DoubleBasicGrid> aspectGrids_l = new 
ArrayList<DoubleBasicGrid>();
+        for (final Future<DoubleBasicGrid> asepctFuture : aspectFutures_l) {
+            aspectGrids_l.add(asepctFuture.get());
+        }
+
+        return GridDestriper.assembleDoubleStrips(aspectGrids_l);
+
+    }
+
+    private final DoubleBasicGrid slopeDegsGrid;
+
+    private final double zenithDegs;
+    private final double azimuthDegs;
+
+}


Property changes on: 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaCalculator.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaStripe.java
===================================================================
--- 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaStripe.java
                          (rev 0)
+++ 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaStripe.java
  2018-10-10 09:03:45 UTC (rev 5970)
@@ -0,0 +1,78 @@
+package com.geomaticaeambiente.openjump.klem.realArea;
+
+import java.io.IOException;
+import java.util.concurrent.Callable;
+
+import com.geomaticaeambiente.openjump.klem.grid.DoubleBasicGrid;
+
+/**
+ *
+ * @author AdL
+ */
+public class RealAreaStripe implements Callable<DoubleBasicGrid> {
+
+    public RealAreaStripe(int stripeEffectiveRows,
+            DoubleBasicGrid slopeDegsGrid, int yOffset, double zenithDegs,
+            double azimuthDegs) {
+
+        this.stripeEffectiveRows = stripeEffectiveRows;
+        this.slopeDegsGrid = slopeDegsGrid;
+
+        this.yOffset = yOffset;
+
+    }
+
+    @Override
+    public DoubleBasicGrid call() throws Exception {
+        return calcAspect();
+    }
+
+    private DoubleBasicGrid calcAspect() throws IOException {
+
+        final int nRows = stripeEffectiveRows;
+        final int nCols = slopeDegsGrid.getColumnCount();
+
+        final DoubleBasicGrid realAreaGrid = new DoubleBasicGrid(
+                new byte[nRows][nCols], slopeDegsGrid.getCellSize(), -9999,
+                slopeDegsGrid.getLowerLeftCoord());
+
+        for (int row = 0; row < nRows; row++) {
+            for (int col = 0; col < nCols; col++) {
+
+                realAreaGrid.setValue(col, row, slopeDegsGrid.getNoData());
+
+                final java.awt.Point cell = new java.awt.Point(col, row
+                        + yOffset);
+
+                if (!slopeDegsGrid.isNoData(slopeDegsGrid.getValue(cell))) {
+
+                    final double area = slopeDegsGrid.getCellSize()
+                            * slopeDegsGrid.getCellSize();
+                    final double slopeRad = Math.toRadians(slopeDegsGrid
+                            .getValue(col, row));
+
+                    final double realArea = area / Math.cos(slopeRad);
+
+                    if (!Double.isInfinite(realArea)) {
+                        realAreaGrid.setValue(col, row, realArea);
+                    } else {
+                        realAreaGrid.setValue(col, row,
+                                slopeDegsGrid.getNoData());
+                    }
+                    // hillshadeGrid.setValue(col, row,
+                    // Math.toDegrees(hillshade));
+
+                }
+            }
+        }
+
+        return realAreaGrid;
+
+    }
+
+    private final int stripeEffectiveRows;
+    private final DoubleBasicGrid slopeDegsGrid;
+
+    private final int yOffset;
+
+}


Property changes on: 
plug-ins/OpenKLEM/OpenKLEMCore/trunk/src/com/geomaticaeambiente/openjump/klem/realArea/RealAreaStripe.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