Suite

Sélectionner des parcelles en polygones et ajouter des champs en fonction des polygones


J'ai beaucoup de classes d'entités (résultats de zone de desserte avec différents polygones (0 à 10/10 à 20/20 à 40 et 40 à 60) (figure 1)

J'ai aussi un shapefile avec beaucoup de parcelles (figure 2)

Maintenant, je veux sélectionner les parcelles qui sont situées dans les polygones (figure 1) par la suite, je veux ajouter un champ dans le fichier de formes 'parcelles' avec un numéro 4 si la parcelle se trouve dans le polygone de 0 à 10, un numéro 3 si la parcelle se situe dans le polygone 10 à 20, numéro 2 pour les polygones 20 à 40 et numéro 1 pour les polygones 40 à 60.

Pour mon prochain résultat de zone de service (figure 1), donc à partir d'un autre pas de temps ou d'un autre emplacement, je souhaite également sélectionner les parcelles situées dans ces polygones, ajouter un champ avec le numéro 4 si… , numéro 3 si… J'ai donc reçu un tableau comme la figure 3


Ceci peut être réalisé avec l'utilisation d'une jointure spatiale (clic droit dans la table des matières -> jointure -> jointure des données en fonction de l'emplacement spatial). La jointure spatiale vous permettra de transférer des attributs d'une classe d'entités à une autre en fonction de l'emplacement. Cependant, j'ai toujours rencontré des problèmes avec les limites lorsque j'effectue une jointure spatiale entre des polygones. Pour vous assurer que vos résultats ont le plus de sens en termes d'emplacement de vos caractéristiques, je suggère d'abord de désactiver tous vos champs dans votre classe d'entités de parcelle (clic droit dans la table des matières -> Propriétés -> Champs), puis d'effectuer une entité Conversion de points sur votre classe d'entités de parcelle. Assurez-vous de sélectionnerÀ L'INTÉRIEURcomme emplacement de votre point.

Une fois que vos parcelles sont des points, la jointure spatiale sera plus fiable. Désactivez tous les champs de votre classe d'entités de zone de desserte, à l'exception du champ sur lequel vous souhaitez baser votre classification. Effectuer unJointure spatialesur vos points colis, en utilisant votre zone de service comme fonction de jointure.

Le résultat de votre jointure spatiale doit être une classe d'entités ponctuelles qui contient le champ de la classe d'entités de zone de desserte. Vous souhaitez modifier ces désignations en fonction de ses valeurs, alors ouvrez la table attributaire pour accéder au calculateur de champs. Faites un clic droit sur l'en-tête du champ de désignation et sélectionnezCalculateur de champ.

Dans votreCalculateur de champboîte de dialogue, choisissez Python comme analyseur, puis cliquez sur Afficher le bloc de code. Dans votre bloc de code, essayez quelque chose comme ceci :

def UpdateField (fldValue) : if fldValue >= 0 et fldValue < 10 : renvoie 1 elif fldValue >= 10 et fldValue < 20 : renvoie 2 elif fldValue >= 20 et fldValue < 30 : renvoie 3

Dans le code ci-dessusif/elif fldValue >= * et fldValue < *définit votre plage d'entrées, etretour 1indique la valeur à laquelle vous souhaitez convertir cette plage (dans ce cas,1).

puis saisirChamp de mise à jour (!ServiceAreaFld!)dans votre calculateur de champ, où ServiceAreaFld est le nom du champ qui contient les valeurs sur lesquelles vous souhaitez baser votre désignation.

Maintenant, vos valeurs d'attribut doivent être comme vous le souhaitez. Effectuer un de plusJointure spatiale, cette fois sur vos parcelles, en utilisant les points comme fonction de jointure. Cela transférera la valeur de vos points à la classe d'entités de votre parcelle.


vous pouvez utiliser la jointure spatiale pour obtenir l'attribut de votre zone de service chevauchant les parcelles. Vous pouvez ensuite modifier les valeurs à l'aide du calculateur de champ.


Voir la vidéo: Create, modify and Label a Polygon area Feature in QGIS (Octobre 2021).