Topics: General Topics
Jul 18, 2007 at 1:54 AM
I'm looking for a .Net, extensible GIS solution to replace a commercial ActiveX solution that I'm currently using. I've watched SharpMap peripherally for the last couple years, but have not actually jumped into codeing with it.

I have some 30,000 foot view questions:

1) The last official release is almost a year old. I would question the activity of the project, but from the forum, it seems to be quite active. So, is version 2.0 a really significant architectural change that is taking a long time? What happened to version 1.0? I see part of the 2.0 change is separation of the geometry engine from the presentation components... that's outstanding. But what is the status of the project for production work?

2) I require an in-memory dataset. Has anyone build one on top of the .Net datatable, dataset, or dataview? If I not, and I were willing to do it, are their interfaces that we implement, and have as an extension, or do we need to include it in the main project (I'm fine with contributing it to the community... whichever way it would be done).

3) Is there support for Mr SID imagery, out of the box? The USDA and NRCS have unfortunately standardized on Mr. SID for all of the current agricultural aerial photography in the USA. There is a GDAL reader for it... has it been hooked into SharpMap?

4) Are the open GIS spatial operations between Simple Feature geoemtry objects implemented in SharpMap, or is that left up to us? If implemented, how do they do relative to the creation of artifacts? For instance, if I interesect one polygon with several overlapping polygons, and then union the intersections back together, will I get the original polygon (with minor vertex changes) and avoid having sliver artifacts?

5) How does Diego's .Net Toplogy Suite integrate into all of this? Is it the engine that does the spatial geometry operations?

6) Is JP2 support available out of the box?

7) We have a need for some optimized rendering. It is a situation where we have to display thousands of closely space sites on a map at one time. Will we have a chance to plug an optimized renderer for this type of data into SharpMap as an extension, or as core functionality if we prove ourselves worthy?

I guess that's enough for tonight. In general, I will need a map viewer, but our current applications also do a lot of layer-based geometry operations, like intersecting one layer with another layer to create a third layer of all intersections, surfacing site based layers, etc. And we do a huge amount of work with operations between simple geometry objects. As such, the separation of geometry operations from map presentation is very important. And we do a lot of work with simple geometry features, which can be independent of any layer-based data source. Do you think 2.0 is the tool we might be looking for?
Jul 18, 2007 at 9:53 AM
Ok... I downloaded the source and compiled the trunk. In doing so, I answered some of my own questions.

1) I look forwad to your thoughts.

2) I see there is a FeatureDataset provider based upon the Dataset. I'm very happy to see that!

3) have not confirmed. I tried to add raster to the Demo project, I get an exception with the gdalcsharp not able to load gdalwrap.dll. What do I need to download for GDAL support?

4) It doesn't appear the methods on the Simple Geometry Feature interfaces are implemented.

5) I'm still not clear.

6) Unconfirmed, except I know that GDAL supports JP2.

7) I see a VectorLayerRenderer. This leads me to believe that it might be possible to plug in explicitly optimized renderers at some point down the road?

New question, and I'm still kind of new to .Net development, so bear with me, please :) When I add the SharpMap project into my own project's solution, I get an error that there is no strong-named key for it. I have to add one. Yet is not required for the demo solution. And I can't add the SharpMap.Extensions project at all because strong-named keys are required for gdal_csharp.dll, etc. What should I be doing to avoid this issue?

Thanks! Last night's explorations look very good!
Jul 18, 2007 at 12:01 PM
I have been able to load SID and JP2 images now, so questions 3 and 6 appear to be answered. I have to step through an error the first time the images are loaded, which I suspect is related to the map having never been zoomed prior to being refreshed. And I had to put all of the GDAL *.dll files in the bin folder of my app. Setting the path did not seem to work for me, but I'll investigate all of that later.
Jul 18, 2007 at 11:24 PM
I'll try to respond as best I can based on my experience.

3. You can add any of the GDAL supported formats using the GDALRasterLayer. These are a few quirks with this that I've encountered and fixed up. I've posted these in the forums and am now very happy with the way GDALRasterLayer works for me. I can display rasters from many formats and move around them easily, all without having to load any software onto the server (i.e. simply using DLLs in the Bin directory).

5. The NetTopologySuite can be used quite easily with SharpMap, via the NTSProvider class. I've been able to use many of the geometry operations for accurately determining intersections, etc. I think there wsa a view to integrate these more in the future, but it is prob on the back-burner. Only problem I've hit here is when my FeatureTable has null values in the fields - NTS doesn't seem to like that, so I had to replace with -1s!

6. JP2 should be fine, due to being supported in GDAL, but dunno how it goes reading in an associated world file for georeferencing - any comments?

That's about all I can help with.

Steve - Melbourne/Australia
Jul 19, 2007 at 1:21 AM
Yes, it looks like the GDAL support works well when I moved the GDAL dll's into my bin directory. Is nice to throw a file at it and have it "just work". The JP2's that we use have embedded georeferencing. They work just fine w/o a world file. I was testing against 500mb Mr SID images that decompress to 5gb .img files. They display quite rapidly at the zoomed out view. I was just a little disappointed at the performance when zoomed into a very small area, compared to the commercial apSIS package that we are currently using... but I'm pretty sure it is based upon GDAL.

I guess the good news for us is that we have a GeometryFactory implementation that has methods to intersect two polygons, etc, even though the apSIS objects support the full OGC spec. We often found that we needed to "clean up" the results of some of these operations, so in all of our code, we have tended to call the factory method, rather than the geometry object methods. That will be compatible with wrapping NTS, then.