GeoServer Blog
CITE 2026 Sponsorship
A major accomplishment in 2025 was re-achiving CITE Certification status for GeoServer. Many thanks to all who were involved! After approximately 10 years, we can once again officially confirm that GeoServer is OGC compliant.
To maintain Certification is an annual expense for the project - and a sponsorship opportunity for you!
Thanks to Gaia3D and OSGeo:UK for sponsorship covering the expense of CITE Certification for 2025.
Certification January 9th 2026 Deadline
Our 2025 CITE Certification for GeoServer 2.27 expires on January 9th.

This certification process is an annual expense of around $1000 USD, and we will require sponsorship for 2026 to maintain certified status. GeoServer implements a number of different standards, each one of which costs $150 USD to certify each year. The $150 per certification cost makes use of an agreed on rate offered to the Open Source Geospatial Foundation as a not-for-profit organization. The approximate $1000 USD expense will increase slightly as we gradually adopt additional OGC API standards into the application.
CITE 2026 Sponsorship Opportunity
OGC CITE Certification is important for several reasons:
- Provides assurance that GeoServer may be integrated in solutions as intended by Open Geospatial Consortium.
- Offers an independent source of black-box testing ensuring that each GeoServer release behaves as intended.
- The Provides a logo and visibility for the project helping to promote the use of open standards.
- Inclusion in the list of certified products helps people discover GeoServer, and allows GeoServer to be used by organizations requiring certification.
In addition to CITE certification offering value for the project, sponsoring can provide excellent visibility for potential sponsors, with your logo appearing on the GeoServer home page, and in presentations when each standard is mentioned.

If you/your organization is in position to support this activity, please contact any member of Project Steering Committee, or the OSGeo treasurer. For details visit the GeoServer Sponsorship Page. The more organizations that are able to sponsor, the lower the expense will be to each organization (sharing the approx USD $1,000 per year cost).
Thank you for your support!
CITE 2026 Sponsorship Fufilled
Sponsorship: Thanks the the following organizations for stepping forward with financial assistance. We are now in position to maintain certification for calendar year 2026.
In-Kind: Thanks to following organizations for “reference implementation” certification. To act as a reference implementation GeoServer must maintain a service operating as an example of how the standard is intended to function. The Open Source Geospatial Foundation has provided hosting, and AfriGIS provided setup and maintenance.
In-Kind: Finally thanks to the organizations that have directly contributed to passing the test and integrating these tests into our quality assurance workflows.
GeoServer 2.27.4 Release
GeoServer 2.27.4 release is now available with downloads (bin, war, windows), along with docs and extensions.
This is a maintenance release of GeoServer providing existing installations with minor updates and bug fixes. GeoServer 2.27.4 is made in conjunction with GeoTools 33.4, and GeoWebCache 1.27.4.
Thanks to Peter Smythe (AfriGIS) for making this release.
Security Considerations
This release addresses security vulnerabilities and is an important upgrade for production systems.
See project security policy for more information on how security vulnerabilities are managed.
Release notes
Improvement:
- GEOS-12012 Switching CSVPPIO Strategy from ATTRIBUTES_ONLY_STRATEGY to WKT_STRATEGY
Bug:
- GEOS-10509 WFS Request fails when XML POST body is larger than 8kB
- GEOS-11926 ogcapi plugin makes WFS advertising an outputFormat which is actually unavailable
- GEOS-11930 OGC-API extension breaks security REST API
- GEOS-11965 KMZ export incorrectly references remote icon URLs instead of embedding them in the KMZ archive
-
GEOS-11981 POST /security/authproviders 400: Unsupported className - GEOS-11988 Fix bug: preserve metaTilingThreads=0 in saneConfig()
For the complete list see 2.27.4 release notes.
Community Updates
Community module development:
- GEOS-11947 Add the ability to skip numberMatched in STAC/OpenSearch for EO responses
- GEOS-11983 GSR /query fails with HTTP 500 when where parameter is empty
- GEOS-12000 Ignore DescribeFeatureType requests without typeName in Features Templating schemas override
Community modules are shared as source code to encourage collaboration. If a topic being explored is of interest to you, please contact the module developer to offer assistance.
About GeoServer 2.27 Series
Additional information on GeoServer 2.27 series:
- GeoServer 2.27 User Manual
- CITE Certification achieved
- GeoServer 2025 Q2 Developer Update
- GeoServer 2025 Roadmap
- Content-Security-Policy Headers
- OGCAPI Features Extension
- File system access isolation
- Promote data dir catalog loader to core
Release notes: ( 2.27.4 | 2.27.3 | 2.27.2 | 2.27.1 | 2.27.0 )
Master GeoServer WPS - Buffer & Intersection Analysis
GeoSpatial Techno is a startup focused on geospatial information that is providing e-learning courses to enhance the knowledge of geospatial information users, students, and other startups. The main approach of this startup is providing quality, valid specialized training in the field of geospatial information.
( YouTube | LinkedIn | Facebook | X )
Master GeoServer WPS - Essential Buffer & Intersection Analysis Techniques!
This blog post provides how to use the Buffer and Intersection analysis in the WPS Request Builder. The WPS Request Builder is a demo page used to try out the Web Processing Service (WPS) used to execute geospatial processes for transformation, summary and analysis.
If you want to access the complete tutorial, click on the link.
Introduction
Buffer analysis is a crucial process in Geographic Information Systems (GIS). It involves creating a zone around geographic features — such as points, lines, or polygons — to analyze spatial relationships and proximity. This type of analysis has various applications, including determining influence areas, assessing environmental impacts, and evaluating accessibility. It provides insights for decision-making in fields such as Urban planning, Natural resource management, and Emergency response planning.
In GeoServer, users can create buffer zones around geographic features by specifying the input geometries and the buffer distance. This functionality is part of the GeoServer WPS extension, which provides a standardized interface for various geospatial processing algorithms.
To create buffers in GeoServer, navigate to the Demos section and select the WPS Request Builder option. In the Choose Process section, type buffer to see a list of available buffer related process. As you can see, GeoServer has six such processes.
As mentioned in our previous blog post, the JTS and geo processes do not directly access to the GeoServer layers. Instead, these processes utilize external libraries, specifically the Java Topology Suite (JTS) and GeoTools.
JTS:buffer
- From the list, select JTS:buffer. This operation requires three inputs for execution:
Text,Reference, andSubProcess.
In the text mode, you need to enter the geometry data in a standard formats For this example, use the application/wkt as the input format, and enter the geometry data:
POINT(-100 50)
- Enter the buffer distance in the Distance textbox. This parameter defines the size of the buffer created around the input feature and is represented as a double data type. In this case, enter
0.1degrees, which is based on EPSG:4326 coordinate system.
Note: The distance value is mandatory and corresponds to the geometric units being used.
-
Choose your desired output format from the Process Outputs section. This enabled you to select the most appropriate format for your specific usecase or workflow. The result can be further processed, visualized, or used for additional spatial analysis. The available formats include: application/wkt , application/json.
-
Select the application/wkt format and press the Execute process in New Page button.
Now that you have executed the buffer operation, you can view the results. Navigate to WKT Map and enter the resulting geometries in the WKT textbox to visualize the buffer created around the specified point.

