Sunteți pe pagina 1din 68

POLYLINE AND POLYGON PLOTTING IN MAP OBJECTS

_______________

A Thesis

Presented to the

Faculty of

San Diego State University

_______________

In Partial Fulfillment

of the Requirements for the Degree

Master of Science

in

Computer Science

_______________

by

Akhil Latta

Fall 2010
iii

Copyright 2010

by

Akhil Latta

All Rights Reserved


iv

DEDICATION

I dedicate this thesis to my family members who have helped me gain confidence and
motivated me to complete my work.
v

ABSTRACT OF THE THESIS

Polyline and Polygon Plotting in Map Objects


by
Akhil Latta
Master of Science in Computer Science
San Diego State University, 2010

A user can plot polyline and polygon using Google APIs as well as using ArcGIS 9.
I chose MapObjects to display the data points. A polygon can represent a property or a lake
on a county map whereas a polyline could represent a border or a route.
The thesis explores polyline and polygon plotting on a map using Map Objects. It
enables users to plot polyline and polygon on a map. This thesis makes use of a recent
technology which enables users to plot data without buying expensive software. Moreover
using a computer simulation rather than referring to a paper map is much more engaging and
better aligned to the interests of modern users. User can save the plotted polygon and
polyline as a shape file or a text file. A user can easily load their data points from a text file
and the application will plot a polyline or polygon based on the co-ordinates provided in the
file. The application also computes the total distance of the polyline as well as the perimeter
of the polygon plotted by the user. A customized toolbar has been added to make the GUI of
the application more users friendly. Help System has been embedded into the application to
guide the user.
The application utilizes Map Objects Java Edition and Java programming language.
ESRI provides Map Objects Java Edition for free. Every attempt has been made to present
subject in depth using a user friendly interface.
vi

TABLE OF CONTENTS

PAGE

ABSTRACT ...............................................................................................................................v
LIST OF TABLES ................................................................................................................. viii
LIST OF FIGURES ................................................................................................................. ix
ACKNOWLEDGEMENTS ..................................................................................................... xi
CHAPTER
1 INTRODUCTION .........................................................................................................1
1.1 GIS .....................................................................................................................1
1.1.1 Components of a Geographic Information System ...................................1
1.1.2 How a GIS Works .....................................................................................2
1.2 Overview ............................................................................................................4
2 TECHNOLOGY ............................................................................................................6
2.1 JAVA .................................................................................................................6
2.2 Map Objects JAVA Edition ...............................................................................6
3 REQUIREMENTS.........................................................................................................8
3.1 Platform Requirements ......................................................................................8
3.2 Functional Requirements ...................................................................................8
3.3 Other Requirements ...........................................................................................8
4 WORKING WITH GEOMETRY..................................................................................9
4.1 About the Object Model for Geometry ..............................................................9
4.1.1 Geometry Collection Interface ................................................................10
4.1.2 ClementiniGeometry Interface................................................................10
4.1.3 FeatureGeometry Interface .....................................................................10
4.2 Accessing the Geometry ..................................................................................11
4.3 Polygons...........................................................................................................11
4.3.1 Convex Polygon ......................................................................................12
4.3.2 Concave Polygon ....................................................................................13
4.3.3 Identifying Polygon Geometry ...............................................................13
vii

4.4 Polylines...........................................................................................................14
5 SHAPEFILE ................................................................................................................17
5.1 Elementary Depiction ......................................................................................17
5.2 Crafting a Shapefile .........................................................................................17
5.3 Main File ..........................................................................................................17
6 NETBEANS IDE AND MAP OBJECTS ....................................................................22
6.1 Elementary Facts ..............................................................................................22
6.2 Step by Step Project Creation ..........................................................................22
7 UNDERSTANDING TOOLBARS .............................................................................29
7.1 ZoomPan ToolBar ............................................................................................29
7.2 Add Delete Layer .............................................................................................30
7.3 Selection Toolbar .............................................................................................31
7.4 MeasureGeocode Toolbar ................................................................................33
8 CUSTOM TOOLBAR .................................................................................................34
9 FUTURE ENHANCEMENTS ....................................................................................42
REFERENCES ........................................................................................................................43
APPENDIX
A LIST OF ACRONYMS ...............................................................................................44
B README .....................................................................................................................46
viii

LIST OF TABLES

PAGE

Table 5.1 Main File Values ......................................................................................................19


Table 5.2. Shape Types ............................................................................................................20
Table 7.1. ZoomPan Tools .......................................................................................................29
Table 7.2 Add/Delete Tools .....................................................................................................31
Table 7.3 Selection Tools ........................................................................................................32
Table 7.4. Measure Tools.........................................................................................................33
ix

LIST OF FIGURES

PAGE

Figure 1.1. GIS map making. .....................................................................................................3


Figure 1.2. Relational design. ....................................................................................................4
Figure 4.1. Object model for geometry.. ....................................................................................9
Figure 4.2. FeatureGeometry interface. ...................................................................................10
Figure 4.3. Regular polygons. ..................................................................................................12
Figure 4.4. Convex polygon.....................................................................................................12
Figure 4.5. Concave polygon. ..................................................................................................13
Figure 4.6. Polyline. .................................................................................................................14
Figure 4.7. Polyline class interface. .........................................................................................15
Figure 5.1. Different ways of creating a shapefile. ..................................................................18
Figure 5.2. File header. ............................................................................................................18
Figure 5.3. Polyline record content. .........................................................................................20
Figure 6.1. Select java application from right pane. ................................................................23
Figure 6.2. Give a project name. ..............................................................................................24
Figure 6.3. Creating a new library. ..........................................................................................25
Figure 6.4. Giving library name. ..............................................................................................26
Figure 6.5. Selecting class path................................................................................................27
Figure 6.6. Selecting JAR files. ...............................................................................................27
Figure 6.7. Added JAR files. ...................................................................................................28
Figure 7.1. ZoomPanToolBar. .................................................................................................29
Figure 7.2. Add Delete toolbar. ...............................................................................................31
Figure 7.3 Selection toolbar. ....................................................................................................32
Figure 7.4. MeasureGeocode toolbar. ......................................................................................33
Figure 8.1. Custom toolbar. .....................................................................................................34
Figure B.1. Java version...........................................................................................................47
Figure B.2 Application at the launch. ......................................................................................48
Figure B.3. Polyline tool selected. ...........................................................................................49
x

