Introduction to the main open source WebGIS

WebGIS consists of four parts, from the name, it can also be seen at least including Web and GIS, which involves complex technology. From the perspective of WebGIS, open source tools can be divided into component products and full stack products.

Components of WebGIS

Four Components of Web GIS: Web GIS application Development and GIS Servers

  1. Client
  2. Web services and application services
  3. GIS service
  4. Data service

Client: The client is the place where the user interacts with the spatial objects and analysis functions in the Web GIS. It is also where Internet GIS programs present output to users.

Web server and application server: The web server responds to requests from a web browser via HTTP. When the web server passes the request to another program, it requests the service from the application server. The application server acts as a converter or connector between the web server and the GIS server.

GIS Server: The GIS Server is a major component that performs spatial queries, performs spatial analysis, generates and provides maps to clients based on user requests.

Data Server: A data server provides both spatial and non-spatial data in a relational or non-relational database structure.

In this website, we pay special attention to GIS servers and client applications. There are many GIS servers on the Internet, such as GeoServer, MapServer, Mapnik, MapGuide, QGIS servers, etc. All of these servers are open source servers, which are available for free. ArcGIS also provides a server, but it is not free, but has many additional features. All open source servers are available for free download from their respective websites.

Component product

The following products are typically used as components and combined with other tools in various combinations to create custom applications.

MapServer

MapServer is an open source platform for publishing spatial data and creating interactive map applications to the Web.It has existed since the mid-1990s and is considered mature and stable, and continues to grow actively.The main focus is on generating maps from multiple layers, including base images and spatial datasets.It also provides smart labels, including advanced typography and layout, including collision detection.It can read and provide spatial data in a variety of formats, including Shapefiles, WMS, GDAL, PostGIS and GeoTIFF.It is commonly used to generate map tiles and their MapCache extensions. It has libraries that support application development in a variety of languages, including Python, Perl, Ruby, Java, and PHP.

http://www.mapserver.org

PostGIS

PostGIS is an extension of the PostgreSQL database that supports spatial queries.PostgreSQL is both a relational database and an object database. It is widely regarded as the most advanced open source database, which is the same as Oracle and MS-SQL.PostGIS supports a variety of spatial queries, including proximity, radius, bounding box, collision/overlap detection, and more. It is a very useful tool that is often used in Web GIS projects.

http://postgis.net/

OpenLayers

OpenLayers is a front-end UI library for creating web-based spatial applications using javascript.It supports a variety of layer sources and backends. For example, you can extract map tiles from GoogleMaps or custom tile sources.The advantage is that it enables developers to reuse elements such as tile sources, but instead focuses on more unique aspects of their applications, such as "business logic." Default components such as tile source can be easily swapped out later. It supports bitmap and vector layers, including points, lines and polygons. One of its most widely used features is the ability to overlay data layers on a base map.

http://openlayers.org

GDAL (Geospatial Data Abstraction Library)

GDAL is a translation library for geospatial data formats. It can import and export a wide variety of files and encoding types.It can be used to convert spatial data between different projection systems. The raster data format is processed by GDAL, and the vector data format is processed by OGR which is now included in GDAL.It can also be used to create mosaics from multiple image file sources. GDAL is a valuable tool for getting data from different sources and transforming it into collaborative work.

http://www.gdal.org

TileMill

TileMill is a desktop application that generates a map tile image and then hosts it as a static file for use as a base layer.TileMill can be used to create visually stunning base layers.It is very aesthetically pleasing, and includes many well-thought-out presets that enable people without a design background to create very attractive and professional map layers.The development of TileMill is led by a company called MapBox. They offer several attractive paid services, including tile hosting and a selection and carefully tuned base layer.

http://www.mapbox.com/tilemill/

Leaflet

Leaflet is a Javascript library with a strong emphasis on front-end UI. It supports an diverse mix of base layers and geometry types. It covers somewhat similar territory to OpenLayers, but with a slightly reduced feature set. It’s advantage relative to OpenLayers is its outstanding support for mobile devices, great production values, clean minimalist design, and a strong emphasis on performance.

http://leafletjs.com/

Stack Products

The following products are distributed as “stacks” or “bundles”. They are pre-configured combinations of modular products. Some can be used as-is (after adding configuration and base layers) and all of them can be further extended to create custom applications.

GeoServer

GeoServer is primarily based on the Java language. It provides basic functionality for creating and editing geospatial data and making maps available in a service-oriented architecture. It uses the OpenLayers module and provides implementation of the Web Map Service (WMS) standard. It also makes use of the GeoTools framework, which covers a slightly smaller subset of MapServer’s functionality. Like GeoServer itself, which is written in Java. It will appeal largely to developers already working with Java- based tools and platforms. http://geoserver.org/display/GEOS/Welcome

MapGuide

MapGuide is a full-featured web-based GIS application, primarily written in PHP and Javascript. It includes an AJAX-based application UI for viewing and creating maps and data layers. It supports an impressive range of layer formats including ESRI SHP, SDF, ESRI ArcSDE, PostGIS, SQL Server Spatial, Raster file formats (via GDA), OGC, WMS and WFS. It is based primarily on a variety of input formats, out-of-the-box editing tools, and support for developers who working with PHP.

http://mapguide.osgeo.org

GeoMoose

GeoMoose combines several popular open source libraries to create a powerful and flexible mapping platform, with emphasis on Javascript/AJAX on the front-end. It uses MapServer as a back-end and OpenLayers and Dojo (both Javascript-based) for its user interface. It provides a robust set of tools for viewing, editing, and querying data from the browser. Its development community seems to be very active and have a good forward trajectory. Its appeal comes from its feature set and modern, approachable user interface. Its well-documented Javascript API will make Javascript developers and other Web builders accessible, as most Web developers have at least been exposed to Javascript.

http://www.geomoose.org

GeoDjango

GeoDjango is a set of spatial extensions for the Django application framework. Django is written primarily in Python and is one of the most popular general-purpose frameworks for building web apps with Python. Unlike GeoMoose or MapGuide, it does not provide an application out of the box, and is rather a set of very nicely crafted building blocks for building custom applications. Unlike some of the other stack products described above, it makes less assumptions about which other geospatial tools will be used in the stack, and provides integration points through a series of clearly-designed, well-documented APIs. It will likely appeal to developers who want more choice and control in the building of their applications as well as those who prefer the Python language.

http://geodjango.org

MapFish

MapFish is another stack product from the Python community. It is based on the (Python-based) Pylons framework, as well as (Javascript-based) OpenLayers and ExtJs frameworks. Unlike GeoDjango, it provides a simple application out-of-the-box, which can be customized and extended. It also supports development in Rails and PHP via plugins. Its appeal is based on the fact that it provides a clean, compact starting point, that can be easily extended in a variety of languages. Its trade-off relative to GeoDjango is that it makes more choices for the developer, so makes getting started a bit faster. It will likely appeal to developers who have Python or Javascript experience, as well as Rails/PHP developers who value its clean, compact design.

http://mapfish.org