Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Sat 04 January 2020 19:15

GeGaX
Participant occasionnel
Date d'inscription: 20 May 2019
Messages: 27

QGIS/GDAL: gdal_polygonise.py et ogr2ogr

Bonjour,
Dans mon projet la finalité est un fichier kml en partant d'un png noir et blanc. (je détaille)

tile.png => géoréférencement + projection => tile.tiff => polygonisation => tile_pol.shp => réparation des polygones => tile_pol_repair.shp => conversion des polygones en lignes => tile_lin.shp => Export en kml => tile.kml

quand j'ouvre les fichiers tile.kml (qui sont fonctionnels) je m'aperçois que dans certains j'ai des redondances de polygones ce qui fait que le "poids" du fichier est au minimum doublé.
y'a t'il un paramètre que j'ai oublié ?

voici la commande utilisée:

Code:

gdal_polygonize.py /Users/gegax/Tiles/gbl_tiff/0_352.tiff /Users/gegax/Tiles/gbl_kml/0_352.shp -b 1 -f "ESRI Shapefile" 0_352 DN

Concernant le champ DN est il possible dans la commande ogr2ogr de ne pas l'inclure ?
C'est possible sous l'interface QGIS mais je ne vois pas ce qu'il faut ajouter en paramètres en passant par le terminal (j'en ai 512 a faire)

Code:

ogr2ogr -f KML /Users/gegax/Tiles/gbl_kml/0_352.kml /Users/gegax/Tiles/gbl_lin/0_352.shp

Merci pour vos lumières

Dernière modification par GeGaX (Sat 04 January 2020 19:17)

Hors ligne

 

#2 Mon 13 January 2020 19:25

FloSnow
Participant occasionnel
Date d'inscription: 1 Jan 2010
Messages: 28

Re: QGIS/GDAL: gdal_polygonise.py et ogr2ogr

Bonjour.

Concernant la redondance des entités dans le .kml, j'ai essayé la commande ogr2ogr de mon côté en partant d'un shape constitués de quelques lignes issues de polygones pouvant se chevaucher. Le résultat est un poids de fichier doublé mais aucune redondance. Peut-il y avoir des problèmes de redondances dans votre fichier .shp à partir de l'étape de réparation des polygones ?

Pour le champ DN, on peut sélectionner les champs qu'on souhaite conserver dans la commande ogr2ogr en utilisant le paramètre -select. Il suffit alors de ne pas renseigner DN parmi les champs  :

Code:

ogr2ogr -f KML -select champ1,champ2  /Users/gegax/Tiles/gbl_kml/0_352.kml /Users/gegax/Tiles/gbl_lin/0_352.shp

Sinon, pour ne pas inclure le champ DN dans le cas où il y aurait trop de champs à renseigner, on peut aussi procéder en deux temps avec un ogrinfo qui va supprimer la colonne DN via une requête SQL (créez un fichier .shp temporaire au préalable si vous souhaitez conserver le champ DN à une certaine étape) :

Code:

ogrinfo /Users/gegax/Tiles/gbl_lin/0_352.shp -sql "ALTER TABLE 0_352.shp DROP COLUMN DN"

ogr2ogr -f KML /Users/gegax/Tiles/gbl_kml/0_352.kml /Users/gegax/Tiles/gbl_lin/0_352.shp

Cordialement.

Hors ligne

 

#3 Mon 13 January 2020 20:39

GeGaX
Participant occasionnel
Date d'inscription: 20 May 2019
Messages: 27

Re: QGIS/GDAL: gdal_polygonise.py et ogr2ogr

Bonsoir FloSnow,
Merci de votre réponse.
Entre temps j'ai trouvé ma réponse qui se résume a ceci :

# Après avoir effectué la polygonisation via

Code:

gdal_polygonize.py input.tiff output.shp -b 1 -f "ESRI Shapefile" tileName DN

# Je répare la polygonisation via "Réparer les géométries" sous QGIS

# Je sélectionne la couche qui m'intéresse (0 = terre) pour le futur Export kml via :

Code:

ogr2ogr output.shp input.shp -where "DN=0"

# Je converti les polygones issus de la commande ci dessus en ligne via QGIS

# J'exporte en KML via :

Code:

ogr2ogr -f KML output.kml input.shp