Figure B.4. Polyline plotted. ....................................................................................................50


Figure B.5. Polygon tool selected. ...........................................................................................51
Figure B.6. Plotting points. ......................................................................................................52
Figure B.7. Polygon plotted. ....................................................................................................53
Figure B.8. Save as. .................................................................................................................54
Figure B.9. Select the location where you want to save the shape file. ...................................55
Figure B.10. Adding a layer. ....................................................................................................56
Figure B.11. Loaded shape file. ...............................................................................................57
xi

ACKNOWLEDGEMENTS

I would like to express my sincere appreciation for my advisor Dr. Carl Eckberg for
giving me the opportunity to work on this thesis project. His constant guidance, support and
motivation throughout this project have helped me achieving my goal.
I would like to thank Professor William A. Root and Professor Carmelo Interlando for
being my committee members and for their help and co-operation.
I would also like to thank my wife Richa, my parents Mr. Bhupesh Latta and Mrs.
Himani Latta, and my brother Karan for their constant support. This would not have been
achieved without their love and blessings.
I would take this opportunity to thank my friends Abhishek Sood, Sumit Paul, Kunal
Sood, Sachin Jain and Digvijay Singh for always encouraging and supporting me.
1

CHAPTER 1

INTRODUCTION

The tool has been developed using MapObjects [1] and java programming language
with Net Beans IDE (Integrated Development Environment) [2].What is MapObjects? Well it
is a suite of Java-based developer components for creating client or server side mapping and
GIS applications.

1.1 GIS
A geographic information system (GIS) integrates hardware, software, and data for
capturing, managing, analyzing, and displaying all forms of geographically referenced
information.
GIS allows us to view, understand, question, interpret, and visualize data in many
ways that reveal relationships, patterns, and trends in the form of maps, globes, reports, and
charts.
A GIS helps you answer questions and solve problems by looking at your data in a
way that is quickly understood and easily shared [3]. GIS technology can be integrated into
any enterprise information system framework [3].

1.1.1 Components of a Geographic Information


System
Geographic Information System (GIS) is made up of five key components: hardware,
software, data, people, and methods [4].
Hardware: The system running the GIS application. GIS application can run on
a distributed system and requires the processing speed of systems should be fast
as GIS data files are very large. Since the output is map related the device
display should have good resolution [4].
Software: This component provides the functions and tool which are used to
analyze data and display the geographic information. It also includes a database
management system. A GUI (Graphical User Interface) is also included for the
easy access of the tools e.g. toolbar etc [4].
2

Data: It is a vital part of any application, GIS integrates data such as spatial
data and data from other resources. Geographic data can be collected in-house
or produced by digitizing images from aerial photographs or published maps.
You can purchase data from any commercial vendor. Also, federal government
provides data at no cost [4].
People: GIS users can range from professionals to students at high school [4].
Method: How well a GIS will operate depends on few factors. These factors
can be, how well-designed the plan and its implementation is. Are business
rules ideal for GIS implementation? These factors can be unique to each
organization [4].

1.1.2 How a GIS Works


What a GIS does is that, it stores all the information in the form of thematic layers. It
can have a large collection of these thematic layers which can be linked together by
geography. This is a very powerful and diverse concept which implemented correctly can
solve many real world problems such as monitoring changes in the river and its tributaries
course, change in boundaries of properties etc [4].
GIS TASKS:
GISs perform seven tasks [4].
Input of data
Map making
Manipulation of data
File management
Query and analysis
Visualization of results
Input of Data: GIS does not accept aerial photos, paper maps etc. Hence the geographic data
must be converted to GIS acceptable format. What format of data should I use? GIS accepts a
digital format. Digitizing is a process of converting paper maps into GIA acceptable
computer files. Today, GIS technology enables us to automate this process for large projects
using scanning technology; smaller jobs may require some manual digitizing which requires
the use of a digitizing table. There are many types of geographic data that already exists in
GIS-compatible formats. These data can be loaded directly into a GIS [4].
Map Making: Maps are extremely vital to GIS. There are some traditional manual as well as
automated cartography techniques for making maps with GIS. But we opt for more flexible
3

approach, first we create a database and then we digitize the paper map into a GIS
compatible format. The database will be continuous and scale free since it is GIS based
cartographic. We can then create map products highlighting any location irrespective of scale
[4]. Figure 1.1 depicts the different stages involved in map making.

Figure 1.1. GIS map making. Source: A. E.


THROCKMORTON, Geographic Information Systems.
Westminister University, http://www.westminster.edu/
staff/athrock/GIS/GIS.pdf, accessed April 2010, 2003.

Manipulation of Data: Most of the times, it will be required to manipulate in some way to
make it compatible with your system [4].
File Management: It is very important for all applications. Some GIS projects may store
projects as simple files while other might require a more sophisticated file management
system. Using a database management system (DBMS) is the solution. It will be easier to
store, organize and manage data when the data volumes are large and the numbers of users
are high. A DBMS is nothing more than computer software for managing a database--an
integrated collection of data [4]. An example of relational design is shown in Figure 1.2.
Query and Analysis: After the GIS is fully functional; you can begin to ask simple
questions such as [4]:
4

Figure 1.2. Relational design. Source: A. E. THROCKMORTON, Geographic


Information Systems. Westminister University,
http://www.westminster.edu/staff/athrock/GIS/GIS.pdf, accessed April
2010, 2003.

Distance between two places?


What are the state boundaries?
What is the area of California?
Where to build a new highway?
Visualization: It is the output and can be visualized as a graph or a map. GIS provides
provision to attach reports to maps and final display can include 3-D images [4].

1.2 OVERVIEW
Why do we need such an application? It makes it easier for the users to understand
the co-ordinates by visualizing them. Why do I apt for this particular one? This application is
a freeware, comes in a JAR (See Appendix A) file which is easy to use. What exactly this
5

