GeoServer GUI Configuration¶
A GeoServer extension is available to allow GeoServer to interact with a GeoGig repository and use it as data store. It enables a GeoGig repository to be exposed as a remote for cloning, pushing and pulling as well as to publish its data via OGC services (WMS/WFS/WMTS/etc). Each top level tree (often called “feature tree”) in a GeoGig repository corresponds to a GeoServer layer. GeoServer treats a GeoGig repository as a store in much the same way as it does a database.
Building/installing the GeoServer GeoGig extension¶
You can download the latest stable version of the GeoGig GeoServer plugin from the GeoGig home page.
In order to build it from sources, a GeoGig module is currently included in the 2.8.x branch of GeoServer’s community extensions. To build it, clone the GeoServer GitHub repository:
git clone firstname.lastname@example.org:geoserver/geoserver.git
change into the
checkout the 2.8.x branch
git checkout 2.8.x
change into the
and build the Community Modules
mvn clean install -DskipTests assembly:attached -f community/release/pom.xml -P communityRelease
This will build all of the GeoServer Community modules, including the plugin for GeoGig. Once the assembly completes, you should have a plugin bundle here
To install the GeoGig extension, unzip the above bunlde into the GeoServer
WEB-INF/lib folder of your GeoServer install
and restart GeoServer.
unzip geoserver/src/community/target/release/geoserver-2.8-SNAPSHOT-geogig-plugin.zip -d <GeoServer install dir>/webapps/geoserver/WEB-INF/lib/ <restart GeoServer>
You should now be able to configure GeoGig repositories and use them as DataStores.
Configuring a GeoGig Store in GeoServer¶
When GeoServer is built with GeoGig support, it will be available as a Store type in the GeoServer admin UI.
You can configure a store by:
- Creating a brand new GeoGig repository (see Configuring a new GeoGig Repository in GeoServer):
- Importing an existing GeoGig repository that has not yet been configured within GeoServer (see Importing an existing GeoGig Repository in GeoServer):
- Selecting an existing GeoGig repository that has been previously configured within GeoServer:
Regardless of the method used to create the DataStore, you will need to publish each top level tree as a layer individually.
It may be necessary to specify the SRS for your data it if is not recognized by GeoServer.
Configuring a new GeoGig Repository in GeoServer¶
You can create new GeoGig repositories through the Create new GeoGig DataStore page or by navigating to the GeoGig Repositories configuration page in the admin bar
and selecting Create new repository
On the GeoGig Repository Configuration page, you can choose which type of repository you want, either a Directory backed GeoGig repository, or a PostgreSQL backed GeoGig repository. A Directory backed repository will store GeoGig data in a directory on the GeoServer filesystem, while a PostgreSQL backed repository will store the GeoGig information in a PostgreSQL database (the database can be running on the same server as GeoServer, or it can be remote).
Configuring a new Directory backed GeoGig Repository¶
To configure a new GeoGig repository that is backed by the filesystem, select Directory from the Repository Type pull-down, enter a Repository Name, a Parent Directory and click Save.
You can enter the Parent Directoy manually, or select one from a directory chooser dialog by clicking the Browse... link:
Configuring a new PostgreSQL backed GeoGig Repository¶
To configure a new GeoGig repository that is backed by a PostgreSQL database, select PostgreSQL from the Repository Type pull-down, enter the relevant database connection parameters and click Save.
Importing an existing GeoGig Repository in GeoServer¶
You can create new GeoGig repositories through the Create new GeoGig DataStore page or by naviagting to the GeoGig Repositories configuration page in the admin bar
and selecting Import an existing repository
Just like creating new repositories, you have the option to import existing Directory backed repositories or PostgreSQL backed repositories. Select the Repository Type and choose/enter to repository location details:
Cloning, Pushing and Pulling¶
Once GeoServer is configured with a GeoGig repository, you can address it over the network at a URL path of the form:
A sample url as configured in the screenshots above:
It is then possible to clone this repository:
$ geogig clone http://localhost:8080/geoserver/geogig/repos/geogig_dir_repo geogig_dir_repo
Your clone will be configured with the geoserver repository as a remote. This configuration is stored in .geogig/config in your clone:
[remote\origin] url = http://localhost:9090/geoserver/geogig/repos/geogig_dir_repo fetch = +refs/heads/*:refs/remotes/origin/* [branches\master] remote = origin merge = refs/heads/master
It is now possible to push and pull from this remote repository. You can verify this works by testing with the freshly cloned repo:
$ geogig push origin Nothing to push. $ geogig pull origin 100% Already up to date.
Automated Repository Synchronization¶
Repositories configured by GeoServer can be configured with remotes and Automated Repository Syncrhonization. TODO
When using Directory backed GeoGig repositories, the default underlying object database (berkeley db) is single user. While the repository is being exposed over the network by either the stand-alone server or by GeoServer, you will not be able to access the repo from the command line interface. The error is pretty clear about whats going on.
com.sleepycat.je.EnvironmentLockedException: (JE 5.0.58) /Users/jj0hns0n/data/gisdata-repo/.geogig/objects The environment cannot be locked for single writer access. ENV_LOCKED: The je.lck file could not be locked. Environment is invalid and must be closed.
GeoGig repositories backed by PostgreSQL do not have this limitation.