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";
