First and foremost, I am not a Python expert. I am not even sure I could effectively play one on TV. As I mentioned at the beginning of the year, I am trying to beef up my Python skills.
Secondly, what I have to say in this post isn’t particularly original or unique. Others have said it before.
So I am posting this because I have fielded some form of this question at least ten times (no exaggeration) in the past couple of months: “What skill do you recommend most for someone getting into GIS today?”
My answer, invariably, has become “Python.”
This may sound like a very programmer-centric answer, and it may be, but just today I got this in an e-mail from one of the senior GIS analysts with whom I work:
Looks like you were right. Can’t use field calculator to do what I’m trying to do. I’ll be writing a Python script.
He had been trying to use the ArcGIS Desktop field calculator to find the minimum value in a column. After a quick call to Esri, he confirmed that it didn’t work that way. Gone are the days when a GIS analyst can just sit down, double-click the icon of their desktop GIS of choice and accomplish everything they need to do solely with the use of WIMP. Truly effective analysts will need to do some scripting and that’s where Python comes in.
Python is a real language that can be used to build real, complex, enterprise-scale applications. It also happens to be very effective for scripting as well. In the Esri world, the thankful sunsetting of VBA leaves analysts with Python as the recommended way to accomplish that. That said, if you are entering the GIS field in 2011, you need to have Python in your arsenal. It simply positions you to work with a broad set of tools, such as:
ArcGIS
Quantum GIS
Mapnik
GDAL/OGR
Shapely
GRASS
PostGIS/PostgreSQL
WeoGeo
GeoDjango
And a host of others discussed here.
And more, I’m sure.
This list is not comprehensive nor is it intended to be. It is meant to show that, wherever you want to go, Python is probably already there. Some of the tools listed there are not strictly GIS tools but are designed to perform some component functions of GIS very well so interpret the list broadly. Also, this list doesn’t really touch upon python libraries that can help with commonly performed related tasks like statistical analysis (things like rpy, which interfaces with R via Python).
If it’s not obvious by now, I am becoming a Python convert and having a lot of fun in my explorations. I can’t think of another time in my career where one language has cut across such a wide array of tools. It makes me wish I could have all those years of AML back.
Hi Bill,
Nice post. I would suggest checking the exercises and slides on Python in ArcGIS that were uploaded a couple of days ago to the Esri web site.
http://resources.arcgis.com/gallery/file/geoprocessing/details?entryID=E659B67B-1422-2418-A0FE-4F1642052299
Hi Alex,
Thanks for the link. I’ll check it out.
Thanks Bill, nice listing! I took the liberty to RT it on twitter to my dutch audience.
I saw that, thank you! I’m glad you found it useful. When I started digging around, I was genuinely surprised at how many tools in the geospatial realm leverage Python. It really is everywhere.
And I like that it works on my Linux box at home. 🙂
Thanks for the link, Bill. I really have blogged the hell out of this topic, haven’t I?
Yes, you have. Thank goodness. 🙂
I’ve found many of your posts to be great resources as your code is high-quality and your accompanying text does a good job of explaining the code. It’s been very helpful to me.
I haven’t been able to spend as much time as I’d like in Python for the past 6 weeks or so but I’m looking forward to digging back in over the summer.
Thank you for continuing to beat the drum.
Bill, which version of Python are these packaging using? 2.6? 2.7? Please let me know.
This answer may not be particularly helpful, but it varies. For instance, Mapnik supports 2.5 or 2.6, depending on version. Shapely says 2.5+ for version 1.2. I *think* you can find good general support that gels around 2.6 but YMMV.
I’m still hacking my way through this stuff. 🙂
Thanks. I will focus on 2.6 then. That is one thing about python that is weird: there are so many active versions floating around. 😛