Saturday, January 31, 2009

From GIS User to Developer - Part 3.

GIS college education typically prepares students for the very basic entry level positions. Assuming you want to have a job five years later that isn't the subject of ridicule or eliminated largely by automation, you should consider yourself a lifelong student. And just what are these entry level GIS positions? Again, my experience in the entire field is limited to just a few years, but talking to people, it seems pretty standard. Many of them are georectification/image processing monkeys. Some are brought on as folks to help maintain larger datasets like municipal water/power lines, parcel boundaries, etc, assuming there isn't a process for the drafters to input in their designs manually. Still others are cartographers in the sense they make custom stylized maps on demand. There is absolutely an art to this and, with the proper motivation, you can make a real statement (or lie) by including, omitting, or tweaking the standard map components. The proper visual display of quantitative data can shift public opinion, lead to a medical breakthroughs, and are sometimes the cause of the international dispute. It really shouldn't be underestimated. The Advice If you find yourself in the standard entry level GIS position, or applying for them, you should be looking for the means to specialize. As far as I know there are three primary ways of doing this.
  1. Not Business
  2. Environmental analysts, land use planners, medical researchers; you name it, they are probably using some form of GIS. Increasingly even the analysis stuff is done by the actual specialists rather than contracted out to a GIS person. This is the result of progressively easier to use tools and their acceptance into mainstream use. You don't necessarily need to go back to school to do this; realistically, the extent of what you can do with GIS software is such that there is a place for people with just enough business knowledge to be the interface between those specialists and the tools. At least for now.
  3. The Data
  4. What features do you have, which ones do you need, how do they relate to each other, how will you organize them? Depending on the size of the organization, there might be a taskforce that is dedicated to answering these questions. It is likely they will be IT professionals, so that is the kind of secondary activity I would recommend.
  5. Applications
  6. Create the tools the other two groups use. The bleeding edge of this is the Rich Internet Applications (RIA) using Silverlight or Flash to make extremely fancy web based mapping applications. And of course, there are probably countless other developers working on in-house custom applications (via ArcEngine) or simply extensions to existing GIS software (usually ESRI).
At the moment I am sort of doing all three of these things, but pushing myself more towards the applications side. I'll have a much bigger chance to do so when I've wrapped up my thesis (Feb 13th defense, March 6th text deadline). Really, I am still new to a much wider GIS world and it would behoove people still doing the entry level stuff to check out some blogs written by people more knowledgeable than myself.

Friday, January 23, 2009

From GIS User to Developer - Part 2

So School I finished up a GIS oriented Geography degree from CWU a few years back. From what I have heard about other, similar programs around the United States, my experience was typical - some general GIS/Computer Science history, labs following relatively closely to ESRI published workbooks using the ubiquitous ArcInfo suite, some quantitative/statistical methods, and some remote sensing stuff. I was lucky enough to do some special projects for actual state and local agencies who wanted some free/cheap maps with perhaps a smattering of analysis work. I thought I would just walk out of the college doors and fall into a low/entry level GIS job, and I might have been able to. But I met a lovely girl, who I ended up marrying, so luckily I found a pretty good excuse to stay around the college until she finished.
I don't really have a relevant picture for this section so here is CNN embarrassing themselves.
And Yet More School Up until I came down to Phoenix, everything I learned about GIS came from Dr. Robert Hickey. He was, at the time, the only member of the faculty to know much about GIS and apparently I had annoyed him enough with not-always-easy to answer questions about his courses. This left the probably mistaken impression I was more intelligent than I actually was at the time. I was curious and motivated. I liked the work and wanted to master it to the extent that was possible. This basically remains true. Anyway, this annoyance/mistaken impression factor got me an assistantship running the GIS lab at CWU. This was basically a helpdesk/IT role that, along with some independent contracting, paid my way through grad school. I get to defend in a few weeks. The Advice The only information I left the school with in terms of automating common GIS tasks was using ModelBuilder. Don't let this happen to you. At the very least, pick up SQL. Even if you don't want to become a developer and intend to live the haunted existence of a business analyst. If you are doing GIS classes you pretty much already have the necessary logic to grasp SQL. Done an attribute query? Then you've basically done half of an SQL SELECT statement. It is a "language" with a ridiculously small amount of actual syntax but can be extremely powerful. Also, it exists in every database in the world. Also, you can be justifiably ridiculed for not knowing it. Assuming you don't take a minor in Computer Science, which I would highly recommend at this stage, try this
  1. Make your ModelBuilder runs. Make them as complicated as you want.
  2. When finished editing, go to File:Export:To Script. Choose Python, you'll be happier learning JavaScript later
  3. Read this basic tutorial and try to make small changes to your script. I know I complained about documentation just a post ago, but mostly because I have otherwise been spoiled rotten by how good ESRI's usually is. Read that too.
