POST
|
Hi Community, I have seen numerous threads on this process but seemingly all the results I have found I have come up empty to where the last user posted a few months ago and was resulting to manually changing data. https://community.esri.com/t5/arcgis-api-for-python-questions/updating-data-source-in-arcgis-pro-project-with/td-p/802811/page/3 I have code that worked perfectly fine in Pro 2.9.6, However with the upgrade to 3 a lot of headaches are being caused. I have a process that creates new features, populates a FGDB and then "should" re-path to the new data in the new FGDB. Obviously the variables below are defined in prior code. # Update the layer path to the newly created data. for lyr in mf.map.listLayers(): cp = lyr.connectionProperties # Returns a python dictionary of connection properties. if lyr.name == "Lines": arcpy.AddMessage("Updating source for %s to %s" %(lyr.name,out_Lines)) cp['dataset'] = out_Lines cp['connection_info'] = {'database': str(gdbPathFinal)} lyr.updateConnectionProperties(lyr.connectionProperties,cp,True,True) if lyr.name == "Polygons": arcpy.AddMessage("Updating source for %s" %(lyr.name)) cp['dataset'] = out_Poly cp['connection_info'] = {'database': str(gdbPathFinal)} lyr.updateConnectionProperties(lyr.connectionProperties,cp,True,True) # Pan the map to the output. Maintaining current scale. mf.panToExtent(mf.getLayerExtent(lyr)) #Set dataframe extent. if lyr.name == "Points": arcpy.AddMessage("Updating source for %s" %(lyr.name)) cp['dataset'] = out_Points cp['connection_info'] = {'database': str(gdbPathFinal)} lyr.updateConnectionProperties(lyr.connectionProperties,cp,True,True) It fails on the "cp = lyr.connectionProperties # Returns a python dictionary of connection properties." AttributeError: The attribute 'connectionProperties' is not supported on this instance of Layer. Has the layer properties configuration changed between versions? Is someone able to shed some light why this will not work in ArcGIS Pro 3 as I havent been able to find specific documentation referring to any changes in this methodology between 2.9.x an 3 Apologies if this is a simple fix! Thanks!
... View more
07-10-2023
09:24 PM
|
0
|
2
|
899
|
POST
|
Hi there, I have an old 2.9.x code version script: below that used to reference the 'grids' element within the CIMGraphicElement Family, However I have come to discover this variable may no longer exist in ArcGIS Pro 3? As the is no option to directly change the grid reference of a layout from arcpy you must do it with the CIM. The Code Snippet is below imports a layout into a pro session and does it maths calculations prior to this stage However with the version change, Im a bit stumped as to what to fix in order to get this working, # Import the Layout into the current project and update it aprx = arcpy.mp.ArcGISProject("CURRENT") aprx.importDocument(pagx_in) layout = aprx.listLayouts(out_Template)[0] arcpy.AddMessage("Imported template:" + layout.name) mf = layout.listElements('MAPFRAME_ELEMENT','Main')[0]# Return the main map frame element. This needs to be named 'Main' in the template/pagx m = mf.map # the map view referenced by the user chosen layout (FFT Main). extent = mf.camera.getExtent() #get dataframe extent. This will be in whatever coordinate system the arcpy.AddMessage("Got extent: " + str(extent)) mf.map.spatialReference = sr mf.spatialReference = sr proj = "UTM " + UTM_zone + UTM_letter gps = "UTM UPS" datum = "WGS84" arcpy.AddMessage("Dataframe set to: " + mf.spatialReference.name) # Update the UTM MGRS Grid. This is done through updating the CIM Definition as no arcpy method exists. layout_CIM = layout.getDefinition("V3")# Get the CIM Definition of the layout mf_CIM = layout_CIM.elements[0] mf_CIM.grids[0].projectedCoordinateSystem.get("wkid") #Get the coordinate system of the UTM MGRS grid mf_CIM.grids[0].projectedCoordinateSystem['wkid'] = srNum # set to updated coordinate system mf_CIM.grids[0].projectedCoordinateSystem['latestWkid'] = srNum # set to updated coordinate system layout.setDefinition(layout_CIM) #set the updated CIM definition I keep getting: line 1538, in <module>
wkid = mf_CIM.grids[0].projectedCoordinateSystem.get("wkid")
AttributeError: 'CIMGraphicElement' object has no attribute 'grids' Is anyone able to provide some advice on migrating this to work with the ArcGIS Pro 3 CIM environment?
... View more
06-30-2023
03:26 AM
|
1
|
0
|
531
|
POST
|
Don, You can open an existing .lxtgaz file in notepad- I just made a test file to examine this too. It's essentially comma delimited text with a header defining the fields: "Name","Lat","Lon","Precision","Original Coordinate","Case Sensitive","Errors Allowed","Errors From Error Level","Spatial Reference" "China","35.0376191","101.6343438","1","101.6343438°E 35.0376191°N ","true","1","false","GEOGCS[""GCS_WGS_1984"",DATUM[""D_WGS_1984"",SPHEROID[""WGS_1984"",6378137.0,298.257223563]],PRIMEM[""Greenwich"",0.0],UNIT[""Degree"",0.0174532925199433]]" What's frustrating is that there doesn't appear to be a way to just import existing spatial data or use a locator service!!!??? Unless I'm missing something, you would have to manually write out a series of locations...so, if you just wanted to find country names to use as locations in un-structured text for all the countries in the world, you'd have to type all those out (or custom code something to write out csv from featureclasses) .....classic esri.
... View more
10-07-2021
03:29 PM
|
0
|
0
|
674
|
IDEA
|
This was a bug that was apparently fixed....but never was (alongside the 're-use maps' option when importing a Layout_
... View more
09-12-2021
08:40 PM
|
0
|
0
|
1480
|
POST
|
Possible (and I'll check) but not likely as all the layers that I check (using a query on the list layers) are in the same location (default.gdb)...but even then, the whole point of 'supports' is that this type of error doesn't occur.
... View more
09-12-2021
02:59 PM
|
0
|
0
|
1124
|
POST
|
for lyr in updateMap.listLayers(): if lyr.supports("DATASOURCE"): arcpy.AddMessage(lyr.dataSource) A script opens an ArcGIS Pro project file, goes through the list of layers within a map, checks to see if each layer supports the 'DataSource' property before giving me a message with that datasource The script fails as it reaches a layer which doesn't support the 'DataSource' property.... NameError: The attribute 'dataSource' is not supported on this instance of Layer. Can someone explain this non-sensical behaviour to me? ArcGIS Pro 2.8.2
... View more
09-07-2021
10:08 PM
|
0
|
3
|
1412
|
POST
|
Thanks for the reply Jeff- I'll try this, but have a feeling I may run into issues importing multiple pagxs into the same project (as there's no way to programmatically 'clean up' as I go by deleting those layouts and maps)
... View more
08-12-2021
05:04 PM
|
0
|
0
|
947
|
POST
|
I'm writing a python tool to update datasources in multiple ArcGIS pro related files from a network location to a local drive. With ArcGIS Projects (.aprx) files, this is fine as there are methods on the project/map to update datasources. For layout files- (.pagx) which we use for standardised templates imported into the users prodject using another custom python tool, there is no such methods. How can I bulk update .pagx layouts? Is it possible to generate a temporary ArcGIS pro project in memory, import the layout, update datasources, re-export the pagx?
... View more
08-09-2021
04:24 PM
|
0
|
2
|
1016
|
POST
|
Could you do this task another way? If the end result needed is just a set of pngs, why not use data driven pages based off the features in your gdb?
... View more
08-09-2021
04:17 PM
|
0
|
4
|
1897
|
POST
|
I don't consider this to be a solution as it doesn't work for mapping workflow automation which is still bugged. In the version of Pro I'm using now (2.6.1), arcpy.management.ApplySymbologyFromLayer() does work for Maps, but not for Scenes and not when using the 'Current' for either maps OR scenes (i.e. only works when referencing an ArcPro project that is not open in the current session).
... View more
12-03-2020
01:32 PM
|
3
|
0
|
7809
|
IDEA
|
Thanks Kory- have amended title. It appeared as a bug as setting the coordinare system to the maps coordinate system seemed like it should 'stick' to that map sr rather than just read it and then list it as an actual coordinate system...if that makes sense. While there are definitely times when having different grid coordinate system than the map is useful, having the ability/tick box to tie that to the map would also be useful. However, the CIM access is definitely something I can use to achieve this. Cheers
... View more
09-17-2020
02:46 PM
|
1
|
0
|
1049
|
IDEA
|
When updating the coordinate system of a map (i.e. moving to a different UTM zone) using Python in ArcGIS PRO, the coordinate system of the associated layout grid(s) is not updated. Choosing the Coordinate System of the grid to match the coordinate system of the map within the UI only reads that coordinate system one time (it then sets it to that coordinate system)- It isn't "tied" to the map and so is not updated when the map is updated which is a useful option when writing tools to work in multiple utm zones. There doesnt appear to be away within python to update the coordinate system of grids directly.
... View more
09-14-2020
04:46 PM
|
1
|
3
|
1637
|
POST
|
You can, but it requires manual geo-referencing. Have a look at the Georeferencing tools on the Imagery bar after adding an image to your map.
... View more
08-16-2020
05:23 PM
|
0
|
0
|
1172
|
POST
|
I've updated a map production script from ArcMap which imports a UTM layout and changes the coordinate system of the map to the correct UTM zone (based off the map centrepoint in MGRS that the user inputs). That all works fine. What doesn't work is the MGRS grid which maintains the coordinate system of the source layout and is therefore misaligned. While the user can manually reset this to the correct UTM zone through the UI (i.e. set coordinate system to the that of the updated map), is there anyway via python to force a refresh so that the map grid spatial reference matches the maps spatial reference?
... View more
08-02-2020
09:06 PM
|
0
|
0
|
440
|
POST
|
Hi Anna From what you've described, you have geo-tagged images (i.e. photos with GPS location in EXIF) rather than geo-referenced images (i.e. an ortho photo with geo referencing info in the tiff header or external .tfw file). You can use the 'GeoTagged Photos to Points' tool to create a featureclass where each point is the lat/lon/alt of the photo (WGS84) and optionally add the image as an attachment but note, this won't lay the images 'on the ground' like an ortho photo.
... View more
07-30-2020
05:54 PM
|
0
|
0
|
1172
|
Title | Kudos | Posted |
---|---|---|
1 | 06-30-2023 03:26 AM | |
1 | 01-13-2016 12:17 PM | |
1 | 07-30-2020 05:04 PM | |
1 | 09-14-2020 04:46 PM | |
3 | 12-03-2020 01:32 PM |
Online Status |
Offline
|
Date Last Visited |
2 weeks ago
|