Why GIS and Computer Science Should Integrate Together?
McMaster University hosted GIS Day (Nov. 18th – even though the official day was two days before) and we had presentations from a variety of applied disciplines and workshops. I presented the development side of GIS including last year’s ECCE App Challenge by ESRI. For this, I’m going to talk about the presentation, especially the significance of doing development in GIS.
For starters, we are living in the 21st Century. This is the century where data and programming has become a hot field and will continue to be in the coming decades. Computer processing and library packages in various programming languages (i.e. Python, R, and JavaScript) are more abundant and powerful than ever before and will continue to get better. Second, is data. We are currently living in an era known as the “Information Age”; I would call it the “Data Rush”, kind of like the “Gold Rush” during 1849 in California. Analogous to the “miners” of the “Data Rush” are the data scientists. A data scientist would be knowledgeable in programming, data management, and math, particularly statistics. Data is becoming increasingly available and finer at smaller scales down to the individual level. Acquiring massive data sets that include spatial and temporal information can be used to integrate the disciplines of computer / data science and GIS together. For example, machine learning (a type of Artificial Intelligence) can be applied to predict spatial behavior of a specific population group, which can then be mapped out. I’m applying this kind of example as part of my dissertation (discussed later in another blog). Conceptually, it is easy to know what the researcher, analyst, or programmer is looking for. However, there can be a downside when applying the concept, such as the uncertainty of choosing the best library package due to overabundance or finding the programming language that would be most useful for the applied concept.
There is a wide range of programming languages, each with its own strengths and weaknesses. Some of the most commonly used are Python, R, C++, C, C#, Java, JavaScript (including jQuery), PHP, and Ruby. Based on what I’ve read and past experience, the most appropriate programming languages in data science are Python, R, and SQL. Python is known for automation and data analysis (i.e. Pandas, Scipy, and Numpy packages). R is similar to Python except it is robust in statistical analysis and data visualization (e.g., ggplot2). SQL is excellent for database management and querying. The beauty of Python (and to a certain extent with R) is it’s already integrated in ESRI’s products, particularly ArcGIS. A programmer can use Python to develop spatial analytical tools or automate analytical processes in ArcGIS via ArcPy and open-source packages. R is not integrated in ArcGIS. However, the user can “pipe” or bridge the two components together to communicate and perform the analyses. A classic scenario of when to use R in ArcGIS would be spatial statistics via visualizing clusters.
Those that aren’t as interested in data science or building tools can instead build apps for Android, iOS, or online. As mentioned earlier this is the 21st Century. Most applications are hosted online or in the “cloud” as the overly used buzz term. People browsing through the web or downloading apps is exponentially growing each year (think about it – the mobile app stores that we use today didn’t exist before 2008, and web pages have become increasingly dynamic and interactive over the past decade). In our case, as GIS specialists and Geographers, web maps are the most common online GIS application. Web Maps are important because app users can view interactive spatial information, report a location for an event (e.g., a car accident or crime) to update the map via spatial analysis, or a story map (e.g., before and after comparison of an area hit by a hurricane). Many GIS analysts / specialists have little to no programming skills as it is essentially not required. Fortunately, there are three major routes to choose. One route is to self-teach programming languages as there are countless of resources in the Internet. Android and iOS have their own platform languages, whereas Web apps (not involving data collection as it gets more complicated) involve learning HTML5 (skeleton of the webpage), CSS (aesthetics of the webpage), and JavaScript (self-made functions or the use of Application Program Interface (APIs)). This requires dedication, time, and patience as it can be a steep-learning curve. Second route is to use services that does not require users to program, but only to plug, chug, and download. ArcGIS Online via the App Studio is where GIS or anybody can register an account, select a template, plug in widgets, and then download when finished. Third route is to combine the two routes together to get really creative. The user can make the app via the app builder, download, and then open and “tear” down the file(s) for further modification via programming. This can be done through extension using an open source JavaScript API as a widget or changing the CSS (aesthetics) of the app. Last year’s ECCE app challenge, my team and I decided to make our web app from scratch or choosing the first route. Certainly, it was time-consuming, but in the end it was well worth it as you can become more innovative by integrating computer programming and GIS together.