Suite

Arcpy ListFeatureClasses dans le même espace de travail diffère lorsqu'il est exécuté à partir d'ArcMap VS IDLE


Cela marche

Le script python suivant fonctionne lors de la connexion à mon serveur dev ArcGIS, à la fois à partir de la fenêtre python d'ArcMap et de l'interface graphique/shell python IDLE s'exécutant sur mon poste de travail de développement :

import arcpy arcpy.env.workspace = "Connexions de base de données/Connexion à 172.20.0.XX.sde" str(arcpy.ListFeatureClasses("*"))

Travaux: Imprime la liste de toutes les classes d'entités dans Enterprise GeoDB


Cela ne fonctionne pas

Le script python suivant, qui est le même que ci-dessus mais à part la valeur env.workspace, NE FONCTIONNE PAS lors de la connexion à mon serveur ArcGIS prod à partir de l'interface graphique/shell python IDLE s'exécutant sur ce même serveur ArcGIS, mais FONCTIONNE à partir d'ArcMap fenêtre python sur ce serveur…

Lorsqu'il est exécuté à partir de la fenêtre Python d'ArcMap 10.2.1 :

import arcpy arcpy.env.workspace = "Connexions de base de données/Connexion à 172.20.0.XX.sde" str(arcpy.ListFeatureClasses("*"))

Travaux: Imprime la liste de toutes les classes d'entités dans Enterprise GeoDB


Lorsqu'il est exécuté à partir de l'interface graphique/shell python IDLE :

import arcpy arcpy.env.workspace = "Connexions de base de données/Connexion à 172.20.0.XX.sde" str(arcpy.ListFeatureClasses("*"))

Échoue: Imprime 'Aucun'


L'utilisateur Windows avec lequel je suis connecté au serveur prod ArcGIS est un administrateur, mais la seule chose que je peux trouver est

Remarques

Remarque J'ai essayé toutes les variantes suivantes lors de la configuration de l'espace de travail :

  • arcpy.env.workspace = r"Connexions à la base de donnéesConnexion à 172.20.0.49.sde"
  • arcpy.env.workspace = "Connexions à la base de donnéesConnexion à 172.20.0.49.sde"
  • arcpy.env.workspace = "Connexions à la base de données" + os.sep + "Connexion à 172.20.0.49.sde"
  • arcpy.env.workspace = os.path.join("Connexions à la base de données", "Connexion à 172.20.0.49.sde")
  • Etc…

La réponse que j'ai trouvée hier, et PolyGeo référencé dans son commentaire ci-dessus, était d'utiliser le chemin complet vers le sde au lieu du chemin relatif. Je ne comprends toujours pas pourquoi l'interface graphique/shell IDLE ne peut pas utiliser le chemin relatif alors que la fenêtre python d'ArcMap le peut.


ERREUR 000301 : L'espace de travail est du mauvais type

Ce script est loin d'être parfait, mais je reçois un message d'erreur très étrange et j'espérais que quelqu'un pourrait m'aider à résoudre le problème. Merci pour votre temps:

ERREUR 000301 : L'espace de travail est du mauvais type

importer arcpy
importer le système
importer le système d'exploitation
heure d'importation, dateheure
#import pyodbc
tracer l'importation

# Variables constantes
# Connexion à la base de données
editDB = "Connexions de base de données/EdnaRoad_Admin.sde"
# Jour actuel
Jour = heure.strftime("%m-%d-%Y", heure.localtime())
# Heure actuelle
Heure = heure.strftime("%I:%M:%S %p", heure.localtime())

# pyodbc.connect vars
#sqlsvrname = 'gisavglis'
#sqldbname = 'Arden'
loggingTableName = "dbo.PYTHON_SCRIPT_LOGGING"

# Définir l'espace de travail
espace de travail = editDB

# Définir l'environnement de l'espace de travail
arcpy.env.workspace = espace de travail
arcpy.env.overwriteOutput = True

