- Use MapServer inside your browser
- Expose WFS 2.0.0 and WMS 1.3.0 services
- Read vector and raster data from GeoPackage
Name | Version | Home page | License | Status |
---|---|---|---|---|
MapServer | 8.2.2 | https://mapserver.org/ | MIT | ✅ |
GDAL/OGR | 3.9.2 | https://gdal.org/ | MIT/X style | ✅ |
PROJ | 9.5.0 | https://proj.org/ | MIT/X style | ✅ |
GEOS | 3.13.0 | https://libgeos.org/ | LGPL-2.1 | ✅ |
SQLite | 3.46.1 | https://www.sqlite.org/ | Public Domain | ✅ |
Libxml2 | 2.13.4 | http://xmlsoft.org/ | MIT | ✅ |
✅ up-to-date | 🚧 needs-update | Last update check 24.09.2024
To download mapserver-wasm
run:
npm install mapserver-wasm
# or
yarn add mapserver-wasm
import MapServer from 'mapserver-wasm'
MapServer().then(async Module => {
const WORKERFS = Module.FS.filesystems['WORKERFS']
const MEMFS = Module.FS.filesystems['MEMFS']
Module.FS.mkdir('/ms')
Module.FS.mkdir('/proj')
try {
WORKERFS.node_ops.mknod = MEMFS.node_ops.mknod // GDAL needs temporary file support
Module.FS.mount(WORKERFS, {
blobs: [
{ name: 'test.gpkg', data: /* gpkg blob */ }
]
}, '/ms')
Module.FS.writeFile('/proj/epsg', crsDefinitions.map(({ crs, definition }) => {
return `<${crs.replace('EPSG:', '')}>${definition}<>`
}).join('\n'), { flags: 'w+' })
// ...
resolve()
} catch (e) {
reject(e)
}
})
Please look into the demo project or into the test folder for further information.
WebAssembly 1.0 | WebAssembly Exception Handling
git clone --recurse-submodules [email protected]:codeart1st/mapserver-wasm.git
git clone [email protected]:codeart1st/mapserver-wasm.git
git submodule update --init --recursive
git pull --recurse-submodules
Start the build container with the following command to ensure the filesystem permissions for newly created files are correct.
docker run -it --rm -v $(pwd):/src -v /etc/passwd:/etc/passwd --user "$(id -u):$(id -g)" --name mapserver-wasm emscripten/emsdk:3.1.67 bash
And execute in a second terminal the following command to install the missing build depedencies as root user.
docker exec --user root mapserver-wasm bash -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tcl automake pkgconf libtool brotli"
After that execute all job script commands described in .github/workflows/ci.yml
inside the interactive build container. It can be helpful to set the GITHUB_WORKSPACE
environment variable beforehand.
GITHUB_WORKSPACE=/src
Tests will be executed with Vitest framework. Test execution needs compilation of mapserver-wasm first.
npm ci && npm test
To avoid debugging in first place it can be helpful to activate file logging for MapServer and GDAL.
MAP
DEBUG 5
CONFIG "MS_ERRORFILE" "error.log"
CONFIG "CPL_LOG" "error.log"
CONFIG "CPL_DEBUG" "ON"
CONFIG "CPL_LOG_ERRORS" "ON"
CONFIG "CPL_TIMESTAMP" "ON"
END