Suite

Utiliser GPRecordSet comme paramètre de sortie dans Python Toolbox ?

Utiliser GPRecordSet comme paramètre de sortie dans Python Toolbox ?


Je voudrais utiliser un GPRecordSet dans ma boîte à outils python comme paramètre de sortie.

Ce géotraitement sera partagé sur mon serveur ArcgGIS et dans mon portail ArcGIS. Je n'ai pas vu de documentation sur la façon de l'utiliser.

Quelqu'un peut-il me donner un exemple simple pour savoir comment l'utiliser?


Quel que soit le traitement de votre script, définissez la sortie finale sur TABLE (pas GPRecordSet). Si vous deviez créer un modèle simple avec l'outil Copier les lignes et définir le paramètre de sortie, il s'agit d'une sortie TABLE. Suivez ce même modèle pour votre PYT. Lorsque vous publiez un service GP, les sorties deviennent codées en dur (l'utilisateur final ne peut pas les définir). Le processus de publication changera la sortie en GPRecordSet par l'interface REST, comme il se doit. Laissez le système faire ce travail pour vous car il est plus facile de créer l'outil avec le paramètre de sortie de table.

Après la publication, le WAB comprend la table (gprecordset) comme une sortie d'un service GP et l'affichera lorsque ce résultat reviendra.

Si cela ne répond pas à votre question je vous propose d'ajouter plus d'informations sur l'endroit où se situe votre problème : création de l'outil, publication de l'outil, création de l'application web, etc.


Services Python tolérants aux pannes -- arcpy

J'ai des services Windows qui doivent fonctionner 24h/24 et 7j/7 (sauf pour les redémarrages). Ils utilisent le package arcpy et une licence flottante. J'ai rencontré des problèmes avec le service pour obtenir une licence. Par exemple, le gestionnaire de licence peut être en panne.

Ce dont j'ai besoin, c'est d'essayer d'importer arcpy. Si cela échoue, continuez d'essayer toutes les x secondes jusqu'à ce que cela réussisse. Donc, vous pourriez penser que quelque chose comme ça fonctionne:

Mais ce n'est pas le cas. Vous pouvez importer arcpy toute la journée et s'il échoue la 1ère fois, il échouera à l'infini. J'ai testé cela en me déconnectant du réseau, en exécutant "import arcpy" plusieurs fois, puis en me reconnectant au réseau et en exécutant "import arcpy" plusieurs fois.

Traceback (appel le plus récent en dernier) :

Fichier "<stdin>", ligne 1, dans <module>

Fichier "C:Program Files (x86)ArcGISDesktop10.2arcpyarcpy\__init__.py", ligne 21, dans <module>

depuis arcpy.geoprocessing importer gp

Fichier "C:Program Files (x86)ArcGISDesktop10.2arcpyarcpygeoprocessing\__init__.py", ligne 14, dans <module>

à partir de l'importation de _base *

Fichier "C:Program Files (x86)ArcGISDesktop10.2arcpyarcpygeoprocessing\_base.py", ligne 592, dans <module>

env = GPEnvironments(gp)

Fichier "C:Program Files (x86)ArcGISDesktop10.2arcpyarcpygeoprocessing\_base.py", ligne 589, dans GPEnvironments

retourner GPEnvironment (géoprocesseur)

Fichier "C:Program Files (x86)ArcGISDesktop10.2arcpyarcpygeoprocessing\_base.py", ligne 545, dans __init__

self._refresh()

Fichier "C:Program Files (x86)ArcGISDesktop10.2arcpyarcpygeoprocessing\_base.py", ligne 547, dans _refresh

envset = (set(env pour env dans self._gp.listEnvironments()))

RuntimeError : non initialisé

Cela ne réussirait jamais avec la même session python ouverte. Je pourrais ouvrir une session distincte et importer avec succès arcpy, revenir à la session défaillante et l'échec continue.

