1 unstable release

0.1.0 Jun 8, 2023

#277 in Geospatial

MIT/Apache

68KB
1.5K SLoC

Proj4wkt

Convert WKT strings to proj4 strings.

Support both WKT1 and WKT2 formats.

This is a companion crate for proj4rs: because of this conversions are limited to projection supported by proj4rs. As more projection will be supported in proj4rs, more conversions will be supported in `proj4wt.

Documentation on doc.rs

Compiling for WASM

Install wasm-pack

wasm-pack build --target web --no-default-features

Or if you have installed cargo-make, use the following command:

cargo make wasm

Running the WASM example

There is a index.html file for testing the WASM module in a navigator.

For security reason you need to run it from a server; you can pop up a server from python with the following command:

python3 -m http.server

The server will automatically serve the index.html file in the current directory.


lib.rs:

WKT CRS parser

Convert WKT CRS to proj string

Support both WKT1 and WKT2 formats.

This is a companion crate for proj4rs because of this conversions are limited to projection supported by proj4rs. As more projection will be supported in proj4rs, more conversions will be supported in proj4wt.

This crate may be built as WASM package

Example:

use proj4wkt::wkt_to_projstring;

const nad83: &str = concat!(
   r#"PROJCS["NAD83 / Massachusetts Mainland",GEOGCS["NAD83","#,
   r#"DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.257222101,"#,
   r#"AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0,"#,
   r#"AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,"#,
   r#"AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4269"]],UNIT["metre",1,"#,
   r#"AUTHORITY["EPSG","9001"]],PROJECTION["Lambert_Conformal_Conic_2SP"],"#,
   r#"PARAMETER["standard_parallel_1",42.68333333333333],"#,
   r#"PARAMETER["standard_parallel_2",41.71666666666667],"#,
   r#"PARAMETER["latitude_of_origin", -41],PARAMETER["central_meridian",-71.5],"#,
   r#"PARAMETER["false_easting",200000],PARAMETER["false_northing",750000],"#,
   r#"AUTHORITY["EPSG","26986"],AXIS["X",EAST],AXIS["Y",NORTH]]"#,
);

let projstr = wkt_to_projstring(nad83).unwrap();
assert_eq!(
    projstr,
    concat!(
        "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667",
        " +lat_0=-41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +units=m +a=6378137",
        " +rf=298.257222101 +towgs84=0,0,0,0,0,0,0",
    )
);

Dependencies

~1.2–4MB
~75K SLoC