Résumé
Convertit une table non spatiale en entités ponctuelles en fonction de coordonnées x,y ou d’adresses et qui actualise un jeu de données existant avec des informations d’enregistrement nouvelles ou actualisées de la table.
Utilisation
Une classe d’entités ponctuelles ou une couche d’entités doit exister pour ajouter ou actualiser les enregistrements de la table en entrée.
Vous pouvez utiliser des données tabulaires exportées depuis votre système de répartition assisté par ordinateur ou système de gestion des enregistrements dans cet outil.
Cet outil prend en charge les formats tabulaires suivants en entrée :
- Géodatabase
- dBASE (.dbf)
- Valeurs séparées par des virgules (.csv ou .txt)
- Feuilles de calcul Microsoft Excel (.xls ou .xlsx)
- Vues tabulaires en mémoire
Dans le cas d'une entrée de fichier (.csv ou .txt), la première ligne du fichier en entrée est utilisée comme nom des champs de la table en sortie. Les noms de champ ne peuvent pas contenir d'espaces ou de caractères spéciaux (tels que $ ou *). Vous recevrez une erreur si la première ligne du fichier en entrée contient des espaces ou des caractères spéciaux.
Les opérations de géocodage faisant appel à ArcGIS World Geocoding Service requièrent un abonnement d’organisation ArcGIS Online et consomment des crédits. Le compte d’organisation doit disposer de suffisamment de crédits pour satisfaire à la totalité de la demande de géocodage.
Lorsque la table du paramètre Invalid Records Table (Table des enregistrements non valides) facultatif est créée, la table contient des enregistrements qui n’ont pas été traités comme entités nouvelles ou actualisées. L’enregistrement complet de la table en entrée est ajouté à la table du paramètre Invalid Records Table (Table des enregistrements non valides) ainsi qu’un champ INV_REASON. Le champ INV_REASON contient un code qui identifie la raison pour laquelle l’enregistrement n’a pas été traité comme entités nouvelles ou actualisées.
Le champ INV_REASON est ajouté au paramètre Invalid Records Table (Table des enregistrements non valides) avec les codes suivants :
- NULL_ADDR : tous les champs d’adresse dans l’enregistrement de la table en entrée contiennent des valeurs nulles.
- NULL_ID : les champs d’ID en entrée l’enregistrement de la table en entrée contiennent des valeurs nulles.
- NULL_XY : les champs de coordonnées x et y de la table en entrée contiennent une valeur nulle.
- BAD_DATE : la date en entrée de l’enregistrement de la table en entrée est nulle ou ne peut pas être convertie en date valide.
- BAD_ADDR : l’adresse candidate de l’enregistrement de la table en entrée n’est pas appariée.
- BAD_FM : l’appariement de champ de l’enregistrement de la table en entrée n’a pas réussi car une valeur n’a pas pu être ajoutée au champ en sortie. Par exemple, vous ne pouvez pas ajouter des valeurs de texte dans des champs numériques, ni des valeurs de texte dans des champs de texte si elles dépassent la longueur autorisée pour le champ.
- DUP_ID : l’enregistrement de la table en entrée a un ID dupliqué et n’a pas été mis à jour vers les entités cible car il est antérieur à l’enregistrement existant ou un enregistrement plus récent existe. Ceci est défini par la date de la dernière modification. Si la date de la dernière modification n’est pas utilisée, cela est défini par la valeur OBJECTID la plus élevée.
Lorsque le paramètre Invalid Records Table (Table des enregistrements non valides) est vide, un fichier invalid_records_<timestamp>.fid est créé dans votre espace de travail temporaire. Ce fichier contient la valeur OBJECTID de chaque enregistrement Input Table (Table en entrée) impossible à ajouter ou à actualiser dans le paramètre Target Features (Entités cible).
Lorsque les paramètres Update Existing Target Features (Mettre à jour les entités cible existantes) et Update Geometry for Existing Features (Mettre à jour la géométrie pour les entités existantes) sont tous les deux activés (update_target = "UPDATE" dans Python et update_geometry = "UPDATE_GEOMETRY" dans Python, respectivement), les champs de localisation dans le paramètre Input Table (Table en entrée) sont comparés aux champs de localisation dans le paramètre Target Features (Entités cible) pour déterminer si la géométrie va être actualisée dans le paramètre Target Feature (Entité cible). Lorsque Location Type (Type de localisation) est défini sur Addresses (Adresses), les valeurs Address Fields (Champs d’adresse) sont comparées. Si une différence est détectée entre l’enregistrement Input Table (Table en entrée) et les valeurs de paramètre Target Features (Entités cible), la géométrie Target Features (Entités cible) est actualisée avec la position géocodée en fonction des champs d’adresse dans l’enregistrement Input Table (Table en entrée). L’enregistrement Input Table (Table en entrée) n’est pas géocodé si aucune différence n’est détectée.
Syntaxe
arcpy.ca.UpdateFeaturesWithIncidentRecords(in_table, target_features, location_type, {x_field}, {y_field}, {coordinate_system}, {address_locator}, {address_type}, {address_fields}, {invalid_records_table}, {where_clause}, {update_target}, {match_fields}, {in_date_field}, {target_date_field}, {update_matching}, {update_geometry}, {field_matching_type}, {field_mapping}, time_format)
Paramètre | Explication | Type de données |
in_table | La table contenant les coordonnées x et y ou les adresses qui définissent la position des enregistrements. | Table View |
target_features | La classe d’entités ponctuelles ou la classe d’entités à mettre à jour. | Feature Layer |
location_type | Indique si les entités sont créées avec des coordonnées x,y ou des adresses.
| String |
x_field (Facultatif) | Champ de la table en entrée contenant les coordonnées X (ou longitude). Ce paramètre n’est actif que si le paramètre location_type est défini sur COORDINATES. | Field |
y_field (Facultatif) | Champ de la table en entrée contenant les coordonnées Y (ou latitude). Ce paramètre n’est actif que si le paramètre location_type est défini sur COORDINATES. | Field |
coordinate_system (Facultatif) | Système de coordonnées des coordonnées x et y. Ce paramètre n’est actif que si le paramètre location_type est défini sur COORDINATES. | Coordinate System |
address_locator (Facultatif) | Localisateur d'adresses à utiliser pour géocoder la table d'adresses. Lorsque ce paramètre est défini de façon à utiliser ArcGIS World Geocoding Service, cette opération peut consommer des crédits. Remarque :Lorsque vous utilisez un localisateur d’adresses local, l’ajout de l’extension .loc après le nom du localisateur à la fin du chemin du localisateur est facultatif. Ce paramètre n’est actif que si le paramètre location_type est défini sur ADDRESSES. | Address Locator |
address_type (Facultatif) | Indique comment les champs d’adresses utilisés par le localisateur d’adresses sont appariés aux champs de la table d’adresses en entrée.
Sélectionnez SINGLE_FIELD_ADDRESS si l’adresse complète est stockée dans un champ de la table en entrée, par exemple, 303 Peachtree St NE, Atlanta, GA 30308. Sélectionnez MULTI_FIELD_ADDRESS si les adresses en entrée sont réparties sur plusieurs champs, tels que Adresse, Ville, Région et Code postal. Ce paramètre n’est actif que si le paramètre location_type est défini sur ADDRESSES. | String |
address_fields [address_fields,...] (Facultatif) | Les champs de la table en entrée qui correspondent aux champs d’adresses du localisateur d’adresses. Certains localisateurs prennent en charge plusieurs adresses en entrée telles que Address, Address2 et Address3. Dans ce cas, le composant d’adresse peut être divisé en plusieurs champs et les champs d’adresse sont concaténés au moment du géocodage. Par exemple, 100, Main st et Apt 140 en trois champs ou 100 Main st et Apt 140 constituant deux champs 100 Main st Apt 140 lors du géocodage. Si vous choisissez de ne pas apparier un champ d’adresse facultatif en entrée utilisé par le localisateur d’adresses à un champ dans la table d’adresses en entrée, spécifiez qu’il n’y a pas d’appariement en ne renseignant pas le nom de champ. Ce paramètre n’est actif que si le paramètre location_type est défini sur ADDRESSES. | Value Table |
invalid_records_table (Facultatif) | La table en sortie contenant une liste des enregistrements non valides et des codes d’invalidation associés. | Table |
where_clause (Facultatif) | Expression SQL permettant de sélectionner un sous-ensemble d’enregistrements dans les jeux de données en entrée. Si plusieurs jeux de données en entrée sont spécifiés, ils seront tous évalués à l’aide de cette expression. Si aucun enregistrement ne correspond à l’expression pour un jeu de données en entrée, aucun enregistrement de ce jeu de données ne sera ajouté à la cible. Pour plus d’informations sur la syntaxe SQL reportez-vous à la rubrique Référence SQL pour les expressions de requête utilisées dans ArcGIS. | SQL Expression |
update_target (Facultatif) | Indique si les enregistrements existants sont actualisés dans le paramètre target_features.
| Boolean |
match_fields [match_fields,...] (Facultatif) | Le ou les champs d’ID qui servent à déterminer les appariements entre les valeurs in_table et les valeurs target_features. Ce paramètre n’est actif que si le paramètre update_target est défini sur UPDATE. | Value Table |
in_date_field (Facultatif) | La dernière date de modification des enregistrements in_table. Les champs de type date et chaîne sont pris en charge. Ce paramètre n’est actif que si le paramètre update_target est défini sur UPDATE. | Field |
target_date_field (Facultatif) | Le champ contenant la dernière date de modification des enregistrements target_features. Ce champ doit être de type date. Ce paramètre n’est actif que si le paramètre update_target est défini sur UPDATE. | Field |
update_matching (Facultatif) | Indique si seuls les enregistrements existants sont mis à jour ou si les enregistrements existants sont mis à jour et les nouveaux enregistrements sont ajoutés.
Ce paramètre n’est actif que si le paramètre update_target est défini sur UPDATE. | Boolean |
update_geometry (Facultatif) | Indique si la géométrie des entités existantes est mise à jour.
Ce paramètre n’est actif que si le paramètre update_target est défini sur UPDATE. | Boolean |
field_matching_type (Facultatif) | Indique si les champs de la table en entrée doivent correspondre aux champs des entités cible pour que les données soient ajoutées.
| String |
field_mapping (Facultatif) | Contrôle la manière dont les champs attributaires de la table en entrée sont transférés ou appariés aux entités cible. Ce paramètre n’est actif que si le paramètre field_matching_type est défini sur FIELD_MAP. Comme les valeurs de la table en entrée sont ajoutées à une entité cible existante possédant des champs prédéfinis, vous ne pouvez pas ajouter, supprimer ou modifier le type des champs dans l’appariement des champs. Vous pouvez en revanche définir des règles de combinaison pour chaque champ en sortie. Les règles de combinaison permettent de spécifier la manière dont les valeurs de deux champs en entrée ou plus sont combinées ou fusionnées en une seule valeur en sortie. Plusieurs règles de combinaison permettent de déterminer de quelle manière sont renseignées les valeurs du champ en sortie.
Dans Python, vous pouvez utiliser la classe FieldMappings pour définir ce paramètre. | Field Mappings |
time_format | Le format du champ en entrée contenant les valeurs temporelles. Le type peut être Court, Long, Réel simple, Réel double, Texte ou Date. Vous pouvez choisir un format temporel standard dans la liste déroulante ou entrer un format personnalisé. Remarque :Les chaînes de format respectent la casse.
Pour en savoir plus sur les formats de date et d'heure personnalisés Ce paramètre n’est actif que si la valeur du paramètre in_date_field est un champ de texte et que la valeur du paramètre target_date_field est un champ de date, ou si la valeur en entrée du paramètre field_mapping est un champ de texte et la valeur en sortie un champ de date Ce paramètre n’est actif que si le paramètre update_target est défini sur UPDATE. | String |
Sortie dérivée
Nom | Explication | Type de données |
updated_target_features | Entités cible mises à jour. | Couche d’entités |
Exemple de code
Le script ci-dessous illustre l’utilisation de la fonction UpdateFeaturesWithIncidentRecords en mode immédiat.
import arcpy
arcpy.env.workspace = r"C:\data\city_pd.gdb"
arcpy.ca.UpdateFeaturesWithIncidentRecords("C:/data/calls_for_service_records.csv",
"calls_for_service_features",
"COORDINATES",
"Longitude",
"Latitude",
4326)
Le script autonome suivant est un exemple d’utilisation de la fonction UpdateFeaturesWithIncidentRecords dans un script :
# Name: UpdateFeaturesWithIncidentRecords.py
# Description: Update the calls for service feature class with new updates from the records management system (RMS).
# Import script modules
import arcpy
# Set the workspace
arcpy.env.workspace = r"C:/data/city_pd.gdb"
# Address Field Pairs formatted as ["Locator Address Field Name", "Input Field Name"]
address_field_pairs = [
["Address", "locdesc"],
["Address2", ""],
["Address3", ""],
["Neighborhood", ""],
["City", "municipality"],
["Subregion", ""],
["Region", "state"],
["Postal", "zip5"],
["PostalExt", ""],
["CountryCode", ""]
]
arcpy.ca.UpdateFeaturesWithIncidentRecords("C:/data/calls_for_service_records.csv",
"calls_for_service_features",
location_type="ADDRESSES",
address_locator="https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/ArcGIS World Geocoding Service",
address_type="MULTI_FIELD_ADDRESS",
address_fields=address_field_pairs,
update_target="UPDATE",
match_fields=[["callid", "callid"]],
update_matching="UPSERT",
update_geometry="UPDATE_GEOMETRY",
field_matching_type="AUTOMATIC")
Environnements
Informations de licence
- Basic: Oui
- Standard: Oui
- Advanced: Oui