### Build and Install Locally Source: https://github.com/locationtech/proj4j/blob/master/README.md Execute a clean build and local installation of the project using Maven. ```bash mvn clean install ``` -------------------------------- ### Unit Conversion Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to perform unit conversions using predefined units. ```java Unit meters = Unit.METRE; Unit feet = Unit.FOOT; double metersValue = 100.0; double feetValue = feet.to(meters).convert(metersValue); // feetValue now holds the equivalent in feet ``` -------------------------------- ### CoordinateReferenceSystem Constructor Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Demonstrates direct construction of a CoordinateReferenceSystem. Typically, CRSFactory is used for creation. ```java Datum datum = Datum.WGS84; Projection projection = new LongLatProjection(); projection.setEllipsoid(Ellipsoid.WGS84); CoordinateReferenceSystem crs = new CoordinateReferenceSystem("WGS84", null, datum, projection); ``` -------------------------------- ### Coordinate Transformation Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Demonstrates a complete transformation from one coordinate system to another using Proj4j. ```java CoordinateReferenceSystem crs = CRSFactory.fromWKT("..."); CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CoordinateTransform transform = ctf.createTransform(crs, crs); ProjCoordinate p = new ProjCoordinate(x, y); transform.transform(p, p); // p now contains transformed coordinates ``` -------------------------------- ### Navigating Proj4j Documentation Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DELIVERY_SUMMARY.md This example illustrates the recommended reading path for new users and API reference users. It shows how to navigate from the README to specific API reference files. ```text README.md ↓ OVERVIEW.md (5-10 min read) ↓ INDEX.md (locate your class) ↓ api-reference/ClassName.md (detailed reference) ``` -------------------------------- ### Publish Snapshot to Local Repository Source: https://github.com/locationtech/proj4j/blob/master/HOWTORELEASE.txt Build and install a snapshot version of the project to your local Maven repository. Use the '-Pcentral' profile and skip tests. ```bash mvn -Pcentral -Dmaven.test.skip=true install ``` -------------------------------- ### Enumerate Available Projections Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Registry.md Provides an example of how to list all available projections registered in the system and print their names. ```java // List all available projections List projections = registry.getProjections(); System.out.println("Available projections: " + projections.size()); for (Projection proj : projections) { System.out.println(" " + proj.getName()); } ``` -------------------------------- ### Create Geographic CRS from Projected CRS (Example) Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Illustrates creating a geographic CRS from a projected CRS (UTM) that shares the same datum. This setup is useful for transforming coordinates between UTM and geographic degrees without altering the underlying datum. ```java CoordinateReferenceSystem utm = factory.createFromName("EPSG:25833"); CoordinateReferenceSystem geographic = utm.createGeographic(); // Both use the same datum but different projections // Allows transforming from UTM to degrees without datum conversion ``` -------------------------------- ### Unit Constructor Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Unit.md Creates a new unit with the specified properties: name, plural name, abbreviation, and conversion factor to the base unit. ```Java Unit customUnit = new Unit("fathom", "fathoms", "fath", 1.8288); ``` -------------------------------- ### Unit toString Method Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Unit.md Returns the plural name of the unit as a string. ```Java System.out.println(Units.METRES.toString()); // "metres" ``` -------------------------------- ### Create CoordinateTransformFactory Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateTransformFactory.md Instantiates a new coordinate transform factory. No specific setup is required. ```java CoordinateTransformFactory factory = new CoordinateTransformFactory(); ``` -------------------------------- ### CoordinateReferenceSystem Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Documentation for the CoordinateReferenceSystem class, including its constructor, instance methods, component overview, and usage examples. ```APIDOC ## CoordinateReferenceSystem ### Description Represents a Coordinate Reference System (CRS). ### Constant - CS_GEO constant documented. ### Constructor - Constructor with parameter table. ### Methods - 6 instance methods documented. - Method signatures and parameter tables. ### Component Overview - Table detailing the components of a CRS. ### Usage Examples - 3 complete examples demonstrating usage. ### Related Classes - Reference to related classes. ``` -------------------------------- ### ProjCoordinate Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Documentation for the ProjCoordinate class, detailing its fields, constructors, instance methods, and a complete transformation example. ```APIDOC ## ProjCoordinate ### Description Represents a 3D coordinate point (x, y, z). ### Fields - 3 public fields: x, y, z. - Field descriptions provided. ### Constructors - 4 constructors documented. ### Methods - 11 instance methods documented. - Includes tolerance-based comparison and validation methods. - String formatting methods (3 variants). ### Example - Complete transformation example provided. ### Usage Notes - Usage notes included. ``` -------------------------------- ### Datum Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Documentation for the Datum class, including its constants, constructors, instance methods, transformation details, and usage examples. ```APIDOC ## Datum ### Description Represents a geodetic datum. ### Constants - 4 transform type constants documented. - 10 predefined datum constants. ### Constructors - 3 constructors documented with parameter tables. ### Methods - 8 instance methods documented. ### Transformation Details - Explanation of transformation details for 3 types. ### Usage Examples - 3 complete examples. - Includes custom datum creation and registry access patterns. ### Related Classes - Reference to related classes. ``` -------------------------------- ### Unit Conversion Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/types.md Demonstrates converting a distance value between different units using the Unit class and the Units.convert method. ```java Unit meters = Units.METRES; Unit feet = Units.FEET; double metersVal = 1000.0; double feetVal = Units.convert(metersVal, meters, feet); // ~3280.84 ``` -------------------------------- ### Unit Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Documentation for the Unit class, detailing its fields, constructor, public methods, predefined units, and usage examples. ```APIDOC ## Unit ### Description Represents a unit of measurement. ### Fields - 4 public fields documented. ### Constructor - Constructor documented. ### Methods - 7 public methods documented. ### Predefined Units - Catalog of 20+ predefined units. ### Helper Class Methods - Methods from the Units helper class. ### Usage Examples - 5 complete examples. ### Reference Table - Unit properties reference table. ``` -------------------------------- ### Ellipsoid Usage Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/types.md Shows how to access predefined ellipsoids like WGS84 and GRS80, and check for equality between two ellipsoid instances. ```java Ellipsoid wgs84 = Ellipsoid.WGS84; double radius = wgs84.equatorRadius; // 6378137.0 meters Ellipsoid grs80 = Ellipsoid.GRS80; boolean same = wgs84.isEqual(grs80); // true (nearly identical) ``` -------------------------------- ### Get Target CRS from CoordinateTransform Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateTransform.md Retrieves the target CoordinateReferenceSystem for this transformation. Useful for verifying transformation setup. ```java CoordinateReferenceSystem target = transform.getTargetCRS(); // target is utm33 ``` -------------------------------- ### Get Source CRS from CoordinateTransform Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateTransform.md Retrieves the source CoordinateReferenceSystem used by this transformation. Useful for verifying transformation setup. ```java CoordinateTransformFactory ctFactory = new CoordinateTransformFactory(); CoordinateReferenceSystem wgs84 = factory.createFromName("EPSG:4326"); CoordinateReferenceSystem utm33 = factory.createFromName("EPSG:25833"); CoordinateTransform transform = ctFactory.createTransform(wgs84, utm33); CoordinateReferenceSystem source = transform.getSourceCRS(); // source is wgs84 ``` -------------------------------- ### Creating a Coordinate Reference System with Geostationary Satellite CRS (Different Parameters) Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a geostationary satellite CRS with different parameters. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=geos +h=35785831 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs"); ``` -------------------------------- ### getName Method Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Gets the name of this coordinate reference system. ```APIDOC ## getName Method ### Description Gets the name of this coordinate reference system. ### Method `public String getName()` ### Returns `String` - The name of this CRS. ### Request Example ```java CRSFactory factory = new CRSFactory(); CoordinateReferenceSystem crs = factory.createFromName("EPSG:4326"); String name = crs.getName(); // "EPSG:4326" or derived name ``` ``` -------------------------------- ### getTargetCRS Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateTransform.md Gets the target coordinate reference system for this transformation. ```APIDOC ## getTargetCRS ### Description Gets the target coordinate reference system for this transformation. ### Method ```java CoordinateReferenceSystem getTargetCRS() ``` ### Returns `CoordinateReferenceSystem` - The target CRS. ``` -------------------------------- ### Registry Initialization Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Demonstrates the process of initializing the Proj4j registry with predefined data. ```java Registry registry = Registry.getRegistry(); registry.register(Datum.WGS84); registry.register(Ellipsoid.WGS84); registry.register(Unit.METRE); ``` -------------------------------- ### getSourceCRS Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateTransform.md Gets the source coordinate reference system for this transformation. ```APIDOC ## getSourceCRS ### Description Gets the source coordinate reference system for this transformation. ### Method ```java CoordinateReferenceSystem getSourceCRS() ``` ### Returns `CoordinateReferenceSystem` - The source CRS. ``` -------------------------------- ### Creating a Coordinate Reference System with Projected Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a projected CRS. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=utm +zone=11 +datum=WGS84 +units=m +no_defs"); ``` -------------------------------- ### getDatum Method Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Gets the geodetic datum of this coordinate reference system. ```APIDOC ## getDatum Method ### Description Gets the geodetic datum of this coordinate reference system. ### Method `public Datum getDatum()` ### Returns `Datum` - The datum; defines the transformation parameters between this CRS and WGS84. ### Request Example ```java CoordinateReferenceSystem crs = factory.createFromName("EPSG:4269"); // NAD83 Datum datum = crs.getDatum(); String datumCode = datum.getCode(); // "NAD83" ``` ``` -------------------------------- ### getParameterString Method Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Gets the PROJ.4 projection parameters as a single space-separated string. ```APIDOC ## getParameterString Method ### Description Gets the PROJ.4 projection parameters as a single space-separated string. ### Method `public String getParameterString()` ### Returns `String` - A concatenated PROJ.4 parameter string; empty string if no parameters are available. ### Request Example ```java CoordinateReferenceSystem crs = factory.createFromName("EPSG:25833"); String paramStr = crs.getParameterString(); // "+proj=utm +zone=33 +ellps=GRS80 ..." ``` ``` -------------------------------- ### Creating a Coordinate Reference System with Custom Parameters Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with custom PROJ.4 parameters. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"); ``` -------------------------------- ### getProjection Method Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Gets the map projection used by this coordinate reference system. ```APIDOC ## getProjection Method ### Description Gets the map projection used by this coordinate reference system. ### Method `public Projection getProjection()` ### Returns `Projection` - The projection; may be `null` for geographic coordinate systems. ### Request Example ```java CoordinateReferenceSystem utm = factory.createFromName("EPSG:25833"); Projection proj = utm.getProjection(); String projName = proj.getName(); // "utm" CoordinateReferenceSystem wgs84 = factory.createFromName("EPSG:4326"); Projection geoProj = wgs84.getProjection(); // LongLatProjection ``` ``` -------------------------------- ### Creating a Coordinate Reference System with Geostationary Satellite CRS (Different Units) Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a geostationary satellite CRS with different units. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=geos +h=42164000 +lon_0=-105 +x_0=0 +y_0=0 +ellps=GRS80 +units=km +no_defs"); ``` -------------------------------- ### Creating a Coordinate Reference System with Geostationary Satellite CRS (No Definitions) Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a geostationary satellite CRS without specific definitions. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=geos +h=42164000 +lon_0=-105 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"); ``` -------------------------------- ### getRegistry Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CRSFactory.md Gets the Registry used by this factory for looking up projections, datums, and ellipsoids. ```APIDOC ## getRegistry ### Description Gets the `Registry` used by this factory for looking up projections, datums, and ellipsoids. ### Method `public Registry getRegistry()` ### Returns `Registry` — The Registry instance. ### Example ```java CRSFactory crsFactory = new CRSFactory(); Registry registry = crsFactory.getRegistry(); Datum datum = registry.getDatum("WGS84"); Ellipsoid ellipsoid = registry.getEllipsoid("WGS84"); ``` ``` -------------------------------- ### Fetch Project History Source: https://github.com/locationtech/proj4j/blob/master/CONTRIBUTING.md To view the pre-LocationTech history of the project, clone the repository and then fetch the replacement references using this command. ```bash git fetch origin refs/replace/*:refs/replace/* ``` -------------------------------- ### getParameters Method Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Gets the array of PROJ.4 projection parameters that defined this coordinate reference system. ```APIDOC ## getParameters Method ### Description Gets the array of PROJ.4 projection parameters that defined this coordinate reference system. ### Method `public String[] getParameters()` ### Returns `String[]` - The parameter array, or `null` if this CRS was not created from parameters. ### Request Example ```java CoordinateReferenceSystem crs = factory.createFromParameters("MyProj", "+proj=utm +zone=33 +datum=WGS84"); String[] params = crs.getParameters(); // ["+proj=utm", "+zone=33", "+datum=WGS84"] ``` ``` -------------------------------- ### Creating a Coordinate Reference System with Geostationary Satellite Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS for geostationary satellite imagery. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=geos +h=42164000 +lon_0=-105 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Creating a Coordinate Reference System with Geographic Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a geographic CRS. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs"); ``` -------------------------------- ### Get String Representation of CRS Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Returns a string representation of the coordinate reference system, typically its name. ```java public String toString() { // Implementation details omitted return null; } ``` -------------------------------- ### Creating a Coordinate Reference System with Geostationary Satellite CRS (Different Ellipsoid) Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a geostationary satellite CRS with a different ellipsoid. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=geos +h=42164000 +lon_0=-105 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs"); ``` -------------------------------- ### Get Datum Name Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Datum.md Retrieves the full, human-readable name of the Datum. This provides a more descriptive identifier than the code. ```java public String getName() ``` ```java String name = Datum.NAD83.getName(); // "North_American_Datum_1983" ``` -------------------------------- ### Creating a Coordinate Reference System with Geocentric CRS Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a geocentric coordinate reference system. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=geocent +ellps=WGS84 +datum=WGS84 +no_defs"); ``` -------------------------------- ### CoordinateTransformFactory Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Documentation for the CoordinateTransformFactory class, covering its constructor, main method, transformation behavior, and usage examples. ```APIDOC ## CoordinateTransformFactory ### Description Factory for creating CoordinateTransform instances. ### Constructor - Single constructor documented. ### Main Method - `createTransform` method documented. - Explanation of transformation behavior. ### Diagrams - Transformation pipeline diagram included. ### Usage Examples - 7 usage examples. - Includes batch processing and reverse transform patterns. ### Related Classes - Reference to related classes. ### Implementation Notes - Notes on implementation details, performance, and thread safety. ``` -------------------------------- ### Create and Use Custom Datum Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Registry.md Demonstrates how to create a custom Datum instance and use it directly in the creation of a CoordinateReferenceSystem object. ```java Datum customDatum = new Datum("CUSTOM", 100, 200, 300, Ellipsoid.WGS84, "My Custom Datum"); // Use directly in CRS creation CoordinateReferenceSystem crs = new CoordinateReferenceSystem( "CustomCRS", null, customDatum, projection); ``` -------------------------------- ### Maven Settings Configuration Source: https://github.com/locationtech/proj4j/blob/master/HOWTORELEASE.txt Configure your ~/.m2/settings.xml file with server credentials for Sonatype and central repositories. Ensure your username and password are correctly set for each server ID. ```xml sonatype_snapshots ... ... sonatype_releases ... ... ossrh ... ... central ... ... ``` -------------------------------- ### Creating a Coordinate Reference System with Bonne Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with a Bonne projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=bonne +lat_1=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Access Registry and Inspect Components Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Registry.md Demonstrates how to obtain the Registry instance from CRSFactory and inspect available datums, ellipsoids, and projections by their codes. ```java CRSFactory crsFactory = new CRSFactory(); Registry registry = crsFactory.getRegistry(); // Inspect available components Datum wgs84 = registry.getDatum("WGS84"); Ellipsoid ellipsoid = registry.getEllipsoid("WGS84"); Projection merc = registry.getProjection("merc"); ``` -------------------------------- ### Format Value with Abbreviation Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Unit.md Formats a double value into a string, appending the unit's abbreviation. ```Java String formatted = Units.METRES.format(1234.5); // "1234.5 m" ``` -------------------------------- ### Creating a Coordinate Reference System with Compound CRS Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a compound CRS from multiple CRSs. ```java CoordinateReferenceSystem geographic = CRSFactory.getAuthorityFactory(null).createCoordinateReferenceSystem("EPSG:4326"); CoordinateReferenceSystem projected = CRSFactory.getAuthorityFactory(null).createCoordinateReferenceSystem("EPSG:32632"); CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CoordinateReferenceSystem compound = ctf.createCompoundCoordinateReferenceSystem(geographic, projected); ``` -------------------------------- ### Get Detailed String Representation Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/ProjCoordinate.md Returns a detailed string representation of the ProjCoordinate in the format 'ProjCoordinate[X Y Z]'. ```java public String toString() ``` ```java ProjCoordinate coord = new ProjCoordinate(10.5, 50.3, 1500.0); String str = coord.toString(); // "ProjCoordinate[10.5 50.3 1500.0]" ``` -------------------------------- ### Create and Inspect Multiple Coordinate Reference Systems Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Demonstrates creating multiple CoordinateReferenceSystem instances using a CRSFactory and inspecting their properties like geographic status, datum, and projection. ```java CRSFactory factory = new CRSFactory(); // Create multiple coordinate systems CoordinateReferenceSystem wgs84 = factory.createFromName("EPSG:4326"); CoordinateReferenceSystem utm33 = factory.createFromName("EPSG:25833"); CoordinateReferenceSystem mercator = factory.createFromName("EPSG:3857"); // Inspect their properties System.out.println("WGS84 is geographic: " + wgs84.isGeographic()); System.out.println("UTM33 datum: " + utm33.getDatum().getCode()); System.out.println("Mercator projection: " + mercator.getProjection().getName()); ``` -------------------------------- ### Get CoordinateReferenceSystem Name Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Retrieves the name of a Coordinate Reference System. The name can be an EPSG code or a derived name. ```java CRSFactory factory = new CRSFactory(); CoordinateReferenceSystem crs = factory.createFromName("EPSG:4326"); String name = crs.getName(); // "EPSG:4326" or derived name ``` -------------------------------- ### Creating a Coordinate Reference System with Mollweide Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS with a Mollweide projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Publish Snapshot to Sonatype Source: https://github.com/locationtech/proj4j/blob/master/HOWTORELEASE.txt Deploy a snapshot version to the Sonatype repository. This command uses the '-Pcentral' profile and skips tests. ```bash mvn -Pcentral -Dmaven.test.skip=true deploy ``` -------------------------------- ### Creating a Coordinate Reference System with Kachru Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with a Kachru projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=kachru +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Creating a Coordinate Reference System with Vertical Datum Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS that includes a vertical datum. ```java CoordinateReferenceSystem geographic = CRSFactory.getAuthorityFactory(null).createCoordinateReferenceSystem("EPSG:4326"); CoordinateReferenceSystem vertical = CRSFactory.getAuthorityFactory(null).createCoordinateReferenceSystem("EPSG:5773"); CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CoordinateReferenceSystem compound = ctf.createCompoundCoordinateReferenceSystem(geographic, vertical); ``` -------------------------------- ### Parse String to Double Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Unit.md Parses a string representation of a number into a double value within the context of the unit. ```Java Unit meters = Units.METRES; double value = meters.parse("123.45"); ``` -------------------------------- ### Creating a Coordinate Reference System with Sphere Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS with a Sphere projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=sphere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Convert from Base Unit Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Unit.md Converts a value from the base unit (meters or degrees) to the unit's representation. ```Java Unit feet = Units.FEET; double footValue = feet.fromBase(30.48); // 100.0 feet ``` -------------------------------- ### Get CoordinateReferenceSystem Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Retrieves the map projection used by this Coordinate Reference System. This will be null for geographic coordinate systems. ```java CoordinateReferenceSystem utm = factory.createFromName("EPSG:25833"); Projection proj = utm.getProjection(); String projName = proj.getName(); // "utm" CoordinateReferenceSystem wgs84 = factory.createFromName("EPSG:4326"); Projection geoProj = wgs84.getProjection(); // LongLatProjection ``` -------------------------------- ### Creating a Coordinate Reference System with Eckert VI Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with an Eckert VI projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Creating a Coordinate Reference System with Eckert IV Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS with an Eckert IV projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### CRSFactory Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Documentation for the CRSFactory class, including its constructor, public methods, parameter tables, return types, and usage examples. ```APIDOC ## CRSFactory ### Description Provides functionality for creating and managing Coordinate Reference Systems (CRS). ### Constructor - Single constructor documented with parameter table. ### Methods - 6 public methods with full signatures. - Parameter tables for each method. - Return type documentation. ### Usage Examples - 6 different patterns demonstrating how to use CRSFactory. ### Supported Authorities - List of supported authorities for CRS creation. ### Notes - Notes on thread safety. ``` -------------------------------- ### Creating a Coordinate Reference System with Lagrange Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS with a Lagrange projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=lagrng +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Format Coordinate Pair with Abbreviation Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Unit.md Formats a coordinate pair (X/Y) into a string, appending the unit's abbreviation. ```Java String coord = Units.METRES.format(500000, 5500000, true); // "500000/5500000 m" ``` -------------------------------- ### Creating a Coordinate Reference System with Hammer Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS with a Hammer projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=hammer +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Get CoordinateReferenceSystem Parameter String Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Retrieves the PROJ.4 parameters as a single, space-separated string. Returns an empty string if no parameters are available. ```java CoordinateReferenceSystem crs = factory.createFromName("EPSG:25833"); String paramStr = crs.getParameterString(); // "+proj=utm +zone=33 +ellps=GRS80 ..." ``` -------------------------------- ### Creating a Coordinate Reference System with Authority Factory Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Demonstrates using an authority factory to create a CRS. ```java AuthorityFactory factory = CRSFactory.getAuthorityFactory(null); CoordinateReferenceSystem crs = factory.createCoordinateReferenceSystem("EPSG:32632"); ``` -------------------------------- ### Format Value with Optional Abbreviation Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Unit.md Formats a double value into a string, with an option to include or exclude the unit's abbreviation. ```Java String withAbbr = Units.METRES.format(1234.5, true); // "1234.5 m" String withoutAbbr = Units.METRES.format(1234.5, false); // "1234.5" ``` -------------------------------- ### Creating a Coordinate Reference System with Wagner V Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS with a Wagner V projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=wag5 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Creating a Coordinate Reference System from WKT Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS object from a Well-Known Text (WKT) string. ```java String wkt = "PROJCS[\"UTM Zone 10, Northern Hemisphere\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]..."; CoordinateReferenceSystem crs = CRSFactory.fromWKT(wkt); ``` -------------------------------- ### Convert to Base Unit Example Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Unit.md Converts a value from the unit's representation to the base unit (meters for distance, degrees for angles). ```Java Unit feet = Units.FEET; double meters = feet.toBase(100.0); // 30.48 meters ``` -------------------------------- ### Creating a Coordinate Reference System from EPSG Code Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Demonstrates how to create a CRS object using its EPSG code. ```java CoordinateReferenceSystem crs = CRSFactory.getAuthorityFactory(null).createCoordinateReferenceSystem("EPSG:4326"); ``` -------------------------------- ### Creating a Coordinate Reference System with Cassini Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS with a Cassini projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Get String Representation of Datum Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Datum.md Returns a formatted string representing the datum, typically in the format '[Datum-NAME]'. Useful for logging or display purposes. ```java public String toString() ``` -------------------------------- ### Creating a Coordinate Reference System with Cubic Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with a Cubic projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=cubic +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Get Datum Ellipsoid Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Datum.md Retrieves the reference Ellipsoid object associated with this Datum. This object contains parameters like the equator radius and flattening. ```java public Ellipsoid getEllipsoid() ``` ```java Ellipsoid ellipsoid = Datum.WGS84.getEllipsoid(); double radius = ellipsoid.equatorRadius; // 6378137.0 ``` -------------------------------- ### Creating a Coordinate Reference System with Axis Order Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS specifying the axis order. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=longlat +axis=enu +ellps=WGS84 +datum=WGS84 +no_defs"); ``` -------------------------------- ### Get Datum Code Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Datum.md Retrieves the short, unique code identifier for a Datum object. This is useful for referencing the datum in configurations or data files. ```java public String getCode() ``` ```java Datum datum = Datum.WGS84; String code = datum.getCode(); // "WGS84" ``` -------------------------------- ### Get CoordinateReferenceSystem Datum Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Retrieves the geodetic datum associated with a Coordinate Reference System. The datum defines transformation parameters relative to WGS84. ```java CoordinateReferenceSystem crs = factory.createFromName("EPSG:4269"); // NAD83 Datum datum = crs.getDatum(); String datumCode = datum.getCode(); // "NAD83" ``` -------------------------------- ### Creating a Coordinate Reference System with Azimuthal Equidistant Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with an Azimuthal Equidistant projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=aeqd +lat_0=40 +lon_0=-105 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Creating a Coordinate Reference System with Mercator Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Shows how to create a CRS with a Mercator projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=merc +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Get CoordinateReferenceSystem Parameters Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateReferenceSystem.md Retrieves the PROJ.4 parameters used to define a Coordinate Reference System. Returns null if the CRS was not created from parameters. ```java CoordinateReferenceSystem crs = factory.createFromParameters("MyProj", "+proj=utm +zone=33 +datum=WGS84"); String[] params = crs.getParameters(); // ["+proj=utm", "+zone=33", "+datum=WGS84"] ``` -------------------------------- ### Projection Interface Key Methods Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/types.md Outlines the essential methods provided by the Projection interface for performing forward and inverse coordinate transformations. These methods are fundamental for converting coordinates between geographic and projected systems. ```java public ProjCoordinate project(ProjCoordinate src, ProjCoordinate dst) public ProjCoordinate projectRadians(ProjCoordinate src, ProjCoordinate dst) public ProjCoordinate inverseProject(ProjCoordinate src, ProjCoordinate dst) public ProjCoordinate inverseProjectRadians(ProjCoordinate src, ProjCoordinate dst) public boolean isGeographic() public String getName() ``` -------------------------------- ### Datum Constants and Transformations Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/types.md Demonstrates accessing predefined Datum constants and their associated transformation data to WGS84. Useful for initializing coordinate reference systems. ```java Datum wgs84 = Datum.WGS84; String code = wgs84.getCode(); // "WGS84" Datum nad83 = Datum.NAD83; double[] transform = nad83.getTransformToWGS84(); // [0, 0, 0] for NAD83 (uses grid shifts) int transformType = nad83.getTransformType(); // TYPE_GRIDSHIFT ``` -------------------------------- ### Get Registry Instance Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CRSFactory.md Retrieves the Registry used by the CRSFactory for looking up projections, datums, and ellipsoids. This is useful for accessing specific datum or ellipsoid information. ```java CRSFactory crsFactory = new CRSFactory(); Registry registry = crsFactory.getRegistry(); Datum datum = registry.getDatum("WGS84"); Ellipsoid ellipsoid = registry.getEllipsoid("WGS84"); ``` -------------------------------- ### Creating a Coordinate Reference System with Geocentric Datum Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with a geocentric datum. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=geocent +ellps=GRS80 +datum=NAD83 +no_defs"); ``` -------------------------------- ### Creating a Coordinate Reference System with Lambert Conformal Conic Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with a Lambert Conformal Conic projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-98 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Get All Available Projections Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Registry.md Retrieve a list containing all Projection objects currently available in the registry. This can be used to iterate through and inspect available projection types. ```java Registry registry = factory.getRegistry(); List allProjections = registry.getProjections(); for (Projection proj : allProjections) { System.out.println(proj.getName()); } ``` -------------------------------- ### Get Datum Transformation Type Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Datum.md Returns an integer code representing the type of datum transformation used. This helps in determining the method or accuracy of coordinate transformations. ```java public int getTransformType() ``` ```java if (Datum.NAD27.getTransformType() == Datum.TYPE_GRIDSHIFT) { // Use grid shift files for transformation } ``` -------------------------------- ### Creating a Coordinate Reference System with Sinusoidal Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with a Sinusoidal projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Retrieve Datum by Code Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/Registry.md Get a specific Datum object from the registry using its unique code string. Returns null if no datum matches the provided code. ```java Registry registry = factory.getRegistry(); Datum wgs84 = registry.getDatum("WGS84"); Datum nad83 = registry.getDatum("NAD83"); Datum unknown = registry.getDatum("UNKNOWN"); // null ``` -------------------------------- ### Creating a Coordinate Reference System with Wagner VII Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with a Wagner VII projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=wag7 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Get Compact String Representation Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/ProjCoordinate.md Returns a compact string representation of the ProjCoordinate. The Z ordinate is omitted if it is NaN. Numeric values are formatted with up to 15 decimal places. ```java public String toShortString() ``` ```java ProjCoordinate coord2d = new ProjCoordinate(10.0, 50.0); String short2d = coord2d.toShortString(); // "[10, 50]" ProjCoordinate coord3d = new ProjCoordinate(10.0, 50.0, 1500.0); String short3d = coord3d.toShortString(); // "[10, 50, 1500]" ``` -------------------------------- ### Proj4j Documentation File Organization Paths Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DELIVERY_SUMMARY.md Demonstrates different reading paths through the proj4j documentation based on user needs, such as new developers, API reference users, error handling, or type reference. ```text Reading Path 1: New Developer README.md → OVERVIEW.md → api-reference/CRSFactory.md Reading Path 2: API Reference User README.md → INDEX.md → specific api-reference/ docs Reading Path 3: Error Handling README.md → errors.md → OVERVIEW.md Reading Path 4: Type Reference README.md → types.md → api-reference/Datum.md ``` -------------------------------- ### Creating a Coordinate Reference System with Robinson Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with a Robinson projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ``` -------------------------------- ### Transform Single Coordinate (Usage Pattern) Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/api-reference/CoordinateTransform.md A concise example demonstrating the transformation of a single coordinate using a pre-configured CoordinateTransform object. The target ProjCoordinate is updated with the results. ```java // Transform one coordinate ProjCoordinate wgsCoord = new ProjCoordinate(10.0, 50.0); ProjCoordinate utm = new ProjCoordinate(); transform.transform(wgsCoord, utm); ``` -------------------------------- ### Creating a Coordinate Reference System with Wagner IV Projection Source: https://github.com/locationtech/proj4j/blob/master/_autodocs/DOCUMENT_MANIFEST.txt Illustrates creating a CRS with a Wagner IV projection. ```java CoordinateTransformFactory ctf = new CoordinateTransformFactory(); CRSFactory crsFactory = new CRSFactory(ctf); CoordinateReferenceSystem crs = crsFactory.createFromParameters(null, "+proj=wag4 +lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); ```