does? Application allows users to plot polyline and polygon on the map. A customized
toolbar which make this application easy to use has been integrated. A user can select tools
from the toolbar and plot anywhere on the map. Further when it comes to saving the plotted
data, user is given two options either save it as a shape file or as a text file. In chapter 2 we
discuss the technology that has been used and the reason for choosing it. Chapter 3 talks
about the requirements. Chapter 4 will give you a brief overview about the geometry
involved. Polygon and polyline in terms of both geometry and Map Objects has been
discussed. Chapter 5 takes you to shape files, which is the data GIS accepts. In this chapter
we discuss the various ways to create the shape files and how to deal with storing them. In
chapter 6, we discuss how to integrate Map objects with Net Beans IDE (Integrated
Development system). Chapter 7 discusses the standard toolbars while chapter 8 discusses
the customized toolbars. Chapter 9 lists some future enhancements that can be implemented
to make this application more robust. How to use this application? This question has been
answered in Appendix B. Listed there is a step by step procedure that enables user to get the
feel of the application and steps to use it.
6

CHAPTER 2

TECHNOLOGY

2.1 JAVA
Map Objects Java edition, the name justifies the use of java. Java has significant
advantages over other languages and environments that make it suitable for this application.
Some of advantages of Java are as follows:
Easy to learn: I was a novice user when it comes to java. I was good at C/C++;
hence Java was very easy to learn as the syntax is very similar. Moreover Java
was has been designed to be easy to use and is therefore easy to write, compile,
debug, and learn compared to other programming languages [5].
Object-oriented: I was able to make modular programs and reusable code.
Reusability and extensibility were in my mind while I was deciding on the
language to use in this project. Java enables you to do just that; the individual
classes can be extended and reused to add more features [5, 6].
Platform-independent: One of the requirements was that the tool should be
platform independent. A significant advantage of Java is its ability to be
portable. The ability to run the same program on many different systems is very
useful as users can operate from different systems.
Robustness: Reliability is something that no language can promise. A user can
come across errors while writing and compiling code. Java compiler is really
smart when it comes to error checking; also java does an early error checking
which warns the user about the possible errors and warnings [5].
Security: Java provides a secured environment for a user [5].

2.2 MAP OBJECTS JAVA EDITION


Often referred as MOJO particularly at San Diego State University. Map Objects Java
Edition is a powerful collection of client and server side components that developers can use
to build custom, cross-platform geographic information system (GIS) applications. This was
chosen because of its features which enable applications to be developed and deployed in an
efficient way. MOJO comes with a suite of high-level visual Java Beans components which
can be integrated with multiple IDEs. For the development of the thesis Map Objects was
integrated with NetBeans IDE; details on how to integrate NetBeans IDE with Map Objects
can be found in chapter six. [6]
7

Key features as cited from the Map Objects Java Edition brochure which can be
found at [1] are following:
Linking of Various Distributed Data Sources: MOJO allows users to pool local
data with data available on internet to create customized data. This customized
data can be simply integrated with the existing application. Some of the data
formats supported are shapefiles, ArcSDE layers, ArcIMS image and feature
services, Image formats such as BMP, TIFF, PNG, JPG, GIF etc [6].
GIS Proficiencies: Applications made using MOJO have some abilities added
to their functionality such as Labeling map features, Thematic mapping,
Panning and zooming through multiple map layers, Specifying projections,
Querying spatial and attribute data, Performing geometric operations,
Measuring distances, Displaying real time geographic data, and creating layouts
[6].
Easy to Build a User Interface. Polyline and Polygon plotting in Map Objects
has a customized toolbar which was created by bringing in use swing
components with MOJO. A user can easily build applications that include
functional toolbars, dynamic symbol control, query dialogs, overview and insert
maps, and intelligent legends that make your custom applications easy to use
and even easier to develop [6].
8

CHAPTER 3

REQUIREMENTS

The application is a freeware that will enable users to plot on map. The requirement
was to make an interactive tool for users for plotting in Map Objects. The requirements
gathered have been classified into Platform requirements, Functional requirements, and other
requirements.

3.1 PLATFORM REQUIREMENTS


These requirements comprise of the development language used and the GIS scheme
that should be used. The application shall be developed using Java and Map Objects Java
Edition. The tool should run on both windows and Macintosh platforms.

3.2 FUNCTIONAL REQUIREMENTS


The functional requirements refer to details of the tool. Toolbar should have a tool to
plot polyline and polygon anywhere on the map. A tool that allows the user to save the
polyline and polygon as a shape file. Ability to load new shape files and new text files while
the applications is running. User should also be able to print the data depicted on the map.

3.3 OTHER REQUIREMENTS


The project should be completed in a timeline. Table of contents have to be added in
a chronological order. Every layer added in the application should display a distinct color.
All the labels for different layers should be distinct too. All the required toolbars should be
visible when the project is started. Finally the project should be nicely packaged in a JAR file
so it can run on any machine.
9

CHAPTER 4

WORKING WITH GEOMETRY

What defines an objects shape? It is the geometric properties of an object that define
its shape. Gaining access to these properties is very important to perform the GIS operations.
MapObjects libraries can be used to perform various geometric operations such as [1]:
Creating new geometric shapes using Map component.
Returning the geometry of selected shapes.
Obtaining interior and exterior rings of a polygon.
Determining the distance between shapes.
Calculating perimeter, area, union of selected shapes.
Figure 4.1 shows the relation between different components of the object model.

4.1 ABOUT THE OBJECT MODEL FOR GEOMETRY

Figure 4.1. Object model for geometry. Source: ESRI, MapObjects Java Edition manual,
Esri Press, Redlands, California, 2003.

Com.esri.mo2.cs.geom.package has a number of important interfaces and classes.


These classes provide a rich set of functionality for manipulating the above mentioned
geometric objects. All geometry objects extend from the Geometry interface which allows
the geometry to be either copied or cloned. Polylines are associated with features instead of
line class. All feature related geometry extends from FeatureGeometry interface. This
interface further extends from java.awt.Shape interface of the java 2 SDK [1].
10

4.1.1 Geometry Collection Interface


It is a homogeneous collection of geometric objects. It allows user to determine the
size of collection. This interface is a superclass for other types of collection, such as [1]:
PointCollection: a collection of points
SegmentCollection: a collection of segments
MultiPoint: a collection of points
Polyline: a collection of paths
Polygon: a collection of rings

4.1.2 ClementiniGeometry Interface


This interface allows user to access and test the boundary of the geometry. This is
done by comparing two geometries topologically [1].

4.1.3 FeatureGeometry Interface


This interface extends the java.awt.Shape, ClementiniGeometry, and
GeometryCollection interfaces [1]. Various components of the feature geometry interface are
shown in the Figure 4.2.

Figure 4.2. FeatureGeometry interface. Source: MUNAF, Java


