Feedback to Geospatial Extension: confusing nodes' names; track geometry column

I’m pretty impressed and thankful for this extension, I feel like it was long due. My surprise when trying to use it was that the nodes do not have the names I would expect and am used to from other GIS tools. Just to give a few examples, I was looking for a merge operation, to merge all geographic features under one layer. To search I used the search term “merge” and “union”, I only found the unary union, but when reading the description this is the operation usually called “dissolve”, where 2 or more geometries become one. Exploring further I found the spatial join and thought using this would help, but it seems like what you called spatial join is actually what we usually call intersection. So it becomes really tricky to find the right operation in the extension.
Another issue I encountered is that for each node we need to select the geometry column, even if we selected it in the previous node and have already connected it to this node. At some point in the workflow a “geometry#1” starts to appear as an option besides the “geometry” and I do not know the difference because I have no control over these names. In the end my overlay function fails and I have no idea why, I tried all the combinations of geometry or geometry#1 without success.
It might be a good idea to track the geometry changes at each step or to make sure that when we define a connector whatever geometry was in the previous node is the one that will also be used in the current one.

5 Likes

Hi @Magali ,
thank you very much for the feedback! I will discuss it with my colleagues.
Best,
Daria

1 Like

Hello @Magali ,
thanks for the feedback. We tried to use similar/same names as used in ArcGIS and QGIS. However sometimes we couldn’t use the same name e.g. we have two different nodes for Dissolve and Unary Union where the operation in AcrGIS and QGIS is called dissolve. What Geospatial tool are you using? We can add keywords to the different nodes to make them easier to find and will also improve the node description over time.
Regarding the geometry vs geometry#1 column name, you are right. Right now the behavior is not consistent and user friendly. With the next version the nodes will come with an additional option that lets the user decide if he wants to replace the selected column or append a new column with a user defined name.
Bye
Tobias

1 Like

Thank you for your answer Tobias.
I mostly use QGIS.
I understand the logic of the names, but I find the operations are not easy to find since they are “hiding” under the nodes’ options.
Nevertheless, in the case of the union I’m not sure if the description is wrong or if we need another option for what I actually want to do. I have two different layers with geometries (both polygons) that I want to merge into one layer only. The description of the union operation would only keep the geometries of the first layer and the ones from the second layer that intersect the first layers, but I want to keep all the geometries from both layers. I tried to run the operation to test what it actually does, but I got an error:
“ERROR Overlay 3:10 Execute failed: (“PythonNodeRuntimeException”): None”
I tried running intersection and it worked (returned an empty table which is fine since those 2 layers do not have overlapping features).
Any advice?
Thank you in advance.

Hi Magali, the spatial join function comes from geopandas package, it only allows returning one single geometry either from left or right(Refer to the following source code ) so if you want to keep all geometries, you can use the Concatenate node to combine the geometry column directly, more like Append or Merge in ArcGIS Pro.

def sjoin(
left_df,
right_df,
how=“inner”,
predicate=“intersects”,
lsuffix=“left”,
rsuffix=“right”,
**kwargs,
):
“”"Spatial join of two GeoDataFrames.
See the User Guide page :doc:../../user_guide/mergingdata for details.
Parameters
----------
left_df, right_df : GeoDataFrames
how : string, default ‘inner’
The type of join:
* ‘left’: use keys from left_df; retain only left_df geometry column
* ‘right’: use keys from right_df; retain only right_df geometry column
* ‘inner’: use intersection of keys from both dfs; retain only
left_df geometry column
predicate : string, default ‘intersects’
Binary predicate. Valid values are determined by the spatial index used.
You can check the valid values in left_df or right_df as
left_df.sindex.valid_query_predicates or
right_df.sindex.valid_query_predicates
Replaces deprecated op parameter.
lsuffix : string, default ‘left’
Suffix to apply to overlapping column names (left GeoDataFrame).
rsuffix : string, default ‘right’
Suffix to apply to overlapping column names (right GeoDataFrame).

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.