33
ScribeUI MapServer Mapfile Managment Made Easy Simon Mercier Mapgears @simonmercier

ScribeUI: La productivité avec MapServer

Embed Size (px)

Citation preview

Page 1: ScribeUI: La productivité avec MapServer

ScribeUIMapServer Mapfile Managment

Made Easy

Simon MercierMapgears

@simonmercier

Page 2: ScribeUI: La productivité avec MapServer

Mapfile development

Everyone that has develop big mapfile has gone through a variety of issues:

➔ A lot of copy paste➔ Multiple data source for the same layer➔ A lot of copy paste➔ Scales are a little bit confusing➔ A lot of copy paste➔ No variables➔ And so on...

Page 3: ScribeUI: La productivité avec MapServer

Mapfile development

Multiple windows at once:

➔ Text editor➔ Browser with mode=browse&template=openlayers➔ Console for the debug output➔ File browser➔ SQL window➔ QGIS for attributes➔ ogrinfo / gdalinfo

Page 4: ScribeUI: La productivité avec MapServer

The goal is to make our life simple

➔ The Scribe syntax➔ ScribeUI➔ Tips and tricks

ScribeUI is there to make things easier for mapfile developper

By mapfile developper!

Page 5: ScribeUI: La productivité avec MapServer

Some Scribe syntax details

● Creates multiple layers, one for each scale● Result is perfectly indented● Prevent layer duplication for the developper● Still based on the Mapfile syntax not a

replacement.

As simple as:$ python scribe.py

Page 6: ScribeUI: La productivité avec MapServer

Scribe Howto: Scales

Definition of scalesSCALES {

   1:268435456

   2:134217728

   ...

   16:8192

}

From here, no more:

MINSCALEDENOM MAXSCALEDENOM

Page 7: ScribeUI: La productivité avec MapServer

Scribe Howto: Scales

LAYER {

    1­16 {

        NAME: 'ocean'

        TYPE: POLYGON

        @layerconfig

        DATA {

            1­5: '110m_physical/ne_110m_ocean'

            6­10: '50m_physical/ne_50m_ocean'

            11­16: '10m_physical/ne_10m_ocean'

        }

        CLASS {

            STYLE {

                COLOR: '#C6E2F2'

            }

        }

    }

}

Page 8: ScribeUI: La productivité avec MapServer

Scribe Howto: Scales

STYLE {

    COLOR: '#aaaaaa'

    WIDTH {

      12: 0.5

      13: 1

      14: 2

      15­16: 4

    }

}

Page 9: ScribeUI: La productivité avec MapServer

Scribe Howto: Variables

VARIABLES {

    layerconfig {

        GROUP: 'default'

        STATUS: ON

        PROCESSING: 'LABEL_NO_CLIP=ON'

        PROCESSING: 'CLOSE_CONNECTION=DEFER'

    }

    land_ol_width: 1

}

From here:

LAYER {

    NAME: 'ocean'

    @layerconfig

    ...

        WIDTH @land_ol_width

Page 10: ScribeUI: La productivité avec MapServer

Scribe Howto: Comments

Sometimes it's useful to simply comment out,

Sometimes it's useful to leave a note or explanation:

##Comments preceded with ## appear

##in the resulting mapfile.

//Comments preceded with // or comment blocks between /* */

// do not appear in the resulting mapfile.

/* 

OUTLINECOLOR: 200 200 200

OUTLINEWIDTH: @land_ol_width

*/ 

Page 11: ScribeUI: La productivité avec MapServer

Scribe

Use it! 

Page 12: ScribeUI: La productivité avec MapServer

ScribeUI: Take a tour (Basics)

➔ WorkspaceProject, may be password protected

➔ New Map TemplateYou can use any existing map as a template

➔ Git integration You can Clone or push a mapping projet in your Git

➔ EditorEdit layers per group

Page 13: ScribeUI: La productivité avec MapServer

ScribeUI: Take a tour (Basics)

➔ Layer groupsAdd groups and modify their order

➔ MAP definition Keep it at hand

➔ Seed your map with MapcacheYou can throw on your server seeding mapcache job

➔ See your changes live

Page 14: ScribeUI: La productivité avec MapServer

ScribeUI: Workspace

It's a project

May be password protected

Can contain multiple map

Page 15: ScribeUI: La productivité avec MapServer

ScribeUI: New Map Template

Creating a new map is as easy as a copy/paste

You can duplicate any existing map in any workspace

Page 16: ScribeUI: La productivité avec MapServer

ScribeUI: Git integration

Clone, Push or

Commit your mapping project

Page 17: ScribeUI: La productivité avec MapServer

ScribeUI: Git integration

Clone, Push or

Commit your mapping project

Page 18: ScribeUI: La productivité avec MapServer

ScribeUI: Editor

Grouped by layer group

Color coded

Line number

Page 19: ScribeUI: La productivité avec MapServer

ScribeUI: Layer Groups

Add new layer group or delete existing ones

Modify the order of existing groups

Page 20: ScribeUI: La productivité avec MapServer

ScribeUI: Map Definition

Easy to access

Can hide it

Page 21: ScribeUI: La productivité avec MapServer

ScribeUI: MapCache

Throw mapcache seed job on your server

Page 22: ScribeUI: La productivité avec MapServer

ScribeUI: Take a tour (Developpers)

➔ DebugSee the logs as you navigate the map

➔ ResultSave the mapfile or link directly to the tiles

➔ Point of InterestQuickly zoom to your area of interest

➔ Browse tabUpload or download data file

➔ In the cloudStop copying the data files on all developper's computers

Also allow multiple people to work on the same project together

Page 23: ScribeUI: La productivité avec MapServer

ScribeUI: Debug

See what's happening in real time

Pan the map to get debug info

Page 24: ScribeUI: La productivité avec MapServer

ScribeUI: Result

Save the resulting mapfile

It's also possible to export the project

Page 25: ScribeUI: La productivité avec MapServer

ScribeUI: Point of Interest

Quickly access your area of interest

Make it easy to test several region when editing style

Page 26: ScribeUI: La productivité avec MapServer

ScribeUI: In the cloud

● It allows a group of developpers to work together without duplicating the data.

● Password protect each projects● Work on a centralized

system● No more multiple

installation puzzle● Upload your data

directly from the

web interface

Page 27: ScribeUI: La productivité avec MapServer

ScribeUI: Browse TabUpload new data file

Download data or files available on the server

Page 28: ScribeUI: La productivité avec MapServer

Plugins!

ScribeUI supports plugins. You can add your own tool by simply creating a directory in:

application/plugins/

In the UI, work with the Dom:➔ addButton()➔ addTab()

On the server:

Plugins get their custom route

Page 29: ScribeUI: La productivité avec MapServer

Plugins: example

SetExtent is an example plugin that allow you to redefine the map extent with some map interaction.

Refer to the code for plugin development references.

Page 30: ScribeUI: La productivité avec MapServer

Plugins to come...?

➔ Color swatch➔ Data visualisation➔ Human readable debug output➔ Sky is the limit

Page 31: ScribeUI: La productivité avec MapServer

Tips and tricks

➔ You can now think of your maps as levels instead of monolithic services.

➔ Scribe allow you to consider the map with cartographer's, or designer, eyes instead of from application developper constraint.

➔ Variables are the best thing.➔ ScribeUI Logs tell you where are your scribe

syntax errors➔ POIs are your friend

Page 32: ScribeUI: La productivité avec MapServer

Demo!If time permits...

Page 33: ScribeUI: La productivité avec MapServer

Questions?Thank you!

Simon MercierMapgears

@simonmercier