Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/metwork-framework/mapserverapi
tiny C library to invoke mapserver engine as a library
https://github.com/metwork-framework/mapserverapi
autoreadme c github-actions integration-level-3 library mapserver
Last synced: 2 months ago
JSON representation
tiny C library to invoke mapserver engine as a library
- Host: GitHub
- URL: https://github.com/metwork-framework/mapserverapi
- Owner: metwork-framework
- License: bsd-3-clause
- Created: 2018-10-29T11:34:08.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-01T13:28:20.000Z (about 1 year ago)
- Last Synced: 2024-04-16T01:43:33.840Z (9 months ago)
- Topics: autoreadme, c, github-actions, integration-level-3, library, mapserver
- Language: C
- Homepage:
- Size: 218 KB
- Stars: 2
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# mapserverapi
[//]: # (automatically generated from https://github.com/metwork-framework/github_organization_management/blob/master/common_files/README.md)
**Status (master branch)**
[![GitHub CI](https://github.com/metwork-framework/mapserverapi/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/metwork-framework/mapserverapi/actions?query=workflow%3ACI+branch%3Amaster)
[![Maintenance](https://raw.githubusercontent.com/metwork-framework/resources/master/badges/maintained.svg)](https://github.com/metwork-framework/resources/blob/master/badges/maintained.svg)## What is it ?
This is a tiny C library to invoke [mapserver](http://mapserver.org) engine
as a library (with no daemon or CGI).## Build
### Prerequisites
- mapserver installed
- standard compilation tools (gcc, make...)
- glib2 library and corresponding headers### Building
To build the library you must specify:
- `MAPSERVER_LIB_DIR`: the full path of the directory containing `libmapserver.so`
- `PREFIX`: the full path of the directory where you want to install the libraryFor example:
```
make MAPSERVER_LIB_DIR=/opt/mapserver/lib PREFIX=/usr/local clean all install
```### Testing
You must have `valgrind` tool installed.
```
make MAPSERVER_LIB_DIR=/opt/mapserver/lib PREFIX=/usr/local test
```## Usage
### Compilation flags
The library use `pkg-config` tool. So you can use the following command to
get the compilation flags:```
pkg-config --cflags --libs mapserverapi
```If not found, you may have to add `PREFIX` at the end of `${PKG_CONFIG_PATH}`
environnement variable.### In your code
```C
#include// [...]
# Init the library (mandatory)
mapserverapi_init();gchar *mapfile_content;
# [...]
# Put a mapfile content into mapfile_content string# Set a WMS query_string (for this example)
gchar *query_string = "LAYERS=ocean&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_xml&SRS=EPSG%3A4326&BBOX=-180.0,-90.0,180.0,90.0&WIDTH=500&HEIGHT=250"# Invoke mapserver
void *body;
gchar *content_type = NULL;
gsize body_length;
gboolean b = mapserverapi_invoke(mapfile_content, query_string, &body, &content_type, &body_length);
if (b == TRUE) {
# you have the full body (PNG image in this example) in body variable (this buffer is managed by the library, don't free it by yourself !)
# you have the body length in body_length variable.
# you have the content_type of the body in content_type variable (you have to free it after use).# [...]
# free content_type when you have finished with them
# (but don't free body variable)
g_free(content_type);
}# Destroy the library
mapserverapi_destroy();
```### Uninstalling
```
make MAPSERVER_LIB_DIR=/opt/mapserver/lib PREFIX=/usr/local uninstall
```## Contributing guide
See [CONTRIBUTING.md](CONTRIBUTING.md) file.
## Code of Conduct
See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) file.
## Sponsors
*(If you are officially paid to work on MetWork Framework, please contact us to add your company logo here!)*
[![logo](https://raw.githubusercontent.com/metwork-framework/resources/master/sponsors/meteofrance-small.jpeg)](http://www.meteofrance.com)