advantages and disadvantages. Web-Dot-Dev,
http://www.webdotdev.com/nvd/content/view/1042/204/, accessed May
2010, 2007.
11

FeatureGeometry interface allows following spatial analysis functions:


Buffering
Clipping
Squared Distance
Translations

4.2 ACCESSING THE GEOMETRY


You can obtain the feature by many ways but accessing the geometry can be done
only in one way. You can use getGeometry() method to get a features geometry [1].
Following example illustrates the use of getGeometry() method to return the
geometry of the feature. We assume that the feature layer has already been obtained [1].
//Get features of the currently selected Feature Layer [1].
com.esri.mo2.data.feat.SelectionSet ss;
com.esri.mo2.data.feat.Cursor cursor;
com.esri.mo2.data.feat.Feature feature;
com.esri.mo2.data.feat.FeatureGeometry geometry;

if (layer.hasSelection()) {

ss= layer.getSelectionSet();

cursor= layer.getSelectedData(ss);

if (cursor!=null) {

while (cursor.hasMore()) {

feature= (Feature)cursor.next();

geometry= feature.getGeometry();

}}

4.3 POLYGONS
Polygons are collection of rings. A ring is defined as a closed path of line segments.
Polygons can have collection of one or more of such rings. The segments are edges which
meet in pairs at corners called vertices. The picture shows several regular polygons, which
12

have equal angles and equal edge lengths [7]. Figure 4.3 shows the different kind of polygons
we usually come across. Regular Polygons:

Figure 4.3. Regular polygons.

4.3.1 Convex Polygon


All regular polygons are convex. For a polygon to be convex, it should follow
following two properties [7].
Every internal angle should be less than 180 degrees.
Every line segment between two vertices remains inside or on the boundary.
Using the polyline and polygon plotting tool, you will always end up making a convex
polygon if you plot points either in clockwise or anti-clockwise direction. A convex polygon
plotted by going clockwise is shown in Figure 4.4. Convex Polygon Plotted using the tool:

Figure 4.4. Convex polygon.


13

4.3.2 Concave Polygon


For a polygon to be concave (see Figure 4.5), it should follow any of the following
properties [7].
Any internal angle should be more than 180 degrees.
Polygon should have at least four sides.
Concave Polygon Plotted using the tool:

Figure 4.5. Concave polygon.

4.3.3 Identifying Polygon Geometry


We use following code to identify polygon geometry. Assuming that the features
geometry has already been obtained, it displays the number of rings in the polygon [1].
com.esri.mo2.cs.geom.FeatureGeometry geometry;

com.esri.mo2.cs.geom.Point p;

com.esri.mo2.cs.geom.PointCollection pnts;

com.esri.mo2.cs.geom.Polygon poly;

com.esri.mo2.cs.geom.Ring ring;

//Checking for polygon geometry.

If (geometry instanceof Polygon) {

System.out.Println(Polygon);

Poly= (Polygon)geometry;

System.out.println(ring cnt : +
poly.size());
14

//Getting the point collection

Pnts= ring.getPoints();

System.out.println(pnts cnt: +
pnts.size());

4.4 POLYLINES
Polyline is a collection of one or more paths. These paths allow you to access
underlying line segment that make up the geometry. com.esrimo2.cs.geom.Polyline interface
class represents such path [7]. A simple polyline plotted using the application is shown in the
Figure 4.6. Polyline Plotted using the tool depicting San Andreas fault line:

Figure 4.6. Polyline.

We have two class interfaces com.esri.mo2.cs.geom.Path and


com.esri.mo2.cs.geom.PointCollection which represent collection of two or more points
connected by line segment and access a point at a specific index in the collection
respectively. It allows you to access all points as an array; one of the interfaces is shown in
Figure 4.7.
15

Figure 4.7. Polyline class interface. Source: MUNAF, Java advantages and disadvantages.
Web-Dot-Dev, http://www.webdotdev.com/nvd/content/view/1042/204/, accessed May
2010, 2007.

We use following example to identify polyline geometry. Assuming that the features
geometry has already been obtained, it displays the number of paths in the polyline [1].

com.esri.mo2.cs.geom.FeatureGeometry geometry;

com.esri.mo2.cs.geom.Path path;

com.esri.mo2.cs.geom.Point p;

com.esri.mo2.cs.geom.PointCollection pnts;

com.esri.mo2.cs.geom.Polyline pline;

//Checking for polyline geometry.

If (geometry instanceof Polyline) {

System.out.Println(Polyline);

pline= (Polyline)geometry;

System.out.println(path cnt : +
pline.size());

//Getting the first path and points

Path= pline.getPath(0);

Pnts= Path.getPoints();

System.out.println(point cnt: +
pnts.size());
16

//Getting the first point of the path

P= pnts.getPoint(0);

System.out.println(X[0]: + p.x +
, Y[0]: + p.y);

}
17

CHAPTER 5

SHAPEFILE

5.1 ELEMENTARY DEPICTION


The tool lets you save the polygon/polyline as a shapefile, so I thought including a
chapter on ESRI shapefile will be a good idea. Shapefile can store the geometric information
and attributes of a geographic location [8]. A shapefile is a digital vector storage format and
is a set of several files [9]. These several small files are very important if you want to store
data that comprises of a shapefile [9]. It is generally recommended to keep all files in one
folder.
shp- This file stores the geometry and when added displays the geometry.
shx- This file stores index of a geometry, helpful for navigation.
dbf- A dBASE file that stores the attributes for different shapes.

5.2 CRAFTING A SHAPEFILE


A shapefile can be created by following ways [9]:
1. Export: Relatively easy way of creating a shapefile. A user just needs to export a
data source to a shapefile using ArcView GIS, Spatial Database Engine (SDE) PC
ARC/INFO. Although these softwares might be expensive but are easy to use [9].
2. Digitize: Understanding of ArcView GIS is required. It has feature creation tools
that can be used to digitize a shape to create a shapefile [9].
3. Programming: Using Avenue (ArcView GIS), MapObjects, ARC Macro Language
( AML) or Simple Macro Language (SML) shapefiles can be created within certain
programs [9].
4. Using the Tool: Create a shape and just go to Save As in menu bar and hit save
as shapefile. You are done [9]. Figure 5.1 shows the different techniques to create a
shapefile.

5.3 MAIN FILE


A file with .shp extension is a main file. It is this file that has the geometry that you
created. Now we will look at the organization of main file and its record contents [9].
18

1. Organization of Main File: The header of the main file is of fixed length but the
records that follow can have variable length [9]. An example of a file header is
shown in Figure 5.2.

Figure 5.1. Different ways of creating a shapefile.

Figure 5.2. File header.

2. Main File Header: Since header is of fixed length i.e. 100 bytes. Position is
referenced from start of the main file. The value of file length is total length of file
in 16 bit words [9] Tables 5.1 and 5.2 show the different values a main file header
has and the shape types.
19

Table 5.1. Main File Values


Position Field Value Type Byte Order
Byte 0 File Code 9994 Integer Big
Byte 0 Unused 0 Integer Big
Byte 0 Unused 0 Integer Big
Byte 0 Unused 0 Integer Big
Byte 0 Unused 0 Integer Big
Byte 0 Unused 0 Integer Big
Byte 0 File Length File Length Integer Big
Byte 0 Version 1000 Integer Little
Byte 0 Shape Type Shape Type Integer Little
Byte 0 Bounding Box Xmin Double Little
Byte 0 Bounding Box Ymin Double Little
Byte 0 Bounding Box Xmax Double Little
Byte 0 Bounding Box Ymax Double Little
Byte 0 Bounding Box Zmin Double Little
Byte 0 Bounding Box Zmax Double Little
Byte 0 Bounding Box Mmin Double Little
Byte 0 Bounding Box Mmax Double Little

3. Main File Record Content: The length of the record content file varies with the
number of edges and vertices of the shape. The record content file consists of shape
type and geometric data of the shape [9]. An example of record content is shown in
Figure 5.3.
20

Table 5.2. Shape Types


Value Shape Type
0 Null Shape
1 Point
3 PolyLine
5 Polygon
8 MultiPoint
11 PointZ
13 PolyLineZ
15 PolygonZ
18 MultiPointZ
21 PointM
23 PolyLineM
25 PolygonM
28 MultiPointM
31 MultiPatch

Figure 5.3. Polyline record content.


21

Polyline fields are described below [9]:


Box: The Bounding Box for the PolyLine stored in the order Xmin, Ymin, Xmax,
Ymax [9].
NumParts: The number of parts in the Polyline [9].
NumPoints: The total number of points for all parts [9].
Parts: An array of length NumParts Stores, for each Polyline, the index of its
first point in the points array. Array indexes are with respect to 0 [9].
Points: An array of length NumPoints. The points for each part in the Polyline are
stored end to end. The points for Part 2 follow the points for Part 1, and so
on. The parts array holds the array index of the starting point for each part [9].
22

CHAPTER 6

NETBEANS IDE AND MAP OBJECTS

6.1 ELEMENTARY FACTS


IDEs are very popular today, when it comes to application development. NetBeans
IDE (Integrated Development Environment) is an integrated development environment used
to create all sorts of java applications ranging from desktop applications to Java web
applications. This is a free open source IDE available online on the NetBeans website.
NetBeans core IDE has following modules [2]:
1. NetBeans Profiler: This makes your code optimized. What it does is that it
automatically gets rid of various errors to which a program is prone to like memory
leaks etc [10]
2. GUI design tool: This design tool enables a user to add GUI components by
providing drag and drop feature [10]
3. NetBeans JavaScript Editor: You wrote the code and now you want to highlight
syntax and class instances. You also want to check browser compatibility checking,
all basic editor features, all CSS editing features, etc. Well the JavaScript editor is
the solution [10]
I had to add Map Object libraries to NetBeans. Next I explain the procedure of doing that. A
user will need following pre-requisites installed before continuing.[10]
1. Install Java (SE) Development kit 2 [11].
2. Install NetBeans IDE 6.7.1 [2].
3. MapObjects Java Edition Installation CD can be obtained from Dr. Carl Eckberg.
4. Map Object libraries are integrated with NetBeans.

6.2 STEP BY STEP PROJECT CREATION


1. Make a Java Application: Refer to Figure 6.1
Figure 6.2 shows how to name your project.
2. Create a new Library: Refer to Figure 6.3
Select Tools-> Libraries
Select New Library
We can give the library our own name, as shown in the Figure 6.4.
23

Figure 6.1. Select java application from right pane.

3. Select Classpath and Add JAR files:


Select Classpath Tab as shown in Figure 6.5.
Click on Add JAR/Folder button
Traverse to folder C:ESRI/MOJ23/lib to select the Jar files
After selecting JAR files hit ADD JAR/Folder and you are done.
You can select all JAR files at once as shown in Figure 6.6.
Once added, JAR files can be seen in the Library Classpath as shown in Figure 6.7.
24

Figure 6.2. Give a project name.


25

Figure 6.3. Creating a new library.


26

Figure 6.4. Giving library name.


27

Figure 6.5. Selecting class path.

Figure 6.6. Selecting JAR files.


28

Figure 6.7. Added JAR files.


29

CHAPTER 7

UNDERSTANDING TOOLBARS

Map Objects Java Edition provides toolbars which comprise of commonly used
functions such as zoom in, zoom out, add/delete etc. In this chapter we discuss how these
toolbars have been integrated into the tool. Code to add these toolbars is also listed below.
Some of the frequently used toolbars are discussed below. [6, 10].
Figure 7.1 shows the default toolbar that comes with Map Objects.

7.1 ZOOMPAN TOOLBAR

Figure 7.1. ZoomPanToolBar.

Refer to Table 7.1 to know about the functions of the ZoomPanToolBar.


COM.ESRI.MO2.UI.TB.ZOOMPANTOOLBAR: This toolbar allows a user to change the
map extent in a variety of ways. The actions supported by this Toolbar include [6]:
Zoom In - Tool used to zoom into the map.
Zoom Out Tool used to zoom out of the map
Zoom To Selected Select a feature and zoom in.
Zoom To Full Extent Zoom map to the extent of all layers within the map.
Go Previous - Zooms to the previous extent stored in the extent history.
Go Next - Zooms to the next extent stored in the extent history.
Pan - Tool for dragging the map to a new location without changing zoom level.
Pan One Direction - Pans the map in one of four directions, north, south, east, or
west.
Identify Used to identify the selected feature from the layer.
30

Table 7.1. ZoomPan Tools


Tool Function
Previous Extent Zooms to previous extent stored in extent
a history
b Next Extent Zooms to next extent stored in extent
history
c Zoom to Active Layer Zooms the map to all selected features in
selected layer
d Zoom to Full Extent Zooms to extent all layers within map
e Zoom In Helps in zooming in
f Zoom Out Helps in zooming out
g Pan Helps in moving to any direction without
having to zoom
h Pan One Direction Pans to any of one direction- North,
South, East or West
i Identify Identifies any area in active layer

Below is the code to embed the tool in the toolbar:

private com.esri.mo2.ui.bean.Map map1;

private com.esri.mo2.ui.tb.ZoomPanToolBar zoomPanToolBar1;

zoomPanToolBar1 = new com.esri.mo2.ui.tb.ZoomPanToolBar();

map1 = new com.esri.mo2.ui.bean.Map();

zoomPanToolBar1.setMap(map1);

getContentPane().add(zoomPanToolBar1,BorderLayout.NORTH);

7.2 ADD DELETE LAYER


Figure 7.2 shows the add/delete icons.
The Table 7.2 defines the functions of add/delete toolbar.
31

Figure 7.2. Add Delete toolbar.

Table 7.2 Add/Delete Tools


Tool Function
a Add Adds new layer to table of contents
b Delete Deletes the selected layer from table of contents

COM.ESRI.MO2.UI.TB.LAYERTOOLBAR: This toolbar allows a user to add or delete


selected layer in the table of contents. The actions supported by this Toolbar include [6]:
Below is the code to embed the tool in the toolbar:

private com.esri.mo2.ui.bean.Map map1;

private com.esri.mo2.ui.tb.LayerToolBar layerToolBar1;

layerToolBar1 = new com.esri.mo2.ui.tb.LayerToolBar();

map1 = new com.esri.mo2.ui.bean.Map();

layerToolBar1.setMap(map1);

getContentPane().add(layerToolBar1,BorderLayout.NORTH);

7.3 SELECTION TOOLBAR


Different tools present in the selection toolbar are shown in Figure 7.3.
Table 7.3 defines the different functions that the tools in selection toolbar perform.
32

Figure 7.3 Selection toolbar.

Table 7.3 Selection Tools


Tool Function
a Find Opens a dialog for locating features whose
attributes contain an end-user provided string
b Search Opens a dialog for locating features based on a
predefined "stored query"
c Query

d Select Tool for selecting features by rubber banding a


shape in the map
e Buffer
f Attributes Tool to display attributes of currently selected
features

COM.ESRI.MO2.UI.TB.SELECTIONTOOLBAR: Selection toolbar provides functions


that perform feature selection based upon attribute or spatial queries [6].
Below is the code to embed the tool in the toolbar.
private com.esri.mo2.ui.bean.Map map1;

private com.esri.mo2.ui.tb.SelectionToolBar selectionToolBar1;

selectionToolBar1 = new com.esri.mo2.ui.tb.SelectionToolBar ();

map1 = new com.esri.mo2.ui.bean.Map();

selectionToolBar1.setMap(map1);

getContentPane().add(selectionToolBar1,BorderLayout.NORTH);
33

7.4 MEASUREGEOCODE TOOLBAR


Figure 7.4 shows the icons of measure geocode toolbar.

Figure 7.4. MeasureGeocode toolbar.

Though the measure geocode toolbar is not frequently used but it contains important
set of tools. Table 7.4 defines the functions of this toolbar.

Table 7.4. Measure Tools


Tool Function
a Measurement A rubber band tool for measuring distances on
screen
b Geocoding Opens a dialog selecting a location based on a
street address
c Map Tips Opens a dialog for choosing
map tips

COM.ESRI.MO2.UI.TB.MEASUREGEOCODETOOLBAR: This toolbar allows user to


measure and geocode. The actions supported by this Toolbar include [6]:
Below is the code to embed the tool in the toolbar.
private com.esri.mo2.ui.bean.Map map1;

private com.esri.mo2.ui.tb.MeasureGeocodeToolBar measureGeocodeToolBar1;

measureGeocodeToolBar1 = new com.esri.mo2.ui.tb.MeasureGeocodeToolBar ();

map1 = new com.esri.mo2.ui.bean.Map();

measureGeocodeToolBar1.setMap(map1);

getContentPane().add(measureGeocodeToolBar1, BorderLayout.
34

CHAPTER 8

CUSTOM TOOLBAR

Additional toolbar was created to assist user and make the working experience more
user friendly. The custom toolbar allows user to perform some vital functions without
navigating any further.
The Figure 8.1 shows the custom toolbar [6]:

Figure 8.1. Custom toolbar.

a. Print: This tool assists the user to print the map. A user can plot the data and simply
hit this button to print out the map with user data on it.

addComponentListener(complistener);

lis = new ActionListener() {

public void actionPerformed(ActionEvent ae) {


if (!helpOn) {

Object source = ae.getSource();


if (source == print || source instanceof JMenuItem) {

com.esri.mo2.ui.bean.Print mapPrint = new com.esri.mo2.ui.bean.Print();


mapPrint.setMap(map);
mapPrint.doPrint();
} else if (source == ptrjb) {
lighteningOn = false;
map.setSelectedTool(arrow);
drawLine.clear();
drawPolygon.clear();
} else if (source == drawPtjb) {
map.setSelectedTool(drawPt);
} else if (source == drawLnjb) {
35

map.setSelectedTool(drawLine);
} else if (source == drawPljb) {
map.setSelectedTool(drawPolygon);
} else {
try {
AddLyrDialog aldlg = new AddLyrDialog();
aldlg.setMap(map);
aldlg.setVisible(true);
} catch (IOException e) {
}
}
}
enableDisableButtons();
}
};

b. Add a Layer: If a user wants to add a new shape file, he can just click on this icon
and add it.

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;

import com.esri.mo2.ui.bean.Map;

public class AddLyrDialog extends JDialog {


Map map;
ActionListener lis;
JButton ok = new JButton("OK");
JButton cancel = new JButton("Cancel");
JPanel panel1 = new JPanel();
com.esri.mo2.ui.bean.CustomDatasetEditor cus = new com.esri.mo2.ui.bean.
CustomDatasetEditor();
AddLyrDialog() throws IOException {
setBounds(50,50,520,430);
setTitle("Select a theme/layer");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
36

}
});

lis = new ActionListener() {


public void actionPerformed(ActionEvent ae) {
Object source = ae.getSource();
if (source == cancel)
setVisible(false);
else {
try {
setVisible(false);
map.getLayerset().addLayer(cus.getLayer());
map.redraw();
if
(PolylinesandPolygons.stb.getSelectedLayers() != null)

PolylinesandPolygons.promoteitem.setEnabled(true);

} catch(IOException e){}
}
}
};
ok.addActionListener(lis);
cancel.addActionListener(lis);
getContentPane().add(cus,BorderLayout.CENTER);
panel1.add(ok);
panel1.add(cancel);
getContentPane().add(panel1,BorderLayout.SOUTH);
}
public void setMap(com.esri.mo2.ui.bean.Map map1){
map = map1;
}
}

