|
BLOG
|
"The frequency illusion (also known as the Baader–Meinhof phenomenon) is a cognitive bias in which a person notices a specific concept, word, or product more frequently after recently becoming aware of it." The frequency illusion is happening to me. I have a friend taking a GIS class and he asked me what the difference was between a feature class and a feature layer. Cut to a week later, I received some user feedback describing their bewilderment regarding terms prefixed with "feature". Not to mention that I see the word "feature" everywhere! Upon explaining to my friend what it is in my brain regarding "feature class" and "feature layer", I realized that my definitions were specific to where I have spent my GIS career. This means some context around where "feature" is being used is needed. Let's break down some of the more common places among the Esri stack that rely on this root word. Before we jump in, let's define "feature" in the general geographic sense: Feature: Any part of the earth's surface, or anything found on the earth's surface, that can be represented on a map. Features can represent various types of geographic entities, such as points, lines, polygons, or more complex objects like networks or surfaces. Feature Definition | GIS Dictionary Or, to be GIS specific: Feature data: Geographic entities (or features) represented as points, lines, and polygons. Feature Data Definition | GIS Dictionary Now that we understand the root word, let's look at its different variations and combinations. Geodatabase: This includes file geodatabases, enterprise geodatabases, data warehouses, SQLite, MS Access (personal gdb) and the like. Here are the common terms prefixed by "feature": Feature Class: A collection of geographic features of the same type of geometry (point, line, polygon), the same attributes and the same spatial reference. Feature Class Definition | GIS Dictionary Feature Dataset: A collection of feature classes maintained within a single data structure. Think of a feature dataset as a container of feature classes with the same spatial reference. Feature Dataset Definition | GIS Dictionary Notice that the feature class definition from the GIS Dictionary does not mention any type of data storage. There are other data storage types that are not found in a geodatabase. Shapefiles are also considered feature classes. Other types of GIS storage formats may or may not be officially classified as feature classes but items such as KML, GML, GeoJson could also be labeled as such. Enterprise: In this discussion, ArcGIS Enterprise means ArcGIS Server and ArcGIS Portal. These technologies are from where spatial data is typically accessed. That could be from ArcGIS Pro, some Web GIS application or their web interfaces. The GIS Dictionary says a feature layer is a "layer that references a set of feature data". This is true but we are working within the context of ArcGIS Enterprise. This context pushes us to expand the word to denote its data storage. Feature Layer: The ArcGIS Enterprise documentation splits off into two basic types. Hosted feature layers are created when you publish a feature layer to ArcGIS Enterprise from ArcGIS Pro or from files in the portal. These layers are backed by data that is copied to a system-maintained data store. If Feature Layer is the abstract term for "layer that references a set of feature data" then what are the specific types? These include - Tile Layer, Scene Layer, 3D Tile Layer, Video Layer, Imagery Layer, Group Layer etc. And, to make matters more confusing, a Feature Layer is a type of Feature Layer. Think of the non-abstract Feature Layer as a feature class published to an enterprise. Feature layers—Portal for ArcGIS | Documentation for ArcGIS Enterprise Feature Service: Feature services allow you to serve feature data and nonspatial tables over the internet or your intranet. Think of a feature service as its REST components from ArcGIS Server or through the Portal's data store. A feature service is also defined as an ArcGIS Server feature layer mentioned above. Feature services—ArcGIS Server | Documentation for ArcGIS Enterprise Python API: The ArcGIS Python API allows one to access GIS data from ArcGIS Enterprise, file-based data such as file geodatabase feature classes and shapefiles. One can also work with OGC data, GeoJson and spatially enabled files like CSV and Excel sheets. When discussing the "feature" terms in the ArcGIS Python API context, we're dealing with Pythonic object types. When accessing data from ArcGIS Enterprise, there are typically three types of objects representing feature data. FeatureLayerCollection: A Feature Layer Collection is a representation of a Feature Service. A feature layer collection can have one or more feature layers within. FeatureLayerCollection: arcgis.features module | ArcGIS API for Python | Esri Developer FeatureLayer: Consider a feature layer a single item in a feature layer collection. A feature layer can also be accessed directly but it will only represent one GIS entity. FeatureLayer: arcgis.features module | ArcGIS API for Python | Esri Developer FeatureCollection: Ugh, I know. A FeatureCollection object is an in-memory collection of features. It is an object that has a layer definition and a FeatureSet. FeatureCollection: arcgis.features module | ArcGIS API for Python | Esri Developer FeatureSet / Feature: A feature set is collection of features. Think of a FeatureSet as a query with multiple results returned. A single result would be a feature. FeatureSet: arcgis.features module | ArcGIS API for Python | Esri Developer Feature: arcgis.features module | ArcGIS API for Python | Esri Developer So it looks like context matters. There are many concepts wrapped up in very similar sounding terms and many of those terms are used interchangeably. In my experience, it boils down to a feature is one entity, feature classes and feature layers are collections of similar features and collections are many feature layers in one collection. What are your thoughts? Have you ever run into confusing terminology in the GIS world?
... View more
12-03-2025
10:28 AM
|
6
|
2
|
403
|
|
POST
|
I can reproduce this issue when calling snap_to_line on the point with the line as the second geometry. The reverse is successful. Try snapping the point to the line. point_geom(line_geom) = GP error line_geom(point_geom) = Success (point geometry is returned) It looks like this is expected although the Python API documentation is somewhat confusing. The snapToLine method doc states that a point feature should be argument passed. """Geometry.snapToLine(in_point) Returns a new point based on in_point snapped to this geometry. in_point(PointGeometry): A point ( PointGeometry or Point ) to be snapped to the line."""
... View more
11-06-2025
09:02 AM
|
0
|
1
|
364
|
|
IDEA
|
According to the /extractChanges parameter list, the returnIdsOnly parameter is what triggers the sync/async response. The function does not have a dedicated async parameter like most other functions. Extract Changes (Feature Service) | ArcGIS REST APIs | Esri Developer Using return_ids_only should work when using the Python API as well. I will look into the reasoning behind adding the "async": True option in the Python API. I believe this is misleading and causing confusion.
... View more
11-03-2025
01:09 PM
|
0
|
0
|
134
|
|
POST
|
Can you try with the latest version of the Python API (2.4.2)? The `folder.add` method returns a `Job` object. The `Job` object has the `done` method to allow for polling of the upload status and the `result()` method to retrieve the `Item`. arcgis.gis module | ArcGIS API for Python | Esri Developer
... View more
10-27-2025
11:33 AM
|
1
|
6
|
533
|
|
POST
|
Adding to the response from @Clubdebambos : This was fixed to allow for long url strings to be properly decoded in a GET request. The fix can be found in the 2.4.1.3 patch and the latest 2.4.2 release.
... View more
10-20-2025
06:25 PM
|
1
|
0
|
630
|
|
POST
|
@IsakL The documentation page will be updated with samples. The `ContentManger.folder.core.Job` class will have a result method. # Usage Example: Getting item resulting from a job
from arcgis.gis import GIS, ItemTypeEnum, ItemProperties
gis = GIS(profile="your_online_profile")
csv_file_path = "/path/to/your/data.csv"
new_data_item_job = gis_folder.add(
item_properties=ItemProperties(
title="new_source_csv_item",
item_type=ItemTypeEnum.CSV,
snippet="A new csv item.",
description="CSV data item added through a folder add.",
tags=["csv_item", "gis_data"]
),
file=csv_file_path
)
if not new_data_item_job.done():
print("... job processing...")
else:
csv_item = new_data_item_job.result()
csv_item
<Item title:"new_source_csv_item" type:CSV owner:online_data_owner>
... View more
08-25-2025
11:24 AM
|
0
|
1
|
1433
|
|
POST
|
Hi @IsakL You're right, the documentation is not accurate. This has been addressed and will be available in the next release. The server is returning a job and the Python API has begun taking advantage of that. The `folder.core.Job` object that is now being returned has the `result` method which will return the added `Item`. item_props = ItemProperties(
title="new_shapefile_item",
item_type=ItemTypeEnum.SHAPEFILE.value,
tags=["tag1"],
snippet="Demo item added from Python API",
)
add_job = folder.add(
item_properties=item_props, file=r"E:\data\some_lines.zip"
)
print(type(add_job))
print(add_job.result())
# >>> <class 'arcgis.gis._impl._content_manager.folder.core.Job'>
# >>> <Item title:"new_shapefile_item" type:Shapefile owner:my_username>
... View more
08-15-2025
10:35 AM
|
1
|
4
|
1711
|
|
POST
|
What version of Pro and Python API are you using? Some changes went in last August that help the API better manage version locking.
... View more
01-31-2025
03:32 PM
|
0
|
1
|
1943
|
|
POST
|
Give one or both of these a try: When using the Version object, use the context manager with the "read" argument, then set the mode to "edit" inside. This will help manage the starting and stopping of the edit session automatically. The initial "read" session will acquire shared locks on the version and "edit" will apply the exclusive locks. with version_mgr.get(version_name, "read") as version:
version.mode = "edit"
res = version.edit(fl, updates=edit_feature)
print(res) Usually (not always) the error "Object has no schema locks" means the edit session either didn't start or there is an old edit session still open. You are using purgeLock to fix that which is correct. The error "Cannot acquire a lock" means there is an open edit session. This is where the context manager should help. Upon exiting, it should stop any open read and/or edit sessions with that session ID. Alternatively, try using the edit_features method in the FeatureLayer object by passing in the version name string. fl.edit_features(updates=[edit_feature], gdb_version="owner.version_name") Editing Features | ArcGIS API for Python
... View more
01-31-2025
09:31 AM
|
0
|
1
|
1957
|
|
POST
|
Hello, Adding a new field to a published feature class will require a few things. These can be done through the server manager web page. Uncheck the Lock Database Schema option. Go to your service and then the Parameters section. Click Save and Restart (this is a service level change and requires a restart) Go to your feature class and add/update any fields or any other type of schema change needed. Add the parcel fabric to a map and go to Share > Overwrite Existing Service Once the service is finished overwriting, go back to the Parameters page and check back on the Lock Database Schema option. Save and Restart the service again. Adding a new field(s) and adding new parcel types to a parcel fabric is considered a schema change and requires the service to be republished or overwritten. Changes to service options such as adding capabilities or in this case unlocking the schema are considered service level changes and only require restarting. For more information, see our Data Management Meetup video here: Meetup: Parcel Fabric Data Management - Esri Community
... View more
09-13-2024
08:14 AM
|
1
|
0
|
633
|
|
POST
|
If you decide to go the join route with SQL, as @jcarlson mentioned above, querying branch versioned features requires some extra logic. See the link below describing how to join an outside table to a parcel type feature class. The Records feature class can be used instead. Once the structure of the join is built, the result can be further filtered on a date. -- Filter from sub result set
AND a.RetiredByRecord IS NULL
AND a.IsSeed <> 1
AND a.create_date = '2023-07-13 16:12:55.473' Query Branch Versioned Parcels - Esri Community
... View more
07-12-2024
09:14 AM
|
2
|
0
|
764
|
|
POST
|
Hi Matthew, When the option is checked, the layer IDs should never change. Let me know if you're seeing something different. On the other hand, if you uncheck the "Ensure map is set to allow assignment of unique IDs" option, you then have the ability to assign your own Assign layer IDs—ArcGIS Pro | Documentation To answer your question: But I can't just overwrite with the new layer, because that would break maps that used that layer, right? Yes, it would be possible that maps and any scripts or custom applications that rely on a specific layer ID could break.
... View more
05-21-2024
11:32 AM
|
0
|
0
|
1744
|
|
POST
|
Hi Matthew, You'll want to ensure that during publishing, the "Allow assignment of unique numeric IDs" option is checked. From Pro, that option is in the map properties When analyzing the publishing of the service, this unique ID option is flagged as an error unless the following option is unchecked.
... View more
05-17-2024
03:30 PM
|
0
|
2
|
1799
|
|
POST
|
Hi Matthew, There's a somewhat hidden option that needs to be handled before adding the parcel type to an already published fabric. In the Server Manager > Parameters page, uncheck the Lock Database Schema option. Here are the steps I would suggest if the service is currently at its original starting point. Go to Server Manager > Parameters and uncheck the Lock Database Schema Option Click save and restart (this is a service level change that requires restarting) Run the Add Parcel Type geoprocessing tool Register the feature dataset as branch versioned again. Add all the new feature classes to the map you want to publish Share the map by overwriting the existing published service (or publish a new service) Re-check the Lock Database Schema option Restart the service again Let me know if that helps.
... View more
05-17-2024
11:31 AM
|
0
|
6
|
1870
|
|
POST
|
Hi Ofir, This is a known issue with the Change Version GP tool and we are working on fixing it in an upcoming release. This will help change the version for all container datasets and their associated layers (Parcel Fabric, Utility Network, etc.). In the meantime, we have found success using the ArcGIS Python API to access version information and loop through each layer in the map to change its properties. See this post specifically Thanks, Ken
... View more
02-12-2024
10:57 AM
|
0
|
0
|
1883
|
| Title | Kudos | Posted |
|---|---|---|
| 6 | 12-03-2025 10:28 AM | |
| 1 | 10-27-2025 11:33 AM | |
| 1 | 10-20-2025 06:25 PM | |
| 1 | 08-15-2025 10:35 AM | |
| 1 | 09-13-2024 08:14 AM |
| Online Status |
Offline
|
| Date Last Visited |
Monday
|