Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
ScribeMapServer Mapfile Development
Made Easy
Julien-Samuel LacroixMapgears
@juliensam
Mapfile development
➔ Mapfile are great and powerful➔ It's possible to get beautiful results➔ Mapfile are human readable➔ We have script to generate mapfiles➔ Big mapfile can use INCLUDE
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...
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
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!
Scribe syntax
Alternative syntax like:● XML Mapfile● Basemaps● In-house format
Still based on the Mapfile syntax
Python script that output a regular mapfile
Scribe syntax
It's a way to make mapfile development more productive by removing a lot of copy/pasting.
It makes project more manageable
It does save a lot of time when developping mapfiles.
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
Scribe Howto: Scales
Definition of scalesSCALES {
1:268435456
2:134217728
...
16:8192
}
From here, no more:
MINSCALEDENOM MAXSCALEDENOM
Scribe Howto: Scales
LAYER {
116 {
NAME: 'ocean'
TYPE: POLYGON
@layerconfig
DATA {
15: '110m_physical/ne_110m_ocean'
610: '50m_physical/ne_50m_ocean'
1116: '10m_physical/ne_10m_ocean'
}
CLASS {
STYLE {
COLOR: '#C6E2F2'
}
}
}
}
Scribe Howto: Scales
STYLE {
COLOR: '#aaaaaa'
WIDTH {
12: 0.5
13: 1
14: 2
1516: 4
}
}
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
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.
##Comment blocks between /* */
## do not appear in the resulting mapfile.
/*
OUTLINECOLOR: 200 200 200
OUTLINEWIDTH: @land_ol_width
*/
Scribe
Use it!
ScribeUI
➔ Mapfile editor➔ Productivity tool➔ Get everything in the same place
ScribeUI: Take a tour (Basics)
➔ WorkspaceProject, may be password protected
➔ New Map TemplateYou can use any existing map as a template
➔ EditorEdit layers per group
➔ Layer groupsAdd groups and modify their order
➔ MAP definitionKeep it at hand
➔ See your changes live
ScribeUI: Workspace
It's a project
May be password protected
Can contain multiple map
ScribeUI: New Map Template
Creating a new map is as easy as a copy/paste
You can duplicate any existing map in any workspace
ScribeUI: Editor
Grouped by layer group
Color coded
Line number
ScribeUI: Layer Groups
Add new layer group or delete existing ones
Modify the order of existing groups
ScribeUI: Map Definition
Easy to access
Can hide it
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
ScribeUI: Debug
See what's happening in real time
Pan the map to get debug info
ScribeUI: Result
Save the resulting mapfile
It's also possible to export the project
ScribeUI: Point of Interest
Quickly access your area of interest
Make it easy to test several region when editing style
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
ScribeUI: Browse Tab
Upload new data file
Download data or files available on the server
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
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.
Plugins to come...?
➔ Color swatch➔ MapCache configuration➔ Precache jobs➔ Git integration➔ Data visualisation➔ Human readable debug output➔ Sky is the limit
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
Demo!If time permits...
Questions?Thank you!
Julien-Samuel LacroixMapgears
@juliensam