Is SharpMap a good match for me?

Topics: General Topics, SharpMap v0.9 / v1.x, SharpMap v2.0, WinForms Controls
Apr 21, 2009 at 1:14 PM
I'm currently working on a project that needs a GIS capability and SharpMap looks like it may be a good fit for at least some of the functionality. These are the function i need, and what i've been able to deduce about SharpMaps capabilities, can anyone conform or deny my assumtions?

My app is a c# winform app (VS 2008/ .net 3.5) - I gather that SharpMap is c# (Vs 2008 / .net 2.0) so should be compatible

I need to draw a (basically static) map image (not sure on data source/format yet but i dont think this is an issue) - should be no problem for SharpMap?
I need to draw several static lines and polygons above the map - again SharpMap does this out of the box AFAIK
I need to draw static circles/ellipses - AFAIK SharpMap doesn't do this out of the box, but it could be faked with a high degree polygon.
I need to plot labeled points that move on the map - not sure how quickly i can render maps with sharpmap but i only need 1 Hz refresh rate so im assuming im ok here?
I need to load elevation data - SharpMap seems to cope with this? not sure on data format yet.
I need to do LOS calculations between various points on the map - from what i can see SharpMap certainly won't do this out of the box, so im looking at either implementing this from scratch but perhaps there may be bits that are useful here (geometric transforms to a cartesian frame? r-tree indexing? there seems to be some reference to using 3d points internally?)

So far I think SharpMap will probaby be a good match for this project (with the only real extra effort needed in the LOS stuff) but have i misunderstood the features? am I barking up the wrong tree?
Coordinator
Apr 22, 2009 at 10:43 AM
Edited Apr 22, 2009 at 11:14 AM
Hi jiim, I am pretty sure you can accomplish what you need with SharpMap but id does depend on the details.. Particularly which version of sharpmap you choose to start with.

I need to draw a (basically static) map image (not sure on data source/format yet but i dont think this is an issue) - should be no problem for SharpMap?

this depends on the version of sharpmap you choose. 0.9 currently has more providers implemented but v2 has ShapeFile, PostGis, MsSqlSpatial, SqlServer 2008 and SpatialLite. V2 currently has no Raster providers though.

I need to draw several static lines and polygons above the map - again SharpMap does this out of the box AFAIK

no problem

I need to draw static circles/ellipses - AFAIK SharpMap doesn't do this out of the box, but it could be faked with a high degree polygon.

Beziers are not supported but like you say a polygon can fake it

I need to plot labeled points that move on the map - not sure how quickly i can render maps with sharpmap but i only need 1 Hz refresh rate so im assuming im ok here?

This is dependent on how many layers and how generalized the data is/ world coverage of a given render but I am assuming it should be fine

I need to load elevation data - SharpMap seems to cope with this? not sure on data format yet.

This may require a bit of work.. I am not sure how easy it would be to do with 0.9 AFAIK the Point3D class is used only during coordinate transformations. In V2 this should be easier to accomplish but has not been tackled yet.. the plumbing is there though for Z and M values.

I need to do LOS calculations between various points on the map - from what i can see SharpMap certainly won't do this out of the box, so im looking at either implementing this from scratch but perhaps there may be bits that are useful here (geometric transforms to a cartesian frame? r-tree indexing? there seems to be some reference to using 3d points internally?)

 as above 3D points are used for coordinate transforms only at the moment. V2 has various tree indexing structures available through GeoAPI and NetTopologySuite (which are far more integrated than in 0.9)

hth jd
Apr 22, 2009 at 10:58 AM
Edited Apr 22, 2009 at 11:02 AM
Thanks john,

Sounds like its worth me at least looking at v2 to see what needs to be done, at worst I can always do the elevation/LOS stuff in a seperate module anyway as nothing needs to be directly plotted for this