Tạp chí Khoa học - Công nghệ Thủy sản<br />
<br />
Số 2/2017<br />
<br />
THOÂNG BAÙO KHOA HOÏC<br />
<br />
ỨNG DỤNG CÔNG NGHỆ GIS TRÊN THIẾT BỊ DI ĐỘNG ANDROID<br />
XÂY DỰNG PHẦN MỀM HỖ TRỢ CHO TÀU CÁ HOẠT ĐỘNG TRÊN BIỂN<br />
APPLYING GIS TECHNOLOGY ON ANDROID TO BUILD A SUPPORT SOFTWARE<br />
FOR FISHING BOATS ON THE SEA<br />
Phạm Thị Thu Thúy1, Nguyễn Thủy Đoan Trang1, Trần Minh Văn1, Trần Văn Khánh2<br />
Ngày nhận bài: 29/6/2016; Ngày phản biện thông qua: 23/5/2017, Ngày duyệt đăng: 15/6/2017<br />
<br />
TÓM TẮT<br />
Hiện nay, khi di chuyển ra ngư trường đánh bắt thủy sản, ngư dân thường sử dụng các công cụ hỗ trợ<br />
trong việc định vị hướng di chuyển như: bản đồ giấy, bản đồ số, la bàn, thiết bị định vị GPS,… Mặt khác, ngư<br />
dân hiện có dùng một số thiết bị được sản xuất ở nước ngoài. Tuy nhiên, tính năng của các thiết bị này còn hạn<br />
chế, giá thành cao, ngư dân khó thay thế khi thiết bị hỏng hóc. Như vậy, nếu sử dụng các thiết bị di động để cài<br />
đặt bản đồ cho ngư trường của Khánh Hòa, ngư dân hoàn toàn chủ động trong việc cập nhật bản đồ cũng như<br />
tận dụng được các thiết bị di động sẵn có trong việc hỗ trợ đi biển. Chính vì các lý do trên, chúng tôi xây dựng<br />
phần mềm SeaLink với mục đích: “Ứng dụng công nghệ GIS và công nghệ di động xây dựng phần mềm hỗ trợ<br />
hoạt động khai thác thủy sản của ngư dân”. Phần mềm cơ bản đã hỗ trợ được yêu cầu đi biển của ngư dân và<br />
các chức năng không thua kém với các máy của Furuno và các thiết bị GPS chuyên dụng khác.<br />
Từ khóa: GIS, di động, tàu cá, bản đồ, phần mềm<br />
ABSTRACT<br />
Nowadays, when going to the fishing ground, fishmen often use some of support tools in orienting the<br />
moving way, such as printed maps, storage usage maps, compasses, GPS located equipments,... Besides, the<br />
fishman has been using equipments which are manufactured by foreign countries. However, most of these<br />
equipments have limitted usage, high price, difficulty in repairing. Therefore, if we install the SeaLink software<br />
on the mobile device, the fishmen can reuse the available mobile equipments and can easily update the sea map<br />
on their mobile equipments. From the above reasons, we propose a software named SeaLink with the purpose<br />
is “Applying GIS technology on Android to build a support software for fishing boats on the sea”. The SeaLink<br />
software has basically satisfied the requirements of fishermen and the functions of the SeaLink are camparable<br />
with Furuno machines and other GPS devices.<br />
Keywords: GIS, mobile, fishing boat, map, software<br />
I. ĐẶT VẤN ĐỀ<br />
Trong vòng 30 năm trở lại đây, cùng với<br />
sự phát triển mạnh mẽ của công nghệ về<br />
nhiều lĩnh vực thì công nghệ hỗ trợ thu thập, tổ<br />
chức và khai thác thông tin địa lý có các bước<br />
<br />
phát triển đáng kinh ngạc. Sự cạnh tranh quyết<br />
liệt cùng với đòi hỏi ngày càng tăng từ phía<br />
người sử dụng đã thúc đẩy nhiều giải pháp công<br />
nghệ có chất lượng cao trong thị trường ngày<br />
càng rộng lớn của hệ thống thông tin địa lý.<br />
<br />
Khoa Công nghệ Thông tin, Trường Đại học Nha Trang, thuthuy@ntu.edu.vn, nguyenthuydoantrang@ntu.edu.vn,<br />
minhvan@ntu.edu.vn<br />
2<br />
Trường Đại học Khánh Hòa, cnkhanhdl@gmail.com<br />
1<br />
<br />
112 • TRƯỜNG ĐẠI HỌC NHA TRANG<br />
<br />
Tạp chí Khoa học - Công nghệ Thủy sản<br />
<br />
Số 2/2017<br />
<br />
Công nghệ GIS đã bắt đầu được sử dụng<br />
rộng rãi ở các nước phát triển hơn một thập<br />
niên qua, với những tính năng ưu việt, công<br />
nghệ GIS ngày nay đang được ứng dụng trong<br />
nhiều lĩnh vực nghiên cứu và quản lý.<br />
Hiện tại có nhiều nghiên cứu liên quan đến<br />
các ứng dụng của GIS trong nước cũng như<br />
trên thế giới. cụ thể như tìm đường đi ngắn<br />
nhất trên bản đồ số hóa [3] Nhưng hầu hết các<br />
ứng dụng chủ yếu tập trung triển khai cho bản<br />
đồ trên đất liền như: “Phát triển ứng dụng GIS<br />
trên thiết bị di động” của Mao Ngoy [1] để tạo<br />
bản đồ thành phố Phnom Penh và đưa lên thiết<br />
bị di động (window phone) để khai thác và sử<br />
dụng một số thông tin về thành phố. Mặt khác,<br />
các máy móc hiện nay được ngư dân trang bị<br />
hầu như được nhập khẩu từ nước ngoài [7, 9],<br />
do đó giá thành thường cao nhưng điểm hạn<br />
chế nổi bật đó là phần mềm đi theo máy. Mặt<br />
khác, nếu máy bị hỏng thì khó tìm nơi sữa<br />
chữa hoặc thiết bị thay thế.<br />
Việt Nam cũng có nhiều đề tài liên quan<br />
đến ứng dụng công nghệ GIS trong định vị<br />
hải đồ. Tiêu biểu là đề tài “Ứng dụng GPS<br />
và GIS trong quản lý đội tài khai thác thủy<br />
sản xa bờ” của PGS.TS. Nguyễn Thạch [2].<br />
Tuy nhiên, đề tài này chủ yếu để hỗ trợ cho<br />
Tên thiết bị<br />
Nơi sản xuất<br />
Icom 718<br />
Nhật<br />
Định vị Furuno 32<br />
Nhật<br />
Định vị Furuno 50<br />
Nhật<br />
Định vị Furuno 600<br />
Nhật<br />
Định vị SanHan<br />
Trung Quốc<br />
<br />
công tác quản lý đội tàu cá nhằm mục đích<br />
cứu hộ, cảnh báo nguy hiểm, điều động tàu,<br />
chưa thực sự hỗ trợ ngư dân trong việc tìm<br />
đường đi trên biển.<br />
Công cụ hỗ trợ việc tìm đường đi trên biển<br />
hiện nay phải nói đến Hải đồ điện tử được sản<br />
xuất và phát hành bởi Cơ quan Thủy đạc quốc<br />
gia [5]. Tuy nhiên phần mềm này chủ yếu phục<br />
vụ đội tàu vận chuyển, ngư dân khó tiếp cận để<br />
được sử dụng.<br />
Bên cạnh đó, Khánh hòa hiện nay có<br />
khoảng 9800 phương tiện đánh bắt cá. Trong<br />
đó có khoảng 500 phương tiện công suất trên<br />
300CV đánh bắt ở Hoàng Sa, Trường Sa.<br />
Nhưng hầu hết ngư dân vẫn sử dụng các<br />
phương pháp thủ công để tìm đường đi như<br />
là la bàn hoặc một số máy chuyên dụng nhập<br />
khẩu ở nước ngoài, với mục đích xác định tọa<br />
độ tàu cá và tìm đường đi. Với các máy dò<br />
tìm đường đi và xác định tọa độ nhập khẩu từ<br />
nước ngoài nguyên kiện thì rất khó khăn về<br />
kinh phí cho ngư dân đánh bắt nhỏ lẻ. Ngoài ra<br />
dịch vụ sửa chữa và bảo hành là một vấn đề<br />
khó khăn hơn nhiều.<br />
Theo khảo sát điều tra của chúng tôi, dưới<br />
đây là các máy chuyên dụng được ngư dân sử<br />
dụng phổ biến hiện nay:<br />
Ngôn ngữ<br />
Giá cả<br />
Tiếng Việt<br />
12 000 000<br />
Tiếng Việt<br />
7 000 000<br />
Tiếng Việt<br />
24 000 000<br />
Tiếng Việt<br />
30 000 000<br />
Tiếng Việt<br />
18 500 000<br />
<br />
Ngoài các máy chuyên dụng trên, ngư dân<br />
với các tàu thuyền đánh bắt nhỏ lẻ chủ yếu<br />
sử dụng la bàn hoặc kinh nghiệm để xác định<br />
hướng đi và về. Nhu cầu của người dân về một<br />
thiết bị với các chức năng hỗ trợ là: Định vị tọa<br />
độ; xác định hướng đi, khoảng cách cần thiết;<br />
lưu vết tàu, …<br />
Chính vì vậy, mong muốn của chúng tôi là<br />
tạo ra được một phần mềm chạy trên nền tảng<br />
android để hỗ trợ ngư dân với các tính năng<br />
cơ bản. Mục tiêu là giảm giá thành so với việc<br />
<br />
mua máy chuyên dụng, khả năng bảo trì tốt<br />
hơn, tránh việc lãng phí và đảm bảo được các<br />
mục tiêu về an toàn, an ninh trên biển.<br />
II. CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP<br />
THỰC HIỆN<br />
1. Cơ sở lý thuyết<br />
1.1. Thiết bị di động thông minh<br />
Điện thoại di động thông minh<br />
(smartphones): là các điện thoại được trang<br />
bị cấu hình tốt, chạy hệ điều hành thông minh<br />
TRƯỜNG ĐẠI HỌC NHA TRANG • 113<br />
<br />
Tạp chí Khoa học - Công nghệ Thủy sản<br />
với các bộ công cụ phát triển phần mềm cho<br />
phép lập trình viên phát triển đa dạng các ứng<br />
dụng phục vụ mọi mục đích của cuộc sống và<br />
công việc.<br />
Máy tính bảng (tablets): là các thiết bị thông<br />
minh, tương tự như smartphones nhưng có<br />
kích thước màn hình lớn hơn rất nhiều (thông<br />
thường từ 7.0 – 13 inch), có thể có khe cắm<br />
thẻ SIM (phục vụ việc nhắn tin, gọi điện hoặc<br />
truy cập Internet qua mạng 3G).<br />
Điện thoại thông minh lai máy tính bảng<br />
(phablet): là loại thiết bị lai giữa smartphone và<br />
tablet, về tính năng nó một smartphone, nhưng<br />
được trang bị màn hình cỡ lớn hơn smartphone<br />
thông thường và nhỏ hơn kích thước phổ biến<br />
của màn hình tablet.<br />
Hiện nay, có nhiều hệ điều hành được<br />
sử dụng trên thiết bị di động thông mình như:<br />
Android, iOS, Windows Phone, BlackBerry OS<br />
… Nhưng để so sánh và đưa ra đánh giá cụ<br />
thể như “hệ điều hành nào tốt hơn?”, “hệ điều<br />
hành nào vượt trội hơn?” thì dường như không<br />
thể. Đơn giản bởi vì mỗi hệ điều hành đề<br />
được xây dựng trên một nền tảng hoàn toàn<br />
khác nhau và có những ưu điểm, nhược điểm<br />
nhất định.<br />
Hệ điều hành Android: là một hệ điều hành<br />
miễn phí, mã nguồn mở, được phát triển bởi<br />
Google dựa trên nền tảng Linux. Android được<br />
thiết kế dành cho các thiết bị di động màn hình<br />
cảm ứng như điện thoại thông minh, máy tính<br />
bảng. Ưu điểm của Android là một hệ điều hành<br />
không nặng nề, có khả năng tinh chỉnh, miễn<br />
phí, có một cộng đồng lập trình viên đông đảo<br />
chuyên viết các ứng dụng để mở rộng chức<br />
năng của thiết bị bằng ngôn ngữ lập trình Java<br />
có sửa đổi. Chính vì vậy, Android đã trở thành<br />
nền tảng điện thoại thông minh phổ biến nhất<br />
thế giới. Android chiếm 75% thị phần điện thoại<br />
thông minh trên toàn thế giới vào thời điểm quý<br />
3 năm 2012, với tổng cộng 750 triệu thiết bị đã<br />
được kích hoạt. Vào tháng 4 năm 2013 đã có<br />
1,5 triệu lượt kích hoạt mỗi ngày và tổng số<br />
thiết bị Android được kích hoạt lên đến 1 tỷ vào<br />
tháng 9/2013.<br />
<br />
114 • TRƯỜNG ĐẠI HỌC NHA TRANG<br />
<br />
Số 2/2017<br />
1.2. Tìm hiểu về ArcGIS<br />
ArcGIS là một sản phẩm của Viện nghiên<br />
cứu hệ thống môi trường (ESRI). ArcGIS kết<br />
nối bản đồ, ứng dụng, dữ liệu và con người,<br />
từ đó giúp người dùng đưa ra quyết định thông<br />
minh hơn và nhanh chóng hơn. ArcGIS cho<br />
phép người sử dụng thực hiện các chức năng<br />
của GIS ở bất kỳ nơi nào họ muốn: trên máy<br />
tính, máy chủ, trên web… Nó cung cấp cho<br />
người dùng trong tổ chức khả năng khám phá,<br />
sử dụng, thành lập và chia sẻ bản đồ từ bất kỳ<br />
thiết bị nào, mọi lúc, mọi nơi.<br />
Đến nay, ArcGIS đã hỗ trợ cho người dùng<br />
khá nhiều phiên bản: ArcGIS online, ArcGIS<br />
for destop, ArcGIS for mobile [6], ArcGIS<br />
for server, ArcGIS for developers, ArcGIS<br />
solutions, ArcGIS marketplace. Ở đây tôi sẽ<br />
tập trung vào nghiên cứu và sử dụng phiên<br />
bản ArcGIS trên destop để tạo, xử lý bản đồ<br />
và phiên bản dành cho nhà phát triển để phát<br />
triển trên thiết bị di dộng sử dụng hệ điều hành<br />
android. Trong bài báo này, chúng tôi sử dụng<br />
công cụ ArcGIS runtime SDK [4], một trong<br />
những công cụ mã nguồn mở trên nền tảng<br />
ArcGIS, để hỗ trợ xây dựng phần mềm.<br />
2. Phương pháp thực hiện<br />
Bởi vì mục tiêu chính của phần mềm<br />
SeaLink là hỗ trợ cho tàu cá hoạt động trên biển<br />
do vậy việc xác định tọa độ và tìm đường đi có<br />
khoảng cách tối ưu là trọng tâm của phần mềm.<br />
2.1. Chuyển đổi giữa tọa độ cầu và bản đồ phẳng<br />
Do trái đất hình cầu, định vị tọa độ dùng<br />
longitude và latitude, hay gọi là hệ tọa độ<br />
WGS84 Ellipsoid (World Geodetic System<br />
1984) [10], tuy nhiên khi vẽ lên mặt phẳng thì<br />
phải chuyển đổi sang tọa độ WGS84 Mercator.<br />
Như vậy, để xác định tọa độ của một điểm trên<br />
bản đồ phẳng trong phần mềm thì cần chuyển<br />
đổi từ tọa độ cầu (Ellipsoid) sang tọa độ phẳng<br />
(Mercator).<br />
Trong phần mềm SeaLink chúng tôi sử<br />
dụng ngôn ngữ Java, do đó chúng tôi tham<br />
khảo đoạn mã Java ở [11] để xác định tọa<br />
độ phẳng:<br />
<br />
Tạp chí Khoa học - Công nghệ Thủy sản<br />
<br />
Số 2/2017<br />
<br />
import java.lang.Math;<br />
public class SphericalMercator {<br />
public static final double RADIUS = 6378137.0; /* in meters on the equator */<br />
/* These functions take their length parameter in meters and return an angle in degrees */<br />
public static double y2lat(double aY) {<br />
return Math.toDegrees(Math.atan(Math.exp(aY / RADIUS)) * 2 - Math.PI/2);<br />
}<br />
public static double x2lon(double aX) {<br />
return Math.toDegrees(aX / RADIUS);<br />
}<br />
/* These functions take their angle parameter in degrees and return a length in meters */<br />
public static double lat2y(double aLat) {<br />
return Math.log(Math.tan(Math.PI / 4 + Math.toRadians(aLat) / 2)) * RADIUS;<br />
}<br />
public static double lon2x(double aLong) {<br />
return Math.toRadians(aLong) * RADIUS;<br />
}<br />
}<br />
2.2. Thuật toán tìm đường đi ngắn nhất trên<br />
bản đồ số<br />
Việc tìm đường đi ngắn nhất trên biển<br />
thuộc bản đồ số đưa về việc tìm khoảng cách<br />
ngắn nhất giữa hai điểm trên bản đồ. Trong<br />
phần mềm SeaLink, chúng tôi sử dụng công<br />
thức Harversine [12, 13] để đo khoảng cách<br />
giữa hai điểm, tức là khoảng cách ngắn nhất<br />
trên bề mặt trái đất:<br />
(1)<br />
<br />
nếu trên đường thẳng đó có chứa những<br />
điểm thuộc bãi cạn hoặc đá ngầm thì đường<br />
thẳng sẽ được thay thế bằng đường gấp khúc,<br />
điểm gấp khúc chính là điểm bên ngoài của bãi<br />
cạn hoặc đá ngầm.<br />
Hiện tại phần mềm SeaLink của chúng tôi<br />
có sáu lớp độ sâu, cụ thể: 1-200m, 200-1000m,<br />
1000-2000m,<br />
<br />
2000-3000m,<br />
<br />
3000-4000m,<br />
<br />
4000-5000m. Trong đó, mỗi lớp độ sâu là một<br />
tập các hình polygon tổng quát (không lồi)<br />
Để biết 1 điểm tọa độ thuộc độ sâu nào thì<br />
<br />
trong đó, hav là hàm harversine:<br />
<br />
chúng tôi dùng thuật toán xác định điểm đó có<br />
(2)<br />
<br />
d là khoảng cách giữa hai điểm<br />
r là bán kính của quả cầu<br />
ϕ1, ϕ2 tương ứng là vĩ độ của điểm 1 và<br />
điểm 2 tương ứng theo đơn vị radian.<br />
λ1, λ2 tương ứng là kinh độ của điểm 1 và<br />
điểm 2 tương ứng theo đơn vị radian<br />
Mặt khác, các tàu di chuyển trên biển<br />
thường phải tránh những bãi cạn hoặc đá<br />
ngầm. Đường đi ngắn nhất giữa hai điểm<br />
trên biển có thể là đường thẳng, tuy nhiên<br />
<br />
nằm trong polygon không (liên quan kỹ thuật<br />
đồ họa) [14, 15]. Ý tưởng cơ bản của thuật<br />
toán như sau:<br />
Vẽ một đường ngang ở bên phải của mỗi<br />
điểm và mở rộng nó đến vô cực<br />
Đếm số lần đường giao nhau với cạnh<br />
đa giác.<br />
Một điểm nằm bên trong đa giác nếu một<br />
trong hai điểm giao nhau là lẻ hoặc điểm nằm<br />
trên cạnh đa giác. Nếu không có điều kiện nào<br />
là đúng, thì điểm nằm ở bên ngoài.<br />
TRƯỜNG ĐẠI HỌC NHA TRANG • 115<br />
<br />
Tạp chí Khoa học - Công nghệ Thủy sản<br />
<br />
Hình 1. Minh họa thuật toán kiểm tra một điểm có<br />
nằm trong polygon không<br />
<br />
Lưu ý, thuật toán sẽ trả về true (điểm nằm<br />
bên trong polygon) nếu điểm nằm trên cạnh<br />
hoặc đỉnh của đa giác đã cho. Khi kiểm tra<br />
đường thẳng từ điểm p đến điểm giao cắt bên<br />
phải, chúng tôi kiểm tra xem điểm p có nằm<br />
thẳng hàng với các đỉnh của đa giác không.<br />
Nếu đó là thẳng hàng, thì chúng ta kiểm tra<br />
xem điểm p có nằm trên mặt đa giác hiện tại<br />
không, nếu nó nằm, chúng ta sẽ trả về true,<br />
ngược lại trả về false.<br />
3. Hướng dẫn cài đặt và các chức năng của<br />
phần mềm SeaLink<br />
3.1. Hướng dẫn cài đặt<br />
Chúng tôi đã upload phần mềm lên<br />
trang Megafileupload, link download phần<br />
mềm SeaLink:<br />
http://www.megafileupload.<br />
com/26a2p/SeaLink.rar<br />
● Yêu cầu phần cứng:<br />
- Các thiết bị Android máy tính bảng hay<br />
điện thoại.<br />
- Có các cảm biến: Location Service GPS,<br />
Magnetometer, Barometer (La bàn kế).<br />
- Màn hình cảm ứng.<br />
- Cài đặt hệ điều hành Android từ phiên<br />
bản 4.4 trở lên (4.4 - KitKat, 5.0, 5.1 - Lolipop,<br />
6.0 - Mashallow).<br />
● Phương pháp cài đặt:<br />
- Chép thư mục bản đồ (SeaNavig) và bộ<br />
nhớ trong của máy tính bảng (không chép lên<br />
thẻ nhớ ngoài)<br />
- Cài đặt file APK SeaLink.apk.<br />
- Cho phép phần mềm SeaLink truy cập sử<br />
dụng tính năng Location Service và Storage.<br />
<br />
116 • TRƯỜNG ĐẠI HỌC NHA TRANG<br />
<br />
Số 2/2017<br />
- Đối với Android 6.0 (Mashallow) cần cho<br />
phép truy cập tính năng bằng tay theo trình tự<br />
bên dưới:<br />
Setting → Application → Application<br />
Manager → Chọn ứng dụng SeaLink → Chọn<br />
Permission → Cho phép Location và Storage<br />
3.2. Các chức năng của SeaLink<br />
● Hiển thị dữ liệu bản đồ Biển Đông và phụ cận<br />
Các lớp dữ liệu hiển thị:<br />
- Vùng mặt nước biển Đông với độ sâu<br />
1-200 mét (độ chính xác 1:500).<br />
- Vùng mặt nước biển Đông với độ sâu<br />
200-1000 mét (1:5000).<br />
- Vùng mặt nước biển Đông với độ sâu<br />
1000-2000 mét (1:5000).<br />
- Vùng mặt nước biển Đông với độ sâu<br />
2000-3000 mét (1:5000).<br />
- Vùng mặt nước biển Đông với độ sâu<br />
3000-4000 mét (1:5000).<br />
- Vùng mặt nước biển Đông với độ sâu<br />
4000-5000 mét (1:5000).<br />
- Vùng mặt nước biển Đông với độ sâu trên<br />
5000 mét (1:5000).<br />
- Biên giới quốc gia các nước khu vực<br />
Đông Nam Á.<br />
- Ranh giới các tỉnh Việt Nam.<br />
- Vùng mặt nước sông ngòi, ao hồ Việt Nam.<br />
- Các tuyến quốc lộ chính Việt Nam.<br />
- Các địa danh hành chính đến cấp huyện<br />
Việt Nam (Hình 2)<br />
● Xử lý hiển thị bản đồ<br />
- Phóng to, thu nhỏ, tỉ lệ xích bản đồ, xoay<br />
bản đồ.<br />
- Xem bản đồ toàn cảnh thu nhỏ.<br />
● Xác định tọa độ GPS, hướng la bàn, tốc<br />
độ di chuyển, hướng di chuyển<br />
- Tọa độ GPS: kinh độ, vĩ độ (longitude,<br />
latitude)<br />
- Độ sâu mực nước biển tại vị trí hiện tại<br />
dựa theo dữ liệu bản đồ.<br />
- Hướng xoay của la bàn: North, East,<br />
South, West, NE, NW, SE, SW.<br />
- Tốc độ di chuyển dựa trên tọa độ GPS<br />
theo km/h hoặc NM/h.<br />
- Vị trí sẽ đến nếu giữ nguyên hướng đi.<br />
<br />