Skip to content

Instantly share code, notes, and snippets.

@mdouchin
mdouchin / PostGIS_create_missing_spatial_indexes.sql
Last active June 16, 2020 21:09
PostGIS - Function to create missing spatial indexes in your whole database
-- Allow to list all layers with no spatial index
-- To get the list
-- SELECT * FROM create_missing_spatial_indexes(True);
-- To create automatically the missing spatial indexes
-- SELECT * FROM create_missing_spatial_indexes(False);
DROP FUNCTION IF EXISTS create_missing_spatial_indexes();
DROP FUNCTION IF EXISTS create_missing_spatial_indexes( BOOLEAN );
CREATE OR REPLACE FUNCTION create_missing_spatial_indexes(simulate BOOLEAN DEFAULT FALSE)
RETURNS TABLE (
@mdouchin
mdouchin / is_dictionary_od_values.tsv
Last active June 15, 2017 16:21
QGEP is_dictionary_od_values
We can make this file beautiful and searchable if this error is corrected: Unclosed quoted field in line 5.
1 1036 2020 2979 "individual_surface" "function" "other" "other" " " "andere" " " "autres" " " "altri" " " " " " "
2 1036 2020 3466 "individual_surface" "function" "railway_site" "railway_site" " " "Bahnanlagen" " " "installation_ferroviaire" " " "zzz_Bahnanlagen" " " " " " "
3 1036 2020 3461 "individual_surface" "function" "roof_industrial_or_commercial_building" "roof_industrial_or_commercial_building" " " "DachflaecheIndustrieundGewerbebetriebe" " " "surface_toits_bat_industriels_artisanaux" " " "zzz_DachflaecheIndustrieundGewerbebetriebe" " " " " " "
4 1036 2020 3460 "individual_surface" "function" "roof_residential_or_office_building" "roof_residential_or_office_building" " " "DachflaecheWohnundBuerogebaeude" " " "surface_toits_imm_habitation_administratifs" " " "zzz_DachflaecheWohnundBuerogebaeude" " " " " " "
5 1036 2020 3464 "individual_surface" "function" "access_or_collecting_road" "access_or_collecting_road" " " "Erschliessungs_Sammelstr
@mdouchin
mdouchin / QGEP_translate.py
Created April 27, 2017 09:20
QGEP - Translate the qgep_en.qgs QGIS project
##QGEP=group
##QGEP_translate=name
##Layers_config_source_table=table
##Reset_layer_name=boolean
##Reset_layer_title=boolean
##Fields_config_source_table=table
##Reset_field_alias=boolean
from qgis.core import *
import re
import json
##Batch replace field value=name
##Vector_layer=vector
##Filter_expression=string "name" IS NOT NULL
##Source_field=string name
##Target_field=string short_name
##Replace_layer=table
##Replace_from=string name
##Replace_to=string short_name
##Replace_in_beginning=boolean False
##Replace_before=string
@mdouchin
mdouchin / show_picture.py
Last active April 17, 2019 12:45
QGIS python code to use images as point symbols
"""
Use this method to use images stored in a layer field as path
Ex: show_picture( "picture_path_fieldname" )
Path can be absolute or relative to the project
/!\ Project must be saved before use
author: Michaël Douchin, 3liz
inspired by Nathan Woodrow example : http://nathanw.net/2016/02/04/live-svgs/
"""
Pour bien comprendre les soucis de performance, il faut voir comment fonctionne Lizmap pour l'instant. Je vais essayer de présenter les concepts utilisés, et de proposer des solutions concrètes (et des idées d'amélioration de Lizmap)
Par défaut, pour chaque couche QGIS ajoutée dans Lizmap, la légende de Lizmap propose une case à cocher, qui est activée (cochée) si la couche était visible dans QGIS. Cela veut donc dire que si vous avez 30 couches, Lizmap doit demander à QGIS Server les images pour chacune des 30 couches, dès le démarrage de l'application.
Dans la version stable actuelle du plugin Lizmap, l'option Image unique n'est pas cochée. Cela signifie que pour chacune des couches à afficher dans le navigateur, au lieu de demander une seule image à QGIS server (toute la largeur de l'écran), Lizmap, via OpenLayers, demande à la place autant de "tuiles" carrées d'environ 250 pixels de côté. Chaque tuile est une image. Le système de tuile a un avantage : les tuiles sont créées en fonction de l'emprise maxi
@mdouchin
mdouchin / inplace-mbtiles2osmand.sh
Last active August 29, 2015 14:27 — forked from andrewharvey/inplace-mbtiles2osmand.sh
In-place conversion of an mbtiles SQLite3 database into an osmand offline tiles SQLite3 database.
#!/bin/sh
# To the extent possible under law, the person who associated CC0
# with this work has waived all copyright and related or neighboring
# rights to this work.
# http://creativecommons.org/publicdomain/zero/1.0/
SCRIPT_DIR=`dirname $0`
if [ -e $1 ] ; then
@mdouchin
mdouchin / SVG path in QGIS Server.md
Last active March 21, 2018 09:40
Add SVG paths in QGIS Server

Voici la nouvelle bonne méthode (depuis QGIS 2.4) pour utiliser des SVG côté bureautique et côté serveur sans souci. C'est un peu complexe, mais on ne le fait qu'une fois

Machine cliente (bureautique)

  • Créer un répertoire ./share/svg/une_categorie/ quelque part sur votre système, par exemple un répertoire au-dessus des répertoires Lizmap. Par exemple : C:/chemin/vers/mes/dossiers/sig/share/svg/une_categorie

  • Y mettre les fichiers SVG que vous souhaitez utiliser dans vos projets QGIS publiés avec Lizmap ou QGIS Server seul

@mdouchin
mdouchin / gist:72a09b629a5557c1dc1c
Last active September 4, 2015 04:08
QGIS python script : zoom only to pre-defined scales
# -*- coding: utf-8 -*-
# Import the PyQt and QGIS libraries
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from qgis.core import *
class forcedScale():
@mdouchin
mdouchin / gist:ac2a096ce2603f60d265
Last active August 29, 2015 14:13
Tuto d'utilisation de LizMobile

Plugin LizMobile

Ce plugin permet pour l'instant d'exporter le rendu des couches affichées dans QGIS vers un répertoire de tuile.

On peut donc créer des tuiles pour utilisation hors-connexion à partir de n'importe quelles couches (raster, vecteurs, WMS, WFS, couches Google, etc.). Le plugin met à plat le rendu visible dans QGIS.

Couche d'emprise