Skip to main content

A pure Python MapFile parser for working with MapServer

Project description

Version Docs Build Status Coveralls Appveyor Build Status Downloads

A pure Python parser for working with MapServer MapFiles, built using Lark. mappyfile is an official OSGeo Community Project.

https://raw.githubusercontent.com/geographika/mappyfile/master/docs/images/OSGeo_community_small.png

mappyfile is used for formatting and validation in https://app.mapserverstudio.net/, and can be tested for free on any of your Mapfiles. If you find mappyfile useful please consider signing up for a professional account at https://mapserverstudio.net/. This will help to fund maintenance and further development of both mappyfile and MapServer.

Requirements

  • Python 3.8 or higher

Installation

mappyfile is available on PyPI (the Python Package Index), and can be installed using pip:

pip install mappyfile

This will also install its required dependencies - Lark, and jsonschema.

To install the optional lark-cython library for better performance on CPython you can run the following command:

pip install mappyfile[lark_cython]

mappyfile is also available on conda. Install as follows:

conda install -c conda-forge mappyfile

Documentation

Full documentation is available at http://mappyfile.readthedocs.io/en/latest/

https://raw.githubusercontent.com/geographika/mappyfile/master/docs/images/class_parsed_small.png

Usage

From within Python scripts:

import mappyfile

mapfile = mappyfile.open("./docs/examples/raster.map")

# update the map name
mapfile["name"] = "MyNewMap"

new_layer_string = """
LAYER
    NAME 'land'
    TYPE POLYGON
    DATA '../data/vector/naturalearth/ne_110m_land'
    CLASS
        STYLE
            COLOR 107 208 107
            OUTLINECOLOR 2 2 2
            WIDTH 1
        END
    END
END
"""

layers = mapfile["layers"]

new_layer = mappyfile.loads(new_layer_string)

layers.insert(0, new_layer) # insert the new layer at any index in the Mapfile

for l in layers:
    print("{} {}".format(l["name"], l["type"]))

print(mappyfile.dumps(mapfile, indent=1, spacer="\t"))

Three command line tools are available - format, validate, and schema:

mappyfile format raster.map formatted_raster.map
mappyfile validate D:\ms-ogc-workshop\ms4w\apps\ms-ogc-workshop\**\*.map
mappyfile schema mapfile-schema-8-0.json --version=8.0

Authors

Contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mappyfile-1.0.0.tar.gz (107.4 kB view details)

Uploaded Source

Built Distribution

mappyfile-1.0.0-py2.py3-none-any.whl (59.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file mappyfile-1.0.0.tar.gz.

File metadata

  • Download URL: mappyfile-1.0.0.tar.gz
  • Upload date:
  • Size: 107.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for mappyfile-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4dbdb49838d69189727859a42cfaae29dd1a193b71bd0d5c2c62a93b8c944eda
MD5 fd14084bc31c09a7f66e37d6254afd7f
BLAKE2b-256 c0c719e1b3dbdb3e38561e4d6a7a036d3b57ecec8331b52bdd9476b1fa03452a

See more details on using hashes here.

Provenance

File details

Details for the file mappyfile-1.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: mappyfile-1.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 59.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for mappyfile-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a83170c703c060d24ec4b382e4b9a527b948dde49f1fba5f7968dfc57a62404e
MD5 b06d39c09d9a1e65cdb7df4e64aec785
BLAKE2b-256 5604352824f4daab821590113f25cb6d051a4a998306eee32278f87ce85dbb6b

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page