Suite

Comment rechercher et remplacer des valeurs d'attribut basées sur une liste

Comment rechercher et remplacer des valeurs d'attribut basées sur une liste


J'ai un Shapefile et une liste en .csv qui contient deux colonnes avec des noms :

  • "Old_name" qui contient les anciens noms qui existent déjà dans la table attributaire du Shapefile mentionné précédemment ; et
  • "New_name" qui contient le nom mis à jour.

Comment puis-je le faire sur ArcGIS, QGIS ou avec python ?

Sur la base de cette question, je dois utiliser leMettre à jour le curseurfonction, mais comment puis-je utiliser la liste dans cette fonction ?


En supposant que le csv est prêt à être consommé par arcpy sous forme de table avec deux colonnes nomméesOLD_NAMEetNOUVEAU NOM, et en suivant l'exemple fourni dans la question pour accéder au shp source dans leMettre à jour le curseur.

#créer un dictionnaire du csv à joindre au shapefile #r[0] est le premier élément passé au SearchCursor et utilisé pour joindre à shp #r[1] est le deuxième élément et utilisé pour la mise à jour csvDict= dict([ (r[0], (r[1])) pour r dans arcpy.da.SearchCursor(my_csv, ["OLD_NAME","NEW_NAME"])]) avec arcpy.da.UpdateCursor(my_shp, ["OLD_NAME", "NEW_NAME"]) comme curseur : pour la ligne dans le curseur : joinFieldValue = row[0] #ceci est "OLD_NAME" sur le fichier de formes si row[0] dans csvDict : #vérifiez si old_name existe dans la nouvelle ligne[1] = csvDict[joinFieldValue] else: row[1] = row[0] #le nouveau nom est le même que l'ancien curseur.updateRow(row) del curseur, ligne

Dans QGIS, vous pouvez effectuer Ajouter une jointure vectorielle.

  1. Cliquez avec le bouton droit sur votre calque de fichier de formes dans le panneau des calques et choisissez Propriétés.
  2. Ensuite aller à Jointure languette.
  3. appuie sur le + bouton, il créera une nouvelle jointure.
  4. La couche de jointure est votre couche de fichier de formes. Le champ de jointure est un champ avec les valeurs communes aux deux. Le champ cible est le champ auquel vous souhaitez vous joindre.
  5. Après cela, vous obtiendrez un nouvel attribut dans votre table de fichiers de formes.

Dans ArcGIS, c'est très similaire. Vous devez utiliser l'outil Ajouter une jointure.

En savoir plus sur l'adhésion à ArcGIS.


Importez le csv sous forme de tableau afin que vous puissiez voir les valeurs, puis cliquez avec le bouton droit sur votre couche d'origine pour choisir les jointures et les relations -> jointure. Assurez-vous que "Join Attributes from Table" est l'option sélectionnée dans le menu déroulant en haut. Choisissez l'ancien_nom dans la couche d'origine (sous #1), la table csv sous #2 et l'ancien_nom dans la table csv pour #3, puis cliquez sur OK. Si vous enregistrez ensuite la couche d'origine dans une nouvelle sortie en cliquant avec le bouton droit et en choisissant "Données" -> "Exporter les données", les deux champs de la table csv dans la table attributaire de sortie seront présents afin que vous puissiez l'utiliser pour votre symbologie ou comme tu veux.


Voir la vidéo: Kunnanvaltuuston kokous