def log_messages(scriptName,Status, ErrorCode):
runDate = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
egdb_conn = arcpy.ArcSDESQLExecute(espace de travail)
sql = "INSERT INTO <4>(ScriptName,RunDate,Status,ErrorCode) VALUES ('<0>','<1>','<2>','<3>')".format(scriptName, runDate , État, ErrorCode, loggingTableName)
essayer:
egdb_conn.startTransaction()
print("Tentative d'exécution de l'instruction SQL : <0>".format(sql))
egdb_return = egdb_conn.execute(sql)
egdb_conn.commitTransaction()
sauf Exception comme erreur :
imprimer (err)
egdb_return = Faux

essayer:
# Heure de début
print 'Process Started at ' + str(Day) + " " + str(Time)

# bloquer les nouvelles connexions à la base de données de travail et de production.
print "Bloquer les connexions. "
arcpy.AcceptConnections(editDB, False)

# déconnecte tous les utilisateurs de la base de données de travail et de production.
print "Déconnexion des utilisateurs. "
arcpy.DisconnectUser(editDB, "TOUS")

# Obtenez une liste de toutes les versions en plus de QAQC et DEFAULT à transmettre à l'outil ReconcileVersions.
ver1List = [ver1.name pour ver1 dans arcpy.da.ListVersions(editDB) si ver1.name != 'DBO.Quality Control' et ver1.name != 'dbo.DEFAULT']

# Exécutez l'outil ReconcileVersions avec QAQC Target Version puis supprimez toutes les versions en plus de QAQC
print "Réconcilier/poster les versions au contrôle qualité. "
arcpy.ReconcileVersions_management(editDB, "ALL_VERSIONS", "DBO.Quality Control", ver1List, "LOCK_ACQUIRED", "NO_ABORT", "BY_OBJECT", "FAVOR_EDIT_VERSION", "POST", "")

# Extraire la version QAQC de la liste des versions à transmettre à l'outil ReconcileVersions.
ver2List = [ver2.name pour ver2 dans arcpy.da.ListVersions(editDB) si ver2.name == 'DBO.Quality Control']

# Exécutez l'outil ReconcileVersions avec la version cible par DEFAUT et supprimez la version QAQC
print "Réconcilier/poster le contrôle qualité à DEFAULT. "
arcpy.ReconcileVersions_management(editDB, "ALL_VERSIONS", "dbo.DEFAULT", ver2List, "LOCK_ACQUIRED", "NO_ABORT", "BY_OBJECT", "FAVOR_EDIT_VERSION", "POST", "")

# Si vous souhaitez inclure toutes les tables de la base de données, utilisez plutôt ceci :
# pour tbs dans arcpy.ListTables() :
# to d'impression
# arcpy.UnregisterAsVersioned_management(tbs,"NO_KEEP_EDIT","COMPRESS_DEFAULT")

print("============================= La désinscription des classes d'entités est lancée")
print("============================== *", "Fonctionnalité")
pour l'ensemble de données dans les ensembles de données :
fcList = arcpy.ListFeatureClasses("*","",ensemble de données)
pour fc dans fcList :
imprimer fc
arcpy.UnregisterAsVersioned_management(fc,"NO_KEEP_EDIT","COMPRESS_DEFAULT")

# Exécutez l'outil de compression.
print "Compression de la base de données. "
arcpy.Compress_management(editDB)

à l'exception:
print 'Une erreur s'est produite'
failMsg = ' ÉCHEC DE SCRIPT DANS L'INITIATION DE SCRIPT OU LE PROCESSUS DE RÉCONCILIATION-POST, '
failMsg += 'Messages GP les plus récents ci-dessous. '
failMsg += arcpy.GetMessages() +' '
failMsg += ' Messages de suivi ci-dessous. '
failMsg += traceback.format_exc().splitlines()[-1]
imprimer le message d'échec
#écrire les informations du journal des erreurs
print 'Erreur de journalisation dans la base de données. '
# CETTE SECTION POUR L'ENREGISTREMENT DES ERREURS DANS UNE TABLE DE BD
log_messages('ReconcilePost_AssetIDs_QAQC','Failure', failMsg)
sys.exit()

# Si vous souhaitez inclure toutes les tables de la base de données, utilisez ceci :
# pour tbs dans arcpy.ListTables() :
# to d'impression
# arcpy.RegisterAsVersioned_management(tbs, "NO_EDITS_TO_BASE")

