IDEA
|
Using Python in the Field Calculator is notorious for this type of troubleshooting. Knowing which row it failed on would speed up the process of correcting the Python expression or refining the record selection to avoid triggering the error and having the calculation stop working midway through the calculation.
... View more
05-20-2024
04:41 PM
|
0
|
0
|
121
|
POST
|
I suspect the example from the Riverside County parcels data probably caused some confusion. That is because the Book and Page fields actually represent the Recorded Book and Page from our Recorder's office for our Tract or Parcel Map recordings. They have nothing to do with the Book and Page of the Assessors Parcel Number. In fact there are no fields in the parcel schema that directly contain just the Assessors Book or Page of the parcel. To correctly extract the Book and Page of the Assessors Parcel you should have instead parsed the first 6 digits of the Name field (Book is digits 1-3 and Page is digits 4-6) and done the feature selection based on an SQL expression of: "NAME LIKE '" + Name6Digits + "%'" then you could take the max NAME value of the set of returned features and increment that parcel number by 1 to correctly generate the next parcel number in the sequence based on the parcel that the user clicked. Arcade and ArcGIS Pro are actually especially useful for this data because they allow me to use parsing expressions to generate symbology for this data based on the Assessors Book, the Assessors Page, or the Assessors Book and Page without any need to create fields that directly contain any of those values. In ArcMap I would have alter the schema or create a view that generated actual fields for those parsed values to be able to symbolize the data based on them. Arcade can also convert the original string value of the NAME field to numeric values so I have the option to display the symbology based on the range of numeric values rather than being limited to only using unique value symbology for a set of discrete string values.
... View more
05-15-2024
06:19 PM
|
0
|
0
|
382
|
POST
|
I agree about the parentheses. As my original post indicated, the code was untested. The post was intended to show the structure of how I typically tackle this kind of problem, but I must not have had time to design a real world test case to do an actual debug of the code at that time. Anyway, I hope you have gotten what you needed.
... View more
01-31-2024
11:17 AM
|
1
|
0
|
819
|
POST
|
As I recall, the sorted function may fail if any value it is trying to sort is None, since the sorted function must compare all values to each other to determine the order of the values, and None cannot be compared to other actual values the way that underlying function is written. Since one of the fields making up your tuple key is a date field I imagine it can contain None values. In any case you could print the keys prior to the sorted function to determine what the actual key values are to see if this may explain the code behavior. You can try using a value substitution in your list comprehension as shown in the top reply to this post: https://stackoverflow.com/questions/30976124/sort-when-values-are-none-or-empty-strings-python
... View more
01-31-2024
10:26 AM
|
2
|
4
|
845
|
IDEA
|
Thank you for implementing this enhancement and the video demonstrating how it works. The behavior is much more like the way the Create Features template works and it makes it much easier to quickly create a set of single course features that all need to be classified using the same attribute/symbology.
... View more
10-06-2023
11:39 AM
|
0
|
0
|
960
|
IDEA
|
@MichaelVolz I have not used services in any of my workflows and am retiring next week, so you will have to do the experimentation on that yourself.
... View more
09-30-2023
10:23 AM
|
0
|
0
|
1443
|
IDEA
|
@MichaelVolz I have not done a lot of experimentation to determine the best available options for overcoming this problem under the current ArcGIS Pro limitations. I can say none of the options appear to be worth the effort unless the tool is transferring the shape of the source feature to the target or the number of attributes being transferred is very large and difficult to transfer using standard manual value copy and paste operations between attribute tables. I have found that the tool respects layer definition queries, so if a query can be written to ensure that the desired source or destination feature is available to be clicked and all other overlapping features are filtered out is a possible solution if the user is careful not to click the boundary of multiple features. This assumes the user anticipates that overlapping features would otherwise occur and can figure out a query that ensures only a single desired featured is clicked. The tool won't alert the user if they actually still had overlapping features exposed to the tool in their layer, so it is wise to first verify that only the desired features are clicked using the Explore tool first before doing any transfers. Some suggested definition queries that may be useful for restricting the available source or destination features include setting the area or length of the features to be less than or greater than a certain size or setting the ObjectID to be above a certain value. Other query options would be specific to the data the user is working with. For example, in some cases setting the available features to be above a certain date in a date field or greater that a certian alphabetical value in a text field could work. The user still has the responsibility to verify that only the desired source or destination layers are selectable and only the desired destination layer is editable before doing the transfer and should avoid having more than one tranfer set up configured at a time. If I discover any other options, I will post them here, since even if Esri adds equivalency to a future release of ArcGIS Pro they won't implement it in any of the other releases for users that are not ready to update their release.
... View more
09-30-2023
09:55 AM
|
0
|
0
|
1450
|
IDEA
|
I also should mention that if multiple Attribute Transfer mappings have been set up that the number of dialogs that can appear for both the source and destination features can increase if the user cancels these dialogs to bring up another transfer mapped feature set. Pressing the escape key can also cycle through the available source features when a single source feature is clicked and the dialog doesn't appear, but this is not true when a single feature is clicked in the first available target layer. This behavior can also occur when a feature class in the transfer mapping set up is used for multiple layers containing different definition queries which can lead to multiple dialogs appearing if the user cancels any of the dialogs and features in any of the other layers were clicked. The dialogs appear in the Table of Contents order of the available sources or destinations beginning with the top most layer and continuing to the lowest layer clicked that is used by the transfer set ups. It may be difficult to replicate this behavior in a single dockable window, which is typically the favored approach for tools in Pro as opposed to using multiple dialogs, which is the favored approach in ArcMap desktop. However, in order for true equivalency to be achieved, these behaviors are additional requirements that the ArcGIS Pro version of the Attribute Transfer tool needs to provide. Obviously as the complexity of the transfer set up configurations increase, the user must assume greater responsibility to understand the tools possible behaviors and spend more time controlling the selectable layer and editable layer settings to manage their edits, but without the behavior I described in my original post, the tool becomes next to impossible to use when multiple features are clicked in a single layer in ArcGIS Pro even with the absolutely simplest transfer set up configuration in place.
... View more
09-30-2023
08:55 AM
|
0
|
0
|
1461
|
IDEA
|
The Attribute Transfer Tool behavior in ArcGIS Pro is not equivalent to the behavior of this tool in ArcMap Desktop. The tool behavior is only equivalent when the user's clicks on a single feature for both the source and the transfer targets, in which case no dialogs appear in either program. However, if the user ever clicks on more than one feature for either the attribute transfer source feature or destination feature in ArcMap Desktop, a dialog listing the features by their layer Display tab expression that provides access to a list of feature attributes appears to allow the user to select the exact feature they want to use as the source or destination feature. Clicking on more than one feature can occur when a user clicks on the boundary between two adjacent features in feature classes that aren't designed to have actual overlapping features and can't be avoided in feature classes that are designed to have overlapping features. An example of the dialogs that appear in ArcMap Desktop when more than one feature is clicked for either an attribute transfer source feature or destination feature is shown below: In ArcGIS Pro when the user clicks on more than one feature for the source or the target no dialogs appear and the tool always uses the feature with the lowest ObjectID to do the transfer. If the user didn't want to use the feature with the lowest ObjectID for either the source or the target, the tool behavior nonetheless does a transfer based on that rule and results in data corruption. The ArcGIS Pro version of the Attribute Transfer tool needs to provide an option for the user to choose the source or destination feature they want whenever they click on more than one feature that provides the same functionality that the ArcMap Desktop Attribute Transfer tool dialogs above provide.
... View more
09-28-2023
01:23 PM
|
17
|
10
|
1545
|
POST
|
The overall file geodatabase is still compatible with ArcCatalog/ArcGIS Desktop, but the individual feature classes and datasets within it can be rendered incompatable with the enhanced features listed by Ayan. While all editing has to be performed in ArcGIS Pro to take advantage of the enhanced capabilities as intended by the data designer, it is still possible to create a simple feature class in that file geodatabase or in SDE that duplicates the schema without the enhanced capabilities and use the Truncate and Append tools in ArcGIS Pro to create a feature class that can be opened in ArcCatalog/ArcMap for a version of the feature class used for viewing publication only purposes. Of course it then has to undergo scheduled updates to periodically be synchronized with the edit version thereafter and cannot otherwise remain current with the edit version.
... View more
09-09-2023
08:42 AM
|
1
|
0
|
977
|
POST
|
I have a question about using transparency on the text element. Can you tell me where the text element transparency is exposed through the ArcGIS Pro interface? I am unable to find where the transparency property of the text element is set. It does not appear on any ribbon when I select the element that is set to 100% transparent, nor does a transparency property appear within the Text Symbol properties of the text element on the Element tab when I select a text element. I am asking, because I need to manually change the set up the template layout to make all items visible with black text color, but I wanted to also be able to manually set the transparency of the items that I wanted to be opaque or transparent for a specific layout. I prefer to not set the Visible property of the elements to false, since then they cannot be selected on the layout itself. They can only be accessed through the Contents pane for the layout if the Visible property is set to false. The Transparency property allows me to select the elements on the layout, but I don't see where to set it manually.
... View more
05-15-2023
12:22 PM
|
0
|
0
|
1079
|
POST
|
Based on the code you provided I have created the following method that finds the text element by the name that is passed to the method and sets the transparency to the value that is passed: public async static void SetTextTransparency(string ElementName, int TextTransparency)
{
// Ensure TextTransparency is within transparency bounds
if (TextTransparency < 0) TextTransparency = 0;
if (TextTransparency > 100) TextTransparency = 100;
var myLayoutView = LayoutView.Active;
if (myLayoutView == null) return;
await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
{
//Reference and load the layout associated with the layout item
Layout lyt = myLayoutView.Layout;
if (lyt == null) return;
//Reference a text element by name
TextElement txtElm = lyt.FindElement(ElementName) as TextElement;
if (txtElm == null) return;
//Change TextProperties
var cimSym = txtElm.GetDefinition();
cimSym.Visible = true;
var cimTextGraphicBase = (cimSym as CIMGraphicElement).Graphic;
if (cimTextGraphicBase == null) return;
cimTextGraphicBase.Transparency = TextTransparency;
txtElm.SetDefinition(cimSym);
});
} I have also rewritten my method for setting the text value to follow a similar coding pattern to make sure that the process of checking for null values is more thorough.
... View more
05-15-2023
10:39 AM
|
1
|
1
|
1088
|
POST
|
I am trying to convert an ArcObjects tool written in VB to an ArcGIS Pro SDK tool written in C#. One of the subroutines of my ArcObjects passes a layout graphics container and a text element name on the layout to make the text color black and another subroutine is passed the same kinds of parameters to change the text color to null (invisible). Here is the ArcObjects method for making the color of the text black: Private Sub setTextElementBlackColor(ByVal pGraphicsContainer As ESRI.ArcGIS.Carto.IGraphicsContainer, ByVal strElementName As String)
Dim pActiveView As ESRI.ArcGIS.Carto.IActiveView
Dim bFound As Boolean
Dim pElement As ESRI.ArcGIS.Carto.IElement
Dim pElementProperties As ESRI.ArcGIS.Carto.IElementProperties2
Dim pTextElement As ESRI.ArcGIS.Carto.ITextElement
Dim pTextSymbol As ESRI.ArcGIS.Display.ITextSymbol
Dim pColor As ESRI.ArcGIS.Display.IColor
pActiveView = pGraphicsContainer
pColor = New ESRI.ArcGIS.Display.RgbColorClass
pColor.NullColor = False
pColor.RGB = RGB(0, 0, 0)
pTextSymbol = New ESRI.ArcGIS.Display.TextSymbolClass
'Element Search escape variable
bFound = False
pGraphicsContainer.Reset()
pElement = pGraphicsContainer.Next()
Do While Not pElement Is Nothing
pElementProperties = pElement
If pElementProperties.Name = strElementName Then
If TypeOf pElement Is ESRI.ArcGIS.Carto.ITextElement Then
pTextElement = pElement
pTextSymbol = pTextElement.Symbol
pTextSymbol.Color = pColor
pTextElement.Symbol = pTextSymbol
pActiveView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGraphics, Nothing, Nothing)
bFound = True
If Not pTextSymbol Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(pTextSymbol)
End If
If Not pTextElement Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(pTextElement)
End If
End If
End If
If bFound = False Then
pElement = pGraphicsContainer.Next()
Else
pElement = Nothing
End If
If Not pElementProperties Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(pElementProperties)
End If
Loop
If Not pColor Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(pColor)
End If
If Not pActiveView Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(pActiveView)
End If
End Sub What is the equivalent code in the ArcGIS Pro SDK for changing a layout text element to black or invisible? I have a method for changing the text of a TextElement, but the TextProperties of the element do not include any way to change the text color. Presumably the code would be similar to that code for changing the text element color, but I do not see any sample code in the git hub examples that tells me how to access the color properties of the text element. Here is the code I use to change the text value of the TextElement: public async static void SetTextElement(string ElementName, string TextValue)
{
await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
{
//Reference and load the layout associated with the layout item
Layout lyt = LayoutView.Active.Layout;
if (lyt != null)
{
//Reference a text element by name
TextElement txtElm = lyt.FindElement(ElementName) as TextElement;
//Change TextProperties
TextProperties txt_prop = txtElm.TextProperties;
txt_prop.Text = TextValue;
txtElm.SetTextProperties(txt_prop);
}
});
}
... View more
05-15-2023
08:46 AM
|
0
|
4
|
1114
|
POST
|
I have been trying to use code to call ArcObjects for ArcMap 10.8 from within Python based on various code examples on the web and so far all of them aren't working. So, is it possible to use ArcObjects for ArcMap 10.8 within Python, or does that only work for earlier versions of ArcMap? I have tried installing comtypes and using the first example from this website: https://gist.github.com/AlexArcPy/bf0f1702d6b0d3840f43442a2d5ef5c6 However, although I have changed the path to match my version of ArcMap, the code fails on the line 12 with a "WindowsError: [Error -2147024809] The parameter is incorrect" error when it tries to execute: esriFramework = GetModule(r"C:\Program Files (x86)\ArcGIS\Desktop10.8\com\esriFramework.olb") I also tried using the library on NuGet called UnmanagedExports from Robert Giesecke from https://www.udcus.com/blog/2017/06/27/extending-arcpy-increased-capabilities-arcobjects-and-c However that code fails when I try to run the Python Example Call Function saying that the dll I built does not have a function called "CustomPost" and doesn't even try to execute anything from the dll. I had made sure the x86 build type is selected in the Target Platform of my project properties. I read elsewhere that the UnmanagedExports library is not compatible with Visual Studio 2017, which is the minimum version required by the ArcMap 10.8 SDK. So, is it no longer possible to call ArcObjects for ArcMap 10.8 from within Python?
... View more
01-26-2023
06:36 PM
|
0
|
0
|
625
|
BLOG
|
On September 28, 2022, I released a new version of my Add-In that added an option to search for Township Range and Section(s) within Riverside County. This is how the tool looks: If you only want to find a single Section you can use the keyboard to do all the steps. Type the number of the Township you want (Example 2) and press the Tab key Type the number of the Range you want (Example 6) and press the Tab key. Optionally you can toggle the slider button to change the W and E Direction of the Range by pressing the Enter or Space key and press the Tab key The grid will change at each of the above steps and if any Sections do not fall within Riverside County they will be disabled. Type the number of the Section you want (Example 28) and press the tab key - the number you typed will blank out and the appropriate Section toggle button within the central Township and Range of the grid will be selected (if it is valid in Riverside County). The Launch button will now have focus and you can press the Enter key or Space key on your keyboard to activate the Launch button and zoom to the Section. If you only want to use the mouse you can Left Click on the Township and Range combobox dropdowns and the Slider Button for W and E to chose the Township and Range you want. To select one or more Sections in the grid with the mouse there are several options: You can do a single Left Click on one of the Section toggle buttons to select it and deselect all other selected toggle buttons. If you do a single Left Click while holding the Shift Key on the Keyboard you can select additional Section toggle buttons individually without affecting any selected toggle buttons that you didn't click. If you do a single Left Click while holding the Control Key on the Keyboard you can invert the selection of each Section toggle button individually (if it is unselected, it becomes selected or if it is selected, it becomes unselected). This does not affect any selected toggle buttons you didn't click. You can Left Click, Drag and Release the Left mouse button to select a rectangular group of Section toggle buttons and deselect any selected toggle buttons that are outside of the rectangle. When dragging in the mode the rectangle appears like this: You can Left Click, Drag and Release the Left mouse button while holding the Shift Key on the Keyboard to select all of the Section toggle buttons that fall within the rectangle you drew. The Section toggle buttons that were selected that are outside of the rectangle will be unaffected. When dragging in this mode the rectangle appears like this: You can Left Click, Drag and Release the Left mouse button while holding the Control Key on the Keyboard to invert the selection of Section toggle buttons within the rectangle you drew. The Section toggle buttons that were selected that are outside of the rectangle will be unaffected. When dragging in this mode the rectangle appears like this:
... View more
09-28-2022
11:54 AM
|
3
|
0
|
486
|
Title | Kudos | Posted |
---|---|---|
1 | 05-07-2014 03:27 PM | |
1 | 08-03-2024 09:18 AM | |
3 | 08-08-2024 11:46 AM | |
4 | 07-18-2024 02:58 AM | |
1 | 07-08-2024 09:51 AM |
Online Status |
Offline
|
Date Last Visited |
4 weeks ago
|