I would like to develop my GIS programming skills, where do I start? People say learn C++ or Python but where can I learn this in a geographic context? Tutorials or anything would be very helpful, as would any information on languages/programmes to use.
-
4Do you have any programming knowledge yet? You should at least know the basics before you try yourself in the not so trivial field of GIS.– underdarkCommented Aug 6, 2010 at 19:37
-
1Start with arcgis python... it's easy-to-use. Many samples are available.– user3120Commented Nov 5, 2012 at 23:08
-
1i'm programmer and i know delphi & D2k. i would like to study GIS programming how it possible through online. please help– user41737Commented Dec 9, 2014 at 17:58
-
1This is not an answer. If you want to ask a question, ask a question. If you want to follow this question, mark it as a favorite and check back.– BrancoCommented Dec 9, 2014 at 18:31
10 Answers
There is one blog post from Michalis Avraam that explains essential skills to succeed in GIS career which I think is well written. You will probably find lot of good advices there.
UPDATE: unfortunately upper links are dead but similar topic can be found in one research article Identifying Skill Requirements for GIS Positions: A Content Analysis of Job Advertisements
-
2
-
@UmarYusuf thaks for notifying for dead links. I updated one link with similar subject. Commented Aug 15, 2016 at 18:02
-
Here's a url to the blog post from Michalis Avraam - dusk.geo.orst.edu/gis/PPTs/essential_skills.pdf Commented Mar 1, 2018 at 22:53
I like Chris Garrard's Python for Geoprocessing course materials. http://www.gis.usu.edu/~chrisg/python/2009/ Personally, I find programmatic manipulation of OGR/GDAL to be indispensable.
With respect to finding the best fit for you, consider the software or geostack you wish to be most expert in (like ArcGIS, QGIS, PostGIS-GeoServer-OpenLayers), and then choose programming language(s) that best supports your choice. That'll be discoverable by checking out the language of the associated API or other customization tutorials. A great deal of online programming learning resources exist, and a websearch of your preferred software package + language + "tutorial" will get you rolling.
I also believe in "learning by doing". For example, crank out a simple map with Javascript and Google Maps, and try to add geometry, styling, user interface, and analyses of interest. Work to see what's possible and what's not. As you build, you'll need more sophisticated tools for customization, and this will point to relevant plaftorms, languages, and libraries.
Don't start with C++ and GIS without learning software development first. It's just too much.
Python is a good place to start regardless of what GIS platform you go with later. There are a lot of books, websites and training materials available and a lot of colleges use python as an introduction before going on to the heavy duty programming languages, like c++ and java.
My favourite python resources -- outside of this site -- are Show Me Do, Think Python, Stack Overflow and the mailing lists of the software I use (mostly GDAL and ArcGIS).
I was able to learn Python by sitting down with a copy of Learning Python by Lutz & Ascher (O'Reilly Press). My office uses ESRI products, so to get the connection with ArcGIS, I created several models using ESRI's Model Builder and exported them to Python. Then it was just a matter of looking at the exported python scripts, digging through the book and using ESRI's on-line help system for the geoprocessing topics to get a better idea on how python and ArcGIS work together.
There are very few colleges/universities which offer programming courses related to GIS. I would recommend the Elmhurst College GIS Certificate Program which has two (2) of these courses as part of their GIS Cert. Program, both programming related:
- ISG 100 GIS Programming with ArcObjects
ISG 200 Implementing Geodatabases
The entire program is online and they have a dedicated GIS Server. They teach Python mainly.
Programming in GIS is one of the skill sets listed in The Geospatial Technology Competency Model (GTCM), which has just come out and includes some additional skillsets that may be the ultimate reference source for this: http://www.careeronestop.org/competencymodel/blockModel.aspx?tier_id=4&block_id=708&GEO=Y
-
And it recommends GeoTools as a tool kit - not that we are feeling smug or anything :-) Commented Aug 6, 2010 at 22:19
The answer depends very much on the system you are using and what OS it runs on. I'm primarily programming Manifold on Windows or web-based apps with Manifold on the backend, so I can choose from any .NET language. C# is my personal choice because most examples and tutorials you will find on the web will be in C# (at least for .NET).
Since you are just starting out, Manifold may not be a bad choice. You can get it for under $300 and develop using the free 'Express' versions of Visual Studio.
If you can be a bit more specific we can probably help you more.
The ESRI Virtual Campus offers a couple short introductory courses on using Python for scripting in ArcGIS. I think one of them is free. Taking one would be a great way to see if this is something you're ready to dive deeper into.
Work your way through ArcMap learning the basics of spatial objects handling. When you are comfortable with an operation try to establish the process with ModelBuilder. Model builder is the equivalent of lego in the ESRI world. It makes it possible for you to generate python code. This code will be simplified but it will work.
WingIDE is a tool which makes it easy to handle python scripts, as well as providing you with a predictable environment to try out your scripts. Open the model builder script in the IDE of your choice and play around with it.
As programming languages goes Python is a low hanging fruit. It will take you from the simple level and up :-)
I'm surprised PyQGIS Developer Cookbook is not there yet. I find it indispensable for matching my old GIS skills and my new Python skills, especially without having access to ArcGIS now. If you are more ArcGIS-oriented, then there's much more resources for you.
There is a list of Python training programs on StackOverflow. I personally prefer Checkio.
Unless you already have strong background in some other language (C# for ArcGIS, C++ for opensource GIS), start with Python and learn other languages later. Most GIS-related functions should have similar syntax and usage in Python and those languages, so learning them with previous knowledge of Python shouldn't be that hard.