Supprimer les colonnes inutiles du fichier de données géographiques?


10

J'ai des données GML qui contiennent des colonnes inutiles. Je voudrais supprimer ces colonnes afin de réduire la taille du fichier. (Pour clarifier: je veux dire que le fichier contient de nombreux points, et chacun de ces points a des métadonnées attachées, et je n'ai pas besoin de toutes les métadonnées.)

J'aimerais également le faire à partir de la ligne de commande, car j'ai de nombreux fichiers.

Je peux convertir les fichiers GML en différents formats en utilisant ogr2ogr, donc ma question est la suivante: quelle est la façon la plus simple de supprimer une colonne d'un fichier de données géographiques, de la ligne de commande?

Je suis un programmeur Python, donc mon instinct serait de convertir le fichier en GeoJSON, puis d'utiliser les méthodes d'analyse JSON de Python pour lire et réécrire le fichier JSON.

Mais il existe peut-être un moyen plus direct, en utilisant un outil GDAL ou similaire.

Réponses:


10

Le Shapefile en tant que format de fichier temporaire n'est pas nécessaire et il peut également modifier les données GML (raccourcir les noms d'attribut, couper les chaînes à 255 caractères maximum, changer DATETIME en DATE, etc.)

J'utiliserais ogr2ogr non pas en supprimant les attributs indésirables mais en sélectionnant ceux qui sont recherchés. Le dialecte SQLite SQL est plus standard que le dialecte OGR par défaut, c'est pourquoi j'utilise que même ce n'est pas nécessaire pour cette requête.

ogr2ogr -f GML -dialect SQLite -sql "SELECT attr1, attr2, attr3,... FROM layer" output.gml input.gml

9

Vous pouvez supprimer un champ en utilisant OGR SQL et en choisissant un format OGR qui prend en charge la suppression de champ. Malheureusement, GML ne le prend pas en charge, vous devez donc passer par un autre format, par exemple SHP:

ogr2ogr temp.shp input.gml
ogrinfo temp.shp -sql "ALTER TABLE temp DROP COLUMN field_to_drop"
ogr2ogr -f GML output.gml temp.shp

J'ai pu faire quelque chose de plus simple et similaire avec le pilote GeoJSON; ogrinfo input.geojson -sql "ALTER TABLE input DROP COLUMN field_to_drop" Notez l'utilisation du nom de fichier comme table pour ALTER.
vpipkt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.