npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cadastre-pg

v0.1.0

Published

Script 100% Node Js permettant d'importer le cadastre en EDIGEO vers Postgis. Il peut être utilisé en ligne de commande (CLI) ou dans un script Node js.

Downloads

5

Readme

cadastre-pg

Script 100% Node Js permettant d'importer le cadastre en EDIGEO vers Postgis. Il peut être utilisé en ligne de commande (CLI) ou dans un script Node js.

C'est sans doute le plus rapide et le plus fiable d'après ce que j'ai pu tester.

Il utilise :

  • edigeoToGeojson pour convertir les données edigeo en geojson.
  • proj-geojson pour éventuelement reprojeter les données à la volée
  • decompress pour décompresser les archives .tar.bz2
  • flatbush & turf pour éventuelement déterminer le code département de la feuille cadastrale
  • pg-promise pour envoyer efficacement les données vers Postgresql

Usage (CLI)

Installation

npm install -g cadastre-pg

Utilisation

Il prend comme input le chemin du répértoire qui contient les feuilles cadastrales au format .tar.bz2 que l'on peut télécherger ici

Le code du département peut être indiqué dans les options. Il est possible de lui passer la chaine "fromFile", le code du déparetement sera alors déterminé selon le nom du fichier (celui ci devant être sous la forme "edigeo-{dep}...") Sinon celui ci sera détérminé automatiquement pour chaque feuille par une opération spatiale (à partir des contours des départements de 2019).

Le système de projection des données sortantes peut être indiqué (à defaut : 4326).

La configuration des tables ainsi que le mapping des champs peut être configuré en lui passant le chemin de son propre fichier de configuration (flag --config). Vous pouvez egalement lui indiquer l'identifiant de l'une des 3 configurations prédéfinies (full / light / bati : elles se trouvent dans le repértoire config)

 cadastre-pg [options]
Options

    '--path': String, # obligatoire, chemin du répértoire contenant les tar.bz2
    '--year': Number, # obligatoire, année de l'édition de l'EDIGEO
    '--srid':    Number, # SRID de destination defaut : 4326
    '--config': String, # chemin ou identifiant du preset ( defaut "full")
    '--threads' : Number, # defaut max
    '--dep': String, # ex 38, si manquant le script va le determiné geographiquement. "fromFile" si le nom du fichier est sous la forme "edigeo-dep...."
     '--schema': String, # schema de destination ( par defaut : public)

    '--logLevel': Number, # (0, 1, 2 3) verbosité 
    '--dropSchema' : Boolean, # supprime le schema avant l'import
    '--dropTable' : Boolean, # supprime les tables utilisées avant l'import

    '--host':    String,  ## postgresql host (localhost)
    '--database': String, ## postgresql database (postgres)
    '--user': String,     ## postgresql user (postgres)
    '--password': String, ## postgresql password (null)
    '--port':    Number,  ## postgresql password (5432)

Exemple

cadastre-pg --path "/data/EDIGEO/dep2A"  --srid 2154 --config "full" --schema "cadastre" -y 2019 --dep "fromFile" --logLevel 2 --dropSchema --host "localhost" --database "gis" --user "fabien" --port 5432 --password "password"

Usage (Node.js)

Installation


npm install cadastre-pg
cadastrePg(edigeo-path, configuration, pgconfig, options)
edigeo-path

Obligatoire Chemin absolut ou relatif du repértoire contenant les fichiers EDIGEO compressé en .tar.bz2

configuration

Par défaut, "full" qui fait référence au fichier ./config/full.json. Ce fichier de configuration, en json, permet la création des tables ainsi que le "mapping" des champs. Il permet également de modifier les données à la volée Il est possible de lui donner un chemin vers un autre fichier de configuration (en json) ou de lui passer directement l'objet.

pgConfig
{
  "user": "postgres",
  "host": "localhost",
  "database": "postgres",
  "password": "password",
  "port": 5432
};
options :
{
    "schema": "public",
    "year": 2019, // requis => année de la donnée
    "srid": 4326, 
    "threads" : 8, // nombre de theards aloués (defaut = max)
    "codeDep" : null,
    "logLevel": 2, //0, 1, 2 , 3 
    "dropSchema": false, // supprime les tables concernées avant l'import
    "dropTable": false, // supprime le schema avant l'import
}

Exemple

const cadastrePg = require('cadastre-pg');

let options = {
    "schema": "cadastre_test",
    "year": 2019,
    "srid": 2154,
    "threads" : 8,
    "codeDep" : null,
    "logLevel": 2,
    "dropSchema": true,
    "dropTable": true
}

let  pgConfig = {
  "user": "fabien",
  "host": "localhost",
  "database": "gis",
  "password": "password",
  "port": 5432
};

// chemin des dossiers contenant les fichier EDIGEO compressé en bz
cadastrePg('/data/dep38/', 'full', pgConfig , options)
.then( t => { 
    console.log('fini')
    })
.catch(error => {
  console.log(error);
})

Benchmark

Je fais ces tests sur un PC relativement puissant sous la dernière monture d'Ubuntu avec node 12.16

PC

  • CPU : AMD Ryzen 2700X (8 coeurs, 16th)
  • 16Go de RAM
  • Un SSD

Système :

  • Ubuntu 19.10
  • Node 12.16
  • Postgres 12 ( docker )

Les temps indiqués prennent en compte la décompression de l'archive en tar.bz2 On utilise tous les threads du CPU.

cadastre-pg --path "/data/EDIGEO/dep2A"  --srid 2154/4326 --config "full" --schema "cadastre" -y 2019 --dep "fromFile" --logLevel 0 --dropSchema --host "localhost" --database "gis" --user "fabien" --port 5432 --password "password"

| Département | srid : 2154 (sans reprojection) | srid : 4326 | | ------ | ----------- |----------- | | 2A (189 Mo) | 53 s | 86 s | | 2B (367 Mo) | 93 s| 168 s | | 38 (722 Mo) | 230 s | 330 s |