IDEA
|
When running basic topology checks it would be nice to be able to script exceptions. If I set a no dangles rule on a road network every cul-de-sac will be an error. If it was possible to take that error point, search for features in a set distance to decide if its actually a dangle or just the end of a road, and mark as exception it would be great. No pseudo nodes has the same issue. There are all sorts of reasons for pseudo nodes in a road network such as name, ownership, surface type, or speed limit changes that all are reasons for a non intersection break in the line that could be resolved by comparing attributes between offending features and automatically marking them as exceptions.
... View more
07-27-2020
09:00 AM
|
1
|
0
|
78
|
POST
|
I actually figured out another way to do it. By feeding the promises returned by the query execution to a list and then that list into Promise.all you can make the script wait for those promises to resolve. In this case they resolve into the results objects and I could combine the results.features arrays, sort the array, and build out the menu. It blocks the code but the queries come back quick enough you don't notice. var queryTask = new QueryTask ( { url : "https://gis.baycountyfl.gov/arcgis/rest/services/ElevationCertificates/MapServer/0" } ) ; var query = new Query ( ) ; query . returnGeometry = true ; query . outFields = [ "DateIssued" , "Address" , "OBJECTID" ] ; query . where = "1=1" ; query . outSpatialReference = 3857 ; query . num = 1000 ; var certificates = [ ] ; var promises = [ ] queryTask . executeForCount ( query ) . then ( ( count ) = > { for ( var step = 0 ; step < count ; step + = 1000 ) { query . start = step ; promises . push ( queryTask . execute ( query ) ) } } ) . then ( ( ) = > { Promise . all ( promises ) . then ( ( results ) = > { for ( var i = 0 ; i < results . length ; i ++ ) { certificates = certificates . concat ( results [ i ] . features ) ; } certificates . sort ( ( a , b ) = > ( a . attributes . DateIssued > b . attributes . DateIssued ) ? 1 : ( a . attributes . DateIssued === b . attributes . DateIssued ) ? ( ( a . attributes . Address > b . attributes . Address ) ? 1 : - 1 ) : - 1 ) ; for ( var i = 0 ; i < certificates . length ; i ++ ) { let recordDate = new Date ( certificates [ i ] . attributes . DateIssued ) ; let recordYear = recordDate . getFullYear ( ) if ( ! $ ( "#content" + recordYear ) . length ) { $ ( "#addressListDiv" ) . append ( '<button type="button" class="collapsible" id="button' + recordYear + '">' + recordYear + '</button>' ) ; $ ( "#addressListDiv" ) . append ( '<div class="content" id="content' + recordYear + '"></div>' ) ; $ ( "#button" + recordYear ) . on ( "click" , function ( ) { this . classList . toggle ( "active" ) ; var content = this . nextElementSibling ; if ( content . style . display === "block" ) { content . style . display = "none" ; } else { content . style . display = "block" ; } } ) ; } let OBJECTID = certificates [ i ] . attributes . OBJECTID let address = certificates [ i ] . attributes . Address $ ( "#content" + recordYear ) . append ( '<p class="address" id="' + OBJECTID + '">' + address + '</p>' ) let center = certificates [ i ] . geometry ; $ ( "#" + OBJECTID ) . on ( "click" , function ( ) { view . center = center ; view . zoom = 18 ; } ) } } ) } )
... View more
06-22-2020
05:52 AM
|
1
|
1
|
49
|
POST
|
That would be the easiest but hard coding in the second query would not allow for growth beyond 2000 records in the table which will eventually happen. I feel like the menu is a bit unwieldy with so many items in it but that's how they want it built. Looking at the browser console I didnt realize that a featureset.features is just an array. Ill just concat the resulting arrays into a new one and then write a custom sort.
... View more
06-19-2020
06:34 AM
|
0
|
3
|
49
|
POST
|
I have a map with a slide out panel that houses a list of elevation certificates, the certificates are grouped into collapsing menus by year issued. My problem is that to build the menu out takes two queries since there are 1755 records. Being asynchronous by design JS does both in quick succession and builds out my menu in the order the queries come back. That means it may start with the second batch first. How can I make it do the first then the second? I'm already using execute(). then(). If I cant do it with the query logic but can combine the two feature sets somehow I could sort that and then build off the master feature set but I don't see how to do that either. If there is a better way to page through the feature class than using the start parameter of the query I'm open to completely reformulating this. var queryTask = new QueryTask ( { url : "https://gis.baycountyfl.gov/arcgis/rest/services/ElevationCertificates/MapServer/0" } ) ; var query = new Query ( ) ; query . returnGeometry = true ; query . outFields = [ "DateIssued" , "Address" , "OBJECTID" ] ; query . where = "1=1" ; query . orderByFields = [ "DateIssued" ] ; query . outSpatialReference = 3857 ; query . num = 1000 ; queryTask . executeForCount ( query ) . then ( function ( count ) { for ( var step = 0 ; step < count ; step + = 1000 ) { query . start = step ; queryTask . execute ( query ) . then ( function ( results ) { for ( var i = 0 ; i < results . features . length ; i ++ ) { let recordDate = new Date ( results . features [ i ] . attributes . DateIssued ) ; let recordYear = recordDate . getFullYear ( ) if ( ! $ ( "#content" + recordYear ) . length ) { $ ( "#addressListDiv" ) . append ( '<button type="button" class="collapsible" id="button' + recordYear + '">' + recordYear + '</button>' ) ; $ ( "#addressListDiv" ) . append ( '<div class="content" id="content' + recordYear + '"></div>' ) ; $ ( "#button" + recordYear ) . on ( "click" , function ( ) { this . classList . toggle ( "active" ) ; var content = this . nextElementSibling ; if ( content . style . display === "block" ) { content . style . display = "none" ; } else { content . style . display = "block" ; } } ) ; } let OBJECTID = results . features [ i ] . attributes . OBJECTID let address = results . features [ i ] . attributes . Address $ ( "#content" + recordYear ) . append ( '<p class="address" id="' + OBJECTID + '">' + address + '</p>' ) let center = results . features [ i ] . geometry ; $ ( "#" + OBJECTID ) . on ( "click" , function ( ) { view . center = center ; view . zoom = 18 ; } ) } } ) } } ) } ) ;
... View more
06-18-2020
02:18 PM
|
0
|
6
|
151
|
POST
|
Is there any movement on this yet? I'm curious if an amped up "Smart Editor" style form widget & map combo in Experience Builder wouldn't be as efficient and just supersede the need for the GeoForm.
... View more
06-17-2020
10:42 AM
|
0
|
0
|
31
|
POST
|
VSCode doesnt like the default Pro environment for some reason. Esri might have a solution they could offer but if you go into the Python settings in Pro and clone the default environment then open VSCode the cloned environment shows up. No idea why it does this. It can get messed up when Pro updates, you may have to delete the clone and re-clone. I just went through this.
... View more
05-06-2020
09:37 AM
|
1
|
0
|
233
|
POST
|
I have a task where a step lets the user input a handful of attributes. Even though all the attributes are nullable the task is still making all of them required in order to go to the next step. Anyone know where the option to make them not required is? Im sure Im just missing something.
... View more
11-21-2019
01:09 PM
|
0
|
0
|
33
|
POST
|
I always forget about sdeintercept. When I connect as the sde user, all the feature classes are owned by sde, I can edit anything. I removed db_datareader and db_datawriter from my domain user in the database and tried to connect with an sdeintercept set up. When I add a feature class from a dataset I can edit the contents of the dataset is recorded in the output as "User Privileges: SELECT, UPDATE, INSERT, DELETE" but when I add something from a dataset I am blocked from editing only "User Privileges: SELECT" is recorded for the data. I checked and do have full privileges for both datasets. I will open a support ticket in the morning on this.
... View more
10-09-2019
01:50 PM
|
0
|
0
|
137
|
POST
|
I am having this exact issue right now with a 10.7 EGDB on SQLServer. The error affects all the feature classes in certain feature datasets but not all of them. Users with full privileges can view data but are given an error that there is no editable data. A quick fix I have just tried is to make the database users members of db_datareader and db_datawriter but if there is a better fix I would like to implement it.
... View more
10-08-2019
01:56 PM
|
0
|
2
|
137
|
IDEA
|
When concatenating strings with Arcade it would be nice to be able to ignore Null values. Another option would be a filter function as in Python so an input list is returned without the filtered values.
... View more
10-03-2019
12:09 PM
|
3
|
0
|
136
|
Online Status |
Offline
|
Date Last Visited |
Thursday
|