What technologies and skill sets should one who wants to do web GIS development study/acquire?
One skill/technology per answer please.
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It only takes a minute to sign up.Sign up to join this community
I can tell you about my experience, which started as a simple geographer, trying to use GIS products to do spatial analysis.
As I said, I'm a geographer, and from the beginning in college I started working with GIS as a user. After that, I started to research on how to automate tedious tasks I had to do often. That came as passion, and after 3 three years, I'm employed by a multinational software house, that works with many GIS systems and developing custom solutions.
My steps were:
Learn GIS well. Don't start out learning programming without having the fundamental right. Projections and transformations, spatial analysis, differences between the raster and vector model, etc.
Learn the database fundamentals: Introduction to Database Systems,Fundamentals of Database Systems. The two books are a bit different. The first is heavy on theory, the second one takes a more practical approach.
Learn SQL. This is actually a second part to the first. It will help you a great deal if you start to think in a "sqlish" manner. SQL changes from vendor to vendor. I can recommend you with PostgreSQL, which , is the vendor that follows the standard the most. If you need to learn specific dialects, do it later, when you actually need it.
Object Oriented Programming. It seems a challenge, but it's quite easy once you grasp the basics. Choose a easy language to do it. Python is by far the easiest one. Learning Python is an excellent starting point. There are open-source/free Python books, like Dive into Python. After Python, interesting choices are: .NET, Java, and C/C++.
Study programming. Read code, write code. Read geospatial code. Write geospatial code. Study the classic APIs: GEOS, JTS, GDAL, ArcObjects (if you are an ESRI fan - and it's a big plus in the market), etc.
- Take a geospatial problem and write code to solve it. I cannot stress how useful this is. This will make you crazy, but it's a very good way to confirm that you learned the programming side and to make sure your geo-spatial skills are up to date. In my case I wrote a small PostgreSQL application to geocode traffic accidents.
Keep on studying. OGC standards are a nice choice here.
Know your way around databases. Any GIS developer will use them extensively.
Then you have a number of different platforms to choose from.
I am a bit biased towards ESRI, and I would recommend starting off by playing about the APIs
- Running through the concepts/samples gives you a real sense of what you can achieve.
I find downloading the code samples and reverse engineering them to work with your own services (assuming you have an instance of ArcGIS Server, otherwise you can use ESRIs sample servers) is a good way to learn.
Which web platform would you choose? Id ignore looking at the WebADF (Java/NET) as this is going to get phased out.
Who are your clients? what browsers will they be using? Can they install Silverlight or Flash plugins? Do you have any IDEs to develop in? e.g Flex is best in FlashBuilder ($$) but you could also use FlashDevelop which is an open source alternative.
Are you more comfortable with established technologies or emerging technologies?
Weigh up the risks.
- .NET/Java have been around for ages - Silverlight & Flex are fairly new and there is some debate on if HTML 5 will wipe these platforms out
The big difference in functionality between Web ADFs and Web APIs is the fact that ArcGIS Web APIs are entirely client-side.
I will leave someone else to give a less-ESRI specific answer, but the obvious choice is to start having a play with the Google Maps API - There are plenty of resources/tutorials for learning this.
OpenLayers seems to be by far the most referenced and used library. It has pretty good documentation and examples, and you can find some tutorials, for example here. BostonGIS pages will be useful for you here as well, not only for OpenLayers stuff.
I agree with Adam that spatial DB and SQL should be a starting point.
After that it might be worth looking at the second tier of your future web geostack. You will need something to act as a bridge 'serving' your data from spatial DB to the client in your users' browser.
Install and start playing locally with your own server. Two well known projects embraced by Open Source Geospatial Foundation are GeoServer and MapServer. QGIS mapserver might be worth a look as well. ArcGIS server would be [costly!] commercial equivalent here.
Once you sort out this part you might start playing with client libraries.
Mapnik or any other map rendering tool for creating map tiles.
Almost any GIS web developer would need to use map rendering tools, or at least understand the basic concepts of layers and tiles.
I can't emphasize George's second to the last comment enough. Pick a geospatial and/or Web problem that interests you and learn about the required technologies as you solve it.
If you take the time to become proficient in all of the areas listed above, it will be forever before you actually start building a project that scratches your itch.
I would suggest starting out with building an app using OpenLayers to build an app maps data from some existing data services. You could then move on to creating your own data sources or services. If you stick with the FLOSS technologies, you will be able to build and use your apps anywhere without license costs an issues.