Hi,
Is there a tool (in ArcMap) to extract data from a map or feature service I am accessing?
Thank you,
Hani
Hi Jake Skinner, I found your tool very useful and helpful but I still get the error below;
iteration = int(data['OBJECTIDS'][-1])
KeyError: 'OBJECTIDS'
See my code block below as well;
username = "ASDERT"
password = "@######"
baseURL = 'http://services5.arcgis.com/b23aIR8OqGRlfJlE/arcgis/rest/services/PropertyEnumerationForm/FeatureSer...'
arcpy.AddMessage('\nGenerating Token\n')
tokenURL = 'https://www.arcgis.com/sharing/rest/generateToken'
params = {'f': 'pjson', 'username': username, 'password': password, 'referer': 'http://www.arcgis.com'}
req = urllib2.Request(tokenURL, urllib.urlencode(params))
response = urllib2.urlopen(req)
data = json.load(response)
token = data['token']
# Return largest objectIds
params = {'where': '1=1', 'returnIdsOnly': 'true', 'token': token, 'f': 'json'}
req = urllib2.Request(baseURL, urllib.urlencode(params))
response = urllib2.urlopen(req)
data = json.load(response)
try:
data['objectIds'].sort()
except:
arcpy.AddWarning("\nURL is incorrect. Or, Service is secure, please enter username and password.\n")
iteration = int(data['OBJECTIDS'][-1])
minOID = int(data['OBJECTIDS'][0]) - 1
OID = data['objectIdsFieldName']
Kindly assist me with this, Thanks
Hi Olaniyan,
When running the tool on the service, I did not receive any errors. Ex:
Thanks Jake,
I was trying to run the script behind a button, see script below;
import pythonaddins import os import datetime import time import os, sys import urllib, urllib2, arcpy, json import uuid arcpy.env.overwriteOutput = True class AGOLClass1(object): """Implementation for AGOL_addin.button (Button)""" def __init__(self): self.enabled = True self.checked = False def onClick(self): username = "TAXXXX" password = "#######" baseURL = 'http://services5.arcgis.com/b23aIR8OqGRlfJlE/arcgis/rest/services/PropertyEnumerationForm/FeatureSer...' arcpy.AddMessage('\nGenerating Token\n') tokenURL = 'https://www.arcgis.com/sharing/rest/generateToken' params = {'f': 'pjson', 'username': username, 'password': password, 'referer': 'http://www.arcgis.com'} req = urllib2.Request(tokenURL, urllib.urlencode(params)) response = urllib2.urlopen(req) data = json.load(response) token = data['token'] # Return largest objectIds params = {'where': '1=1', 'returnIdsOnly': 'true', 'token': token, 'f': 'json'} req = urllib2.Request(baseURL, urllib.urlencode(params)) response = urllib2.urlopen(req) data = json.load(response) try: data['objectIds'].sort() except: arcpy.AddWarning("\nURL is incorrect. Or, Service is secure, please enter username and password.\n") iteration = str(data['objectIds'][-1]) minOID = str(data['objectIds'][0]) - 1 OID = data['objectIdsFieldName']
and I get the error below;
>>>
Traceback (most recent call last):
File "C:\Users\KUNLE\AppData\Local\ESRI\Desktop10.2\AssemblyCache\{322E160C-A3DE-48C9-BEBC-86802FD9C785}\AGOL_addin.py", line 40, in onClick
iteration = str(data['objectIds'][-1])
KeyError: 'objectIds'
>>>
But the script runs well as a script tool under a toolbox. Kindly assist, thanks.
Thanks Jake Skinner for the python script. This is awesome!
Just an FYI for all - in ArcGIS Pro, you can use geoprocessing tools such as 'Feature Class to Feature Class' to export data from a layer off a map service. And you can download all data not just first 1,000 or whatever is MaxRecordCount is set to (as long as the server is not an older version).
Steps
I am trying to fetch data from a map server that I do not manage and I am receiving the following error:
Proxy server got bad address from remote server (verify the server is running). (status code 504).