c. Arrow: Clicking on this icon will give you back the mouse pointer. What it will do is
that, it will clear the selected tool and return mouse pointer. This tool is also used to
erase the data you plotted on the map.

d. Point Plotting: This tool allows the user to plot a point anywhere on the map. The
point would be a blue color circular point.

import java.awt.Color;
import java.awt.event.MouseEvent;

import com.esri.mo2.cs.geom.Point;
import com.esri.mo2.map.draw.SimpleMarkerSymbol;
37

import com.esri.mo2.ui.bean.AcetateLayer;
import com.esri.mo2.ui.bean.Map;
import com.esri.mo2.ui.bean.Tool;

class DrawPoint extends Tool {

Map map = PolylinesandPolygons.map;


SimpleMarkerSymbol sms = new SimpleMarkerSymbol();
Point pt = new Point();
AcetateLayer acetLayer = new AcetateLayer() {

@Override
public void paintComponent(java.awt.Graphics g) {
if (pt != null) {
java.awt.Graphics2D g2d = (java.awt.Graphics2D) g;
g2d.setTransform(
map.getWorldToPixelTransform().toAffine());
g2d.setClip(map.getExtent());
sms.draw(pt, g2d, );
}
}
};

public DrawPoint() {
sms.setType(SimpleMarkerSymbol.CIRCLE_MARKER);
sms.setWidth(6);
sms.setSymbolColor(Color.blue);
map.add(acetLayer);
}

@Override
public void mouseClicked(MouseEvent me) {
pt = map.transformPixelToWorld(me.getX(), me.getY());
acetLayer.repaint();
}
}

