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.

Richard
la source

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
user30184
la source
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
Antonio Falciano
la source
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