Migrando dados de geodatabase para PostGIS sem aplicativos Esri?

39

Você pode me dizer como posso carregar dados de geodatabase no PostGIS sem precisar instalar aplicativos Esri?

A solução que encontrei on-line falou sobre o uso do ArcGIS para converter GDB em SHP e, em seguida, a importação de SHP para PostGIS.

Gerson Galang
fonte
Muito obrigado pela sua resposta. O FME pode ser uma solução válida, mas a consideramos uma solução muito cara. Acreditamos que um período de avaliação de 14 dias é insuficiente para uma migração. Alguém tem experiência com outras ferramentas, como scripts GDAL ou GeoKettle? Saudações.
precisa saber é o seguinte
FME Desktop é a melhor solução para os dados de migração

Respostas:

37

Faço isso o tempo todo para meus clientes.

Despeje seus dados no FileGDB ou Shapefiles e execute o seguinte comando:

Para arquivos de forma ESRI:

ogr2ogr -f "PostgreSQL" PG: "dbname = nome do meu usuário = postgres" myshapefile.shp

Para FileGDB:

ogr2ogr -f "PostgreSQL" PG: "dbname = nome do meu usuário = postgres" myFileGDB.gdb

Para o FileGDB, você precisa garantir que o driver do FileGDB esteja instalado. Você faz isso com:

ogrinfo --formats

que deve mostrar o FileGDB em algum lugar para informar que ele está instalado.

Ragi Yaser Burhum
fonte
Você pode fornecer mais detalhes sobre a instalação do driver FileGDB para OGR?
RyanDalton
7
A maneira mais fácil para o Windows é trac.osgeo.org/osgeo4w Procure o pacote filegdb (estou prestes a atualizá-lo com correções de bugs na próxima semana). Se você estiver em Linux ou Mac, você pode modificar o seguinte script que eu uso para construí-lo on the fly (veja install_filegdb) gist.github.com/2955440
Ragi Yaser Burhum
@RyanDalton e deixe-me saber como ele vai :)
Ragi Yaser Burhum
1
O que acontece com os metadados com esse processo? Por exemplo, metadados do FGDC que contêm mais do que apenas o sistema de coordenadas, etc. #
Oliver Burdekin 28/05
ogr2ogr não o escreverá por padrão , mas, observando o código, vejo que existe um comando especial "GetLayerDefinition" que você pode executar no prompt do SQL para ler essas informações. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"iria despejar os metadados XML ESRI a um campo em que db
Ragi Yaser Burhum
7

Eu não tentei isso, então não posso verificar se funciona, mas a API do File Geodatabase pode permitir que você exporte os dados do arquivo Geodatabase para o SHP (e, portanto, o PostGIS). A documentação diz:

With the API you can... Read and write data
Stephen Lead
fonte
Obrigado Stephen, útil saber que existe uma API, mas provavelmente tentaremos que, se não houver realmente nenhuma ferramenta por aí escrita por pessoas que faça isso automaticamente.
Gerson Galang
6
Se você possui a API File GEodatabase, também pode converter diretamente usando GDAL: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw
2
Alguns cuidados: a API desenvolvida pela ESRI, e as ferramentas baseadas nela, funcionarão apenas com o Arquivo GDB (.gdb) criado ou convertido para uso no ArcGIS 10 ou mais recente. O suporte para versões anteriores do Personal GDB (.mdb) é proveniente de esforços de programação anteriores e pode funcionar dependendo dos dados e da ferramenta.
V Stuart Foote
@johanvdw Tentei trac.osgeo.org/gdal/wiki/FileGDB alguns dias atrás antes de postar minha pergunta acima, pois as instruções nesse link também não funcionavam para mim. Eu tentei o gdal 1.8.1 mais recente no meu Ubuntu 10.04, mas isso não parecia instalar o plug-in File GeoDB no gdal. Tentei "--with-fgdb = / usr / local / FileGDB_API" e "--with-fgdb = / usr / local", pois a documentação deles não estava clara ao especificar o que eu deveria usar no parâmetro "with-fgdb" mas nada funcionou.
Gerson Galang
GCG: forme a mesma página: (substitua / usr / local / FileGDB_API pelo local em que você extraiu o FileGDB_API_ <versão> .tar.gz)
johanvdw
5

A API de geodatabase do arquivo Esri funciona apenas com bancos de dados de arquivos criados usando 10.x - as versões mais antigas não funcionarão com GDAL, QGIS ou qualquer outra coisa que dependa da API de geodatabase de arquivo aberto . Os antigos Geodatabases pessoais dependem do MS Access e existem leitores e códigos disponíveis.

Se você possui um geodatabase de arquivo 10.x, pode ler a camada do FileGDB e carregar no PostGIS com um único comando ogr2ogr ( consulte a documentação ):

ogr2ogr -overwrite -skipfailures -f "PostgreSQL" PG:"host=myhost user=myuser dbname=mydb password=mypass" "C:\somefolder\BigFileGDB.gdb" "MyFeatureClass"

Para fazer isso, eu também tive que baixar o VS2010 express edition e criar meu próprio GDAL, ogr plugin e 1.3 da API de geodatabase de arquivo aberto.

O que não consegui fazer é migrar um geodatabase de arquivo 9.x mais antigo sem usar o software esri (não disponível para mim no atm) - não consigo passar ...

HRESULT = -2147220965, errorText = "Esta versão do GeoDatabase é inválida ou está desatualizada."

... ao tentar abrir o 9.x "gdb" com a API aberta que suporta apenas 10.x "gdb".

Alexis Brooker
fonte
As versões mais recentes (meados de 2014) do ogr2ogr com OpenFileGDB podem pelo menos ler a versão mais antiga dos bancos de dados geográficos de arquivos ESRI.
22414
2

Embora eu ainda não tenha experimentado, acabei de me deparar com este tutorial (que é shapefile -> PostGIS) que usa o software geoETL de código aberto chamado " Spatial Data Integrator ". Não tenho certeza se ele suporta Esri GDB ou não, mas talvez valha a pena investigar mais para ver se você pode usar este produto para fazer a conversão semelhante de GDB para PostGIS sem usar produtos ESRI.

Outros pacotes ETL de que ouvi falar são o FME do Safe Sofware ($, muito popular) e o GeoKettle (código-fonte aberto), além de muitas outras referências na página da wikipedia Spatial ETL .

EDIT : Ao avançar um pouco mais, parece que o SDI não suporta diretamente a leitura do EsriGDB , mas pode ler os formatos de arquivo OGR disponíveis .

RyanDalton
fonte
2

O trabalho do FWIW está em andamento para criar um GDB para o postgis loader. Isso depende do último tronco GDAL que possui ligações GDB. Ainda não tive a chance de compilar e experimentar, mas espero que o PostGIS 2.0 seja lançado.

confira - http://trac.osgeo.org/postgis/browser/spike/pramsey/postgis2fgdb

Provavelmente, você pode dar uma espiada em Paul no grupo de notícias do PostGIS para descobrir onde ele está com isso. http://www.postgis.org/mailman/listinfo/postgis-users

Para o formato Personal GeoDatabase, o GDAL pode ler isso muito bem e é isso que eu costumo usar para exportar dados do geodb pessoal.

LR1234567
fonte
0

Respondendo minha própria pergunta aqui que eu postei aqui há um tempo ...

Outra opção que encontrei on-line (além das sugestões acima) é usar o pgdbf ( https://github.com/kstrauser/pgdbf ), que despeja o script SQL que você pode usar para inserir manualmente no postgres.

Gerson Galang
fonte