Skip to content

Commit

Permalink
Merge pull request #340 from BaseAdresseNationale/antoineludeau/impor…
Browse files Browse the repository at this point in the history
…t-ids-from-bal-1.4

Added ban ids import for bal format 1.4 to legacy compose
  • Loading branch information
antoineludeau authored Dec 12, 2023
2 parents 1f6721b + be400ff commit c0e05cd
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 13 deletions.
3 changes: 3 additions & 0 deletions lib/compose/import-from-api-depot.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ async function importFromApiDepot(revision) {
source: 'bal',
cleInterop: row.parsedValues.cle_interop,
uidAdresse: row.parsedValues.uid_adresse,
idBanCommune: row.parsedValues.id_ban_commune,
idBanToponyme: row.parsedValues.id_ban_toponyme,
idBanAdresse: row.parsedValues.id_ban_adresse,
numero: row.parsedValues.numero,
suffixe: row.parsedValues.suffixe,
nomVoie: row.parsedValues.voie_nom,
Expand Down
7 changes: 4 additions & 3 deletions lib/compose/index.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ const source = require('../models/source.cjs')
const {createPseudoCodeVoieGenerator} = require('../pseudo-codes-voies.cjs')
const {getCurrentRevision} = require('../util/api-depot.cjs')

const {digestIDsFromBalUIDs} = require('../util/digest-ids-from-bal-uids.cjs')
const {digestIDsFromBalAddress} = require('../util/digest-ids-from-bal-address.cjs')
const {getBalAddressVersion} = require('../util/get-bal-address-version.cjs')
const MS = require('./strategies/multi-sources/index.cjs')
const BAL = require('./strategies/bal/index.cjs')

Expand Down Expand Up @@ -116,8 +117,8 @@ async function composeCommune(codeCommune) {

let districtID
if (isBAL) {
const {uidAdresse} = balData.adresses[0]
districtID = digestIDsFromBalUIDs(uidAdresse)?.districtID
const balAddressVersion = getBalAddressVersion(balData.adresses[0])
districtID = digestIDsFromBalAddress(balData.adresses[0], balAddressVersion)?.districtID
}

const communeRecord = {
Expand Down
4 changes: 3 additions & 1 deletion lib/compose/sources/bal.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ const updateCommunes = require('../processors/update-communes.cjs')
const filterOutOfCommune = require('../processors/filter-out-of-commune.cjs')

function buildLieuDit(adresse) {
const {uidAdresse, position, codeCommune, idVoie, nomVoie, nomVoieAlt, nomCommune, codeAncienneCommune, nomAncienneCommune, parcelles, dateMAJ} = adresse
const {uidAdresse, idBanCommune, idBanToponyme, position, codeCommune, idVoie, nomVoie, nomVoieAlt, nomCommune, codeAncienneCommune, nomAncienneCommune, parcelles, dateMAJ} = adresse
const {lon, lat, x, y, tiles} = derivePositionProps(position, 10, 14)
const {codePostal} = getCodePostalRecord(codeCommune)

return {
uidAdresse,
idBanCommune,
idBanToponyme,
type: 'lieu-dit',
source: 'bal',
idVoie,
Expand Down
8 changes: 5 additions & 3 deletions lib/compose/strategies/bal/lieux-dits.cjs
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
const {uniqBy} = require('lodash')
const {beautifyUppercased} = require('../../../util/string.cjs')
const {digestIDsFromBalUIDs} = require('../../../util/digest-ids-from-bal-uids.cjs')
const generateIds = require('../../processors/generate-ids.cjs')
const {digestIDsFromBalAddress} = require('../../../util/digest-ids-from-bal-address.cjs')
const {getBalAddressVersion} = require('../../../util/get-bal-address-version.cjs')

async function buildLieuxDits(balData, {codeCommune, pseudoCodeVoieGenerator, existingVoiesIds}) {
generateIds(balData.lieuxDits, {codeCommune, pseudoCodeVoieGenerator})
return uniqBy(balData.lieuxDits, 'idVoie').filter(ld => !existingVoiesIds.has(ld.idVoie))
.map(lieuDit => {
const {uidAdresse, ...lieuDitRest} = lieuDit
const {mainTopoID, districtID} = digestIDsFromBalUIDs(uidAdresse)
const {uidAdresse, idBanCommune, idBanToponyme, ...lieuDitRest} = lieuDit
const balAddressVersion = getBalAddressVersion(lieuDit)
const {mainTopoID, districtID} = digestIDsFromBalAddress(lieuDit, balAddressVersion)
return {
...lieuDitRest,
banId: mainTopoID,
Expand Down
8 changes: 5 additions & 3 deletions lib/compose/strategies/bal/numero.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ const {feature} = require('@turf/turf')
const {computeBufferedBbox, derivePositionProps} = require('../../../util/geo.cjs')
const {getCodePostalRecord} = require('../../../util/codes-postaux.cjs')
const {beautifyUppercased} = require('../../../util/string.cjs')
const {digestIDsFromBalUIDs} = require('../../../util/digest-ids-from-bal-uids.cjs')
const {digestIDsFromBalAddress} = require('../../../util/digest-ids-from-bal-address.cjs')
const {getBalAddressVersion} = require('../../../util/get-bal-address-version.cjs')

function normalizeSuffixe(suffixe) {
if (!suffixe) {
Expand Down Expand Up @@ -41,8 +42,9 @@ function getBestPosition(positions) {
}

function buildNumero(numeroAdresses, {idVoieFantoir, codeCommune, forceCertification}) {
const {uidAdresse, numero, lieuDitComplementNom, lieuDitComplementNomAlt, parcelles, certificationCommune, codeAncienneCommune, nomAncienneCommune, dateMAJ} = numeroAdresses[0]
const {addressID, mainTopoID, secondaryTopoIDs, districtID} = digestIDsFromBalUIDs(uidAdresse)
const balAddressVersion = getBalAddressVersion(numeroAdresses[0])
const {addressID, mainTopoID, secondaryTopoIDs, districtID} = digestIDsFromBalAddress(numeroAdresses[0], balAddressVersion)
const {numero, lieuDitComplementNom, lieuDitComplementNomAlt, parcelles, certificationCommune, codeAncienneCommune, nomAncienneCommune, dateMAJ} = numeroAdresses[0]
const suffixe = normalizeSuffixe(numeroAdresses[0].suffixe)

const positions = numeroAdresses
Expand Down
8 changes: 5 additions & 3 deletions lib/compose/strategies/bal/voies.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ const {feature} = require('@turf/turf')
const {computeBufferedBbox, getCenterFromPoints, derivePositionProps} = require('../../../util/geo.cjs')
const {getCodePostalRecord} = require('../../../util/codes-postaux.cjs')
const {beautifyUppercased} = require('../../../util/string.cjs')
const {digestIDsFromBalUIDs} = require('../../../util/digest-ids-from-bal-uids.cjs')
const {digestIDsFromBalAddress} = require('../../../util/digest-ids-from-bal-address.cjs')
const {getBalAddressVersion} = require('../../../util/get-bal-address-version.cjs')

const generateIds = require('../../processors/generate-ids.cjs')
const computeGroups = require('../../processors/compute-groups.cjs')
Expand Down Expand Up @@ -41,8 +42,9 @@ function buildVoies(balData, {codeCommune, pseudoCodeVoieGenerator, forceCertifi
const voies = chain(adressesWithGroups)
.groupBy('groupId')
.map(adresses => {
const {uidAdresse} = first(adresses)
const {mainTopoID, districtID} = digestIDsFromBalUIDs(uidAdresse)
const adresse = first(adresses)
const balAddressVersion = getBalAddressVersion(adresse)
const {mainTopoID, districtID} = digestIDsFromBalAddress(adresse, balAddressVersion)
/* Noms voie */
const {nomVoie, nomVoieAlt, idVoie: idVoieFantoir} = buildNomVoie(adresses)

Expand Down
22 changes: 22 additions & 0 deletions lib/util/digest-ids-from-bal-address.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
const {digestIDsFromBalUIDs} = require('./digest-ids-from-bal-uids.cjs')

const digestIDsFromBalAddress = (
balAddress,
version,
) => {
switch (version) {
case '1.4':
return {
addressID: balAddress?.idBanAdresse,
mainTopoID: balAddress?.idBanToponyme,
districtID: balAddress?.idBanCommune,
}

default: {
const {uidAdresse: ids} = balAddress
return digestIDsFromBalUIDs(ids)
}
}
}

module.exports = {digestIDsFromBalAddress}
13 changes: 13 additions & 0 deletions lib/util/get-bal-address-version.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const getBalAddressVersion = balAddress => {
const {idBanCommune: districtID, uidAdresse: ids} = balAddress

if (districtID) {
return '1.4'
}

if (ids) {
return '1.3'
}
}

module.exports = {getBalAddressVersion}

0 comments on commit c0e05cd

Please sign in to comment.