print("============================= registre Feature Class est démarré")
print("============================== *", "Fonctionnalité")
pour l'ensemble de données dans les ensembles de données :
fcList = arcpy.ListFeatureClasses("*","",ensemble de données)
pour fc dans fcList :
imprimer fc
arcpy.RegisterAsVersioned_management(fc, "NO_EDITS_TO_BASE")


# créer des versions
#print "Création de versions. "
#arcpy.CreateVersion_management(editDB, 'dbo.DEFAULT', 'QAQC', 'PRIVÉ')
#arcpy.CreateVersion_management(editDB, 'DBO.QAQC', 'MICHAEL', 'PUBLIC')
#arcpy.CreateVersion_management(editDB, 'DBO.QAQC', 'KAREN', 'PUBLIC')
#arcpy.CreateVersion_management(editDB, 'DBO.QAQC', 'COLLECTOR', 'PUBLIC')

# REMARQUE : Les index de reconstruction peuvent accepter une liste Python d'ensembles de données.

# Obtenez une liste de tous les ensembles de données auxquels l'utilisateur a accès.
# Tout d'abord, obtenez toutes les tables autonomes, classes d'entités et rasters.
dataList = arcpy.ListTables() + arcpy.ListFeatureClasses() + arcpy.ListRasters()

# Ensuite, pour les jeux de données d'entités, obtenez tous les jeux de données et classes d'entités
# de la liste et ajoutez-les à la liste principale.
pour l'ensemble de données dans arcpy.ListDatasets("*", "Feature") :
arcpy.env.workspace = os.path.join(espace de travail, jeu de données)
dataList += arcpy.ListFeatureClasses() + arcpy.ListDatasets()

# réinitialiser l'espace de travail
arcpy.env.workspace = espace de travail

# Concaténer tous les ensembles de données dans une liste
datasetList = [ds pour ds dans dataList]

imprimer "reconstruction des index"
# Exécuter les index de reconstruction
# Remarque : pour utiliser l'option "SYSTEME", l'utilisateur de l'espace de travail doit être un administrateur.
arcpy.RebuildIndexes_management(espace de travail, "SYSTEM", datasetList, "ALL")
print('Reconstruction terminée')

print "analyse des jeux de données"
arcpy.AnalyzeDatasets_management(espace de travail, "SYSTEM", datasetList, "ANALYZE_BASE", "ANALYZE_DELTA", "ANALYZE_ARCHIVE")
imprimer "analyse terminée"

#Autoriser la base de données à recommencer à accepter les connexions
print "Définir les bases de données pour autoriser les connexions. "
arcpy.AcceptConnections(editDB, True)

print 'Les données ont été synchronisées avec succès et enregistrées dans la base de données de suivi'


1 réponse 1

