|
@@ -0,0 +1,51 @@
|
|
|
+/**
|
|
|
+ * @author gchq77703 []
|
|
|
+ * @copyright Crown Copyright 2018
|
|
|
+ * @license Apache-2.0
|
|
|
+ */
|
|
|
+
|
|
|
+import Operation from "../Operation";
|
|
|
+import geohash from "ngeohash";
|
|
|
+
|
|
|
+/**
|
|
|
+ * To Geohash operation
|
|
|
+ */
|
|
|
+class ToGeohash extends Operation {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * ToGeohash constructor
|
|
|
+ */
|
|
|
+ constructor() {
|
|
|
+ super();
|
|
|
+
|
|
|
+ this.name = "To Geohash";
|
|
|
+ this.module = "Default";
|
|
|
+ this.description = "Converts Lat / Long coordinates into a Geohash string. For example, <code>37.8324,112.5584</code> becomes <code>ww8p1r4t8</code>.";
|
|
|
+ this.infoURL = "https://wikipedia.org/wiki/Geohash";
|
|
|
+ this.inputType = "string";
|
|
|
+ this.outputType = "string";
|
|
|
+ this.args = [
|
|
|
+ {
|
|
|
+ name: "Precision",
|
|
|
+ type: "number",
|
|
|
+ value: 9
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param {string} input
|
|
|
+ * @param {Object[]} args
|
|
|
+ * @returns {string}
|
|
|
+ */
|
|
|
+ run(input, args) {
|
|
|
+ const [precision] = args;
|
|
|
+
|
|
|
+ input = input.replace(/ /g, "");
|
|
|
+ if (input === "") return "";
|
|
|
+ return geohash.encode(...input.split(",").map(num => parseFloat(num)), precision);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+export default ToGeohash;
|