I have created geomesa accumulo datastore and can query features using command line. Now i want to perform data operations using Open Geospatial Consortium's (OGC) Web Feature Service (WFS) for creating, modifying and exchanging vector format geographic information. I don't want to create proxy client or deal with thrifts for programatically operating with accumulo storage. Instead what are other techniques to insert and read using filters for geomesa accumulo storage data.
1 Answer
GeoMesa integrates with GeoServer to support such use cases.
Using WFS to read data is a very common use case. To write data to a layer in GeoServer, you'll want check out WFS Transactions (also called WFS-T). I've used both with GeoMesa and GeoServer successfully.
Check out http://www.geomesa.org/documentation/user/architecture.html#geomesa-and-geoserver for background about GeoMesa and GeoServer. This link provides information about setting up GeoMesa's Accumulo DataStore with GeoServer (http://www.geomesa.org/documentation/user/accumulo/install.html#installing-geomesa-accumulo-in-geoserver). General GeoMesa-GeoServer usage is documented here: http://www.geomesa.org/documentation/user/geoserver.html.
For some quick links to GeoServer's WFS details, I'd suggest reading through (http://docs.geoserver.org/latest/en/user/services/wfs/reference.html) and checking out the demos which come with GeoServer (http://docs.geoserver.org/latest/en/user/configuration/demos/index.html#demos).
-
Yes that links were helpful, can you help me on how can I create WFS-T client which uses json to perform insert, update, delete using WFS? Commented Mar 8, 2017 at 5:51
-
GeoServer only accepts "text/xml; subtype=gml/3.1.1" as an input format for WFS-T (Json requires too much guess work) Commented Mar 8, 2017 at 8:52
-
Building off what Ian mentioned, I'd suggest looking at open source libraries like OpenLayers and Leaflet to see how they handle WFS-T. Since GeoServer required GML, you'll have to sort out changing the JSON to GML in your client code. Otherwise, you could write a custom REST endpoint to accept Json (with some assumptions so that the guess work is limited/removed;)).– GeoJimCommented Mar 8, 2017 at 13:56