Suite

Intersection de deux tables utilisant les valeurs correspondantes dans plusieurs champs


Utilisation principale d'ArcGIS Desktop Basic : je dois trouver l'intersection de deux tables dans la même géodatabase fichier en fonction des valeurs de plusieurs champs. Presque toutes les requêtes pour trouver de l'aide sont des requêtes de champs multiples dans une table jointe ou de nature spatiale. Le premier est tout simplement faux. Pour le second, je ne peux pas supposer une précision spatiale dans le tableau B (ci-dessous), certains éléments se sont déjà montrés en dehors de leur aire de répartition géographique. Et c'est finalement l'objectif final du projet : améliorer la précision spatiale du tableau B en utilisant le tableau A.

Je dois trouver les enregistrements dans A qui correspondent aux enregistrements dans B, mais tous les enregistrements dans B ne sont pas dans A.

Tableaux : A (0,5 million d'enregistrements) B (0,4 million d'enregistrements)

Champs à renvoyer : A.1, A.10, A.11 B.1

Champs à faire correspondre. Je me suis assuré que les champs sont du même type (Text/String, Integer, etc.) et que les appariements ci-dessous correspondent au type et à la valeur. Certains des enregistrements de A vont correspondre à certains des enregistrements de B.

A.2=B.2 A.3=B.3 A.4=B.4 A.5=B.5 A.6=B.6

En utilisant ESRI "Make Query Table" dans 10.2 basic, j'ai utilisé ceci comme requête :

'A.2=B.2 et A.3=B.3 et A.4=B.4 et A.5=B.5 et A.6=B.6'

Je n'ai spécifié aucune clé.

Cela renvoie avec le message qu'il y a une erreur avec l'expression et l'instruction SQL non valide utilisées.

La création de la table sur le champ 6 uniquement prend moins d'une seconde, mais la table ne s'ouvre pas. Le champ 6 est le moins granulaire.

J'ai approfondi mes connaissances et je sens que je ne trouverai pas la réponse précédemment demandée sur Internet. C'est probablement juste une question de base de données et non un problème spatial, mais j'utilise des données spatiales.

MISE À JOUR : J'ai travaillé dessus aujourd'hui (dimanche) un peu plus. Créé un nouveau champ de texte (appelons-le 20) et rempli en concaténant tous les champs ensemble avec succès de sorte que 'A.20 = A.2 & A.3 & A.4 & A.5 & A.6"B.20 = B.2 & B.3 & B.4 & B.5 & B.6' Cela semblait fonctionner parfaitement en utilisant un seul champ pour correspondre, sauf qu'il n'a renvoyé que les 2/3 des enregistrements attendus. Le champ 5 a une granularité élevée et sa suppression a renvoyé 160 % des enregistrements attendus. L'outil « Créer une table de requête » a-t-il une limite au nombre de champs auxquels il peut accéder ?


J'ai créé un outil (Key Field Key to Single Field Key Tool - Relier deux couches basées sur plus d'un champ) qui correspondra à plusieurs champs où chaque champ d'une table/classe d'entités a un champ de correspondance correspondant dans l'autre table/entité classer. Il crée un nouveau champ Long dans chacun avec un nombre qui représente chaque valeur unique dans l'ensemble de champs. Il peut éventuellement affecter des nombres à chaque valeur d'une table et uniquement des valeurs correspondantes dans l'autre table, ou affecter des nombres à toutes les valeurs des deux tables ou uniquement affecter des nombres aux valeurs qui correspondent aux deux tables (-1 est affecté aux valeurs sans correspondance 1 et 3).

Il existe une version 10.2 et une version 10.3. Les interfaces de la version 10.3 sont meilleures, mais l'interface de la version 10.2 fonctionne assez bien. La partie correspondant champ à champ de l'interface est un peu moins intuitive dans la version 10.2, mais elle fonctionne.

Une fois que vous avez une valeur de clé de champ unique, vous pouvez utiliser des opérations de jointure et d'association standard pour sélectionner des enregistrements et transférer des valeurs entre les deux tables. Vous devriez également vérifier les méthodes d'utilisation des curseurs et des dictionnaires (Turbo Charging Data Manipulation with Python Cursors and Dictionaries) pour transférer des données encore plus rapidement qu'une jointure ou une relation et pour modifier les valeurs des champs de forme d'une table à l'autre.


Voir la vidéo: MAB3: Suoran yhtälö ja leikkauspisteet (Octobre 2021).