Building a GeoSciML WFS Server
I want to help make the process of building a GeoSciML WFS server easier. I'll be collecting links to relevant information, cookbooks, walkthroughs, etc. Hopefully this will chronicle my process of going from knowing practically nothing about how to implement a service to making one work.
The official documentation for the app-schema extension has been revamped! There is a lot more to look through here - absolutely a must-read for anyone interested in using GeoServer to serve GeoSciML features.
I've been in the midst of a daily back-and-forth email discussion with the app-schema developers on the GeoServer-Users mailing list. Reading through the conversation may be helpful, as they've already resolved a number of issues I've had. Here's a link to the thread:
I posted an example of the <typeMappings> section of a GeoServer/app-schema mapping file here: A Sample GeoServer Mapping file for NCGMP09 to GeoSciML. Checkout this other post to see where your mapping file should be, and how your datastore will refer to it: GeoServer Complex-Feature WFS Configuration: Directory Structure.
The <typeMappings> section is where you indicate what fields in your source data (NCGMP09) go into which fields in your output data (GeoSciML). Here I want to describe the different levels of complexity you can undergo when making a mapping file.
The Simplest Case: From one Field to Another
I'm almost done building a complete mapping file that will output GeoSciML MappedFeatures from polygon features in a database that follows the NCGMP09 schema. This schema, developed as part of the USGS National Cooperative Geologic Mapping Program, is a proposed standard database schema for the publication of single digital geologic map. An ESRI Personal Geodatabase implementation of the NCGMP09 schema is available on the website linked above.
When you configure a complex feature service, you have to manually map your data connection parameters into an XML document called a mapping file. I found that the easiest way to make this connection is as follows:
At present, there is no user-interface component that helps you configure a complex-feature WFS in GeoServer. I'm sure that it is being worked on, but in the meantime, the configuration is done manually, by building the appropriate directory structure and putting XML configuration files in the right places.
This is an example of the directory structure that has to be in place.
It works! Once you get the app-schema extension installed and the tutorial data in place, it works just fine. Make sure that in your GetFeature requests you specify the outputFormat as GML3, as it won't work at all in GML2 (which GeoServer defaults to if no outputFormat is specified).
Also, be aware that the app-schema extension is only supported at WFS version 1.1.0.
Now I can move on to beginning to map my data into GeoSciML features. I'll write some more walkthrough as I put it together.
I've been spending the last couple of days working with GeoServer version 2.0-beta2, which introduces the ability to serve complex features. Serving complex features is a critical component of providing geologic data in GeoSciML format.
GeoServer accomplishes this through the use of what's called the "app-schema" extension. Unfortunately, there is not yet a user-interface for configuring the extension, and so you set up your complex features manually, by creating folders and configuration files in the right places that say the right things.
GeoServer has released a 2nd Beta of version 2.0. You can read about it on their blog.
This is exciting because they've introduced what they're calling the "app-schema extension". Essentially, it represents real support for complex features. This will open the door to GeoSciML delivery through the friendly GeoServer interface.
There have already been successful implementations of GeoSciML Web Feature services, using a few different approaches.