Go back to geoserver software to explain other parameters:
-
The quadrantSegments parameter in the JTS:buffer, is an optional parameter for shaping quarter-circle buffers. Increasing its value enhances the buffer’s smoothness and circularity but also raises vertex count, which can affect performance.
-
The default is 8 segments, which create 32 sides that are more circular than the others. It’s important to balance precision with processing efficiency, as a higher value improves curve quality but increases computational complexity.
-
Set the distance buffer to
0.11and quadrantSegments to3, then press the Execute process in New page. Now see the resulting shape. Note that the distance value is measured in units provided by coordinate reference system (not in pixels).
As you can see, the result is somewhat circular due to the smaller number of sides.

Go back to geoserver again to explain the last parameter, capStyle.
-
The capStyle is an optional parameter that specifies the type of cap style used at the ends of buffer polygons. There are three available options: Round, Flat, and Square.
- Round: This is the default option, which creates a rounded appearance at the ends of a buffer around a line feature.
- Flat: This option creates clean and straight ends.
- Square: This option creates a more pronounced squared-off effect.
By selecting the appropriate cap style, you can customize the appearance of your buffer areas according to your visualization needs.
- To use the capStyle option, enter the geometry data in the application/wkt format.
- Geometry data: LINESTRING (-101.9 37.36, -101.92 37.7, -100.9 37.46)
- Distance value: 0.01
Press the Execute process in New page button. Repeat this process for the Flat and Square cap styles and then view the results.

GS:BufferFeatureCollection
This function utilizes the GeoTools library to process feature collections by generating buffered geometries around each feature. Users can specify the buffer distance as either a fixed value or dynamically based on a specific field’s value.
The first input parameter is the InputFeatureCollection, which can accept four types of input: Text, Reference, subprocess, and vector_layer. The default option is the vector layer.
For this example, we will use the archsites layer from GeoServer. Select this layer from the Choose one drop-down menu.
We will first apply a fixed value for the buffer distance parameter, followed by using a specific field to dynamically adjust the buffer distance.
Fixed Value Buffering
- Enter a distance value suited to the coordinate reference system (CRS) of the layer. As the
archsiteslayer uses the UTM crs, you can set a value like20.
Note: Filling this parameter is mandatory.
-
Once the input features and distance have been defined, choose the output format for displaying the results of the buffering operation.
-
Select the application/zip format from the Process Outputs section, and then press the Execute process in New Page button.
After the process is complete, open the result file using QGIS software. You will see that buffer areas of 20 meters have been created around each feature.

