POST
|
My organization is currently in the process of developing a GIS Strategic Plan. In my opinion, GIS automation has been overlooked in the strategy...I'd like to see us develop automation mechanisms as part of the strategy, such as: Scheduled jobs: mechanism to easily precompute GIS fields and tables. Not an "IT-only" solution, but something that power-users can use too. Scheduled reports: let all users set up conditional reports that would be emailed to recipients on a schedule. Other - there are likely other areas of automation that I haven't thought of yet. Automation mechanisms like that would help us achieve our corporate IT direction, which is "technology done right". Question: Does anyone have any suggestions about automation areas to include in the strategy? Or can you recommend a GIS Strategy document from another organization who did well in terms of automation? Thanks!
... View more
04-06-2022
07:23 AM
|
2
|
4
|
1030
|
POST
|
How To: Set up an Oracle DBMS spatial table for editing via a feature service I wonder if something similar could be done in PostgreSQL.
... View more
04-04-2022
11:47 AM
|
0
|
0
|
4177
|
IDEA
|
@DavidPike For what it’s worth, the St_geometry docs (page 18) explain it like this: The ST_LineString is simple if it does not intersect its interior. The graphic below shows examples of ST_LineString objects: (1) is a simple, nonclosed ST_LineString; (2) is a nonsimple, nonclosed ST_LineString; (3) is a closed, simple ST_LineString and, therefore, a ring; and (4) is a closed, nonsimple ST_LineString—it is not a ring.
... View more
04-02-2022
03:20 PM
|
0
|
0
|
632
|
POST
|
Related: ST_Geometry SQL function reference (page 14) Dimensionality The dimensions of a geometry are the minimum coordinates (none, x, y) required to define the spatial extent of the geometry. A geometry can have a dimension of 0, 1, or 2. The dimensions are as follows: • 0—Has neither length nor area • 1—Has a length (x or y) • 2—Contains area (x and y) Point features have a dimension of 0, lines a dimension of 1, polygons a dimension of 2. Dimension is important not only as a property of the subtype but also in determining the spatial relationship of two features. The dimension of the resulting feature or features determines whether or not the operation was successful. The dimensions of the features are examined to determine how they should be compared. The coordinates of a geometry also have dimensions. If a geometry has only x- and y-coordinates, the coordinate dimension is 2. If a geometry has x-, y-, and z-coordinates, the coordinate dimension is 3. If a geometry has x-, y-, z- , and m-coordinates, the coordinate dimension is 4. So it sounds like there are different concepts of “dimensions”: Geometry dimensions Coordinate dimensions What's the difference between coordinateDimension and spatialDimension?
... View more
04-02-2022
06:57 AM
|
0
|
0
|
1949
|
POST
|
The following test script works in Pro 2.6.8. It adjusts the Y-coordinates, instead of the M-coordinates. var geom = Dictionary(Text(Geometry($feature)));
var paths = geom['paths'];
for (var path_idx in paths) {
for (var point_idx in paths[path_idx]) {
paths[path_idx][point_idx][1] += 10
}
}
return Polyline(geom); However, if I change the script so that it updates the M-coordinates, instead of the Y-coordinates, then it doesn't work. I don't get any errors, but the M-values just get updated to Nan, which isn't what I want. var geom = Dictionary(Text(Geometry($feature)));
var paths = geom['paths'];
for (var path_idx in paths) {
for (var point_idx in paths[path_idx]) {
paths[path_idx][point_idx][2] += 10
}
}
return Polyline(geom); That tells me that there is a bug in Pro 2.6.8. It isn't able to update the geometry's M-values correctly. (And for what it's worth, I tried using the Geometry() function, instead of the Polyline() function, to return the value to the geometry. Similarly, that worked for the Y-coordinate, but not the M-coordinate). I don't have that problem in Pro 2.9.2. The script can update M-values without issue: So I think Esri must have fixed the problem in later versions. Note: I came across an additional bug in 2.6.8 (a problem with true curves): Get paths of polyline with true curve (Pro 2.6.8)
... View more
04-01-2022
02:57 PM
|
0
|
1
|
607
|
POST
|
I have an Arcade expression that outputs polyline paths as text: Dictionary(Text(Geometry($feature)))['paths'] That expression works as expected when the polyline doesn't have true curves: However, if I use a line that does have true curves, then it fails: Failed to create new feature(s). The row contains a bad value. Note: I don't have that problem with Pro 2.9.2. The expression works on a line with true curves, without issue. Question: Why does the paths expression fail for lines with true curves in Pro 2.6.8? Background info: Attribute rule works in Pro 2.9.2, but not in Pro 2.6.8 Thanks!
... View more
04-01-2022
11:23 AM
|
0
|
1
|
546
|
POST
|
What spatial type does Esri recommend for Oracle EGDBs? SDE.ST_GEOMETRY? SDO_GEOMETRY? The reason I ask: SDE.ST_GEOMETRY seems to have gone stagnant in the last 5-10 years. There haven’t been many enhancements made in recent memory, despite there being open ideas/requests submitted. Has Esri shifted focus away from SDE.ST_GEOMETRY, and are now recommending we use SDO_GEOMETRY instead? It would help if Esri could provide clarity in this area. Thanks.
... View more
04-01-2022
08:07 AM
|
0
|
2
|
634
|
IDEA
|
It would help if Esri could add St_Geometry functions (in Oracle) for converting to and from JSON. Similar to what we have for SDO_GEOMETRY, ArcPy, Arcade, etc. Related: Select SDE.ST_GEOMETRY as JSON text (using SQL) Select JSON text of SDO_GEOMETRY using SQL
... View more
04-01-2022
07:47 AM
|
0
|
0
|
705
|
IDEA
|
There are times when we want to use preformatted text instead of code blocks: We can format preformatted text, unlike with code blocks. Code blocks are clunky to use (extra line breaks, awkward clicks when trying to edit). With that said, there is an issue with preformatted text. When I copy code from an IDE (such as SQL Developer), the indents get stripped out: --https://community.esri.com/t5/arcgis-enterprise-questions/pl-sql-code-review-set-polyline-m-values-to/td-p/1159398 with function pythagoras(x1 in number, y1 in number, x2 in number, y2 in number) return number is begin return round(sqrt( (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)), 2); -- Power is a slow function end; function m_as_length(shape in sde.st_geometry) return varchar2 is result varchar2(32767); vertex_set varchar2(32767); oldX number; oldY number; newX number; newY number; line_len number := 0; begin for vPartIndex in 1..sde.st_geometry_operators.st_numgeometries_f(shape) loop vertex_set := null; for vPointIndex in 1..sde.st_geometry_operators.st_numpoints_f(sde.st_geometry_operators.ST_GeometryN_f(shape,vPartIndex)) loop newX := sde.st_geometry_operators.st_x_f(sde.st_geometry_operators.st_pointn_f(sde.st_geometry_operators.st_geometryn_f(shape,vPartIndex),vPointIndex)); newY := sde.st_geometry_operators.st_y_f(sde.st_geometry_operators.st_pointn_f(sde.st_geometry_operators.st_geometryn_f(shape,vPartIndex),vPointIndex)); if vPointIndex <> 1 then line_len := line_len + pythagoras(oldX, oldY, newX, newY); end if; oldX := newX; oldY := newY; vertex_set := vertex_set || newX || ' ' || newY || ' ' || line_len || ', '; end loop; result := result || '(' || rtrim((vertex_set),', ') || '),'; end loop; return 'MULTILINESTRING M (' || rtrim((result),',') || ')'; end; select m_as_length(shape) from polyline (That happens, even though the indents are literal spaces in SQL Developer, not tabs.) That's not what we want. For example, if I were to copy my code elsewhere (such as Stack Overflow), and then paste it from S.O. as preformatted text, then the indents will be preserved: --https://community.esri.com/t5/arcgis-enterprise-questions/pl-sql-code-review-set-polyline-m-values-to/td-p/1159398
with
function pythagoras(x1 in number, y1 in number, x2 in number, y2 in number) return number is
begin
return round(sqrt( (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)), 2); -- Power is a slow function
end;
function m_as_length(shape in sde.st_geometry) return varchar2
is
result varchar2(32767);
vertex_set varchar2(32767);
oldX number;
oldY number;
newX number;
newY number;
line_len number := 0;
begin
for vPartIndex in 1..sde.st_geometry_operators.st_numgeometries_f(shape)
loop
vertex_set := null;
for vPointIndex in 1..sde.st_geometry_operators.st_numpoints_f(sde.st_geometry_operators.ST_GeometryN_f(shape,vPartIndex))
loop
newX := sde.st_geometry_operators.st_x_f(sde.st_geometry_operators.st_pointn_f(sde.st_geometry_operators.st_geometryn_f(shape,vPartIndex),vPointIndex));
newY := sde.st_geometry_operators.st_y_f(sde.st_geometry_operators.st_pointn_f(sde.st_geometry_operators.st_geometryn_f(shape,vPartIndex),vPointIndex));
if vPointIndex <> 1 then
line_len := line_len + pythagoras(oldX, oldY, newX, newY);
end if;
oldX := newX;
oldY := newY;
vertex_set := vertex_set || newX || ' ' || newY || ' ' || line_len || ', ';
end loop;
result := result || '(' || rtrim((vertex_set),', ') || '),';
end loop;
return 'MULTILINESTRING M (' || rtrim((result),',') || ')';
end;
select
m_as_length(shape)
from
polyline So, we can see that the preformatted text is capable of handling pasted indents, in some cases. Idea: Could preformatted text be enhanced so that pasted indents are always preserved? (even when pasting from IDEs like SQL Developer)
... View more
04-01-2022
06:43 AM
|
3
|
1
|
812
|
IDEA
|
Function calls in PL/SQL are quite verbose. In a plain SQL query, we can do this… sde.st_geometryN_f(shape,1) …but in a custom PL/SQL function, we have to do this: sde.st_geometry_operators.st_geometryN_f(shape,1) Which makes the function calls hard to read when we string multiple functions together: -- startpoint X of a multi-part polyline sde.st_geometry_operators.st_x_f(sde.st_geometry_operators.st_startpoint_f(sde.st_geometry_operators.st_geometryN_f(shape,1))); More info: Use SDE.ST_GEOMETRY functions in a custom function Could Esri give us a shorter way to make SDE.ST_GEOMETRY function calls in PL/SQL?
... View more
04-01-2022
03:40 AM
|
0
|
0
|
302
|
IDEA
|
With Oracle Spatial, we have the option of using sites like db<>fiddle and Oracle Live SQL to mock up SQL or data online...and share it...when troubleshooting code in forums (Esri Community, GIS SE, etc.). That works great when using native datatypes like SDO_GEOMETRY. But when it comes to datatypes like SDE.ST_GEOMETRY, we're out of luck. Could Esri provide an online playground that has the ST_GEOMETRY datatype (in Oracle)? Similar to what we have for Arcade, but also shareable.
... View more
03-31-2022
03:00 PM
|
0
|
0
|
180
|
POST
|
I have a calculation attribute rule that runs without errors, but doesn't work as expected: Attribute rule works in Pro 2.9.2, but not in Pro 2.6.8 I want to debug the code, to see what part of it is failing to update the geometry's vertices. The code doesn't produce any errors, so I can't use error messages to help me. And ArcGIS Pro 2.6.8 doesn't support outputting console messages (unlike Pro 2.9.2 +/-). Does anyone have any tips for debugging Arcade code in that scenario?
... View more
03-31-2022
08:41 AM
|
0
|
1
|
664
|
POST
|
I have a calculation attribute rule that works in Pro 2.9.2 (in a 2.9.2 FGDB). It updates the M-values of the polyline geometry: function pythagoras(x1, y1, x2, y2) {
return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
}
var geom = Dictionary(Text(Geometry($feature)));
var paths = geom['paths'];
var oldX = paths[0][0][0];
var oldY = paths[0][0][1];
var line_length = 0;
for (var path_idx in paths) {
for (var point_idx in paths[path_idx]) {
var newX = paths[path_idx][point_idx][0];
var newY = paths[path_idx][point_idx][1];
if (point_idx != 0) {
line_length += pythagoras(oldX, oldY, newX, newY);
}
paths[path_idx][point_idx][-1] = line_length;
oldX = newX;
oldY = newY;
}
}
return Polyline(geom); However, if I create that attribute rule in Pro 2.6.8 (in a separate 2.6.8 FGDB), it doesn't work as expected. It runs without errors, and it even densifies true curves (which tells me that the code is running), but it doesn't update the M-values of the vertices properly (it sets the M-values to Nan). Question: Is there something in that script that is not supported in older versions of ArcGIS Pro? I believe the Dictionary(), Text(), and Geometry() functions are working ok (since the script successfully returns a densified geometry). So I think it must be something else. Unfortunately, I can't upgrade Pro any further right now, since our version of license manager doesn't support later versions of Pro. Thanks!
... View more
03-31-2022
08:27 AM
|
0
|
3
|
641
|
POST
|
I don't have any experience with this sort of thing, and this almost certainly won't work, but I thought I'd ask out of curiosity: If you put HTML tags directly in the text, what happens? Example: "foo <b>bar</b>" I only ask because I stumbled upon an scenario (in an external system -- IBM Maximo Spatial) where I could put a HTML hyperlink in a db view's field -- and the map (ArcGIS JavaScript API?) picked up the HTML as a proper hyperlink. I would have never guessed that would work. Maybe HTML bolding would have worked too.
... View more
03-31-2022
06:49 AM
|
0
|
2
|
3143
|
POST
|
Related: Search Esri blogs for specific keywords: https://www.esri.com/arcgis-blog/?s=#arcade https://www.esri.com/en-us/search/?q=attribute%20rules
... View more
03-30-2022
02:18 PM
|
0
|
0
|
1171
|
Title | Kudos | Posted |
---|---|---|
1 | 04-21-2023 01:55 PM | |
1 | a week ago | |
2 | 2 weeks ago | |
3 | 2 weeks ago | |
1 | 05-10-2024 06:56 AM |