|
POST
|
You have a 3 lines with an empty geometry. Use the Original Global ID in the error report to find these features and remove them or find a way to add geometry to them.
... View more
09-29-2022
03:06 AM
|
3
|
0
|
5412
|
|
POST
|
We need to see the error message to know how to fix it. If it is in the lower corner, it could be a Junction or Edge Object in error that is not locatable. You can run this tool to get some more info about the error: https://esri.github.io/Utility-Data-Management-Support-Tools/docs/2.9/SummarizeUNErrors.html from this toolbox https://github.com/Esri/Utility-Data-Management-Support-Tools/blob/2.9/UtilityDataManagementSupport.atbx
... View more
09-29-2022
02:14 AM
|
0
|
3
|
5419
|
|
POST
|
Yes this is possible. Features - You can use the Append GP tool, Insert Cursor or the Python API. This will make the appropriate Apply Edits calls. You might have to use the python API though, if you are defining the Global ID on the data and want to preserve them when you are inserting the records. The UseGlobalIDs value needs to be set to True - https://developers.arcgis.com/rest/services-reference/enterprise/apply-edits-feature-service-.htm#GUID-9B06B945-2681-4E32-BEC0-E8B6CB5F6387 If you want to load into a version, it gets a little more complicated, but can be done. Terminals Connections - These are just attributes on lines, nothing special to do to set these. Associations - Through services, you will add associations via the association table and the apply edits capability. You will insert rows just like they are features. This table is hidden with you look at the rest page, but it is at layer id 500001. To find all the UN hidden tables, you need to look at the json of the Utility Network layer in the feature service. MikeMillerGIS_0-1664354358118.png Controllers - Same answer as associations, but 500001 I had this code laying around to delete features, figured you might find it useful and you can repurpose for the inserts. This shows two different ways to edit feature services the most efficient way. def _delete_service_rows(self, layer):
""" arcpy.DeleteRows against a feature service runs significantly faster inside an edit session, but at 2.9.x
sends chunks of 1000, to overcome this, we can use an update cursor and edit session to control the chunk
size """
chunk_size = 250
d = arcpy.Describe(layer)
fs = os.path.dirname(d.catalogPath) # cannot lru_cache a Layer object
arcpy.SetProgressor(type='STEP', message=f'Removing data on {d.aliasName} - 0/{self.layer_count}', min_range=0, max_range=self.layer_count)
with arcpy.da.UpdateCursor(layer, ['OID@']) as ucurs:
edit = arcpy.da.Editor(fs)
edit.startEditing(False, False)
edit.startOperation()
for i, row in enumerate(ucurs, 1):
ucurs.deleteRow()
if i % chunk_size == 0:
logger.debug(f'{i}: {datetime.datetime.now()}')
edit.stopOperation()
edit.stopEditing(True)
arcpy.SetProgressorLabel(f'Removing data on {d.aliasName} - {i}/{self.layer_count}')
arcpy.SetProgressorPosition(i)
edit.startEditing(False, False)
edit.startOperation()
edit.stopOperation()
edit.stopEditing(True)
def _delete_service_rows_API(self, layer):
""" using the python api to delete feature removes a series of queries and creates an optimized delete payload """
from arcgis.features import FeatureLayer
from arcgis.gis import GIS
import arcpy
import datetime
chunk_size = 250
import itertools
gis = GIS("pro")
def chunks(iterable, size):
it = iter(iterable)
chunk = list(itertools.islice(it, size))
while chunk:
yield chunk
chunk = list(itertools.islice(it, size))
d = arcpy.Describe(layer)
with arcpy.da.SearchCursor(layer, ['OID@']) as curs:
oids = list(curs)
fl = FeatureLayer(d.catalogPath, gis=gis)
arcpy.SetProgressor(type='STEP', message=f'Removing data on {d.aliasName} - 0/{self.layer_count}', min_range=0,
max_range=self.layer_count)
for i, chunk_oids in enumerate(chunks(oids, chunk_size), 1):
arcpy.SetProgressorLabel(f'Removing data on {d.aliasName} - {i * chunk_size}/{self.layer_count}')
fl.edit_features(deletes=','.join([str(oid[0]) for oid in chunk_oids]))
logger.debug(f'{i}: {datetime.datetime.now()}')
... View more
09-28-2022
01:48 AM
|
2
|
2
|
3217
|
|
POST
|
This is one example, where the default path is None, so it is essentially a barrier MikeMillerGIS_0-1664296695529.png
... View more
09-27-2022
09:38 AM
|
0
|
0
|
1273
|
|
POST
|
I reviewed the Utility Network in that lesson. It is in an odd/corrupt state. The Duct Asset Group has Asset Types defined in the Utility Network that do not exist in the AssetType domain assigned to that asset group. I did not review the others, but assume they are in a similar state. If you need an electric model, I suggest you look at the https://doc.arcgis.com/en/arcgis-solutions/latest/reference/introduction-to-electric-utility-network-foundation.htm
... View more
09-27-2022
07:01 AM
|
1
|
3
|
1512
|
|
POST
|
Find connected does not honor terminals. So I would start there. Ensure the terminals and terminal paths are set correctly on that feature. Is the Terminal Path set to Default? If so, what is the default terminal path assigned to that terminal configuration?
... View more
09-26-2022
01:14 PM
|
0
|
2
|
1320
|
|
BLOG
|
Jens, The entries are only evaluated when unchecked. So you are telling the system what category to evaluate by unchecking it, not checking it. I know if is reverse of the way we normally think about options. We usually check options to evaluate, but in this case, we uncheck them.
... View more
09-26-2022
02:01 AM
|
1
|
0
|
4074
|
|
POST
|
Jimmy, Interesting idea. What if you did it the other way. Null Network Attribute get a pass. So why not make a nullable field with one value, 0 = Barrier. Then use an attribute rule to set that on items that should be barriers. This could evaluate a number of fields, lifecycle, status, etc. We need to make sure network attributes like these are inline to reduce database queries. This would allow us to use a number of fields that determine if an item is a barrier or not and use a simple single value network attribute field.
... View more
09-15-2022
05:12 PM
|
0
|
1
|
1806
|
|
POST
|
The utility network is not supported in ArcGIS Online or a hosted service in Portal.
... View more
09-08-2022
01:41 PM
|
1
|
0
|
984
|
|
POST
|
Can you zip up your GDB and share it so we can try?
... View more
09-02-2022
06:10 AM
|
0
|
0
|
4680
|
|
POST
|
That stinks! What if you use the Expects($feature,'*') and then loop over the feature, does that return all the fields? I would caution against this if it works as the labeling engine will returning a full row.
... View more
08-31-2022
06:19 AM
|
2
|
0
|
3979
|
|
POST
|
Subtypes - You can translates the source subtypes to match the target subtypes as part of the migration. If you cannot find a match for a source subtype, it will need to be added to the target model, which means you need to add rules and update the subnetwork definition. It would be good to get the list of values that do not have a match in the Asset Package so we can evaluate adding them to a future release Unit of Measure - I would add a new field and new domain for the metric units or modify the domain of target asset package to represent the metric units and map that data to that field. I would do this prior to loading data
... View more
08-31-2022
05:50 AM
|
1
|
1
|
1840
|
|
POST
|
What about using the Schema function? var fields = [];
var values = [];
var all_fields = Schema($feature)['fields'];
for (var i in all_fields){
var field_dict = all_fields[i]
var x = field_dict['name']
Push(fields,x)
push(values, $feature[x])
}
return values
... View more
08-31-2022
05:39 AM
|
1
|
1
|
3984
|
|
POST
|
$feature is iterable, which each iteration is a field. This might help * Edit, I think using the Schema function is safer, updated code to use it instead of looping over $feature var fields = [];
var values = [];
var all_fields = Schema($feature)['fields'];
for (var i in all_fields){
var field_dict = all_fields[i]
var x = field_dict['name']
Push(fields,x)
push(values, $feature[x])
}
return values
... View more
08-31-2022
05:34 AM
|
2
|
2
|
2415
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 2 weeks ago | |
| 1 | 2 weeks ago | |
| 1 | 3 weeks ago | |
| 2 | 07-07-2026 06:45 AM | |
| 1 | 06-26-2026 09:15 AM |
| Online Status |
Offline
|
| Date Last Visited |
2 weeks ago
|