Skip to content

Commit

Permalink
Merge pull request #51 from sgmap/population
Browse files Browse the repository at this point in the history
Utilisation de la base complète des communes + population
  • Loading branch information
jdesboeufs committed Jun 19, 2016
2 parents 1f77908 + 3846225 commit fed92d5
Show file tree
Hide file tree
Showing 11 changed files with 293 additions and 85 deletions.
16 changes: 14 additions & 2 deletions definition.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ parameters:
type: array
items:
type: string
enum: ['nom','code','codesPostaux','centre','surface', 'contour', 'codeDepartement', 'codeRegion']
enum: ['nom','code','codesPostaux','centre','surface','contour','codeDepartement','codeRegion', 'population']
collectionFormat: csv
default: ['nom','code','codesPostaux','centre','surface', 'codeDepartement', 'codeRegion']
default: ['nom','code','codesPostaux','centre','surface','codeDepartement','codeRegion','population']
departementFieldsParam:
name: fields
in: query
Expand Down Expand Up @@ -77,6 +77,9 @@ paths:
in: query
description: Nom de la commune
type: string
- name: boost
in: query
description: Mode de boost de la recherche par nom
- name: code
in: query
description: Code de la commune
Expand Down Expand Up @@ -293,6 +296,15 @@ definitions:
description: Liste des codes postaux associés à la commune
items:
type: string
codeDepartement:
type: string
description: Code du département associé à la commune
codeRegion:
type: string
description: Code de la région associée à la commune
population:
type: integer
description: Population municipale
surface:
type: number
format: float
Expand Down
4 changes: 3 additions & 1 deletion fetch_data.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ mkdir -p data
echo "Retrieve datasets"
wget -N -P data/ $GEOAPI_DATA_BASE_URL/communes/laposte_hexasmal.json
wget -N -P data/ $GEOAPI_DATA_BASE_URL/communes/communes-dp25.json
wget -N -P data/ $GEOAPI_DATA_BASE_URL/communes/insee_cog_comsimp2016.tsv
wget -N -P data/ $GEOAPI_DATA_BASE_URL/communes/insee_cog_france2016.tsv
wget -N -P data/ $GEOAPI_DATA_BASE_URL/communes/insee_cog_arrond2016.tsv
wget -N -P data/ $GEOAPI_DATA_BASE_URL/communes/insee_cog_depts2016.tsv
wget -N -P data/ $GEOAPI_DATA_BASE_URL/communes/insee_cog_reg2016.tsv
wget -N -P data/ $GEOAPI_DATA_BASE_URL/communes/insee_population_metropole.csv
wget -N -P data/ $GEOAPI_DATA_BASE_URL/communes/insee_population_dom.csv
echo "Completed"
1 change: 1 addition & 0 deletions integration.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/* eslint no-console: ["off"] */
require('./lib/integration').integrate(function (err) {
if (err) console.error(err);
process.exit(err ? 1 : 0);
});
2 changes: 1 addition & 1 deletion lib/communeHelpers.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { initFields, initFormat } = require('./helpers');

const initCommuneFields = initFields({
default: ['nom', 'code', 'codeDepartement', 'codeRegion', 'codesPostaux', 'centre', 'surface'],
default: ['nom', 'code', 'codeDepartement', 'codeRegion', 'codesPostaux', 'centre', 'surface', 'population'],
base: ['nom', 'code'],
});

Expand Down
22 changes: 14 additions & 8 deletions lib/communes.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const whichCommune = require('./whichCommune');
const normalizeString = require('./normalizeString');
const lunr = require('lunr');
const { intersectionBy, clone } = require('lodash');
const { intersectionBy, clone, sortBy } = require('lodash');

function getIndexedDb(options = {}) {
/* Source dataset */
Expand Down Expand Up @@ -46,12 +46,18 @@ function getIndexedDb(options = {}) {
return result ? [result] : [];
}

function queryByName(nom) {
return textIndex.search(nom).map(result => {
const commune = clone(inseeIndex.get(result.ref));
commune._score = result.score;
return commune;
});
function queryByName(nom, boost) {
const results = textIndex.search(nom)
.map(result => {
const commune = clone(inseeIndex.get(result.ref));
if (boost === 'population' && commune.population) {
commune._score = result.score * (1 + commune.population / 100000);
} else {
commune._score = result.score;
}
return commune;
});
return boost ? sortBy(results, c => -c._score) : results;
}

function queryByDep(codeDepartement) {
Expand Down Expand Up @@ -82,7 +88,7 @@ function getIndexedDb(options = {}) {
const rawResults = [];

if ('nom' in query) {
rawResults.push(queryByName(query.nom));
rawResults.push(queryByName(query.nom, query.boost));
}

if ('codePostal' in query) {
Expand Down
Loading

0 comments on commit fed92d5

Please sign in to comment.