From 2c2cf040842e98f51996c909652fa00fa68ff770 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 28 Jan 2021 10:10:58 +0100 Subject: [PATCH] Work on geo to SVG. --- dep/org.argeo.suite.dep.ui.rap/pom.xml | 32 ++++++--- .../src/org/argeo/geo/GeoJsonToSvg.java | 5 -- .../src/org/argeo/geo/GeoToSvg.java | 69 +++++++++++++++++++ 3 files changed, 93 insertions(+), 13 deletions(-) delete mode 100644 environment/org.argeo.geo.ui/src/org/argeo/geo/GeoJsonToSvg.java create mode 100644 environment/org.argeo.geo.ui/src/org/argeo/geo/GeoToSvg.java diff --git a/dep/org.argeo.suite.dep.ui.rap/pom.xml b/dep/org.argeo.suite.dep.ui.rap/pom.xml index ad52013..9fe9e6a 100644 --- a/dep/org.argeo.suite.dep.ui.rap/pom.xml +++ b/dep/org.argeo.suite.dep.ui.rap/pom.xml @@ -1,5 +1,7 @@ - + 4.0.0 org.argeo.suite @@ -49,7 +51,7 @@ org.argeo.suite.ui.rap 2.1.18-SNAPSHOT - + org.argeo.suite @@ -100,7 +102,21 @@ org.argeo.tp.javax javax.xml.bind - + + + + org.argeo.tp.jackson + com.fasterxml.jackson.core.jackson-core + + + org.argeo.tp.jackson + com.fasterxml.jackson.core.jackson-databind + + + org.argeo.tp.jackson + com.fasterxml.jackson.core.jackson-annotations + + org.argeo.tp.apache @@ -148,7 +164,7 @@ org.argeo.tp.apache org.apache.xerces - + org.argeo.tp.apache @@ -186,10 +202,10 @@ - - - - + + + + diff --git a/environment/org.argeo.geo.ui/src/org/argeo/geo/GeoJsonToSvg.java b/environment/org.argeo.geo.ui/src/org/argeo/geo/GeoJsonToSvg.java deleted file mode 100644 index 6a45c0d..0000000 --- a/environment/org.argeo.geo.ui/src/org/argeo/geo/GeoJsonToSvg.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.argeo.geo; - -public class GeoJsonToSvg { - -} diff --git a/environment/org.argeo.geo.ui/src/org/argeo/geo/GeoToSvg.java b/environment/org.argeo.geo.ui/src/org/argeo/geo/GeoToSvg.java new file mode 100644 index 0000000..4d593f2 --- /dev/null +++ b/environment/org.argeo.geo.ui/src/org/argeo/geo/GeoToSvg.java @@ -0,0 +1,69 @@ +package org.argeo.geo; + +import java.io.IOException; +import java.io.InputStream; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** Converts a geographical feature to an SVG. */ +public class GeoToSvg { + public void convertGeoJsonToSvg(Path source, Path target) { + ObjectMapper objectMapper = new ObjectMapper(); + try (InputStream in = Files.newInputStream(source); + Writer out = Files.newBufferedWriter(target, StandardCharsets.UTF_8)) { + JsonNode tree = objectMapper.readTree(in); + JsonNode coord = tree.get("features").get(0).get("geometry").get("coordinates"); + double ratio = 100; + double minX = Double.POSITIVE_INFINITY; + double maxX = Double.NEGATIVE_INFINITY; + double minY = Double.POSITIVE_INFINITY; + double maxY = Double.NEGATIVE_INFINITY; + List shapes = new ArrayList<>(); + for (JsonNode shape : coord) { + StringBuffer sb = new StringBuffer(); + sb.append(" maxY) + maxY = y; + double lng = latlng.get(1).asDouble(); + double x = lng * ratio; + if (x < minX) + minX = x; + if (x > maxX) + maxX = x; + sb.append(y + "," + x + " "); + } + sb.append("\">"); + sb.append("\n"); + shapes.add(sb.toString()); + } + + double width = maxX - minX; + double height = maxY - minY; + out.write("\n"); + for (String shape : shapes) { + out.write(shape); + out.write("\n"); + } + out.write(""); + } catch (IOException e) { + throw new RuntimeException("Cannot convert " + source + " to " + target, e); + } + } + +} -- 2.30.2