Suite

Mise à jour du raster du fichier mxd à l'aide d'ArcPy ?

Mise à jour du raster du fichier mxd à l'aide d'ArcPy ?


À l'aide d'ArcGIS 10, nous voulions mettre à jour le fichier raster dans un fichier mxd à l'aide de python. par exemple, j'ai créé a.mxd qui contient le fichier b.tif. maintenant, j'ai obtenu c.tif et je veux mettre à jour le a.mxd, c'est-à-dire que je veux supprimer b.tif et ajouter c.tif, ou écraser b.tif avec c.tif

import arcpy mxd = arcpy.mapping.MapDocument(r"C:dataa.mxd") df = arcpy.mapping.ListDataFrames(mxd)[0] updateLyr = arcpy.mapping.ListLayers(mxd)[0] sourceLyr = arcpy.mapping.Layer(arcpy.Raster(r"C:datac.tif")) arcpy.mapping.UpdateLayer(df, updateLyr, sourceLyr, True) del mxd

J'ai commencé comme ci-dessus, mais je pense que je ne reçois pas la plupart des choses correctement.


je pense que tu veuxreplaceDataSourceà la place deMettre à jourCouche. Update utilise un modèle, le sourceLyr, et applique ses propriétés (chemin de données, symbologie, etc.) à la couche à mettre à jour alors que vous souhaitez uniquement modifier le chemin de données/nom de fichier.

Voir Mise à jour et correction des sources de données avec arcpy.mapping dans la documentation Esri pour plus de détails et Modification du chemin de la source de données impliquant un jeu de données d'entités dans des fichiers *.lyr à l'aide d'ArcPy ? ici sur GIS.se pour connaître certains comportements bizarres.


Créez un fichier de couche composé de votre nouveau tif, nommé 'c.lyr' et placez-le dans le même répertoire (c'est-à-dire c:datac.lyr).

import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") pour df dans arcpy.mapping.ListDataFrames(mxd): pour refLayer dans arcpy.mapping.ListLayers(mxd, "*b.tif", df): mosaic = arcpy .mapping.Layer(u'C:datac.lyr') arcpy.mapping.InsertLayer(df, refLayer, mosaic, "BEFORE") mosaic.visible = refLayer.visible mosaic.brightness = refLayer.brightness mosaic .contrast = refLayer.contrast mosaic.transparency = refLayer.transparency mosaic.name = refLayer.name arcpy.mapping.RemoveLayer(df, refLayer) arcpy.RefreshActiveView() arcpy.RefreshTOC() del mxd, df try: del refLayer, mosaïque sauf : passe enfin : affiche u'TIF mis à jour !'

Ou si vous préférez une fonction :

def UpdateTIF(mxd, old, new) : #mxd : chemin vers mxd à mettre à jour #old : modèle de correspondance générique pour l'ancienne source #new : fichier de couche référençant la nouvelle source import arcpy mxd = arcpy.mapping.MapDocument(mxd) pour df dans arcpy.mapping.ListDataFrames(mxd): pour refLayer dans arcpy.mapping.ListLayers(mxd, old, df): mosaic = arcpy.mapping.Layer(new) arcpy.mapping.InsertLayer(df, refLayer, mosaic, "BEFORE ") mosaic.visible = refLayer.visible mosaic.brightness = refLayer.brightness mosaic.contrast = refLayer.contrast mosaic.transparency = refLayer.transparency mosaic.name = refLayer.name arcpy.mapping.RemoveLayer(df, refLayer) del mxd, df try : del refLayer, mosaic except : pass finally : print u'TIF mis à jour !'

Exécutez ceci avec un appel comme :

UpdateTIF('C:dataa.mxd', '*b.tif', 'C:datac.lyr')

Ajouter la propriété 'serviceProperties' à la classe Arcpy TableView

Dans le module de cartographie ArcPy, veuillez ajouter la propriété nommée 'serviceProperties' à la classe TableView. Cette propriété existe sur la classe 'feature layer' et permet aux programmeurs ptyhon comme moi d'identifier de quel serveur provient une couche SDE particulière.

J'essaie d'écrire un outil Python pour repointer toutes les sources d'un MXD particulier d'un serveur à un autre. Cependant, le MXD contient des couches et des vues tabulaires de plusieurs SDE, je souhaite simplement rediriger les données d'un SDE (comme le pointage de sources de données d'un SDE de test vers un SDE de production).

La méthode 'replacedatasource' pour le repointage des couches est insuffisante, car elle repose sur le fait que le programmeur sache quel est le chemin d'accès au fichier de connexion SDE utilisé pour ajouter la table à la carte. Cependant, comme je ne suis que le programmeur, je n'ai aucune idée du nom des utilisateurs de connexions SDE particuliers à partir desquels les données ont été ajoutées. Je préfère simplement rechercher chaque couche et tableview et vérifier la ligne de service ou de serveur pour voir si le nom d'un serveur particulier s'y trouve. Si c'est le cas, je peux exécuter mon code pour rediriger la couche vers un autre serveur.


Alignement du raster avec des points de contrôle

En règle générale, vous géoréférencez vos données raster à l'aide de données spatiales existantes (données cibles), telles que des rasters géoréférencés ou une classe d'entités vectorielles, qui résident dans le système de coordonnées de carte souhaité. Le processus implique l'identification d'une série de points de contrôle au sol (coordonnées x,y connues) qui relient les emplacements sur le jeu de données raster aux emplacements dans les données référencées spatialement (données cibles). Les points de contrôle sont des emplacements qui peuvent être identifiés avec précision sur le jeu de données raster et en coordonnées réelles. De nombreux types d'éléments différents peuvent être utilisés comme emplacements identifiables, tels que les intersections de routes ou de cours d'eau, l'embouchure d'un cours d'eau, les affleurements rocheux, l'extrémité d'une jetée, le coin d'un champ établi, les coins de rue ou deux haies.

Les points de contrôle sont utilisés pour créer une transformation polynomiale qui déplacera le jeu de données raster de son emplacement existant vers l'emplacement spatialement correct. La connexion entre un point de contrôle sur le jeu de données raster (le point de départ) et le point de contrôle correspondant sur les données cibles alignées (le point de destination) est un lien.

L'exemple ci-dessous montre un point de contrôle de départ (croix jaune) placé sur les données cibles vectorielles à un croisement de rue et le point de contrôle associé (croix verte) placé sur le jeu de données raster. Le lien associé est représenté par la ligne bleue joignant les points de contrôle.

Le nombre de liens que vous devez créer dépend de la complexité de la transformation que vous prévoyez d'utiliser pour transformer le jeu de données raster en coordonnées cartographiques. Cependant, ajouter plus de liens ne donnera pas nécessairement un meilleur enregistrement. Si possible, vous devez répartir les liens sur l'ensemble du jeu de données raster plutôt que de les concentrer dans une zone. En règle générale, avoir au moins un lien près de chaque coin du jeu de données raster et quelques-uns à l'intérieur produit les meilleurs résultats.

En règle générale, plus le chevauchement entre le jeu de données raster et les données cible est important, meilleurs sont les résultats de l'alignement, car vous disposerez de points plus espacés avec lesquels géoréférencer le jeu de données raster. Par exemple, si vos données cibles n'occupent qu'un quart de la zone de votre jeu de données raster, les points que vous pourriez utiliser pour aligner le jeu de données raster seraient limités à cette zone de chevauchement. Ainsi, les zones en dehors de la zone de chevauchement ne sont pas susceptibles d'être correctement alignées.

Gardez à l'esprit que vos données géoréférencées sont aussi précises que les données sur lesquelles elles sont alignées. Pour minimiser les erreurs, vous devez géoréférencer les données à la résolution la plus élevée et à la plus grande échelle pour vos besoins.


Mise à jour du raster du fichier mxd à l'aide d'ArcPy ? - Systèmes d'information géographique

Introduction : Dans le chapitre précédent, nous avons appris à faire des tableaux statistiques [1] , Mais dans de nombreux cas, des données sont nécessaires pour révéler le contenu de manière simple et claire, il est donc également essentiel d'apprendre à créer des graphiques statistiques.

1. But expérimental

Maîtriser la méthode d'affichage des données selon les symboles de style existants

Maîtriser la méthode de sélection des éléments et attributs en fonction de l'emplacement

Maîtriser la méthode de création de graphiques statistiques

Ch2Fichier. chap2marquagechartchart.mxd

3. Exigences expérimentales

Comptez l'étendue de la zone de bruit, quels types d'utilisation des terres y a-t-il et quelle est la zone ?

Dans la catégorie de la tokenisationValeur uniquesélectionnerL'utilisation des terres, Et puis ajoutez tous les champs et couleurs en fonction de la bande de couleur (manuellement)

Étape 2 Déverrouillez le terrain affecté par le bruit

(1) Dans la sélection du menu principalChoisissez par emplacement. Où se trouve la couche cibleL'utilisation des terres, Le calque d'origine estCouche de bruit, La méthode de sélection de l'espace estPar l'intersection de deux couchesFaites une sélection, puis postulez

Recherchez la date sur la couche d'utilisation des terres, puis affichez-la, où la sortie est l'entité sélectionnée dans l'expérience, puis enregistrez-la

(3) La zone d'occupation du sol affectée par le bruit est obtenue, comme le montre la figure ci-dessous

Ouvrir la table attributaire du type d'utilisation des terresRésumé des statistiques, La sélection estRésumer la zone, Et puis faites unSomme, Puis sortie, le type de sortie est table attributaire, enregistrer, ajouter à la carte

Troisième étape faire un graphique statistique

Afficher le formulaire créé, c'est-à-dire passerVue, Recherchez le graphique et créez le graphique

Iciaxe xIndique l'utilisation des terres. Vous pouvez également déboguer la couleur, l'affichage des étiquettes, l'affichage des légendes, etc., puis cliquer sur Suivant

(2) Définissez et ajoutez le titre et le titre de la légende pour la quantité statistique, comme indiqué dans la figure ci-dessous

(3) Modifiez la légende et le titre, comme indiqué ci-dessous

Enfin, faites une image dans la vue,Ajuster la mise en pagePour afficher le menu comme indiqué ci-dessous


Voir la vidéo: Learn How to Perform Statistical Spatial Data Analysis with R and ArcGIS