Running GDAL scripts in ESRI Model Builder

From Wildsong
Revision as of 17:49, 14 June 2013 by Brian Wilson (talk | contribs)
Jump to navigationJump to search

I have a script that runs fine standalone but I need it to run in ESRI Model Builder. I am doing this for a client. I avoid Model Builder because scripts are maintainable and reliable.

I am using the versions of Python, GDAL, and Shapely.

Virtualenv installation

My GDAL/Shapely script won't run in Model Builder because it sets up its environment for the ESRI version of Python 2.6. This is the symptom

TypeError: cannot create weak reference to 'classobj' object

I believe this means the python interpreter is getting confused and trying to import from the wrong site packages. I think I can use virtualenv to get around this problem.

I found these instructions and I am following them right now. http://www.tylerbutler.com/2012/05/how-to-install-python-pip-and-virtualenv-on-windows-with-powershell/

I had already installed OSGeo4W yesterday, and modified the environment on my desktop Windows 7 (virtual machine) to load it so that I can run python from command line shells. The link above gives help on how to do that so I won't cover it here.

Installation instructions, the compact edition:

  • Install OSGeo4W (which includes Python 2.7.4) Get it from http://osgeo4w.osgeo.org/
  • Update environment to include these variables
GDAL_DATA         C:\OSGed4W\share\gdal
GDAL_DRIVER_PATH  C:\OSGed4W\bin\gdalplugins
PYTHONHOME        C:\OSGeo4W\apps\Python27
PATH              C:\OSGeo4W\bin;%PATH%;C:\OSGeo4W\apps\Python27\Scripts

The guy that wrote those instructions is apparently a "powershell" user. Why does anyone use powershell? Or Windows?

  1. I went ahead and did pip virtualenvwrapper-powershell on principal even though I won't touch it
  2. but also did pip search virtualenv to find what else was available
  3. and then did pip install virtualenvrwapper-win just in case.

Then my virtual machine rebooted itself. I think it decided it had had enough of me. Now it's installing Windows updates. How annoying.

Next steps: I read the instructions on the virtualenv package page.