As you may know Survey123 for ArcGIS creates its own feature service when creating a survey. This exists in either ArcGIS Online's or your Portal's Hosted Data. From there, the data can be downloaded as a File Geodatabase easily. This makes it possible to import the data into a geodatabase, though this works best as a one-time import. To help synchronize an enterprise geodatabase with an on-going survey, we're introducing a Python Script and ArcGIS Toolbox Tool, available on ArcGIS Online. You may choose to use this as a one-type migration or as part of an ongoing data synchronization routine.
This script does the following:
- Log in to ArcGIS Online and download the survey database
- If needed, create the tables in the enterprise geodatabase to store the data
- If applicable, filter out records that have already been synchronized over
- Copy over the data from the database maintaining attachments and relationships
This was authored with ArcGIS Desktop 10.4, but will work with ArcGIS Desktop 10.3 if the pytz
python module is installed.
Parameters used by the tool
The following parameters are needed:
- SDE Connection File | File Geodatabase: Either a .sde file that connects to the destination database or a File Geodatabase
- Table Prefix: The tables are created will have the prefix applied before the name of the table (i.e., if the prefix is 's123', a table in the service with the name 'myform' will be imported as 's123myform'). This is to prevent the chance of accidentally overwriting tables of the same name. This needs to be unique per survey.
- Feature Service URL: the url to the Feature Service endpoint. This is the endpoint for the Service, not an individual layer (i.e., it will end with '/FeatureServer' with no numbers)
- Time Zone: Dates in ArcGIS Online are stored in UTC time; python processes by default without a time zone. The time zone parameter is needed to calculate the difference. The time zones are specificed in this list.
- Portal: either 'https://www.arcgis.com' for ArcGIS Online or the Portal's url
- Username: your username for ArcGIS Online / Portal
- Password: your password for ArcGIS Online / Portal. If you don't supply it, you'll be prompted by the script after it starts
If you run the geoprocessing tool in ArcMap and are already signed into to your ArcGIS organization, the script will use that information instead of the Portal
, Username
and Password
parameters.
How to use the script
There are three ways to use the script:
- ArcGIS Script tool: This provides a graphical interface to the tool using ArcGIS Desktop. If you have an enterprise login, first sign into ArcGIS Online or your Portal for ArcGIS, within ArcGIS Desktop.
- Command line: Invoked with parameters specified. The usage in this case is:
python syncSurvey.py <SDE Connection File | File Geodatabase> <Table Prefix> <Feature Service Url> <Time Zone> <Portal> <Username> [Password]
- Using a config file: The parameters above can be stored in a text file and read by the script, making automated syncronization jobs easier. To run in this mode, use the following syntax:
python syncSurvey.py CONFIG <path to config file> <section name>
.
The config file has the following format:
[SECTION_NAME]
portal: https://www.arcgis.com
username:
password:
service_url:
sde_conn: <The path to a .sde file that connects to the destination DB OR a File GDB>
prefix: s123
timezone: US/Pacific