J'ai un shapefile avec plusieurs attributs, par exemple YEAR
, COUNTY
et AREA
. J'ai également un fichier CSV avec plus de champs que je veux dans le fichier de formes, comme POPULATION
. Le fichier de formes et le fichier CSV ont tous deux un champ GISJOIN
. Je sais comment faire une jointure dans QGIS. Mais comment puis-je créer une jointure permanente et écrire dans un fichier de formes à l'aide de l' ogr2ogr
un des autres outils de GDAL / OGR?
shapefile
ogr
csv
attribute-joins
Lincoln Mullen
la source
la source
Réponses:
L' utilitaire ogr2ogr prend en charge une syntaxe SQL limitée . Vous pouvez joindre votre CSV au fichier de formes en utilisant quelque chose comme ceci:
la source
La réponse acceptée est vraiment utile, mais j'ai trouvé que c'était lent avec une base de données de grande taille. Je crois que cela limite également vos options lors de la jonction des données.
Ma méthode consiste maintenant à tout tirer dans SQLite (en utilisant une combinaison de csvkit et ogr2ogr):
Rejoignez ensuite tout et créez un fichier de formes à partir de celui-ci:
la source
-append
pour donner laogr2ogr
permission d'ouvrir une base de données SQLite existante et de l'ajouter. J'ai édité la réponse pour le montrer.csvsql --db sqlite:///myjoindb.db --insert myjoincsv.csv geoid.map(str)
ou quelque chose?geoid
à une conversion en nombre, mais le nombre est si grand qu'il déborde et devient négatif. Consultez la documentation de csvsql , vous pouvez essayer de spécifier une table dans laquelle vous dites explicitement qu'ilgeoid
s'agit d'une chaîne, sinon cela--no-inference
pourrait vous aider.