Tengo un archivo de formas con varios atributos, por ejemplo YEAR
, COUNTY
y AREA
. También tengo un archivo CSV con más campos que quiero en el archivo de forma, como POPULATION
. Tanto el archivo de forma como el archivo CSV tienen un campo GISJOIN
. Sé cómo unirme en QGIS. Pero, ¿cómo puedo hacer una unión permanente y escribir en un shapefile usando ogr2ogr
una de las otras herramientas en GDAL / OGR?
shapefile
ogr
csv
attribute-joins
Lincoln Mullen
fuente
fuente
Respuestas:
La utilidad ogr2ogr admite una sintaxis sql limitada . Puede unir su CSV al archivo de forma usando algo como lo siguiente:
fuente
La respuesta aceptada es realmente útil, pero descubrí que era lenta con una base de datos de gran tamaño. Creo que también limita sus opciones al unir los datos.
Mi método ahora es extraer todo en SQLite (usando una combinación de csvkit y ogr2ogr):
Luego, une todo y crea un shapefile a partir de él:
fuente
-append
allí para darogr2ogr
permiso para abrir una base de datos SQLite existente y agregarla. He editado la respuesta para mostrar esto.csvsql --db sqlite:///myjoindb.db --insert myjoincsv.csv geoid.map(str)
o algo así?geoid
se está convirtiendo en un número, pero el número es tan grande que se desborda y se vuelve negativo. Consulte la documentación de csvsql , puede intentar especificar una tabla donde explícitamente diga quegeoid
es una cadena, de lo contrario--no-inference
podría ayudar.