Added degrees and radians units supported for distance and buffer functions.

Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/060dfc31
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/060dfc31
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/060dfc31

Branch: refs/heads/MARMOTTA-584
Commit: 060dfc31c8234e7e51621cd55e9ebd444c251c40
Parents: f33f8eb
Author: cuent <[email protected]>
Authored: Sat Aug 15 21:13:39 2015 -0500
Committer: cuent <[email protected]>
Committed: Sat Aug 15 21:13:39 2015 -0500

----------------------------------------------------------------------
 .../kiwi/sparql/function/geosparql/BufferFunction.java         | 6 ++++++
 .../kiwi/sparql/function/geosparql/DistanceFunction.java       | 6 ++++++
 .../java/org/apache/marmotta/kiwi/vocabulary/FN_GEOSPARQL.java | 5 +++++
 3 files changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/060dfc31/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/BufferFunction.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/BufferFunction.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/BufferFunction.java
index 460ee60..ef3a91e 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/BufferFunction.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/BufferFunction.java
@@ -96,6 +96,12 @@ public class BufferFunction implements NativeFunction {
                 if (args[2].equalsIgnoreCase("'" + 
FN_GEOSPARQL.meter.toString() + "'") || args[2].equalsIgnoreCase("'" + 
FN_GEOSPARQL.metre.toString() + "'")) {
                     return String.format("ST_AsText(ST_Transform(ST_Buffer( 
ST_Transform( %s ,26986), %s),4326))", geom1, args[1]);
                 }
+                if (args[2].equalsIgnoreCase("'" + 
FN_GEOSPARQL.degree.toString() + "'")) {
+                    return String.format("ST_AsText(ST_Buffer(%s, %s))", 
geom1, args[1]);
+                }
+                if (args[2].equalsIgnoreCase("'" + 
FN_GEOSPARQL.radian.toString() + "'")) {
+                    return String.format("ST_AsText(ST_Buffer(%s, 
DEGREES(%s)))", geom1, args[1]);
+                }
             }
         }
         throw new UnsupportedOperationException("Buffer function not supported 
by dialect " + dialect);

http://git-wip-us.apache.org/repos/asf/marmotta/blob/060dfc31/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/DistanceFunction.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/DistanceFunction.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/DistanceFunction.java
index deca6a3..1f61efa 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/DistanceFunction.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/geosparql/DistanceFunction.java
@@ -97,6 +97,12 @@ public class DistanceFunction implements NativeFunction {
                 if (args[2].equalsIgnoreCase("'" + 
FN_GEOSPARQL.meter.toString() + "'") || args[2].equalsIgnoreCase("'" + 
FN_GEOSPARQL.metre.toString() + "'")) {
                     return String.format("ST_Distance( ST_Transform( %s 
,26986), ST_Transform( %s ,26986))", geom1, geom2);
                 }
+                if (args[2].equalsIgnoreCase("'" + 
FN_GEOSPARQL.degree.toString() + "'")) {
+                    return String.format("ST_Distance(%s, %s)", geom1, geom2);
+                }
+                if (args[2].equalsIgnoreCase("'" + 
FN_GEOSPARQL.radian.toString() + "'")) {
+                    return String.format("RADIANS(ST_Distance(%s, %s))", 
geom1, geom2);
+                }
             }
         }
         throw new UnsupportedOperationException("Distance function not 
supported by dialect " + dialect);

http://git-wip-us.apache.org/repos/asf/marmotta/blob/060dfc31/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/vocabulary/FN_GEOSPARQL.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/vocabulary/FN_GEOSPARQL.java
 
b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/vocabulary/FN_GEOSPARQL.java
index e64ae7e..fb0e51d 100644
--- 
a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/vocabulary/FN_GEOSPARQL.java
+++ 
b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/vocabulary/FN_GEOSPARQL.java
@@ -102,8 +102,11 @@ public class FN_GEOSPARQL {
     //measure units:  namespace, URI
     public static final String unitsNAMESPACE = 
"http://www.opengis.net/def/uom/OGC/1.0/";;
     public static final String unitsPREFIX = "units";
+
     public static final URI meter;
     public static final URI metre;
+    public static final URI degree;
+    public static final URI radian;
 
     // Default CRS
     public static final String sridNamespace = 
"http://www.opengis.net/def/crs/";;
@@ -154,6 +157,8 @@ public class FN_GEOSPARQL {
 
         meter = f.createURI(unitsNAMESPACE, "meter");
         metre = f.createURI(unitsNAMESPACE, "metre");
+        degree = f.createURI(unitsNAMESPACE, "degree");
+        radian = f.createURI(unitsNAMESPACE, "radian");
 
         POINT = "POINT";
         MULTIPOLYGON = "MULTIPOLYGON";

Reply via email to