IDEA
|
There seem to be three different wordings for converting XY data to points: 1. Right click layer in TOC --> "Display XY Data" I find that wording to be misleading. The word "display" makes it sound like we're creating a dynamic event layer, which isn't the case. It creates a new feature class. I know the info in the mouseover explains it a bit further. But I honestly don't usually think to hover/wait/read the mouseover text. Could the "Display XY Data" wording be improved? 2. Ribbon --> Map tab --> "XY Point Data": The wording in the subscript is misleading. We're not simply "Adding x,y point data to the map". We're creating a feature class. 3. Ribbon --> Analysis --> Tools --> Search for "XY" --> "XY Table to Point" GP tool. This tool is pretty straightforward. It creates a new feature class, which is clearly stated in the tool description. And is obvious because we need to fill in the "Output Feature Class" parameter. Note: The three options above are not to be confused with the "Make XY Event Layer" GP tool, which creates a dynamic event layer, not a feature class. Idea: If I understand correctly, all three options use the same underlying GP tool: "XY Table to Point". If all three options do the same thing, then why not use consistent wording, to avoid confusion from the user? And why not make it crystal clear that all three options create a new FC? Feel free to let me know if I've misunderstood something. Cheers.
... View more
07-08-2022
08:36 AM
|
3
|
7
|
2057
|
IDEA
|
Merged from a separate idea. Regarding Event Layer functionality in Pro: XY Event Layers Route Event Layers (linear referencing) (Not to be confused with GP tools that output a static FC, such as the "XY Table to Point" GP tool.) Could those layer types be added to context-menus in Pro? Right-clicking a layer in the TOC The Add Data button/picklist in the Map tab in the ribbon That would be more convenient than having to go looking for the event layer GP tools. Related: Why has Event Layer functionality been removed from context menus?
... View more
07-08-2022
08:16 AM
|
1
|
0
|
1943
|
POST
|
I create multiple ArcGIS Pro projects per day. And each time, I need to remove the default map layers: World Topographic Map and World Hillshade. I don't ever use those layers...I always use in-house layers. Is there a way to prevent those layers from being added to my map by default? That would be more convenient than always removing them. I'm aware that I can save a project and use it as a sort of "default blank map". And then save-as to create new projects, as required. But I'd rather just create new projects from scratch — without any layers added. Thanks.
... View more
07-08-2022
08:07 AM
|
0
|
2
|
1198
|
IDEA
|
(originally a separate idea; merged) It would be helpful if we could double-click an object in Catalog to open the properties dialog. That would be more convenient than right clicking-->Properties, and would be consistent with ArcMap behavior. Tested in Pro 2.6.8. Thanks.
... View more
07-08-2022
06:13 AM
|
1
|
0
|
674
|
POST
|
Side note for anyone who’s interested: Arcade automatically pre-densifies true curves. So that affects the Arcade length too (Length($feature))…the Arcade pre-densified length will be different than the real length. Whereas the Shape length ($feature.shape_length) doesn’t get pre-densified, at least not in SDE.ST_GEOMETRY in Oracle. https://community.esri.com/t5/arcgis-pro-ideas/hascurve-arcade-geometry-property/idc-p/1149449/highlight/true#M18873
... View more
07-08-2022
05:20 AM
|
0
|
0
|
807
|
IDEA
|
@JonathanMurphy The views are all connected, so if you have Fields, Domains, and Contingent Values all open, this dialog won't come up as you close them until the last one is closed. Out of curiosity, why not open the dialog when the first unsaved tab is closed, rather than the last?
... View more
07-08-2022
05:00 AM
|
0
|
0
|
2043
|
IDEA
|
@KoryKramer Here's one scenario that comes to mind: In Pro 2.6.8, if you click X to close Pro, it doesn't prompt you to save field changes or warn you that there are unsaved field changes. It only prompts you to save the project. It doesn't matter if you choose yes or no to save the project, the field changes won't be saved. Not sure about newer versions.
... View more
07-07-2022
04:51 PM
|
0
|
0
|
2098
|
POST
|
In ArcGIS Pro, it seems like XY Event Layer functionality has been removed from context menus. It was easier to create XY Event Layers in ArcMap. Just right-click the layer in the TOC: Whereas in Pro, right clicking gets us a "Display XY Data" tool, but that's misleading because that tool produces a static output in a FC. That's not what I want; I want to create a dynamic event layer. The "Add Data" context menu in Pro doesn't have an XY event layer option either: The same thing applies to linear referencing Route Event Layers. That functionality has been removed from menus too. Is there a reason why event layers were made less convenient? (removed from the menus)
... View more
07-07-2022
11:17 AM
|
0
|
2
|
825
|
POST
|
I came across a mechanism that can help with slow Oracle queries in some scenarios. I thought I'd share. If we have a slow Oracle query, we can add the /*+ result_cache */ hint to the SQL. That hint tells Oracle to cache the result of the query until the next time the data is edited. Query Result Cache in Oracle Database I think that's a pretty powerful concept. Why re-compute a query every time we use it? Why not save the results until the underlying data changes? --get st_geometry line startpoint select /*+ result_cache */ objectid, sde.st_x(sde.st_startpoint(shape)) as startpoint_x, sde.st_y(sde.st_startpoint(shape)) as startpoint_y from sidewalks --initial load takes 20 seconds due to slow st_geometry functions (14,000 features) I was quite happy when I figured that out! With that said, there are significant limitations: A big problem is: The query can't output a geometry column (object column)...or rather, it can, but the result cache hint won't be invoked. In other words, the query can't be a traditional spatial query. That's a real bummer. (link1, link2, link3) With that said, we can still use geometry columns in the query, like I did in the above startpoint query. We just can't output a geometry column in the final result. But there is a workaround to #1 above...when the geometry type is points: Make an XY Event Layer in ArcGIS that converts the X & Y number columns to points in the map. I've found XY Event Layers to be surprisingly fast...so that solution seems to work well. But of course, that doesn't help us when we want the output to be lines, polygons, or multi-part points, since we can't create an Event Layer for those geometry types: Idea: Event layers for lines, polygons, and multi-part points (via WKT). I'm not aware of a workaround. And to be clear, the Query Result Cache works perfectly fine for non-spatial queries, which I have lots of. If the underlying data is edited often, then this might not be the right solution. For example, for my startpoint query above, it takes 20 seconds to re-cache the result, which feels like an eternity. If editing doesn't happen often, then it's not a problem...I can deal with the slow re-querying once and a while. But if editing happens regularly, then the entire query needs to be re-computed, even if only a single row was affected by edits. Whereas other solutions, such as populating a helper FC via attribute rules, database triggers, a materialized view, etc...only need to sync the edited rows, not the entire dataset. So those options might be better in some cases. Options for computing fields. For what it's worth, ArcGIS Pro seems to be a lot better at handling a cached XY Event Layer than ArcMap. ArcMap re-queries too often when making un-versioned edits...it re-queries after any mouse-click that modified a feature, even if unsaved, which is extremely aggravating. And when re-querying is happening in ArcMap, the mouse is captive to the loading icon...we can't do anything while we're waiting. Whereas ArcGIS Pro loads the layer in the background, allowing us to continue working while it loads. And in Pro, un-versioned edits won't trigger a re-query until the edits are saved, which is good. Note: Both ArcGIS Pro and ArcMap handle versioned edits properly — the XY Event Layer doesn't re-query until the edits are saved. There could be other limitations too. And I'm sure there are other database-related things to consider when storing results in the Oracle cache. Consult your DBA if in doubt, etc... Summary: As with any performance improvement mechanism, there are lots of tradeoffs...it's useful in some cases, but not others. As mentioned, there are lots of alternative techniques we can use that have their own pros/cons. Maybe the benefit to this one is that it's dead-easy to implement (just add a line to your query), doesn't require begging the DBA team for stuff, and doesn't require custom code/additional FCs to manage. I really like the idea of caching, rather than constantly re-computing for no reason. I submitted a similar idea, but for caching in the application in ArcGIS: Event layers/query layers: Control caching settings for better performance. Cheers.
... View more
07-07-2022
08:18 AM
|
1
|
2
|
3499
|
IDEA
|
@MichaelVolz I don't have enough experience with the new index type to say one way or the other. I submitted the idea only because that's what Oracle recommends. My uneducated guess is that there wouldn't be a performance gain in most scenarios. If there was, I think Oracle would have mentioned it in the docs. But they actual hint at the opposite, at least when it comes to creating the index. I'm not sure about performance when using the index. 5.1.1 Using System-Managed Spatial Indexes Effective with Release 12.2, spatial indexes can be system-managed by specifying INDEXTYPE=MDSYS.SPATIAL_INDEX_V2 at index creation. You are strongly encouraged to use this index type for all new spatial indexes you create, regardless of whether the spatial table or the spatial index is partitioned, and you may also want to use it if you decide to re-create legacy spatial indexes. The main benefit is simplified spatial index management. This is most beneficial in cases of partitioning, because this new index type eliminates the need for most, if not all, index partitioning management operations. Full support is provided for almost all Oracle Database base table partitioning models, including: Single-level partitioning: range, hash, list Composite partitioning: range-range, range-hash, range-list, list-range, list-hash, list-list, hash-hash, hash-list, hash-range Partitioning extensions: interval (but not interval-based composite partitions), reference, virtual column-based partitioning The old INDEXTYPE=MDSYS.SPATIAL_INDEX (without the “_V2”) is still available for use, It may provide slightly better index creation performance, especially with small data sets and no partitioning involved. You might also want to use the old type if you need to drop a legacy spatial index and then want to re-create it in exactly the same form as it was before. However, in all or almost all cases you will want to specify INDEXTYPE=MDSYS.SPATIAL_INDEX_V2 when creating any spatial index.
... View more
07-07-2022
05:29 AM
|
0
|
0
|
896
|
POST
|
I've noticed that some organizations forget to enable SPATIAL_VECTOR_ACCELERATION in Oracle databases...now that Oracle Spatial is free. Oracle Spatial Vector Acceleration: Flick the Switch So for any of us who use SDO_GEOMETRY, we need to remember to enable that parameter — to make use of it's performance boosting functionality. (It's enabled by default in 21c+.) I just thought I'd mention that...for those of us who were unaware. Note: I've asked the Oracle Spatial team if there's a way to check if SPATIAL_VECTOR_ACCELERATION is enabled (as a non-dba). But I haven't found a solution yet.
... View more
07-07-2022
04:06 AM
|
0
|
0
|
770
|
POST
|
For what it's worth, SDO_Geometry’s SPATIAL_VECTOR_ACCELERATION is disabled in my database (18c), since it's only enabled by default in 21c+. Oracle Spatial Vector Acceleration: Flick the Switch I tried checking to see if it's enabled (from a non-DBA connection) in SQL Developer, but got errors: Check if SPATIAL_VECTOR_ACCELERATION is enabled (as a non-dba) I don't know much about SPATIAL_VECTOR_ACCELERATION. But it sounds like it will make SDO_Geometry even faster in some cases.
... View more
07-07-2022
03:59 AM
|
0
|
0
|
3325
|
POST
|
Related idea (doesn't answer your question): ArcGIS should use the new SDO_GEOMETRY spatial index type: SPATIAL_INDEX_V2
... View more
07-07-2022
03:45 AM
|
0
|
0
|
309
|
POST
|
Yes, get_coordinates() is undocumented. I've talked to folks on the Oracle Spatial team about that. They plan to document it in the next release. If for some reason we didn't want to use get_coordinates(), maybe since it's undocumented, then there are other ways to get the startpoint X&Y from SDO_GEOMETRY. The performance of the alternative techniques is roughly the same as get_coordinates(), although slightly more complicated: select
v.x,
v.y
from
sidewalks
cross join
sdo_util.getvertices(shape) v
where
v.id = 1 Or with
function
sdo_startpoint_x(shape sdo_geometry) return number is
begin
return shape.sdo_ordinates(1);
end;
function sdo_startpoint_y(shape sdo_geometry) return number is
begin
return shape.sdo_ordinates(2);
end;
select
sdo_startpoint_x(shape) as startpoint_x,
sdo_startpoint_y(shape) as startpoint_y
from
sidewalks Or select json_value((shape).Get_GeoJson(),'$.coordinates[0][0]' returning number) as x, json_value((shape).Get_GeoJson(),'$.coordinates[0][1]' returning number) as y from sidewalks There is also: sdo_lrs.geom_segment_start_pt But that just returns a LRS geometry. We'd still need to get the XY from the SDO_ORDINATES_ARRAY, which can be done via cross join sdo_util.getvertices(shape). But that's more clunky than I'd like. Related: Idea: Add a SDO_ORDINATES member function (for extracting collection elements by index) The nice thing about ST_GEOMETRY is that it's easy to use, well documented, and there aren't several weird ways to do a thing...there's usually just one way to do it. But with SDO_GEOMETRY, as I demonstrated above, it's messier. Is it possible to lookup SDE.ST_GEOMETRY by index? I don't think so. That's part of the problem with ST_GEOMETRY. The ordinates are hidden in a blob. Whereas SDO_GEOMETRY ordinates are in plain sight in an array in an object attribute (easily accessible by index number). Note: With ST_GEOMETRY, we can get a specific point/vertex via the point index number: SDE.ST_PointN. But that's just as slow as SDE.ST_StartPoint. And I assume you weren't really referring to that. It seems hard to make any real claims about performance without testing more here. The time difference just looks too large for these to be equivalent queries. Yes, the "startpoint function test" was just one test for a specific use case. I haven't done any official benchmarking with dozens of documented tests or anything like that. But the test I did was legitimate & correct. And it's a good example of how slow ST_GEOMETRY functions can be when used on a medium-sized dataset. I stand by my statement that ST_GEOMETRY functions are generally slower. I've heard the same from others, including Esri staff.
... View more
07-06-2022
06:23 PM
|
1
|
1
|
3339
|
POST
|
I stand by my statement that ST_GEOMETRY functions are generally slow compared to SDO_GEOMETRY functions. I've done lots of testing over the past couple of years. And the results are always the same. But I should clarify that my testing has been with constructor, accessor, and geometry functions. Not relational functions. I've tested dozens of constructor, accessor, and geometry functions, and I consistently find that they're slower than I need them to be. And to be fair, ST_GEOMETRY has been perfectly fast when simply selecting the geometry column from a FC in a map. And the spatial indexing seems to work fine too. But that's not what I was referring to in this post...it's the functions that are slower than SDO_GEOMETRY. I'd be very interested in seeing reproducible examples of ST_GEOMETRY constructor, accessor, or geometry functions being faster than SDO_GEOMETRY. I've not experienced that yet. Here's what I did to make sure the data was apples-to-apples: Created two new line FCs via Catalog with no extra columns, just the OBJECTID and SHAPE. One FC with the ST_GEOMETRY datatype. And one with the SDO_GEOMETRY datatype. Loaded features from an existing FC into the new FCs via the Catalog load tool. Tested equivalent functions for each datatype in queries in SQL Developer. Hit CTRL+END to select all rows in the query, not just the first 50 rows that are selected by default. To me, that seems like a good way to do objective testing for functions. Some additional thoughts on testing: Ideally, the test would be done with auto-generated fake data that can be publicly shared via db<>fiddle or Oracle Live SQL (or whatever works). Then testers could use that public/fake data and load it into our test FCs in our local environments. For example, here's a query that can be used to generate a grid of SDO_GEOMETRY line features: https://community.esri.com/t5/arcgis-enterprise-questions/generate-grid-line-features-using-sql/m-p/1182869/highlight/true#M33343 The grid can be as big as we want, generating more features as needed. That query can be used to create a Query Layer or spatial view in ArcGIS Pro. Then that query/view could be loaded into our test FCs via Catalog...creating features to do the test on. The same kind of thing can be done for polygons using this query: https://community.esri.com/t5/arcgis-pro-questions/convert-grid-lines-to-polygons/m-p/1183816/highlight/true#M56289 And I imagine the first query could be modified to make points instead of lines. As mentioned, I'd be interested to see cases where ST_GEOMETRY functions (constructor, accessor, or geometry) are faster than SDO_GEOMETRY functions. They could be out there...and I just haven't seen them yet.
... View more
07-06-2022
05:51 PM
|
1
|
0
|
3346
|
Title | Kudos | Posted |
---|---|---|
1 | Sunday | |
1 | Saturday | |
1 | 3 weeks ago | |
1 | 2 weeks ago | |
1 | 2 weeks ago |