You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@baremaps.apache.org by bc...@apache.org on 2024/03/02 19:46:29 UTC
(incubator-baremaps) branch main updated: Remove the dependency to proj4j-epsg (#840)
This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
The following commit(s) were added to refs/heads/main by this push:
new bde4e819 Remove the dependency to proj4j-epsg (#840)
bde4e819 is described below
commit bde4e819ef06dbb719eb240b2c0e0a69dd0eb85f
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Sat Mar 2 20:46:26 2024 +0100
Remove the dependency to proj4j-epsg (#840)
---
DISCLAIMER-WIP | 1 -
NOTICE | 4 --
baremaps-cli/src/license/override.properties | 1 -
baremaps-core/pom.xml | 5 --
.../java/org/apache/baremaps/utils/CRSUtils.java | 79 ++++++++++++++++++++++
.../org/apache/baremaps/utils/GeometryUtils.java | 6 +-
.../baremaps/utils/ProjectionTransformer.java | 3 +-
.../EntityDataTypeGeometryBuilderTest.java | 3 +-
pom.xml | 5 --
9 files changed, 84 insertions(+), 23 deletions(-)
diff --git a/DISCLAIMER-WIP b/DISCLAIMER-WIP
index afb57f13..c5755ce1 100644
--- a/DISCLAIMER-WIP
+++ b/DISCLAIMER-WIP
@@ -10,7 +10,6 @@ releases may have incomplete or un-reviewed licensing conditions. What follows i
the project is currently aware of (this list is likely to be incomplete):
* Releases may have incomplete licensing conditions.
- * Releases contain the incompatible proj4j-epsg dependency.
* Releases contain excerpts of the OpenStreetMap data.
* Releases contain excerpts of the Natural Earth data.
* Releases contain excerpts of the GeoNames data.
diff --git a/NOTICE b/NOTICE
index 317477f6..8939d44b 100644
--- a/NOTICE
+++ b/NOTICE
@@ -51,10 +51,6 @@ Open Data Commons Open Database License (ODbL).
Please visit the following URL for the full text of the ODbL license:
https://opendatacommons.org/licenses/odbl/1.0/
-This product includes data from the European Petroleum Survey Group (EPSG).
-Please visit the following URL for the full text of the EPSG Terms of Use:
-https://epsg.org/terms-of-use.html
-
This product includes test data derived from NaturalEarth.
Public Domain.
Please visit the following URL for the full text of the terms of use:
diff --git a/baremaps-cli/src/license/override.properties b/baremaps-cli/src/license/override.properties
index 223f7c37..5f900179 100644
--- a/baremaps-cli/src/license/override.properties
+++ b/baremaps-cli/src/license/override.properties
@@ -121,7 +121,6 @@ org.latencyutils--LatencyUtils--2.0.3=Public Domain, per Creative Commons CC0
org.locationtech.jts--jts-core--1.19.0=Eclipse Distribution License 1.0
org.locationtech.jts.io--jts-io-common--1.19.0=Eclipse Distribution License 1.0
org.locationtech.proj4j--proj4j--1.3.0=Apache License 2.0
-org.locationtech.proj4j--proj4j-epsg--1.3.0=Apache License 2.0; EPSG database distribution license
org.locationtech.spatial4j--spatial4j--0.8=Apache License 2.0
org.ow2.asm--asm--7.2=BSD 3-Clause License
org.ow2.asm--asm-analysis--7.2=BSD 3-Clause License
diff --git a/baremaps-core/pom.xml b/baremaps-core/pom.xml
index 5552c114..accf8138 100644
--- a/baremaps-core/pom.xml
+++ b/baremaps-core/pom.xml
@@ -118,11 +118,6 @@ limitations under the License.
<groupId>org.locationtech.proj4j</groupId>
<artifactId>proj4j</artifactId>
</dependency>
- <!-- TODO: Remove this dependency due to license incompatibility -->
- <dependency>
- <groupId>org.locationtech.proj4j</groupId>
- <artifactId>proj4j-epsg</artifactId>
- </dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/utils/CRSUtils.java b/baremaps-core/src/main/java/org/apache/baremaps/utils/CRSUtils.java
new file mode 100644
index 00000000..b62abc73
--- /dev/null
+++ b/baremaps-core/src/main/java/org/apache/baremaps/utils/CRSUtils.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.baremaps.utils;
+
+import org.locationtech.proj4j.CRSFactory;
+import org.locationtech.proj4j.CoordinateReferenceSystem;
+
+/**
+ * Utility methods for creating coordinate reference systems.
+ * <p>
+ * This method first looks into a minimal set of crs definitions that are hardcoded in the
+ * application. This includes the "WSG 84" and "WGS 84 / Pseudo-Mercator" coordinate reference
+ * systems.
+ * <p>
+ * Then, it tries to create a CRS from the EPSG code that may be stored in the proj4/nad/epsg
+ * resource file of the proj4j-epsg module.
+ * <p>
+ * The proj4j-epsg module is not included in baremaps by default due to licensing issues. It can be
+ * added to the classpath to enable the creation of CRS from EPSG codes.
+ */
+public class CRSUtils {
+
+ private static final CRSFactory CRS_FACTORY = new CRSFactory();
+
+ private static final CoordinateReferenceSystem WGS_84 =
+ CRS_FACTORY.createFromParameters("WGS 84", new String[] {
+ "+proj=longlat",
+ "+datum=WGS84",
+ "+no_defs"
+ });
+
+ private static final CoordinateReferenceSystem WGS_84_PSEUDO_MERCATOR =
+ CRS_FACTORY.createFromParameters("WGS 84 / Pseudo-Mercator", new String[] {
+ "+proj=merc",
+ "+a=6378137",
+ "+b=6378137",
+ "+lat_ts=0.0",
+ "+lon_0=0.0",
+ "+x_0=0.0",
+ "+y_0=0",
+ "+k=1.0",
+ "+units=m",
+ "+nadgrids=@null",
+ "+wktext",
+ "+no_defs"
+ });
+
+ /**
+ * Creates a coordinate reference system from the provided SRID.
+ *
+ * @param srid the SRID
+ * @return the coordinate reference system
+ */
+ public static CoordinateReferenceSystem createFromSrid(int srid) {
+ switch (srid) {
+ case 4326:
+ return WGS_84;
+ case 3857:
+ return WGS_84_PSEUDO_MERCATOR;
+ default:
+ return CRS_FACTORY.createFromName(String.format("EPSG:%s", srid));
+ }
+ }
+}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/utils/GeometryUtils.java b/baremaps-core/src/main/java/org/apache/baremaps/utils/GeometryUtils.java
index 58da9902..96ebd207 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/utils/GeometryUtils.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/utils/GeometryUtils.java
@@ -77,10 +77,8 @@ public class GeometryUtils {
*/
public static CoordinateTransform coordinateTransform(Integer sourceSrid, Integer targetSrid) {
CRSFactory crsFactory = new CRSFactory();
- CoordinateReferenceSystem sourceCRS =
- crsFactory.createFromName(String.format("EPSG:%d", sourceSrid));
- CoordinateReferenceSystem targetCRS =
- crsFactory.createFromName(String.format("EPSG:%d", targetSrid));
+ CoordinateReferenceSystem sourceCRS = CRSUtils.createFromSrid(sourceSrid);
+ CoordinateReferenceSystem targetCRS = CRSUtils.createFromSrid(targetSrid);
CoordinateTransformFactory coordinateTransformFactory = new CoordinateTransformFactory();
return coordinateTransformFactory.createTransform(sourceCRS, targetCRS);
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/utils/ProjectionTransformer.java b/baremaps-core/src/main/java/org/apache/baremaps/utils/ProjectionTransformer.java
index 01d14823..5ca14833 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/utils/ProjectionTransformer.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/utils/ProjectionTransformer.java
@@ -24,7 +24,6 @@ import java.util.stream.Stream;
import org.locationtech.jts.geom.*;
import org.locationtech.jts.geom.impl.CoordinateArraySequence;
import org.locationtech.jts.geom.util.GeometryTransformer;
-import org.locationtech.proj4j.CRSFactory;
import org.locationtech.proj4j.CoordinateTransform;
import org.locationtech.proj4j.ProjCoordinate;
import org.slf4j.Logger;
@@ -56,7 +55,7 @@ public class ProjectionTransformer extends GeometryTransformer {
this.targetSrid = targetSrid;
this.transform = GeometryUtils.coordinateTransform(sourceSrid, targetSrid);
- var targetCRS = new CRSFactory().createFromName(String.format("EPSG:%s", targetSrid));
+ var targetCRS = CRSUtils.createFromSrid(targetSrid);
var lonlatTranform = GeometryUtils.coordinateTransform(4326, sourceSrid);
min = lonlatTranform
.transform(new ProjCoordinate(Math.toDegrees(targetCRS.getProjection().getMinLongitude()),
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/geometry/EntityDataTypeGeometryBuilderTest.java b/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/geometry/EntityDataTypeGeometryBuilderTest.java
index 182775d4..c9fb84f3 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/geometry/EntityDataTypeGeometryBuilderTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/geometry/EntityDataTypeGeometryBuilderTest.java
@@ -34,6 +34,7 @@ import org.apache.baremaps.openstreetmap.model.Node;
import org.apache.baremaps.openstreetmap.model.Relation;
import org.apache.baremaps.openstreetmap.model.Way;
import org.apache.baremaps.openstreetmap.store.MockDataMap;
+import org.apache.baremaps.utils.CRSUtils;
import org.junit.jupiter.api.Test;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
@@ -52,7 +53,7 @@ class EntityDataTypeGeometryBuilderTest {
static final CRSFactory CRS_FACTORY = new CRSFactory();
- static final CoordinateReferenceSystem EPSG_4326 = CRS_FACTORY.createFromName("EPSG:4326");
+ static final CoordinateReferenceSystem EPSG_4326 = CRSUtils.createFromSrid(4326);
static final CoordinateTransform COORDINATE_TRANSFORM = new CoordinateTransform() {
@Override
diff --git a/pom.xml b/pom.xml
index d68733bd..ad5ac0ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -356,11 +356,6 @@ limitations under the License.
<artifactId>proj4j</artifactId>
<version>${version.lib.proj4j}</version>
</dependency>
- <dependency>
- <groupId>org.locationtech.proj4j</groupId>
- <artifactId>proj4j-epsg</artifactId>
- <version>${version.lib.proj4j}</version>
- </dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>