Dynamic Value Buffering
-
To use a specific field for buffer distance, first, enter a
zerovalue in the mandatory distance box, then specify the attribute name that contains numerical values for the buffer distances. -
In this example, we will use the
catattribute. -
Again, choose the application/zip mime-type for the output file format and press the Execute process in New Page button.
After processing is complete, add the resulting file to QGIS software. As you can see the buffer areas around each feature have different distances based on the values found in the cat field.
Intersection analysis
Intersection analysis is a crucial spatial technique used in GIS to explore and understand the relationships between various geographic features or datasets. This method focuses on examining how different data layers overlap and interact, which provides valuable insights for decision-making processes in areas such as urban planning, environmental management, and resource allocation.
In GeoServer, Intersection analysis facilitates the identification of overlapping areas between features from two distinct datasets. This operation can be efficiently implemented through the WPS request builder, making spatial analysis both effective and user-friendly.
To carry out an intersection analysis, select gs:IntersectionFeatureCollection from the Choose process menu.
-
The first and second feature collections, serve as the main input features and are considered mandatory parameters for this process. Other parameters are optional.
-
For this example, choose
sf:streamsas the first feature collection andsf:restrictedas the second feature collection. -
Select the application/json format from the Process Outputs section, then press the Execute process in New Page button.
After execution, you can view the results by navigating to geojson.io and entering the resulting geometries in the textbox provided.

Go back to geoserver software to explain other parameters:
The intersection analysis also allows you to specify which attributes from the input feature collections should be retained in the output. If this selection is not made, all fields from each layer will be included by default.
- In this example, enter
labelto retain this specific field from the first layer.
IntersectionMode: This parameter allows users to specify how to handle the intersection of two feature collections. By choosing between the Intersection, First, and Second options, users can tailor the results to fit their specific spatial analysis needs.
Let’s describe each of them:
-
Intersection: This is the default option, which includes only the features that geometrically overlap between the two input collections. Only areas where both inputs intersect will be represented in the output.
-
First: This mode filters the first feature collection by retaining only those features that intersect with any feature from the second collection. Features in the first collection without any intersection will be excluded from the output.
-
Second: This mode outputs features from the second collection, retaining only those that intersect with any feature from the first collection.
-
For this example, we select the First option in the intersectionMode parameter.
To view the results and incorporate the resulting geometries into QGIS, press the Execute process in New Page button again. The output will consist only the streams_label field from the first layer.

This means that the output features will only include those from the first collection that intersect with features in the second collection.
Additionally, the analysis includes two boolean options that determine if additional area attributes are included in the output:
-
percentagesEnabled: When set to true, this option includes attributes indicating the percentage of each feature’s area relative to the total area of each respective input feature collection. By default, this option is set to false.
-
areasEnabled: Similar to the percentagesEnabled mode, this option when enabled or set to true, includes attributes representing the area of each feature in the intersection. Its default setting is also false.
By carefully defining the parameters and choosing the appropriate options, users can effectively perform intersection analysis in GeoServer and generate meaningful spatial insights.
In this session, how to use the Buffer and Intersection analysis in the WPS Request Builder. To access the full tutorial, click on this link.
GeoServer 2.28.1 Release
GeoServer 2.28.1 release is now available with downloads (bin, war, windows), along with docs and extensions.
This is a stable release of GeoServer recommended for production use. GeoServer 2.28.1 is made in conjunction with GeoTools 34.1, and GeoWebCache 1.28.1.
Thanks to Andrea Aime for making this release.
Security Considerations
This release addresses security vulnerabilities and is considered an important upgrade for production systems.
- GEOS-11921 - CVE-2025-21621 - Reflected Cross-Site Scripting (XSS) vulnerability in WMS GetFeatureInfo HTML format (Moderate)
- GEOS-11922 - CVE-2025-58360 - Unauthenticated XXE via WMS GetMap (High)
The use of the CVE system allows the GeoServer team to reach a wider audience than blog posts.
See project security policy for more information on how security vulnerabilities are managed.
Release notes
Improvement:
- GEOS-11950 WMS cascade: fully respect ‘restrict to layer bounds’ flag on GetMap requests
Bug:
- GEOS-4159 Layer from SQL view feature type details not refreshing after editing sql query (and refreshing attributes there)
- GEOS-11930 OGC-API extension breaks security REST API
- GEOS-11963 BlobStorePage breaks when failing to save a blob store configuration
- GEOS-11965 KMZ export incorrectly references remote icon URLs instead of embedding them in the KMZ archive
-
GEOS-11981 POST /security/authproviders 400: Unsupported className - GEOS-11988 Fix bug: preserve metaTilingThreads=0 in saneConfig()
Task:
- GEOS-11898 GeoFence: issues in evaluation of virtual layer services access
- GEOS-11962 Run CITE tests against Java 17, 21 and 25
- GEOS-11987 ImageN 0.9.1 migration requires renaming of registryFile.jai to registryFile.imagen
For the complete list see 2.28.1 release notes.
Community Updates
Community module development:
- GEOS-11959 New community module GeoWebCache Google Cloud Storage
- GEOS-11961 OSEO layer management: Support creation of image mosaics in CRS other than 4326
- GEOS-11980 Add support for uploading a single parquet file to GeoServer via REST
- GEOS-11983 GSR /query fails with HTTP 500 when where parameter is empty
Community modules are shared as source code to encourage collaboration. If a topic being explored is of interest to you, please contact the module developer to offer assistance.
About GeoServer 2.28 Series
Additional information on GeoServer 2.28 series:
GeoServer 3 Sprint Update
GeoServer 3 is a major upgrade led by a consortium of Camptocamp, GeoSolutions, and GeoCat and backed by a successful crowdfunding activity.
This is a major investment in the future of GeoServer and we are pleased to provide a project update. The GeoServer 3 code sprint completed last week, and we have quite a list of accomplishments to share.

