.. _exercise: Exercise ######## You know everything now about writting zcfg matadata files and get short pieces of code in ``service.c`` or ``ogr_service_provider.py`` depending if you choosen C or Python programming language respectively. The goal of this exercise is to implement the following multiple geometries services : - Intersection - Union - Difference - SymDifference C version ********* Your are now invited to edit the source.c file you have created during this workshop to add the multiple geometries, using the following OGR C-API functions : - `OGR_G_Intersection `__ (OGRGeometryH, OGRGeometryH) - `OGR_G_Union `__ (OGRGeometryH, OGRGeometryH) - `OGR_G_Difference `__ (OGRGeometryH, OGRGeometryH) - `OGR_G_SymmetricDifference `__ (OGRGeometryH, OGRGeometryH) You can use the ``Boundary.zcfg`` file as example, rename the InputPolygon input to ``InputEntity1`` and add a similar input named ``IntputEntity2``. You are invited to update other values in the ZOO Metadata File to set the proper metadata informations. Python Version ************** Your are invited to edit the ``ogr_ws_service_provider.py`` file you created during this workshop to add the multiple geometries using the following ``osgeo.ogr`` Geometry methods applied on the first Geometry instance : - Intersection(Geometry) - Union(Geometry) - Difference(Geometry) - SymmetricDifference(Geometry) You can once again use the ``Boundary.zcfg`` file as example, rename the ``InputPolygon`` input to ``InputEntity1`` and add a similar input named ``IntputEntity2``. You are invited to update other values in the ZOO metadata file to set the proper metadata informations. Testing your services ********************* Once the multiple geometries Services are deployed on your local environment, please reload the ``zoo-ogr.html`` file created during the previous section from your browser and test your brand new ZOO Services.