Export data from Map Service

11841
14
10-23-2014 03:35 AM
HaniDraidi
Occasional Contributor II

Hi,

Is there a tool (in ArcMap) to extract data from a map or feature service I am accessing?

Clip_715.jpg

Thank you,

Hani

0 Kudos
14 Replies
OLANIYANOLAKUNLE
Occasional Contributor II

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

0 Kudos
JakeSkinner
Esri Esteemed Contributor

Hi Olaniyan,

When running the tool on the service, I did not receive any errors.  Ex:

screen1.PNG

screen2.PNG

0 Kudos
OLANIYANOLAKUNLE
Occasional Contributor II

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.

TanuHoque
Esri Regular Contributor

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

Esad
by
New Contributor III

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).

0 Kudos