Managing Editor & Chief Operating Officer
What do we do when we are into construction of a house? We get a plan/architecture of the house prepared. Ask for a civil engineer who works out the material requirements. Than we proceed with the construction of the house, for which we start with the procurements of raw materials like iron, cement, bricks, stone chips etc if it is a brick and mortar house. Rarely, we ask for getting the stone customchipped and bricks custom-baked as per our requirements.
In short what we are using raw materials which are a processed output other agencies. This process is similar to a software application developer using SDKs/APIs. As the civil engineer does not go around getting the bricks baked or iron ore processed in the blast furnace, similarly the application developer will use software libraries which are designed for performing specific functions, rather than worrying about writing codes for those functions from scratch. Specifically talking about geospatial industry, the custom software application developer will not worry about the core technology to render map or read spatial data files. He will simply use an Application Programming Interface (API) which helps him read spatial data file or render the map on computer screen.
But, as the requirement of raw material, will vary with what kind of construction we want as the end product like: residential house, business complex etc., similarly the APIs are not same for all the vertical segment application to be developed. They are domain specific most of the time, if we leave aside the APIs from platform developers like Microsoft etc.
Application Programming Interface
APIs are a kind of software libraries which are developed for certain application. Hence an API will not serve the entire gamut of application software development requirements. As mentioned before, for every specific domain of software application development, we would need a set of APIs. Similarly for the geospatial domain we have specific set of APIs or software library. These APIs will perform certain set of commonly known functions for us. Like map rendering (reading a map from the hard disk and displaying it on the computer screen), zoom in, zoom out pan, etc.
Following are some of the definitions of an API:
- Application Programming Interface or APIs are a set of interface definitions (functions, subroutines, data structures or class descriptions) which together provide a convenient interface to the functions of a subsystem and which insulate the application from the minutiae of the implementation. (https://www.taggly.com)
- An API is a set of commands, functions, and protocols which programmers can use when building software for a specific operating system. The API allows programmers to use predefined functions to interact with the operating system, instead of writing them from scratch.(https://www.iwebtool.com)
- An application programming interface (API) is a source code interface that an operating system or library provides to support requests for services to be made of it by computer programs. Advanced programming interface is a near synonym with wider application that predates the current common usage. In the original term the concept is meant to represent any well defined interface between two separate programs. (https://en.wikipedia.org)
Need for an API
The benefit of this process is that the person who is making iron rods he keeps on specialising in his domain of making good quality iron rods, continuously taking feedback from the consumers and doing his own research and development to strengthen the product. Similarly in Geospatial domain the application development and the product developer are segregated.
To begin with, if you are a starter with GIS you do not need to break your head with geospatial APIs. But if you or your organisation has been using GIS for some time and you/your organisation understands the set the geospatial functionalities which would be required by the people in your organisation, than you can have a software developed, which would be customised to the needs of the organisation and moreover the look and feel would be in tune with the practise followed by the organisation.
Software Development Kit (SDK)
Continuing the analogy of house construction, SDK would stand for a warehouse which has most of the raw materials required. It is important to know that SDK too are specific for their domain, for which we are going to write the application software. SDKs can also be visualised as a “Swiss Knife”, which can perform variety of functions.
- A Software Development Kit (SDK) is a set of tools used to develop applications for a particular platform. An SDK typically contains a compiler, linker, and debugger. It may also contain libraries and documentation for APIs.(https://kyapoocha.com)
- SDK is a programming package that enables a programmer to develop applications for a specific platform. Typically an SDK includes one or more APIs, programming tools, and documentation.(https://webopedia.com)
Usage of Geospatial APIs & SDKs
Some of the platforms where we see the SDKs/APIs being used for are:
Usage of geospatial SDKs/APIs are widespread for the mobile platforms. In this segment, last year “Android” was released. It is an open source mobile application development platform, under the umbrella of Open Handset Alliance (OHA).
The OHA has is an outcome of partnership amongst over thirty technology and mobile companies. Android is not an exclusive geospatial mobile SDK. But it has geospatial components and would have an impact on the location based application development.
Few months before the launch of Android, Magitti was launched which is positioned as an intelligent mobile application development platform. Although it will not be there in the public domain for the developers, it does provide an indication of direction where the mobile platform is heading. The traditional geospatial software developers like ESRI, MapInfo, Manifold, Tatuk and others too have SDKs for the mobile platform.
In this segment open source SDKs, MapServer, from University of Minnesota, and Google Maps API are quite popular. In addition to them we have many tools in the open source and commercial domain. Off late, Mashups have become quite popular which has provided the power to embed the maps into a website even to a general public not into software programming and code writing.
Desktop geospatial APIs, had evolved with the APIs themselves. Today more than a decade since they came into existence, they continue to fuel the vertical segment application software. What started with MapObjects from ESRI, MapX from MapInfo etc have been joined by many APIs including some which comes along with source code in the commercial domain. Which means, you get code to tweak and service assurance along with it.
The SDK tools are further fragment according to the core GIS functionalities, image processing facilities, satellite navigation and positioning receiver tools customisation, 3D image tools, database tools etc. On the application front we have a long way to go before we have large numbers of geospatial SDKs for a specific segment. Also it appears that the geospatial elements along with the vertical segment engineering tools required for a vertical segment available to the software developer would evolve in more tightly equipped manner.