Eu tenho um shapefile com vários atributos, por exemplo YEAR
, COUNTY
e AREA
. Eu também tenho um arquivo CSV com mais campos que eu quero no shapefile, como POPULATION
. O shapefile e o arquivo CSV têm um campo GISJOIN
. Eu sei como fazer uma junção no QGIS. Mas como posso fazer uma junção permanente e gravar em um shapefile usando ogr2ogr
ou uma das outras ferramentas no GDAL / OGR?
shapefile
ogr
csv
attribute-joins
Lincoln Mullen
fonte
fonte
Respostas:
O utilitário ogr2ogr suporta uma sintaxe sql limitada . Você pode associar seu CSV ao shapefile usando algo como o seguinte:
fonte
A resposta aceita é realmente útil, mas eu achei que era lenta com um banco de dados grande. Eu acredito que também limita suas opções ao ingressar nos dados.
Meu método agora é colocar tudo no SQLite (usando uma combinação de csvkit e ogr2ogr):
Em seguida, junte tudo e crie um shapefile a partir dele:
fonte
-append
para darogr2ogr
permissão para abrir um banco de dados SQLite existente e adicionar a ele. Eu editei a resposta para mostrar isso.csvsql --db sqlite:///myjoindb.db --insert myjoincsv.csv geoid.map(str)
ou algo assim?geoid
está sendo convertido em um número, mas o número é tão grande que transborda e se torna negativo. Verifique a documentação do csvsql , você pode tentar especificar uma tabela na qual diz explicitamente quegeoid
é uma sequência, caso contrário,--no-inference
pode ajudar.