Natural Language GeoServer Queries Using OpenAI and WPS
11-05, 11:00–11:30 (America/New_York), Lake Anne

Explore a GeoServer community module that integrates OpenAI’s API with WPS to transform plain language queries into ECQL filters. This talk showcases how AI and GeoServer’s catalog can enable intuitive, flexible, and human-friendly access to spatial data.


As open geospatial tools become more powerful and widely adopted, there's an increasing need to make them more accessible—especially for non-technical users. One promising path toward accessibility is enabling natural language interaction with spatial data services.

In this presentation, I will introduce a new GeoServer community module under development that integrates OpenAI’s GPT API with GeoServer's Web Processing Service (WPS) framework to allow users to pose plain-language questions—such as “Where are the parcels over 5 acres in Montgomery County?”—and have them translated automatically into valid WFS ECQL filters.

The module uses GeoServer’s internal catalog and LayerInfo metadata to provide context for the OpenAI model, enabling it to interpret queries with knowledge of:

Available layers and attributes

Attribute types and spatial references

Layer-specific semantics (e.g., field names like acreage, parcel_id, etc.)

This approach turns GeoServer into a more human-friendly spatial server, letting analysts, planners, and decision-makers interact with complex spatial data services without writing ECQL, CQL, or understanding WFS schemas.

Key topics covered in the presentation:
Technical architecture of the integration: WPS process, OpenAI prompt design, catalog introspection

Demo of real-world queries and outputs

Use cases in planning, environmental analysis, and public engagement

Next steps for community adoption and feedback

Attendees will come away with:

A concrete understanding of how to combine GeoServer with LLMs

Inspiration for extending their own systems with conversational geospatial interfaces

Information on how to contribute to or test the module as it matures