Suite

Classer manuellement les données graduées en dehors de la plage dans ArcGIS for Desktop ?


J'ai deux fichiers de formes représentant des grilles avec des valeurs symbolisées par des couleurs graduées, illustrées ci-dessous :

Vous pouvez voir que les deux fichiers de formes englobent des plages de données similaires, mais attribuent des couleurs légèrement différentes aux plages de ces données. Je voudrais symboliser les plages dans chacun des deux fichiers de formes en utilisant les mêmes couleurs pour les mêmes plages, permettant une comparaison plus facile entre les fichiers et permettant l'utilisation d'une seule légende.

Cependant, lorsque j'essaie de classer les plages avec un intervalle manuel, ArcGIS force la plage la plus élevée à inclure également la valeur minimale du jeu de données. Vous pouvez le voir dans la plage "-81.64 - 10.00" du cadre de données de gauche, ci-dessous. Cela force le calque entier à être symbolisé avec cette couleur. Essentiellement, ArcGIS exige que la valeur minimale du jeu de données soit utilisée comme valeur dans l'une des plages.

Existe-t-il un moyen de contourner cette fonctionnalité ?


C'est définitivement une douleur majeure quand ArcMap essaie d'être, euh, utile même quand vous ne le voulez vraiment pas.

Une solution de contournement que j'ai trouvée consiste à créer un nouvel ensemble de données temporaire et à ajouter quelques points avec les valeurs minimales et maximales dont vous savez avoir besoin dans la sortie - assurez-vous simplement de couvrir toute la plage.

Créez votre symbologie basée sur ce faux jeu de données et enregistrez cette symbologie dans un fichier de couche :

… puis Importez la symbologie du fichier *.lyr sur votre jeu de données réel :


@ChrisW a dit :

Pour autant que je sache et que je puisse trouver des preuves, vous ne pouvez pas définir une plage de classification en dessous de la valeur minimale dans les données.

Cela m'a fait réfléchir et j'ai en fait trouvé un moyen de définir la plage de classification en dessous de la valeur minimale. Mon problème d'origine était basé sur le fait que la plage de classification la plus basse devait contenir la valeur minimale dans les données.

Cependant, aucune restriction de ce type n'est imposée aux autres plages de classification utilisées. On peut donc forcer deux (ou plus) des plages de classification pour tomber en dessous de la valeur minimale dans les données. L'un d'eux représentera la plage de classification minimale préférée, tandis que l'autre fonctionnera comme une plage fictive pour contenir la valeur minimale.


Voici le point de départ que j'ai utilisé pour le classement. Chacune des couches des quatre trames de données a été classée à l'aide d'un intervalle défini de 10 pieds sans égard aux plages de données des autres couches.

La plage de classification maximale dans l'une des quatre trames de données est de "0,01 à 10,00", et la plage de classification minimale est de "-110,62 à -110.00" (qui deviendra idéalement "-119.00 à -110.00"). Puisque j'essaie de maintenir des intervalles de 10 pieds, cela se traduit par un total de 13 intervalles.


J'utilise le cadre de données en haut à gauche comme source pour ma légende générique. Je commence par ouvrir les propriétés du calque et par classer. Comme je veux que 13 intervalles soient visibles, je dois sélectionner 14 intervalles pour avoir une plage fictive disponible. Je fais cela en sélectionnant Manuel comme méthode et en créant 14 classes.

Avec les plages configurées dans leur état actuel (avec les valeurs les plus élevées en haut), toute modification de la valeur entrée dans la plage n'aura aucun effet sur autre chose que la plage tout en bas de la liste. @ChrisW a souligné qu'il ne s'agissait pas d'un bogue, mais plutôt d'une caractéristique de la façon dont ArcGIS attribue des valeurs de rupture. Voici la fenêtre Propriétés de la couche après avoir sélectionné la méthode manuelle mais avant d'apporter des modifications aux plages :


