geosolutions-it / geoserver

Official GeoServer repository
http://geoserver.org
Other
10 stars 7 forks source link

Mapml vector tiles - ready to roll #365

Closed aaime closed 6 months ago

aaime commented 6 months ago

Pull request rebased on the latest main branch. Now can skip attributes on tiled features and can cache tiles in "text/mapml" format. Documentation updated. @prushforth do you see anything else that needs to be done?

Checklist

For core and extension modules:

prushforth commented 6 months ago

Wow pretty impressive! Just itching to see this combined with styles. I saw this at first then realized it was user error:

image

Should I be able to use this request when the thing is set up to cache text/mapml tiles and expect it to filter the states?

http://localhost:8080/geoserver/topp/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp%3Astates&bbox=-1.3885038382960921E7%2C2870337.130793682%2C-7455049.489182421%2C6338174.0557576185&width=768&height=414&srs=MapML%3AOSMTILE&styles=&format=text%2Fhtml%3B%20subtype%3Dmapml&cql_filter=PERSONS%3E5000000

prushforth commented 6 months ago

do you see anything else that needs to be done?

Forgetting about the MapML:projection value across restarts is still an issue.

Apart from that: good to go!

prushforth commented 6 months ago

Actually I'm seeing a bunch of html responses to what should be a text/mapml tile request:

image image

Layer is set to cache tiles in text/mapml format, "Use Tiles" and "Use Features". All requests there are made by the viewer, i.e. each is a tile request, but what gets returned is sometimes the "front" text/html document as shown.

prushforth commented 6 months ago

Actually I'm seeing a bunch of html responses to what should be a text/mapml tile request:

This ~might be~ is a bug in the viewer.

aaime commented 6 months ago

Wow pretty impressive! Just itching to see this combined with styles. I saw this at first then realized it was user error:

image

Should I be able to use this request when the thing is set up to cache text/mapml tiles and expect it to filter the states?

http://localhost:8080/geoserver/topp/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp%3Astates&bbox=-1.3885038382960921E7%2C2870337.130793682%2C-7455049.489182421%2C6338174.0557576185&width=768&height=414&srs=MapML%3AOSMTILE&styles=&format=text%2Fhtml%3B%20subtype%3Dmapml&cql_filter=PERSONS%3E5000000

No, you should not expect that, at least by default, because each possible CQL_FILTER value would have to generate a separate on disk cache (filter changes the content of the tiles). If that's your intent, then go and add a "filter parameter" in the tile layer configuraton for CQL_FILTER, with a regex to catch the valid values (or .* for a quick test). I don't remember if the cql_filter gets replicated on WMTS links or not, that needs to be verified.

aaime commented 6 months ago

Actually I'm seeing a bunch of html responses to what should be a text/mapml tile request:

This ~might be~ is a bug in the viewer.

I don't see it happening anymore with client version 0.13 though (I cherry-picked it temporarily to test it out)

aaime commented 6 months ago

PR updated, CQL support for cached tiles as well (as long as the filter parameter is defined), and also, geometric simplification based on the current output resolution, to reduce the size of mapml tiles. This should be it for this PR.

I'll look at the CRS issue on restart in a different PR.

prushforth commented 6 months ago

I'll look at the CRS issue on restart in a different PR.

Thanks!

aaime commented 6 months ago

I'll look at the CRS issue on restart in a different PR.

Thanks!

See https://github.com/geoserver/geoserver/pull/7486

Here is an example of setting topp:states in MapML:CBMTILE that works (for me at least) after applying the above changes:

image

prushforth commented 6 months ago

I can't run the change (at work today) right now. If it works for you, that's enough for me for now; please merge as you see fit.