La fonction arcpy.GetParameterAsText(#) lira un paramètre d'entrée à partir d'un outil ArcGIS.

Pendant le script et le débogage, il est plus simple de coder en dur les variables d'entrée de la fonction pour vérifier que la fonction fonctionne. Une fois que l'outil est (essentiellement) comme vous le souhaitez, créez la boîte à outils et l'outil de script dans ArcMap.

Pour accepter les paramètres d'entrée de la boîte de dialogue d'exécution de l'outil, vous devez les créer lors de la création de l'outil de script (et modifiez le code pour accepter les entrées GetParameterAsText). La meilleure procédure pas à pas pour cela est vraiment le centre de ressources ArcGIS.

Dans le script Python, je lire les paramètres d'entrée en premier -- de cette façon, ils sont disponibles en tant que variables pour tout le reste du script. La valeur d'index indique quel paramètre est lequel.


Existe-t-il un outil pour recalculer les étendues de fonctionnalités

J'ai des centaines d'ensembles de données d'entités qui ont des entités XY incorrectes (raison inconnue), mais j'espère gagner du temps en automatisant l'appui sur le bouton « Recalculer » comme indiqué ci-dessous :

Est-ce que quelqu'un connaît un outil que je peux exécuter avec un itérateur pour exécuter chacune de mes classes d'entités.

par XanderBakker

Dans ce fil de discussion Recalculer l'étendue, jake fournit quelques moyens de le faire (pour les classes d'entités résidant dans SDE et d'autres géodatabases).

par NeilAyres

Savez-vous pourquoi c'est faux ?

Êtes-vous sûr qu'il n'y a pas de peluches quelque part hors de vue ?

Créer un index spatial peut mettre à jour l'étendue, mais pas sûr.

par DanPatterson_Re fatigué

Neil a raison, si ma mémoire est bonne, cela résolvait les problèmes lors du traitement des fichiers de formes (une traduction, je pense) n'était pas reflété tant que l'indice de champ de forme n'était pas recalculé.

Et vérifiez les paramètres de votre environnement

par DougBrowning

J'ai eu un 0,0 point. J'ai supprimé et l'étendue ne se rappelle toujours pas correctement. J'ai essayé de supprimer l'index spatial et il ne se recalculera toujours pas.

La base de données fait partie d'une réplique mais j'ai répliqué plusieurs fois.

D'autres idées ? Il le fait sur 3 FC.

J'en ai eu par le passé que j'ai essayé de réparer pendant des années et que je n'ai jamais eu. Si j'exporte vers une nouvelle GDB, l'étendue est correcte.

par XanderBakker

Dans ce fil de discussion Recalculer l'étendue, jake fournit quelques moyens de le faire (pour les classes d'entités résidant dans SDE et d'autres géodatabases).

Vous aurez toujours besoin d'un verrouillage exclusif sur la classe d'entités, mais cela devrait faire exactement la même chose qu'un clic droit sur l'entité via l'interface graphique.

Désolé, j'ai un ticket d'aide pour la même chose et c'est ce qu'ils ont suggéré, mais je suis juste allé l'essayer et il ne semble pas être disponible avant 10.4 qui devrait être disponible n'importe quel jour maintenant.

Aussi, fait amusant. S'il s'agit d'une géodatabase d'entreprise, il semble que vous mettiez simplement à jour la colonne de forme dans la table GDB_Items.

Il serait vraiment facile de simplement mettre à jour cette table. mais probablement pas un workflow pris en charge. Au moins, vous savez ce qu'il met à jour et pouvez le surveiller.

Par exemple, j'ai beaucoup de classes d'entités qui n'ont pas d'informations d'étendue. je peux trouver ça en

par DanPatterson_Re fatigué

pour la version 10.4 oui . mais pas pour 10.3 ou avant

Les numéros de version de l'aide sont par défaut 10.4

Oui, donc si aller de l'avant et obtenir 10.4 est possible, vous pouvez utiliser l'outil arcpy. Je l'utilise maintenant. C'est un peu lent, mais ça fait le travail.

Voici un code que j'ai sorti très rapidement. Il bouclera sur chaque classe d'entités dans un espace de travail et calculera de nouvelles étendues pour toutes.

J'utilise une base de données Oracle sans ensemble de données. Toutes les classes d'entités sont de niveau supérieur, je ne sais donc pas si cela traversera les jeux de données. Ça devrait le faire, mais je n'en avais pas pour le tester. De plus, je filtre uniquement les tables appartenant à l'utilisateur actuel (ex: current_user.table_name). Vous pouvez vous en débarrasser aux lignes 11 et 16. Je ne sais pas comment SQL Server gère tout cela.

De plus, il semble qu'il y ait beaucoup d'erreurs, donc je boucle à l'infini jusqu'à ce qu'il réussisse afin qu'il puisse rester pour toujours sur une mauvaise classe d'entités, mais je ne l'ai pas encore fait. Sachez simplement que s'il continue à imprimer la même classe d'entités encore et encore, il est bloqué.


Vendredi 25 octobre 2013

Géocodage des mines de sable de Frac dans le Wisconsin

But/Objectif

Ce laboratoire est une extension du post précédent et vise à montrer l'extraction de sable de fracturation dans l'ouest du Wisconsin à travers un autre objectif. L'objectif de ce laboratoire était de télécharger les données du comté de Trempealeau à partir du site Web du comté. Le résultat final de ce laboratoire est une carte géocodée créée dans ArcMap et une feuille de calcul Excel montrant les distances de mes points par rapport à d'autres mines géocodées avec la même adresse que la mienne.

1. Téléchargez les données des dossiers fonciers du comté de Trempealeau.
2. Téléchargez la liste mise à jour des mines depuis Wisconsin Watch.
3. Connectez-vous aux services de géocodage fournis par ESRI.
4. Géocoder les mines téléchargées aux adresses postales auxquelles elles sont associées.
5. Géocoder manuellement les mines avec le système PLSS.
6. Comparez nos résultats avec ceux de nos collègues de classe.

Méthodes

La première partie de cet atelier consistait à télécharger les données du comté de Trempealeau à partir de leur géodatabase. Les données ont ensuite été utilisées dans notre laboratoire pour se concentrer sur notre région par rapport à l'État. Le comté de Trempealeau possède l'une des plus fortes concentrations de mines de l'ouest du Wisconsin et les données recueillies l'ont montré. La méthode suivante utilisée dans ce laboratoire consistait à télécharger les données du fichier de notre enseignant qui contenait des mines mises à jour dans le Wisconsin. Chaque élève de notre cours s'est vu attribuer un numéro unique qui correspondait à plusieurs mines. Ensuite, les mines ont été normalisées dans le fichier Excel pour rendre plausible leur géocodage. La table a ensuite été placée dans ArcMap dans un fichier dbf. Certaines des adresses des mines ne correspondaient pas correctement, vous pouvez donc soit modifier manuellement les adresses, soit utiliser l'adresse suggérée d'Arc. Une fois le géocodage terminé, la classe a soumis ses données géocodées sous la forme d'un fichier de formes dans le dossier du cours. Toutes les données des fichiers de formes ont été fusionnées à l'aide de l'outil de fusion d'ArcToolbox. Après le géotraitement, les mines ont été interrogées pour trouver les mines avec le même UNIQUE_ID que les mines que chaque individu a géocodées à l'origine. Les mines interrogées ont ensuite été créées dans leur propre fonction. Enfin, l'outil de distance de point a été utilisé pour savoir à quelle distance nos points étaient des mêmes points de mine de nos collègues.

Résultats

Dans les figures ci-dessous, vous pouvez voir les fichiers Excel qui ont été normalisés, les fichiers Excel avec le produit fini des distances et une carte des mines du Wisconsin. Dans la figure 1, les adresses ont été normalisées pour faciliter l'expérience de géocodage. Les données qui nous ont été fournies nous ont donné des adresses ou des indices d'adresses, mais n'étaient pas sous une forme qu'Arc pouvait géocoder. La figure 2, montre les distances et comment le géocodage et la normalisation manuelle peuvent créer des différences dans les points qui ont presque les mêmes données. Enfin, la figure 3 est une carte des mines que j'ai faites et celles qui étaient les mêmes que les miennes.

Figure 1:

Les distances ci-dessus sont en kilomètres. Les distances correspondent à l'espace entre mes points et mes collègues.

Discussion

En regardant la figure 3, il est très évident que la normalisation manuelle des données entre les individus peut créer une division de distance dans les données géocodées. En raison du placement manuel des adresses des sites miniers lors du géocodage, il est presque impossible d'obtenir des points parfaitement corrélés entre collègues. À l'avenir, j'ai maintenant la possibilité de connaître des moyens plus efficaces de normaliser les données, en particulier lorsque je travaille avec d'autres. Ce laboratoire m'a également permis de savoir comment travailler avec les autres et de trouver le meilleur moyen de normaliser les données là où elles fonctionneront avec les données de tout le monde. Les erreurs inhérentes et opérationnelles se produisent couramment selon Lo. Les erreurs inhérentes sont celles qui se produisent lors de la création de vos données, tandis que les erreurs opérationnelles sont celles qui sont créées lors du travail sur vos données. En raison de ces erreurs, vos données peuvent ne pas être entièrement correctes et doivent être analysées de très près. Un exemple d'erreur opérationnelle est lorsque j'ai placé ma mine à l'intérieur d'un certain comté alors que mes collègues les ont placées ailleurs. Des erreurs inhérentes se produiraient dans mes données si je ne projetais pas mes données dans le bon système de coordonnées.

Conclusion

Dans notre enquête sur les mines de sable de fracturation dans le Wisconsin, nous avons jusqu'à présent appris pourquoi le sable de fracturation est utilisé, comment télécharger des données à partir de sites gouvernementaux et comment géocoder les adresses. D'autres compétences que j'ai acquises dans nos laboratoires incluent la possibilité de normaliser les données, de naviguer dans les fichiers dbf, de convertir des fichiers dbf en fichiers exel, d'utiliser une source en ligne utile, de comparer des données à des images, etc. durabilité des mines de sable de fracturation, des données plus complètes seront ajoutées à ce blog.


1 réponse 1

Commencez par configurer Itérer les classes d'entités pour parcourir toutes vos classes d'entités dans un espace de travail, cela les alimentera un à la fois dans votre prochain processus, mais si vous placez Collect Values ​​comme prochaine étape de votre processus, il « regroupera » toutes les classes d'entités individuelles dans une entrée cohérente pour Merge..

Ce workflow a produit une classe d'entités fusionnée à partir de tous les classes d'entités dans l'espace de travail Area11_14.


Ma première rencontre avec arcpy.da.UpdateCursor

j'ai utilisé arcpy par intermittence depuis un an et demi principalement pour automatiser et enchaîner le traitement par lots pour m'épargner d'innombrables heures de répétition. Cette semaine, cependant, j'ai dû mettre en œuvre une facette de arcpy que je n'avais pas encore eu l'occasion d'utiliser – le module d'accès aux données.

Le scénario
Une géodatabase fichier avec 75 classes d'entités contenant chacune des centaines à des milliers d'entités. Ces classes d'entités étaient le produit d'une conversion CAD (Bentley Microstation) en SIG via FME avec des données provenant de plus de 50 fichiers CAO. À la suite de la conversion, chaque classe d'entités pouvait contenir des entités avec divers attributs provenant d'un ou de plusieurs fichiers DAO, mais chaque classe d'entités était constituée du même schéma, ce qui était utile.

Le principal problème était que le numéro de version d'une partie des fichiers CAO n'avait pas été corrigé. Deux choses devaient être corrigées : i) l'attribut ‘REV_NUM’ pour toutes les classes d'entités devait être ‘Ver2’, il y aurait un mélange de ‘Ver1’ et ‘Ver2’, et ii) dans le ‘MODEL_SUMMARY’ si ‘Ver1’ était trouvé n'importe où dans le texte, il devait être remplacé par ‘Ver2’. Il y avait un autre problème et cela provenait de la création de nouvelles fonctionnalités et de leur non-attribution, cela aurait laissé une valeur ‘NULL’ dans le champ ‘MODEL’ (et les autres champs). Toutes les caractéristiques devaient avoir des attributs standardisés. Le script ne les corrigerait pas mais mettrait simplement en évidence les classes d'entités.

