views:

445

answers:

3

Reviewing a new GIS product development requirement and its in a requirement gathering phase. This application needs to run on a Desktop and some part of the application on a mobile device which then can sync to the desktop or the server. This product will deal with imagery, defining boundaries, analysis using layers, polygons, importing shape files, use GPS logging to define boundaries and application to enter records. What would be the ideal development environment ? since one of the major requirement is the time-to-market o this product. Heared a lot about ESRI as an ideal mapping tool and Oracle Spatial or SQL Server as the database players. How do I go about analysing the right tools for this development which involved WEB, Desktop application, Mobile platform and server side application? Any ideas from experienced product development folks!

+4  A: 

If this application is for Windows (desktop) and Windows Mobile, then C#/.Net is an excellent language/platform choice. With Mono, you can also (possibly) cover Mac, Linux and the iPhone as well. Either SQL Server or Oracle would work for the database, although I would go with SQL Server (Oracle, for all its pluses, is just much more of a hassle to deal with).

Since the web component can be ASP.Net, you would have the distinct advantage of having all of your code (even in SQL Server) be C#, so you really only have to be proficient in one language.

MusiGenesis
This answer, while interesting in terms of development platforms, really has nothing to do with developing GIS applications.
Daniel Pryden
Oraaps
@Oraaps: I can't speak for or against Java, as I have very little experience with it. Synchronization between server and device/laptop can be done very easily in C#/.Net with web services running in an ASP.Net app. Both the device app and the laptop app can, in fact, utilize the same web services.
MusiGenesis
@Oraaps: I agree with MusiGenesis that a web services style SOA framework would be a good idea. Having done development against ArcObjects with both C# and Java, I will say that I'd rather do it in C#. If you're going to do Java, I'd look into GeoTools, which is a very nice, fairly full-featured open-source toolkit.
Daniel Pryden
Mono ships a tool for writing iPhone applications -- in .NET. This really has nothing to do with GIS, but people do program the iPhone in .NET.
Sebastian Good
+9  A: 

ESRI definitely does provide a lot of good tools. Especially if you have a mobile device requirement, I'd look into ESRI, since I'm not aware of alternatives that are really strong in the mobile world.

(Edit: When I said "mobile" above, I assumed you meant mobile GIS units, like Trimble units. If you really mean doing mobile GIS on stuff like the iPhone, you're probably better off using platform-specific tools. I know Apple have some pretty good toolkits (under NDA IIRC) that you can use to do geospatial apps on the iPhone. I don't know about what the support looks like on other mobile devices.)

On the database end, Oracle Spatial, SQL Server 2008, and PostGIS are all players. If you're using an ESRI solution, however, be aware that ESRI basically positions itself as an end-to-end solution. So any access to your database will likely go through ESRI's ArcSDE layer, which will mean that the unique advantages that the different database platforms may bring to the table will be lost.

In terms of actual map rendering, I haven't found ESRI solutions to be ideal. In particular, a lot of the ArcObjects code has issues in a heavily multithreaded environment, (e.g. rendering many many maps at once) that just aren't there with other rendering solutions. One alternative is to use ESRI solutions for parts of your system (e.g. mobile support, analysis), and use other solutions for other parts.

My own tendency would be to lean toward using open-source tools for as many things as possible. Some tools to look into include:

Of course, if time-to-market is a key constraint, then one of the major things to think about is what your team already knows. If your team is familiar with ESRI tools and not with open-source alternatives, you might want to go that route simply out of expedience.

And, as MusiGenesis points out, C#/.NET may be a good platform to look into, in addition to all these tools. It is certainly possible to do ArcObjects development with C#, and my experience is that it's a nicer environment for ArcObjects development than straight COM from C++.

Daniel Pryden
+1 for a well thought-out, helpful answer. :)
MusiGenesis
+1  A: 

I would suggest to take a walk through the stack of projects developed under umbrella of OSGeo Foundation - OSGeo.org. There is a variety of Open Source projects available for various applications, development platforms, etc.

mloskot