Skip to content

Instantly share code, notes, and snippets.

Avatar

Thomas Gratier ThomasG77

View GitHub Profile
@ThomasG77
ThomasG77 / README.md
Created Sep 24, 2022
Miniconda with gdal install
View README.md
@ThomasG77
ThomasG77 / README.md
Last active Sep 23, 2022
Issue for path cli resolving when migrating CommonJS to ES6
View README.md

Path issue when migrating CommonJS to ES6

Context: migrating to ES6 syntax because some upcoming deps ES6 based (want to avoid transpiling)

Command used to fail

Root of the repo myrepo then running

In CommonJS cli

@ThomasG77
ThomasG77 / index.js
Created Sep 12, 2022
mapshaper-info-recreated-via-gdal
View index.js
import fs from 'fs'
import got from 'got'
import gdal from 'gdal-async'
import { pipeline } from 'stream/promises'
const url = 'https://github.com/deldersveld/topojson/raw/master/countries/germany/germany-regions.json'
const fileName = url.substring(url.lastIndexOf('/') + 1)
const downloadStream = got.stream(url)
const fileWriterStream = fs.createWriteStream(fileName)
View package-lock.json
{
"name": "order-service",
"version": "0.0.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "order-service",
"version": "0.0.2",
"license": "ISC",
@ThomasG77
ThomasG77 / processing-townhalls-ign.sh
Created Jul 21, 2022
Generation GeoJSON des mairies avec code INSEE
View processing-townhalls-ign.sh
wget -N -P data/ http://files.opendatarchives.fr/professionnels.ign.fr/adminexpress/ADMIN-EXPRESS-COG_3-1__SHP__FRA_WM_2022-04-15.7z
cd data
7z e ADMIN-EXPRESS-COG_3-1__SHP__FRA_WM_2022-04-15.7z CHFLIEU_COMMUNE.* COMMUNE.* -r
ogr2ogr -overwrite \
-f GeoJSON \
-dialect SQLite \
-sql "SELECT \"INSEE_COM\", CASE WHEN chf.geometry IS NULL THEN 'c' ELSE 'm' END AS t, CASE WHEN chf.geometry IS NULL THEN PointOnSurface(\"COMMUNE\".geometry) ELSE chf.geometry END AS geometry FROM \"COMMUNE\" LEFT JOIN 'CHFLIEU_COMMUNE.shp'.\"CHFLIEU_COMMUNE\" chf ON chf.\"ID_COM\" = \"COMMUNE\".\"ID\"" \
chflieu_commune.geojson \
COMMUNE.shp \
-lco RFC7946=YES \
View fix-validity-qpv.sh
wget https://sig.ville.gouv.fr/Atlas/qp-politiquedelaville-shp.zip
unzip qp-politiquedelaville-shp.zip
ogrinfo QP_METROPOLEOUTREMER_WGS84_EPSG4326.shp -dialect SQLite -sql "SELECT count(*) FROM \"QP_METROPOLEOUTREMER_WGS84_EPSG4326\" WHERE NOT IsValid(geometry)"
ogr2ogr out.shp QP_METROPOLEOUTREMER_WGS84_EPSG4326.shp -dialect SQLite -sql "SELECT \"CODE_QP\", \"NOM_QP\", \"COMMUNE_QP\", CASE WHEN NOT IsValid(geometry) THEN ST_MakeValid(geometry) ELSE geometry END AS geometry FROM \"QP_METROPOLEOUTREMER_WGS84_EPSG4326\""
ogrinfo out.shp -dialect SQLite -sql "SELECT count(*) FROM out WHERE NOT IsValid(geometry)"
@ThomasG77
ThomasG77 / check_vat_vie.md
Last active Jun 18, 2022
SIREN et autres traitements autour dont la validation VIES (TVA intracommunautaire)
View check_vat_vie.md

SIREN et autres traitements autour dont la validation VIES (TVA intracommunautaire)

Formule SIREN vers TVA intracommunautaire

Approche Python

COUNTRIES = {
    "AT": "Autriche",
    "BE": "Belgique",
View gdal_csv_to_geopackage.py
import os
from osgeo import gdal
# gdal.UseExceptions()
# gdal.SetConfigOption('CPL_DEBUG', 'ON')
# Create a test CSV
file = "test.csv"
with open("test.csv", "w") as csv:
csv.write("latitude,longitude\n")
@ThomasG77
ThomasG77 / README.md
Last active May 12, 2022
Données centre des communes (centroide des mairies sinon centroide commune)
View README.md

Script pour générer les positions des mairies

Lancer le script bash ./get_mairies_from_ign_bdtopo.sh

Il permet de créer 2 fichiers GeoJSON:

  • mairies_multipolygons.geojson est celui des emplacements de la mairie principale pour chaque commune. Quelques lignes sont vides, certaines communes n'ayant plus de mairie (exemple des communes mortes pour la France)
  • centre_communes.geojson prend le centre du polygone de la mairie et sinon le centre de la commune. En réalité, il ne s'agit pas d'un centre mais d'un opération qui génère un centroide et le corrige pour s'assurer que ce dernier est bien dans le multipolygone.

Nous créons un 3ème fichier centre_communes.csv pour ceux qui préfèrent un fichier pla