Cela signifie que lorsque le LM tombe en panne pour une raison quelconque, aucun traitement d'erreur ne peut maintenir mes services en cours d'exécution sans les redémarrer manuellement. Eh bien, d'accord, je pourrais écrire quelque chose pour surveiller ces services et les redémarrer automatiquement lorsque ce problème survient, mais je préférerais le gérer au sein du service lui-même.


Possibilités d'accès

Obtenez un accès complet au journal pendant 1 an

Tous les prix sont des prix NET.
La TVA sera ajoutée plus tard dans la caisse.
Le calcul des taxes sera finalisé lors du paiement.

Obtenez un accès limité ou complet aux articles sur ReadCube.

Tous les prix sont des prix NET.


Arguments d'entrée

Sys — Système dynamique modèle de système dynamique | tableau de modèle

Système dynamique, spécifié en tant que modèle de système dynamique SISO ou MIMO ou tableau de modèles de système dynamique. Les systèmes dynamiques que vous pouvez utiliser incluent :

Modèles LTI numériques à temps continu ou à temps discret, tels que les modèles tf (Control System Toolbox) , zpk (Control System Toolbox) ou ss (Control System Toolbox).

Modèles LTI généralisés ou incertains tels que les modèles genss (Control System Toolbox) ou uss (Robust Control Toolbox). (L'utilisation de modèles incertains nécessite le logiciel Robust Control Toolbox™.)

Pour les blocs de conception de contrôle accordables, la fonction évalue le modèle à sa valeur actuelle pour le traçage et le retour des données de réponse en fréquence.

Pour les blocs de conception de contrôle incertains, la fonction trace la valeur nominale et des échantillons aléatoires du modèle. Lorsque vous utilisez des arguments de sortie, la fonction renvoie des données de réponse en fréquence pour le modèle nominal uniquement.

Modèles de données de réponse en fréquence tels que les modèles frd. Pour de tels modèles, la fonction trace la réponse à des fréquences définies dans le modèle.

Modèles LTI identifiés, tels que les modèles idtf , idss ou idproc . Pour de tels modèles, la fonction peut également tracer des intervalles de confiance et renvoyer des écarts types de la réponse en fréquence. Voir Diagramme de Bode du modèle identifié.

Si sys est un tableau de modèles, la fonction trace les réponses en fréquence de tous les modèles du tableau sur les mêmes axes.

LineSpec — Style de ligne, marqueur et couleur vecteur de caractère | chaîne de caractères

Style de ligne, marqueur et couleur, spécifiés sous forme de chaîne ou de vecteur d'un, deux ou trois caractères. Les personnages peuvent apparaître dans n'importe quel ordre. Vous n'avez pas besoin de spécifier les trois caractéristiques (style de ligne, marqueur et couleur). Par exemple, si vous omettez le style de ligne et spécifiez le marqueur, le tracé affiche uniquement le marqueur et aucune ligne. Pour plus d'informations sur la configuration de cet argument, consultez l'argument d'entrée LineSpec de la fonction plot.

Exemple: 'r--' spécifie une ligne pointillée rouge

Exemple: '*b' spécifie des marqueurs astérisques bleus

Exemple: 'y' spécifie une ligne jaune

W — Fréquences | vecteur

Fréquences auxquelles calculer et tracer la réponse en fréquence, spécifiées en tant que matrice de cellules ou comme vecteur de valeurs de fréquence.

Si w est un tableau de cellules de la forme , alors la fonction calcule la réponse à des fréquences comprises entre wmin et wmax .

Si w est un vecteur de fréquences, alors la fonction calcule la réponse à chaque fréquence spécifiée. Par exemple, utilisez logspace pour générer un vecteur ligne avec des valeurs de fréquence espacées de manière logarithmique.

Spécifiez les fréquences en unités de rad/TimeUnit , où TimeUnit est la propriété TimeUnit du modèle.


Comment utiliser une liste SharePoint comme source de données dans votre package SSIS.

Parfois, vous vous trouvez dans une situation où vous souhaitez autoriser les utilisateurs à mettre à jour les données de manière simple et à incorporer les données dans un entrepôt de données. Par exemple, le système ERP du client conserve l'élément de données appelé Départements, mais n'a pas la possibilité de stocker des groupes de départements pour la création de rapports, car il n'est pas pertinent pour le système ERP. L'utilisation d'une liste SharePoint comme source de données peut être une solution simple. Les utilisateurs peuvent le mettre à jour très simplement, votre package ETL peut ajouter ou mettre à jour de nouveaux départements à partir du système ERP via l'entrepôt de données et vous pouvez réintégrer les données saisies par l'utilisateur dans l'entrepôt de données. Il présente certains inconvénients, tels que le manque de vérifications de l'intégrité des données du côté de SharePoint. Mais si vous créez correctement votre package ETL, vous pouvez corriger tous les problèmes d'intégrité qui pourraient être créés par une erreur de l'utilisateur.

Voici ce que je vais démontrer, en utilisant une liste SharePoint pour gérer les groupes de départements appliqués aux départements qui sont maintenus dans le système comptable :

PARTIE 1 – TÉLÉCHARGER ET INSTALLER LES ÉLÉMENTS DE LA BOÎTE À OUTILS SSIS

PARTIE 2 – UTILISER LA LISTE SHAREPOINT COMME SOURCE DE DONNÉES

PARTIE 3 – INSÉRER LES ENREGISTREMENTS DANS LA LISTE SHAREPOINT

PARTIE 4 – METTRE À JOUR LES DOSSIERS DANS LA LISTE SHAREPOINT

PARTIE 5 – SUPPRIMER LES ENREGISTREMENTS DE LA LISTE SHAREPOINT

PARTIE 6 – INTÉGRER L'INTÉGRITÉ DES DONNÉES DANS VOTRE PACKAGE

PARTIE 1 – TÉLÉCHARGER ET INSTALLER LES ÉLÉMENTS DE LA BOÎTE À OUTILS SSIS

1. À partir du serveur sur lequel vous allez créer la solution SSIS, ouvrez votre navigateur et accédez à cette URL. http://sqlsrvintegrationsrv.codeplex.com/releases/view/17652

2. Téléchargez, exécutez et suivez les instructions pour installer SharePointListAdaptersSetup.msi (2008) ou SharePointListAdaptersSetupForSqlServer2005.msi

3. Fermez BIDS s'il est ouvert

4. Ouvrez BIDS dans le menu Outils, sélectionnez Choisir les éléments de la boîte à outils. Accédez à l'onglet Éléments de flux de données SSIS. – **Voir la mise à jour de SQL Server 2012 à la fin de cet article.

5. Cochez les éléments Destination de la liste SharePoint et Source de la liste SharePoint.

6. Ouvrez ou créez une nouvelle solution Integration Services. Accédez à l'onglet Flux de données.

8. Faites glisser la source de la liste SharePoint depuis la section Général…

…à la section Sources de flux de données.

9. Faites glisser la destination de la liste SharePoint depuis la section Général…

…à la section Destinations des flux de données.

Vous êtes maintenant prêt à utiliser une liste SharePoint comme source ou destination dans vos packages.

PARTIE 2 – UTILISER LA LISTE SHAREPOINT COMME SOURCE DE DONNÉES

1. Créez un flux de données dans votre package.

2. Accédez à l'onglet Flux de données et faites glisser la source de liste SharePoint dans le flux de données en tant que source.

3. Double-cliquez sur la source. Faites défiler vers le bas où il est écrit SiteURL.

4. Collez l'URL du site SharePoint dans l'URL du site (excluez tout à partir du mot Listes dans l'URL)

Exemple : si l'URL de votre site SharePoint pour les listes est

5. Tapez le SiteListName. Par exemple, si votre nom de liste est Départements,

6. Si vous souhaitez importer des données à partir d'une vue particulière de cette liste dans SharePoint, autre que la vue par défaut, « MyView » par exemple :

puis ajoutez le nom de la vue dans le SiteListViewName, sinon laissez-le vide.

7. Cliquez sur le bouton Actualiser en bas de la boîte pour charger les métadonnées de la liste SharePoint dans votre flux de données.

8. Cliquez ensuite sur l'onglet Mappages de colonnes pour voir les colonnes disponibles dans votre liste SharePoint.

9. Faites glisser une destination de flux de données sur votre flux de données et procédez comme d'habitude pour extraire des données dans votre destination à partir de la liste SharePoint.

Vous aurez besoin d'en savoir un peu plus sur les listes SharePoint pour comprendre quelles données se trouvent dans quelle colonne. Vous aurez besoin de la colonne ID si vous effectuez une mise à jour de l'entrepôt de données dans la liste SharePoint. Le titre est l'élément qui est l'élément lié dans la liste SharePoint - ce qui signifie que si un utilisateur clique sur l'un des éléments de la liste SharePoint, quel champ est configuré comme lien hypertexte vers l'élément (généralement la première colonne visible dans la liste) .

Parce qu'il y a souvent une poussée et une extraction de données vers et depuis la liste SharePoint, j'ai tendance à créer une table dans l'entrepôt de données spécifiquement pour les données de la liste SharePoint et je laisse les données source dicter la structure de la table en cliquant sur le nouveau bouton pour le "Nom de la table ou de la vue". De cette façon, lorsque les données sont renvoyées vers SharePoint, il n'y a aucun problème de type de données.

PARTIE 3 – INSÉRER LES ENREGISTREMENTS DANS LA LISTE SHAREPOINT

Gardez à l'esprit que la liste SharePoint ne gère aucune intégrité des données, donc si vous ajoutez des enregistrements en double avec le même « Titre » lié, le nom du département dans ce cas, vous obtiendrez des enregistrements en double dans votre liste. Assurez-vous de configurer votre source de données pour insérer uniquement de nouveaux enregistrements, pas des enregistrements existants. Ici, nous ajouterons tous les nouveaux départements qui ont été ajoutés au système ERP (le cas échéant) et les transférerons vers SharePoint.

1. Ajoutez un flux de données à votre package.

2. Accédez à l'onglet Flux de données et faites glisser une source OLE DB comme source. Configurez votre source pour extraire tous les nouveaux départements que vous souhaitez insérer dans la liste SharePoint. Dans cet exemple, SP_Department correspond aux données qui ont été importées de la liste SharePoint, et DIM_Department contient les départements importés du système ERP :

SÉLECTIONNER
DP.Department_Code,
DP.Department_Description
FROM SP_Department en tant que SP RIGHT OUTER JOIN
dbo.DIM_Department comme DP ON SP.Department_Code = DP.Department_Code
O SP.ID EST NULL

3. Faites glisser la destination de la liste SharePoint dans le flux de données en tant que destination.

4. Double-cliquez sur la destination de la liste SharePoint et configurez SiteUrl, SiteListName et SiteListViewName de la même manière que vous l'avez fait dans les étapes 4 à 6 de la partie 2 ci-dessus. De plus, assurez-vous que le BatchType est défini sur Modification. "Modification" est utilisé pour les mises à jour et les insertions, "Suppression" est bien sûr pour les suppressions.

5. Cliquez sur le bouton Actualiser en bas à gauche de la fenêtre de l'éditeur avancé et sélectionnez l'onglet Colonnes d'entrée. Mappez les colonnes Source aux colonnes Destination. Étant donné que nous INSÉRONS des enregistrements, assurez-vous de ne PAS mapper le champ ID. Le flux de données s'attendrait ainsi à une mise à jour plutôt qu'à une insertion.

Notez que Department_Description est mappé au champ Titre, qui est le champ SharePoint lié décrit dans la partie 2 – élément 9 ci-dessus.

6. Exécutez votre tâche de flux de données et vérifiez la liste SharePoint pour les enregistrements ajoutés.

PARTIE 4 – METTRE À JOUR LES DOSSIERS DANS LA LISTE SHAREPOINT

Ici, nous voulons mettre à jour les descriptions des départements dans SharePoint, au cas où un utilisateur aurait décidé de les modifier. Le seul élément que l'utilisateur doit modifier est le groupe de services.

1. Ajoutez un flux de données à votre package.

2. Ajoutez une source OLE DB à l'onglet Flux de données et configurez la source avec la requête correcte pour mettre à jour les descriptions de service pour les services qui existent déjà dans la liste SharePoint. Par exemple:

SÉLECTIONNER
SP.ID,
DP.Department_Code,
DP.Department_Description
FROM SP_Department en tant que SP INNER JOIN
dbo.DIM_Department en tant que DP ON SP.Department_Code = DP.Department_Code

3. Faites glisser la destination de la liste SharePoint dans le flux de données en tant que destination.

4. Double-cliquez sur la destination de la liste SharePoint et configurez SiteUrl, SiteListName et SiteListViewName de la même manière que vous l'avez fait dans les étapes 4 à 6 de la partie 2 ci-dessus. Assurez-vous que le BatchType est défini sur Modification.

5. Cliquez sur le bouton Actualiser en bas à gauche de la fenêtre de l'éditeur avancé et sélectionnez l'onglet Colonnes d'entrée. Mappez les colonnes source aux colonnes de destination. Étant donné que nous mettons à jour les enregistrements, ASSUREZ-VOUS DE mapper le champ ID. Sans l'ID, le flux de données implémentera une insertion plutôt qu'une mise à jour.

6. Exécutez votre tâche de flux de données et vérifiez la liste SharePoint pour les descriptions de service mises à jour.

PARTIE 5 – SUPPRIMER LES ENREGISTREMENTS DE LA LISTE SHAREPOINT

Ici, nous voulons supprimer tous les enregistrements de service de la liste SharePoint qu'un utilisateur peut avoir entré par erreur. La formation des utilisateurs indiquait aux utilisateurs que les départements ne devaient être ajoutés qu'à partir du système ERP et non par les utilisateurs.

1. Ajoutez un flux de données à votre package.

2. Ajoutez une source OLE DB à l'onglet Flux de données et configurez la source avec la requête correcte pour sélectionner les services à supprimer dans la liste SharePoint. Le seul champ dont vous avez besoin dans le résultat est le champ ID qui correspond à l'ID dans la liste SharePoint. Si l'ID est dans cette requête, il sera supprimé de la liste SharePoint. Dans cet exemple, nous supprimerons tous les enregistrements en double et tous les départements qui n'existent pas dans le système ERP :

–DELETE DUPLICATE Codes de département. Prenez l'enregistrement le plus ancien.
SÉLECTIONNER L'ID DE SP_Department
WHERE Department_Code IN (
SELECTIONNER DP.Department_Code FROM SP_Department en tant que SP LEFT OUTER JOIN
dbo.DIM_Department comme DP ON SP.Department_Code = DP.Department_Code
GROUP BY DP.Department_Code HAVING COUNT (sp.id) > 1)
ET ID PAS DANS
(SELECTIONNER MIN(ID) DE SP_Department
WHERE Department_Code IN (
SELECTIONNER DP.Department_Code FROM SP_Department en tant que SP LEFT OUTER JOIN
dbo.DIM_Department as DP ON SP.Department_Code = DP.Department_Code
GROUP BY DP.Department_Code HAVING COUNT (sp.id) > 1))

SYNDICAT
–DELETE les codes de département qui n'existent pas dans ERPSELECT SP.ID FROM SP_Department en tant que SP LEFT OUTER JOIN
dbo.DIM_Department en tant que DP ON SP.Department_Code = DP.Department_Code
O DP.Department_Code EST NULL

3. Faites glisser la destination de la liste SharePoint dans le flux de données en tant que destination.

4. Double-cliquez sur la destination de la liste SharePoint et configurez SiteUrl, SiteListName et SiteListViewName de la même manière que vous l'avez fait dans les étapes 4 à 6 de la partie 2 ci-dessus. De plus, assurez-vous que le BatchType est défini sur Deletion.

5. Cliquez sur le bouton Actualiser en bas à gauche de la fenêtre de l'éditeur avancé et sélectionnez l'onglet Colonnes d'entrée. Mappez la colonne d'entrée d'ID sur la colonne de destination d'ID.

6. Exécutez votre tâche de flux de données et vérifiez la liste SharePoint des départements supprimés.

PARTIE 6 – INTÉGRER L'INTÉGRITÉ DES DONNÉES DANS VOTRE PACKAGE

Mettre tout cela ensemble renforcera l'intégrité des données pour cette liste simple. Voici à quoi ressemble ce paquet.

Voici à quoi sert chaque étape.

1. Tronquer les tables : tronque ces tables –

DIM_Département
DIM_Department_Group
SP_Département

2. Remplir DIM_Department – ​​remplit la table DIM_Department à partir du système ERP.

3. Récupérer le groupe de services du SP – Remplit la table DIM_Department_Group à partir d'une autre liste SharePoint. Ceci est utilisé comme une liste déroulante dans la liste Service SP pour que les utilisateurs sélectionnent le bon service.

4. Récupérer SP_Depts – Remplit la table SP_Department à partir de la liste SharePoint. Voir la partie 2 ci-dessus.

5. Mettre à jour les descriptions de service SP – met à jour toutes les descriptions de service modifiées. Voir la partie 4 ci-dessus.

6.Ajouter les départements manquants au SP - ajoute tous les départements nouveaux ou manquants à la liste SharePoint. Voir la partie 3 ci-dessus.

7. Supprimer les départements invalides du SP – supprime tous les départements invalides de la liste SharePoint. Voir la partie 5 ci-dessus.

8. Tronquer SP_Depts – Tronquer la table SP_Department en vue du rechargement des données corrigées.

9. Récupérer les SP_Depts mis à jour – Remplir la table SP_Department à partir de la liste SharePoint mise à jour. Voir la partie 2 ci-dessus.

10. Mettre à jour les codes de groupe de services – Met à jour la table DIM_Department avec le Department_Group_ID.

UPDATE DIM_Department
SET Department_Group_ID = SP.Department_Group_ID
FROM SP_Department AS SP INNER JOIN
DIM_Department en tant que DP sur DP.Department_Code = SP.Department_Code

Cela peut sembler beaucoup de travail, mais cela ne prend pas beaucoup de temps une fois que vous avez pris le coup. Bien sûr, si vous avez des listes plus complexes ou si vous avez besoin de beaucoup de listes pour gérer ce type de données, vous voudrez vous tourner vers d'autres outils. C'est une bonne solution pour les cas ponctuels occasionnels avec un besoin de données assez simple, où le client n'a pas d'autre outil disponible pour le gérer.

SQL Server 2012 : tous les composants installés sur l'ordinateur local apparaissent désormais automatiquement dans la nouvelle boîte à outils SSIS. Lorsque vous installez des composants supplémentaires, cliquez avec le bouton droit dans la boîte à outils, puis cliquez sur Actualiser la boîte à outils pour ajouter les composants. La destination de la liste SharePoint et la source de la liste SharePoint sont apparues dans le dossier “Common” de la boîte à outils SSIS lorsque j'ai actualisé la boîte à outils.


Voir la vidéo: Python in ArcGIS. Python Toolbox. Новый сезон