Pour résoudre ce problème, j'inverse temporairement le tri du calque. À ce stade, les plages les plus basses sont en haut, tandis que les plages les plus élevées sont en bas.

Maintenant, si je fais défiler vers le bas de la liste des plages (où la plage la plus élevée est affichée) et commence à définir les intervalles appropriés de bas en haut, ArcGIS se souviendra des plages que je définis :

Dans cette image, j'ai défini la valeur supérieure dans 5 des 14 plages, en commençant par la plus grande valeur (10,00) et en descendant.


Lorsque j'atteins le haut de la liste et que je modifie ma 14e plage, sa valeur minimale sera toujours définie comme la valeur minimale du calque, car il n'y a pas d'autre plage en dessous pour en tirer une valeur :

Cela n'a pas d'importance, cependant, car il s'agit de la gamme factice que j'ai mentionnée précédemment. À ce stade, j'inverse à nouveau le tri du calque, de sorte que les plages les plus élevées sont à nouveau en haut. L'image ci-dessous montre la légende mise à jour pour le bloc de données en haut à gauche, qui reflète désormais les plages appropriées pour tout les quatres trames de données, y compris la 14e plage factice :


L'étape suivante consiste à propager ces modifications au reste des trames de données. Cependant, certains problèmes apparaissent lorsque j'essaie d'importer la symbologie dans les autres blocs de données :

Comme @ChrisW l'a souligné, cela est dû à ma décision de commencer avec une couche qui n'a pas la valeur minimale absolue sur toutes les trames de données. Il semble que le bloc de données n'affichera aucune plage inférieure aux plages qui existent dans le bloc de données d'origine.

Si vous commencez avec une couche comme celle que j'ai faite, la meilleure solution que j'ai trouvée pour cela est de répéter les étapes que j'ai décrites ci-dessus pour chacune des quatre trames de données ; définir manuellement 14 classes, inverser le tri des classes, redéfinir le haut de chaque plage, puis inverser le tri pour placer les plus hautes plages en haut.

La solution la plus simple, cependant, est de commencer le processus de classification avec la couche qui a la plus petite valeur. L'option Importer la symbologie peut alors être utilisée correctement pour les autres trames de données.


Enfin, je peux supprimer trois des légendes et masquer la plage factice dans la légende restante ou la convertir en graphiques et supprimer la plage factice.


Je suis tombé sur ce même problème, je pense… Si je comprends bien, vous aviez deux ensembles de données (ou plus) et vous devez faire correspondre les plages d'échelle de l'ensemble de données afin que des comparaisons puissent être faites.

Je l'ai résolu par :

  1. Créez votre premier jeu de données tel que vous souhaitez qu'il apparaisse. Idéalement, avec la plus grande plage de données, juste pour que les symboles puissent être copiés plus facilement dans le deuxième jeu de données (plus petite plage).

  1. Créez votre deuxième jeu de données, mais ne vous inquiétez pas pour l'instant de la symbologie. Dans les deuxièmes jeux de données Propriétés de la couche > Symbologie onglet choisissez le même type de classification qu'avec le premier jeu de données, pour cet exemple j'utilise Catégories > Valeurs uniques puis cliquez sur le Ajouter toutes les valeurs bouton.

  1. Regroupez les valeurs de manière à ce qu'elles tombent dans les plages correspondantes utilisées dans le premier ensemble de données. Sélectionnez toutes les valeurs pour une catégorie particulière, puis faites un clic droit et sélectionnez Grouper. Les deux premières catégories ont déjà été regroupées dans l'image ci-dessous, les quatre vallées en surbrillance sont sur le point d'être "tirées" dans un troisième groupe.

  1. Je trouve plus facile à ce stade de renommer les catégories afin qu'il soit plus facile de suivre. À ce stade, vous pouvez voir cinq des sept catégories remplies.

  1. Enfin (presque) et le nœud de ce problème, ajouter dans les catégories vides qui existent en dehors de la plage de données du deuxième ensemble de données. Dans le Propriétés de la couche > Symbologie onglet cliquez sur le Ajouter des valeurs bouton et remplissez avec les catégories requises au-dessus et en dessous des plages de données selon les besoins.

  1. Enfin, renommez les nouvelles catégories vides afin qu'elles correspondent au premier ensemble de données, puis recolorez chaque catégorie afin qu'elle corresponde aux premières.

