Eu tenho um diretório com vários shapefiles.
Como converter todos esses shapefiles para o MapInfo com ogr2ogr?
Eu sei como posso converter um arquivo. E eu posso criar um script em lote escrevendo uma linha para cada arquivo. Mas não existe uma maneira mais fácil de converter todos os arquivos em um diretório (e subdiretório).
Respostas:
No Windows, para os diretórios atuais e subdiretórios sob o atual, tente este comando:
Para explicar brevemente a malandragem do que está acontecendo aqui ,
%~dpnf.tab
usa a variável % f , com a qual ele adiciona o d carta rio, p nome ath (ou seja, pasta ou diretório), e extrai o arquivo n ame (sem a.shp
extensão de arquivo) . Por fim,.tab
é adicionado imediatamente após os modificadores da variável composta para a nova extensão.Portanto, se você estiver no diretório
C:\MyData
e tiver dados nesse diretório, subdiretóriosC:\MyData\Region1
eC:\MyData\Region1\City1
, qualquer Shapefile (com.shp
extensão) será processado e um arquivo nomeado semelhante.tab
será criado no mesmo diretório.fonte
%f
para%%f
. Consulte ss64.com/nt/for.html para obter detalhes.Para unix bash:
Se você estiver trabalhando em um sistema operacional baseado em * nix (por exemplo, Linux ou OS X), existem alguns scripts de shell em lote que o clhenrik desenvolveu aqui (no qual o acima é baseado).
Estou trabalhando em um fork que torna alguns scripts um pouco mais genéricos e fornece um pouco mais de descrição em uso.
fonte
Como Alex Markov disse, a melhor maneira seria usar o OGR .
Você precisará fazer um script, mas muito simples. Basicamente, se você estiver usando o Windows, tudo o que você precisa fazer é executar o seguinte código na linha de comando (dentro da pasta desejada):
Confira este site, tudo é explicado aqui:
http://www.processamentodigital.com.br/?p=2511
fonte
com python:
você pode mudar
os.getcwd()
para o caminho onde seus arquivos estão localizados ...espero que ajude você
fonte
for a in *.shp:
é um erro de sintaxe; você está pensandofrom glob import glob; for a in glob('*.shp'):
Você não precisa de um loop, basta nomear um diretório como origem e destino e o ogr2ogr converterá todos os arquivos no diretório de origem. Consulte aqui: Convertendo TAB para MIF / MIF para TAB
fonte
parece que você precisa de um loop for - consulte http://www.robvanderwoude.com/for.php para obter uma explicação de como eles funcionam.
fonte
O Universal Translator no Mapinfo pode lidar com vários arquivos. Vá para a pasta de destino, selecione todos os shapefiles, defina o CRS para entrada e saída. Isso deveria estar pronto.
fonte
Este é o refinamento da resposta de Aragão acima. Ele executará apenas ogr2ogr em arquivos .TAB ou .tab e ignorará outros tipos de arquivos na pasta.
fonte