e. Polyline Plotting: Select this tool from the toolbar and start clicking on the map to
plot the points. As soon as you plot the second point line segments gets start drawing.
As you go on, you can see a polyline being plotted. The total distance of the polygon
is visible at the bottom of the application.

import com.esri.mo2.cs.geom.BasePath;
import com.esri.mo2.cs.geom.BasePointsArray;
import com.esri.mo2.cs.geom.BasePolyline;
import com.esri.mo2.cs.geom.FeatureGeometry;
38

import java.awt.Color;
import java.awt.event.MouseEvent;

import com.esri.mo2.cs.geom.Point;
import com.esri.mo2.cs.geom.PointCollection;
import com.esri.mo2.map.draw.SimpleLineSymbol;
import com.esri.mo2.map.draw.SimpleMarkerSymbol;
import com.esri.mo2.ui.bean.AcetateLayer;
import com.esri.mo2.ui.bean.Map;
import com.esri.mo2.ui.bean.Tool;

class DrawLine extends Tool {

Map map = PolylinesandPolygons.map;


SimpleMarkerSymbol sms = new SimpleMarkerSymbol();
SimpleLineSymbol sls = new SimpleLineSymbol();
PointCollection pc = new BasePointsArray();
double distance;
AcetateLayer acetLayer = new AcetateLayer() {

@Override
public void paintComponent(java.awt.Graphics g) {
java.awt.Graphics2D g2d = (java.awt.Graphics2D) g;
g2d.setTransform(
map.getWorldToPixelTransform().toAffine());
g2d.setClip(map.getExtent());
for (int i = 0; i < pc.size(); i++) {
sms.draw(pc.getPoint(i), g2d, "");
}
if (pc.size() >= 2) {
FeatureGeometry geom = new BasePolyline(new BasePath(pc));
sls.draw(geom, g2d, "");
}
}
};

public DrawLine() {
sms.setType(SimpleMarkerSymbol.STAR_MARKER);
sms.setWidth(6);
sms.setSymbolColor(Color.blue);
sls.setLineColor(Color.RED);
map.add(acetLayer);
}

public void clear() {


pc.removePoints(0, pc.size());
39

setDistance(0);
}

@Override
public void mouseReleased(MouseEvent me) {
Point p = map.transformPixelToWorld(me.getX(), me.getY());
addDistance(p);
pc.addPoint(p);
acetLayer.repaint();
}

private void addDistance(Point p) {


if (pc.size() > 0) {
setDistance(distance + pc.getEndPoint().distance(p));
}
}

private void setDistance(double d) {


distance = d;
PolylinesandPolygons.distanceLabel.setText(distance == 0 ?
"" : "Distance : " + d);
}
}

