Suite

Installer des pandas à utiliser avec ArcPy dans ArcGIS Desktop ?

Installer des pandas à utiliser avec ArcPy dans ArcGIS Desktop ?


J'ai suivi les instructions très claires de la réponse à Installer des pandas avec le python d'Esri ? et créé la version Esri101 et ajouté un fichier "conda.pth" à mon C:Python27ArcGIS10.2Libsite-packagesconda.pth

et dans le fichier conda.pth, j'ai collé l'emplacement de ma version Esri101 sans guillemets. Lorsque j'ouvre ArcMap ou Python27 IDLE et que je tape ">>> importer des pandas", j'obtiens l'erreur résultante :

Échec du chargement de la DLL : %1 n'est pas une application Win32 valide. Traceback (appel le plus récent en dernier) : Fichier "", ligne 1, dans  import pandas Fichier "C:Anacondaenvsesri101Libsite-packagespandas\__init__.py", ligne 6, dans  de . import hashtable, tslib, lib ImportError : le chargement de la DLL a échoué : %1 n'est pas une application Win32 valide.

Une vérification rapide en ligne me fait penser que cela pourrait avoir quelque chose à voir avec l'exécution d'un anaconda 64 bits et d'un ArcGIS 32 bits.


Je n'ai pas compris comment lier Anaconda à ArcMap Python27, je pense que je dois ajouter une deuxième version 32 bits d'Anaconda mais je ne veux pas déranger mon installation d'Anaconda 64 bits.

J'ai installé des pandas sur ArcGIS python27 (2.7.5) fourni avec Arcmap 10.2.2

D'abord: J'ai modifié temporairement mes variables système pour que Arcgis Python soit la valeur par défaut. Dans Ordinateur clic droit -> Propriétés -> Paramètres système avancés -> Avancé -> Variables d'environnement -> Variables système

