This project is not covered by Drupal’s security advisory policy.

The geo module is the next generation geospatial module for Drupal. Like Location, it provides storage for points, but it also supports lines and polygons.

Why is this useful? Because locations are more than addresses or dots on a map. Windmills in a field, for example, don't have a postal address for geocoding, but still need their coordinates stored and mapped. And data such as routes, city boundaries, or flight patterns all have storage and search requirements that cannot be expressed by simple dots. Fortunately, there is an open standard for expressing this type of data, and Geo takes advantage of spatially enabled databases (PostGIS and MySQL Spatial) for native storage, which leads to faster, more informational queries.

The development goal of this module is to make these features available to native Drupal functionality, and usable for just about anyone.

Included modules

  • Geo: An API module that provides access to storage and query functions, for use by other modules.
  • Geo Field: Provide a geo field for storing points, lines or polygons on any node type. This allows you to store user-generated information that includes geospatial data.
  • Geo Data: Download shape data from the U.S. census or any other source, and import this data into your site. Once you've done that, you can create a dropdown field in CCK that references this information. For example, import a list of county boundaries, and let your users select their county by name.

Once information is stored in a field ( through Geo Field or Geo Data ), it can be queried using Views. For example, you can find "all users within a given county".


There are no requirements for installing Geo, but to use its API, you must have at least MySQL 4.1, or PostgreSQL with the PostGIS extensions. To do anything useful you will probably want to install CCK and Views.

As PostGIS provides much better support for spatial features, it's the preferred database for anything that requires accuracy or configurability. On the other hand, MySQL spatial extensions are included with MySQL by default, so that's a much faster way to get started.

Related modules

Geo provides storage and views integration for any type of Geospatial data, but you'll want to use these other modules to collect this data and put it on a map.

  • Geocode can derive data that Geo can use from any CCK Text field, a Postal field, or geo data that's embedded in Imagefield or other Filefields.
  • Openlayers can collect Geo data for CCK field, and show it on a map on nodes and views (1.x version only!)


This module was originally sponsored by Advantage Labs and written by Mark Fredrickson, with contributions by Allie Micka and bdragon

It was refactored and rewritten for Drupal 6 by Allie Micka, and co-sponsored by Advantage Labs and the Alliance for a Better Minnesota.

Geo June Sponsors

The following individuals and organizations have contributed to the ongoing development and sustainability of Geo through the Geo June initiative.

Development will go a lot faster if we can get funding or feature sponsorship! If you see something your organization needs and can help us to prioritize building it for you, please contact the maintainer.

Project information