f. Polygon Plotting: Selecting this tool enables a user to plot a polygon. If a user starts
plotting point either in clockwise or anti-clockwise direction keeping all the angles
less than 180 degrees, he will end up with a convex polygon. The polygon will be
solid fill. Perimeter of the polygon is available at the bottom of the application.

import com.esri.mo2.cs.geom.BasePointsArray;
import com.esri.mo2.cs.geom.BasePolyline;
import com.esri.mo2.cs.geom.BaseRing;
import java.awt.Color;
import java.awt.event.MouseEvent;

import com.esri.mo2.cs.geom.Point;
import com.esri.mo2.cs.geom.PointCollection;
import com.esri.mo2.map.draw.SimpleMarkerSymbol;
import com.esri.mo2.map.draw.SimplePolygonSymbol;
import com.esri.mo2.ui.bean.AcetateLayer;
import com.esri.mo2.ui.bean.Map;
import com.esri.mo2.ui.bean.Tool;

class DrawPolygon extends Tool {

Map map = PolylinesandPolygons.map;


40

SimpleMarkerSymbol sms = new SimpleMarkerSymbol();


SimplePolygonSymbol sps = new SimplePolygonSymbol();
PointCollection pc = new BasePointsArray();
AcetateLayer acetLayer = new AcetateLayer() {

@Override
public void paintComponent(java.awt.Graphics g) {
java.awt.Graphics2D g2d = (java.awt.Graphics2D) g;
g2d.setTransform(
map.getWorldToPixelTransform().toAffine());
g2d.setClip(map.getExtent());
for (int i = 0; i < pc.size(); i++) {
sms.draw(pc.getPoint(i), g2d, "");
}
if (pc.size() > 2) {
BasePolyline geom = new BasePolyline(new BaseRing(pc));
PolylinesandPolygons.distanceLabel.setText("Perimeter : "+
geom.getPerimeter());
sps.draw(geom, g2d, "");
}else{
PolylinesandPolygons.distanceLabel.setText("");
}
}
};

public DrawPolygon() {
sms.setType(SimpleMarkerSymbol.STAR_MARKER);
sms.setWidth(10);
sms.setSymbolColor(Color.blue);

sms.setOverlap(true);

sps.setLineColor(Color.RED);
sps.setPaint(Color.PINK);
sps.setFillTransparency(0.5d);

map.add(acetLayer);
}

public void clear() {


pc.removePoints(0, pc.size());
}

@Override
public void mouseReleased(MouseEvent me) {
41

Point p = map.transformPixelToWorld(me.getX(), me.getY());


pc.addPoint(p);
acetLayer.repaint();
}
}

