-1

Next semester is my last at university. I have taken all 3 of the GIS courses offered in my program. Besides some very light interaction with Python though, their has been zero discussion of programming. This has left me feeling unprepared to enter the job market- especially because when I search for GIS jobs online they all mention Python and/or Javascript.

So I asked if I could do a self-directed study next semester in which I will learn either Python or Java or a bit of both.

My understanding is that Python is for automating operations inside the arc environment (or within an IDE but still directly related to automating processes within arc)

Javascript is more about interfacing between GIS (server) and client's.

My question: I would like to know more about how these two languages interact with GIS. What kind of work does each one lead to? Which is a more sought after skill?

closed as primarily opinion-based by PolyGeo Oct 21 '15 at 20:09

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

3

This is a very broad question, but the answer really comes down to what you would like to be doing with your career. There are a few areas you could 'specialize' in when it comes to GIS and programming, but it would be good to know a little of all if you want to be a developer rather than an analyst.

.NET Programming

Learning .NET (Visual Basic .NET and/or C#) is a good way to get into writing custom extensions and stand alone programs (with GUIs) for ESRI. .NET is an access route to ArcObjects (it has bindings in .NET and Java), which give you the power to create your own programs/processes with ESRI components. There are other offshoots like the Runtime, etc, but this means you're more into developing desktop applications and extensions. You can ArcObjects to edit and manipulate data, too. I just find the power lies in creating standalone programs or wanting to incorporate the .NET libraries into your GIS processes (e.g. I created an extension because I wanted to read in an Excel spreadsheet via OleDB because I knew it better than trying to find a python library for a similar thing).

Web Based Solutions

This is where you definitely get into more JavaScript. You will need to learn more HTML/CSS to layout and design the page (assuming it is more than just a map), but JavaScript will definitely be a huge factor here. Web maps are blowing up in GIS, and it seems like every company is publishing some sort of version of their own. This can be tricky since web development runs into a whole bunch of nonsense with cross-browser functionality, desktop vs mobile, etc etc. It is definitely a lot to keep up with. If you have tendencies towards possibly doing more IT stuff in your future, I would highly suggest this route as web developers are definitely in need. Some of the major libraries are ESRI, OpenLayers, Leaflet, and CartoDB. Each of these has an API you need to code a little JavaScript in to make something happen. They typically make it easier though by providing you with properties to be set instead of really requiring you to do DOM manipulation on your own. Of course, you will need to pick up another framework like Dojo, jQuery, AngularJS, or another if you want to have a little diversity.

Python GIS

If you want to be an analyst, it is pretty much expected of you to be able to code a little python. This is a great introduction to programming as python reads like English. It makes understanding the flow of a script easier when you can easily read what is going on. E.g. for item in myList: as opposed to foreach(String item in myList). Python is great for automation in GIS, and I personally find it invaluable for doing a lot of the mundane GIS work that interns/entry level people get stuck doing. If you don't want to be stuck digitizing all day, I suggest picking up a bit of the language and advancing past your peers who can't code (strangely common). ESRI allows you to write extensions in python now, albeit through a confusing program, but it has expanded power.

Other open source systems support python as well. QGIS, GDAL/OGR, Mapnik, and others usually support python bindings. QGIS allows you to use Qt, which gives you the option to create interfaces with your code. By default, python comes with Tkinter, which is a GUI system. It can be tricky to someone who is used to more WYSIWYG operations.

Other Options

If you're really into it, you can pick up on languages like C/C++. This would allow you to jump into some open source projects or be better able to manipulate the spatial libraries that many of the python or .NET libraries on built on top of. Plus, in something like QGIS, it is another language to use to create a widget. This realm is probably more useful for people interested in computer science more so than GIS. The only reason I say that is dealing with concepts like memory points usually would be beyond the scope of most GIS people who are used to a system with garbage collection.

Summary

The language really depends on what you want to do. If you love analysis work and churning out numbers, you can probably get away with just python. If you want to be able to visualize that information in a web page when you're done, picking up the web side of things would be great in addition. .NET and the other options are more of a GIS developer role where you would be creating custom software for others. I do a blend of it all and am considered a developer. The jobs I qualify for are more along the lines of database management and automation with python or creating custom applications (desktop/web). My analyst co-workers know python and that greatly helps them qualify for analyst jobs, but they would be (mostly) useless in a developer role. This is because their code typically is done in smaller scale, and they are used to scripting toward a single purpose.

  • Wow thank you for that extensive answer. Very helpful! I think what interests me the most is Web Development stuff. But it seems like everyone two uses GIS should be able to use python, just for the sake of efficiency. – Kristifer Szabo Oct 22 '15 at 23:12
  • For web, make sure you focus heavily on JavaScript development. Responsive design is huge because of mobile. Frameworks like Bootstrap and Foundation are big too. So another area to focus on is CSS to help out with responsive design. With web, there is a lot to learn and keep up with. It is definitely a challenge. – Branco Oct 23 '15 at 13:27

Not the answer you're looking for? Browse other questions tagged or ask your own question.