J'ai essayé de comprendre comment modifier l'ordre de tri d'une géodatabase fichier pour ArcGIS. J'ai utilisé Python et Arcpy pour convertir de nombreux fichiers CAO dans un jeu de données d'entités de géodatabase de fichiers. J'ai réussi à le faire, mais les résultats sont rapportés dans l'ordre lexicographique, je le comprends correctement. C'est il est trié en tant que tel:Tri des jeux de données dans la géodatabase fichier
1, 10, 12, 2, 20, 200, 3, 33, 34, etc.
Bien que ce soit un style de lecture sensible, je ont cherché à l'obtenir dans un ordre «naturel/humain». J'ai fait beaucoup de recherches sur ce concept, et j'ai trouvé le code qui permet cela.
How to sort alpha numeric set in python
Sorting alphanumeric strings in Python
Alors maintenant, la question est ReOrdering tous mes jeux de données fonctionnalité dans 'ordre naturel'.
Ceci est le code qui me permet d'imprimer les jeux de données dans l'ordre, mais qui ne modifie pas réellement la géodatabase.
import re, arcpy
arcpy.env.workspace = r"<input geodatabase location>"
datasets = arcpy.ListDatasets()
# Natural sort through input
def sorted_nicely(l):
""" Sort the given iterable in the way that humans expect."""
convert = lambda text: int(text) if text.isdigit() else text
alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ]
return sorted(l, key = alphanum_key)
# Iterate through listed datasets
for x in sorted_nicely(datasets):
print(x)
Ce morceau de code, dont le script de tri difficile a été utilisé à partir des sources ci-dessus, trie et imprime le résultat souhaité dans mon IDE, mais il ne fait pas quoi que ce soit à mon géodatabase fichier.
Je voudrais faire cela sans utiliser de modules qui ne sont pas pré-installés car cela m'obligerait à obtenir des autorisations pour d'autres téléchargements (c'est-à-dire une complication supplémentaire).
Merci!
Je ne pense pas que vous serez en mesure d'affecter l'ordre de tri utilisé dans ArcMap ou ArcCatalog, car il s'agit juste d'un tri _display_, non stocké dans la géodatabase . Êtes-vous prêt à renommer vos ensembles de données pour inclure des zéros de tête? – Erica
Merci d'avoir laissé une réponse. Je pourrais peut-être faire cela, mais je devrais trouver un moyen de remplir un espace spécifique entre le nom de fichier avec deux ou un chiffre, et exclure certains noms de fichiers. Je vais essayer de le regarder. – heinrich1223