POST
|
Amir, I have tried adding the fabric to a new map, and the default popup expression still gives me troubles. As far as I can tell, the default custom display expression (Layer Properties > Display > Display Field > Set an Expression) uses an identical expression to the popup and the Attributes panel shows the correct format. Your popups display correctly? Hmm. Could it be a setting or system configuration for me? I was able to construct a new expression using the new ConvertDirection function, however, it still excludes the single quote. You can see the default fabric expression followed by the ConvertDirection expression. Thank you for looking at this with me! -Paul Here is the full default fabric popup expression. // Change the settings portion to configure direction format, rounding and abbreviations
// This is an Arcade expression
// SETTINGS
var QuadrantBearingFormat = true; //set 'true' for quadrant bearing, 'false' for north azimuth
var ShowDistance = true; //set as 'true' to show distance
var ShowDirection = true; //set as 'true' to show direction
var ShowRadius = true; //set as 'true' to show radius
var ShowCurveParemater = true; //set as 'true' to show a curve parameter
var CurveParameter = "ArcLength"; //set as 'ArcLength' or 'Chord' or 'Angle' for central angle. Case sensitive!
var ErrorString = "COGO ERROR"; //set to display invalid COGO combinations
var RadiusAbbr = 'R='; //radius abbreviation
var Radius2Abbr = 'R2='; //radius2 abbreviation for spiral curves
var ArclengthAbrr = 'L='; //arclength abbreviation
var ChordAbbr = 'C='; //chord abbreviation
var AngleAbbr = 'A='; //central Angle abbreviation
var DistUnitRounding = 2; //number of decimal places for distance units: distance, radius, arclength & chord
var NumberFormat = "#,###.00" //number format. In this example: thousands separator with padding of 2 zeros
// VARIABLES
var direction=$feature.Direction;
var distance=$feature.Distance;
var radius=$feature.Radius;
var arclength=$feature.Arclength;
var radius2=$feature.Radius2
var prefix; // quadrant bearing prefix
var postfix; // quadrant bearing postfix
var bearing;
var quadbearing;
var binaryDictionary; //binary dictionary to check COGO combinations
var checksum=0; //initialize checksum
var validValuesArray; //array of valid values for COGO combinations
var partialValuesArray; //array of partial values for COGO
var degrees;
var minutes;
var seconds;
var DMS;
var directionStr = ""; //direction string using for label
var distanceStr = ""; //distance string using for label
var radiusStr = ""; //radius string using for label
var radius2Str = ""; //radius2 string using for labeling spiral curves
var curveStr = ""; //curve parameter string using for label
var angleRad; //curve angle in radians
var COGOValidity; //COGO combinations validity. can be valid, partial or invalid.
function NorthAzimuth2Quadbearing(azimuth){
if (azimuth<90 && azimuth>=0){
bearing=azimuth;
prefix = "N";
postfix= "E";}
else if (azimuth<180 && azimuth>=90){
bearing=180-azimuth;
prefix = "S";
postfix= "E";}
else if (azimuth<270 && azimuth>=180){
bearing=abs(180-azimuth);
prefix = "S";
postfix= "W";}
else if (azimuth<360 && azimuth>=270){
bearing=360-azimuth;
prefix = "N";
postfix= "W";}
degrees=floor(bearing);
minutes=floor((bearing-degrees)*60)
seconds=((bearing-degrees-minutes/60)*3600)
if (seconds>=59.5){
seconds=0;
minutes+=1;
if (minutes==60){
minutes=0;
degrees+=1;}}
quadbearing=prefix+degrees+"°"+text(minutes,"00")+"'"+text(seconds,"00")+"''"+postfix;
return quadbearing;
}
function DMS(bearing){
degrees=floor(bearing);
minutes=floor((bearing-degrees)*60)
seconds=((bearing-degrees-minutes/60)*3600)
if (seconds>=59.5){
seconds=0;
minutes+=1;
if (minutes==60){
minutes=0;
degrees+=1;}}
DMS=degrees+"°"+text(minutes,"00")+"'"+text(seconds,"00")+"''";
return DMS;
}
function IsValidCOGO(direction, distance, radius, arclength, radius2) {
binaryDictionary= Dictionary('dir', 1, 'dist',2, 'rad',4, 'arc',8, 'rad2',16)
if (!IsEmpty(direction)) {checksum+=binaryDictionary.dir}
if (!IsEmpty(distance)) {checksum+=binaryDictionary.dist}
if (!IsEmpty(radius)) {checksum+=binaryDictionary.rad}
if (!IsEmpty(arclength)) {checksum+=binaryDictionary.arc}
if (!IsEmpty(radius2)) {checksum+=binaryDictionary.rad2}
validValuesArray=[0,3,8,13,29]; //array of valid combinations: '0' for nothing, ... '13' for direction & radius & arclength ...
partialValuesArray=[1,2,4,20,13,16,21,25,28]; //array of partial combinations: '1' for only direction, '2' for only distance...
if (IndexOf(validValuesArray,checksum)>-1) { // a negative value is returned if checksum value is not in the a valid combination array
return "valid";
}
if (IndexOf(partialValuesArray,checksum)>-1){
return "partial";
}
return "invalid";
}
COGOValidity = IsValidCOGO(direction, distance, radius, arclength, radius2);
if ( COGOValidity == "invalid") { //if invalid COGO return error string
return ErrorString;
}
// Direction string
if (ShowDirection) {
if (IsEmpty(direction)==false) {
if (QuadrantBearingFormat==true) { //using quadrant bearing format
directionStr = NorthAzimuth2Quadbearing(direction);
}
else { //using north azimuth format
directionStr = DMS(direction);
}
}
}
// Distance string
if (ShowDistance) {
if (IsEmpty(distance)==false) {
distanceStr = text(round(distance,DistUnitRounding), NumberFormat);
}
}
//Radius String
if (ShowRadius) {
if (!IsEmpty(radius)) { //it can be a curve or a spiral
if (IsEmpty(radius2)) { //if radius2 is empty this is a curve
radiusStr = RadiusAbbr + " " + text(round(radius, DistUnitRounding), NumberFormat);
}
else { // it is a spiral
radiusStr = RadiusAbbr + " " + text(round(radius, DistUnitRounding),NumberFormat);
radius2Str = Radius2Abbr + " " + text(round(radius2, DistUnitRounding),NumberFormat);
if (radius == 0) { //substitute to infinity sign
radiusStr = RadiusAbbr + " ∞ ";
}
if (radius2 == 0) { //substitute to infinity sign
radius2Str = Radius2Abbr + " ∞ ";
}
}
}
}
// Curve Parameter
if (ShowCurveParemater) {
if (!IsEmpty(arclength)) {
if (CurveParameter == 'ArcLength') {
curveStr = ArclengthAbrr + text(round(arclength, DistUnitRounding), NumberFormat); //return Arc length
}
angleRad = arclength/(abs(radius)) //calculate angle in radians
if (CurveParameter == 'Angle') {
curveStr = AngleAbbr + DMS(angleRad * 180 / pi); // convert radian to degrees and show as DMS
}
if (CurveParameter == 'Chord') {
curveStr = ChordAbbr + text(round((2 * abs(radius) * Sin(angleRad/2)),DistUnitRounding), NumberFormat); //calculate chord length
}
}
}
// Assemble label string
if (IsEmpty(radius)) { //if its empty it is not a curve
return directionStr + " " + distanceStr
}
else { //it's a curve
return radiusStr + " " + radius2Str + " " + curveStr;
}
... View more
08-19-2021
10:59 AM
|
0
|
2
|
1269
|
POST
|
Jeff, My fabric layers also show the warning icon and tell me that I am not running the latest version. I am on 2.8.2 and running version 4. The Upgrade Dataset tool tells me that I am already on the latest version. I also see this warning when running the Validate Parcel Fabric geoprocessing tool. It has been like this for as long as I can remember. I have just ignored it since it doesn't seem to be causing any issues. -Paul
... View more
08-19-2021
10:14 AM
|
1
|
0
|
1506
|
POST
|
Pro 2.8.2 I am trying to get my Popup Title to properly display Quadrant Bearing coordinates such as S84°07'50"W. Using the parcel fabric's default popup expression, this looks like S84°0750'W. A snippet of the default expression looks like: quadbearing=prefix+degrees+"°"+text(minutes,"00")+"'"+text(seconds,"00")+"''"+postfix If I change it to look like this: quadbearing=prefix+degrees+"°"+text(minutes,"00")+TextFormatting.SingleQuote+text(seconds,"00")+TextFormatting.DoubleQuote+postfix; The output is closer, S84°0750"W, but it is missing the Single Quote after the minutes. I have even tried just a simple expression like: {insertrandomfield} + "'" or {insertrandomfield} + TextFormatting.SingleQuote and neither will display the single quote in the Title. They just display the field attribute. The single quote displays fine using the exact same expression in the Attributes panel. I put this in ArcGIS Pro and not in Parcel Fabric because it doesn't seem unique to the Parcel Fabric. But, @AmirBar-Maor, do you have any ideas for this? Either way, the built in default fabric popup expression for lines isn't working right for me.
... View more
08-18-2021
09:51 AM
|
0
|
7
|
1318
|
POST
|
That sounds exciting! I think I will just abandon this until the new tool comes out. Thank You!
... View more
07-21-2021
06:23 AM
|
0
|
0
|
1441
|
POST
|
Amir, thank you for the reply! I am glad to know that it's not just me. That makes sense since it's the geodatabase topology that is evaluating the rules and retired and current parcels are stored within the same feature class, but are displayed in two separate layers on the map. I was thinking that this may be causing my attribute rules to identify parcels as overlapping when they're not actually overlapping, but it appears that is not the case. So, how do I get the No Overlaps attribute rules to correctly identify overlaps? If the rule is correctly identifying overlaps, how do I find where this parcel is overlapping? I haven't been able to locate the offending vertices or areas of overlap. Using align tools doesn't usually solve the overlap for me. I will see if I can get some screen shots or upload the offending data and I'll play around with this a bit more today to see if I can find the overlapping area.
... View more
07-21-2021
04:33 AM
|
0
|
0
|
1447
|
POST
|
I am on Pro version 2.8.1, Parcel Fabric version 4. I imported the included PF attribute rules, and the "CURRENT MUST NOT OVERLAP" rule does not seem to properly recognize that a parcel is retired. "// Setting needed
var parcelsFS = FeatureSetByName($datastore, ""Tax"",['RetiredByRecord'], true); // Set the geodatabase parcel table name
var sql = ""RetiredByRecord IS NULL"";
var currentParcels = Filter(parcelsFS, sql);
if (IsEmpty($feature.RetiredByRecord)){
return (Count(Overlaps(currentParcels, $feature))<1);
}
return true;" The rule will highlight parcels that do not have any overlaps as far as I can tell. Checking geometry vertices does not show duplicate or overlapping vertices. Also, only one parcel in that area is highlighted. Neighboring parcels are not selected to indicate where the overlap might be. In the below screenshot, I used Select Features in the Error Inspector to select the features associated with the error. You can see that the selected Tax parcel does not have a retired record, however, it is listed under the Historic Tax layer. The current and "retired" parcel even have the same GlobalID. The Display Definition Query for current and retired Tax parcels are correct Current - "RetiredByRecord IS NULL" Historic - "RetiredByRecord IS NOT NULL" **Side Note: I notice the same occurs when I use Select Parcel Features in the Records tab. Tax Lines are selected and treated as both current and retired in the attribute pane even though no historical lines exist or are selected.
... View more
07-20-2021
11:56 AM
|
0
|
5
|
1458
|
POST
|
I opened a support case and we were able to overcome most of my performance issues by doing the following: In Windows Defender, add ArcGIS Pro as an exception. Clear Pro Display Cache regularly. Do not let this get above 1GB or so if you can help it. The larger the cache, the slower Pro gets. Lower display graphics settings in Pro Options. Also disable hardware antialiasing I am running Pro 2.6.2 and these steps greatly improved my performance on several workstations. I don't know why Esri doesn't make this more readily available in documentation. My issues were: General UI lag and lockups Traverse tool input lag 5 seconds or more lag when moving between cell blocks Turning layers on and off resulted in UI lock for 5-10 seconds *Data is FGDB on C:\
... View more
12-10-2020
12:51 PM
|
2
|
1
|
3210
|
POST
|
This worked for me! I also cleared the display cache and will clear it regularly through Project/Options/Display This gives massive improvements in speed and so far UI hang-ups are minimal.
... View more
11-25-2020
11:55 AM
|
0
|
0
|
2933
|
POST
|
While using the traditional Polygon/Line parcel system, once I transitioned to the next tax year, I would copy my working .gdb and rename it. For instance "Landrecords2020.gdb" to "Landrecords2021.gdb". The new .gdb would become my working .gdb and the previous year was 'archived'. This method gave me a historical feature class that I could then add to my map, and by adding all of my previous years layers, view how an area has changed throughout the years. I know the AGP Parcel Fabric uses retired parcels to represent historic parcels. However, what is the best workflow to keep a running history throughout the years? Should I continue my method of 'archiving' my past .gdb or maybe just export a snapshot of my working .gdb? I want to be able to see how an area has changed throughout the years and I just don't know if the fabric's method of retiring parcels will show this as effectively as my current method especially for non-record driven edits such as QA/QC where a retired parcel is not created. Do yall just use one .gdb throughout the years and use the retired parcels for this?
... View more
09-24-2020
12:19 PM
|
1
|
1
|
951
|
POST
|
Anne, If you have a Standard or Advanced license, on ArcMap's COGO toolbar; COGO Report manually measures the direction and distance of your line Reporting COGO descriptions—Help | Documentation COGO Area uses the COGO enabled feature's COGO dimensions to calculate the area, not the drawn dimensions Calculating COGO area—Help | Documentation About calculating COGO area—Help | Documentation This may also be of help; Calculating area, length, and other geometric properties—Help | ArcGIS Desktop Hope this helps!! Paul
... View more
09-10-2020
07:46 AM
|
1
|
0
|
2711
|
POST
|
Several of my Hosted Feature Layers have been increasing in size. Has anyone else had similar experiences? How do you manage this? I am the sole publisher of this data that is hosted in AGOL, and no other members of my organization edit or modify these files. For example: A file's normal size is 15mb. I have modified this file, however, the total feature count, field count, attributes etc, remain similar, no major changes besides a slight increase or decrease in total records. My method of modifying the data is to add it to a map in ArcGIS Pro, delete all features, then append features. The file size remains the same for hours to days, then increases dramatically to 70mb or even more. I had one go from 30mb to 280mb AND back down to 30mb with no intervention or input, right in front of mine and Esri's eyes as we screen shared! I realize that enabling sync or editing can affect the file sizes, however the initial jump in size is erratic and not always directly related to toggling settings. As in, it does not always jump immediately when I toggle editing or sync, it might jump a few hours later or the next day. Yesterday, a file I have not modified in at least several days, doubled in size with no discernible triggers. I toggled editing on and off and the file size went back down to the expected size. Now, this morning, it is back up to double what it should be with no changes overnight. I opened a ticket and conversed with Esri for weeks back in February/March, and they were not able to give concrete answers as to what exactly affects size and how to predict changes. This was their response. While I could find some documentation on size increases on sync-enabled layers, I haven't been able to find any related to editing. However, after speaking with colleagues, it is expected for the size of a layer to increase after enabling sync and editing, as we have both seen. It's difficult to speak to the amount a layer will increase in size, since this is dependent on the schema of the data, how many replicas may be created, the geometry of the features, etc. However, we saw similar magnitude increases (10x) in our datasets. Just something to be aware of when enabling those features. I think this is unacceptable. In order to be able to budget for credit consumption, file settings and their affect on size needs to be transparent and predictable, not erratic and spontaneous. I have relatively small datasets, what about organizations that have large data stores? Their credit budgets must be incredibly hard to pin down when their file sizes are all over the place.
... View more
06-25-2020
09:22 AM
|
3
|
0
|
336
|
POST
|
While I am able to get this method to work for attribute tables in WebMaps, these settings do not carry over into a WebApp attribute table that is created from the map.
... View more
06-10-2020
11:27 AM
|
4
|
0
|
9292
|
POST
|
As one idea, I conda upgraded arcgis to 1.8.0. Still no go.
... View more
05-29-2020
01:55 PM
|
0
|
0
|
507
|
Title | Kudos | Posted |
---|---|---|
1 | 03-05-2024 08:45 AM | |
1 | 03-05-2024 08:47 AM | |
1 | 03-19-2024 05:49 AM | |
1 | 09-10-2020 07:46 AM | |
1 | 08-21-2023 05:34 AM |
Online Status |
Offline
|
Date Last Visited |
06-19-2024
07:12 PM
|