Remover colunas desnecessárias do arquivo de dados geográficos?

10

Eu tenho alguns dados GML que contêm algumas colunas desnecessárias. Gostaria de remover essas colunas para reduzir o tamanho do arquivo. (Para esclarecer: quero dizer que o arquivo possui muitos pontos, e cada um desses pontos possui alguns metadados anexados e não preciso de todos os metadados.)

Eu também gostaria de fazer isso na linha de comando, pois tenho muitos arquivos.

Posso converter os arquivos GML em diferentes formatos usando ogr2ogr, então minha pergunta é a seguinte: qual é a maneira mais fácil de remover uma coluna de um arquivo de dados geográficos, da linha de comando?

Como sou programador Python, meu instinto seria converter o arquivo em GeoJSON e, em seguida, usar os métodos de análise JSON do Python para ler e reescrever o arquivo JSON.

Mas talvez exista uma maneira mais direta, usando uma ferramenta GDAL ou similar.

Richard
fonte

Respostas:

10

O shapefile como formato de arquivo temporário não é necessário e também pode alterar os dados GML (encurtar nomes de atributos, cortar cadeias para no máximo 255 caracteres, alterar DATETIME para DATE etc.)

Eu usaria ogr2ogr não descartando atributos indesejados, mas selecionando aqueles que são desejados. O dialeto SQLite SQLite é mais padrão que o padrão OGR, é por isso que eu uso isso, mesmo que não seja necessário para esta consulta.

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

Você pode excluir um campo usando o OGR SQL e escolhendo um formato OGR que suporte a exclusão do campo. Infelizmente, o GML não o suporta, então você precisa passar por outro formato, por exemplo, 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
fonte
Consegui fazer uma coisa mais simples e semelhante com o driver GeoJSON; ogrinfo input.geojson -sql "ALTER TABLE input DROP COLUMN field_to_drop" Observe o uso do nome do arquivo como tabela em ALTER.
Vpipkt