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.
|
|
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. |
||||
|
|
|
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:
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 |
|||
|
|
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. |
|||
|
|
|
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. |
||||
|
|
|
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. |
|||
|
|
|
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). |
||||
|
|
|
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 :-) |
|||
|
|
