|
POST
|
Hayden, Nope, both map and data are in the exact same coordinate system (NAD 1983 StatePlane Illinois East FIPS 1201 (US Feet); WKID 3435). Everything related to this project was in the same coordinate system. Again, I'm not entirely sure what the issue is, it appears on the surface to be how the Desktop GUI software is interpreting certain values vs. what is either stored in GDB and accessed by python or how the python interface is interpreting the data. Basically the Desktop GUI will read and write the whole number 41618.00, but the python interface interprets that as 41617.99235 either because that's what is stored in the GDB / geometry or something else entirely.
... View more
11-04-2025
09:52 AM
|
1
|
1
|
752
|
|
POST
|
Hayden, Yes, I checked both the coordinate systems and they are the same. I also tested the geodesic parameter and that also did not resolve the issue (it didn't seem to affect the result in any meaningful way; not sure if it's a scale thing). I'm also not sure if it's a precision thing between what is stored in the geodatabase and what is being read by python. When attempting alter a point's M value from 41617.703125 to 41618.0 using the regular GP tools, the M value will read the appropriate whole number, but when querying the point via arcpy, it will return a floating point number (e.g. 41617.99328513). In any case, I was able to build a workaround for this issue by creating an Event Table, populating it with the routes and M values needed, and then using the GP tool "Make Route Event Layer". This created the necessary points along each route at the intended locations. My unfamiliarity with the available linear referencing GP tools in ArcGIS Pro caused me to not read into it deeply enough.
... View more
11-04-2025
07:23 AM
|
1
|
3
|
760
|
|
POST
|
I'm not sure that's necessarily the issue though. I believe the issue I am running into is due to the fact the first point's M value is a float value and not an int (whole) number; the first point's M value in the polyline is 41617.703125. The next nearest M value along the line divisible by 100 should be found using the following method: 100 - (first point M value % 100) --> 100 - (41617.703125 % 100) --> 82.296875 --> lineFeature.positionAlongLine(82.296875) --> should return point at M value 41700.00 (but doesn't). Is there a level of imprecision that this geometry function has baked in? Are their differences between what an M value is and what is returned by positionAlongLine function (i.e. can't use the return of the modulo as its calculated based on M value as the "measure" distance value in the function)? Using your suggestion of casting the return from the modulo line from float int did not resolve the issue. The updated function below: #AGOL community post function:
def get_measures(in_lines: str, out_points: str, measure: int=100):
with(
arcpy.da.SearchCursor(in_lines, ['OID@', 'SHAPE@']) as line_cur,
arcpy.da.InsertCursor(out_points, ['OID@', 'SHAPE@']) as point_cur
):
for oid, line in line_cur:
oid: int
line: arcpy.Polyline
#name = line[1]
fp = arcpy.PointGeometry(line.firstPoint, line.spatialReference)
lp = arcpy.PointGeometry(line.lastPoint, line.spatialReference)
point_cur.insertRow((oid, fp))
first_meas = 100 - int((line.firstPoint.M % measure))
for m in range(int(first_meas), int(line.length), measure):
point_cur.insertRow((oid, line.positionAlongLine(m)))
point_cur.insertRow((oid, lp)) The results:
... View more
11-03-2025
01:22 PM
|
1
|
5
|
770
|
|
POST
|
@HaydenWelch, thanks for the reply. Unfortunately, neither code block was the solution to my problem; I also tried your comment from the addendum and this also was not the solution. Below are two screenshots that show the results of the suggestions you provided. The first screenshot shows the results of the code block without the addendum suggestion (both the longer one and the simplified one). The second screenshot is with the added addendum suggestion. The red labeling in both screenshots is the "Measure" or M value's as derived from the line for each point while the black labeling M values needed. Basically the points need to be exactly in the location of the lines labeled station points/tick marks. As you can see from the first screenshot, just the code block as is (no addendum / modulo), the created points do not fall at the correct interval and are instead at 100 ft intervals starting from the 1st point. The second shot shows that the included addendum gets closer to the solution, but still does not get the exact measures/locations needed (see red labeling vs. black labeling). From my own testing and python hacking, I originally came to the same conclusion as you regarding the use of the modulo (line.firstPoint.M % measure), but ultimately the results of my own python code block were about the same as the second screenshot. What I was finding though was after returning the first point after the starting point that has an M value divisible by 100 (use the modulo method), the value needed to measure along line (use positionAlongLine function; line 12 and 13) did NOT find a point at the location on the line where the stationing / M value was a value divisible by 100 even though the "dist_to_meas" value + firstPoint.M == M value divisible by 100 (EX: 41700). I'm not sure if its a geometry thing or spatial reference/coordinate system thing, but I couldn't figure out the correct method to find the "dist_to_meas" value to use in the positionAlongLine function that would return a point at the exact station / M value needed. My Code Block: #lines_data --> list/array of line data as pulled using SearchCursor
for line in lines_data:
pts_array = [] #empty array to store points
line_geo = line[-1] #get line geometry
firstPoint = line_geo.firstPoint #get first point in line
firstPoint_M = firstPoint.M #get first point station val
lastPoint = line_geo.lastPoint
lastPoint_M = lastPoint.M
pts_array.append(firstPoint)
pts_array.append(lastPoint)
#needs to be exact
dist_to_meas = 100 - (firstPoint_M % 100) #find distance till next station divisible by 100
nextPt = line_geo.positionAlongLine(dist_to_meas,False) #returns point geometry
pts_array.append(nextPt[0])
interval = nextPt[0].M #starting measure
#print(interval)
while interval < lastPoint_M:
interval += 100
dist_to_meas += 100
#print(interval)
nxtPt = line_geo.positionAlongLine(dist_to_meas,False)
pts_array.append(nxtPt[0]) Code Block as-is: Code Block w/ Addendum (modulo):
... View more
11-03-2025
07:30 AM
|
1
|
7
|
784
|
|
POST
|
Hello, I'm hoping that someone smarter than me can possibly assist me devising a code snippet to generate points along a line (specifically a "route" line; a line with M values) at a given interval (100 ft). I am basically trying to replicate the labeling from "route" line layer that is visible in ArcGIS Pro using point features so that I may use the point features in ArcGIS Online (as it seems M aware features/functionality in AGOL are not supported). I know the GP tool "Generate Points Along Line" currently performs this action and works well for a portion of my data where the initial M value (stationing) is a whole number divisible by 100 (EX: 41700, 86000, etc.). Where the issue occurs though is when the initial M value (stationing) is NOT divisible by 100 (41618, 87224, etc.). Using the GP tool causes an offset from the desired "100 ft interval" due to the initial M value (stationing) not starting at a value divisible by 100. Below screenshot was created using existing GP tool. Basically, when the initial M value is divisible by 100, sequence would read for example: 41700, 41800, 41900, etc. But, when the initial M value is NOT divisible by 100, sequence would read for example: 41618, 41718, 41818, etc. How can I create points at the beginning and end of line as well as at every 100ft interval where the M value (stationing) of the point is divisible by 100. For example ideal output stationing: 41618, 41700, 41800, 41900,...,45000,45100,45121.
... View more
10-31-2025
09:10 AM
|
0
|
10
|
962
|
|
POST
|
David - This is an interesting workflow. Would you mind going into more detail about this workflow? The basics of what I am trying to achieve is send updates that are made to certain datasets internally (cadastral data) to an AGOL hosted feature layer regularly via the distributed collaboration workspace. I would like to avoid sharing services from the production SQL server into the workspace and instead share services from the publication SQL server, but this may not be feasible based on your comments. Basically, I am trying to leverage AGOL hosting certain datasets that are in high demand to reduce load on our standalone ArcGIS Server site that would normally host this data.
... View more
10-08-2025
06:24 AM
|
0
|
1
|
681
|
|
POST
|
Timo, The only other thing I will add regarding this is that we do not currently have "replica tracking" enabled on the feature datasets/feature classes we are trying to share into the workspace. While I'm not entirely sure that this is the reason for the issue, it is another configuration option I need to look into. Upon initial testing, it didn't appear that not having "replica tracking" enabled mattered, but reading into the ESRI documentation a bit further makes it sound like it may be necessary. I also found a different ESRI Community post discussing what happens behind the scenes when "replica tracking" is enabled. Replica Tracking GP tool: https://pro.arcgis.com/en/pro-app/3.4/tool-reference/data-management/enable-replica-tracking.htm Replica Tracking behind the scenes info: https://community.esri.com/t5/arcgis-pro-questions/enable-replica-tracking/td-p/1382804
... View more
10-01-2025
05:37 AM
|
0
|
0
|
757
|
|
POST
|
Timo, A couple answers to your questions and comments: I believe your Version Creation setting should be set to “Create a version for each downloaded map.” I have tested this and I do not believe the configuration is necessary even for a branch versioned database. I was able to successfully publish, share to the collaboration (with AGOL creating the hosted "copy" layer), make an edit in the Portal layer, and sync the workspace successfully. With your initial successful syncs, are they only for newly published feature services that haven’t been shared to the collaboration workspace? Yes, I did not test this workflow using another already published feature service. I did not want to use the production Parcel Fabric feature service to test this against and we do not have any other feature services in our publication side to test against. What happens if you sync the feature layer twice on the same day, before the nightly replicate/copy process runs? If your theory is correct, the sync should work both times since the replica would still be in place. Ensure there is a change in the feature layer before doing the re-sync test. If I sync the feature service twice on the same day, it works fine and is able to successfully sync. Even when performing an edit on the Portal side, the edit does come through on the AGOL side (as long as its within the same day). What error messages appear in the sync status collaboration logs? You can find these at /portal/sharing/rest endpoint > Home > Portals > Self > Collaborations > [COLLABORATION-ID] > Workspaces > [WORKSPACE-ID] > Sync Status The message from the "Sync Status" page: Unable to sync item '46bb45cb5a0f4086b40bf2e0e4de77e9'. Error retrieving Sync info or replicas for peer 'neJvtQ4PXvnQ86MJ'. Cross checking your sync status logs, are your initial successful syncs real-time or scheduled syncs? The interesting thing about the real-time vs. scheduled sync, is that even on an initial sync, the workspace tries to perform both the real-time and scheduled sync. I'm not sure if that's intended or if I just set up the workspace incorrectly, but on the initial sync it will attempt both and one will inevitably fail (because its trying to create two AGOL layers with the same ID). After the initial sync though, its fine and the scheduled sync that is performed on the same day succeeds, but any subsequent syncs on following days fails.
... View more
09-29-2025
06:26 AM
|
0
|
2
|
801
|
|
POST
|
I am looking for some guidance or confirmation on an error I have been encountering when attempting to sync a workspace that participates in a distributed collaboration between our Orgs. Portal and AGOL sites. Basically, we are attempting to share Portal feature services (where the data is hosted in our MSSQL Server) to AGOL as hosted feature services; the AGOL hosted feature service would be a "copy" of the Portal feature service. Some additional background: The feature service / data we are attempting to share is originates from a Parcel Fabric enabled database. Our MSSQL server has two instance, a production (editing) and publication instance. Every night our production instance is replicated/copied and overwrites our publication instance. The feature services I am trying to share to the collaboration are built using data from the publication instance. When we try to sync the workspace immediately after the feature service is published and shared (same day), the sync completes successfully. When we try to sync the workspace the next day, the sync fails. I am wondering if the nightly replicate / copy routine, where the production instance of the database is replicated / copied and overwrites the publication instance of the database, is breaking/blowing away the "replica" that is created by the collaboration/sync process. Thus when the workspace sync is executed the same day the feature service is published/added to the workspace, the workspace has no issue syncing the content, but when the sync is executed the following day (or any day after) the sync fails due to no reference of the "replica" in the database. The specific error I am receiving from the Portal Admin logs is: "Failed to obtain sync/replica info for Feature Service item 'ITEMID', URL 'PORTALURL/arcgis/rest/services/FeatureServiceName/FeatureServer' while collecting item list for collaboration workspace id 'WORKSPACEID'. Item exists but will not be synchronized." Is there a way to confirm that a replica has been created at the database level (in SQL Server)? Is there a way to confirm my theory about the replica being broken/blown away by our nightly SQL replicate/copy routine? Infrastructure Configuration: Using ArcGIS Enterprise 11.3 Enterprise Geodatabase version 11.3.0.52636 SQL Server version 2022 Collaboration & Workspace Configuration: Distributed Collaboration with AGOL site as HOST and Portal site as GUEST. Workspace set as SEND ONLY (from Portal to AGOL). Workspace set with "Feature layers and views in my portal are sent as 'COPIES'". "If unable to share as copies share as references" is UNCHECKED. Portal Feature Service Configuration: Geodatabase workspace set to "Branch Version". Version Management UNCHECKED. Editing "Enabled" (Add, Delete, Update). Enabled Sync CHECKED. Sync - Version Creation --> NONE.
... View more
09-26-2025
06:35 AM
|
0
|
7
|
927
|
|
POST
|
Denis, was ESRI technical support ever able to give you an answer about why restarting the DynamicMappingHost service resolved the issue or did they provide you a long term solution if this continues to occur?
... View more
08-13-2025
02:36 PM
|
0
|
1
|
778
|
|
POST
|
Looking for some in sight. We have a number of Quickcapture projects deployed and a number of staff using them on a daily basis. Was looking to see if it is possible to change the default font size of the question text when collecting data. Basically, the font size of the questions (after a capture event has been initiated) is too small for a handful of our staff. It seems that it is possible to alter the group heading and button text font sizes, but not the question text font size (after a capture event has been initiated). Am I missing something from the Quickcapture project designer or is this a current limitation?
... View more
08-07-2025
11:28 AM
|
0
|
1
|
228
|
|
POST
|
I am looking to generate a variety of drive time polygons using ESRI's road network data for a project, but want to verify if a subset of roads in my project area will be considered in the analytics. Is there a list/map/dataset that will inform me about what roads/segments are contained within ESRI's road network dataset and are used in a drive time analysis using ESRI's data? The only information regarding "coverage" I could find was here: https://developers.arcgis.com/rest/routing/network-coverage/
... View more
06-06-2025
12:16 PM
|
0
|
0
|
277
|
|
POST
|
@GlenterpriseUK I have not seen this article before. Looking into the details of the article and comparing other cached tile services we have published (that are not experiencing this issue), this "Dynamic Layers" setting is enabled for these other services. Not sure if it matters, but the other services were originally published with ArcMap (and upgrade to the ArcGIS Pro runtime through AGS manager), while the service with the issue was originally published from ArcGIS Pro. One thing I have noticed when comparing the service with the issue vs. other similar cached tile services, the service with the issue does not have a fully populated "caching" page. I believe this information is populated from one of the "config" files (conf.xml, conf.cdi, conf.properties), but its unclear if these are the issue or not. Does the error message log in the log file provide any information? The "Missing parameter: MapName" is throwing me for a loop.
... View more
02-10-2025
09:28 AM
|
0
|
0
|
842
|
|
POST
|
@GlenterpriseUK The service uses Dedicated instances and caching is from a tile cache stored on a file server. This service was also published using ArcGIS Pro.
... View more
02-10-2025
08:52 AM
|
0
|
2
|
851
|
|
POST
|
The service as it stands does not allow the end user to visualize the data at all scales. We do not have multiple sets of contours, just the 1ft contours. This could potentially be a solution to use the standard service, but I am still looking for any insight regarding the error messaging / log file from ArcGIS Server. The error code/text is fairly generic and any googling I have done has not been very helpful.
... View more
02-10-2025
08:25 AM
|
0
|
0
|
861
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 11-04-2025 09:52 AM | |
| 1 | 11-04-2025 07:23 AM | |
| 1 | 11-03-2025 01:22 PM | |
| 1 | 11-03-2025 07:30 AM | |
| 1 | 01-23-2025 12:39 PM |
| Online Status |
Offline
|
| Date Last Visited |
Thursday
|