Page 1 of 1
APIs and SDKs
Maneesh Prasad
Managing Editor & Chief Operating Officer
maneesh.prasad@gisdevelopment.net
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. (http://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.(http://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.[1]
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.
(http://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.
By definition:
- 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.(http://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.(http://webopedia.com)
Usage of Geospatial APIs & SDKs
Some of the platforms where we see
the SDKs/APIs being used for are:
Mobile Platform
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.
Web 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 Platform
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.