OK donc un petit récapitulatif…
1. Définissez le ‘REV_NUM’ pour chaque fonctionnalité sur ‘Ver2’
2. Recherchez et remplacez ‘Ver1’ par ‘Ver2’ dans la chaîne de texte de ‘MODEL_SUMMARY’ pour toutes les fonctionnalités.
3. Recherchez toutes les classes d'entités qui ont ‘NULL’ dans le champ ‘MODEL’.

Le scénario
Jetons un coup d'œil aux treize lignes de code nécessaires pour terminer la mission.

La panne
Importer le arcpy bibliothèque (vous avez besoin ArcGIS installé et une licence d'utilisation valide)

Définir le chemin de l'espace de travail sur la géodatabase fichier appropriée

Créez une liste de toutes les classes d'entités dans la géodatabase fichier.

Nous connaissons les noms des champs auxquels nous souhaitons accéder, nous les ajoutons donc à une liste.

Pour chaque classe d'entités de la géodatabase, nous souhaitons accéder aux attributs de chaque entité pour les champs pertinents.

Si l'attribut ‘MODEL’ a une valeur Aucun (NULL) ou une valeur de chaîne vide, imprimez le nom de la classe d'entités à l'écran. Une fois que l'on en trouve un, nous pouvons sortir et passer à la classe d'entités suivante.

Nous savons que nous avons une liste de classes d'entités dont nous pouvons corriger les attributs manuellement.

Ensuite, nous trouvons n'importe quelle instance de ‘Ver1’ dans les chaînes de texte ‘MODEL_SUMMARY’ et la remplaçons par ‘Ver2’….

…et mettez à jour tous les attributs ‘REV_NUM’ en ‘Ver2’, indépendamment de ce qui est déjà attribué. C'est comme utiliser le Calculateur de champ mettre à jour.

Effectuez et validez les mises à jour ci-dessus pour chaque fonctionnalité.

Très pratique pour mettre à jour les données dont vous avez besoin et ce script peut certainement être étendu pour gérer des opérations plus complexes en utilisant le arcpy.da.UpdateCursor module.


Arc Python dans ArcGIS 10.1

  1. Package de site qui ajoute des fonctionnalités ArcGIS à Python
  2. Accès à une riche suite d'outils de géotraitement
  3. Fonctions, classes et modules
  4. Fonctions d'assistance telles que ListFeatureClasses, Describe
  5. Classes pouvant être utilisées pour créer des objets complexes comme la référence spatiale, la carte de champ
  6. Modules qui fournissent des fonctionnalités spécialisées telles que Mapping, SpatialAnalyst, NetworkAnalyst, DataAccess

Exportation de la classe d'entités au format CSV


Est-ce important si les classes d'entités d'une géodatabase fichier sont des références et des projections différentes ? Puis-je modifier le système de coordonnées pour chaque classe d'entités dans une géodatabase fichier à la fois ? Est-il possible de définir des chemins relatifs pour un modèle entier ?

J'ai créé une géodatabase fichier pour un projet dans le générateur de modèles et j'ai pensé que j'avais défini la géodatabase sur un système de coordonnées particulier, cependant, certaines classes d'entités ont des systèmes différents dans les propriétés. Tout dans mon projet semble bien s'aligner et je n'ai aucun problème, y a-t-il une raison de s'inquiéter à ce sujet ?

En examinant cela, j'ai également trouvé le ou les systèmes de coordonnées recommandés pour mon état, en fonction de l'échelle, et j'aimerais changer ma base de données et mon .mxd final en l'un de ces systèmes, si possible.

Enfin, j'ai besoin de partager mon modèle avec quelques personnes différentes et je me demandais s'il existe un moyen de définir des chemins relatifs pour tous les paramètres du modèle. De cette façon, ils n'ont pas besoin de changer tous les chemins eux-mêmes.


Quelques réflexions sur les tests dans les SIG : partie 1

Cela me surprend que lorsque vous recherchez des tests SIG sur Internet, vous n'obtenez pas beaucoup de résultats pertinents. Les tests sont une partie essentielle de tout système informatique ou industrie SIG de flux de travail, cependant, ne semblent pas prendre les tests au sérieux. Il est assez courant pour de nombreuses organisations d'avoir des plans de test mal définis ou de n'avoir aucun plan du tout. C'est quelque chose qui pourrait être dû en partie à l'expérience que les personnes jouant le rôle d'administrateurs SIG pourraient avoir. Une telle personne peut être un géographe autodidacte qui exerce des fonctions d'analyste SIG, il n'y a rien de mal à cela, mais sans une bonne compréhension des opérations informatiques, il y a de grandes chances que quelques tests ad hoc rapides pour l'intégrité des données et fument des tests sont effectués pour les données de production et les flux de travail. Cependant, sans avoir et suivre un plan de test SIG rigoureux, une organisation s'expose à un grand risque : un flux de travail SIG incorrect ou des ensembles de données incohérents peuvent entraîner une interprétation incorrecte des résultats d'analyse SIG, et ils peuvent également avoir un impact financier si des erreurs de données conduisent à des pertes de profit.

Dans cette série d'articles, je voudrais structurer certaines des meilleures pratiques de test SIG que j'ai recueillies au fil des ans. Je crois fermement que le développement d'une méthodologie solide pour les tests SIG est essentiel pour le succès de toute organisation dans l'industrie des SIG. Il existe une section dédiée à ce sujet dans les stratégies de conception de système d'Esri.

Pour être plus précis, j'aimerais diviser les tests SIG en plusieurs sujets assez indépendants. Commençons par classer ces sujets.

Tests de logiciels SIG

Ce type de test implique que nous voulons vérifier que le logiciel SIG fonctionne correctement et que les opérations qui peuvent être exécutées s'exécutent avec succès en produisant les résultats attendus et corrects.

Quelle que soit l'origine du logiciel SIG, qu'il s'agisse d'un produit commercial, d'un programme open source ou d'un système interne, nous voulons nous assurer qu'avec la nouvelle version, les flux de travail établis continueront de fonctionner. les problèmes normalement et précédemment résolus ne se produiront pas. Cela implique qu'aucune mise à niveau du logiciel ne doit avoir lieu sans vérifier que les flux de travail établis continueront de fonctionner. Vous pourriez penser que le fournisseur de logiciels devrait s'en occuper et vérifier que le comportement du programme ne changera pas avec la nouvelle version. En effet, il n'est pas nécessaire de tester toutes les fonctionnalités et fonctions d'un logiciel. Cependant, il est indispensable de parcourir tous vos flux de travail dans un environnement intermédiaire avant de mettre à niveau vos machines de production. Une certaine fonction ou un outil faisant partie d'un processus plus large peut être déprécié ou modifié, ce qui peut perturber votre flux de travail.

Cela peut ressembler à un test de régression lorsque vous vérifiez que les problèmes qui existaient auparavant et qui ont été résolus dans la version précédente n'apparaissent plus dans la version à venir. Mais il s'agit également de s'assurer que les éléments qui ont fonctionné dans la précédente continueront de fonctionner dans une nouvelle version et que les workflows pourront être exécutés avec succès. Bien sûr, si le succès de votre flux de travail dépendait de la correction de bogue ou d'un correctif dans une version précédente, il peut être judicieux de rechercher si ce problème ne peut pas être reproduit dans la nouvelle version.

Le logiciel ou le cadre de script utilisé pour exécuter les tests n'a pas vraiment d'importance tant que vous êtes capable de les exécuter de manière automatisée et de planifier l'exécution.

Test de données SIG

Les jeux de données SIG sont sans doute l'un des atouts les plus précieux d'une organisation, il est donc crucial que les données spatiales soient précises, topologiquement correctes et cohérentes.

Il existe un nombre infini de règles métier qu'une organisation peut appliquer à ses données SIG. Certains d'entre eux peuvent être propres à l'organisation, mais la plupart des autres seront pertinents pour toute organisation qui utilise le SIG pour la collecte, la gestion ou l'analyse de données.

Ces règles qui sont génériques sont souvent liées aux règles géographiques imposées par la réalité et le bon sens. C'est-à-dire que les entités ponctuelles de la classe d'entités Schools ne peuvent jamais être situées géographiquement dans une entité de lac à partir de la classe d'entités Lakes. Le nombre de voies pour une route ne peut pas être négatif, et les restrictions de vitesse sur les routes ne devraient peut-être pas dépasser une certaine valeur. C'est à vous et à votre organisation de définir les règles métier que vos données SIG doivent suivre.

Si vous êtes un utilisateur d'ArcGIS, il existe une excellente extension appelée Data Reviewer. Cela vous permettra de définir ce type de règles de manière très pratique. C'est un excellent outil pour l'AQ/CQ que j'ai utilisé au cours des dernières années. Jetez un œil à un cours Esri dirigé par un instructeur sur l'AQ/CQ pour les données SIG. Si ce n'est pas quelque chose auquel vous avez accès, vous pouvez envisager de créer vos propres tests basés sur l'infrastructure de géotraitement dans ArcGIS en tirant parti de ModelBuilder ou Python. Gardez à l'esprit qu'il est possible de publier des services ArcGIS for Server basés sur des tâches par lots Data Reviewer où chaque tâche représente un groupe de vérifications. Vous pourrez exécuter vos scripts de manière planifiée (disons tous les minuit) et il existe même un widget Data Reviewer pour Web App Builder qui peut rendre la vérification des données effectuée par les opérateurs SIG très rationalisée et intuitive. L'équipe Esri Data Reviewer fait un excellent travail. Il s'agit d'un excellent logiciel qui fournit une interface riche pour automatiser vos flux de travail QA/QC de données SIG. Il existe également un séminaire de formation Esri gratuit sur l'utilisation de l'extension Data Reviewer, qui mérite d'être consulté.


Voir la vidéo: GIS Python: Count shape files and Select by Location 2 Real world ArcPy examples (Octobre 2021).