GithubHelp home page GithubHelp logo

bubbajuice / kosmtik Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kosmtik/kosmtik

0.0 0.0 0.0 3.14 MB

Make maps with OpenStreetMap and Mapnik

License: Other

JavaScript 87.96% CSS 11.80% CartoCSS 0.07% HTML 0.17%

kosmtik's Introduction

Kosmtik

Join the chat at https://gitter.im/kosmtik/kosmtik Dependency Status Node.js CI

Very lite but extendable mapping framework to create Mapnik ready maps with OpenStreetMap data (and more).

For now, only Carto based projects are supported (with .mml or .yml config), but in the future we hope to plug in MapCSS too.

Lite

Only the core needs:

  • project loading
  • local configuration management
  • tiles server for live feedback when coding
  • exports to common formats (Mapnik XML, PNG…)
  • hooks everywhere to make easy to extend it with plugins

Screenshot

screenshot

Install or Update

Note: Node.js versions are moving very fast, kosmtik and its dependencies may not be compatible with a current release and the npm package may be out of date.

Install from source (recommended)

Clone this repository and install with npm:

git clone https://github.com/kosmtik/kosmtik.git
npm install -g

This might need root/Administrator rights. If you cannot install globally you can also install in a local Node environment with

npm install

This will create a node_modules/kosmtik folder. You then have to replace all occurences of kosmtik below with node node_modules/kosmtik/index.js.

Install package:

Requires Node.js v.9.3.0. Using npm (a Node.js version manager):

nvm install v.9.3.0
nvm use v.9.3.0
npm install -g kosmtik

This will install Node.js v.9.3.0 and kosmtik for the current user.

Usage

To get command line help, run:

kosmtik -h

To run a Carto project (or .yml, .yaml):

kosmtik serve <path/to/your/project.mml>

Then open your browser at http://127.0.0.1:6789/.

You may also want to install plugins. To see the list of available ones, type:

npm search kosmtik

Configuration file

By default Kosmtik places a configuration file into $HOMEDIR/.config/kosmtik.yml where $HOMEDIR is your home directory. You can change that by setting the environment variable KOSMTIK_CONFIGPATH to the appropriate file.

In the configuration file Kosmtik stores information about installed plugins and you can change certain settings that should be persistent between runs.

Configurable settings are:

  • autoReload (true/false)
  • backendPolling (true/false)
  • cacheVectorTiles (true/false)
  • dataInspectorLayers (object with layer names and true/false)
  • exportFormats (array of strings)
  • showCrosshairs (true/false)

Local config

Because you often need to change the project config to match your local env, for example to adapt the database connection credentials, kosmtik comes with an internal plugin to manage that. You have two options: with a json file named localconfig.json, or with a js module name localconfig.js.

Place your localconfig.js or localconfig.json file in the same directory as your carto project (or .yml, .yaml).

In both cases, the behaviour is the same, you create some rules to target the configuration and changes the values. Those rules are started by the keyword where, and you define which changes to apply using then keyword. You can also filter the targeted objects by using the if clause. See the examples below to get it working right now.

Example of a json file

[
    {
        "where": "center",
        "then": [-122.25, 49.25, 10]
    },
    {
        "where": "Layer",
        "if": {
            "Datasource.type": "postgis"
        },
        "then": {
            "Datasource.dbname": "vancouver",
            "Datasource.password": "",
            "Datasource.user": "ybon",
            "Datasource.host": ""
        }
    },
    {
        "where": "Layer",
        "if": {
            "id": "hillshade"
        },
        "then": {
            "Datasource.file": "/home/ybon/Code/maps/hdm/DEM/data/hillshade.vrt"
        }
    }
]

Example of a js module

exports.LocalConfig = function (localizer, project) {
    localizer.where('center').then([29.9377, -3.4216, 9]);
    localizer.where('Layer').if({'Datasource.type': 'postgis'}).then({
        "Datasource.dbname": "burundi",
        "Datasource.password": "",
        "Datasource.user": "ybon",
        "Datasource.host": ""
    });
    // You can also do it in pure JS
    project.mml.bounds = [1, 2, 3, 4];
};

Custom renderers

By default Kosmtik uses Carto to render the style. Via plugins it is possible to use other renderers or Carto implementations. You can switch the renderer installing the appropriate plugin and by passing the command line option --renderer NAME. NAME refers to the renderer name (e.g. carto for the default renderer or magnacarto for the Magnacarto renderer).

Known plugins

Run npm search kosmtik to get an up to date list.

kosmtik's People

Contributors

yohanboniface avatar nebulon42 avatar hiddewie avatar jdesboeufs avatar mapmeld avatar pnorman avatar timwaters avatar adrianclay avatar thomasg77 avatar tomhughes avatar jessecrocker avatar fil avatar kent1d avatar bubbajuice avatar droid95 avatar brunob avatar alexandervlpl avatar skorasaurus avatar thor avatar gitter-badger avatar stefanklug avatar sandman7920 avatar matthijsmelissen avatar matkoniecz avatar bong0 avatar kocio-pl avatar cquest avatar calvinmetcalf avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.