0

I am developing a web GIS based application with OpenLayers and Angular. My problem is how to handle editing a large scale vector layer, e.g. I have a layer with millions of features, using ol​/source​/Vector make application too slow (small fps for rendering), so I generated vector tiles for each layer on backend for viewing layer (i.e. cache layer) and created an editing layer for drawing and other editing tools. But there lots of new challenges to sync the editing layer with the cached vector tiles layer, it takes too much time to generate new vector-tiles after edit.

May be another approach is to have 2 layers one for editing and one for viewing, the editing layer which is vector source layer should be visible only from certain zoom (where features amount are few enough to render).

I am curious that is there any web GIS application that handle such a scenario, to edit a large scale vector layer or how to do it?

Edited

I have created a sample point layer on geo node with about 400k points: https://stable.demo.geonode.org/layers/geonode_master_data:geonode:points1

when a new point is added to the layer, it is not visible in other zooms, because generated tiles from WMS service are not updated.

I conclude this is the nature of working with large scale and there is no better solution than this.

3
  • Look at WFS-T for editing vector information.
    – nmtoken
    Sep 20, 2021 at 8:52
  • @nmtoken thanks, WFS-T is exactly what I want, but specification does not speak about how to handle a large scale vector layer with caching or etc. I have used WFS from GeoServer with QGis before and it is too slow for my case. Do you know any open source application implementing the WFS-T specification for large scale? Sep 20, 2021 at 10:55
  • WMS or WMST for viewing and WFS-T for changes when zoomed in would seem a good way to go
    – nmtoken
    Sep 21, 2021 at 10:59

1 Answer 1

-1

I think your approach here is correct.

"May be another approach is to have 2 layers one for editing and one for viewing"

Except think of it like a workflow as well. Your data shouldn't be being mastered in the vector tiles. They have been created as an out from a DB right? Or master data source? I hope so!

So follow your own suggestion above, but configure an 'editing' layer as well as a transactional submit capability that the end user can trigger. A WMS-T will require some server middleware (like Geoserver) to orchestrate the transactions with a DB.

Other DB's systems where editing is done on desktop, will often have a merge-post function (or sync-post). This handles conflicts and the db transactions.

So my recommendation would be to keep that functionality at the DB level of your structure.. You could even implement a queue type of functionality for data edits here. So have your end client capture the edits, and have the end user pass them through to the server level via a transaction service (imagine they hit a Sync button, or submit button). But have the server infrastructure then pass this spatial data into the database as a transaction edit, on the database.

Then, use existing incremental/delta mechanisms to regenerate your vector tiles from the DB, which will be consumed by end client. Data capture person can see their new edits, other users can see their edits. (I would maybe do this once a night, more frequently might be complex to manage).

Mastering of spatial data into vector tiles isn't a good approach in my opinion, especially with the volume of data you have. (If this is what you are currently doing, I might be missing some detail here).

3
  • I am mastering the original vector data in SQL Server Tables, and generating the Vector tiles from original Tables to other caching Tables. I need vector tile because of user can view and change features style based on feature properties, which make impossible of using images tile. Sep 22, 2021 at 6:08
  • 1
    My overall approach is as you said, but there are some challenging issues while editing. e.g. consider this scenario, a user editing a point feature moves a node from one location to another, cached tiles showing the moved node in previous location and editing layer in other location until the caches update. Sep 22, 2021 at 6:11
  • mmm yes i see - Maybe when the end user presses 'edit', have the map view switch over to 'editable data only layer'. This layer could just be a copy of the localized area as tiles. (like a separate 'editable cache'.). If they go outside this area, the system can generate more editable tiles. ... That way the end user only see editable tiles. ........This may even help when passing data back (pass back the whole tile).
    – nr_aus
    Sep 23, 2021 at 5:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.