I need to develop a location based extension to an existing app that will allow users to see all other users that are around them (within a fixed aerial distance). The existing app was developed using Axis (Web services) + Spring + Hibernate + MySQL.

Requirements are:

  1. Java framework (preferably open-source unless commercial solution offers big advantages). Integration with Hibernate, Spring, etc. preferred.
  2. User needs to update his/her location on set periods of time using standard API (i.e. SOAP or REST)
  3. User need to be able to update location by either sending latitude and longitude or a US address.
  4. Possibly use cell-tower and/or wifi data for some devices if GPS not available.
  5. There is no need to have walking or driving directions. There is no need to have driving or walking distance, just approximate aerial distance.
  6. Users of the app keep on moving (sales-people) and update their location in set periods of time (every ~15 min.)
  7. Project might change in the future to handle other Points of interest (i.e. warehouse locations, clients' locations), but those will likely be in fixed physical positions (vs. users that keep on moving).
  8. Performance of retrieving users around a specific user is essential; therefore will prefer an in-memory map (and not a database query).
  9. At this point there is no need to render a map. That might change though.

I have heard or saw the following terms and frameworks and I am not sure what do they mean and which one of them to use:

  • ESRI
  • Shapefiles
  • GeoServer
  • GeoTools
  • PostGIS

I will really appreciate a brief overview of the steps I need to take to develop such a project, whether and how to use the above tools, which data (i.e. GPS, Wifi, Cell-towers) is freely available and which do we need to pay.

References to some tutorials or books will be greatly appreciated.

Thank you!

+1  A: 

I really dislike your question. As a Geospatial professional with a university degree and 12 years experience I would like to say: hire someone that can do the job for you.

But I will try to give some sort of decent answer:

  • The entire application could be built with open-source.
  • Maps require geodata to provide a background. this can be either; real expensive (teleatlas or navteq data) or priceless (openstreetmap)
  • ESRI is a company
  • Shapefiles are a file format to store geodata
  • Geoserver is an open source solution to serve maps
  • GeoTools are java libraries to do conversions, create features and do transformations that also form the base for geoserver
  • PostGIS is a database to store geodata in
I am not doing the job, but I need the general overview of the requirements. Thanks for your answer. Less than interested in the specific tools, I was interested in having a general understanding of the data, tools, and frameworks required to accomplish the job.
+1  A: 

In general;

Everything is possible. I would suggest to first write down what you want to build, who you want it to maintain, what server architecture you want it to work on and then start to eliminate the options.

First, you need to select a backend to store your data. For this, a couple of database systems have a "spatial" extension or module, these extensions support projections, transformation and spatial querying (nearest, within, touches, ...):


  1. Oracle spatial
  2. MS SQLserver spatial

Open Source:

  1. postgis (for postgres)
  2. MySQL spatial
  3. MonetDB (work in progress)
  4. flat files like ESRI shapefiles

Then, you need a server application to host the geospatial datasets as (vector or raster) maps:


  1. ESRI arcIMS
  2. ESRI arcGIS server
  3. PB MapInfo MapXtreme
  4. ...

Open Source:

  1. UMN Mapserver
  2. Geoserver
  3. Mapnik

Then finally, if you want to create a web application with interactive maps, you need some Javascript web map framework:


  1. Google Maps
  2. PB MapInfo MapXtreme
  3. Map24
  4. ...

Open Source:

  1. OpenLayers
  2. Chameleon
  3. MapFish
  4. GeoExt

You can also use a Flash web map framework like:

  1. Flamingo-MC

All this, depending on the chosen architecture requires at least a webserver with either cgi or servlet runners.

Basically, it all comes down to your organization: What is the architecture your organisation is currently working with? How is the expertise? What architecture matches your companies area of expertise?

When going commercial, your licenses range from $500,- to $500.000,- depending on the vendor. When using open source, your licenses of course wil be nill. But you also need to calculate the learning curve and the configuration time needed.