Suite

Ajout par programme du fichier .shp au fichier .mxd


J'ai passé des heures à essayer de trouver la solution au problème suivant en ligne, mais toutes les réponses que j'ai trouvées sont assez anciennes et aucune ne fonctionne. Voici la situation : J'ai une variété de fichiers .shp. J'ai un fichier mxd vierge. Je souhaite ajouter les fichiers .shp dans le fichier .mxd.

Diverses réponses stackoverflow et stackexchange me feraient croire que la réponse à mon problème réside dans: arcpy.MakeFeatureLayer_management(,) ou arcpy.mapping.Layer()

Malheureusement, j'obtiens une erreur similaire quelle que soit l'approche que j'adopte.

Le code exact de ma tentative la plus récente (je ne sais vraiment pas comment cela pourrait être plus simple):

import arcpy arcpy.env.workspace = "C:/test" arcpy.Exists("shapefile.shp") #returns True arcpy.mapping.Layer("shapefile.shp")

C'est à ce stade que je reçois l'erreur suivante : Traceback (appel le plus récent en dernier) :… Fichier "C:Program FilesArcGISServerarcpyarcpyarcobjectsmixins.py", ligne 289 dans init super(LayerMixin, soi).init(lyrfile) Fichier "C:Program FilesArcGISServerarcpyarcpyarcobjects_base.py", ligne 47, dans init pour arg dans args ValueError : Object : CreateObject Layer source de données non valide

Edit: code exact de ma tentative en utilisant l'autre fonction

import arcpy arcpy.env.workspace = "C:/test" arcpy.Exists("shapefile.shp") #returns True arcpy.MakeFeatureLayer_management("shapefile.shp","myshapelayer")

Dans ce cas, je reçois l'erreur suivante : Traceback (appel le plus récent en dernier) :… arcgisscripting.ExecuteError : ERROR 000229 : Cannot open shapefile.shp Failed to execute .

Quelqu'un peut-il me conseiller sur la marche à suivre ? J'ai trouvé près de cinq solutions différentes suggérant que c'est la procédure que je devrais suivre, mais cela ne fonctionne certainement pas pour moi. J'utilise Python 2.7.

Notes supplémentaires : -J'ai chargé manuellement le fichier de formes dans ArcMap, il se charge et s'affiche correctement.


Vous n'utilisez pas correctement la fonction arcpy.mapping.Layer.

arcpy.mapping.Layer prend un fichier de calque (*.lyr) enregistré sur le disque et renvoie un objet de calque à partir de celui-ci.

Les objets de calque ont des méthodes que vous pouvez utiliser pour modifier diverses propriétés du calque, telles que sa visibilité, sa transparence, sa requête de définition, etc.

Vous lui donnez un shapefile. D'où l'erreur, source de données invalide.

Utilisez simplement la fonction MakeFeatureLayer_management qui créera une couche d'entités in_memory et l'ajoutera automatiquement au MXD actuel, où le premier argument est le chemin absolu de votre fichier de formes, et le deuxième argument est une chaîne représentant le nom de la couche telle qu'elle apparaîtra dans la table des matières.

arcpy.MakeFeatureLayer_management(r"C:SomeDataPathshapefile.shp", "MyShapefile")

J'ai enfin résolu le problème - c'était en fait une simple solution - un malentendu de ma part. Je n'ai pas réalisé qu'un "shapefile" est bien plus qu'un simple fichier ".shp". Apparemment, vous devez avoir tous les (cinq ?) fichiers (avec toutes les (cinq ?) extensions) dans le répertoire approprié pour que la fonction fonctionne correctement. Après avoir ajouté mon .dbfs, mon .xmls, etc., cela fonctionne très bien.


Le code suivant contient plus que ce dont vous avez besoin, mais il montrera que vous devez spécifier ou créer un mxd vide, puis spécifier un bloc de données, puis activer ce bloc de données, puis ajouter vos couches/fichiers de formes avec la symbologie facultative spécifiée

"mxd_create.py Auteur : [email protected] Objectif : créer un mxd de base et le remplir avec les valeurs par défaut Nécessite : spécifier les fichiers à charger et les chemins de modèles des cadres de données par défaut, c'est-à-dire C:Program Files (x86)ArcGIS Desktop10.2MapTemplatesTraditional LayoutsLetterLandscape.mxd C:Program Files (x86)ArcGISDesktop10.2MapTemplatesTraditional LayoutsLetterPortrait.mxd"import arcpy import sys import os import shutdown script = sys.argv [0] # nom et emplacement du script mxd_src = "C:/!test/mapping/mxd_test02.mxd" # un chemin de projet shell vide, doc = os.path.split(mxd_src) template = chemin + "/LetterPortrait.mxd" Shutil.copyfile(template,doc) arcpy.env.workspace = chemin + "/shapefiles" arcpy.overwriteOutputs = True shp_files = ["AOI_mtm9.shp", "RandomPnts.shp"] lyr_files = ["AOI_mtm9.lyr"," RandomPnts.lyr"] arcpy.ListFiles("*.lyr") #utiliser ceci pour vérifier ci-dessus author = "Cela pourrait être vous !!!!" description = "Projet de démonstration fonctionnant avec le module arcpy.mapping et Python" title = "Arcpy Mapping Demo : Introduction to arcpy.mapping and Python interaction" mxd = arcpy.mapping.MapDocument(doc) mxd.author = author mxd.description = description mxd.title = titre mxd.relativePaths = True df = arcpy.mapping.ListDataFrames(mxd)[0] # liste des trames de données, 1 existe par défaut df.name = "Sample files" # définir son titre mxd.activeView = df.name # l'activer pour shp dans shp_files : # parcourir la liste des fichiers de formes #fn, ext = os.path.splitext(f) # pour tester lyr = arcpy.mapping.Layer(shp) # ajouter les fichiers et auto organiser arcpy.mapping.AddLayer(df,lyr,"AUTO_ARRANGE") arcpy.ApplySymbologyFromLayer_management(lyr,lyr_files[1]) # appliquer la symbologie à partir des fichiers lyr #arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True) arcpy.RefreshActiveView () mxd.save() del modèle, shp_files, lyr_files, lyr, df, mxd os.startfile(doc) del doc ##

Cara Export Banyak MXD ArcGIS Sekaligus (Exportation multiple)

Dalam mengerjakan suatu project atau tugas GIS menggunakan ArcGIS (Arcmap) fichier dengan banyak MXD tentunya akan memakan waktu lama jika harus mengexportnya satu par satu ke format JPG, PNG atau PDF. Dengan menggunakan script phyton yang sudah dibungkus dalam sebuah boîte à outils akan sangat memudahkan teman-teman untuk melakukan Exportation MXD secara praktis sehingga bisa mengemat waktu dan tenaga kita dalam pekerjaan.

Dengan menggunakan script phyton (boîte à outils) di bawah ini, maka tanpa perlu sibuk membuka masing-masing mxd, fichier akan terexport secara otomatis sekaligus. Berikut contoh aperçu tampilan toolboxnya.

Script phyton (boîte à outils) Ini adalah alat sederhana untuk mengekspor beberapa dokumen peta (mxd) ke PDF, PNG dan JPG dalam jumlah banyak sekaligus. Dokumen masukan peta (mxd) dapat ditambahkan dari lebih dari satu lokasi ke satu lokasi. Teman-teman dapat menentukan resolusi (DPI) au format setiap. Namun, harap diingat bahwa DPI bekerja secara berbeda untuk setiap format. Jadi, kita perlu menyesuaikannya. ArcPy adalah satu-satunya perpustakaan yang digunakan untuk skrip ini. Script dapat dilihat atau dimodifikasi sesuai dengan kebutuhan teman-teman. Ini dapat dilakukan dari ArcCatalog. Pada update terakhir sudah ada fitur menambahkan opsi untuk menggabungkan beberapa dokumen PDF menjadi satu.

Untuk menjalankannya sangat simpel sekali. Pastikan mxd nya sudah final dan siap untuk diexport ke PDF, PNG et JPG.

  1. Buka aplikasi ArcMap atau juga bisa melalui ArcCatalog
  2. Buka jendela Arctoolbox untuk melakukan Ajouter Toolbox > cari lokasi tools exportateur yang sudah di unduh.
  3. Setelah boîte à outils ditambahkan silahkan dibuka maka akan muncul jendela script baru.
  4. Silahkan masukkan MXD yang akan di export (bisa lebih dari satu)
  5. Dossier Tentukan outputnya
  6. Résolution (dpi)
  7. Format d'exportation seperti PDF, PNG dan JPG - bisa juga PDF yang langsung dicombine (gabungan)
  8. Terakhir OK, maka tools akan melakukan proses export dan lihat hasilnya.

Baiklah sekian dulu untuk partage kali ini tentang Exporter Banyak MXD ArcGIS Sekaligus - Exportation multiple. Jika ada saran, tanggapan, pertanyaan, lien mati serta demande silakan gunakan kotak komentar, halaman kontak atau sosial media yang ada di site Lapak GIS. Terima Kasih.

SIG Lapak 

Lapak SIG adalah Tempat Berbagi Pengetahuan tentang Système d'information géographique (SIG) et télédétection (Pengindraan Jauh).


Voir la vidéo: How to Merge different Shapefiles in GIS Very Easy Method (Octobre 2021).