I was wondering if there is any repository or anything available online or something someone has that can run outside of ArcGIS pro which will create a map
I'm not sure I understand the desired workflow, but here is a script I use to make a total copy of an existing Project (aprx, gdb, and atbx).
import arcpy import os # Define paths and names for the new project new_project_folder = r"path to folder that will contain new project" new_project_name = "ProjectName.aprx" new_gdb_name = "ProjectName.gdb" new_tbx = "ProjectName.atbx" new_project_path = os.path.join(new_project_folder, new_project_name) new_gdb_path = os.path.join(new_project_folder, new_gdb_name) new_tbx_path = os.path.join(new_project_folder, new_tbx) # Open the original, existing template project old_project_folder = r"path to folder containing old project" old_project_name = "TemplateProject.aprx" old_gdb_name = "TemplateProject.gdb" old_tbx = "TemplateProject.atbx" old_project_path = os.path.join(old_project_folder, old_project_name) old_gdb_path = os.path.join(old_project_folder, old_gdb_name) old_tbx_path = os.path.join(old_project_folder, old_tbx) old_project = arcpy.mp.ArcGISProject(old_project_path) # Create the folder if necessary if not os.path.exists(new_project_folder): os.makedirs(new_project_folder) # Copy GDB and tbx arcpy.management.Copy(old_gdb_path, new_gdb_path) arcpy.management.Copy(old_tbx_path, new_tbx_path) # Update data sources old_project.updateConnectionProperties(old_gdb_path,new_gdb_path) for map_ in old_project.listMaps(): for layer in map_.listLayers(): if layer.supports("dataSource"): layer.updateConnectionProperties(old_gdb_path, new_gdb_path) # Update project defaults old_project.defaultGeodatabase = new_gdb_path old_project.defaultToolbox = new_tbx_path old_project.homeFolder = new_project_folder # Save a copy of the aprx old_project.saveACopy(new_project_path)
Hi @YahyaMasri,
When you say "create a map", do you mean create a Map in ArcGIS Pro (aprx) or create a Map by exporting a Layout to PDF for example.
To create a new Map in an existing .aprx you can use the below code snippet.
import arcpy ## the path to the existing aprx aprx_path = r"C:\path\to\my\Project.aprx" ## get the aprx as an ArcGISProject object aprx = arcpy.mp.ArcGISProject(aprx_path=aprx_path) ## create the new Map object new_map = aprx.createMap(name="NEW_MAP",map_type="Map") ## do what you want with the new_map, add layers and tables for example ## save the aprx aprx.save()
You could add some code to create a database in the .aprx folder.
# Directory of the new project new_project_dir = os.path.dirname(new_project_path) # Create a new file geodatabase in .aprx directory gdb_name = "new_project.gdb" # Name of the geodatabase gdb_path = os.path.join(new_project_dir, gdb_name) if not os.path.exists(gdb_path): # Check if the GDB already exists arcpy.CreateFileGDB_management(new_project_dir, gdb_name) print(f"File geodatabase created at: {gdb_path}") else: print(f"File geodatabase already exists at: {gdb_path}")
what happens to the .gdb when creating a new project from a template? do i need to programmatically copy it over -- i dont want to have to use the template gdb -- i assume i need to use the new projects gdb and atbx etc
Something basic like this,
import arcpy # Set the paths for the project, layer, and template new_project_path = r"C:\Temp\new_project.aprx" layer_path = r"C:\Temp\R36131012A4_Parcel.shp" #path to the shapefile template_project_path = r"C:\Temp\template.aprx" # Create a new project by copying the template aprx = arcpy.mp.ArcGISProject(template_project_path) aprx.saveACopy(new_project_path) # Open the newly created project new_aprx = arcpy.mp.ArcGISProject(new_project_path) # Get the first map from the project try: first_map = new_aprx.listMaps()[0] first_map.addDataFromPath(layer_path) print(f"Layer '{layer_path}' added to map in new project at: {new_project_path}") except IndexError: print("No maps found in the template project. Could not add layer.") # Save the new project new_aprx.save() print(f"New project created and saved successfully at: {new_project_path}")
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Jste tu noví? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.