Trier une table d'entités par emplacement géographique


8

Voici un défi intéressant: j'ai besoin d'incorporer un tableau dans une disposition de carte afin que les enregistrements dans le tableau soient triés en fonction de leur position géographique sur le terrain. Par exemple, dans une carte du nord au sommet, l'entité la plus au nord (les points dans ce cas) doit être le premier enregistrement et la plus au sud le dernier.

La composition de la carte est dans ArcGIS, mais je suis prêt à utiliser gdal / ogr, qgis, etc. pour le tri des tables si besoin est.

Pour étendre cette question au-delà de mon cas d'utilisation immédiat et la rendre ainsi plus utile à la communauté, une solution robuste permettrait de choisir d'autres types géographiques, tels que l' ouest vers l'est ou l' intérieur vers l'extérieur .

illustration


Quel système de coordonnées utilisez-vous?
Mapperz

@mapperz, degrés décimaux géographiques, mais cela pourrait facilement être UTM ou Albers si nécessaire.
matt wilkie

Réponses:


7

Pour trier dans le sens d'un palier de a degrés du nord, précalculer le vecteur de direction de l' unité en tant que (sin (a), cos (a)).

Avec un calcul de champ, obtenez les coordonnées (projetées) [X] et [Y] des entités (utilisez leurs centres de gravité ou autre pour les entités non ponctuelles) si elles ne sont pas déjà disponibles et calculez un nouveau champ égal à la distance le long de la relèvement, donné par le produit scalaire du vecteur direction avec les coordonnées:

z = sin(a) * [X] + cos(a) * [Y]

Triez le tableau sur [z] dans l'ordre croissant.

Par exemple, pour un tri du nord au sud, le relèvement est de 180 degrés, v = (sin (180), cos (180)) = (0, -1), et le tri résultant est donc sur - [Y], qui organise les enregistrements du plus grand [Y] (premier) au plus petit [Y] (dernier), exactement comme prévu.


Un tri "intérieur vers extérieur" pourrait signifier beaucoup de choses, mais une interprétation est que le tri devrait être basé sur la distance par rapport à un emplacement central. Une solution similaire s'applique, en utilisant le théorème de Pythagore pour calculer la distance (au carré) d'un point fixe. (L'application de la racine carrée n'est pas nécessaire car elle ne modifie pas l'ordre de tri.)


Un ordre de tri plus fantaisiste est expliqué et illustré dans «Carte unidimensionnelle du monde».


2

Pour exprimer la réponse de whuber en termes d'utilisation des outils, voici une implémentation simple du cas d'utilisation Nord-Sud, Est-Ouest lors de l'utilisation de données ponctuelles dans Arcgis:

  • Ajouter des colonnes Xet Y(ou Latet Long) à la table attributaire, Calculer la géométrie
  • l' exportation vers Excel ou autre, sorte par la colonne d'intérêt (X pour Est-Ouest, Y pour Nord-Sud), puis ramener avec Ajouter des données X / Y .

courtoisie de l'article technique d'Esri HowTo: Trier les caractéristiques Nord / Sud ou Est / Ouest pour l'exportation

Comment changer l'ordre des fonctionnalités dans un fichier de formes? propose des solutions pour effectuer la partie de tri de table pour Arcgis et Qgis sans avoir besoin d'exporter vers un programme externe (bien que vous ayez encore besoin de dupliquer la table / classe d'entités), et Trier les enregistrements de fichiers de formes sur l'attribut pour mettre à jour le nouveau champ de classement à l'aide de Python? a une méthode arcpy.


3
ArcGIS 10.0 et versions ultérieures propose une option de tri spatial dans l'outil de tri.
klewis

1

Comme l'a commenté @klewis :

ArcGIS 10.0 et versions ultérieures propose une option de tri spatial dans l'outil de tri

L' aide de l'outil de tri , qui nécessite une licence de niveau avancé, décrit les éléments suivants spatial_sort_method:

Specifies how features are spatially sorted. Sort method is only enabled when the Shape field is selected as one of the sort fields.
UR —Sorting starts at upper right corner. This is the default.
UL —Sorting starts at upper left corner.
LR —Sorting starts at lower right corner.
LL —Sorting starts at lower left corner.
PEANO —Sorting uses a space filling curve algorithm, also known as a Peano curve.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.