Skip to content

Instantly share code, notes, and snippets.

@ThomasG77
Last active November 10, 2023 08:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ThomasG77/a9b39677d302e2405c18cfe9bc8e462b to your computer and use it in GitHub Desktop.
Save ThomasG77/a9b39677d302e2405c18cfe9bc8e462b to your computer and use it in GitHub Desktop.
Conversion id parcelle Etalab vers commune, prefixe, section, numero et inversement

Code pour passer des id de parcelles Etalab en commune, prefixe, section, numero et inversement

Par exemple, pour l'id de parcelle 323190000A0133

Il s'agit d'un clé composite (une clé constituée de plusieurs clés)

  • 5 premiers caractères = code INSEE sur 5 caractères soit 32319
  • 3 caractères suivants = prefixe, ancien code INSEE sur 3 caractères (on ne mentionne pas à nouveau le département). 000 si inchangé
  • 2 caractères suivants = lettre ou numéro de section préfixé de 0 si une seul caractère. Ainsi A deviens 0A
  • 4 derniers caractères = numéro de parcelle dans la section préfixé de 0 si nécessaire 133 devant 0133

Javascript

function removeLeadingZeros(myString) {
  let regex = /^0+/g;
  return myString.replace(regex, "");
}

let id_parcel = '323190000A0133'

let commune = id_parcel.substring(0, 5)
let prefixe = id_parcel.substring(5, 8)
let section = removeLeadingZeros(id_parcel.substring(8, 10))
let numero = removeLeadingZeros(id_parcel.substring(10, 14))

console.log(commune, prefixe, section, numero)
// Pour revenir à l'id de parcelle
console.log(`${commune}${prefixe}${section.padStart(2, '0')}${numero.padStart(4, '0')}`)

Python

id_parcel = '323190000A0133'

commune = id_parcel[0:5]
prefixe = id_parcel[5:8]
section = id_parcel[8:10].lstrip('0')
numero = id_parcel[10:14].lstrip('0')

print(commune, prefixe, section, numero)

# Pour revenir à l'id de parcelle
print(f'{commune}{prefixe}{section.zfill(2)}{numero.zfill(4)}')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment