Skip to content

Instantly share code, notes, and snippets.

View ThomasG77's full-sized avatar

Thomas Gratier ThomasG77

View GitHub Profile
{
"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 July 21, 2022 12:59
Generation GeoJSON des mairies avec code INSEE
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 \
@ThomasG77
ThomasG77 / fix-validity-qpv.sh
Created July 6, 2022 17:58
Fix QPV validity
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 June 18, 2022 02:15
SIREN et autres traitements autour dont la validation VIES (TVA intracommunautaire)

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

Formule SIREN vers TVA intracommunautaire

Approche Python

COUNTRIES = {
    "AT": "Autriche",
    "BE": "Belgique",
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 09:44
Données centre des communes (centroide des mairies sinon centroide commune)

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

@ThomasG77
ThomasG77 / README.md
Last active May 10, 2022 19:52
Recipe to use MySQL/MariaDB with QGIS and GDAL, with or without geom column
@ThomasG77
ThomasG77 / datatourisme-bibliotheques.sh
Last active March 22, 2022 19:21
Extrait datatourisme bibliothèques Nouvelle Aquitaine
wget -O api_result_datatourisme.json https://www.data.gouv.fr/api/1/datasets/5b598be088ee387c0c353714
remote_url=$(cat api_result_datatourisme.json | jq '.resources | sort_by(.published) | reverse' | jq -r '.[].url' | grep naq | head -n1)
wget "$remote_url"
xsv search -d ',' \
-s "Categories_de_POI" "https://www.datatourisme.gouv.fr/ontology/core#Library" \
datatourisme-reg-naq-20220321.csv \
| sed '1s/.*/\L&/' \
| csvtojson \
| jq -c .[] \
| ndjson-map 'd2 = {"type": "Feature", "properties": d, "geometry": {"type": "Point", "coordinates": [Number(d.longitude), Number(d.latitude)]}}, d2' \