GSoC Introduction (WMTS imagery provider)

Hello,

I’m
Matjaž Drolc, 21yo physics student from Slovenia. I’ve been programming
since age 11, mostly PHP, but what is more relevant to this project, I’ve also done some DirectX (in C#) and OpenGL (with C++ and Javascript)
programming. For the last few months I’ve been also getting more familiar with WebGL and alongside developing a visualization application got to know about Javascript goodies such as AMD/Require.js and Grunt.

As mentioned, I’ve been developing an application that visualizes surface measurements. The most notable feature is a simple level of detail mechanism that loads data segments depending on the scale of the X-axis (in other directions number of vertices is fixed and small enough to not require any LOD mechanism). When working on this project I’ve had to browse through a lot of THREE.js source code ( http://mrdoob.github.com/three.js/ ) so I’m familiar with some of it’s internals and the concept of scene graph. Here’s a screenshot http://drola.si/wp-content/uploads/2012/07/posnetek1.png .

For GSoC I’m deciding between two projects. One is implementation and improvements of triangulation techniques which is very exciting but given time constraints it’s probably more appropriate for somebody with stronger computer science background. The other project that caught my eye is implementation of WMTS imagery provider.

I’ve already set up Eclipse and successfully run Cesium on my local computer. I also took a quick glance over code for WebMapServiceImageryProvider. In the forthcoming days I will try to get through specifications of both standards to get a better understanding of how they differ and on base of that knowledge I’ll assess what new code is needed and put together a draft of proposal. On the basis on articles in your wiki I understand that unit tests and documentation are as important as the implementation itself so I’ll reserve significant amount of time to work on that too.

If you read through all of this, thank you and please feel free to respond with any comments, suggestions, recommended reading etc.

Have a nice day,
Matjaž Drolc

I think working on WMTS would be a great fit for you. I would recommend first getting familiar with the spec (http://www.opengeospatial.org/standards/wmts). The maybe mess around with requesting of tiles to see how the API works. I use http://maps.wien.gv.at/wmts/1.0.0/WMTSCapabilities.xml for testing. Let me know if you have any questions.

While comparing the WMS and WMTS specs and the current WMS implementation I noticed that current WebMapServiceImageryProvider doesn’t call GetCapabilities and doesn’t implement protocol version negotiation as described in the WMS 1.3 spec. Decisions that would be made on base of response from GetCapabilities are currently hardcoded in the parameters. Not calling GetCabalities probably isn’t an option for the WMTS provider since response to that request also includes description of tile matrix and URL templates. If I understand correctly, such request would be triggered in the constructor and this._ready would be set to true when completed?

Should both REST and SOAP protocols be supported or REST only? Is SOAP even mandatory for the clients?

How should support for different coordinate reference systems be handled? Again in the WMS implementation choice of GeographicTilingScheme is hardcoded but the CRS used in WMTS is defined by server.

Is any of the existing imagery providers more flexible in these regards to see how details such as choice of tiling scheme, choice of layers and styles, version negotiation etc. are handled there?

I’ll let Tom answer most of your questions, but take a look at ArcGisMapServerImageryProvider:

https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/ArcGisMapServerImageryProvider.js

It accesses a metadata service to learn about the projection used for the tiles.

Kevin

maybe
http://ol3js.org/en/r3.0.0-alpha.1/examples/wmts-from-capabilities.html

might be of help?

Kevin and Christian, thank you for those two links. They’re quite helpful. Christian’s link got me to this https://github.com/openlayers/ol3/blob/master/src/ol/source/wmtssource.js . Which means that most of the code needed for this project already exists and all that is needed is mostly glue code (+unit tests +docs) which probably won’t take 12 weeks to write.

I’ll go through the issue tracker to see what enhancements in the area of imagery providers could be included in this project.

Do you think I’m underestimating required time or have any ideas how to augment this idea?

hi,are you load wmts layer in cesium?

在 2013年4月9日星期二UTC+8下午5时02分24秒,Matjaz Drolc写道:

It's no hard. I writed WebMapTileServiceImageryProvider by the one day. After testing i'll publish my WebMapTileServiceImageryProvider in here.