Désolé si c'est un peu trop simplifié ou même une mauvaise pratique/mauvaise pratique. Je suis un utilisateur de longue date de GIS This Site et j'ai pensé qu'il était temps que je commence à contribuer, c'est donc mon premier post !


  1. Choisissez le nombre de cours que vous souhaitez.
  2. Faites un clic droit sur les symboles et sélectionnezenregistrer les pauses de classe
  3. cela enregistre un fichier xml que vous pouvez ouvrir et modifier dans n'importe quel éditeur de texte
  4. modifiez les pauses de classe que vous souhaitez dans le fichier xml et enregistrez
  5. cliquez à nouveau avec le bouton droit sur les symboles et importez le fichier de pauses de classe nouvellement édité

FINI


Tandis que le classification utilise des plages similaires, le Les données ne partagez pas une plage. Je pense que la solution ici est de le résoudre dans la légende et les affectations de couleurs, et non dans la classification réelle.

Commencez par votre résultat en bas à gauche et convertissez cette légende en graphique. Modifiez le texte pour obtenir les plages souhaitées. Je remarque que toutes vos autres images ont une plage de 10 unités, mais celle-ci en fait 20 et elle se chevauche. Par exemple, trois des images ont de -49,99 à -40,00 mais celle en bas à gauche a de -49,99 à -60,00 et la classe suivante est de -59,99 à -70,00. Les images sont également des plages opposées - c'est-à-dire que trois ont une valeur inférieure à gauche tandis que la valeur inférieure gauche est une valeur inférieure à droite (ce qui me semble beaucoup plus naturel, augmentant Nombres si non valeurs de gauche à droite). Peut-être que ces problèmes doivent être résolus en premier pour gagner du temps plutôt qu'une simple modification de texte manuelle.

Une fois que vous avez une légende avec des plages et une palette de couleurs que vous aimez, vous pouvez revenir à vos deux premiers calques (qui sont déjà classés correctement) et modifier manuellement le patch de couleur de chaque plage pour qu'il corresponde à la couleur que vous avez choisie pour la plage dans la légende . Étant donné que les deux calques n'afficheront pas leurs propres légendes, peu importe que dans l'un d'eux, la plage soit en fait de -89,99 à -80,00 et que l'autre soit de -81,64 à -80,00 car ils auront tous les deux la même couleur. .

Notez, cependant, que cela impliquera que les deux ensembles de données ont la même plage, ce qui n'est pas le cas. En fait, il semble qu'il y aura deux patchs de couleur qui ne seront utilisés que dans une seule carte chacun (le plus haut et le plus bas). Vous voudrez peut-être mettre une note sur chaque carte qui donne leur plage de données absolue. J'utiliserais également 'to' au lieu de '-' entre les plages, car avec les valeurs négatives, c'est un peu déroutant à lire.


Solution alternative:

Pour autant que je sache et que je puisse trouver des preuves, vous devez avoir une classe qui commence à votre valeur minimale. Vous pouvez ajouter manuellement des classes (même vides) au-dessus ou en dessous de votre plage de données, mais une classe doit commencer à la valeur minimale.

Donc, configurez votre symbologie en utilisant le raster qui contient la valeur la plus basse/minimum de tous les rasters. Faites-les symboliser. Vous pouvez ensuite modifier la classe étiqueter pour dire ce que tu veux. Donc, si votre valeur la plus basse était de 0,4, vous pouvez toujours changer l'étiquette pour dire 0.

