|
BLOG
|
I don't see Enterprise 11.1 in the release matrix yet (I assume that won't be updated until release day). Will this release target EXB 1.11?
... View more
04-06-2023
08:36 AM
|
2
|
0
|
1287
|
|
IDEA
|
At this point esri should bite the bullet and just remove the license checks from arcpy in general. You still need the Desktop files to run the modules and the number of customers with Desktop licenses and nothing else has to be in single percentiles by this point, it doesn't seem worth the hassle to shove license checks everywhere for the base functionality.
... View more
03-31-2023
09:31 AM
|
0
|
0
|
1594
|
|
POST
|
Create a specific domain account in your environment that's only used to schedule tools. Give access to the account to anyone trusted to schedule tools and change the password every time one of those users leaves the company. Ideally have this account register tools to a machine that can run 24/7 with scheduled downtime if you have the resources. Any other workflow is going to lead to issues with scheduled tools in the long run so the faster you rip off the bandaid and migrate your tools the better.
... View more
03-31-2023
09:17 AM
|
1
|
0
|
1682
|
|
POST
|
If you're talking about your own ArcGIS Server machine, talk to your admin team and see if they can restore a backup of your AGS directories that you can poke around in. Somewhere in there you should find the .msd file included with the service, or some other bit of data you can use to track down what you need to republish the data. If this was a hosted AGOL service then like Bill said, you're out of luck.
... View more
03-31-2023
09:11 AM
|
1
|
0
|
2122
|
|
POST
|
My best guess from reading the error messages is someone has locked the dataset you're trying to update. You might want to take this to ESRI Support as I'm sure there's a lot of environment-specific issues at play that you might not want to post in a public forum. Good luck!
... View more
03-31-2023
09:06 AM
|
0
|
0
|
3344
|
|
IDEA
|
You're talking about creating hosted views but for referenced datasets, right? My company is in Enterprise but expanding hosted views in general would be great, having to publish a redundant service just to get a cut down layer for specific applications is a silly workflow.
... View more
03-31-2023
09:02 AM
|
0
|
0
|
693
|
|
POST
|
Use "Excel to Table" to load the data into a table, then "Calculate Value" with some Python cursors to join the column values into one big string. Something like this for the code block: def get_list(table):
return ";".join(str(x[0]) for x in arcpy.da.SearchCursor(table, "My_Field_Name")) and then you can call the function like get_list("%output_table%"), replacing the variable with whatever the name of your output table is in modelbuilder.
... View more
03-31-2023
08:59 AM
|
0
|
0
|
780
|
|
POST
|
I think a potential source of error is the "Calculate Field" tool you're using, that doesn't look like the interface for the tool in the Data Management toolbox. Try using that tool specifically and see if the errors persist.
... View more
03-31-2023
08:40 AM
|
0
|
2
|
3349
|
|
POST
|
If you leave the output parameter empty it should output to the default geodatabase with the default name, just like the normal geoprocessing pane behaviour. If you want to chain this output directly into the next task step then I'm not sure if or how that's possible, I just ask the user to pick the data themselves in the instructions and hope for the best.
... View more
03-17-2023
06:17 AM
|
1
|
0
|
1205
|
|
POST
|
The expanded method help makes this clearer. You pass in a list that contains dictionaries, one dictionary per folder connection. Each dictionary has three keys and associated values: "connectionString" (A local or UNC path to a system folder), "alias" (optional alias for the path in the catalog view) and "isHomeFolder" (True if this entry is for the home folder, False otherwise). Basically you're passing in an anonymous config object like it's a JavaScript function, even though Python supports named objects. Guess whoever wrote that interface had a long day and didn't want to define a proper object 😁.
... View more
03-16-2023
05:42 PM
|
0
|
3
|
1850
|
|
POST
|
I've cleaned up the posted code and moved the counter increment to the right spot, let us know if this works. var pointGeometryX = Text(Geometry($feature).x);
var pointGeometryY = Text(Geometry($feature).y);
var pointID = $feature.assetID;
var lineImport = FeatureSetbyName($datastore, "LineLayer", ["*"], true);
var lineFilter = filter(lineImport "assetNodeTo = @pointID"); //Filter Line Layer to just the To Nodes that join to the moved point, Join is based on Asset ID (point.assetID=line.assetNodeTo)
var AddList = [];
var counter = 0;
var numToNode = Count(lineFilter);
if (numToNodes > 0) {
for (var i in lineFilter) {
var LineGeomPaths = Geometry(i).paths;
var fromNodeGeom = LineGeomPaths[0][0]; //Get From Nodes XY Coordinates
var fromNodeGeomX = Text(fromNodeGeom.x);
var fromNodeGeomY = Text(fromNodeGeom.y);
var polylineJSON = { //Build Polyline layer with new To Node (New moved point geometry), keep same From Node
"paths": [[
[fromNodeGeomX, fromNodeGeomY, 0],
[pointGeometryX, pointGeometryY, 0]
]],
"spatialReference": {
"wkid":2249
}
};
var polyFinal = Polyline(polylineJSON)
AddList[counter++] = {
"OBJECTID": i.OBJECTID,
"geometry": polyFinal
};
}
return {
"result": i.OBJECTID,
"edit": [{
"className": "LineLayer",
"updates": AddList
}]
}
} else {
return $feature.assetID
}
... View more
03-16-2023
02:08 PM
|
0
|
1
|
1847
|
|
IDEA
|
My team is constantly asked to show a point's lat/lon as a standard attribute, this idea would simplify those requests and ease maintenance.
... View more
03-16-2023
10:53 AM
|
0
|
0
|
10323
|
|
IDEA
|
A common request I get is to surface the latitude and longitude of spatial data as attributes for ease of use in online data tables and pop-ups. The most timely way to do this is an Arcade expression in either a pop-up or attribute rule to calculate the values. This currently requires the user to compute the transformation themselves, which is error-prone and difficult to read in the context of an Arcade script. My request is a way to get lat/lon through built-in Arcade functionality, either through functions or properties on the Geometry object type. Only supporting Web Mercator data sources is great as a first step but supporting all projections would be ideal as this increases the portability of all scripts. This would require support for both the Attribute Rules and Popup profiles for my use cases but could be expanded to many more profiles. I'd also take implementing this projection idea as a suitable solution, although adding lat/lon access as a convenience on top of that idea would be even better.
... View more
03-16-2023
10:43 AM
|
15
|
1
|
1593
|
|
POST
|
When you create a form from a service it always uses the first layer as a template. If you go to the "settings" tab in your XLSForm and check the "form_id" attribute you can change that to the appropriate layer name, but you'll have to remap the fields themselves. Hit up the ideas section if you keep running into this as I can't think of a way to pick which service layer the form is built from.
... View more
03-13-2023
04:28 PM
|
1
|
0
|
3868
|
|
POST
|
Ah, much better! I haven't looked too closely at the exact logic of the script, but there's a couple of big issues: You're attempting to "eval" a SQL expression on line 24, which is generating invalid Python. If you want to apply a filter to a cursor, you should create the SQL string and then pass it in as the third parameter to the cursor constructor. This'll let you use SQL syntax features and it filters the data in the database which saves you some needless Python work. Alternatively you can rewrite the conditional expression to use Python syntax, something like: [row for row in cursor if row[0] >= search_range[0] and row[0] <= search_range[1]] That list comprehension on line 24 is burning through the entire cursor object so it won't update the correct row. Overall I think your best bet is to take a step back and rearrange the order you're running your statements in. One trick that might apply here is to use a dictionary comprehension to quickly turn a dataset into a lookup table. Something like: lookup = {x[0]: x[1] for x in arcpy.da.SearchCursor(lookup_table, (lookup_key_field, value_field))}
with arcpy.da.UpdateCursor(update_table, (update_key_field, data_field)) as cursor:
for key, current_value in cursor:
new_value = lookup.get(key, current_value)
if new_value != current_value: # Avoid needless updates, saves costly db hits
cursor.updateRow((key, new_value)) That way you do one pass through the lookup table and make matches in memory, saving a ton of database activity. Good luck!
... View more
02-23-2023
05:20 PM
|
1
|
0
|
1246
|
| Title | Kudos | Posted |
|---|---|---|
| 2 | 04-09-2026 11:36 AM | |
| 1 | 09-08-2023 10:07 AM | |
| 3 | 03-26-2026 08:11 AM | |
| 2 | 03-12-2026 01:41 PM | |
| 1 | 03-06-2026 08:58 AM |
| Online Status |
Online
|
| Date Last Visited |
yesterday
|