diff --git a/controllers/gpu/index.js b/controllers/gpu/index.js index 3bc7923..1737425 100644 --- a/controllers/gpu/index.js +++ b/controllers/gpu/index.js @@ -21,6 +21,14 @@ function createGpuProxy(typeName){ function(req,res){ var params = matchedData(req); params._limit = 100; + //Si couche du type generateur ou assiette le champ categorie corresponds à suptype + if (params.categorie) { + if ((typeName.startsWith('generateur')) || (typeName.startsWith('assiette'))) { + params.suptype = params.categorie; + params = _.omit(params,'categorie'); + } + + } req.gpuWfsClient.getFeatures(typeName, params) .then(function(featureCollection) { res.json(featureCollection); @@ -52,7 +60,11 @@ const mapping = { 'acte-sup': 'wfs_sup:acte_sup', 'assiette-sup-p': 'wfs_sup:assiette_sup_p', 'assiette-sup-l': 'wfs_sup:assiette_sup_l', - 'assiette-sup-s': 'wfs_sup:assiette_sup_s' + 'assiette-sup-s': 'wfs_sup:assiette_sup_s', + 'generateur-sup-p': 'wfs_sup:generateur_sup_p', + 'generateur-sup-l': 'wfs_sup:generateur_sup_l', + 'generateur-sup-s': 'wfs_sup:generateur_sup_s' + }; @@ -83,41 +95,50 @@ router.get('/municipality',cors(corsOptionsGlobal), [ router.get('/document',cors(corsOptionsGlobal), [ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString() ], createGpuProxy(mapping['document'])); router.get('/zone-urba', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString() ], createGpuProxy(mapping['zone-urba'])); router.get('/secteur-cc', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString() ], createGpuProxy(mapping['secteur-cc'])); router.get('/prescription-pct', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString() ], createGpuProxy(mapping['prescription-pct'])); router.get('/prescription-lin', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString() ], createGpuProxy('wfs_du:prescription_lin')); router.get('/prescription-surf', cors(corsOptionsGlobal), [ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString() ], createGpuProxy('wfs_du:prescription_surf')); router.get('/info-pct', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString() ], createGpuProxy(mapping['info-pct'])); router.get('/info-lin', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString() ], createGpuProxy(mapping['info-lin'])); router.get('/info-surf', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString() ], createGpuProxy(mapping['info-surf'])); /*-------------------------------------------------------------------------------------------- @@ -125,28 +146,55 @@ router.get('/info-surf', cors(corsOptionsGlobal),[ -------------------------------------------------------------------------------------------*/ router.get('/acte-sup', cors(corsOptionsGlobal), [ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString(), ], createGpuProxy(mapping['acte-sup'])); router.get('/assiette-sup-p', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString(), + check('categorie').optional().isString() ], createGpuProxy(mapping['assiette-sup-p'])); router.get('/assiette-sup-l', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString(), + check('categorie').optional().isString() ], createGpuProxy(mapping['assiette-sup-l'])); router.get('/assiette-sup-s', cors(corsOptionsGlobal),[ - check('geom').exists().custom(isGeometry) + check('geom').optional().custom(isGeometry), + check('partition').optional().isString(), + check('categorie').optional().isString() ], createGpuProxy(mapping['assiette-sup-s'])); +/*-------------------------------------------------------------------------------------------- + * Generateur sup + -------------------------------------------------------------------------------------------*/ + +router.get('/generateur-sup-p', cors(corsOptionsGlobal),[ + check('geom').optional().custom(isGeometry), + check('partition').optional().isString(), + check('categorie').optional().isString() +], createGpuProxy(mapping['generateur-sup-p'])); + +router.get('/generateur-sup-l', cors(corsOptionsGlobal),[ + check('geom').optional().custom(isGeometry), + check('partition').optional().isString(), + check('categorie').optional().isString() +], createGpuProxy(mapping['generateur-sup-l'])); + +router.get('/generateur-sup-s', cors(corsOptionsGlobal),[ + check('geom').optional().custom(isGeometry), + check('partition').optional().isString(), + check('categorie').optional().isString() +], createGpuProxy(mapping['generateur-sup-s'])); /*-------------------------------------------------------------------------------------------- * Recherche dans toutes les tables par geom... -------------------------------------------------------------------------------------------*/ router.get('/all', cors(corsOptionsGlobal), [ - check('geom').exists().withMessage('Le paramètre geom est obligatoire'), - check('geom').custom(isGeometry) + check('geom').optional().custom(isGeometry), ], validateParams, gpuWfsClient, function(req,res){ /** * Récupération des paramètres diff --git a/doc/gpu.yml b/doc/gpu.yml index 7fc56b3..39be9d5 100644 --- a/doc/gpu.yml +++ b/doc/gpu.yml @@ -66,6 +66,12 @@ paths: type: object required: false description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ responses: '200': description: Success @@ -86,6 +92,13 @@ paths: type: object required: false description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + responses: '200': description: Success @@ -106,6 +119,13 @@ paths: type: object required: false description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + responses: '200': description: Success @@ -126,7 +146,14 @@ paths: name: geom type: object required: false - description: Géométrie GeoJSON utilisée pour la recherche + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + responses: '200': description: Success @@ -147,6 +174,13 @@ paths: type: object required: false description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + responses: '200': description: Success @@ -166,7 +200,14 @@ paths: name: geom type: object required: false - description: Géométrie GeoJSON utilisée pour la recherche + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + responses: '200': description: Success @@ -186,7 +227,14 @@ paths: name: geom type: object required: false - description: Géométrie GeoJSON utilisée pour la recherche + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + responses: '200': description: Success @@ -207,6 +255,13 @@ paths: type: object required: false description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + responses: '200': description: Success @@ -226,7 +281,14 @@ paths: name: geom type: object required: false - description: Géométrie GeoJSON utilisée pour la recherche + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + responses: '200': description: Success @@ -247,7 +309,14 @@ paths: name: geom type: object required: false - description: Géométrie GeoJSON utilisée pour la recherche + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document + responses: '200': description: Success @@ -267,7 +336,20 @@ paths: name: geom type: object required: false - description: Géométrie GeoJSON utilisée pour la recherche + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document + + - in: query + name: categorie + type: string + required: false + description: Categorie + responses: '200': description: Success @@ -287,7 +369,20 @@ paths: name: geom type: object required: false - description: Géométrie GeoJSON utilisée pour la recherche + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document + + - in: query + name: categorie + type: string + required: false + description: Categorie + responses: '200': description: Success @@ -307,13 +402,125 @@ paths: name: geom type: object required: false - description: Géométrie GeoJSON utilisée pour la recherche + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document + + - in: query + name: categorie + type: string + required: false + description: Categorie + responses: '200': description: Success schema: $ref: '#/definitions/FeatureCollection' + + /gpu/generateur-sup-s: + get: + summary: Récupération des générateurs surfaciques des servitudes d’utilité publique + description: | + Prend en entrée une géométrie au format JSON et retourne une featureCollection. + Retourne un résultat de Type "FeatureCollection" avec les informations qui intersectent la géométrie. + tags: + - SUP + parameters: + - in: query + name: geom + type: object + required: false + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document + + - in: query + name: categorie + type: string + required: false + description: Categorie + + responses: + '200': + description: Success + schema: + $ref: '#/definitions/FeatureCollection' + + /gpu/generateur-sup-l: + get: + summary: Récupération des générateurs linéaires des servitudes d’utilité publique + description: | + Prend en entrée une géométrie au format JSON et retourne une featureCollection. + Retourne un résultat de Type "FeatureCollection" avec les informations qui intersectent la géométrie. + tags: + - SUP + parameters: + - in: query + name: geom + type: object + required: false + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format + - in: query + name: categorie + type: string + required: false + description: Categorie + + responses: + '200': + description: Success + schema: + $ref: '#/definitions/FeatureCollection' + + /gpu/generateur-sup-p: + get: + summary: Récupération des générateurs ponctuels des servitudes d’utilité publique + description: | + Prend en entrée une géométrie au format JSON et retourne une featureCollection. + Retourne un résultat de Type "FeatureCollection" avec les informations qui intersectent la géométrie. + tags: + - SUP + parameters: + - in: query + name: geom + type: object + required: false + description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + + - in: query + name: categorie + type: string + required: false + description: Categorie + + responses: + '200': + description: Success + schema: + $ref: '#/definitions/FeatureCollection' + /gpu/all: get: summary: Récupération de l’ensemble des couches décrites ci-dessus @@ -327,6 +534,19 @@ paths: type: object required: false description: Géométrie GeoJSON utilisée pour la recherche + + - in: query + name: partition + type: string + required: false + description: Partition GPU du document au format _ + + - in: query + name: categorie + type: string + required: false + description: Categorie + responses: '200': description: Success