POST
|
I'm having the same issues. I cloned my environment and then proceeded to 'Update All' but it didn't work. Thus, I had to do the updates one by one. Yet, there are a few with a 'Lock' symbol (e.g., arcgis, matplotlib, notebook, etc.) that refuse to update. For those of you running Python scripts (ArcPro 3.2.1) on Task Scheduler, don't forget to clone your new environment so that your tasks can run as desired. Here are examples of the updates: - azure-core The following packages will be downloaded: package | build ---------------------------|----------------- azure-core-1.29.5 | py39haa95532_0 197 KB brotli-python-1.0.9 | py39hd77b12b_7 309 KB cffi-1.16.0 | py39h2bbff1b_0 242 KB cryptography-41.0.7 | py39h89fc84f_0 1.1 MB typing-extensions-4.7.1 | py39haa95532_0 10 KB typing_extensions-4.7.1 | py39haa95532_0 57 KB urllib3-1.26.18 | py39haa95532_0 198 KB ------------------------------------------------------------ Total: 2.1 MB The following NEW packages will be INSTALLED: brotli-python pkgs/main/win-64::brotli-python-1.0.9-py39hd77b12b_7 The following packages will be UPDATED: azure-core esri/noarch::azure-core-1.12.0-py_0 --> pkgs/main/win-64::azure-core-1.29.5-py39haa95532_0 cffi 1.15.1-py39h2bbff1b_3 --> 1.16.0-py39h2bbff1b_0 cryptography esri::cryptography-41.0.3-py39_2 --> pkgs/main::cryptography-41.0.7-py39h89fc84f_0 six esri::six-1.16.0-py_0 --> pkgs/main::six-1.16.0-pyhd3eb1b0_1 typing-extensions 4.3.0-py39haa95532_0 --> 4.7.1-py39haa95532_0 typing_extensions 4.3.0-py39haa95532_0 --> 4.7.1-py39haa95532_0 urllib3 1.26.16-py39haa95532_0 --> 1.26.18-py39haa95532_0 The following packages will be SUPERSEDED by a higher-priority channel: win_inet_pton esri::win_inet_pton-1.1.0-py39_0 --> pkgs/main::win_inet_pton-1.1.0-py39haa95532_0 Downloading and Extracting Packages urllib3-1.26.18 | 198 KB | | 0% urllib3-1.26.18 | 198 KB | 8 | 8% urllib3-1.26.18 | 198 KB | ########## | 100% urllib3-1.26.18 | 198 KB | ########## | 100% brotli-python-1.0.9 | 309 KB | | 0% brotli-python-1.0.9 | 309 KB | ########## | 100% brotli-python-1.0.9 | 309 KB | ########## | 100% typing_extensions-4. | 57 KB | | 0% typing_extensions-4. | 57 KB | ########## | 100% typing-extensions-4. | 10 KB | | 0% typing-extensions-4. | 10 KB | ########## | 100% cffi-1.16.0 | 242 KB | | 0% cffi-1.16.0 | 242 KB | ########## | 100% cffi-1.16.0 | 242 KB | ########## | 100% azure-core-1.29.5 | 197 KB | | 0% azure-core-1.29.5 | 197 KB | 8 | 8% azure-core-1.29.5 | 197 KB | ########## | 100% azure-core-1.29.5 | 197 KB | ########## | 100% cryptography-41.0.7 | 1.1 MB | | 0% cryptography-41.0.7 | 1.1 MB | ########## | 100% cryptography-41.0.7 | 1.1 MB | ########## | 100% Preparing transaction: ...working... done Verifying transaction: ...working... done Executing transaction: ...working... done Retrieving notices: ...working... done **************************** - azure-storage-blob The following packages will be downloaded: package | build ---------------------------|----------------- azure-storage-blob-12.19.0 | py39haa95532_0 406 KB blinker-1.6.2 | py39haa95532_0 29 KB isodate-0.6.1 | py39haa95532_0 50 KB msrest-0.7.1 | py39haa95532_0 106 KB oauthlib-3.2.2 | py39haa95532_0 209 KB pyjwt-2.4.0 | py39haa95532_0 38 KB ------------------------------------------------------------ Total: 839 KB The following packages will be UPDATED: azure-storage-blob esri/noarch::azure-storage-blob-12.8.~ --> pkgs/main/win-64::azure-storage-blob-12.19.0-py39haa95532_0 blinker 1.4-py39haa95532_0 --> 1.6.2-py39haa95532_0 isodate esri/noarch::isodate-0.6.0-py_0 --> pkgs/main/win-64::isodate-0.6.1-py39haa95532_0 msrest esri/noarch::msrest-0.6.21-py_0 --> pkgs/main/win-64::msrest-0.7.1-py39haa95532_0 oauthlib esri::oauthlib-3.2.0-py39_0 --> pkgs/main::oauthlib-3.2.2-py39haa95532_0 The following packages will be SUPERSEDED by a higher-priority channel: pyjwt esri/noarch::pyjwt-2.4.0-py_1 --> pkgs/main/win-64::pyjwt-2.4.0-py39haa95532_0 Downloading and Extracting Packages msrest-0.7.1 | 106 KB | | 0% msrest-0.7.1 | 106 KB | #5 | 15% msrest-0.7.1 | 106 KB | ########## | 100% msrest-0.7.1 | 106 KB | ########## | 100% isodate-0.6.1 | 50 KB | | 0% isodate-0.6.1 | 50 KB | ###1 | 32% isodate-0.6.1 | 50 KB | ########## | 100% oauthlib-3.2.2 | 209 KB | | 0% oauthlib-3.2.2 | 209 KB | 7 | 8% oauthlib-3.2.2 | 209 KB | ####5 | 46% oauthlib-3.2.2 | 209 KB | ########## | 100% oauthlib-3.2.2 | 209 KB | ########## | 100% pyjwt-2.4.0 | 38 KB | | 0% pyjwt-2.4.0 | 38 KB | ########## | 100% azure-storage-blob-1 | 406 KB | | 0% azure-storage-blob-1 | 406 KB | 3 | 4% azure-storage-blob-1 | 406 KB | ###9 | 39% azure-storage-blob-1 | 406 KB | ######3 | 63% azure-storage-blob-1 | 406 KB | ########2 | 83% azure-storage-blob-1 | 406 KB | ########## | 100% azure-storage-blob-1 | 406 KB | ########## | 100% blinker-1.6.2 | 29 KB | | 0% blinker-1.6.2 | 29 KB | ########## | 100% Preparing transaction: ...working... done Verifying transaction: ...working... done Executing transaction: ...working... done Retrieving notices: ...working... done **************************** - black The following packages will be downloaded: package | build ---------------------------|----------------- backcall-0.2.0 | pyhd3eb1b0_0 13 KB black-23.11.0 | py39haa95532_0 289 KB click-8.1.7 | py39haa95532_0 164 KB exceptiongroup-1.0.4 | py39haa95532_0 29 KB ipython-8.15.0 | py39haa95532_0 1.1 MB jedi-0.18.1 | py39haa95532_1 982 KB mypy_extensions-1.0.0 | py39haa95532_0 12 KB packaging-23.1 | py39haa95532_0 77 KB pathspec-0.10.3 | py39haa95532_0 49 KB platformdirs-3.10.0 | py39haa95532_0 35 KB prompt-toolkit-3.0.36 | py39haa95532_0 565 KB prompt_toolkit-3.0.36 | hd3eb1b0_0 5 KB pygments-2.15.1 | py39haa95532_1 1.7 MB regex-2023.10.3 | py39h2bbff1b_0 326 KB stack_data-0.2.0 | pyhd3eb1b0_0 22 KB traitlets-5.7.1 | py39haa95532_0 205 KB ------------------------------------------------------------ Total: 5.5 MB The following NEW packages will be INSTALLED: prompt-toolkit pkgs/main/win-64::prompt-toolkit-3.0.36-py39haa95532_0 The following packages will be UPDATED: black esri::black-22.1.0-py39_3 --> pkgs/main::black-23.11.0-py39haa95532_0 click 8.0.4-py39haa95532_0 --> 8.1.7-py39haa95532_0 exceptiongroup esri/noarch::exceptiongroup-1.0.0rc9-~ --> pkgs/main/win-64::exceptiongroup-1.0.4-py39haa95532_0 ipython esri/noarch::ipython-7.34.0-pyhbfea03~ --> pkgs/main/win-64::ipython-8.15.0-py39haa95532_0 mypy_extensions 0.4.3-py39haa95532_1 --> 1.0.0-py39haa95532_0 packaging pkgs/main/noarch::packaging-21.3-pyhd~ --> pkgs/main/win-64::packaging-23.1-py39haa95532_0 pathspec esri/noarch::pathspec-0.9.0-py_0 --> pkgs/main/win-64::pathspec-0.10.3-py39haa95532_0 platformdirs 2.5.2-py39haa95532_0 --> 3.10.0-py39haa95532_0 prompt_toolkit esri::prompt_toolkit-3.0.5-py_0 --> pkgs/main::prompt_toolkit-3.0.36-hd3eb1b0_0 pygments esri/noarch::pygments-2.14.0-py_0 --> pkgs/main/win-64::pygments-2.15.1-py39haa95532_1 regex 2022.7.9-py39h2bbff1b_0 --> 2023.10.3-py39h2bbff1b_0 traitlets esri/noarch::traitlets-5.5.0-py_0 --> pkgs/main/win-64::traitlets-5.7.1-py39haa95532_0 The following packages will be SUPERSEDED by a higher-priority channel: backcall esri --> pkgs/main jedi esri/noarch::jedi-0.18.2-py_1 --> pkgs/main/win-64::jedi-0.18.1-py39haa95532_1 stack_data esri::stack_data-0.5.1-py_0 --> pkgs/main::stack_data-0.2.0-pyhd3eb1b0_0 Downloading and Extracting Packages jedi-0.18.1 | 982 KB | | 0% jedi-0.18.1 | 982 KB | 1 | 2% jedi-0.18.1 | 982 KB | ########## | 100% jedi-0.18.1 | 982 KB | ########## | 100% packaging-23.1 | 77 KB | | 0% packaging-23.1 | 77 KB | ########## | 100% packaging-23.1 | 77 KB | ########## | 100% pygments-2.15.1 | 1.7 MB | | 0% pygments-2.15.1 | 1.7 MB | ########## | 100% pygments-2.15.1 | 1.7 MB | ########## | 100% pathspec-0.10.3 | 49 KB | | 0% pathspec-0.10.3 | 49 KB | ########## | 100% pathspec-0.10.3 | 49 KB | ########## | 100% backcall-0.2.0 | 13 KB | | 0% backcall-0.2.0 | 13 KB | ########## | 100% backcall-0.2.0 | 13 KB | ########## | 100% stack_data-0.2.0 | 22 KB | | 0% stack_data-0.2.0 | 22 KB | ########## | 100% ipython-8.15.0 | 1.1 MB | | 0% ipython-8.15.0 | 1.1 MB | ########## | 100% ipython-8.15.0 | 1.1 MB | ########## | 100% platformdirs-3.10.0 | 35 KB | | 0% platformdirs-3.10.0 | 35 KB | ########## | 100% mypy_extensions-1.0. | 12 KB | | 0% mypy_extensions-1.0. | 12 KB | ########## | 100% mypy_extensions-1.0. | 12 KB | ########## | 100% prompt-toolkit-3.0.3 | 565 KB | | 0% prompt-toolkit-3.0.3 | 565 KB | ########## | 100% prompt-toolkit-3.0.3 | 565 KB | ########## | 100% click-8.1.7 | 164 KB | | 0% click-8.1.7 | 164 KB | ########## | 100% click-8.1.7 | 164 KB | ########## | 100% regex-2023.10.3 | 326 KB | | 0% regex-2023.10.3 | 326 KB | ########## | 100% black-23.11.0 | 289 KB | | 0% black-23.11.0 | 289 KB | ########## | 100% black-23.11.0 | 289 KB | ########## | 100% prompt_toolkit-3.0.3 | 5 KB | | 0% prompt_toolkit-3.0.3 | 5 KB | ########## | 100% traitlets-5.7.1 | 205 KB | | 0% traitlets-5.7.1 | 205 KB | ########## | 100% traitlets-5.7.1 | 205 KB | ########## | 100% exceptiongroup-1.0.4 | 29 KB | | 0% exceptiongroup-1.0.4 | 29 KB | ########## | 100% Preparing transaction: ...working... done Verifying transaction: ...working... done Executing transaction: ...working... done Retrieving notices: ...working... done
... View more
01-03-2024
01:03 PM
|
0
|
1
|
759
|
BLOG
|
This script didn't work on ArcGIS Pro 3.1.3. I suppose it's mostly because the modules in Python 3.X are now different. It would be nice to have it upgraded 🙏. However, I did find a cool video using FME tools How Do You Get 30K Photo Attachments Out of ArcGIS Enterprise or ArcGIS Online? - YouTube, for those that have a Data Interoperability extension. I don't usually work with this extension so I didn't understand all the nuances. Yet, I followed the steps from the video and it extracted the photo attachments from my hosted feature layer from Portal. It did take me all day to figure it out 😵. I'm still struggling to create the Excel spreadsheet 😣. If someone does figure the spreadsheet out...poke me and let me know. Spread the knowledge!
... View more
10-25-2023
06:12 PM
|
3
|
0
|
4880
|
POST
|
Thanks for the script @mpboyle . Yet, last line I had to manually input because when copying and pasting I must have carried a hidden character and it would run.
... View more
09-28-2023
12:15 PM
|
0
|
0
|
688
|
BLOG
|
Please be gentle as I'm no programmer, yet I'm trying to learn and understand. Question: How is this tool different from the script I found, other than the obvious fact it was meant to work with ArcMap 10.8? https://enterprise.arcgis.com/en/server/10.8/administer/windows/example-export-service-statistics-to-a-file.htm Can't we just convert this to Python 3.x and run it on Task Scheduler? I would like to import keyring module to load profiles in order to protect passwords from being included in the script. I have no idea how to do this yet, but I'm open to suggestions. Thanks.
... View more
09-21-2023
05:30 PM
|
0
|
0
|
2249
|
BLOG
|
I'm actually participating in the Mapping the Local Landscape Summer Institute for High School Teachers & Community College faculty at Portland Community College next week. This will come in handy for those educators seeking to teach GIS in their classrooms. Thanks so much for the info. I'll surely pass it along.
... View more
07-26-2023
09:51 AM
|
0
|
0
|
211
|
IDEA
|
An EMS jurisdictional solution would be nice. There are many situations in which calls get routed to the nearest EMS or Fire station, yet, they belong to different jurisdictions. Thus, the rates for services are calculated differently. So, having a map/dashboard depicting where the calls came from and the overall cost for calls outside jurisdictional areas would be nice.
... View more
07-24-2023
08:15 AM
|
0
|
0
|
606
|
IDEA
|
The National Emergency Medical Services Information System (NEMSIS) is part of the National Highway Traffic Safety Administration Office of Emergency Medical Services (EMS). This national system is used to collect, store and share EMS data from all fifty states and territories. The system's primary goal is to improve prehospital patient care by using standardization, aggregation, and point-of-care EMS data at all levels of government. Hence, although ESRI developed Fire and EMS solutions, I'm not seeing them in the list of companies seeking V3 compliance. Why is this not a goal for ESRI? ESRI has been pretty good at being very proactive in adopting standards for every industry. However, I wonder why it's lagging behind in this very important area, especially after the pandemic. I can't endorse any ESRI solution to my current Fire Department because it is not NEMSIS V3 compliant. So, please start either developing solutions with NEMSIS V3 standard in mind or, start partnerships with major vendors to integrate GIS Fire and EMS solutions into their software. You've done with everyone else. Why not with EMS? Thanks.
... View more
07-20-2023
04:23 PM
|
1
|
2
|
703
|
POST
|
@MobiusSnake I did navigate to the GDB_ITEMTYPES but no specific history information that I could see. However, I appreciate the input. Thanks.
... View more
07-05-2023
09:10 AM
|
0
|
1
|
612
|
POST
|
I have perhaps an unusual request. So bear with me. I am attempting to write a Python 3 script that will list all domain names from my enterprise geodatabase that start with the letter "e", as well as their domain type, code/min, and description/max, and have them saved in a log file (.csv and .xlsx). At the same time, I also want to capture in another log file the history of only those domains that were altered (e.g., deleted, added, changed, etc.) and when it happened. Here is my three-part question: 1. Does ESRI system tables (SQL Server 2019) keep track of when domain changes happen and what those changes were? 2. Can a Python 3 script retrieve that info from system tables? 3. Is there another way to go about this? The following code doesn't really give me what I need. Instead, it gives me a list of all the domains that start with "e" yet it adds the date of when I ran the script and not the date when I actually altered the domain. Plus, it doesn't add the header "Date_Modified_2" inside my log file. See attached log file (.csv). I want it to write: DOMAIN_NAME,DATE_MODIFIED,DATE_MODIFIED_2 eGuyType,2023-06-27 13:30:08.858138 eDeviceMounting,2023-06-27 13:30:08.858138,2023-06-29 15:20:00.590812 ePhase,2023-06-27 13:30:08.858138,2023-06-29 15:20:00.590812 eSecConductorType,2023-06-27 13:30:08.858138 eSwitchState,2023-06-27 13:30:08.858138,2023-06-29 15:20:00.590812 eImpedanceUnits,2023-06-27 13:30:08.859136,2023-06-29 15:20:00.590812 eConnectionTypeWyeDelta,2023-06-27 13:30:08.859136,2023-06-29 15:20:00.590812 eSecondaryType,2023-06-27 13:30:08.859136,2023-06-29 15:20:00.590812 ePrimaryType,2023-06-27 13:30:08.859136,2023-06-29 15:20:00.590812 eMountType,2023-06-27 13:30:08.859136 Thanks. import arcpy
import csv
from openpyxl import Workbook
from openpyxl.styles import Font
import datetime
gdb = r"E:\SDE\OWNER_PROD.sde"
xlsx_filepath = r"E:\ScriptLogs\ExportDomains.xlsx"
csv_filepath = r"E:\ScriptLogs\ExportDomains.csv"
modification_table_csv = r"E:\ScriptLogs\LPDomainHistory.csv"
modification_table_xlsx = r"E:\ScriptLogs\LPDomainHistory.xlsx"
domains = arcpy.da.ListDomains(gdb)
wb = Workbook()
ws = wb.active
# Write the header for domain list in Excel file
header_xlsx = ["DOMAIN_NAME", "DOMAIN_TYPE", "CODE/MIN", "DESCRIPTION/MAX"]
ws.append(header_xlsx)
header_font = Font(bold=True)
for cell in ws[1]:
cell.font = header_font
# Write the header for the CSV file
header_csv = ["DOMAIN_NAME", "DATE_MODIFIED"]
# Read existing modification dates from the CSV file
modification_dates = {}
if arcpy.Exists(modification_table_csv):
with open(modification_table_csv, 'r') as csv_file:
reader = csv.reader(csv_file)
headers = next(reader) # Get the headers
for row in reader:
domain_name = row[0]
modification_dates[domain_name] = row[1:]
# Capture domain modification information
for domain in domains:
if domain.name.startswith("e"):
if domain.domainType == 'CodedValue':
coded_values = domain.codedValues
if domain.name in modification_dates:
if modification_dates[domain.name][0] != str(coded_values):
modification_dates[domain.name].append(str(datetime.datetime.now()))
else:
modification_dates[domain.name] = [str(coded_values), str(datetime.datetime.now())]
for val, desc in coded_values.items():
ws.append([domain.name, "Coded", val, desc, ""])
else:
range_min = domain.range[0]
range_max = domain.range[1]
if domain.name in modification_dates:
if modification_dates[domain.name][0] != str(domain.range):
modification_dates[domain.name].append(str(datetime.datetime.now()))
else:
modification_dates[domain.name] = [str(domain.range), str(datetime.datetime.now())]
ws.append([domain.name, "Range", range_min, range_max, ""])
# Save the workbook including both the domains and modification dates
wb.save(xlsx_filepath)
# Save the modification history to the CSV file
with open(modification_table_csv, 'w', newline='') as csv_file:
writer = csv.writer(csv_file)
writer.writerow(header_csv)
for domain_name, modification_dates_row in modification_dates.items():
row_data = [domain_name] + modification_dates_row
writer.writerow(row_data)
# Append the new modification dates to the CSV file
header_csv_dict = {}
with open(modification_table_csv, 'r') as csv_file:
reader = csv.reader(csv_file)
headers = next(reader) # Get the headers
for i, header in enumerate(headers):
header_csv_dict[header] = i
if len(modification_dates) > 0:
for domain_name in modification_dates:
if domain_name not in header_csv_dict:
header_csv.append(f"DATE_MODIFIED_{len(header_csv) - 1}")
with open(modification_table_csv, 'a', newline='') as csv_file:
writer = csv.writer(csv_file)
for domain_name, modification_dates_row in modification_dates.items():
row_data = [domain_name] + modification_dates_row
writer.writerow(row_data)
# Convert the CSV file to Excel format
wb_csv = Workbook()
ws_csv = wb_csv.active
with open(modification_table_csv, 'r') as csv_file:
reader = csv.reader(csv_file)
for row in reader:
ws_csv.append(row)
wb_csv.save(modification_table_xlsx)
... View more
06-29-2023
06:37 PM
|
0
|
3
|
729
|
POST
|
@kapalczynski I piecemeal solutions from different sources; you might want to check them out. https://community.esri.com/t5/arcgis-api-for-python-questions/unable-to-protect-credentials-by-storing-them/m-p/810024#M2424 I also would like to add that to set a password using keyring I ran Python Interactive Terminal (C:\Program Files\ArcGIS\Pro\bin\Python\Scripts\propy.bat) and followed the instructions on this video https://www.youtube.com/watch?v=lLMhq3c_YQk. This is what I came up with: import keyring
from arcgis.gis import GIS
from arcgis.gis.server import Server
# Specify the name of the profile
profile_name = "GIS_Admin" # Replace with your profile name
# Get username and password stored in keyring
credentials = keyring.get_credential("keyring_portaladmin", username=None)
vusername = credentials.username
vpassword = credentials.password
# Connect to the ArcGIS Portal using the specified profile
gis = GIS(url="https://your.domain.com", username=vusername, password=vpassword,profile=profile_name)
# Check if the connection is successful
if gis:
print("Connected to ArcGIS Portal as '{}'.".format(gis.properties.user.username))
else:
print("Failed to connect to ArcGIS Portal.")
... View more
06-01-2023
05:41 PM
|
0
|
0
|
382
|
IDEA
|
@LanceCole can you try a distributed collaboration? I house aerials on AGOL and then through distributed collaboration I share them with our Enterprise Portal with a built-in user account.
... View more
05-31-2023
05:31 PM
|
0
|
0
|
571
|
POST
|
Latest and greatest script to download: https://www.arcgis.com/home/item.html?id=54e8aab14f6e4c61b65b9dd9ab451503 Hope it helps.
... View more
01-18-2023
06:23 PM
|
0
|
0
|
593
|
POST
|
Sorry for the late reply but this might help you or at least give you some pointers. Outside the community: https://www.spatialtimes.com/2019/09/python-script-to-overwrite-existing-service-in-arcgis-server/ Community Post: https://community.esri.com/t5/python-questions/how-to-published-mxd-to-overwrite-existing-service/td-p/144092#comment-578194 This is for use in ArcPro but it may help guide you. https://www.arcgis.com/home/item.html?id=54e8aab14f6e4c61b65b9dd9ab451503
... View more
01-18-2023
06:19 PM
|
0
|
0
|
1051
|
BLOG
|
Hear, hear! You all are awesome! Most recently, @JohannesLindner .
... View more
01-17-2023
02:50 PM
|
9
|
0
|
6138
|
Title | Kudos | Posted |
---|---|---|
3 | 10-25-2023 06:12 PM | |
1 | 07-20-2023 04:23 PM | |
1 | 05-31-2023 05:18 PM | |
1 | 04-27-2022 07:52 AM | |
9 | 01-17-2023 02:50 PM |
Online Status |
Offline
|
Date Last Visited |
07-10-2024
05:43 PM
|