Skip to content

Commit

Permalink
Update EMS extraction
Browse files Browse the repository at this point in the history
  • Loading branch information
jdesboeufs committed Sep 7, 2020
1 parent 5450f64 commit 1c2d17a
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 32 deletions.
28 changes: 15 additions & 13 deletions bin/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,26 +40,28 @@ program
program
.command('extract-ems <destPath>')
.description('Extraction des données cadastrales de l\'EMS')
.option('--rts <path>', 'chemin vers l’archive du Référentiel Topographique Simplifié (obligatoire)')
.option('--parcelles <path>', 'chemin vers l’archive contenant les parcelles')
.option('--sections <path>', 'chemin vers l’archive contenant les sections')
.action((destPath, {rts, parcelles, sections}) => {
if (!rts) throw new Error('Le chemin vers l’archive du Référentiel Topographique Simplifié est obligatoire')
.option('--rts <path>', 'chemin vers l’archive du Référentiel Topographique Simplifié')
.option('--parcellaire <path>', 'chemin vers l’archive contenant le référentiel parcellaire')
.action((destPath, {rts, parcellaire}) => {
if (!rts) {
throw new Error('Le chemin vers l’archive du Référentiel Topographique Simplifié est obligatoire')
}

rts = resolve(rts)
if (!parcelles) {
throw new Error('Le chemin vers l’archive contenant les parcelles est obligatoire')

if (!parcellaire) {
throw new Error('Le chemin vers l’archive contenant le référentiel parcellaire est obligatoire')
}

parcelles = resolve(parcelles)
if (!sections) {
throw new Error('Le chemin vers l’archive contenant les sections est obligatoire')
parcellaire = resolve(parcellaire)

if (!destPath) {
throw new Error('Le chemin vers le répertoire de travail est obligatoire')
}

sections = resolve(sections)
if (!destPath) throw new Error('Le chemin vers le répertoire de travail est obligatoire')
destPath = resolve(destPath)

require('../lib/commands/extract-ems')({rtsPath: rts, parcellesPath: parcelles, sectionsPath: sections}, destPath).catch(boom)
require('../lib/commands/extract-ems')({rtsPath: rts, parcellairePath: parcellaire}, destPath).catch(boom)
})

program
Expand Down
25 changes: 12 additions & 13 deletions lib/commands/extract-ems.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const LAYERS_MAPPING = {
rg_cad_parcelle: {layer: 'parcelles', convertFn: ems.prepareParcelle, validateFn: ems.validateParcelle}
}

async function handler({rtsPath, parcellesPath, sectionsPath}, distPath) {
async function handler({rtsPath, parcellairePath}, distPath) {
const layers = {}

// Extract features from RTS dataset
Expand All @@ -46,8 +46,17 @@ async function handler({rtsPath, parcellesPath, sectionsPath}, distPath) {
})
rtsDataset.close()

layers.rg_cad_parcelle = getSingleLayerFeatures(parcellesPath, 'rg_cad_parcelle')
layers.rg_cad_section = getSingleLayerFeatures(sectionsPath, 'rg_cad_section')
// Extract features from Parcellaire dataset
const parcellaireDataset = gdal.open(`/vsizip/${parcellairePath}`)
const parcellaireLayersToRead = ['rg_cad_parcelle', 'rg_cad_section']
parcellaireLayersToRead.forEach(layerName => {
console.log(' * Lecture de ' + layerName)
console.time(' * Fin de lecture de ' + layerName)
const features = getGeoJSONFeatures(parcellaireDataset.layers.get(layerName))
console.timeEnd(' * Fin de lecture de ' + layerName)
layers[layerName] = features
})
parcellaireDataset.close()

const communes = layers.rg_r2m_commune

Expand Down Expand Up @@ -137,14 +146,4 @@ function communeIsNotIgnored(codeCommune) {
return codeCommune.match(/^([a-z0-9]{5})$/i) && !communesToIgnore.includes(codeCommune)
}

function getSingleLayerFeatures(datasetPath, layerName) {
const dataset = gdal.open(`/vsizip/${datasetPath}`)
console.log(` * Lecture de ${layerName}`)
console.time(` * Fin de lecture de ${layerName}`)
const features = getGeoJSONFeatures(dataset.layers.get(layerName))
console.timeEnd(` * Fin de lecture de ${layerName}`)
dataset.close()
return features
}

module.exports = handler
12 changes: 6 additions & 6 deletions lib/convert/ems-cadastre.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ const moment = require('moment')
const {padStart} = require('lodash')

function prepareSection({properties, geometry}, codeCommune) {
const id = `${codeCommune}000${padStart(properties.NUM_SECTIO, 2, '0')}`
const code = properties.NUM_SECTIO
const id = `${codeCommune}000${padStart(properties.N_SECTION, 2, '0')}`
const code = properties.N_SECTION
const prefixe = '000'
const dates = parseDates(properties)

Expand All @@ -24,10 +24,10 @@ function prepareSection({properties, geometry}, codeCommune) {
}

function prepareParcelle({properties, geometry}, codeCommune) {
const id = `${codeCommune}000${padStart(properties.NUM_SECTIO, 2, '0')}${padStart(properties.NUM_PARCEL, 4, '0')}`
const section = properties.NUM_SECTIO
const id = `${codeCommune}000${padStart(properties.N_SECTION, 2, '0')}${padStart(properties.N_PARCELLE, 4, '0')}`
const section = properties.N_SECTION
const prefixe = '000'
const numero = properties.NUM_PARCEL
const numero = properties.N_PARCELLE
const dates = parseDates(properties)

return {
Expand Down Expand Up @@ -56,7 +56,7 @@ function validateParcelle({properties}) {
function parseDates({DATE_MAJ}) {
const result = {}
if (DATE_MAJ) {
result.updated = moment(DATE_MAJ).format('YYYY-MM-DD')
result.updated = moment(DATE_MAJ, 'YYYYMMDD').format('YYYY-MM-DD')
}

return result
Expand Down

0 comments on commit 1c2d17a

Please sign in to comment.