This sample provider interfaces with a CSV file published on the web and integrates the data with ArcGIS Enterprise. Click here to download the source code for the provider.
Set up the Provider
- Run the
cdf createapp csv-app
command to create a new custom data app, or use an existing custom data app. - Run the
cdf createprovider csv-provider
command to create a custom data provider. - Navigate to the providers/csv-provider directory in a command
prompt and run the
npm i node-fetch@2 valid-url papaparse
command. - Copy the contents of the src folder in the provided source code into the src folder inside your providers/csv-provider/src directory.
- Put the points.csv file on a web server so that it is available through a URL. The file is located in the data folder inside the csv-provider directory.
Configure the Provider
-
In the default.json, file set the url field to the URL where the points.csv file is hosted. Here's how it should look, but your URL value will likely be different.
Use dark colors for code blocks Copy { "csv-provider": { "sources": { "my-data": { "url": "http://localhost/sampledata/points.csv", "geometryColumns": { "longitude": "longitude", "latitude": "latitude" }, "delimiter": ",", "metadata": { "idField": "id" } } } } }
-
In the cdconfig.json file, set the value of the
properties.hosts
field tofalse
andproperties.disable
field toId Param false
. The file is located in the csv-provider directory.
Test the Provider
- Navigate to the csv-app directory in a command prompt, and run
the
npm start
command to start the custom data app. - In a web browser, navigate to>http://localhost:8080/csv-provider/rest/services/my-data/FeatureServer/0/query, and verify that the provider is returning data points.
Build and Deploy the Custom Data Provider Package File
- Stop the custom data app, if it is currently running.
- Open a command prompt, and navigate to the custom data app directory.
- Run the
cdf export csv-provider
command. - In a web browser, navigate to the ArcGIS Server Administrator Directory, and sign in as an administrator.
- Click uploads > upload.
- On the Upload Item page, click Choose File, and select the csv-provider.cdpk file. Optionally, provide a description in the Description text box.
- Click Upload. Once the file is uploaded, you will be directed to a page with the following header: Uploaded item - <item_id> . Copy the item id.
- Browse back to the root of the Administrator Directory and then click services > types > customdataproviders.
- On the Registered Customdata Providers page, click the register link and then paste the item id into the Id of uploaded item field.
- Click the Register button.
Create Feature Service
-
Browse back to the root of the Administrator Directory and click services > createService.
-
On the Create Service page, copy and paste the following JSON into the Service (in JSON format) text box.
Use dark colors for code blocks Copy { "serviceName": "csv", "type": "FeatureServer", "description": "", "capabilities": "Query", "provider": "CUSTOMDATA", "clusterName": "default", "minInstancesPerNode": 0, "maxInstancesPerNode": 0, "instancesPerContainer": 1, "maxWaitTime": 60, "maxStartupTime": 300, "maxIdleTime": 1800, "maxUsageTime": 600, "loadBalancing": "ROUND_ROBIN", "isolationLevel": "HIGH", "configuredState": "STARTED", "recycleInterval": 24, "recycleStartTime": "00:00", "keepAliveInterval": 1800, "private": false, "isDefault": false, "maxUploadFileSize": 0, "allowedUploadFileTypes": "", "properties": { "disableCaching": "true" }, "jsonProperties": { "customDataProviderInfo": { "dataProviderName": "csv-provider", "dataProviderHost": "", "dataProviderId": "my-data" } }, "extensions": [], "frameworkProperties": {}, "datasets": [] }
-
Click Create.
Consume Feature Service
To access the csv feature service that you created in the previous section, use the appropriate URL (e.g., https://<domain_or_machine_name>/<webadaptor_name>/rest/services/csv/FeatureServer). You can use this URL to consume data from your CSV file in ArcGIS clients like ArcGIS Pro, ArcGIS Online, and ArcGIS Enterprise.