Avec gdal/ogr je peux effectuer la quasi totalité des conversions en partant d'un png non géoréférencé pour en obtenir un KML des terres (512 tuiles de 32 x 32 tuiles de 256px)
Seuls les points "Réparer les géométries" et "Polygones en Lignes" sont effectués avec QGIS ce qui me permet sous Mac de faire un script Bash qui m'effectue une majorité des commandes, pour la partie QGIS j'utilise le traitement par lot mais j'ai toujours des soucis sur le nom des fichiers que je dois retravailler après.

Si des solutions existent pour ces 2 points, je suis preneur (la première je suis presque sur que ce n'est pas possible, la seconde en revanche doit être possible mais pas trouvé) et pour la question, non je le fais pas en Python parce que je ne connais pas du tout ce langage (à part des choses hyper basiques)

Sur 512 tuiles en KML, 4 sont en "vrac" je ne sais pas trop pourquoi sachant que les shp sont ok, j'ai une hypothèse sur le nombre de lignes trop nombreuses ...
Pour ça je vais "découper" mes tuiles "en vrac" de 32 x 32 en 4 x (16 x 16)

Dernière modification par GeGaX (Mon 13 January 2020 21:09)

Hors ligne

 

#4 Tue 14 January 2020 08:12

GeGaX
Participant occasionnel
Date d'inscription: 20 May 2019
Messages: 27

Re: QGIS/GDAL: gdal_polygonise.py et ogr2ogr

Sur 512 tuiles en KML, 4 sont en "vrac" je ne sais pas trop pourquoi sachant que les shp sont ok, j'ai une hypothèse sur le nombre de lignes trop nombreuses ...
Pour ça je vais "découper" mes tuiles "en vrac" de 32 x 32 en 4 x (16 x 16)


Ça a résolu mon soucis des KML en "vrac", donc il y a bien une limitation quelconque

Je suis toujours preneur d'infos pour les points
- Réparer les polygones
- Polygones vers Lignes
en utilisant gdal/ogr si c'est possible

Le but étant d'avoir un script bash qui fonctionne sans QGIS

Hors ligne

 

#5 Wed 15 January 2020 17:51

FloSnow
Participant occasionnel
Date d'inscription: 1 Jan 2010
Messages: 28

Re: QGIS/GDAL: gdal_polygonise.py et ogr2ogr

Bonjour GeGaX.

Intéressant pour la limitation lors de la création des KML, comme quoi le volume des données compte en effet beaucoup. 


- Pour l'étape "Réparer les polygones" :

Après quelques recherches, il ne semble pas y avoir encore de moyen d'utiliser cet outil de traitement directement sur console. J'ai trouvé une discussion pouvant apporter une solution dans l'avenir avec les nouvelles versions de QGIS mais sans ogr/gdal : https://github.com/qgis/QGIS-Enhancemen … issues/140

Au cas où, il est toujours possible de partir d'un script .py (script réalisé à partir du topic : https://gis.stackexchange.com/questions … processing) :

Code:

import sys

from qgis.core import QgsApplication
from qgis.analysis import QgsNativeAlgorithms

# Chemin des modules python
sys.path.append(r"C:\Program Files\QGIS 3.10\apps\qgis\python\plugins")

# Initialisation de QGIS, sans l'interface
qgs = QgsApplication([], False)
qgs.initQgis()

# Import et initialisation des outils de traitement
import processing
from processing.core.Processing import Processing
Processing.initialize()

# Cette ligne permet de prendre en compte les outils "natifs" de QGIS, dont fait partie "Réparer les géométries"
QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms())

# Lancement du traitement "Réparer les géométries"
processing.run("native:fixgeometries", {'INPUT':'input.shp','OUTPUT':'output.shp'})

Puis de le faire tourner en insérant son chemin dans la console (en partant du OSGeo4W Shell) :

Code:

python-qgis script.py

- Pour l'étape "Polygones vers Lignes" :

Il est possible d'extraire uniquement les contours des géométries, et donc de créer un shape de lignes, en utilisant une requête SQL via ogr2ogr :

Code:

ogr2ogr output.shp input.shp -dialect sqlite -f "ESRI Shapefile" -sql "select ST_ExteriorRing(geometry) as geometry, * from input"

"-dialect sqlite" semble être obligatoire pour permettre à la requête de fonctionner.
Il risque cependant d'y avoir des erreurs de géométries s'il y a des entités multi-parties avec des trous.


Cordialement.

Hors ligne

 

Pied de page des forums

Powered by FluxBB