Renomeando Shapefiles no QGIS?


12

Eu tenho uma lista enorme de camadas em um projeto que são nomeadas em um idioma estrangeiro. Quero traduzir e adicionar o título em inglês ao nome.

Quando clico com o botão direito do mouse em uma camada e escolho Properties -> Generale altero o nome da camada, ela é visualizada na árvore da camada, mas o arquivo original permanece o mesmo.

Existe uma maneira de alterar o nome do arquivo original do QGIS?

Existem tantos que a pesquisa em todas as minhas pastas levaria muito tempo.


1
Eu acho que você teria que clicar com o botão direito do mouse e escolher salvar como para alterar o nome do arquivo, se você não quiser usar o Windows Explorer.
Lando Calrissian

Vinculando solicitação de recurso relacionada no QGIS.org: issues.qgis.org/issues/15791 , para que possamos ficar de olho nela.
Andre Silva

Respostas:


9

Para isso, é necessário: i) remover a camada do ToC, ii) renomear os arquivos que conformam o Shapefile (ou seja, shp, dbf, shx, prj e similares) e iii) carregar a camada renomeada para QGIS. Mas precisamos automatizar esse fluxo de trabalho!

Se você observar as etapas, elas são semelhantes ao que o plug-in do Table Manager faz. Então, eu adaptei o código desse plugin para renomear Shapefiles, você pode baixá-lo aqui .

Você pode usá-lo desta maneira (primeiro tente com um pequeno projeto de backup para ver como ele funciona):

  1. Renomeie suas camadas QGIS no sumário, esses novos nomes serão usados ​​para substituir os nomes correspondentes de Shapefiles.
  2. Salve seu projeto QGIS na mesma pasta que o script rename_shapefiles.py
  3. Abra o console do QGIS Python.
  4. Copie o próximo trecho de código lá:

    from rename_shapes import RenameShapefiles
    for lyr in iface.mapCanvas().layers():
        rn = RenameShapefiles( iface, lyr )
        rn.doSave()

É isso aí! Eu testei no GNU / Linux, QGIS 2.6. A ordem das camadas no sumário varia após a execução do código.

Deixe-me saber se você tem algum problema.

Se você precisar que a ordem da camada seja preservada, faça uma nova pergunta, talvez eu possa vê-la :).


4

Para usuários do R, escrevi uma função rápida do R que renomeia o arquivo .shp e todos os arquivos associados. É muito simples, e não há verificação de erros, etc., por isso, se falhar, você precisará fazer uma pequena investigação.

# Function to rename shapefile (.shp) and all associated files
# fpath = full file path of any of the associated files (character)
# newName = new name for the files (character)

renameShp <- function(fpath, newName) {
  dir <- dirname(fpath)
  base <- basename(fpath)
  fname <- strsplit(base, '[.]')[[1]][1]
  ls <- list.files(path=dir, pattern=fname, full.names=TRUE)
  sapply(ls, FUN=function(p){
    file.rename(from=p, to=sub(pattern=fname,replacement=newName, p))
  })
  print(paste("Renamed", length(ls), "files."))
}

1

Se você tiver um esquema consistente para renomeá-los, poderá fazer isso em um script python. Um método em python é os.rename (src, dest) . Detalhes específicos dependeriam de qual é o algoritmo para renomear os arquivos. Isso é para renomear os arquivos reais, não apenas os nomes das camadas no sumário.

Caso contrário, não conheço uma alternativa para renomeá-los manualmente, pois é necessário traduzi-los. Em teoria, você poderia criar um dicionário de traduções em python, mas isso provavelmente levaria tanto tempo para codificar quanto fazê-lo manualmente. Além disso, esteja ciente de que renomear arquivos em si interromperá as fontes de dados. Renomear apenas os nomes de camada no sumário deve estar ok, mas não estou tão familiarizado com o QGIS quanto com o Arc.


1

Sugiro usar este programa para renomear seus arquivos http://www.bulkrenameutility.co.uk/Main_Intro.php . É aberto e fácil de usar. Depois de renomear seu arquivo, você deve abrir, com um editor de texto, o seu arquivo de projeto qgis (tente o notepad ++) e faça a mesma localização e substituição.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.