PROJ for WASI
v9.9.0WASIPROJ 9.9.0 for command-line programs under wasmtime, precompiled for wasm32-wasip3, single-threaded as @crossbind/port-proj-wasi.
Install
A PROJ command-line tool
WASI has no JavaScript bindings: the program is a main() that links the library, built into one .wasm and run with wasmtime. This one reads PROJ's database, proj.db, which the build copies to dist/data/proj; the PROJ_DATA variable tells PROJ where it is. It describes a CRS and turns GPS positions into Swiss LV95 grid coordinates, through EPSG's Helmert transformation, which EPSG gives an accuracy of 1 m.
Command-line tools
6 upstream commands ship as npm executables built for wasm32-wasip3. They need wasmtime on PATH and no compiler - see WASI commands.
cct-wasics2cs-wasigeod-wasigie-wasiproj-wasiprojinfo-wasi
What is different on WASI
- There are no JavaScript bindings:
src/nativeprovidesmain(int, char**), and the build is a single.wasm. - Files come from the host through
--dirpreopens;--dir=.gives the program the current directory. crossbind build -p wasi -b releasewrites the program to.crossbind/build/<name>-wasi-wasm32-st-release.wasm.- WASI 0.3's
wasi:cli/exitcarries success or failure only, so any non-zero return frommainreaches the shell as exit code 1. - The build needs wasi-sdk 34 or newer (
WASI_SDK_PATH) or the crossbind Docker image; running needs wasmtime 47 or newer. See WASI.
Other platforms
- PROJ overview: the apps, every platform's setup and the packages.
- PROJ for WebAssembly: browsers, Node.js and edge runtimes.
- PROJ for Android: React Native apps on Android.
- PROJ for iOS: React Native apps on iOS.
Facts on this page come from the port manifests in the repository and from what npm served on beta when the site was built. See the Libraries guide for the full consumer flow.