aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--jniwrap/Makefile.am2
-rw-r--r--jniwrap/README.md18
-rw-r--r--jniwrap/build.xml24
-rw-r--r--jniwrap/org.osgeo.proj/Makefile.am4
-rw-r--r--jniwrap/org.osgeo.proj/module-info.java29
-rw-r--r--jniwrap/org.osgeo.proj/org/Makefile.am (renamed from jniwrap/org/Makefile.am)0
-rw-r--r--jniwrap/org.osgeo.proj/org/proj4/Makefile.am (renamed from jniwrap/org/proj4/Makefile.am)0
-rw-r--r--jniwrap/org.osgeo.proj/org/proj4/PJ.java (renamed from jniwrap/org/proj4/PJ.java)140
-rw-r--r--jniwrap/org.osgeo.proj/org/proj4/PJException.java (renamed from jniwrap/org/proj4/PJException.java)13
-rw-r--r--jniwrap/org.osgeo.proj/org/proj4/package-info.java (renamed from jniwrap/org/proj4/package-info.java)17
-rw-r--r--src/jniproj.c13
12 files changed, 148 insertions, 114 deletions
diff --git a/configure.ac b/configure.ac
index e89961eb..e47e6b46 100644
--- a/configure.ac
+++ b/configure.ac
@@ -144,7 +144,7 @@ AC_SUBST(THREAD_LIB,$THREAD_LIB)
AC_CONFIG_FILES([Makefile cmake/Makefile src/Makefile
test/Makefile test/gie/Makefile test/gigs/Makefile
man/Makefile man/man1/Makefile man/man3/Makefile nad/Makefile
- jniwrap/Makefile jniwrap/org/Makefile jniwrap/org/proj4/Makefile])
+ jniwrap/Makefile jniwrap/org.osgeo.proj/Makefile jniwrap/org.osgeo.proj/org/Makefile jniwrap/org.osgeo.proj/org/proj4/Makefile])
AC_CONFIG_FILES([nad/install], [chmod +x nad/install])
AC_CONFIG_FILES([proj.pc])
diff --git a/jniwrap/Makefile.am b/jniwrap/Makefile.am
index 4a176362..2d33809a 100644
--- a/jniwrap/Makefile.am
+++ b/jniwrap/Makefile.am
@@ -1,6 +1,6 @@
EXTRA_DIST = build.xml README.md
-SUBDIRS = org
+SUBDIRS = org.osgeo.proj
install-data-local:
echo In jniwrap
diff --git a/jniwrap/README.md b/jniwrap/README.md
index 20c2c86c..3cce43c0 100644
--- a/jniwrap/README.md
+++ b/jniwrap/README.md
@@ -1,21 +1,21 @@
-# Proj bridge to Java
+# PROJ bridge to Java
-This is the third release of JNI wrappers for the main Proj functions.
+This is the third release of JNI wrappers for the main PROJ functions.
The first release of JNI wrappers were created by http://www.hydrologis.com.
The second release of JNI wrappers were created by http://www.geoapi.org.
-## What is "Proj bridge to Java"
+## What is "PROJ bridge to Java"
-_Proj bridge to Java_ is a small library of Java classes that wrap a few Proj functions
+_Proj bridge to Java_ is a small library of Java classes that wrap a few PROJ functions
by using the Java Native Interface (JNI). The main Java class is `org.proj4.PJ`.
### Compilation
-To compile the native part, `configure` has to be run in the Proj directory like this:
+To compile the native part, `configure` has to be run in the PROJ directory like this:
CFLAGS=-Iinclude2 ./configure --with-jni=include1
@@ -35,7 +35,7 @@ It applies to Linux, MacOS and Windows (and virtually to every system supporting
### Requirements
-Beyond the ones already put by Proj, you need:
+Beyond the ones already put by PROJ, you need:
* For compilation:
* Java 9+, the Java standard development kit version 9 or above
@@ -70,8 +70,8 @@ Proj.4 license for the second release.
## Usage & a fast example:
-The `proj.jar` is all is needed to implement Proj support in java applications.
-The whole job is done by the Proj library, so there are just a couple of functions that be used.
+The `proj.jar` is all is needed to implement PROJ support in java applications.
+The whole job is done by the PROJ library, so there are just a couple of functions that be used.
The best way is to see everything through an example.
In the following example we create two Coordinate Reference System and transform 3 points.
@@ -103,7 +103,7 @@ Of course, real applications would read them from a file or other data source.
### compile the Main code
-we assume that Proj was compiled with the right flag to support the bridge to Java
+we assume that PROJ was compiled with the right flag to support the bridge to Java
Therefore we have a library called `proj.jar`.
Thus we compile the `Main.java` with the command:
diff --git a/jniwrap/build.xml b/jniwrap/build.xml
index 7e95e676..ddd424bd 100644
--- a/jniwrap/build.xml
+++ b/jniwrap/build.xml
@@ -1,14 +1,14 @@
<?xml version="1.0"?>
-<project name="Proj bridge to Java" default="compile" basedir=".">
+<project name="PROJ bridge to Java" default="compile" basedir=".">
<!-- *******************************************
Set directory paths and versions.
******************************************* -->
- <property name="src-java" value="."/>
- <property name="src-C" value="../src"/>
+ <property name="src" value="."/>
<property name="out" value="out"/>
<property name="classes" value="${out}/classes"/>
<property name="javadoc" value="${out}/apidocs"/>
+ <property name="module" value="org.osgeo.proj"/>
<property name="version" value="5.1"/>
<!-- *******************************************
@@ -18,14 +18,14 @@
<target name="compile">
<mkdir dir="${out}"/>
<mkdir dir="${classes}"/>
- <javac srcdir="${src-java}" destdir="${classes}" encoding="UTF-8" nativeheaderdir="${src-C}"
+ <javac modulesourcepath="${src}" destdir="${classes}" encoding="UTF-8" nativeheaderdir="${src}"
createMissingPackageInfoClass = "false"
includeAntRuntime = "false"
includes = "org/**/*.java"/>
- <jar destfile="${out}/proj.jar" basedir="${classes}" level="9" strict="fail">
+ <jar destfile="${out}/proj.jar" basedir="${classes}/${module}" level="9" strict="fail">
<manifest>
- <attribute name="Implementation-Title" value="Proj bridge to Java"/>
+ <attribute name="Implementation-Title" value="PROJ bridge to Java"/>
<attribute name="Implementation-Version" value="${version}"/>
<attribute name="Implementation-Vendor" value="Proj.4 project"/>
<attribute name="Implementation-URL" value="http://proj4.org/"/>
@@ -37,8 +37,16 @@
Build and create documentation.
********************************************************** -->
<target name="javadoc" depends="compile">
- <javadoc sourcepath="${src-java}" classpath="${classes}" destdir="${javadoc}" encoding="UTF-8"
- noqualifier="all" windowtitle="Proj bridge to Java" author="false"/>
+ <javadoc classpath="${classes}/${module}" destdir="${javadoc}"
+ encoding="UTF-8" noqualifier="all" windowtitle="PROJ bridge to Java" author="false" version="true"
+ link="http://www.geoapi.org/3.0/javadoc/" additionalparam="-html5">
+ <sourcefiles>
+ <fileset dir="${src}/${module}">
+ <include name="org/**/*.java"/>
+ <exclude name="module-info.java"/>
+ </fileset>
+ </sourcefiles>
+ </javadoc>
</target>
<!-- *******************************************
diff --git a/jniwrap/org.osgeo.proj/Makefile.am b/jniwrap/org.osgeo.proj/Makefile.am
new file mode 100644
index 00000000..6c02a743
--- /dev/null
+++ b/jniwrap/org.osgeo.proj/Makefile.am
@@ -0,0 +1,4 @@
+EXTRA_DIST = module-info.java
+
+SUBDIRS = org
+
diff --git a/jniwrap/org.osgeo.proj/module-info.java b/jniwrap/org.osgeo.proj/module-info.java
new file mode 100644
index 00000000..ea8a623a
--- /dev/null
+++ b/jniwrap/org.osgeo.proj/module-info.java
@@ -0,0 +1,29 @@
+/******************************************************************************
+ * Project: PROJ.4
+ * Purpose: Java/JNI wrappers for PROJ API.
+ * Author: Martin Desruisseaux
+ *
+ ******************************************************************************
+ * Copyright (c) 2018, Open Geospatial Consortium, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+module org.osgeo.proj {
+ exports org.proj4;
+}
diff --git a/jniwrap/org/Makefile.am b/jniwrap/org.osgeo.proj/org/Makefile.am
index f07adff1..f07adff1 100644
--- a/jniwrap/org/Makefile.am
+++ b/jniwrap/org.osgeo.proj/org/Makefile.am
diff --git a/jniwrap/org/proj4/Makefile.am b/jniwrap/org.osgeo.proj/org/proj4/Makefile.am
index 665fc39d..665fc39d 100644
--- a/jniwrap/org/proj4/Makefile.am
+++ b/jniwrap/org.osgeo.proj/org/proj4/Makefile.am
diff --git a/jniwrap/org/proj4/PJ.java b/jniwrap/org.osgeo.proj/org/proj4/PJ.java
index 6b387287..de09f86a 100644
--- a/jniwrap/org/proj4/PJ.java
+++ b/jniwrap/org.osgeo.proj/org/proj4/PJ.java
@@ -1,10 +1,10 @@
/******************************************************************************
* Project: PROJ.4
- * Purpose: Java/JNI wrappers for PROJ.4 API.
+ * Purpose: Java/JNI wrappers for PROJ API.
* Author: Martin Desruisseaux
*
******************************************************************************
- * Copyright (c) 2011, Open Geospatial Consortium, Inc.
+ * Copyright (c) 2011-2018, Open Geospatial Consortium, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -23,58 +23,60 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
- *****************************************************************************
- * This file is a copy of a file developed in the GeoAPI "Proj.4 binding"
- * module (http://www.geoapi.org/geoapi-proj4/index.html). If this file is
- * modified, please consider synchronizing the changes with GeoAPI.
+ ******************************************************************************
*/
package org.proj4;
+import java.util.Objects;
+import java.lang.annotation.Native;
+
/**
- * Wraps the <a href="http://proj.osgeo.org/">Proj4</a> {@code PJ} native data structure.
- * Almost every methods defined in this class are native methods delegating the work to the
- * Proj.4 library. This class is the only place where such native methods are defined.
- * <p>
- * In the Proj.4 library, the {@code PJ} structure aggregates in a single place information usually
- * split in many different ISO 19111 interfaces: {@link org.opengis.referencing.datum.Ellipsoid},
+ * Wraps the <a href="http://proj4.org/">PROJ</a> {@code PJ} native data structure.
+ * Almost every methods defined in this class are native methods delegating the work to the PROJ library.
+ * This class is the only place where such native methods are defined.
+ *
+ * <p>In the PROJ library, the {@code PJ} structure aggregates in a single place information usually
+ * splitted in many different ISO 19111 interfaces: {@link org.opengis.referencing.datum.Ellipsoid},
* {@link org.opengis.referencing.datum.Datum}, {@link org.opengis.referencing.datum.PrimeMeridian},
* {@link org.opengis.referencing.cs.CoordinateSystem}, {@link org.opengis.referencing.crs.CoordinateReferenceSystem}
* and their sub-interfaces. The relationship with the GeoAPI methods is indicated in the
- * "See" tags when appropriate.
+ * "See" tags when appropriate.</p>
*
* @author Martin Desruisseaux (Geomatys)
+ * @version 5.1
+ * @since 4.8
*/
public class PJ {
/**
- * The maximal number of dimension accepted by the {@link #transform(PJ, int, double[], int, int)}
- * method. This upper limit is actually somewhat arbitrary. This limit exists mostly as a safety
- * against potential misuse.
+ * The maximal number of dimension accepted by the {@link #transform(PJ, int, double[], int, int)} method.
+ * This upper limit is actually somewhat arbitrary. This limit exists mostly as a safety against potential misuse.
*/
+ @Native
public static final int DIMENSION_MAX = 100;
- // IMPLEMENTATION NOTE: if the value is modified, edit also the native C file.
/**
- * Loads the Proj4 library.
+ * Loads the PROJ library.
*/
static {
System.loadLibrary("proj");
}
/**
- * The pointer to {@code PJ} structure allocated in the C/C++ heap. This value has no
- * meaning in Java code. <strong>Do not modify</strong>, since this value is used by Proj4.
- * Do not rename neither, unless you update accordingly the C code in JNI wrappers.
+ * The pointer to {@code PJ} structure allocated in the C/C++ heap. This value has no meaning in Java code.
+ * <strong>Do not modify</strong>, since this value is used by PROJ. Do not rename neither, unless you update
+ * accordingly the C code in JNI wrappers.
*/
private final long ptr;
/**
- * Creates a new {@code PJ} structure from the given Proj4 definition string.
+ * Creates a new {@code PJ} structure from the given PROJ definition string.
*
- * @param definition The Proj.4 definition string.
- * @throws IllegalArgumentException If the PJ structure can not be created from the given string.
+ * @param definition the PROJ definition string.
+ * @throws IllegalArgumentException if the PJ structure can not be created from the given string.
*/
public PJ(final String definition) throws IllegalArgumentException {
+ Objects.requireNonNull(definition);
ptr = allocatePJ(definition);
if (ptr == 0) {
throw new IllegalArgumentException(definition);
@@ -87,15 +89,12 @@ public class PJ {
* {@linkplain org.opengis.referencing.crs.ProjectedCRS#getBaseCRS() base geographic CRS}
* from a {@linkplain org.opengis.referencing.crs.ProjectedCRS projected CRS}.
*
- * @param crs The CRS (usually projected) from which to derive a new CRS.
- * @param type The type of the new CRS. Currently, only {@link Type#GEOGRAPHIC} is supported.
- * @throws IllegalArgumentException If the PJ structure can not be created.
+ * @param crs the CRS (usually projected) from which to derive a new CRS.
+ * @param type the type of the new CRS. Currently, only {@link Type#GEOGRAPHIC} is supported.
+ * @throws IllegalArgumentException if the PJ structure can not be created.
*/
public PJ(final PJ crs, final Type type) throws IllegalArgumentException {
- if (crs == null) {
- // TODO: Use Objects with JDK 7.
- throw new NullPointerException("The CRS must be non-null.");
- }
+ Objects.requireNonNull(crs, "The CRS must be non-null.");
if (type != Type.GEOGRAPHIC) {
throw new IllegalArgumentException("Can not derive the " + type + " type.");
}
@@ -111,8 +110,8 @@ public class PJ {
* to the {@link #ptr} field. The allocated structure is released by the {@link #finalize()}
* method.
*
- * @param definition The Proj4 definition string.
- * @return A pointer to the PJ native data structure, or 0 if the operation failed.
+ * @param definition the PROJ definition string.
+ * @return a pointer to the PJ native data structure, or 0 if the operation failed.
*/
private static native long allocatePJ(String definition);
@@ -122,39 +121,41 @@ public class PJ {
* the return value <strong>must</strong> be assigned to the {@link #ptr} field.
* The allocated structure is released by the {@link #finalize()} method.
*
- * @param projected The CRS from which to derive the base geographic CRS.
- * @return A pointer to the PJ native data structure, or 0 if the operation failed.
+ * @param projected the CRS from which to derive the base geographic CRS.
+ * @return a pointer to the PJ native data structure, or 0 if the operation failed.
*/
private static native long allocateGeoPJ(PJ projected);
/**
- * Returns the version number of the Proj4 library.
+ * Returns the version number of the PROJ library.
*
- * @return The Proj.4 release string.
+ * @return the PROJ release string.
*/
public static native String getVersion();
/**
- * Returns the Proj4 definition string. This is the string given to the constructor,
+ * Returns the PROJ definition string. This is the string given to the constructor,
* expanded with as much information as possible.
*
- * @return The Proj4 definition string.
+ * @return the PROJ definition string.
*/
public native String getDefinition();
/**
* Returns the Coordinate Reference System type.
*
- * @return The CRS type.
+ * @return the CRS type.
*/
public native Type getType();
/**
* The coordinate reference system (CRS) type returned by {@link PJ#getType()}.
- * In the Proj.4 library, a CRS can only be geographic, geocentric or projected,
+ * In the PROJ library, a CRS can only be geographic, geocentric or projected,
* without distinction between 2D and 3D CRS.
*
* @author Martin Desruisseaux (Geomatys)
+ * @version 5.1
+ * @since 4.8
*/
public static enum Type {
/*
@@ -184,7 +185,7 @@ public class PJ {
/**
* Returns the value stored in the {@code a_orig} PJ field.
*
- * @return The axis length stored in {@code a_orig}.
+ * @return the axis length stored in {@code a_orig}.
*
* @see org.opengis.referencing.datum.Ellipsoid#getSemiMajorAxis()
*/
@@ -193,18 +194,18 @@ public class PJ {
/**
* Returns the value computed from PJ fields by {@code √((a_orig)² × (1 - es_orig))}.
*
- * @return The axis length computed by {@code √((a_orig)² × (1 - es_orig))}.
+ * @return the axis length computed by {@code √((a_orig)² × (1 - es_orig))}.
*
* @see org.opengis.referencing.datum.Ellipsoid#getSemiMinorAxis()
*/
public native double getSemiMinorAxis();
/**
- * Returns the square of the ellipsoid eccentricity (&epsilon;&sup2;). The eccentricity
- * is related to axis length by &epsilon;=√(1-(<var>b</var>/<var>a</var>)&sup2;). The
+ * Returns the square of the ellipsoid eccentricity (ε²). The eccentricity
+ * is related to axis length by ε=√(1-(<var>b</var>/<var>a</var>)²). The
* eccentricity of a sphere is zero.
*
- * @return The eccentricity.
+ * @return the eccentricity.
*
* @see org.opengis.referencing.datum.Ellipsoid#isSphere()
* @see org.opengis.referencing.datum.Ellipsoid#getInverseFlattening()
@@ -213,9 +214,9 @@ public class PJ {
/**
* Returns an array of character indicating the direction of each axis. Directions are
- * characters like {@code 'e'} for East, {@code 'n'} for North and {@code 'u'} for Up.
+ * characters like {@code 'e'} for East, {@code 'n'} for North and {@code 'u'} for Up.
*
- * @return The axis directions.
+ * @return the axis directions.
*
* @see org.opengis.referencing.cs.CoordinateSystemAxis#getDirection()
*/
@@ -224,7 +225,7 @@ public class PJ {
/**
* Longitude of the prime meridian measured from the Greenwich meridian, positive eastward.
*
- * @return The prime meridian longitude, in degrees.
+ * @return the prime meridian longitude, in degrees.
*
* @see org.opengis.referencing.datum.PrimeMeridian#getGreenwichLongitude()
*/
@@ -235,32 +236,30 @@ public class PJ {
*
* @param vertical {@code false} for the conversion factor of horizontal axes,
* or {@code true} for the conversion factor of the vertical axis.
- * @return The conversion factor to metres for the given axis.
+ * @return the conversion factor to metres for the given axis.
*/
public native double getLinearUnitToMetre(boolean vertical);
/**
- * Transforms in-place the coordinates in the given array. The coordinates array shall contain
- * (<var>x</var>,<var>y</var>,<var>z</var>,&hellip;) tuples, where the <var>z</var> and
- * following dimensions are optional. Note that any dimension after the <var>z</var> value
- * are ignored.
- * <p>
- * Input and output units:
- * <p>
+ * Transforms in-place the coordinates in the given array.
+ * The coordinates array shall contain (<var>x</var>,<var>y</var>,<var>z</var>,…) tuples,
+ * where the <var>z</var> and any additional dimensions are optional.
+ * Note that any dimension after the <var>z</var> value are ignored.
+ *
+ * <p>Input and output units:</p>
* <ul>
* <li>Angular units (as in longitude and latitudes) are decimal degrees.</li>
* <li>Linear units are usually metres, but this is actually projection-dependent.</li>
* </ul>
*
- * @param target The target CRS.
- * @param dimension The dimension of each coordinate value. Must be in the [2-{@value #DIMENSION_MAX}] range.
- * @param coordinates The coordinates to transform, as a sequence of
- * (<var>x</var>,<var>y</var>,&lt;<var>z</var>&gt;,&hellip;) tuples.
- * @param offset Offset of the first coordinate in the given array.
- * @param numPts Number of points to transform.
- * @throws NullPointerException If the {@code target} or {@code coordinates} argument is null.
+ * @param target the target CRS.
+ * @param dimension the dimension of each coordinate value. Must be in the [2-{@value #DIMENSION_MAX}] range.
+ * @param coordinates the coordinates to transform, as a sequence of (<var>x</var>,<var>y</var>,&lt;<var>z</var>&gt;,…) tuples.
+ * @param offset offset of the first coordinate in the given array.
+ * @param numPts number of points to transform.
+ * @throws NullPointerException if the {@code target} or {@code coordinates} argument is null.
* @throws IndexOutOfBoundsException if the {@code offset} or {@code numPts} arguments are invalid.
- * @throws PJException If the operation failed for an other reason (provided by Proj4).
+ * @throws PJException if the operation failed for another reason (provided by PROJ).
*
* @see org.opengis.referencing.operation.MathTransform#transform(double[], int, double[], int, int)
*/
@@ -270,24 +269,23 @@ public class PJ {
/**
* Returns a description of the last error that occurred, or {@code null} if none.
*
- * @return The last error that occurred, or {@code null}.
+ * @return the last error that occurred, or {@code null}.
*/
public native String getLastError();
/**
* Returns the string representation of the PJ structure.
*
- * @return The string representation.
+ * @return the string representation.
*/
@Override
public native String toString();
/**
- * Deallocates the native PJ data structure. This method can be invoked only by the garbage
- * collector, and must be invoked exactly once (no more, no less).
- * <strong>NEVER INVOKE THIS METHOD EXPLICITLY, NEVER OVERRIDE</strong>.
+ * Deallocates the native PJ data structure.
+ * This method should be invoked exactly once, only by the garbage collector,
*/
@Override
- @SuppressWarnings("deprecation")
+ @SuppressWarnings({"deprecation", "FinalizeDeclaration"})
protected final native void finalize();
}
diff --git a/jniwrap/org/proj4/PJException.java b/jniwrap/org.osgeo.proj/org/proj4/PJException.java
index 18a58851..4b465e6a 100644
--- a/jniwrap/org/proj4/PJException.java
+++ b/jniwrap/org.osgeo.proj/org/proj4/PJException.java
@@ -1,10 +1,10 @@
/******************************************************************************
* Project: PROJ.4
- * Purpose: Java/JNI wrappers for PROJ.4 API.
+ * Purpose: Java/JNI wrappers for PROJ API.
* Author: Martin Desruisseaux
*
******************************************************************************
- * Copyright (c) 2011, Open Geospatial Consortium, Inc.
+ * Copyright (c) 2011-2018, Open Geospatial Consortium, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -23,10 +23,7 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
- *****************************************************************************
- * This file is a copy of a file developed in the GeoAPI "Proj.4 binding"
- * module (http://www.geoapi.org/geoapi-proj4/index.html). If this file is
- * modified, please consider synchronizing the changes with GeoAPI.
+ ******************************************************************************
*/
package org.proj4;
@@ -35,6 +32,8 @@ package org.proj4;
* Exception thrown when a call to {@link PJ#transform(PJ, int, double[], int, int)} failed.
*
* @author Martin Desruisseaux (Geomatys)
+ * @version 5.1
+ * @since 4.8
*/
public class PJException extends Exception {
/**
@@ -52,7 +51,7 @@ public class PJException extends Exception {
/**
* Constructs a new exception with the given message.
*
- * @param message A message that describe the cause for the failure.
+ * @param message a message that describe the cause for the failure.
*/
public PJException(final String message) {
super(message);
diff --git a/jniwrap/org/proj4/package-info.java b/jniwrap/org.osgeo.proj/org/proj4/package-info.java
index 8a6b75a3..814d2483 100644
--- a/jniwrap/org/proj4/package-info.java
+++ b/jniwrap/org.osgeo.proj/org/proj4/package-info.java
@@ -1,10 +1,10 @@
/******************************************************************************
* Project: PROJ.4
- * Purpose: Java/JNI wrappers for PROJ.4 API.
+ * Purpose: Java/JNI wrappers for PROJ API.
* Author: Martin Desruisseaux
*
******************************************************************************
- * Copyright (c) 2011, Open Geospatial Consortium, Inc.
+ * Copyright (c) 2011-2018, Open Geospatial Consortium, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -23,18 +23,17 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
- *****************************************************************************
- * This file is a copy of a file developed in the GeoAPI "Proj.4 binding"
- * module (http://www.geoapi.org/geoapi-proj4/index.html). If this file is
- * modified, please consider synchronizing the changes with GeoAPI.
+ ******************************************************************************
*/
/**
- * Wrappers for the <a href="http://proj.osgeo.org/">Proj4</a> library. The {@link org.proj4.PJ}
- * class contains only native methods delegating their work to the Proj.4 library.
+ * Wrappers for the <a href="http://proj4.org/">PROJ</a> library.
+ * The {@link org.proj4.PJ} class contains only native methods delegating their work to the PROJ library.
* For higher-level methods making use of those native methods, see for example the
- * <a href="http://www.geoapi.org/geoapi-proj4/index.html">GeoAPI bindings for Proj.4</a>.
+ * <a href="http://www.geoapi.org/geoapi-proj4/index.html">GeoAPI bindings for PROJ</a>.
*
* @author Martin Desruisseaux (Geomatys)
+ * @version 5.1
+ * @since 4.8
*/
package org.proj4;
diff --git a/src/jniproj.c b/src/jniproj.c
index 072fa04c..67aa2478 100644
--- a/src/jniproj.c
+++ b/src/jniproj.c
@@ -1,6 +1,6 @@
/******************************************************************************
* Project: PROJ.4
- * Purpose: Java/JNI wrappers for PROJ.4 API.
+ * Purpose: Java/JNI wrappers for PROJ API.
* Author: Antonello Andrea
* Martin Desruisseaux
*
@@ -32,7 +32,7 @@
* \file jniproj.c
*
* \brief
- * Functions used by the Java Native Interface (JNI) wrappers of Proj.4
+ * Functions used by the Java Native Interface (JNI) wrappers of PROJ.
*
*
* \author Antonello Andrea
@@ -54,9 +54,6 @@
#define PJ_FIELD_NAME "ptr"
#define PJ_FIELD_TYPE "J"
-#define PJ_MAX_DIMENSION 100
-/* The PJ_MAX_DIMENSION value appears also in quoted strings.
- Please perform a search-and-replace if this value is changed. */
/*!
* \brief
@@ -342,7 +339,7 @@ JNIEXPORT jdouble JNICALL Java_org_proj4_PJ_getLinearUnitToMetre
* Converts input values from degrees to radians before coordinate operation, or the output
* values from radians to degrees after the coordinate operation.
*
- * \param pj - The Proj.4 PJ structure.
+ * \param pj - The PROJ.4 PJ structure.
* \param data - The coordinate array to transform.
* \param numPts - Number of points to transform.
* \param dimension - Dimension of points in the coordinate array.
@@ -391,9 +388,9 @@ JNIEXPORT void JNICALL Java_org_proj4_PJ_transform
if (c) (*env)->ThrowNew(env, c, "The target CRS and the coordinates array can not be null.");
return;
}
- if (dimension < 2 || dimension > PJ_MAX_DIMENSION) { /* Arbitrary upper value for catching potential misuse. */
+ if (dimension < 2 || dimension > org_proj4_PJ_DIMENSION_MAX) { /* Arbitrary upper value for catching potential misuse. */
jclass c = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
- if (c) (*env)->ThrowNew(env, c, "Illegal dimension. Must be in the [2-100] range.");
+ if (c) (*env)->ThrowNew(env, c, "Illegal number of dimensions.");
return;
}
if ((offset < 0) || (numPts < 0) || (offset + dimension*numPts) > (*env)->GetArrayLength(env, coordinates)) {