You can learn a lot of the basics of object oriented programming from this stuff. There is an alternative, darker route involving the use of the VBA editor in ArcMap. Nothing you make there will make you proud later, and it is possible your future children will be subject to your subsequent crimes.
Some computer science is highly recommended.

Wednesday, January 21, 2009

Brief interlude: What the hell ESRI?

Listen this makes no sense:
  1. The documentation for your VE and GMap JS extensions - which appear to be roughly identical in function - have documentation that contains very different information. To figure out details on the VE.Geometry.ProjectToVEShapes method, I had to hunt down the similar function in the GMaps documentation.
  2. Stop pretending these are really REST functions. Be a little more clear about which JS functions are just SOAP requests you later make into JSON clientside. ProjectToVEShapes demands a proxy for larger requests, which means it is running into browser security features meant to prevent cross-domain scripting attacks (detailed a bit here). Oddly the demand for a proxy was only returned when I tried it in IE, in Firefox I had trouble finding it even with Firebug.
  3. The JS objects you return from ArcServer queries differ in format to the JS objects you require for functions in the aforementioned extensions. If I make an ArcServer Query for some feature class, the object it returns is not valid as an input to Project, for example.
These API extensions, and ArcServer itself, is pretty new. I can understand some of the documentation stuff, but could you be a little more consistant about the JSON formatting? Converting between the two is a bunch of unnecessary work. Am I wrong here? I'm pretty new to this, I could be missing a simple solution or not understand the problem.

Monday, January 19, 2009

From GIS User to Developer - Part 1

I've been doing this four years now and gotten a chance to experience the GIS field from multiple perspectives. I'd like to share these experiences in the hope that someone traveling along the same path can learn from my successes and, of course, the embarrassing mistakes I've made. But first, some backstory: Motivation: I have two basic motivations to get more technical in my job. First, I love tinkering. I build my own computers, jump in on the newest software betas (example: posting from Windows 7), and long before I knew it was worthwhile for employment purposes, I was messing with programming. I wrote a terrible, but fully functional C++ tic-tac-toe game at 15. This means basically nothing now of course, with 8-year-olds routinely getting major Microsoft certifications ("BOY OR GIRL!"), but it was pretty cool to be able to bend a computer to my will. The second motivation has to do with the future of GIS. Future of GIS: There are basically two schools of thought here. The technophile psuedo-utopia/distopia school - depending on your point of view - involves always on, complete geographical awareness via mobile devices or Matrix-style head jacks. Go out for a night on the town and you'll know where your friends are, you find breadcrumbs (static notes) that tell you the places that are crowded/cheaper/better/live nudes/whatever. Hold your phone camera up to the skyline and see information on all the buildings and places in the distance. Almost everything is web based, served by a number of gargantuan server farms run by Amazon (EC2), Microsoft (Azure), or Google (basically everything they do). While somewhat fanciful, a lot of this stuff is here already and running. Check out the 4D map setup D.C. put together so people that go to the inauguration might have a chance to commute out of Washington before the next election. The second school believes this change will happen more slowly, with a place for paper maps and existing uses of GIS in desktop and imbedded applications. Despite advances in mobile internet architecture, it would be foolish to marry all applications to the cloud because the possibility of service interruption for, say, rescue workers is a non-starter. Plus a ton of the data kept by organizations is sensitive in nature and the data giants mentioned above are not as good of stewards of some information. Cartographers and analysts using desktop applications won't go away, particularily for extremely hardware intensive uses. I still consider myself fairly new to the field, but it would appear to me the first group is probably closer to the mark. Of course there will be applications for GIS that will not easily translate into the web; customized statistical modeling, data model design, and anything with heavy raster manipulation comes to mind. But powerful tools for bringing GIS to the masses, to shamelessly add an abominable cliche to this tirade, have been found to be increasingly popular. The dominant player in GIS - ESRI - is quickly moving in the direction of the first school. To make this happen you need developers who are creative and interested in geography. You need analysts and data modelers to make the back end work, and cartographers/designers to make it usable and pretty. The common thread with these folks now is that, to get your stuff online, you'll have to know at least Javascript. Oh sure. You can get away with using a wizard or template system to make a web map, but to do anything really interesting you'll want to pick up a scripting language and probably more. Thus begins this story. I was a student having just finished up a GIS oriented Geography degree. If you are in a similar situation, or anywhere between that and an actual GIS dev, this might help you. Sorry this first bit is somewhat slow.