File Geodatabase operations for Python API

Idea created by john.m.dye on May 24, 2018
    • john.m.dye
    • brambow

    A while back, Joseph Armbruster created a wrapper for the Esri File Geodatabase API. Unfortunately, the last commit there was in 2014 so I think its safe to say its not being maintained any longer. I would really like to see a cross-platform python module for working with File Geodatabases. 


    Like many developers, my workstation is a Mac but since I work with ArcGIS heavily, I run a Windows VM with ArcGIS Pro loaded so that I can access arcpy functionality when there's simply no other way to accomplish a workflow. It's not the most performant setup but it keeps me from having to carry around two laptops.



    It would be great if the ArcGIS API for Python contained some functionalities for creating, editing and working with local File Geodatabases so that I could do it all from the Mac without having to fire up a VM to do some basic data management locally.


    Additionally, once that initial functionality to create, edit and manage file Geodatabases and Feature Classes through the Python API were in place, Esri could could support workflows that would allow users to manage their local data through the Python API.


    Such a workflow might look something like:


    1. Create a new File Geodatabase locally
    2. Create a Domain in the File Geodatabase created in step 1.
    3. Create a new Feature Class
    4. Apply the domain created in step 2 to one or more fields in the Feature Class created in step 3.
    5. Publish the Feature Class created in Step 3 to the ArcGIS Online/Portal or Server to create a Traditional or Hosted Feature Service
    6. Perform some analysis on the Feature Service created in Step 5, likely creating new content containing the result
    7. Download the resulting content produced from Step 6 to the File Geodatabase created in Step 1, using the ArcGIS for Python API's existing Create Replica functionality.
    8. Do more local data analysis using Pandas, Numpy, SciPy or whatever other python library you like.