Python: Difference between revisions
Brian Wilson (talk | contribs) m →GUI |
Brian Wilson (talk | contribs) |
||
Line 114: | Line 114: | ||
I am trying to tear apart packets with Python to write some network code. | 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. | 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 | |||
* xml.parsers.expat http://docs.python.org/library/pyexpat.html | |||
* xml.sax | |||
I think xml.dom.minidom might do what I need. | |||
== External Links == | == External Links == |
Revision as of 17:19, 4 March 2010
About this page
I am using Python mostly for ESRI Geoprocessing. As I become more comfortable with it I am starting to branch out and use it for other things.
This page is not intended as a tutorial or repository of all Python knowledge. It contains random notes on how I am using Python and will change as I learn what works and does not work for me.
IDE
Komodo
I use ActiveState Komodo 5.x, 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.
Eclipse
I looked at Eclipse for Python but it looked too rudimentary for a beginner. SWT is the widget set used in Eclipse, I am not sure if there are Python bindings for it. It might be a reason to delve into it further. If you are a Java programmer already using Eclipse that might also be a reason to try it with Python.
For the time being though I have made my pact with Komodo.
SPE
http://pythonide.stani.be/ Python IDE
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.
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.
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
ESRI
See also Model Builder
31-Dec-2007 update: ArcGIS Desktop 9.3 includes a new python wrapper module that makes working with ArcObjects a lot easier. I am using ActiveState 2.4.3 with it with good results. It breaks if you try to move up to 2.5.1.
You now just use the python line "import arcgisscripting" instead of directly invoking the COM dispatch thing.
Old notes:
This guy seems to have slogged through a lot of development with it and collected useful notes: http://www.ollivier.co.nz/support/python.shtm
I can add a new one to his list. I was getting error messages on setting gp.workspace = 'foo' where foo is a valid path. It's because the gp object was hanging around in pythonwin's memory. You should be able to say 'del gp' but I gave up and restarted pythonwin to fix it.
When working with ArcToolbox 9.1 and Python 2.1 I have been having lots of crashes in PythonWin. Using it on a computer with ActiveState 2.4.3 I have not been experiencing the same problems. I am going to try installing 2.4x without removing 2.1 so I can fall back on it... I followed the instructions above.
It still crashes. Oh joy. It does not even crash faster.
Open source
How about geoprocessing with OGR/GDAL? Will that do it for me?
Getting Python 2.4 and GDAL without disrupting the ESRI installation... See also Howard Butler's site.
FWtools installs a GUI called OpenEV_FW and a shell environment. It comes with python 2.3.4 which is old. I think Frank does this because it's stable and test with his tools. Going to a newer version means the DLL won't work so you'd need to compile your own.
23-Aug-2006 Python+OGR probably not worth messing with right now. From the OGR site: The Python API isn't really well documented at this time, but parallels the C/C++ APIs. The interface classes can be browsed in the pymod/ogr.py (simple features) and pymod/osr.py (coordinate systems) python modules. The pymod/samples/assemblepoly.py sample script is one demonstration of using the python API.
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
- xml.parsers.expat http://docs.python.org/library/pyexpat.html
- xml.sax
I think xml.dom.minidom might do what I need.
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/