Python
About this page
Wow, it's been a long time since I touched this page! I actually know how to program in Python now, so I don't need to update it.
Okay... I don't know Python + Opensource GIS, so I found this link: http://www.gis.usu.edu/~chrisg/python/2009/
At my day job, I use Python mostly for ESRI Geoprocessing. I stopped using perl some time ago for general purpose scripting, it's easier keeping just one scripting language in my head at a time. I do miss all those semicolons though so I do C/C++/C# to get my share of them.
From the first edition of this page: This page contains random notes on how I am using Python and will change as I learn what works and does not work for me.
Python on Windows
https://sites.google.com/site/pydatalog/python/pip-for-windows
IDE
Komodo
I use ActiveState Komodo, which is not free but I think it's worth it. I think it's about $300. That is for a 'personal' license which means I have permission to install it on all my computers. I admire this approach - I only use one computer at a time. For free, they have a stunted editor "Open Komodo" but I need the debugger.
If you try the eval version you won't want to go back to PythonWin.
Wing
Wing is another commercial Python IDE. I tried it, it is probably really good. I think it has Iron Python support which is something I hope to see in Komodo.
I have a coworker who uses it and we compare notes from time to time. It's equivalent to Komodo. Take your pick.
Eclipse
Eclipse is my last choice for Python.
SPE
http://pythonide.stani.be/ Python IDE
GUI
So far I have used Python for scripting operations such as geoprocessing. Now I am at the stage where I want to start designing GUI based applications especially ones that can be portable between Windows and Linux.
Currently I am trying out PyQT.
I also tried wxWindows and wxPython. I found the designer to be less useful than QT4 Designer.
wxWindows http://wxwindows.org/ a portable GUI platform for forms based on GTK
wxWidgets http://wxwidgets.org/ the widgets used by wxWindows.
Web development
I am writing a web application in Python right now so I have another page started. Python for Web Applications
Some relevant Ubuntu packages
For PyQT, there is a set of QT packages.
For wxPython, boa-constructor RAD tool http://boa-constructor.sourceforge.net/ (Application runs under Linux and Windows) Last release was in 2007, not a good sign. Maybe it's perfect? There is a commercial product that is probably the spirtual heir to boa-constructor called wxDesigner. See http://www.wxdesigner-software.de/
python-card GUI construction framework http://pythoncard.sourceforge.net/ "PythonCard is a GUI construction kit for building cross-platform desktop applications on Windows, Mac OS X, and Linux, using the Python language." I still have fond memories of HyperCard so this one is interesting to me.
python-wxglade GUI designer
python-wxtools
python-wxversion
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius — and a lot of courage — to move in the opposite direction. -- Albert Einstein
Databases
From the ArcGIS perspective, I can access geodatabases using ArcObjects but for the frequent occasions when it runs out of gas, I can tap into the underlying databases.
For shapefiles I can use dbfpy to read and write the attributes, which are stored in the .dbf file.
For personal geodatabases I can tap into the MDB using either ODBC or OLEDB. See Accessing Personal Geodatabases with Python
For file geodatabases... well, ESRI has not released specs yet so I use PGDB's.
Geoprocessing
Content from this section has moved to the Geoprocessing page.
Network programming
I am trying to tear apart packets with Python to write some network code. I am using a module called Scapy and I have started a separate page to keep notes on it.
XML
I am trying to parse a GPX document, so that I can write an ESRI feature class as output. I want to be able to give the script away, so I need to work with the version of Python that is installed with ESRI ArcGIS. When working with ArcGIS, the choices for XML are
- xml.dom
- xml.etree http://docs.python.org/library/xml.etree.elementtree.html
- xml.parsers.expat http://docs.python.org/library/pyexpat.html
- xml.sax
Actually I just got source from http://arcscripts.esri.com/ that I only need to update a bit. It's using the xml.etree flavour. Look here: http://arcscripts.esri.com/details.asp?dbid=16797
External Links
dbfpy for accessing .dbf files
Python on Windows CE (and Pocket PC)
http://pyswarm.sourceforge.net/
Links into official python docs
TUTORIAL http://docs.python.org/tut/tut.html
GENERAL http://docs.python.org/