Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

What technologies and skill sets should one who wants to do web GIS development study/acquire?

One skill/technology per answer please.

share|improve this question

closed as not constructive by R.K., iant, underdark Nov 23 '12 at 19:17

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

3  
Talk about a broad question...can you narrow it down to a specific software stack? Esri? FOSS? Just looking to do google/point data mashups? –  Derek Swingley Aug 7 '10 at 5:00
    
My bad. ESRI or FOSS, is it not possible to have both? Something more complex than point mashups I hope. Enough skills to do something like this. opengeohost.com/maps/stlawrence –  R.K. Aug 7 '10 at 15:17
    
Great question. Let's have one skill per answer. –  Adam Matan Aug 7 '10 at 20:01
    
Thanks. Great idea. Should I post that on the question? I just realized that the question might be broad. Would it be better as a community wiki? –  R.K. Aug 8 '10 at 1:58
    
simmilar problem: stackoverflow.com/questions/1054480/… –  radek Aug 8 '10 at 14:12
add comment

10 Answers

up vote 15 down vote accepted

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.

share|improve this answer
add comment

Assuming you already have the GIS side of things covered (cartographic principles, etc), I would first take a trip to http://www.w3schools.com/ - Run through the tutorials in HTML, Javascript, XML, etc

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 http://resources.arcgis.com/content/web/web-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.

There is also plenty of videos, take a look at this years dev conference videos Id recommend An Overview of the ArcGIS APIs for JavaScript, Best Practices for Designing Effective Map Services, Redesigning Desktop Applications for the Web and Using the ArcGIS Server REST API.

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

Both Silverlight and Flex have more interactivity out-of-the box, where as Javascript makes up for this gap by relying on the Dojo.Framework.

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.

share|improve this answer
    
Wow. Thanks for the overview :D I lean a bit more toward FOSS though as I'm in a third-world country and ESRI products are out of reach of most people here. –  R.K. Aug 7 '10 at 15:30
    
Note that the ArcGIS (and many other) Web APIs do most of their processing on the client side, but they all rely heavily on published services and/or processing on the server side. So, if you want to do much beyond assembling existing resources (e.g. geoprocessing) you may have to investigate server-side technologies, or do some hefty research to figure out how to do it on client-side. –  mwalker Aug 7 '10 at 17:11
    
Noted. Investigating the open geo-stack right now. –  R.K. Aug 8 '10 at 2:05
add comment

Javascript, HTML DOM, CSS, HTTP

If you master these, you can do anything on the web. Adding in nice APIs like SVG will maybe make it easier and your web applications nicer, but IMO you'll never be able to quite get around the four listed above.

share|improve this answer
    
Javascript, HTML DOM, CSS, HTTP Is there a particular order that I should learn them? :) –  R.K. Aug 7 '10 at 15:31
2  
I'd suggest the following order: HTML, CSS, HTTP, DOM, JavaScript, additionally PHP and or Python/Ruby for server-side scripting. –  underdark Aug 7 '10 at 20:00
    
Got it. Thanks. :D I've a long way to go. –  R.K. Aug 8 '10 at 1:47
add comment

Know your way around databases. Any GIS developer will use them extensively.

Most notably:

  • DBMS and the Relational Model. These subjects are crucial for understanding the basics of data storage.
  • At least one GIS DB solution. I prefer PostGIS, but other solution also exist.
  • Good knowledge of SQL and GIS SQL: How to extract, insert, sort and manipulate data efficiently.
  • Classic DB trade-offs: How do different operations affect Memory, Disk Space, CPU and network usage.
  • Indexing. This is important enough for a separate bullet, because its the most common DB Lacuna among beginners.
  • Some knowledge about clustering and scalability.
  • Basic knowledge of NOSQL.
share|improve this answer
    
Even if you're not using databases, you're still using data - and generally it's a safe bet that SQL (or one of its cousins) will be used to query the data. –  mwalker Aug 7 '10 at 20:54
    
I agree that all the above are good things to know, but are they top of the list in regards to WEB development? –  Simon Aug 7 '10 at 23:21
    
What about CQL? Is it necessary too? –  R.K. Aug 8 '10 at 1:45
1  
@simon - Insufficient DB capability is one of the most common problems among GIS developers. IMHO it is one of the most important skills (along with HTML/CSS, JavaScript and map rendering). @r.k. - CQL? –  Adam Matan Aug 8 '10 at 7:35
    
Common Query Language? I encountered it once while working with GeoServer. –  R.K. Aug 8 '10 at 10:15
show 3 more comments

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.

share|improve this answer
    
Thanks. I think I understand layers and tiles fine. It's the rendering part I'm having trouble with. –  R.K. Aug 8 '10 at 11:09
add comment

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.

Make sure you understand WFS and WMS concepts.

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.

share|improve this answer
add comment

Assuming that you managed to sort out your spatial DB and map server [described in other answers here] and brushed up your knowledge of HTML, CSS and JavaScript you might start tinkering with client libraries that will consume and display map components inside user's web browser.

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.

Depending on your knowledge / willingness to learn Python MapFish is very graceful solution as well. Or you can dive into GeoDjango, however I cannot comment much on this solution myself.

Alternatively you could look at ther OSGeo web mapping solutions, turn to Flash, or use something commercial like ESRI Web APIs.

share|improve this answer
add comment

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.

share|improve this answer
add comment

Know your server OS, your web server (IIS, Apache, whatever) and how to secure your stuff - even if someone is doing it all for you.

share|improve this answer
add comment

You can work through my course (https://www.e-education.psu.edu/geog585/) which (I think) gives a good introduction and should get you up and running.

share|improve this answer
    
On it. Thanks :) –  R.K. Aug 11 '10 at 2:20
add comment

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