Mapsui roadmap

May 23, 2010 at 2:20 PM

I'm thinking about using brutile in a project but the requirements specify users should be able to:

  • Select existing map features (such as houses, roads etc)
  • Create new map features (points, polygons and/or circle shapes)

Currently brutile isn't capable of doing these things so I was wondering:

  • Any eta on those features (drawing on brutile canvas etc)
  • I guess I could make server render tiles with only the selected features and then combine existing tile images with selected features tiles on client - would that be a good choice? It still requires some modification to the existing code.
  • Is there a way to help with the development of those features? (I'm quite versed in c#, not so in wpf but I'm learning!)

Hope you can help!

Goran

Coordinator
May 25, 2010 at 7:46 AM
Edited May 25, 2010 at 8:14 AM

Hi Goran,

I am currently porting the SharpMap vector rendering to Silverlight so that it can be integrated with Mapsui (see my checkins in the SharpMapSilverlight branch: http://sharpmap.codeplex.com/SourceControl/list/changesets). I would use SharpMap's vector rendering as a basis for drawing in the map. 

I don't like to make any promises about when the integration is completed. It is one of the first things on my list, but it is unclear when I'll have some time for it. I think it is important to have it integrated before you start on the project. When do you expect to start? In general if you use Mapsui in your project you should be confident you could make the needed changes yourself without being dependent on my. Then again, I usually have time to answer questions. Any help on the project is greatly appreciated.

Which version platform are you using (WPF, Surface, Silverlight?)

Paul.

May 30, 2010 at 10:18 AM
pauldendulk wrote:

Hi Goran,

I am currently porting the SharpMap vector rendering to Silverlight so that it can be integrated with Mapsui (see my checkins in the SharpMapSilverlight branch: http://sharpmap.codeplex.com/SourceControl/list/changesets). I would use SharpMap's vector rendering as a basis for drawing in the map. 

I don't like to make any promises about when the integration is completed. It is one of the first things on my list, but it is unclear when I'll have some time for it. I think it is important to have it integrated before you start on the project. When do you expect to start? In general if you use Mapsui in your project you should be confident you could make the needed changes yourself without being dependent on my. Then again, I usually have time to answer questions. Any help on the project is greatly appreciated.

Which version platform are you using (WPF, Surface, Silverlight?)

Paul.

Thanks for the reply! 

Target platforms for this project are WPF and SL. I guess I'll go on implementing client side rendering and periodically check your progress on SharpMap. 

I'll check in with you once I made some progress (and once I hit a problem :))

Goran

Jun 26, 2010 at 12:24 PM
Hi!

I was looking at your SL renderer. As my use-case is to enable editing the shapes I need access to the created shapes or UIElements. Do you think it would be a good idea to split the renderer functionality to enable such scenarios or should I roll my own renderer?

Goran
Coordinator
Jun 27, 2010 at 8:45 AM

Hi Goran,

I have no complete plan there yet. But some things I had in mind.

  • There will always be a need for different kinds of rendering. In many cases I would go for early rasterization for performance but that is not always possible. Point symbols should rarely be rasterized because you don't want them to grow in size while zooming in.
  • The layer should have a property indicating which kind of rendering to use for that layer.
  • The rendering should implement several types of rendering.
  • The renderer has full control on how to render. It gets the complete map state as argument and iterates over the layers and geometries within layers (currently the iterating over the geometries is still within the layer).

I am not completely sure if this will be sufficient for editing. We have implemented editing in older versions of SharpMap and there we did our own custom rendering while in edit mode and went back to SharpMap rendering when done. Eventually we would like to stay closer to the normal rendering.

Paul 

Jun 30, 2010 at 1:31 PM
Hi again!

I'm going to bug you with more questions :)
1. There are some changes to the important interfaces with various SharpMap versions (ie. IProvider). Should I stick with the old 0.9 version as 2.0 is incomplete or should I add required features to 2.0?
2. WPF offers much of the same geometry (shape) classes as SharpMap does. Besides the obvious problems with naming collisions and constant conversions, is there a plan to address this? Is there a plan to perhaps switch to WPF classes and extend those?
3. Which data collections are going to be preferred in future versions of SharpMap (or MapsUI), Features, FeatureDataSets or something else?
4. I'm currently dealing with editing small number of geometries (a few polygons or points). I'm guessing in the future the users might request larger number of those. Currently I'm rendering the geometries to a single canvas as Paths. Each holds a reference to a MatrixTransform so that I'm able to pan and zoom around the map. My plan is to integrate the pan and zoom with mapsui control so that raster tiles are rendered behind this canvas. As the number of Paths increases the performance naturally goes down. I started thinking about applying the same scheme used by raster layers on vector layers. That is, have vector layers represented in various levels of accuracy. In raster layers adjacent points merge into single point as you zoom out. Something similar can be done with vector geometries (union adjacent polygons then reduce the complexity). Would that be an interesting idea?
5. I'm really looking for more info on the plans you have with these projects (SharpMap, MapsUI, Brutile) so I can organize things accordingly. Also are any areas I'm dealing with helpful to you? Is there anything you think might be worthwhile contributing back to the projects?

Thanks!

Goran
Coordinator
Jul 9, 2010 at 9:46 AM

Hi Goran,

Sorry for my late reply, I was busy. 

1) With the limited time I have available I will first go for a Mapsui version using the SharpMapSilverlight branch. It is code I fully understand and can easily change to my needs. I would prefer a more generally used gis core lib and will switch when there is one for Silverlight.  

2) A more commonly used core gis lib should also run on platforms without WPF so I expect there will always be separate gis geometries. Perhaps we could try to prevent naming collisions by choosing gis specific class names.

3) SharpMapV1 and V2 use System.Data.DataTable as a base class. This class does not exist in Silverlight. This is why I introduced my own independent Features. I am not sure how it will end up. Other gis libs might also move away from DataTable for different reasons. Right now I use a simple adapter to convert existing SharpMap providers to Features. This will suffice for now. I expect a better alternative to evolve in other libraries. Lessons learned here might be useful there.

4) Getting good performance with solutions like that is what interests me most in this project. Rasterization is very important here. But I would also like to have high quality graphics when the user is not interacting with the map. And there are special cases like point symbols which should stay the same size while zooming (which is not the case when rasterized). Have you seen the SharpMap provider in the WPF project? It basically does what you describe. It reads vectors and puts them into a tile schema. However, that solution is limited to tile schemas alone. I want a solution where the renderer has all options available. 

5) Contributions are definitely welcome. The first thing that needs to be done is integrate SharpMapSilverlight. This is something I will have to do. After that there are many things to do. I will get back to that later. Also I am also interested in the functionality that you need for your project so it can easily fit in the Mapsui architecture. 

Paul