Une fois que vous avez terminé et configuré avec la palette de couleurs que vous aimez, enregistrez un fichier lyr de la symbologie. Vous devriez alors pouvoir ouvrir vos autres rasters et appliquer la même symbologie. Étant donné que les autres rasters auront tous des valeurs plus élevées, ils doivent être classés correctement et seule la valeur minimale elle-même augmentera (ou peut-être que cette classe sera supprimée si rien n'y tombe). Encore une fois, vous pouvez changer l'étiquette de classe en étage de classe au lieu de la valeur réelle si cela ne se poursuit pas avec la symbologie.


Une solution plus simple mais aussi plus sale qui a fonctionné pour moi. N'oubliez pas de créer une sauvegarde de vos données d'origine.

  1. Ouvrez la table attributaire et commencez à éditer
  2. Modifiez manuellement deux valeurs afin que la valeur minimale et la valeur maximale sur laquelle vous souhaitez que votre classification soit basée soient incluses (rappelez-vous les valeurs d'origine)
  3. Enregistrer et arrêter l'édition
  4. Classer en fonction des nouveaux extrema
  5. Recommencer et remplacer manuellement les valeurs modifiées par les valeurs d'origine
  6. La classification existante ne sera pas affectée

Je crois qu'il s'agit de la légende des caractéristiques, mais pas des rasters. S'il s'agit de rasters, ne tenez pas compte de ma suggestion. J'utilise habituellement ceux-ci :

  • Fusionnez 2 (ou plusieurs fichiers de formes) ENFANTS en un seul, appelons-le FAMILLE
  • créer une légende pour la FAMILLE
  • importer la symbologie pour chaque ENFANT de la FAMILLE

J'espère que ça aide, FP


J'ai fait la solution de contournement suivante. J'ai créé mes propres sauts de classe dans un document XML et je l'ai chargé dans la symbologie classifiée des deux couches.

  1. Pour obtenir un modèle d'un document sur les ruptures de classe-XML : dans les propriétés du calque cliquez droit sur la plage de classification puis "enregistrer les ruptures de classe".
  2. Editer le document XML : saisir les ruptures de classes dans le document XML, vous pouvez également entrer des nombres qui seront hors de portée de vos ensembles de données.
  3. Charger les pauses de classe XML : même menu où vous avez enregistré le modèle (voir 1), cliquez sur "charger les pauses de classe"


Une autre façon consiste à combiner toutes les valeurs de chaque couche en une seule couche, en utilisant cette méthode, vous aurez les valeurs minimales et maximales dans la couche.

L'illustration :
1.combinez les valeurs de toutes les couches dans une colonne (appelons-la All_Vals) dans une feuille Excel

  1. à côté de la colonne All_Vals, ajoutez deux nouvelles colonnes nommées X et Y et remplissez-les de zéros.

  2. Dans arcmap, ajoutez la feuille Excel en tant que table et utilisez-la pour créer une classe d'entités ponctuelles à l'aide de la commande/outil display xy data, puis exportez la couche d'événements dans un fichier de formes (je l'appellerai NB_Point) et ajoutez-la au bloc de données.

4 . Convertissez le fichier de forme NB_Point en une grande partie du type de classe d'entités de vos couches, par exemple si le type de votre couche d'entités est un polygone, utilisez l'outil tampon pour créer une classe d'entités polygone à partir du fichier de formes NB_Point (appelons-le NB_polygon).

  1. Maintenant, tout ce que vous avez à faire est de cliquer avec le bouton droit sur la couche finale NB_polygon et d'appliquer la symbologie de couleur graduée à l'aide de la classification des ruptures naturelles, de l'exporter dans un fichier .lyr pour l'utiliser comme couche d'entrée lors de l'utilisation de l'utilitaire de symbologie de couche d'importation pour chaque des couches d'origine.

J'espère que cela vous aidera et désolé pour toute faute d'orthographe.