Skip to content

Harvest vector features by misusing WMS GetFeatureInfo - #201

Draft
naulan-chrzaszcz wants to merge 1 commit into
mainfrom
naulan/wms-getfeatureinfo-provider
Draft

Harvest vector features by misusing WMS GetFeatureInfo#201
naulan-chrzaszcz wants to merge 1 commit into
mainfrom
naulan/wms-getfeatureinfo-provider

Conversation

@naulan-chrzaszcz

@naulan-chrzaszcz naulan-chrzaszcz commented Aug 6, 2026

Copy link
Copy Markdown
Member

Changes

Add a WMS provider working through GetFeatureInfo to read vector features.

Feature description

WMSFeatureInfoDataProvider reads geometries and their attributes from a WMS
layer, as GeoJSON.

GetFeatureInfo answers for a single point, it is meant to feed a map tooltip,
not to read an area. Covering a tile therefore means walking a grid of query
points spaced by spacing, and de-duplicating the results by feature identifier,
since a feature is returned by every neighbouring point that falls within the
harvested radius.

Two limits come with that detour, both documented on the class:

  • the number of requests follows the surface rather than the number of features,
    so the volume has to be weighed against the capacity of the target service;
  • completeness is not guaranteed, since a rendering engine is being sampled
    rather than a feature store: a feature shorter than spacing can fall between
    two grid points.

Transient failures are retried per grid point with an exponential backoff, rather
than left to the retry policy of the task: restarting provide() would replay
every point already walked, with no better odds of succeeding.

The existing WMSFloatBilDataProvider could not be extended for this. It is
declared Provider<FloatGeographicDataMatrix2d> where this one provides
SimpleFeature, and a class cannot implement Provider twice with two
parameterizations — they also feed two different processors.

New parameters type: WMSFeatureInfoProviderParams, registered as
wmsFeatureInfo.

Reason

To exploit the WMS services of ASIG, whose GeoServer publishes vector layers
through WMS while keeping WFS disabled (ServiceException: Service WFS is disabled). GetFeatureInfo is the only channel left for geometries.

Prefer WFS1_1_GML3_1_DataProvider wherever WFS is available: one bounding box
query per tile instead of hundreds of point queries.

Self-checks

  • The code has unit tests associated
  • The code has Javadoc Comments associated
  • Complex / Unexpected code is explained / justified with a small comment
  • Relevant documentation inside the /docs folder has been updated
  • All examples in examples/ work the same (or have been adapted if subject to changes in this PR)
  • Git history is clean (each commit accomplish a single task and describe it accordingly)
  • The texts have been proofread (documentation, error messages, logs, comments...)

@naulan-chrzaszcz naulan-chrzaszcz self-assigned this Aug 6, 2026
@naulan-chrzaszcz

naulan-chrzaszcz commented Aug 6, 2026

Copy link
Copy Markdown
Member Author

Okay, i push just the code i used in my branch of tests for Albanian rendering.
I need to update some stuffs because this code i pushed is generated by Claude (i'm honest)

Edit : i can have a better look for this feature if i seperate this part of code from my branch of tests

@naulan-chrzaszcz naulan-chrzaszcz changed the title Add WMS provider works only with GetFeatureInfo request Harvest vector features by misusing WMS GetFeatureInfo Aug 14, 2026
@naulan-chrzaszcz
naulan-chrzaszcz force-pushed the naulan/wms-getfeatureinfo-provider branch from 1a4f0cf to 4f85fcd Compare August 14, 2026 11:34
@github-actions

Copy link
Copy Markdown

[Maven Build Status]

📑 Commit: 4f85fcd4423892356a0c053633d534355a748ae3
⌚️ Date: 2026-08-14T13:34:57 (CEST)
🛠️ Status: ✅ Success

📦 Download artifact: Generator.jar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant