Suite

GetParameterAsText(arcpy) ne fonctionne pas


Je suis nouveau dans ce domaine. je pratiquais la fonction GetParameterAsText(). Je sais que lorsque vous exécutez le code (par exemple dans PythonWin), cela fonctionne comme la fonction entrée brute(), il devrait donc afficher une petite fenêtre dans laquelle l'utilisateur peut saisir les champs requis.

Mon problème est que j'ai essayé hier d'utiliser la fonction GetParameterAsText(), mais j'ai cette erreur, et je pense qu'il s'agit des bibliothèques :

J'ai utilisé l'exemple dans l'aide d'ArcGIS : http://resources.arcgis.com/en/help/main/10.1/index.html#//018v000000047000000

*Fichier "C:Python27ArcGIS10.2Libsite-packagespythonwinpywinframeworkscriptutils.py", ligne 322, dans RunScript debugger.run(codeObject, principale.dict, start_stepping=0) Fichier "C:Python27ArcGIS10.2Libsite-packagespythonwinpywindebugger__init__.py", ligne 60, dans run GetCurrentDebugger().run(cmd, globals,locals, start_stepping) Fichier "C:Python27ArcGIS10.2Libsite-packagespythonwinpywindebuggerdebugger.py", ligne 655, dans run exec cmd in globals, locaux

Fichier "C:WCGISGeog485Lesson1scriptspractice_4.py", ligne 1, dans import os

Le fichier "C:Program Files (x86)ArcGISDesktop10.2arcpyarcpymanagement.py", ligne 2429, dans CopyFeatures, soulève une erreur d'exécution : échec de l'exécution. Les paramètres ne sont pas valides. ERREUR 000735 : Fonctionnalités d'entrée : La valeur est requise ERREUR 000735 : Classe de fonctionnalité de sortie : La valeur est requise Échec de l'exécution (CopyFeatures).*


GetParameterAsTextfonctionne différemment (au moins dans ArcGIS 10). Il analyse arguments de ligne de commande passé au script lors de son exécution afin quearcpy.GetParameterAsText(n)renvoie le même quesys.argv[n+1](qui peut aussi être utilisé). Aucune interactivité dedans.

La seule façon de donner à l'utilisateur une belle fenêtre pour saisir les paramètres est de créer une boîte à outils dans l'environnement ArcGIS, puis d'ajouter > Script dessus. Dans la boîte de dialogue, spécifiez le.pycomme source et déclarez les noms et types de paramètres ainsi qu'une validation facultative.

Ensuite, un élément de script doit apparaître dans la boîte à outils ; un double-clic affiche l'interface graphique et permet à l'utilisateur de saisir les paramètres. Lorsque vous cliquez sur OK, ArcGIS prend les paramètres et exécute le script avec eux en tant qu'arguments de ligne de commande.

L'autre façon d'exécuter le script est de spécifier les paramètres manuellement dans la ligne de commande, bien sûr. Pas très convivial, cependant, mais plus utile pour le débogage, je suppose.


Comprendre le RDMS et le SIG

J'essaie de comprendre le RDMS et comment ils peuvent se rapporter au SIG. J'ai du mal à penser aux cas d'utilisation, je suppose. Comme disons que nous stockons un tas de données spatiales dans un RDMS - en quoi est-ce utile ? Par manque de meilleure phrasé. Qu'est-ce qui rend le stockage de ce RDMS sur un serveur meilleur/différent qu'une simple géodatabase de fichier ole ? Quelqu'un peut-il donner des exemples de cas d'utilisation dans un environnement professionnel ?

Un énorme avantage est que, bien que les données FGDB puissent être lues par plusieurs utilisateurs simultanément, elles n'ont pas été conçues pour et ne permettent pas l'édition simultanée par plusieurs utilisateurs, contrairement aux SGBDR.

Les SGBDR incluent également des modèles de sécurité beaucoup plus sophistiqués qui vous permettent de fournir à certains utilisateurs un accès en lecture seule à certains ensembles de données tout en leur fournissant la lecture/écriture à d'autres, ou en bloquant complètement leur accès à d'autres. Vous ne pouvez pas le faire avec un FGDB.

Les SGBDR sont également l'épine dorsale de nombreuses autres applications d'entreprise (bien sûr, les applications dépendent spécifiquement de votre secteur d'activité), et le fait d'avoir vos données SIG dans la même base de données que les données non SIG signifie une intégration beaucoup plus facile entre les deux.

Probablement un tas d'autres raisons, mais ce sont trois grandes raisons qui me viennent à l'esprit.

Merci. Je suppose que la discussion entre RDMS et FGDB est l'endroit où ArcSDE entre en jeu ? C'est un peu difficile pour moi de visualiser comment les données spatiales sont conservées dans un RDMS et les interactions dans les éléments ESRI. Et quand nous entrons dans des trucs open source comme postgis, il y a encore plus de questions haha.

Accéder aux mêmes données à partir de nombreuses applications différentes et, en relation avec cela, la possibilité de stocker (peut-être virtuellement) les résultats de calculs statiques (par exemple, des tampons de taille fixe autour des polygones) dans la base de données pour que toutes les applications y accèdent. Également la possibilité de définir des fonctions afin que toutes les applications obtiennent des résultats cohérents, même lorsqu'il existe potentiellement plusieurs manières différentes et complexes d'obtenir approximativement la même réponse.

Par SGBDR, voulez-vous dire quelque chose comme Oracle ou MySQL ? Ou êtes-vous intéressé à ajouter des relations dans une FGDB ?

Les bases de données relationnelles ont du vrai SQL, contrairement à la géodatabase de fichier ole simple. SQL offre une productivité bien supérieure dans les SGBD. Ne pas disposer de SQL pour la géodatabase fichier est l'une des plus grandes pièces manquantes dans Arc.

C'est une grande question qui pourrait probablement avoir un tas de cas d'utilisation différents. Les autres gars ici ont en quelque sorte mentionné la sécurité et les fonctions multi-utilisateurs/rôles. Ceux-ci sont astucieux, mais je ne les considérerais pas comme la principale raison de coller des éléments spatiaux dans un RDMS.

Je colle toutes mes affaires dans Postgres+PostGIS+TimescaleDB. C'est mon choix chaque fois que je démarre un nouveau projet spatial (ou même non spatial). Voici pourquoi :

Les bases de données relationnelles sont meilleures pour stocker des données: Bien sûr, si vous parlez d'une poignée de géométries, collez-les simplement dans ce avec quoi vous êtes le plus à l'aise. Qu'en est-il si vous avez des milliards de points GPS, ou plusieurs chaînes de lignes décrivant des transects d'enquête, ou des charges et des charges de données non spatiales que vous souhaitez comparer d'une manière ou d'une autre avec des données spatiales. Lorsque les choses commencent à prendre de l'ampleur, vous devez pouvoir utiliser de gros outils. Le RDMS est conçu pour gérer des téraoctets de données et pour gérer les nouvelles données entrantes sans ralentir. Lorsqu'ils sont correctement construits, ils peuvent être stupides rapidement.

Les bases de données relationnelles "x27" sont meilleures pour le "traitement" des données: Disons que vous avez la trace GPS de chaque avion, pour l'année dernière, et que vous voulez voir quels pays sont le plus souvent survolés. Bonne chance pour essayer de rendre cela dans QGIS. Mais dans PostGIS, il s'agit d'une simple jointure spatiale et, avec les bons index, cela prendra quelques secondes. Supposons maintenant que vous souhaitiez regrouper ces aéronefs par pays d'origine, trouver la distance moyenne entre les aéronefs à leur point d'approche le plus proche et créer un réseau graphique d'aéroports. Également relativement facile à faire en SQL et vous saurez exactement ce qui se passe et votre méthode sera stockée dans SQL, plutôt que de cliquer dans une interface graphique et de ne pas être déclarative à 100%.

Les bases de données relationnelles sont meilleures pour servir les données: Vous souhaitez que les fonctions GPS de votre avion soient exposées à votre carte Web ? Ecrivez un appel API/procédure stockée. Vous voulez qu'ils travaillent sur les données en direct au fur et à mesure qu'ils arrivent ? Écrire une vue. Vous voulez qu'il puisse servir les données super agrégées sans que l'utilisateur attende la fin de la fonction à chaque fois ? Actualisez périodiquement une vue matérialisée et exposez-la à la place. Il existe de nombreux outils pour créer des API, ingérer des données, les recracher, les contrôler par utilisateur, etc. Les RDMS sont conçus pour ce genre d'utilisations.

Maintenant, bien sûr, il y a un certain temps de montée en puissance lorsqu'il s'agit d'utiliser des DB'. Je ne les utiliserais pas là où toutes mes données pourraient être conservées dans la RAM (enfin, je le ferais probablement de toute façon parce que j'ai appris à quel point PostGIS est étonnamment puissant, mais je ne le recommanderais pas) mais où elles brillent vraiment, c'est dans les projets "grands" qui nécessitent plusieurs utilisateurs, des ensembles de données faisant autorité et l'ingestion de nouvelles données.

Toutes les raisons pour lesquelles des données non spatiales restent bloquées dans une base de données s'appliquent également aux données spatiales.


Mon professeur de collège m'a donné une tâche d'interpolation de contour en utilisant la hauteur de tache indiquée sur la carte ci-dessous. Puis-je dessiner les contours à l'aide de gis ??

Je vais défendre votre professeur ici. Vous devriez le faire à la main. Le fait est que vous apprendrez le processus derrière les outils. Non, vous ne dessinerez probablement pas les contours manuellement dans le travail. Mais si vous ne comprenez pas comment cela fonctionne, il y a de fortes chances que vous fassiez des erreurs ou que vous restiez bloqué sur la route si vous vous fiez uniquement à l'ordinateur.

Oui, il suffit de relier les points. =)

Merci pour ça. Je donne également un devoir d'interpolation manuelle dans mes cours, et c'est exactement pour cette raison. @OP, gardez à l'esprit que toute la cartographie a été réalisée à la main jusqu'à l'avènement du SIG. La base du fonctionnement de nombreux outils SIG est la façon dont les choses étaient auparavant faites à la main.

Je fais ça pour gagner ma vie (avec un ordinateur), et je serais d'accord avec ce type. Lorsque j'ai commencé à travailler avec des données de profondeur dans des points pour interpoler les contours, il était vraiment difficile de comprendre comment l'édition des données changerait l'interpolation des contours. Cela semble être un exercice vraiment utile que je n'ai jamais rencontré. Comme pour tout, cela demande de la pratique, mais après un petit moment, il devient plus facile de « lire » comment les contours vont s'interpoler en fonction des données de profondeur dont vous disposez.