Software Architecture for Web Mapping
In general terms, Software Architecture for Web Mapping includes four main components:
Desktop applications
They require installation on each client PC. Generally those applications allow edition and visualization of geographic data. In many cases desktop GIS applications can be extended by using commercial plug-ins and / or software development kits.
Such tools are generally used by trained professionals in the field of Geographic Information Systems and generally are not intended for web publishing.
• Commercial alternatives: Arcgis, Mapinfo, Geomedia, Autodesk
• Open source / free alternative: Grass, QGIS, gvSIG, Udig
Desktop applications generally interact with data repositories stored in geographic databases or using open and proprietary file formats as SGML, DXF, SHP and DGN.
Geographic Databases
A geographic database allows storing alphanumeric and geographic data in a structured way. Those specialized databases usually are defined as "a collection of interrelated georeferenced data that is able to manage and maintain a large amount of information, facilitating interaction between different GIS systems (Fotheringham and Wegener, 2001)."

• Commercial alternatives:Oracle-ArcSDE, Oracle Spatial, Sqlserver, Db2
• Open source / free alternatives: Postgres-Postgis, Mysql
PostgreSQL is an object-relational database management system (ORDBMS). It is released under a BSD-style license and is thus free software.
PostGIS (http://postgis.refractions.net/). is an open source geographic information system software program that adds support for geographic objects to the PostgreSQL object-relational database. PostGIS follows the Simple Features for SQL specification from the Open Geospatial Consortium. As such, PostGIS includes:
- Geometry types for points, linestrings, polygons, multipoints, multilinestrings, multipolygons and geometrycollections.
- Spatial predicates for determining the interactions of geometries using the 3x3 Egenhofer matrix.
- Spatial operators for determining geospatial measurements like area, distance, length and perimeter.
- Spatial operators for determining geospatial set operations, like union, difference, symmetric difference and buffers.
- R-tree spatial indexes for high speed spatial querying.
- Index selectivity support, to provide high performance query plans for mixed spatial/non-spatial queries.
The PostGIS implementation is based on "light-weight" geometries and indexes optimized to reduce disk and memory footprint. Using light-weight geometries helps servers increase the amount of data migrated up from physical disk storage into RAM, improving query performance substantially. (Taken from wikipedia)
Web Map Server
A web map server is a middleware tool that allows the publication of geographic information over the web in several formats including raster and vector file types. They usually provide application programming interfaces that allow developers to create custom user interfaces over them.
• Commercial Alternatives: ArcGis Server, ArcIMS, etc.
• Open Source / Free Alternatives: Mapserver, Geoserver, etc.
MapServer is an open source development environment for building spatially-enabled internet applications. It can run as a CGI program or via Mapscript which supports several programming languages. MapServer was developed by the University of Minnesota. It was originally developed with support from NASA, which needed a way to make its satellite imagery available to the public.
Development Environment
System integration can be achieved using different components and APIs generally available for Java, PHP or Python programming languages. Those tools ease the development of complex interactions between several middleware services such as Map Servers, Process Servers, Data Repositories, etc.
User interaction has been created based on Rich Internet Applications (RIAs) developed with different tools such as Adobe Flex 3 and Ajax. That kind of systems provides a more efficient framework for web development in terms of usability and response times in comparison to traditional HTML based web development.