g. Help: This is an alternate help to the help present in the menu bar. Click on this help
icon and then on any of the custom toolbar icon to learn more about that tool.
42

CHAPTER 9

FUTURE ENHANCEMENTS

1. Calculation of the area of the polygon plotted using the tool.


2. Prompting the user to enter co-ordinates at the launch of application to plot
polygons and polylines.
3. More custom features can be added to the toolbar to modify the polyline/polygon.
Shading of the boundary etc.
4. Dragging the edges of polygon to expand its area can be implemented when using a
buffer.
5. A web page can be integrated with the polygon in such a way that clicking the
polygon should open a browser and show information about the polygon.
43

REFERENCES

WORKS CITED
[1] ESRI, MapObjects Java Edition manual, Esri Press, Redlands, California, 2003.
[2] NETBEANS, NetBeans IDE download. Netbeans, http://www.netbeans.org/downloads/,
accessed November 2009, 2007.
[3] ESRI, Gis.com. Gis, http://www.gis.com/, accessed November 2009, 2001.
[4] A. E. THROCKMORTON, Geographic Information Systems. Westminister University,
http://www.westminster.edu/staff/athrock/GIS/GIS.pdf, accessed April 2010, 2003.
[5] MUNAF, Java advantages and disadvantages. Web-Dot-Dev,
http://www.webdotdev.com/nvd/content/view/1042/204/, accessed May 2010, 2007.
[6] D. KUNDRA, Natural Disaster GIS Teaching Aid, Masters thesis, San Diego State
University, San Diego, CA, 2008.
[7] MATH.COM, Polygon Basics. Math, http://www.math.com/, accessed November 2009,
2001.
[8] C. ECKBERG, Course material for class CS 537, 2001.
[9] ESRI, White Papers. Esri, http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
accessed May 2010, 2008.
[10] V. VERMA, Native American olympic participants and contributors, Masters thesis,
San Diego State University, San Diego, CA, 2009.
[11] ORACLE, Java JDK downloads. Java, http://java.sun.com/javase/downloads/index.jsp,
accessed June 2009, 2005.

WORKS CONSULTED
G. W. CHART, Polygons. George Hart, http://www.georgehart.com/virtual-
polyhedra/polygons.html, accessed December 2009, 2002.
ESRI, Forums. Esri, http://forums.esri.com/forums.asp?c=9, accessed May 2010,
2010.
ESRI, White Papers. Esri, http://resources.arcgis.com/content/white-papers, accessed
December 2009, 2008.
S. MENDIRATTA, Native American regions in United States of America, Masters
thesis, San Diego State University, San Diego, CA, 2009.
WIKIPEDIA, Shapefile. Wikipedia, http://en.wikipedia.org/wiki/Shapefile, accessed
January 2010, 2007.
44

APPENDIX A

LIST OF ACRONYMS
45

This thesis report contains following acronyms

MOJO Map Objects Java Objects


GIS Geographical Information Science
ESRI Environmental Systems Research Institute
IDE Integrated Development Environment
JDK Java Development Kit
JAR Java Archive
46

APPENDIX B

README
47

The only major system requirement is that the system should have a java version 1.4
or higher installed.

Figure B.1. Java version.

USING THE APPLICATION

Follow the steps mentioned below to use the application.


6. Launch the application; Figure B.2 shows what the application will look like at the
launch.
48

Figure B.2 Application at the launch.

7. Select the polyline tool from the toolbar to plot a polyline. When you move your
mouse over the polyline icon in toolbar, a tooltip text saying draw a polyline on the
map will appear.
49

Figure B.3. Polyline tool selected.

8. Start plotting points anywhere on the map. As soon as you plot the second point a
line segment will be drawn between the two points you have just plotted. Polyline
will get plotted as you move on. At the bottom next to the co-ordinates display you
can see the total distance of the polyline you plotted.
50

Figure B.4. Polyline plotted.

9. Select the polygon tool in the similar fashion you selected the polyline tool from the
toolbar.
51

Figure B.5. Polygon tool selected.

10. Start plotting the points for the polygon in either clockwise or anti-clockwise
direction.
52

Figure B.6. Plotting points.

11. Once you are done plotting at least three points the polygon gets plotted. If you
continue plotting in clockwise or anti-clockwise direction keeping every angle less
than 180 degrees you will end up with a convex polygon. At the bottom next to the
co-ordinates display you can see the perimeter of the polygon you just plotted.
53

Figure B.7. Polygon plotted.

12. You can save the polygon/polyline you plotted either as a shape file or a text file.
Just click on the Save As in menu bar and select one of the two options.
54

Figure B.8. Save as.


55

Figure B.9. Select the location where you want to save the shape file.

13. Now since you have saved the polygon as shape file, you can add that as a layer.
Click on the add layer in the toolbar. Browse to the location you saved your shape
file and load it.
56

Figure B.10. Adding a layer.


57

Figure B.11. Loaded shape file.

14. You can repeat step 8 for saving the file as a text file and loading it. The only
difference will be that when you load it, the polygon/polyline will not be visible as
a layer.
15. There is a help system embedded into the application which you can refer anytime
you come across some difficulty regarding the use of application. To invoke the
help system you can click on the help in menu bar and select help topics.