Milestone 1 Accomplished
With the release of GeoServer 2.28.0 earlier this month Milestone 1 is officially accomplished. Our goal for Milestone 1 was to clear the decks of as much work as possible before performing the big migration to Spring Framework 6. The key objectives met are:
-
Replace the image processing engine, updating from Java Advanced Imaging 1.1.3 to Eclipse ImageN 0.9.0 which was released for the occasion. This is a major technical accomplishment, years in the making, combining the Oracle donation of the JAI codebase with all the work done by GeoSolutions on JAI-Ext.
The Eclipse ImageN integration was completed for the release of GeoServer 2.28.0. This activity was directly sponsored by the Office of Public Works.
-
Java 17 LTS minimum, and related maven “bill-of-materials” improvements, making it easier to manage the vast quantity of updates planned for Milestone 2.
-
Replacement for GeoServer OAuth2 support with a new OAuth2 Open ID Connect module is available to try out today and has been tested (and documented) with Google, GitHub, Microsoft Azure and Keycloak authentication providers. A really nice accomplishment is integration testing with KeyCloak (using test containers) clearing the way for this to be a supported extension in the future. There of course remains work to do, with a list of functionalities to complete by the end of the project.
Milestone 1 was completed a few weeks behind schedule, and we are really happy with the result. Eclipse ImageN is now available to the public and included in GeoServer 2.28.0 for widespread use.
Milestone 2 Code Sprint
GeoSolutions hosted the Milestone 2 code sprint in mid October, arranging perfect weather 🌧️ for a productive indoor gathering.
Prior to the code sprint we performed a code-freeze across five projects, putting external work on hold to allow the team assembled in person to focus. With the path cleared OpenRewrite migrations were performed for JakartaEE, Spring 6.2, Spring Security 6.5, and Wicket 10.
This was followed by manual fixing to get each section to first compile, then pass tests, satisfy the quality assurance checks, and finally to run.
The initial steps went smoothly for ImageIO-Ext and GeoTools. The GeoTools migration took some time out to work on Elasticsearch testing, and updating the http client library to use the same version as the other projects.
For GeoServer careful work was required by the whole team, working module by module. Interesting challenges included:
- Changes made to the Spring Framework URL mapper, to identify which module is responsible for answering a request. Until this was addressed the entire application would compile but not function.
- Some OGC Standards use multi-part HTTP requests, and the Apache Common File Library used to separate out this content does not yet have a stable release for us to depend on.
- The Spring Security 6.5 Update was completed during the code Sprint. This activity was sponsored by the Office of Public Works.
The embedded web applications (GeoWebCache, MapFishPrint and GeoFence) took considerably more work. GeoWebCache in particular was deeply affected by the URL mapper changes, struggling to resolve workspaces and layers when integrated with GeoServer. GeoFence remains in progress and is scheduled to be addressed in Milestone 3.
The code sprint was very successful, it was really effective to have a team meet in person allowing modules to be worked on in parallel. This places the GeoServer 3 project on track and we are confident in meeting the community March release schedule.

Crowdfunding Thanks
We would like to thank all the organizations who have sponsored the GeoServer 3 Crowdfunding activity. We appreciate your trust and recognize your dedication to the GeoServer project.
GeoServer 3 is supported by the following organisation:
Individual donations: Abhijit Gujar, Hennessy Becerra, Ivana Ivanova, John Bryant, Jason Horning, Peter Smythe, Sajjadul Islam, Sebastiano Meier, Stefan Overkamp.
For more information visit the GeoServer 3 Crowdfunding page which provides an overview of the activity as a whole.
