Select to view content in your preferred language

Enable Topology - ERROR 160587: Null geometries not allowed.

712
2
Jump to solution
09-10-2023 04:12 AM
AnthonyRyanEQL
Frequent Contributor

Hi there,

I have a UNM V3 electric & comms networks on ArcGIS Enterprise 10.8.1 + UN Patch 10 with SQL Server 2017 AWS RDS. The electric model needs to be changed to add a new Asset Type for Electric Device. At the moment, I am testing the amount of time it takes to disable & enable topology in a non PRD environment in preparation for a PRD release. Disable topology has worked. Started on the Enable Topology but now getting this Error 160587: Null geometries not allowed after 52hours running.

I have ran a bunch of SQL over the database to see what null geoms are present in Default (Branch ID=0) across all 3 domains and haven't found any.

The python i'm running is arcpy.un.EnableNetworkTopology(un, 1000000, "ENABLE_TOPO") on an EC2 with ArcGIS Pro 2.9.8 installed on Win Server 2016 Datacentre. There is plenty of disc space free (approx 180Gb).

UN properties are UNM 3, ArcGIS Pro release 2.5 & Upgraded is blank.

Has anybody come across this error before? Thanks

0 Kudos
1 Solution

Accepted Solutions
MikeMillerGIS
Esri Frequent Contributor

This looks like 

bug-000137860

https://support.esri.com/en-us/bug/association-records-in-which-the-parent-or-the-child-fe-bug-00013...

The page might not work, as we need to update it, but here is the listed workaround and details:

Association records in which the parent or the child features do not exist in the DEFAULT version leads to Enable Network Topology crashing or returning a misleading error.

Workaround
Use SQL to determine which associations are orphaned, and then clean them up via the feature service using ArcGIS Pro:

1) Identify all unique networksourceid values present in the associations table, e.g.

select distinct fromnetworksourceid from <OWNER>.un<_DSID_>associations where GDB_BRANCH_ID = 0

select distinct TONETWORKSOURCEID from <OWNER>.un<_DSID_>associations where GDB_BRANCH_ID = 0

2) Use the <UN name>_<UN_ID>_FeatureSourceID coded value domain to determine which feature classes/internal UN tables to which these networksourceid values correspond

3) Use nested SQL statements to search for any globalids that exist in the associations table, that DO NOT exist in the corresponding networksourceid table, e.g.

--default only from network source id

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and fromnetworksourceid = 6 and fromglobalid not in (select globalid from <OWNER>.<DOMAINNAME>DEVICE where GDB_BRANCH_ID = 0)

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and fromnetworksourceid = 8 and fromglobalid not in (select globalid from <OWNER>.<DOMAINNAME>ASSEMBLY where gdb_branch_id = 0)

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and fromnetworksourceid = 9 and fromglobalid not in (select globalid from <OWNER>.<DOMAINNAME>JUNCTION where gdb_branch_id = 0)

--default only to network source id

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and TONETWORKSOURCEID = 6 and TOGLOBALID not in (select globalid from <OWNER>.<DOMAINNAME>DEVICE where GDB_BRANCH_ID = 0)

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and TONETWORKSOURCEID = 7 and TOGLOBALID not in (select globalid from <OWNER>.<DOMAINNAME>LINE where GDB_BRANCH_ID = 0)

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and TONETWORKSOURCEID = 9 and TOGLOBALID not in (select globalid from <OWNER>.<DOMAINNAME>JUNCTION where GDB_BRANCH_ID = 0)

4) Users have a list of objectids of associations. Delete them by adding the UN feature service to ArcGIS Pro, open the associations table, select by attributes and then delete the rows.

View solution in original post

2 Replies
MikeMillerGIS
Esri Frequent Contributor

This looks like 

bug-000137860

https://support.esri.com/en-us/bug/association-records-in-which-the-parent-or-the-child-fe-bug-00013...

The page might not work, as we need to update it, but here is the listed workaround and details:

Association records in which the parent or the child features do not exist in the DEFAULT version leads to Enable Network Topology crashing or returning a misleading error.

Workaround
Use SQL to determine which associations are orphaned, and then clean them up via the feature service using ArcGIS Pro:

1) Identify all unique networksourceid values present in the associations table, e.g.

select distinct fromnetworksourceid from <OWNER>.un<_DSID_>associations where GDB_BRANCH_ID = 0

select distinct TONETWORKSOURCEID from <OWNER>.un<_DSID_>associations where GDB_BRANCH_ID = 0

2) Use the <UN name>_<UN_ID>_FeatureSourceID coded value domain to determine which feature classes/internal UN tables to which these networksourceid values correspond

3) Use nested SQL statements to search for any globalids that exist in the associations table, that DO NOT exist in the corresponding networksourceid table, e.g.

--default only from network source id

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and fromnetworksourceid = 6 and fromglobalid not in (select globalid from <OWNER>.<DOMAINNAME>DEVICE where GDB_BRANCH_ID = 0)

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and fromnetworksourceid = 8 and fromglobalid not in (select globalid from <OWNER>.<DOMAINNAME>ASSEMBLY where gdb_branch_id = 0)

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and fromnetworksourceid = 9 and fromglobalid not in (select globalid from <OWNER>.<DOMAINNAME>JUNCTION where gdb_branch_id = 0)

--default only to network source id

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and TONETWORKSOURCEID = 6 and TOGLOBALID not in (select globalid from <OWNER>.<DOMAINNAME>DEVICE where GDB_BRANCH_ID = 0)

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and TONETWORKSOURCEID = 7 and TOGLOBALID not in (select globalid from <OWNER>.<DOMAINNAME>LINE where GDB_BRANCH_ID = 0)

select objectid from <OWNER>.un<_DSID_>associations where gdb_branch_id = 0 and TONETWORKSOURCEID = 9 and TOGLOBALID not in (select globalid from <OWNER>.<DOMAINNAME>JUNCTION where GDB_BRANCH_ID = 0)

4) Users have a list of objectids of associations. Delete them by adding the UN feature service to ArcGIS Pro, open the associations table, select by attributes and then delete the rows.

AnthonyRyanEQL
Frequent Contributor

Mike,

This solved my issue. I had 11 'from' & 16 'to' associations which either or both related features that didn't exist in the domain feature classes.

Once removed, I re-ran the enable topology process and it did complete in 22hours on our little AWS SQL Server RDS

Thanks again for the information

0 Kudos