J'ai supprimé le chemin par défaut d'Anaconda (en l'enregistrant dans un fichier texte pour plus tard) qui ressemblait à ceci
C:Anaconda;C:AnacondaScripts;
J'ai ensuite ajouté ce chemin C:Python27ArcGIS10.2;C:Python27ArcGIS10.2Scripts;

Accédez au terminal, vérifiez que lorsque vous entrez python, il est indiqué python 2.7.5.

Deuxième: Ensuite, j'ai dû installer setup_tools pour cette version de python.

La troisième: Ensuite, dans l'invite de commande, j'ai entré >> easy_install pandas==0.10.1 (la version actuelle a échoué lorsque j'ai essayé de l'installer)

Vérifiez si "importer des pandas" fonctionne dans IDLE 2.7.5, C'EST FAIT !

Pour terminer: J'ai changé mon chemin système python pour revenir au chemin Anaconda d'origine (j'utilise souvent Spyder et Anaconda indépendamment d'Arcmap, donc c'était important pour moi).


Je ne sais pas quand cela a été ajouté, mais je viens de tester l'importation de pandas dans IDLE qui est installé dans le cadre d'ArcGIS Desktop 10.6, et il semble que les pandas fassent désormais partie de l'installation standard.

Python 2.7.14 (v2.7.14:84471935ed, 16 sept. 2017, 20:19:30) [MSC v.1500 32 bits (Intel)] sur win32 Tapez "copyright", "credits" ou "license()" pour plus informations. >>> importer arcpy >>> importer des pandas >>>

Introduction au Spatial DataFrame¶

Le Spatial Dataframe (SDF) crée un objet simple et intuitif qui peut facilement manipuler des données géométriques et attributaires. Le Spatial DataFrame étend la structure populaire Pandas DataFrame avec des capacités spatiales, vous permettant d'utiliser des opérations intuitives et pandorables à la fois sur les colonnes d'attributs et spatiales. Ainsi, le SDF est basé sur des structures de données intrinsèquement adaptées à l'analyse de données, avec des opérations naturelles pour le filtrage et l'inspection de sous-ensembles de valeurs qui sont fondamentales pour les manipulations statistiques et géographiques.

La trame de données lit de nombreux sources, y compris les fichiers de formes, les Pandas DataFrames, les classes d'entités, GeoJSON et les couches d'entités.

Ce document décrit quelques principes fondamentaux de l'utilisation de l'objet SpatialDataFrame pour travailler avec des données SIG.


Configuration requise

Pour utiliser la version ArcGIS API for Python, vous avez besoin de Python 3.5 ou version ultérieure.

Je ne dirais pas que cette déclaration est incorrecte, juste incomplète. L'installation de l'API ArcGIS pour Python dans une installation Miniconda propre donne une meilleure idée des exigences ( j'ai créé un nouvel environnement virtuel arcgis

L'API ArcGIS pour Python (a.k.a. arcgis ) a pas mal de dépendances. Heureusement, si vous utilisez Conda pour l'installer, les dépendances sont prises en charge pour vous.

Notez que l'installation d'arcgis via Conda installe également Python 3.5.3-5. L'empaquetage de l'API ArcGIS pour Python s'est resserré au fil du temps. Chaque version est désormais développée par rapport à une version spécifique de Python, ce qui rend la déclaration « vous avez besoin de Python 3.5 ou version ultérieure » ​​sur la page des exigences partiellement incorrecte.

Si vous installez l'API ArcGIS pour Python sur une machine sans ArcGIS Pro, vous n'aurez pas accès à ArcPy, donc certaines fonctionnalités de l'API ArcGIS pour Python ne seront pas disponibles.


Ingénierie des Systèmes d'Information Géographique

3 – Ouvrez Visual Studio (par exemple 2012) et créez un nouveau projet :

4 – Dans l'onglet “Autres langues”, sélectionnez l'option Python car nous utilisons l'interpréteur CPython et définissez les propriétés ci-dessous (modifiez la solution et le nom du projet en conséquence) et cliquez sur ok pour confirmer.

5 – Visual Studio créera la solution et le projet, y compris le fichier PythonExample.py.

6 – Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur le projet PythonExample et créez un nouveau dossier.


Installation à l'aide d'Anaconda pour Python Distribution¶

Conda¶

Ouvrez une application de terminal, accédez au répertoire dans lequel vous souhaitez travailler et activez l'environnement conda que vous souhaitez utiliser avec l'API ArcGIS pour Python. Installez l'API avec la commande suivante :

conda install -c esri arcgis

Remarque : vous pouvez également utiliser l'indicateur -n <environment_name> pour installer le package dans l'environnement de votre choix.

Pipenv¶

Pipenv est l'outil de packaging officiel pour la gestion des environnements et l'installation de packages à partir de Python Package Index (PyPI). Pour installer l'API ArcGIS pour Python à partir de PyPI dans un nouvel environnement, créez un nouveau dossier nommé your-folder . Ouvrez un terminal et exécutez cd /path/to/your-folder pour changer de répertoire dans your-folder . Ensuite, entrez la commande suivante pour créer simultanément un nouvel environnement et y installer l'API :


Créer un nouveau document cartographique (*.mxd) à l'aide d'ArcPy

par ChrisFox

Si ce MXD vierge faisait partie de l'installation d'ArcGIS, je le considérerais comme une solution, mais si vous voulez dire que la post-installation doit s'assurer qu'il est disponible sur chaque machine sur laquelle mon code est exécuté, c'est pour moi une solution de contournement.

C'est dommage que le code ci-dessous ne fonctionne pas - peut-être que arcpy.mapping.MapDocument() peut être amélioré pour permettre l'ouverture de Normal.mxt ?

mxd = arcpy.mapping.MapDocument(r"C:UsersGraemeAppDataRoamingESRIDesktop10.1ArcMapTemplatesNormal.mxt")
mxd.saveACopy(r"C: emp est.mxd")

par ChrisFox

Dans les versions 10.0 et 10.1, vous trouverez de nombreux MXD disponibles avec l'installation à l'adresse :

<Installation d'ArcGIS Desktop>MapTemplates

Cela vous donne toutes sortes de MXD avec différentes tailles et orientations de mise en page. De plus, selon la façon dont vous partagez votre code, si vous créez un complément python, il est possible de packager des données, y compris un MXD vierge avec votre complément :

Ces deux recommandations devraient fournir de bonnes solutions de contournement (même une solution virtuelle).

Cependant, cela ne fera probablement que déplacer le point de blocage pour moi : pourquoi de nouveaux éléments de mise en page et d'autres objets tels que des grilles et des graticules ne peuvent-ils pas être créés à l'aide d'ArcPy ?

par ChrisFox

Cloner du texte et des éléments graphiques pour que les propriétés puissent être modifiées est certainement une aide, alors merci de me les rappeler.

Le plus important pour moi est de ne pas pouvoir modifier les intervalles sur les graticules existants à l'aide d'ArcPy - j'espère que l'idée ArcGIS liée à cela continuera d'attirer des votes.

importer arcpy
sous-processus d'importation
importer le système

def install (paquet):
subprocess.call([sys.executable, "-m", "pip", "install", package])

def CreateMXD(chemin):
GetModule('esriCarto.olb')
importer comtypes.gen.esriCarto en tant que esriCarto
pMapDocument = CreateObject(esriCarto.MapDocument, esriCarto.IMapDocument)
pMapDocument.New(chemin)
pMapDocument.Save() #probablement pas requis.

def GetLibPath() :
""" Obtenir le chemin de la bibliothèque ArcObjects

Ce serait bien de simplement charger le module directement au lieu d'avoir besoin du chemin,
ils sont enregistrés après tout. Mais je ne connais pas assez COM pour faire ça


D'autres packages Python à utiliser avec Arcpy ?

J'apprends Python pour la science des données et je cherche à intégrer ce que j'apprends dans mes projets SIG. Peut-être que je pourrais exporter une table Near Analysis au format csv et exécuter des fonctions statistiques dessus.

Quelqu'un d'autre utilise-t-il d'autres packages Python dans le même script qu'Arcpy ?

Quelles tâches faites-vous avec ces packages ?

J'utilise beaucoup Pandas pour manipuler des tableaux et des formats. La variété des méthodes de sortie (dict, json, csv, xls, etc.) rend la conversion de données assez simple. Il alimente également bien l'API Python pour la gestion d'ArcGIS Online ou du portail.

Au fur et à mesure que vous apprenez, assurez-vous de comprendre les différences entre Python 2 et Python 3, 32 et 64 bits et qui est exécuté par ArcPy via ArcGIS Desktop et ArcPy via ArcGIS Pro. Ces différences générales seront essentielles pour vous assurer que vous pouvez utiliser différentes bibliothèques.

Dans quelle mesure Pandas fonctionne-t-il avec les classes d'entités dotées d'un réseau géométrique ?

Il alimente également bien l'API Python pour la gestion d'ArcGIS Online ou du portail.

En tant que nouvel apprenant Python, voudriez-vous expliquer comment cela fonctionne s'il vous plaît ?

J'ai utilisé Pandas plusieurs fois auparavant dans mes cours, mais j'en ai oublié la plupart depuis plus de 2 ans. En ce moment, j'apprends automatiquement Python à partir du niveau 0 avec le cours ouvert du MIT. À quel moment pensez-vous que j'appliquerai mes connaissances et compétences Python dans ArcGIS ? En ce moment, je ne fais que m'entraîner sur Codeacademy et Codewars.

Geopandas est un bon module. Vous pouvez lire un fichier de formes (ou d'autres formats spatiaux) et le traiter comme une trame de données de pandas. Je n'écris pas de scripts Python depuis si longtemps, mais je trouve cela plus facile que d'utiliser arcpy pour explorer les statistiques et éditer des tableaux.

Pandas/Numpy pour la manipulation de données. Si vous apprenez python pour la science des données, vous connaissez probablement déjà ces bibliothèques

Reportlab pour générer des rapports. C'est un peu une courbe d'apprentissage mais offre une tonne de flexibilité/personnalisation

OpenCV/Scikit Image/PIL pour le traitement d'images.

Requests/BeautifulSoup4 pour le grattage de pages Web

Matplotlib/Seaborn pour le traçage/la visualisation

fuzzywuzzy pour la correspondance de chaîne floue. Est pratique pour traiter des données désordonnées

sentinelsat pour avoir parlé au Copernicus Open Access Hub

Je vais travailler fuzzywuzzy dans mon prochain script juste pour pouvoir taper ce mot plus souvent

Généralement, j'essaie d'éviter ArcPy comme la peste car c'est une douleur absolue à utiliser avec des environnements virtuels et assez lent. De plus, si vous mettez à niveau votre logiciel, Esri supprime l'ancienne installation Python et la remplace par un nouveau chemin. Supprimer par la suite tous les packages que vous avez installés, ce qui n'est pas bon lorsque vous avez un tas de tâches planifiées. Il semble avoir été quelque peu résolu dans l'API ArcGIS pour Python, mais honnêtement, je n'ai pas joué avec.

Selon le script et ses fonctionnalités, nous utilisons couramment les bibliothèques suivantes :

psycopg2 - Adaptateur de base de données PostgreSQL

schedule - Planifiez quand exécuter les scripts

pandas - Traitement et optimisation des données

shapely - Gestion et ajustement de la géométrie

ogr/gdal - Formats géospatiaux en lecture/écriture

Il y en a d'autres excellents répertoriés ici et beaucoup de bibliothèques spécialisées là-bas. En fait, je n'ai pas utilisé GeoPandas mais ça a l'air génial. Devrait jouer avec plus car il combine beaucoup des bibliothèques ci-dessus.


ArcGIS Desktop et ArcGIS Pro

Tous les anciens utilisateurs d'ArcGIS Desktop sont encouragés à passer à ArcGIS Pro, car le développement actif d'ArcGIS Desktop s'est arrêté.

Installation

    et ArcGIS Desktop.
  • Pour l'installation dont vous avez besoin paquet d'installation, demandez à la personne de contact ArcGIS de votre université. Le package d'installation d'ArcGIS Pro peut également être téléchargé à partir d'ArcGIS Online.
  • Veuillez également installer les correctifs et les service packs nécessaires.

Licence

Les produits ArcGIS doivent être autorisés. Options de licence pour les membres du consortium :

  • Utilisateurs nommés, option principale pour ArcGIS Pro, non disponible pour ArcGIS Desktop. L'utilisateur doit disposer du compte ArcGIS Online de l'université d'origine avec une licence ArcGIS Pro personnelle. Demandez-le à l'administrateur ArcGIS Online de votre université d'origine.
  • Licences simultanées à partir du serveur de licences CSC, option principale ArcGIS for Desktop, mais également disponible pour ArcGIS Pro. Demandez à la personne de contact ArcGIS de votre université d'origine l'adresse du serveur de licence et les numéros de port à ouvrir. Aide : ArcGIS Pro et ArcGIS Desktop.
  • Licence à usage uniques, pour ArcGIS Pro et ArcGIS for Desktop, uniquement pour le personnel universitaire. La licence à usage unique ne nécessite pas de connexion Internet, donc utile par exemple lors de travaux sur le terrain. Les licences à usage unique sont toujours valables jusqu'à la fin de l'année civile. Les licences à usage unique sont disponibles auprès des personnes de contact de l'Université.

Le serveur de licences CSC est disponible uniquement à partir du réseau FUNET (universités finlandaises). Lorsque vous travaillez en dehors du réseau FUNET, par exemple à domicile, vous devez d'abord vous connecter à votre réseau universitaire (VPN).

Emprunter des licences concurrentes

La licence du site ArcGIS Educational inclut également la possibilité d'emprunter des licences pour 100 jours. Avec une licence empruntée, il est possible de travailler sans connexion Internet ou en dehors du réseau FUNET.

  • Empruntez toujours le produit de base ArcGIS Desktop ou ArcGIS Pro, seul le niveau Avancé est disponible.
  • Toutes les extensions doivent être empruntées séparément, vous êtes libre de choisir celles dont vous avez besoin. Surtout avec ArcGIS Pro, assurez-vous d'emprunter toutes les extensions dont vous avez besoin. Il n'est pas possible d'ajouter des extensions à un produit de base déjà emprunté.
  • Les licences empruntées en fin d'année sont toujours restituées le 31 décembre, en raison du renouvellement annuel des licences.
  • Le renvoi d'une licence empruntée ne fonctionne pas avec ArcGIS Pro. La licence est automatiquement restituée au dernier jour d'emprunt.

Exploration et analyse des données avec ArcGIS Notebooks

Ouvrez ArcGIS Pro et créez un nouveau projet vide. Ce projet particulier s'appelle « Notebook ». Avant de charger une couche de données, cliquez sur l'onglet « Projet » et choisissez « Options ». Une nouvelle fenêtre s'ouvre avec sur la gauche une liste de paramètres sous Projet. Le premier paramètre s'appelle « Paramètres actuels » et contient cinq champs contenant des informations sur votre projet actuel, telles que le nom du projet et l'emplacement sur le disque. Les informations sous "dossier de base" sont utilisées ci-dessous, mais vous savez maintenant où trouver ces informations lorsque vous référencez des dossiers de fichiers sur le disque lors de l'utilisation d'arcpy.

Ensuite, cliquez sur « Annuler » ou « OK » et cliquez sur le bouton fléché qui pointe vers la gauche dans la partie supérieure gauche de l'écran pour revenir à l'interface de la carte. Nous utiliserons une couche de points avec tous les hôpitaux d'Angleterre pour ce didacticiel, disponible via ArcGIS Online. Si vous disposez de l'extension Portal, sélectionnez Portal dans la fenêtre Catalogue et cliquez sur l'icône ArcGIS Online (représentant un nuage). Recherchez une couche d'entités hébergée appelée « Hospitals England » et ajoutez-la à la carte. Vous ne pourrez peut-être pas voir les données car elles ne sont visibles que lors d'un zoom avant. Voici à quoi devraient ressembler les données :

Les données représentent tous les hôpitaux d'Angleterre, divisés en deux catégories : rouge pour les hôpitaux du secteur NHS et bleu pour les hôpitaux du secteur indépendant. Nous allons maintenant utiliser Python pour avoir une idée de la répartition géographique des hôpitaux par comté pour voir quel comté a le plus d'hôpitaux et quel type (bleu ou rouge).

ÉTAPE 2 : Créer un nouveau bloc-notes

Nous allons maintenant créer un bloc-notes dans ArcGIS Pro pour commencer à écrire du code. Il existe plusieurs façons de créer un nouveau bloc-notes : la manière la plus rapide via l'interface du ruban en sélectionnant le menu « Insertion » et en cliquant sur « Nouveau bloc-notes ». Vous pouvez également utiliser la fenêtre Catalogue en sélectionnant l'onglet « Projet » et en cliquant avec le bouton droit sur l'icône « Notebook » et sélectionnez « Nouveau bloc-notes ». Un nouveau bloc-notes sera créé ensuite. Si vous voulez voir à la fois l'interface de la carte et le bloc-notes, il est préférable d'ancrer le bloc-notes dans la partie gauche de l'écran en sélectionnant le bloc-notes avec votre souris, déplacez-le pour qu'il commence à flotter et une croix apparaîtra pour vous permettre de sélectionner une direction pour ancrer l'ordinateur portable. Nous allons maintenant commencer à écrire du code.

ÉTAPE 3 : Écrire le code Python Nous allons commencer par importer les packages python requis. Ce sont arcpy, arcgis et pandas. Tous ces packages sont livrés avec une installation standard de Pro. Vous pouvez vérifier quels packages sont disponibles pour votre projet en vous rendant sur le bouton "Projet" et en sélectionnant "Python", où vous pouvez voir les packages installés sous "Packages installés":

Dans le bloc-notes, utilisez le code suivant pour la première cellule et exécutez-le :

depuis arcgis.gis importer le SIG

Nous avons besoin du module arcpy pour référencer le fichier sur le disque, du module arcgis pour convertir une table attributaire en un DataFrame pandas et des pandas pour interroger les données.

Ensuite, référencez l'espace de travail actuel avec le code suivant dans une nouvelle cellule de bloc-notes et exécutez-le à l'aide du bouton « Exécuter » en haut du bloc-notes ou à l'aide de « SHIFT » + « ENTRÉE » :

Ici, nous référençons l'espace de travail sur le disque. Le [nom d'utilisateur] est un espace réservé pour votre propre nom d'utilisateur. Ensuite, créez un objet DataFrame pandas en utilisant la méthode "from_featureclass" du module arcgis.spatial empilé sur la méthode pandas pour créer un DataFrame comme suit, avec la couche de point d'hôpital comme argument :

Imprimez les cinq premières entrées du bloc-notes avec la commande suivante dans une nouvelle cellule du bloc-notes :

Cette visualisation est similaire à l'ouverture d'une table attributaire, mais elle est désormais disponible sous forme de copie et de cadre de données pandas, un format pratique pour l'inspection et l'analyse des données. Une trame de données pandas est un tableau numpy. Avant l'existence du module arcgis, il était possible de convertir une table attributaire en un tableau numpy en utilisant arcpy, mais c'est beaucoup plus facile en utilisant la méthode from_featureclass utilisée ci-dessus.

Utilisez la commande suivante pour obtenir une liste de toutes les valeurs de colonne :

Nous utiliserons ensuite les valeurs « Sector » et « County » pour voir quel comté a le plus grand nombre de valeurs et regrouper les différents types d'hôpitaux par comté.

Utilisez le code suivant pour compter les hôpitaux par comté et voir les quatre comtés avec les comptes les plus élevés :

L'ordre par défaut dans lequel les pandas affichent les valeurs de comptage est décroissant. Nous voyons que le Kent a le plus d'hôpitaux, suivi de l'Essex, du Sussex et du Lancashire :

Nous allons maintenant utiliser la colonne "Secteur" pour voir combien d'hôpitaux il y a pour chaque type, en utilisant le code suivant :

Cela nous dit qu'il y a des hôpitaux du secteur du NHS que des hôpitaux du secteur indépendant, 306 exactement. Notez que le nombre total est significativement plus élevé que les 187 hôpitaux trouvés en les comptant à l'aide de la colonne Comté, ce qui signifie probablement des valeurs manquantes là-bas.

Pour créer des sous-groupes d'hôpitaux (appartenant notamment à une catégorie bleue ou rouge) par département, on peut utiliser le code suivant. Cela reviendrait à utiliser une requête SQL à l'aide d'une clause Group By :

Cette instruction n'imprime aucune sortie, nous devons donc utiliser une instruction d'impression python pour voir les résultats :

La sortie est répertoriée par ordre alphabétique en utilisant les noms de comté, mais n'affiche qu'une sélection de la sortie totale. Pour que Python imprime toutes les valeurs dans une cellule de code, utilisez ce code :

Répétez maintenant la variable utilisée pour la sortie ci-dessus pour voir le nombre de valeurs par type d'hôpital et par pays :


Formation d'un modèle

Utilisez l'outil Entraîner un modèle d'apprentissage en profondeur pour entraîner un modèle à l'aide de PyTorch, ou entraînez le modèle en dehors d'ArcGIS Pro à l'aide d'un cadre d'apprentissage en profondeur tiers pris en charge dans le bloc-notes Jupyter. Commençons par entraîner un modèle en utilisant les ensembles de données d'entraînement créés lors de la première étape.

Définissons le dossier du jeu de données.

prepare_data La fonction prépare un objet de données à partir de l'échantillon d'apprentissage exporté par Exporter les données d'apprentissage. Vérifions les cours.

La fonction prepare_data a utilisé environ 10 % des puces d'image pour entraîner le modèle à reconnaître les panneaux solaires. Les 90 % restants sont utilisés pour tester la précision du modèle. Les données préparées peuvent être vérifiées en visualisant un lot aléatoire de l'ensemble d'apprentissage.

arcgis.learn nous permet de définir l'architecture SSD en une seule ligne de code. Définissons un Détecteur Single Shot avec les tailles de grille, les échelles de zoom et les proportions spécifiées.

Le paramètre grid spécifie la taille de la cellule de la grille, dans ce cas, 4x4. arcgis.learn inclut un outil de recherche de taux d'apprentissage et est accessible via la méthode model's lr_find(), qui peut sélectionner automatiquement un taux d'apprentissage optimal, sans nécessiter d'expériences répétées. De plus, nous spécifions un niveau de zoom de 1,0 et un rapport hauteur/largeur de 1,0:1,0. La fonction lr_find() exécute le Learning Rate Finder et affiche le graphique de sa sortie.

Le taux d'apprentissage est d'environ 0,0017. La fonction model.fit() peut être appelée pour adapter notre modèle aux données d'entraînement. Ici, nous entraînons le modèle pour 10 époques.

En règle générale, la perte de validation doit être similaire mais légèrement supérieure à la perte d'entraînement. Il semble que le modèle formé ci-dessus soit un bon ajustement.

Quel est le score de précision moyen pour les détections de panneaux solaires à ce stade ?

Il est évident que le taux de précision de 80% est assez élevé lors de notre première tentative avec moins d'échantillons d'apprentissage.

Enregistrons le modèle dans le dossier model's.

Le modèle entraîné est maintenant prêt à être déployé.


Créer des classes d'entités à partir d'un bloc de données pandas

J'avais un grand dessin CAO que j'avais importé dans ArcGIS, converti en une classe d'entités et classé des groupes d'entités à l'aide d'un préfixe à 3 lettres. J'avais également une feuille de calcul contenant une longue liste de ces préfixes, ainsi que des colonnes d'informations supplémentaires pour ce préfixe, y compris le nom de la classe d'entités et le type de forme.

Je voulais créer les classes d'entités pour des dizaines de ces préfixes, en fonction des valeurs de ma classe d'entités convertie et d'une classe d'entités modèle pour la structure du champ. L'outil de géotraitement Sélectionner aurait pu facilement séparer toutes les différentes entités par préfixe pour moi, mais cela aurait conservé la structure de classe d'entités DAO, et non la structure que je voulais.

J'ai pensé que ce serait le bon moment pour entrer dans les pandas (et éventuellement les géopandas, peut-être).

#
# @date 24/06/2015
# @auteur Cindy Williams
#
# Crée des classes d'entités en recherchant le
# nom dans un bloc de données pandas
#
# A utiliser en tant que script autonome
#
importer arcpy
importer des pandas au format pd
# Définir l'espace de travail
arcpy. env. espace de travail = r"C:SomeArbFolderwork.gdb"
# Classe d'entités de modèle
fc_template = "ftr_template"
# Feuille de calcul contenant les valeurs
xl_workbook = r"C:SomeArbFolderassets.xlsx"
lyr_source = arcpy . la gestion . MakeFeatureLayer ( "ftr_source" )
field_category = "Catégorie"
# Obtenir la projection à partir de la classe d'entités modèle
sr = arcpy . Décrivez ( fc_template ). spatialRéférence
# Créer un bloc de données et analyser les valeurs
df = pd. read_excel ( xl_workbook , 0 , parse_cols [ 0 , 6 ], index_col = "Prefix" )
# Obtenir la liste des catégories
categories = list ( set ( row [ 0 ] pour la ligne dans arcpy . da . SearchCursor ( lyr_source , field_category )))
pour chat dans les catégories :
print ( "Traitement " + chat )
qry = """ "<0>" = '<1>' """ . format ( catégorie_champ , chat )
# Recherchez la catégorie dans le bloc de données et renvoyez le nom de la classe d'entités correspondante
nom_fc = df . loc [ cat , "Nom de la classe de fonction" ]
essayer :
arcpy. la gestion . CreateFeatureclass ( arcpy . env . espace de travail ,
nom_fc ,
"POINT" ,
modèle_fc ,
"#" ,
"#" ,
sr)
print ( "Fonctionnalité créée : " + nom_fc )
lyr_cat = arcpy . la gestion . MakeFeatureLayer ( in_features = lyr_source ,
where_clause = qry )
arcpy. la gestion . Ajouter ( lyr_cat , fc_name , "NO_TEST" )
sauf Exception comme e :
imprimer ( e )
print ( "Terminé " + chat )
print ( "Script terminé." )

À la ligne 28, je charge les 7 premières colonnes de la première feuille du classeur dans un bloc de données pandas. J'ai défini la colonne d'index sur la colonne appelée “Prefix”, de sorte que ces valeurs seront utilisées pour la recherche au lieu de l'index int par défaut attribué par les pandas.

À la ligne 37, la valeur de préfixe de la classe d'entités est utilisée pour rechercher le nom de la classe d'entités correspondante dans le bloc de données pandas. Une fois la classe d'entités créée avec succès, une couche de sélection des entités correspondantes est ajoutée à la nouvelle classe d'entités. Je pourrais utiliser un SearchCursor et stocker les fonctionnalités correspondantes dans une liste python à copier dans la nouvelle classe de fonctionnalités, mais c'est quelque chose que je testerai à un autre moment.


Voir la vidéo: Exploiter la puissance dArcGIS dans Microsoft Excel