In this tutorial, you access and query a hosted feature layer.
Query a feature layer using API key authentication Query a feature layer using user authenticationA feature layer can contain a large number of features. To access a subset of the features, you can execute a SQL or spatial query, or both at the same time. You can also return the attributes, geometry, or both attributes and geometry for each record. SQL and spatial queries are useful when a feature layer is very large and you just want to access a subset of the data.
Portal and data services guideLearn more about feature layers and feature services in Hosted feature layers.
PrerequisitesAn ArcGIS Location Platform, ArcGIS Online, or ArcGIS Enterprise account.
Steps Create a private feature layerFor this tutorial, you will use the Santa Monica Parcels dataset to create a private hosted feature layer in your portal.
In your web browser, go to the Santa Monica Parcels item.
Click the Download button to download the zip file locally. Do not unzip this file.
Import the shapefile into ArcGIS.
In your web browser, go to ArcGIS.com and sign in with your ArcGIS Location Platform account.
In the top navigation bar, click Content.
Click New item. To upload the Santa Monica Parcels shapefile, you can either:
Select Add Santa Monica Parcels.zip to publish the file as a hosted feature layer.
In Fields, leave all fields at their default settings and click Next.
In Location settings, leave the default settings and click Next.
Set the following information in the item details pane:
Santa Monica Parcels
Santa Monica
Parcels
.Parcels in the Santa Monica Mountains.
Click Next to create the new feature layer and feature service.
In the feature service item page, make sure the Share setting is set to Owner.
Scroll down to the URL section and copy the URL into a safe location. You will use this in a later step. The URL will look something like: https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Santa_Monica_Parcels/FeatureServer
.
In your web browser, go to ArcGIS.com and sign in with your ArcGIS Online account.
In the top navigation bar, click Content.
Click New item. To upload the Santa Monica Parcels shapefile, you can either:
Select Add Santa Monica Parcels.zip to publish the file as a hosted feature layer.
In Fields, leave all fields at their default settings and click Next.
In Location settings, leave the default settings and click Next.
Set the following information in the item details pane:
Santa Monica Parcels
Santa Monica
Parcels
.Parcels in the Santa Monica Mountains.
Click Next to create the new feature layer and feature service.
In the feature service item page, make sure the Share setting is set to Owner.
Scroll down to the URL section and copy the URL into a safe location. You will use this in a later step. The URL will look something like: https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Santa_Monica_Parcels/FeatureServer
.
Select a type of authentication below and follow the steps to create a new application.
Create developer credentials in your portal for the type of authentication you selected.
Create a new API key credential with the correct privileges to access the resources used in this tutorial.
Create a new OAuth credential to register the application.
To use this application, users must have an ArcGIS account with the necessary privileges to access all resources and services.
Set developer credentialsUse the API key or OAuth developer credentials so your application can access location services.
Update the accessToken
variable to use your API key.
Use dark colors for code blocks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const accessToken = "YOUR_ACCESS_TOKEN";
In both the index.html
and callback.html
files, replace YOUR_CLIENT_ID
and YOUR_REDIRECT_URL
with the client ID and redirect URL of your OAuth credentials.
index.html
Use dark colors for code blocks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* Use for user authentication */
const clientId = "YOUR_CLIENT_ID"; // Your client ID from OAuth credentials
const redirectUri = "YOUR_REDIRECT_URI"; // The redirect URL registered in your OAuth credentials
const authentication = await arcgisRest.ArcGISIdentityManager.beginOAuth2({
clientId,
redirectUri,
portal: "https://www.arcgis.com/sharing/rest" // Your portal URL
})
callback.html
Use dark colors for code blocks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
arcgisRest.ArcGISIdentityManager.completeOAuth2({
clientId: "YOUR_CLIENT_ID", // Your client ID from OAuth credentials
redirectUri: "YOUR_REDIRECT_URI", // The redirect URL registered in your OAuth credentials
portal: "https://www.arcgis.com/sharing/rest" // Your portal URL
})
Run the app and ensure you can sign in successfully.
If you are unable to sign in, make sure you have the correct redirect URL and port. This URL varies based on your application and typically takes the format of https://<server>[:port]/callback.html
or http://my-arcgis-app:/auth
. For example, if you are running an application on http://127.0.0.1:5500/
, set http://127.0.0.1:5500/callback.html
as your redirect URL in the index.html and callback.html file and your developer credential. They all have to match!
Copy and paste the code below, following the steps to make a request to the feature service.
Reference the arcgis-rest-request
and arcgis-rest-feature-service
libraries either through CDN, ES Modules, or Node JS.
Paste the feature layer URL you copied earlier to the featureLayerUrl
variable and append /0
at the end of the URL.
Define the parameters needed for the request.
Make a request to the feature service and handle the results.
The maximum number of features returned by a single query request to hosted feature layers is 2000. To return more, you need to detect if the request exceeded the maximum feature amount with exceededTransferLimit
, and then use the resultOffset
parameter to make multiple requests with the appropriate offset values. To learn more, go to Query Layer.
Expand
Use dark colors for code blocks1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<script>
/* when including ArcGIS REST JS all exports are available
from the same arcgisRest global */
/* Use for API key authentication */
const accessToken = "YOUR_ACCESS_TOKEN";
const authentication = arcgisRest.ApiKeyManager.fromKey(accessToken);
// or
/* Use for user authentication */
// const authentication = await arcgisRest.ArcGISIdentityManager.beginOAuth2({
// clientId: "YOUR_CLIENT_ID", // Your client ID from OAuth credentials
// redirectUri: "YOUR_REDIRECT_URI", // The redirect URL registered in your OAuth credentials
// portal: "https://www.arcgis.com/sharing/rest" // Your portal URL
// })
// Replace the following with your own layer URL
const featureLayerUrl = "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Santa_Monica_public_parcels/FeatureServer/0" // Your feature layer URL goes here
arcgisRest
.queryFeatures({
url: featureLayerUrl,
where: "usetype = 'Commercial'",
resultRecordCount: 1,
authentication
})
.then((response) => {
console.log(response.features);
document.getElementById("result").textContent = JSON.stringify(response.features, null, 2);
});
</script>
Run the app
Run the app.
The result should look similar to
this.
What's next?Learn how to use additional ArcGIS Location Services in these tutorials:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4