This section provides insight about the components of GeoNode and the way they are used to create the final product.
The main components are:
The GeoSpatial Data Manager: GeoServer
GeoServer provides an OGC compatible data store that can speak WMS, WFS, WCS and others in common formats like GML, GeoJSON, KML and GeoTiff.
It can be connected to different spatial backends including PostGIS, Oracle Spatial, ArcSDE and others.
The Catalog: GeoNetwork
GeoNetwork provides a standard catalog and search interface based on OGC standards.
It is used via the CSW interface to create and update records when they are accessed in GeoNode..
The Website: GeoNode Django Site
This is a Django based project that allows the user to easily tweak the content and look and feel and to extend GeoNode to build Geospatial.
It includes tools to handle user registration and accounts, avatars, and helper libraries to interact with GeoServer and GeoNetwork in a programatic and integrated way.
There is a wide range of third party apps that can be plugged into a GeoNode based site including tools to connect to different social networks, to build content management systems and more.
The Map Composer: GeoNode Client
The main map interface for GeoNode is the Map Composer / Editor. It is built on top of GeoExt and uses OPenLayers, GXP
It talks to the other components via HTTP and JSON as well as standard OGC services.
PostgreSQL & PostGIS/ArcSDE: Database
The database component manages data and configuration information for Geonode/Django, GeoNetwork and GeoServer. All of these tables and data are stored within the geonode database on PostgreSQL. GeoServer can use either PostGIS or ArcSDE to store and manage spatial vector data. (Each layer is stored as a separate table.) When PostGIS is used as the spatial database for GeoServer, the layers are also stored within the geonode database.
Below is an list of the projects GeoNode relies on:
- PostGIS (optional)
- Mapfish printing module
And for building it makes use of:
GeoNode and GeoServer¶
GeoNode uses GeoServer to convert geographic data between various file formats, as well as render styled map tiles. While standard GeoServer components, including its OGC-compliant web services and REST configuration API, provide the bulk of the GeoServer functionality used in a GeoNode site, there are some extensions to help GeoServer and the Django application interoperate more better.
GeoNode and GeoNetwork¶
Customizing the schema used in GeoNetwork
- adapt Layer metadata in Django, analogous to Django’s usual User models
- ExtJS for component-based UI construction and data access
- OpenLayers for interactive mapping and other geospatial operations
- GeoExt for integrating ExtJS with OpenLayers
- GXP for providing some higher-level application building facilities on top of GeoExt, as well as improving integration with GeoServer.
- and a GeoNode-specific framework to handle some pages and services that are unique to GeoNode.
- Components - Ext components handle most interactive functionality in “regular” web pages. For example, the scrollable/sortable/filterable table on the default Search page is a Grid component. While GeoNode does use some custom components, familiarity with the idea of Components used by ExtJS is applicable in GeoNode development.
- Controls - Controls are tools for use in OpenLayers maps (such as a freehand control for drawing new geometries onto a map, or an identify control for getting information about individual features on a map.) GeoExt provides tools for using these controls as ExtJS “Actions” - operations that can be invoked as buttons or menu options or associated with other events.