MapServer Status Report
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 183 | |
Author | ||
License | CC Attribution - NonCommercial - ShareAlike 3.0 Germany: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/32067 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Producer | ||
Production Year | 2015 | |
Production Place | Seoul, South Korea |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSS4G Seoul 201574 / 183
7
8
47
53
54
65
73
74
79
82
84
92
102
103
105
124
126
127
130
141
142
143
156
161
162
170
176
178
181
183
00:00
Set (mathematics)Beta functionTexture mappingDifferent (Kate Ryan album)Office suiteSource codeSemiconductor memoryLatent heatDistanceMultiplication signStudent's t-testSphereContext awarenessCollaborationismProjective planeProduct (business)Library (computing)Operator (mathematics)CodeService (economics)Software developerCartesian coordinate systemOpen sourceExecution unitTerm (mathematics)Server (computing)Scripting languageWikiPopulation densityTube (container)GeometryType theoryLevel (video gaming)Presentation of a groupINTEGRALFormal languageSocial classMereologyCodierung <Programmierung>Line (geometry)Maxima and minimaWeb 2.0MultiplicationSlide ruleEmailElectronic mailing listSoftware bugSoftware testingFunction (mathematics)Latin squareRaster graphicsBitKernel (computing)Grass (card game)Vector spaceCodeComputer animation
08:10
GeometryDefault (computer science)Formal languageFlow separationAttribute grammarBlock (periodic table)2 (number)Texture mappingComplex (psychology)Metropolitan area networkComputer fileExpressionMultiplication signFunction (mathematics)Electronic mailing listoutputComputer fontSequenceContent (media)MultiplicationData storage deviceSurfaceDatabaseKey (cryptography)Network topologyAdditionCodierung <Programmierung>Different (Kate Ryan album)Ocean currentRevision controlPopulation densityAuditory maskingLevel (video gaming)Scaling (geometry)Domain nameImplementationQuery languageModel theoryClient (computing)Latin squareOperator (mathematics)Artistic renderingInsertion lossCodeMereologyDisk read-and-write headStandard deviationINTEGRALPoint (geometry)DialectTwitterNumberVector spaceLibrary (computing)CollisionVolumenvisualisierungServer (computing)Raster graphicsWeightAsynchronous Transfer ModeTesselationFront and back endsBitBus (computing)Hill differential equationOrder (biology)Filter <Informatik>WritingCache (computing)Dynamical systemComputer animation
16:16
Source codeCodierung <Programmierung>Texture mappingComputer fileProcess (computing)Server (computing)AngleControl flowRevision controlFunction (mathematics)Vector spaceTesselationAcoustic shadowBuildingPresentation of a groupSound effectFilter <Informatik>PixelOperator (mathematics)CuboidPlug-in (computing)GeometryArtistic renderingLatent heatData storage deviceCache (computing)Projective planeINTEGRALSoftware testingClient (computing)InformationQuery languageMultiplication signLine (geometry)Point (geometry)ForceFormal languageTranslation (relic)Buffer solutionWebsiteString (computer science)Attribute grammarDatabaseOnline helpSimilarity (geometry)Existential quantificationWordGoodness of fitUser interfaceTraffic reportingSoftware suitePatch (Unix)Computing platformEmailElectronic mailing listSoftware developerSoftware bugReduction of orderEvent horizonStudent's t-testRule of inferenceCyberspaceWeightState observerComputer networkNumbering schemeShape (magazine)Continuous integrationDifferent (Kate Ryan album)HypermediaExecution unitPlotterGraph coloringLevel (video gaming)Network topologyArchaeological field surveyPolygonMultiplicationDialectNetbook
Transcript: English(auto-generated)
00:03
I'm Thomas Bonfort from France. I'll be presenting updates about the MapSutter project. These slides were prepared by myself and by Stefan Meisel who's in Austria and Daniel Morissette from Canada who couldn't make it to
00:23
France Fégée this year. I'll first start by giving an introduction and history about the MapSutter project. Actually 2015 is MapSutter's 20th birthday and then I'll go through the new features that were introduced in
00:44
MapSutter 7.0. It was released a few weeks or months ago and then give some updates about what to expect in the coming versions. So first, what's MapSutter? MapSutter, so it's open source and it's for publishing web data over the web,
01:03
publishing geo data over the web. It's an MIT style license, completely open source, runs on all major platforms and with an OSGIO project since 2006, the beginning. So a brief history, starting way, way long time ago. So just the
01:27
beginning of the World Wide Web itself was in 1990 and then 1994 was the first precursor of the MapSutter projects initiated by Steve Lime which
01:40
became, in 1995, the ImageServe project. So that's 20 years ago. 1994, 1995, so Frank Womodam releases the ShapeLib project which enables to pass shapefiles. 1996, the release of the GD imaging library, so ShapeLib plus GD
02:07
becomes actually the MapSutter project. 1997 is the first public release, limited public release. 1998 is the 2.0 release via Fonnet and 1999 3.0 via the UNM
02:25
University of MapSutter home. In 2000, other collaborators start to join, Daniel Marie Set, who brings in MapScript support and also brings in shared distributed development tools, CVS, bugzilla, wikis. In 2000, other
02:49
contributors start here. I don't know if you actually recognize the person in the
03:02
audience. 2001, there's Postgres supports, also some known faces. Then 2002, conferences and meetups starts beginning to occur. Grass users conference in Trento. Then 2003, the MapServer user conferences in 2005 also
03:25
Minneapolis, Ottawa, Minneapolis again. 2005, a book about web mapping based around MapServer by Tyler Mitchell. And then 2006, the foundation of the OSGO
03:45
community itself and the MapServer is one of the eight founding projects to take part in OSGO from the beginning. MapServer has been presented in the OSGO Strive also in all these conferences here since 2006. So in
04:08
Switzerland for the first one in 2006 and then through to Seoul today. We also have an annual meetup between developers, week-long hard-coding
04:25
sessions that happened in Toronto, New York, Moreau, Islandwood near Seattle, Boston, Vienna, Philadelphia this year and maybe Lyon next year. This is a
04:40
great place where bugs get fixed and lots of work gets done. More than 6.0 released in 2011, four years ago already. In 2012, there were two other
05:01
projects that were integrated under the MapServer umbrella that was tiny OWS from WFS from Postgres and MapCache which is a server for serving tiles. 2013 6.4 release, 2014, oh actually 20th anniversary was put here, I don't
05:20
know if it was last year or this year actually. A 7.0 beta release and the beta testing time took a long time. And 2015, July 2015 was the release of the final MapServer 7.0. Just a few statistics, 150 lines and 1000 lines of
05:48
build, 12,000 commits. Over time, around 100 contributors, mailing lists which are rather active and the project steering committee that's international and not
06:02
tied to a single company. 113 RFTs, maybe a bit more now. So now about the features from MapServer 7.0. Main new features which I'll go into more details now. UTF grid supports, support for WFS 2.0, heat maps, kernel density
06:27
maps, MapScript style, JavaScript integration with MapServer, big work on unification of filtering and geometries and attributes, layer level compositing,
06:45
refactoring the text output to support more than Latin languages, removal of GD renderers, bitmap labels removed, support for encodings, multiple encodings from different data sources, and WCS 2.0 support. First, UTF grid support, so
07:05
that's a specification by Mapbox for making more or less vector tiles, for having loadovers over images. It was implemented actually two years ago now, I think, for Google Summer of Code projects. But as the 7.0 release took
07:27
some time, it's officially supported since a few months. So it's supported by OpenLayers and other leaflet client-side applications, and OpenLayers was
07:43
actually extended, so it supports UTF grids that aren't styled. WFS 2.0 support, so you see the slide is rather short, I don't know much about WFS and even less about WFS 2.0. But yeah, we support it. It was mostly
08:04
done for Inspire support, so for the European download services. JavaScript MapScript support, so integration of the V8 JavaScript engine, so actually what
08:22
it does, it hands off features at rendering time to any JavaScript code which you can interact with, and then outputs from JavaScript blocks of map file syntax that's then used for rendering a specific syntax. So
08:43
the example here is basically you get the attribute name, and depending on the size of the string, choose to use a smaller or a bigger font,
09:00
but you can do much more from that. Basically you just plug in any map file code and have a map server render it that way. The unification of attributes in geometry filtering is the big, big, big addition of Map Server 7.0, with work from essentially Steve Lyman and Mike Smith, who are here. Currently
09:26
features when you're doing filtering was done by map server, so all the data was pulled down from the data backends, and then filtering was done by map server code. With this new filtering in place, lots of the filtering is
09:45
offset over to the spatial databases, who know how to do that very well and very efficiently. So basically the data backends have less data to return to map server. The significant performance gains to be expected, especially for WFS
10:04
queries where filtering occurs, and where the client can ask for a specific filtering. It's also simpler to use because you only have to write map server filtering syntax, and then that's translated to whatever the backend
10:22
itself is using, whether it's Oracle or OGR or PostGIS. And that was the blocking item for 7.0 release, so now it's ready. Were WCS 2.0 compliant, officially compliant? Actually, map server 6.2 is the reference implemented
10:47
instrument for OGC for the WCS 2.0.1 version. The official compliant version is map server 6.2, not map server 7.0, although map 7.0 is as compliant, it's
11:01
just it's complicated to be officially certified at the OGC. We added support for heat maps, dynamic heat map creation, so basically you take in vector data and you output raster data that interpolates the vectorial data,
11:23
does automatic scaling of the data, you can weigh against attributes or expressions that you write in map server syntax, and it supports also tile modes so you can seamlessly put heat maps, one have tiles generated that are
11:40
contiguous from one tile to the other. So a few examples of the outputs, those two images are using exactly the same data as input, and just depending on how you're weighting each point, you end up with different images, different renderings. The top layer is just showing the
12:05
density, so no weighting from attributes, and you can also, talking about fixed scaling for tiling, we introduced layer blending modes, so the
12:24
usual blending from one layer onto the resulting map is usually done doing the composite operation. Now you can choose to add, multiply, add, addition, well basically multiply is the one that's mostly used and it allows to
12:44
create nice-looking hill shading maps as you can see here. There is also work that's maybe a bit less visible than on the back ends, for outputting
13:01
text on a map, so beforehand it was duplicated across each renderer, quite difficult to maintain. Now we're integrating the health bus library which is becoming a de facto standard for handling non-Latin text, so it supports languages with complex text layouts. Here's an example with Arabic,
13:28
so the inputs, what's stored in the database is a sequence of characters in the logical order. You have to reverse them, because Arabic is a right
13:41
to left language, and then you actually apply the layout which radically changes the outputs, what's actually printed compared to what's stored in the database. So as I said it's not very visible to the user, hopefully it's
14:03
not visible at all if you're using Latin text, but it will allow more precise label placements if you want to do aligning and centering of text, and also allows you to finally select which font is going to be used if you're using multiple languages, so you can choose to use one font for Latin
14:22
languages and another font for Arabic and another one for Korean. What came with this RFC was also some nice performance enhancements. In red you can see the rendering time taken to process the label cache and the detection of
14:41
collisions between labels, depending on the number of labeling points that were added to the map. Notice those are log scales on both axes here, so basically what you can see is if you're adding lots of labels which you shouldn't always be doing, but it sometimes happens, half a second for
15:01
7.0, a thousand seconds for the previous version. Some examples of the complex text layouts that you're having here, so this is Malayalam, you can see
15:21
complex characters being added here. Tibetan is also a very complex language, it's good to output, so here you can hopefully correct all the languages. Other notable things in the for 7.0, removal of the GD renderer that
15:43
was faithfully there since 1995, which was becoming too complex to support. There's automatic fallbacks to the new renderers. Remove the support for bitmap labels, so now everything is done with a true type font, and we
16:01
actually embed now a default true type font so you don't have to set up a front list if you're only using the default font. We support layer-level encoding, which means you can use data sources that have different encoding, mixed
16:20
encodings. This implies that the map file now must be encoded as UTF-8, as that's how the processing is done now, and everything output by Map Server now will be UTF-8 also. Coming in the next versions, we have better
16:47
placement of label text for labels that are following the line, so as you can see with older versions here, when you have sharp angles in the roads, either you can tell Map Server to completely discard the label and say
17:03
okay, it's too sharp, or you could end up with the labels with overlapping text, something that's not readable. For the new version now, we try to, if we encounter such sharp angles on the text, try to
17:21
displace it so that the sharp angle itself falls on a break between words, so you can see you have more labels that are actually added to the map, and the breaks are somewhere that makes the label text actually readable. We're also going to add layer filters, so applying pixel operations to layers
17:44
before blending them in, so here you can see it's used to apply a soft shadow around the buildings to give a pseudo 3D effect. That's the main filter that will be added at first, but can be extended to change colors,
18:03
map to black and white. We'll see what kind of usage can come with that. Future, very new features, also support for vector tiles from the map box specification to encode and store geometry features and pass them to the
18:26
client, so the vectors themselves are stored in the tiles, and then all the rendering is offset to the clients, which supports now from the map box JS. OpenLayers 3, I think, also has the support for it. I think this
18:42
plugin's for leaflet also. So data is stored with XYZ addressing in the makator projection. The support inside map server will support other projections not limited to makator, and basically you'll be passing a WFS
19:04
query to map server and having the vector tile outputs from there. It's essentially more or less useless for the client side for now with these kinds of URLs, but you plug in the tile cache in front of that to store the
19:23
output of map server from this, and store it in the XYZ addressing schema. There were updates then to the documentation, with lots of work done on translation, so now we have TransFX website set up to translate the documentation strings from the website, and hopefully to attract further
19:44
languages and people from doing translations. We've also added a continuous integration, so each time there's a commit added to the source code, or if someone proposes a pull request, the test suite is run with more or less 2,000 functional tests to check that nothing was broken
20:03
by the commit. It's done by Travis CI for Linux, and they are set up for Windows. So final words, how to contribute. We're always looking for people to help test out the vectors and the release candidates.
20:22
Reporting bugs, if you encounter them, is important. If we don't know about the bugs, we won't fix them. Help and documentation, if something's not clear in the documentation, just add a few helpful words for the other users. Answering questions on the mailing list also, and for developers
20:44
while providing bug fixes and patches themselves, new features, builds for different platforms. Thank you for your attention. The presentation here is available online. I've put the URL here. Some Creative Commons license, so you're free
21:06
to reuse whatever you see over here. Thanks a lot.
21:28
My name is Kenny. I'm from Africa, Nigeria. I work with an NGO fighting polio in Nigeria. My question is,
21:40
we've been, at the moment, the way our database is structured through Postgres, PostGIS, and serving through map server, but what we notice in our GDB is the fact that we handle a lot of multi-polygon from our PostGIS end, but map server is not giving us. You have a lot of polygons? Multi-polygon.
22:03
Multi-polygon that map server is not giving us. Because you have too many, or because it's not an issue I don't have that information now.
22:34
This project just started about two years back, and we are, of course, working on the integration
22:40
in Canada, but I can give it feedback to you on that. Yeah, yeah, if you have a test case, please provide it. And then secondly is about the heat map, how heat map is being hand-generated. You know, from most times when I see the way heat map are generated,
23:01
from point, most especially when you go to, I do routing a lot, and I see, I have issue with this cuff-like heat map. I expect heat map to be generated along the roads, not a cuff-like angle, or equally there. I'm not sure I understand the question. Yeah, I expect that you should define,
23:24
most especially when you want to define travel time. The travel time, or heat map that is based on travel time, should be based along the roads, not a coverage, a buffer. Yeah, yeah, I understand. Here it'll only work on points, so if you give it a line,
23:44
it'll work on the points from the line, but not from the line itself. You've got cluster points along the line with travel time attributes and generate a heat map that will follow those points that have similar attributes or something like that.
24:00
Yeah, yeah, good idea. So you generate the points themselves on the database side with the waiting attributes that give you the travel time, and then create the heat map from that. Okay, thank you.