20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
Báo cáo thực tập công nghệ thông tin, 9đ
1. TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
~~~~~~*~~~~~~
BÁO CÁO THỰC TẬP TỐT NGHIỆP
NGHIÊN CỨU BÀI TOÁN GEOCODING
VÀ PHÁT TRIỂN ỨNG DỤNG MINH HỌA
Tải bài mẫu qua zalo 0936.885.877
Tham khảo dịch vụ làm báo cáo thực tập luanvantrithuc.com
NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
Giáo viên hướng dẫn : Lê Văn Quốc Anh
Sinh viên thực hiện : Bùi Thiện Nhân MSSV: 1651120111
: Nguyễn Đức Hiếu MSSV: 1651120088
TP. HỒ CHÍ MINH – Năm 2020
2. 2
LỜI CAM ĐOAN
Chúng em bằng những sự cố gắng và nỗ lực tìm hiểu, học hỏi của bản thân
mình. Với những tìm tòi từ thực tế và với những kiến thức đã học chúng em đã nghiên
cứu các dịch vụ Geocoding. Nhóm chúng em cũng thực hiện so sánh, demo. Từ
những ngôn ngữ Javascript, PHP, MySQL … đã học và những tham khảo từ anh chị
khoá trước, thông tin trên mạng đã giúp nhóm chúng em hoàn thành tốt TTTN của
mình. Chúng em xin chịu hoàn toàn trách nhiệm với những gì mình đã viết.
Mặc dù đã cố gắng hoàn thành đề tài với tất cả sự nỗ lực của bản thân, nhưng
chắc chắn không thể tránh khỏi những thiếu sót nhất định, kính mong sự cảm thông
và tận tình chỉ bảo của quý Thầy Cô.
Chúng em xin chân thành cảm ơn.
TP. HỒ CHÍ MINH – Năm 2020
Nhóm sinh viên thực hiện
Bùi Thiện Nhân
Nguyễn Đức Hiếu
3. 3
MỤC LỤC
LỜI CAM ĐOAN..............................................................................................................................................2
MỤC LỤC .........................................................................................................................................................3
DANH MỤC HÌNH ..........................................................................................................................................5
DANH MỤC BẢNG .........................................................................................................................................6
DANH SÁCH THUẬT NGỮ, CHỮ VIẾT TẮT............................................................................................6
1. Giới thiệu................................................................................................................................................7
1.1. Đặt vấn đề................................................................................................................ 7
1.1.1. Tính cấp thiết ....................................................................................................... 7
1.1.2. Mục tiêu............................................................................................................... 7
1.1.3. Giới hạn và phạm vi của đề tài ............................................................................ 7
1.1.4. Ý nghĩa khoa học của đề tài................................................................................. 7
1.1.5. Ý nghĩa thực tiễn của đề tài ................................................................................. 8
2. Công nghệ liên quan..............................................................................................................................9
2.1. Tìm hiểu về geocoding............................................................................................ 9
2.1.1. Geocoding được sử dụng để làm gì? ................................................................... 9
2.1.2. Địa chỉ là gì?........................................................................................................ 9
2.1.3. Quá trình xử lý geocoding ................................................................................. 10
2.2. Các dịch vụ Geocoding ......................................................................................... 14
2.2.1. Dịch vụ Google Maps API ................................................................................ 14
2.2.2. Dịch vụ MapQuest............................................................................................. 18
2.2.3. Dịch Vụ Here..................................................................................................... 22
3. So sánh đánh giá ..................................................................................................................................23
3.1. Độ chính xác.......................................................................................................... 23
3.2.1. Tìm hiểu về độ chính xác................................................................................... 23
3.2.2. Tiến hành so sánh độ chính xác......................................................................... 24
3.2.3. Tổng kết so sánh ................................................................................................ 35
3.2. Độ tin cậy .............................................................................................................. 37
3.3. Tốc độ [1].............................................................................................................. 38
3.4. Tính thẩm định ...................................................................................................... 39
3.5. Tài liệu và hỗ trợ ................................................................................................... 40
3.6. Giá......................................................................................................................... 40
3.7. Tổng kết................................................................................................................. 42
4. Phát triển ứng dụng demo ..................................................................................................................44
4. 4
4.1. Ứng dụng demo đánh dấu các địa điểm ................................................................ 44
4.1.1. Đăng ký API Key............................................................................................... 44
4.1.2. Load bản đồ ....................................................................................................... 44
4.1.3. Markers.............................................................................................................. 45
4.1.4. Info Windows .................................................................................................... 45
4.1.5. Các sự kiện......................................................................................................... 46
4.1.6. Tiến hành thực hiện ứng dụng ........................................................................... 46
5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN..........................................................................................51
5.1. Kết luận ................................................................................................................. 51
5.2. Hướng phát triển.................................................................................................... 51
Tài liệu tham khảo..........................................................................................................................................53
5. 5
DANH MỤC HÌNH
Hình 1 Mô tả địa chỉ US ................................................................................................ 10
Hình 2 Google Map - Key Google Maps API ............................................................... 15
Hình 3 Google Map - Bắt đầu........................................................................................ 16
Hình 4 Google Map - Tọa độ bắt đầu ............................................................................ 16
Hình 5 Google Map - Search Box.................................................................................. 17
Hình 6 Trang chủ MapQuest.......................................................................................... 18
Hình 7 MapQuest - Key MapQuest API........................................................................ 19
Hình 8 Mapquest - Demo............................................................................................... 20
Hình 9 Mapquest - Tọa độ bắt đầu................................................................................. 20
Hình 10 Here - Giao diện trang chủ............................................................................... 22
Hình 11 Minh họa interpulation..................................................................................... 24
Hình 12 Google Maps - Kết quả tọa độ......................................................................... 25
Hình 13 Mapquest - Gửi dữ liệu đến API...................................................................... 26
Hình 14 Here – Tiến hành tạo Bearer Key .................................................................... 28
Hình 15 Here - Lấy Access_Token................................................................................ 28
Hình 16 Here - Tạo credentials key............................................................................... 29
Hình 17 Here - Access Key ID và Access Key Secret .................................................. 29
Hình 18 Here - Kết quả.................................................................................................. 30
Hình 19 Here - Sử dụng Bearer ..................................................................................... 31
Hình 20 Here - Lấy dữ liệu............................................................................................ 31
Hình 21 Google Map - Giá dịch vụ Map....................................................................... 40
Hình 22 Google Map - Giá Geocoding, Places.............................................................. 41
Hình 23 Callback Google Map Script............................................................................ 44
Hình 24 Hàm callBack initMap() .................................................................................. 44
Hình 25 Markers ............................................................................................................ 45
Hình 26 InfoWindow ..................................................................................................... 46
Hình 27 Database........................................................................................................... 47
Hình 28 Giao diện ứng dụng.......................................................................................... 47
Hình 29 AutoComplete SearchBox ............................................................................... 48
Hình 30 Kết quả tìm kiếm.............................................................................................. 48
Hình 31 Kết quả lưu dữ liệu........................................................................................... 49
Hình 32 Kết quả hiển thị Markers.................................................................................. 49
Hình 33 Kết quả hiện thị InfoWindow .......................................................................... 50
6. 6
DANH MỤC BẢNG
Bảng 1 Bảng ký hiệu viết tắt............................................................................................ 6
Bảng 2 Tiến trình geocoding.......................................................................................... 12
Bảng 3 So Sánh Độ Chính Xác Một Số Địa chỉ ở US................................................... 34
Bảng 4 So Sánh Độ Chính Xác Trên Nhiều Nơi........................................................... 35
Bảng 5 Downtime .......................................................................................................... 37
Bảng 6 So sánh Price ..................................................................................................... 42
DANH SÁCH THUẬT NGỮ, CHỮ VIẾT TẮT
TT Viết tắt Diễn giải Giải thích
1 GCL Google Cloud Platform Nền tảng đám mây GG
2 POI Points of interest Một vị trí điểm cụ thể mà ai
đó có thể thấy hữu ích hoặc
thú vị
3 LON Longtitude Kinh độ
4 LAT Lattitude Vĩ đọ
5 MGRS Military Grid Reference System Hệ thống tham chiếu lưới
quân sự
6 USNG United States National Grid Lưới quốc gia Hoa Kỳ
7 USPS United States Postal Service Dịch vụ Bưu chính Hoa Kỳ
8 WGS World Geodetic System Hệ thống trắc địa thế giới
9 SLA Service Level Agreement Cam kết chất lượng dịch vụ
Bảng 1 Bảng ký hiệu viết tắt
7. 7
1. Giới thiệu
1.1. Đặt vấn đề
1.1.1. Tính cấp thiết
Ngày nay với sự phát triển mạnh mẽ của công nghệ bản đồ thì việc tìm kiếm thông
tin cũng như định vị trên bản đồ ngày càng trở nên phổ biến. Không những thế việc
ứng dụng công nghệ này trên nền tảng website cũng là một xu hướng tất yếu. Trên
thực tế đã có nhiều dịch vụ geocoding nổi tiếng như Here, MapQuest, MapBox,
Openstreet, Google Map …
Cùng với đó là sự phát triển mạnh mẽ việc sử dụng các dịch vụ thông qua các
website.
Nhận thấy xu hướng phát triển đó nhóm đã có ý tưởng sử dụng dịch vụ geocoding
để tạo ra một ứng dụng giúp tìm kiếm và lưu lại các địa điểm trên nền tảng website.
1.1.2. Mục tiêu
Tìm hiểu, nghiên cứu các dịch vụ geocoding.
So sánh, đánh giá, lựa chọn và áp dụng dịch vụ để xây dựng ứng dụng trên nền
tảng website.
Áp dụng các kiến thức tìm hiểu được xây dựng hệ thống chạy trên nền tảng
website để giải quyết các vấn đề sau:
Tìm kiếm vị trí trên bản đồ qua tên của địa chỉ có sẵn.
Hiển thị thông tin chính xác về tọa độ, địa chỉ đầy đủ.
Lưu các thông tin liên quan đến địa chỉ vào cơ sở dữ liệu.
Hiển thị các thông tin được lưu thể hiện trên bản đồ.
1.1.3. Giới hạn và phạm vi của đề tài
- Về thời gian: Đề tài được thực hiện từ 2/3/2020 đến 20/5/2020
- Về nội dung: Đề tài nghiên cứu các dịch vụ geocoding và xây dựng ứng dụng
demo dựa trên các phần mềm mã nguồn mở.
- Về công nghệ:
Sử dụng ngôn ngữ lập trinh Javascrip, PHP.
Hệ quản trị cơ sở dữ liệu MySQL.
1.1.4. Ý nghĩa khoa học của đề tài
Đề tài góp phần vào việc phát triển và mở rộng các ứng dụng kết hợp với các dịch
vụ geocoding đang có trên thế giới.
8. 8
Đề tài là nền tảng trong việc nghiên cứu và ứng dụng dịch vụ geocoding trên bản
đồ.
1.1.5. Ý nghĩa thực tiễn của đề tài
- Cung cấp cho người sử dụng một phương tiện tìm kiếm, lưu trữ địa điểm một
cách nhanh chóng, hiệu quả và thân thiện.
- Xây dựng ứng dụng hỗ trợ và cung cấp cho người dùng lưu lại thông tin về địa
điểm. Tìm kiếm hoặc thêm thông tin cho địa điểm cụ thể.
9. 9
2. Công nghệ liên quan
2.1. Tìm hiểu về geocoding
Geocoding là quá trình chuyển đổi 1 mô tả của 1 vị trí chẳng hạn như cặp địa
chỉ tọa độ, một tên địa chỉ hoặc tên của một nơi nào đó đến một vị trí trên bề mặt của
trái đất. Chúng ta có thể nhập input là một chuỗi text mô tả địa chỉ hoặc tên địa danh,
trả về tọa độ/vị trí của điểm đó trên bản đồ.
Chúng ta có thể nhanh chóng tìm được các địa điểm/vị trí thông qua geocoding.
Các loại vị trí mà chúng ta có thể tìm kiếm bao gồm các điểm (POI) hoặc tên như tên
các ngọn núi, các cây cầu hoặc các cửa hàng.
Khi đó sẽ chuyển đổi sang các tọa độ dựa trên các kinh độ và vĩ độ hoặc hệ
thống quy chiếu khác. Ví dụ như the Military Grid Reference System (MGRS) or the
U.S. National Grid system.
2.1.1. Geocoding được sử dụng để làm gì?
Ngay từ những việc phân tích dữ liệu đơn giản đến quản lý kinh doanh và quản
lý khách hàng. Có rất nhiều thứ ứng dụng với geocoding. Với các mã địa chỉ được mã
hóa địa lý chúng ta có thể nhận được các thông tin và hiển thị vị trí liên quan với địa
chỉ đó.
Hầu như các tổ chức kinh doanh đều muốn lưu lại địa chỉ và thông tin của khách
hàng. Vì vậy những thông tin về số nhà, tên đường, mã bưu chính, thành phố, tên của
khách hàng đều được lưu lại. Geocoding sẽ cho phép các tổ chức, cá nhân có thể lưu
được thông tin của khách hàng.
Điều này hoàn toàn có thể được làm với các dịch vụ Geocoding hiện nay như
Google Maps API, Here, MapQuest, MapBox …
Nhờ các dịch vụ này chúng ta có thể hiển thị thông tin địa chỉ dựa trên những
thông số nhất định hay cho phép phân tích thêm các thông tin liên quan đến địa chỉ
này.
Đề tài này hướng đến các dịch vụ như thế. Tìm hiểu về các dịch vụ geocoding như
Google Maps API, Developer Here, Mapquest. Thực hiện tìm hiểu và triển khai các
dịch vụ. Sau đó so sánh các dịch vụ và tiến hành xây dựng ứng dụng demo dựa trên
dịch vụ phù hợp nhất.
2.1.2. Địa chỉ là gì?
Để đại diện cho tọa độ đó chúng ta gọi là địa chỉ. Địa chỉ đơn giản là cách thức
được sử dụng để mô tả vị trí.
Cho mục đích geocoding nó có thể là tên đường, tên một nơi hay vị trí.
10. 10
Địa chỉ có nhiều kiểu và định dạng khác nhau bao gồm các tuyến đường, giao
lộ, số nhà với tên con đường và mã bưu chính (Postal Code) tương ứng. Địa chỉ này
giúp geocoding trong việc tìm kiếm, xác định chính xác đến vị trí cụ thể.
Ở Việt Nam phổ biến một số định dạng địa chỉ bao gồm
- Phần số nhà và tên đường. Ví dụ: 114/4 Năm Châu
- Phần tên thôn/ấp. Ví dụ: Thôn 3, xã Lộc Châu
- Địa chỉ đầy đủ: 114/4 Năm Châu, Phường 12, Quận Tân Bình, Thành
phố Hồ Chí Minh
Ở Mỹ phổ biến các định dạng địa chỉ như:
- Số nhà, tên đường, loại đường, tên căn hộ, thành phố, tiểu bang, mã bưu
chính, đất nước
Hình 1 Mô tả địa chỉ US
2.1.3. Quá trình xử lý geocoding
Để quá trình tìm kiếm thông tin về địa chỉ được chính xác chúng ta thực hiện
theo 8 bước sau:
Bước Tên bước Ví dụ
1 Nhập địa chỉ vào
input
114 Năm châu, Phường 12, Quận Tân Bình, TPHCM
2 Phân tách địa chỉ 114 | Năm Châu | Phường 12 | Quận Tân Bình | TPHCM
11. 11
3 Các thành phần địa
chỉ Số nhà 114
Tên đường Năm Châu
Phường 12
Quận Tân Bình
Thành phố HCM Hồ Chí Minh
4 Tìm kiếm theo các
thành phần địa chỉ
5 Tính điểm cho các
thành phần Số nhà Đường Phường Điểm
114 Năm
Châu
12 100
115 Năm
Châu
12 85
114 Năm Châu 12 80
6 Lọc danh sách
Số nhà Đường Phường Điểm
114 Năm
Châu
12 100
115 Năm
Châu
12 85
12. 12
7 Dữ liệu phù hợp
nhất
114 Năm Châu, Phường 12, Quận Tân Bình, TP.HCM
8 Xử lí và hiển thị
Bảng 2 Tiến trình geocoding
a) Phân tách địa chỉ
Địa chỉ được nhập trong ô input sẽ được phân chia thành nhiều mức khác nhau.
Như ví dụ trên sẽ được phân tách theo các dấu phẩy.
Trường hợp không có các dấu phẩy ngăn cách như chỗ 114 Năm Châu có thể
phân tách ra theo từng từ và cụm từ.
Cách làm như thế sẽ phân tích và cho ra được nhiều trường hợp để tìm kiếm.
Nhờ đó chúng ta có thể tăng cơ hội tìm kiếm địa chỉ hay tăng tỉ lệ chính xác.
b) Các thành phần của địa chỉ
Sau khi phân tách địa chỉ sẽ được chia ra các thành phần theo thứ tự. Ưu tiên từ
số nhà, tên đường, phường/xã, thôn/ấp, quạn/huyện, thành phố, đất nước.
Ngoài ra những thành phần hay được viết tắt cũng sẽ hiển thị ở đây.
Một tập các thành phần ở đây bao gồm: Số nhà, tên đường, phường, quận,
thành phố…
Ví dụ: TP.HCM: Thành phố Hồ Chí Minh, VN: Việt Nam.
c) Tìm kiếm theo các thành phần địa chỉ
Khi đã có được các thành phần địa chỉ ở trên, các thành phần này sẽ được so
sánh với địa chỉ/ dữ liệu đã có. Việc tìm kiếm sẽ được tìm theo 1 tập các thành phần
tương ứng với cột giá trị.
Ngoài ra nếu phương pháp tìm theo tập không cho ra kết quả chẳng hạn khi tìm
kiếm địa chỉ bằng tên thành phố, đất nước mà không thể tìm kiếm. Công việc tìm
kiếm sẽ tiếp tục dựa trên những tập thành phần khác như số nhà cho đến khi tất cả các
thành phần được tìm thấy.
d) Tính điểm cho các thành phần khớp với dữ liệu
Khi danh sách các tập thành phần địa chỉ được tạo với những địa chỉ có tiềm
năng, tiến hành chấm điểm cho mỗi tập thành phần để xác định mức độ chính xác với
với địa chỉ mà chúng ta đang tìm kiếm.
Mỗi tập thành phần tiềm năng này sẽ được chấm điểm từ 0 – 100. Điểm này sẽ
thấp nếu có bất kì điều này bên dưới được sử dụng:
+ Sai chính tả: Số nhà dài hoặc sai. Ví dụ: số nhà: “114 Năm Châu” có thể bị
tính thấp điểm.
+Địa chỉ sai:
13. 13
Ví dụ: Trên 1 con đường Năm Châu chỉ có địa chỉ được phân bổ từ 1 – 200
nhưng chúng ta lại tìm kiếm 202.
e) Lọc danh sách
Với mỗi một điểm số của tập thành phần.
Chúng ta tạo ra một danh sách những tập thành phần phù hợp với địa chỉ dựa
trên điểm số được chấm. Những tập thành phần mà có điểm thấp hơn điểm tối thiểu sẽ
bị loại bỏ khỏi danh sách.
Ví dụ: chúng ta sẽ lấy điểm địa chỉ khớp tối thiểu phải lớn hơn hoặc bằng 85.
f) Dữ liệu phù hợp nhất
Những tập thành phần được hiển thị theo hạng và điểm ở trên. Điểm càng cao
sẽ hiện phía trên của ô gợi ý khi tìm kiếm. Chúng ta có thể xem và chọn địa chỉ đúng
hoặc gần đúng với địa chỉ đang tìm kiếm.
g) Xử lí và hiển thị
Đây là bước cuối cùng trong quá trình xử lí geocoding. Hệ thống tiến hành xử lí
dữ liệu sau khi người dùng tìm kiếm chọn và hiển thị kết quả
Khi người dùng nhập vào ô input một kết quả tìm kiếm, công cụ geocoding sẽ
chuyển đổi địa chỉ đầu vào này thành những phần nhỏ chẳng hạn như số nhà, tên
đường … theo quy tắc đã được xác định của 1 tập thành phần. Chúng ta gọi đây là
thành phần của địa chỉ. Công cụ geocoding sẽ tạo ra nhiều tập thành phần từ những
thành phần này (interpulation). Mục đích là để tìm được tập thành phần phù hợp
nhất với dữ liệu.
14. 14
2.2. Các dịch vụ Geocoding
2.2.1. Dịch vụ Google Maps API
a) Tổng quan
Ứng dụng Google Map là một dịch vụ bản đồ trực tuyến trên web và app miễn phí
do Google phát hành và quản lý, ứng dụng hỗ trợ nhiều dịch vụ, tính năng cho người
dùng nhưng phổ biến nhất là dò đường, chỉ đường, tìm vị trí; hiển thị những tuyến
đường tối ưu cho từng phương tiện tham gia giao thông, ngoài ra còn hướng dẫn cách
bắt xe và chuyển tuyến xe dành cho người tham gia các phương tiện lưu thông công
cộng (xe bus), hiển thị những địa điểm xung quanh vị trí người dùng hoặc vị trí chỉ
định như ATM, trạm xăng, bệnh viện,…
Hiểu đơn giản đây là một phương pháp cho phép một website B có thể sử dụng
dịch vụ hoặc hiển thị nội dung của một trang web khác, ở đây là là website A –
Google Map (thông qua Map API), dịch vụ bản đồ của website A (Map) sẽ được
nhúng vào website B (Website cá nhân).
Hiện nay, các ứng dụng xây dựng trên nền tảng Google Maps như Grab thường sử
dụng Google Map API để nhúng bản đồ vào trang web hoặc ứng dụng thông qua ngôn
ngữ Javascripts
Một số ứng dụng của Google Maps API:
Khi sử dụng Map API, chúng ta có thể đánh dấu bất kỳ địa điểm nào trên
bản đồ, kèm theo đó là những thông tin về địa điểm đó, bao gồm các khu vui
chơi, ATM, trường học, …
Tính năng chỉ đường đến địa điểm cần tìm (tuyến đường tối ưu nhất cho các
phương tiện và nhiều lựa chọn khác), địa điểm có thể được cung cấp như
cách làm ở trên hoặc thông qua dịch vụ mà Google Map cung cấp sẵn.
Giúp khoanh vùng khu vực như khu kinh tế, khu sản xuất, khu đô thị hay
các khu bị ô nhiễm, …
Có thể theo dõi tình hình giao thông, lưu lượng phương tiện tại các khu vực,
… và có giải pháp hợp lý.
15. 15
b) Nghiên cứu và thực hiện triển khai dịch vụ
- Tìm hiểu Google Cloud
Google Cloud Platform được viết tắt là GCP là 1 nền tảng của điện toán đám
mây cho phép tổ chức và các doanh nghiệp tạo ra, xây dựng và hoạt động những ứng
dụng của chúng ta trên hệ thống google tạo ra. Những ứng dụng phổ biến sử dụng
Google Cloud Platform hiện đang rất phổ biến chính là: Youtube, Chrome, Google
Apps, Google Maps, Google Search …
Để có thể tích hợp sâu dịch vụ Google Map cho ứng dụng của mình chúng ta cần
phải có Google Map Api Key. Google Map API Key đó được cấp qua GCP của
google.
Hình 2 Google Map - Key Google Maps API
- Demo chạy các example Google Map API
Places Search Box: Sử dụng mã nguồn tạo ra ô tìm kiếm cho phép nhập vào địa
chỉ là text. Sau đó chuyển đổi địa chỉ đó sang tọa độ và hiển thị nó trên bản đồ.
Ví dụ: test code trên môi trường localhost
16. 16
Hình 3 Google Map - Bắt đầu
Khi mới vào sẽ hiện giao diện khu vực này. Do khi khởi tạo dùng tọa độ khu
vực này làm trung tâm.
Hình 4 Google Map - Tọa độ bắt đầu
17. 17
Map.
Hình 5 Google Map - Search Box
Chúng ta có thể chuyển đổi hình ảnh bản đồ và vệ tinh khi tích hợp API Google
c) Tổng kết
- Dịch vụ Google Map hỗ trợ bản đồ tốt cho nhiều khu vực kể cả Việt Nam.
18. 18
2.2.2. Dịch vụ MapQuest
a) Tổng quan
MapQuest là một dịch vụ lập bản đồ web trực tuyến miễn phí của Mỹ thuộc sở
hữu của Verizon Media. Nó được ra mắt vào năm 1996 như là dịch vụ lập bản đồ web
thương mại đầu tiên.
b) Dịch vụ
Hiện tại, MapQuest sử dụng một số dịch vụ của TomTom (là nhà phát triển và
sáng tạo đa quốc gia của Hà Lan về công nghệ định vị và điện tử tiêu dùng) cho hệ
thống bản đồ của mình.
MapQuest cung cấp một số mức độ chi tiết ở mức đường phố hoặc chỉ đường lái
xe cho nhiều quốc gia. Người dùng có thể kiểm tra xem quốc gia của họ có khả dụng
hay không bằng menu thả xuống trên trang chủ MapQuest.
Công ty cung cấp một ứng dụng di động miễn phí cho Android và iOS có tính
năng tìm kiếm POI, điều hướng bằng giọng nói, giao thông thời gian thực và các tính
năng khác. MapQuest cũng cung cấp một trang web thân thiện với thiết bị di động.
POI (point of interest): là một vị trí điểm cụ thể mà ai đó có thể thấy hữu ích hoặc
thú vị. MapQuest có một số sản phẩm du lịch.
Dữ liệu POI của MapQuest giúp dịch vụ phân biệt chính nó với các phần mềm tìm
đường khác bằng cách hướng dẫn người dùng trực tiếp đến các lối vào của doanh
nghiệp và điểm đến, thay vì đến các địa chỉ đường phố nói chung.
c) Trang chủ
Hình 6 Trang chủ MapQuest
d) Hỗ trợ
Chrome
19. 19
Firefox
Safari 5+
IE 10–11
Microsoft Edge
IOS
Android
e) Nghiên cứu và thực hiện triển khai dịch vụ
Tìm hiểu
- Map Quest là phần mềm mã nguồn mở cho phép chúng ta sử dụng các API
của nó.
- https://www.mapquest.com/ là trang bản đồ trực tuyến
- https://developer.mapquest.com/ là trang dành cho những nhà phát triển
(developer)
- Để sử dụng các API chúng ta cần có tài khoản của
https://developer.mapquest/com. Sau đó tạo Key Mapquest API.
Hình 7 MapQuest - Key MapQuest API
Demo MapQuest
Khi sử dụng API của MapQuest được tích hợp ô search địa chỉ.
20. 20
Ví dụ: test code trên môi trường localhost
Hình 8 Mapquest - Demo
Tương tự Google Map khi mới vào sẽ hiện giao diện khu vực này. Do
khi khởi tạo dùng tọa độ khu vực này làm trung tâm.
Hình 9 Mapquest - Tọa độ bắt đầu
22. 22
2.2.3. Dịch Vụ Here
a) Tổng quan
Here là một bộ giao diện lập trình cho phép các nhà phát triển xây dựng các ứng
dụng web dịch vụ định vị, thêm nhận vị trí, định vị địa lý, định tuyến chỉnh sửa…
với tính năng phong phú, xây dựng các ứng dụng và dịch vụ nhận biết vị trí bằng
cách sử dụng nền tảng vị trí số 1 thế giới.
b) Dịch vụ
Here chiếm vị trí hàng đầu chỉ số nền tảng vị trí, duy trì vị trí dẫn đầu so với
Google trong năm thứ hai hoạt động.
Here mang lại tính tương tác và tùy chỉnh nhanh chóng trong quá trình phát
triển ứng dụng, với Here map làm nền tảng. Khám phá cơ sở dữ liệu đang phát triển
gồm 58 triệu đường được ánh xạ và 5 triệu thay đổi bản đồ mỗi ngày.
Cho dù chúng ta đang tạo một ứng dụng tiêu dùng cung cấp định tuyến chính
xác hoặc ứng dụng làm nổi bật các điều kiện đường xá, hỗ trợ nhiều trường hợp sử
dụng, môi trường dev và trình duyệt.
Kiến trúc dựa trên API giúp dễ dàng kiểm tra và duy trì phát triển mã trong
khi chỉ tích hợp các tính năng chúng ta cần vào môi trường ứng dụng.
Mã hóa địa lý có sẵn ở 196 quốc gia, với ánh xạ độ chính xác cao của các vị
trí hiển thị hoặc điều hướng. Nhập địa chỉ có cấu trúc hoặc dạng tự do để có kết quả
được xếp hạng theo mức độ liên quan hoặc mức độ gần nhau.
Biến địa chỉ thành tọa độ và ngược lại. Nhận các trận đấu chính xác với hơn
360 triệu địa chỉ điểm chính xác ở 108 quốc gia.
c) Giao diện
Hình 10 Here - Giao diện trang chủ
d) Hỗ trợ
IOS
23. 23
Android
Edge 17+
Firefox (latest)
Google Chrome (latest)
3. So sánh đánh giá
Chúng ta tiến hành so sánh khách quan dựa trên những tìm hiểu và các tiêu chí
sau:
Đô chính xác (Accuracy)
Độ tin cậy (Reliability)
Tốc độ (Speed)
Tính hợp lệ (Validation)
Tài liệu và hỗ trợ (Tech Support and Documentation)
Giá (Price)
3.1. Độ chính xác
3.2.1. Tìm hiểu về độ chính xác
Độ chính xác là yếu tố quan trọng trong geocoding. Các số liệu đầu tiên và rõ ràng
nhất mà dịch vụ geocoding có thể được đánh giá đó chính là độ chính xác.
Để thực hiện geocode chúng ta thường có 2 lựa chọn:
Rooftop level: Thực hiện bằng cách tự bản thân đi đến địa chỉ đó và ghi lại
những số liệu mà GPS nói khi chúng ta ở đó.
Interpulation – Nội suy: chúng ta không cần phải tốn nhiều sức lực để xác
định thông số về địa chỉ đó. Phương pháp này cho chúng ta sự chính xác
theo một khối gọi là “block level”. Phương pháp này liên quan đến 2 điểm
chúng ta đã biết sau đó chia khoảng không gian giữa chúng để tính ra vị trí
tương đối. Bởi vì phương pháp này dựa trên sự tính toán của toán học nên
công việc xác định vị trí địa lý thường rẻ hơn phương pháp Rooftop level.
Tìm hiểu về interpulation:
Phương pháp tạo mới điểm dữ liệu dựa trên những điểm dữ liệu có sẵn. Cho
geocoding, điều này khá quan trọng cho những con đường mà có những số nhà
thì bị bỏ lỡ trong dữ liệu.
24. 24
Hình 11 Minh họa interpulation
Ví dụ trên chúng ta biết được địa chỉ đầu và cuối cả 2 bên trên con đường Năm
Châu. Khi đó để xác định được được địa chỉ 10 Năm Châu chúng ta phải dùng
phương pháp interpulation để ước tính địa chỉ.
10 là số chẵn vì thế nó sẽ ở bên phần đường số chẵn đó chính là phần đường
bên trái có đoạn địa chỉ từ 220. Tiếp theo để xác định tương đối vị trí địa chỉ số
10 chúng ta thấy vị trí số 10 là nằm giữa, 50% trong khoảng số chẵn từ 220 vì
vậy chúng ta ước tính địa chỉ 10 năm giữa.
Địa chỉ 10 năm châu nằm ở giữa đoạn đường và nằm bên trái trên đoạn
đường từ 2 đến
Tương tự chúng ta cũng dùng phương pháp nội suy (interpulation) để ược tính
địa chỉ khác của đoạn đường.
Kết luận: Phương pháp này tuy đỡ tốn sức lực, tiền bạc, thời gian nhưng độ chính
xác cao chỉ khi được đo đạc ở các khu vực thành phố, những nơi được chia thành các
khối nhà. Còn ở những vùng quê thì phương pháp này không cho được kết quả chính
xác bởi vì trên những con đường dài nhiều ngôi nhà không sát nhau mà cách khá xa
nhau vì thế phương pháp này không đạt được hiệu quả.
3.2.2. Tiến hành so sánh độ chính xác
3.2.2.1. Về mức độ chính xác:
- Google Maps API: độ chính xác Rooftop level và cả độ chính xác interpulation
- Here: độ chính xác Rooftop level
- Mapquest: độ chính xác Rooftop level
25. 25
3.2.2.2. Về dữ liệu:
Tiến hành so sánh dữ liệu bằng cách sử dụng cách demo của các dịch vụ này. Sau
đó so sánh với những tọa độ - kinh độ/vĩ độ của những địa chỉ mà được xác minh
(Address Validation/ Verification).
a) Đo sự chính xác của Google Maps API.
Hình 12 Google Maps - Kết quả tọa độ
b) Đo sự chính xác của MapQuest.
Chúng ta dùng API Mapquest để gửi yêu cầu đến server. Nhập vào địa chỉ và key
API mà Mapquest cung cấp để gửi dữ liệu kết quả nhận được là mọt mảng JSON các
thông số được tìm thấy qua địa chỉ. Mapquest API hỗ trợ tìm kiếm nhiều địa chỉ cùng
một lúc.
Cách thực hiện:
27. 27
"adminArea6": "",
"adminArea6Type": "Neighborhood",
"adminArea5": "Orem",
"adminArea5Type": "City",
"adminArea4": "Utah",
"adminArea4Type": "County",
"adminArea3": "UT",
"adminArea3Type": "State",
"adminArea1": "US",
"adminArea1Type": "Country",
"postalCode": "84057-2887",
"geocodeQualityCode": "P1AAA",
"geocodeQuality": "POINT",
"dragPoint": false,
"sideOfStreet": "R",
"linkId": "r42782820|p70232023|n58151105",
"unknownInput": "",
"type": "s",
"latLng": {
"lat": 40.317866,
"lng": -111.722361
},
"displayLatLng": {
"lat": 40.317667,
"lng": -111.722376
}
}
]
},
- Lấy kết quả tọa độ displayLatLng trả về
c) Đo sự chính xác của Here.
Dùng Postman để tiến hành gửi dữ liệu đến server. Để dùng được API của Here
chúng ta cần phải có OAuth 2.0 Token Credentials cho những request đến dịch vụ
này.
Vì vậy chúng ta cần tiến hành tạo bearer access tokens và gửi request đến dịch
vụ geocoding Here.
Cách thực hiện:
1. Tạo mới một tab request trên Postman, điền URL của API và đổi thành method
POST.
28. 28
Hình 14 Here – Tiến hành tạo Bearer Key
2. Chọn tab Authorization.
Hình 15 Here - Lấy Access_Token
29. 29
Bước 1: Type Oauth 1.0
Bước 2: Add authorization data to Request Headers
Bước 3: Điền consumer key và consumer secret
- Tạo key ở phần Oauth 2.0 trong Project của Here
Hình 16 Here - Tạo credentials key
- Chọn create credentials để tiến hành tạo key.
Hình 17 Here - Access Key ID và Access Key Secret
- Sau khi nhấn create sẽ hiện ra hộp thoại thông báo bao gồm Access key
ID và Access Key Secret. Chúng ta tiến hành copy Access key ID vào
Consumer Key, Access Key Secret vào Consumer Secret
- Lưu ý: Ở đây chúng ta có thể download 2 key này về để lưu trữ bởi vì nó
sẽ chỉ xuất hiện một lần khi chúng ta tiến hành chọn create credentials.
Vì vậy nếu muốn sử dụng key này lâu dài chúng ta cần download để
backup. Nếu không chúng ta phải bỏ key này và lặp lại việc tạo ra key
mới.
30. 30
- Bước 5: Chọn signature Method: HMAC-SHA256
3. Chọn Tab Body
Hình 18 Here - Kết quả
Bước 2: Chọn x-www-form-urlencoded.
Bước 3: Điền key: grant_type
Bước 4: value: client_credenntials.
Bước 5: Chọn Send.
Chúng ta nhận được Access_token với type là bearer. Đây chính là bearer dùng
trong API Here để lấy dữ liệu.
31. 31
Hình 19 Here - Sử dụng Bearer
4. Sau khi có được bearer key tiến hành sử dụng API để get dữ liệu về.
Hình 20 Here - Lấy dữ liệu
Tạo request mới (1)
32. 32
Chọn phương thức GET và Url mà Here cung cấp API. (2)(3)
Chọn Type: Bearer Token và nhập token chúng ta vừa lấy được lúc nãy. (4)(5)
Chọn Send. (6)
Nếu thành công kết quả sẽ hiển thị trong vùng số (7)
Cuối cùng chúng ta lấy được kết quả là danh sách các giá trị của items.
- resultType: trả về loại kết quả tìm kiếm (houseNumber, place, locality,
street…)
- title: chuỗi kí tự đại diện cho kết quả tìm được. Bao gồm là chuỗi địa chỉ địa
đủ.
- Address: chi tiết kết quả của địa chỉ.
- Position: kết quả vị trí địa lý theo chuẩn WGS 84. Đây là tọa độ được dùng
để hiển thị trên bản đồ. Đây cũng chính là kết quả chúng ta lấy để so sánh.
Chúng ta bắt đầu tiến hành so sánh với một số địa chỉ ở US:
Địa chỉ
Google Maps
API Here MapQuest
1224 south 760
utah
west provo
Tìm thấy
Lat 40.21721
40.21723 40.217199
Lon -111.672364
-111.67231 -111.672371
1402 West
Orem Ut
Center St
Lat
40.2959900 40.29742 40.297421
Lon
-111.7298850 -111.72853 -111.728536
727 N
Orem Ut
1550 E Ste 410
Lat 40.2975409
40.31105 40.310747
Lon -111.7285345
-111.65879 -111.659169
1103
Orem Ut
W 1130 N
,
Lat 40.3178831 40.31766 40.317667
33. 33
Lon -111.7220364
-111.72237 -111.722376
765 Academy Dr Bessemer
AL
Lat 33.3628028
33.36277 33.362573
Lon -86.9981227
-86.99805 -86.998556
2665 S Alma School Rd
Mesa AZ
Lat 33.3662019
33.36611 33.36622
Lon 111.8586236
-111.85847 -111.858635
105 W Main St Brawley CA
Lat 32.9788879
32.97902 32.978922
Lon -115.5422487
-115.54207 -115.542278
1994 Silas Deane Hwy
Rocky Hill CT
Lat 41.673516
41.67298 41.673572
Lon -72.6458055
-72.64572 -72.645755
9900 Fm 1079 Cross Plains
TX
Không tìm
thấy
Lat
32.2062 32.20619
Lon
-99.20664 -99.206636
15615 Coyote Falls Rd
Entiat WA
Lat 47.8573292
47.85733 47.857942
Lon -120.4238349
-120.42412 -120.416387
12347 SW 110th South
Canal St Rd Miami, FL
Lat 25.6655372 25.66536 25.665547
34. 34
Lon -80.3962432
-80.39592 -80.396256
Bảng 3 So Sánh Độ Chính Xác Một Số Địa chỉ ở US
Chúng ta bắt đầu tiến hành so sánh với một số địa chỉ ở các nước trên thế giới:
Địa chỉ
Google Maps
API Here MapQuest
Hauptstraße 16
68799 Reilingen, Germany Tìm thấy
Lat 49.2949648
49.29492
49.29491
Lon 8.5765402
8.57654
8.57654
Av. Ricardo Lyon 22
Santiago, Chile
Lat -33.4220651
-33.42195
-33.42215
Lon -70.6095319
-70.60971
-70.6093
Industriestrasse 1
9495 Triesen, Liechtenstein
Lat 47.1193578
47.11936
47.11936
Lon 9.5234901
9.52349
9.52348
1 Bramlin St, Port Elizabeth,
6015, South Africa
Tìm sai địa
chỉ
Lat -33.94177 -33.94264
Lon 25.51116 25.51195
〒904-2142 沖縄県沖縄市登川
1丁目9−15
Không tìm
thấy
35. 35
Lat 26.3697122
33.362573
Lon 127.8197812
-86.998556
91 Dunkeld Rd, Perth, PH1 5AP,
United Kingdom
Lat 56.4066669
56.40657
56.40743
Lon -3.4463073
-3.44623 -3.44818
24/28 Little Collins St
Melbourne VIC 3000, Australia
Lat -37.8125002
-37.81249
-37.81254
Lon 144.9725691
144.97256
144.97264
Prospekt Gagarina, 105, Nizhnij
Novgorod, Nizhegorodskaya
oblast', Nga, 603137
Lat 56.2343831
56.23443 56.26996
Lon 43.951704
43.95071
43.9716
Bảng 4 So Sánh Độ Chính Xác Trên Nhiều Nơi
3.2.3. Tổng kết so sánh
Cả 3 dịch vụ trên đều có những kết quả tìm thấy tương đối chính xác.
Trong đó Google Map có nhiều kết quả tọa độ đến những con số phần trăm nghìn,
phần triệu. Còn Here, MapQuest đa số lấy kết quả tọa độ đến phần chục nghìn.
Google Map hỗ trợ việc tìm kiếm ở nhiều nơi, nhiều ngôn ngữ.
Here hỗ trợ chủ yếu ở Châu Âu, Châu Mỹ còn Châu Á thì dữ liệu của Here ít.
Mapquest thì cho thấy dữ liệu đa dạng, kết quả nhiều nơi được tìm thấy với nhiều
ngôn ngữ. Tuy nhiên Mapquest đặc biệt nổi bật với các kết quả tìm kiếm đến từ Châu
Mỹ.
Ngoài ra, Google Map có lợi thế dễ báo cáo để chỉnh sửa vì thế những địa chỉ
thường xuyên được xác thực hơn ở nhiều nước trên thế giới do đây là dịch vụ mà
36. 36
được nhiều người sử dụng nhất trên thế giới. Có tới 25 triệu lượt cập nhật hằng ngày
và 1 tỉ người dùng active hàng tháng.
37. 37
3.2. Độ tin cậy
Thời gian hoạt động là thước đo độ tin cậy của hệ thống, được biểu thị bằng phần
trăm thời gian của một máy, điển hình là máy tính đang hoạt động và khả dụng.
Uptime cũng là một số liệu để đo lường thời gian hoạt động và kéo dài của một hệ
thống. Đây cũng chính là cách mà chúng ta cho rằng liệu hệ thống hay dịch vụ luôn
luôn hoạt động khi chúng ta cần.
Trong dịch vụ geocoding ở đây chúng ta nói đến thời gian hoạt động của từng dịch
vụ. Ngược lại đó là thời gian ngừng hoạt động của hệ thống gọi là downtime [1].
Availability % Downtime / year Downtime / month Downtime / week
99% 3.65 ngày 7.20 giờ 1.68 giờ
99.9% 8.76 giờ 43.2 phút 10.1 phút
99.99% 52.6 phút 4.32 phút 1.01 phút
99.999% 5.26 phút 25.9 giây 6.05 giây
99.9999% 31.5 giây 2.59 giây 0.605 giây
Bảng 5 Downtime
Kết quả sau khi tìm hiểu và so sánh theo tiêu chí SLA:
- Google Maps API: 99.9% theo hằng tháng cho mỗi dịch vụ cụ thể
Directions API
Distance Matrix API
Elevation API
Geocoding API
Geolocation API
Maps JavaScript API
Maps SDK for Android
Maps SDK for iOS
Maps Static API
Places API
38. 38
Places SDK for Android
Places SDK for iOS
Roads API
Street View Static API
Time Zone API
- Mapquest: Không có con số Uptime cụ thể.
Hoạt động 24/7 nghĩa là 24 giờ mỗi ngày, 7 ngày mỗi tuần chưa bao gồm
các hoạt động bảo trì, lịch trình thời gian downtime và một số khoảng
thời gian không dự đoán trược được.
- Here: 99.9% hằng tháng cho các API sau:
Maps
Routing
Geocoding
Traffic
Positioning
Weather
Fleet Telematics
Search
Transit
HERE SDK (server components)
Cả 3 dịch vụ đều cam kết về độ tin cậy hệ thống cao. Tuy nhiên Mapquest thì lại
không có con số Uptime cụ thể vì vậy sẽ vẫn có rủi ro khi hệ thông bị trục trặc hay
bị tấn công thường xuyên.
3.3. Tốc độ [2]
Phương pháp so sánh tốc độ này được thực hiện để so sánh giữa Google Map,
Bing, Mapquest. Nhưng phần này chúng ta chỉ tìm hiểu Google Map và MapQuest.
Here thì chưa có số liệu test.
Để thực hiện chúng ta sẽ có một bộ dữ liệu bao gồm 670 địa chỉ đầy đủ và chỉ là
địa chỉ ở US. Những địa chỉ này sẽ được chuyển đổi thành dạng URL theo tiêu chuẩn
của từng dịch vụ.
Ví dụ:
GoogleMap
https://maps.googleapis.com/maps/api/geocode/json?address=ENCODED_AD
DRESS
MapQuest
https://www.mapquestapi.com/geocoding/v1/address?key=API_KEY&location
=ENCODED_ADDRESS
39. 39
Lưu trữ những URL theo định dạng trên thành 2 file chứa các URL của Google
Map và Mapquest. Mỗi URL này được lưu trên 1 dòng khác nhau. Sau đó sử dụng thư
viện Python, chia tập URL này thành những nhóm có kích thước bằng nhau 10, 30,
67, 100. Tiến hành chạy gửi request những nhóm này cho đến khi hoàn thành và làm
nhiều lần với từng nhóm để có nhiều kết quả sau đó lấy giá trị trung bình làm kết quả
cho từng nhóm.
Group size Google Map Mapquest
100
14.626393
13.215507
67
12.980358 14.202346
30
13.332298 17.450716
10 26.12703 37.086448
Bảng 6 Kết quả so sánh tốc độ
Qua kết quả trên cho thấy thời gian dịch vụ Google Map geocoding rất nhanh tuy
nhiên khi kích cỡ nhóm thử nghiệm lớn thì Mapquest lại cho kết quả tối ưu hơn.
Tỉ lệ lỗi: Tỉ lệ xảy ra lỗi qua các lần test là rất nhỏ mặc dù gửi 100 request cùng
một lúc những các máy chủ dịch vụ vẫn hoạt động khá tốt.
3.4. Tính thẩm định
Tính thẩm định ở đây nói đến là thẩm định địa chỉ hay xác thực một địa chỉ.
Địa chỉ được xác thực nghĩa là địa chỉ này được so sánh với địa chỉ trong một cơ
sở dữ liệu có thẩm quyền chẳng hạn như cơ sở dữ liệu bưu điện Việt Nam hay USPS.
Nếu địa chỉ đó khớp với địa chỉ có trên hệ thống thì địa chỉ được xác nhận đó là địa
chỉ thực. Từ đó, dữ liệu thì càng chính xác, được xác nhận và các địa chỉ sai hay địa
chỉ ảo sẽ không có trong cơ sở dữ liệu.
Việc xác thực địa chỉ là một thử thách khó bởi vì không có quy định hay định
nghĩa nào để xác thực được địa chỉ. Và vì vậy các hệ thống dịch vụ đều được xây
dựng để xử lí việc này.
Các bước để có được địa chỉ xác thực:
- Chuyển đổi, phân tách địa chỉ theo tiêu chuẩn riêng như phần quá trình xử
lý geocoding
- Sau khi địa chỉ được format, nó sẽ được xác thực bởi việc tìm kiếm sự giống
nhau trong cơ sở dữ liệu chính thức. Nếu khớp thì xác thực và ngược lại.
Một vài nguyên nhân dẫn đến địa chỉ không được xác thực:
40. 40
- Địa chỉ ảo: đây là địa chỉ giả, đã từng tồn tại hoặc không tồn tại. Ví dụ: một
căn nhà đã bị gõ bỏ trong 3 tháng nhưng địa chỉ vẫn đang được sử dụng.
- Địa chỉ chưa được đăng kí: Các căn nhà mới xây chưa được đăng ký hay
chưa cập nhật vào cơ sở dữ liệu của hệ thống thì nó chưa được xác thực.
Việc xác thực địa chỉ là thực sự khó khăn. Và để thực hiện được điều này
chúng ta phải tham chiếu, sử dụng đến dữ liệu, hồ sơ của cơ sở bưu chính chính thức.
Google Maps, Here, Mapquest chưa có tài liệu nào phân tích về tính thẩm định
này.
3.5. Tài liệu và hỗ trợ
Google Maps API: Tài liệu đầy đủ chi tiết, có nhiều nguồn tài liệu giúp đỡ khi tìm
hiểu về google map chẳng hạn như: Stack OverFlow, Youtube, Github. Tài liệu hỗ trợ
nhiều thứ tiếng. Chỉ hỗ trợ người dùng trả phí khi sử dụng dịch vụ.
MapQuest: Tài liệu hạn chế hơn, hỗ trợ qua forum
https://developer.mapquest.com/forum và report. Tuy nhiên forum lại khá hạn chế khi
không có thanh công cụ search mà thay vào đó chỉ có pagination.
Developer Here: Tài liệu trực quan đầy đủ nhưng ít tài liệu mở rộng hay trao đổi
của người dùng. Hỗ trợ công nghệ cho người dùng sử dụng miễn phí qua tài liệu
Stack OverFlow và người dùng trả phí qua cổng hỗ trợ khách hàng riêng.
3.6. Giá
Google Maps API: phụ thuộc vào việc mình sử dụng. “Pay as you go” xài bao
nhiêu thì phí dịch vụ tương ứng với tài liệu sử dụng. Việc trả phí cho những requests
của Geocoding API và Maps Javascript Api’s Geocoding Service. Tuy nhiên chúng ta
sẽ được dùng miễn phí lên tới 200$ hàng tháng.
Hình 21 Google Map - Giá dịch vụ Map
41. 41
Hình 22 Google Map - Giá Geocoding, Places
Ví dụ: Theo bảng giá dịch vụ trên, khi chúng ta sử dụng dịch vụ geocoding,
dynamic Maps và Find Places sẽ tính tiền ra giá trị như sau:
Dynamic Maps: Với 10,000 views một tháng: 20,000*7$/1000 = 70$
Geocoding: 100,000 yêu cầu Geocoding API: 100,000*5$/1000=500$
Find Place: 5000 yêu cầu tìm kiếm: 5000*17*/1000= 85$
Vậy trong một tháng với nhu cầu sử dụng như vậy chúng ta phải trả số tiền
70+500+85 = 655$ - 200$ = 455$. Với 200$ là số tiền mà hàng tháng chúng ta
được sử dụng free.
Here: Chọn theo gói giá đã được đặt sẵn. Với phần tài nguyên bị sử dụng vượt quá
phạm vi gói sẽ thêm số tiền tương ứng.
Ví dụ: Ở gói freemium (miễn phí), sau khi dùng hết 250k transactions/ 1 tháng
sẽ tính thêm giá. Khi sử dụng thêm dữ liệu tương ứng 100MB/1$, 1000
transactions/1$ và băng thông dữ liệu tương ứng 5GB/3$
Ở gói add-on, sau khi dùng hết 250k transactions/ 1 tháng sẽ tính thêm giá. Khi
sử dụng thêm dữ liệu tương ứng 100MB/45$,1000 transactions/1$ và băng
thông dữ liệu tương ứng 5GB/3$. Tuy nhiên giá gói cước này là 45$/tháng.
Ở gói pro, sau khi dùng hết 1,000,000 transactions/ 1 tháng sẽ tính thêm giá.
Khi sử dụng thêm dữ liệu tương ứng 1000 transactions/1$. Tuy nhiên giá gói
cước này là 449$/tháng.
Mapquest: Chia làm 2 loại cơ bản và nâng cao. Mỗi loại có nhiều gói khác từ giá
trị nhỏ đến lớn phù hợp theo nhiều yêu cầu. Với lựa chọn loại nâng cao chúng ta có
thể sử dụng và lưu trữ các kết quả geocoding mà không cần hiển thị trên map.
Free: 15,000transactions/month, tương tự như vậy số transactions càng nhiều
thì giá tiền càng cao.
Cơ bản: Free->Basic->Plus->Business->BusinessPlus
Nâng cao: Business Enhanced -> Business Plus Enhanced
42. 42
So sánh giá dựa trên việc sử dụng 100k request / tháng khi sử dụng tìm kiếm và
hiển thị trên map của website:
Geocoding Monthly Price (100,000 requests)
Google Maps API 300$
Here 399$
Mapquest 0$ + data tranfer + storage data
3.7. Tổng kết
Bảng 7 So sánh Price
Trong 3 dịch vụ nhóm tìm hiểu, chúng tôi chọn ra dịch vụ Google Map để tiếp tục
phát triển ứng dụng demo có sử dụng PHP, MySQL để xây dựng ứng dụng đánh dấu
các địa điểm trên bản đồ.
Dịch vụ Google Map được chọn vì nhiều lý do như:
Về tần suất người sử dụng trên thế giới lớn.
Lịch sử cập nhật bản đồ về địa điểm, đường đi hằng ngày.
Dễ sử dụng API key để áp dụng vào trang web đơn giản.
Độ chính xác rất cao trong nhiều kết quả tìm kiếm google maps API cho thấy
hầu hết các kết quả đều được tìm thấy. Con số tọa độ được google Maps API
đưa ra lên tới phần triệu – phần chục triệu.
Hỗ trợ nhiều ngôn ngữ trong tìm kiếm.
Tài liệu có thể nói nhiều và đầy đủ nhất trong 3 dịch vụ mà nhóm tìm hiểu.
Nguồn tài liệu lớn trong đó có hỗ trợ nhiều phiên bản về ngôn ngữ đặc biệt
trong đó có phiên bản tiếng việt.
Các cam kết về thời gian làm việc – uptime rõ ràng rành mạch.
Tốc độ geocoding cũng khá nhanh tuy thua mapquest khi số lượng request
nhiều nhưng khá ổn định.
Ngoài nguồn tài liệu trực tiếp trên website. Google Map còn nhiều tài liệu được
viết do các nhà phát triển nghiên cứu và biên soạn.
Bên cạnh đó, các trang web nổi tiếng trong lập trình như Stack OverFlow cũng
có rất nhiều thảo luận hay câu hỏi về cách sử dụng của Google Map.
Việc sử dụng google maps API để tích hợp hiển thị đơn giản map trên website
khá dễ sử dụng.
43. 43
Về giá khi sử dụng tài nguyên Google Map, được công bố rõ ràng chia ra thành
nhiều hạng mục lớn, hạng mục nhỏ. Người sử dụng dịch vụ tham khảo giá rõ
ràng và quan sát, theo dõi được mức độ sử dụng dịch vụ của mình. Nhờ đó
chúng ta có thể lập kế hoạch phân bổ nguồn lực vốn, quản lý được lượt truy cập
sử dụng website của mình thông qua thông số của Google Map.
Hằng tháng được sử dụng 200$ miễn phí cho các dịch vụ mà chúng ta dùng.
Nếu quá 200$ thì “pay as you go”. Sử dụng bao nhiêu thì trả bấy nhiêu tương
ứng với tài nguyên mình sử dụng.
Ngoài ra còn có nhiều bài hướng sử dụng dẫn đến từ nhiều nền tảng khác nhau
trang như facebook, youtube, blog…
Có thể gọi Google Map là ông tổ trong các dịch vụ geocoding. Trong quá trình
tìm hiểu và so sánh. Ngoài những document, thông tin của các dịch vụ nhóm
còn tìm hiểu qua các bài luận, các nghiên cứu so sánh giữa các dịch vụ. Và hiển
nhiên Google Map là dịch vụ mà hầu các bài luận, nghiên cứu so sánh đều lấy
Google Map ra để so sánh giống như một chuẩn chung.
44. 44
4. Phát triển ứng dụng demo
4.1. Ứng dụng demo đánh dấu các địa điểm
Với những kiến thức tìm hiểu về dịch vụ Google Map và một số kiến thức về PHP,
MySQL, Javascript, Jquery, Ajax … để xây dựng ứng dụng demo này.
Ứng dụng sẽ dùng để lưu lại các vị trí (tòa nhà, công viên …) vào cơ sở dữ liệu
thông qua dịch vụ tìm kiếm địa chỉ Google Map. Sau đó lấy dữ liệu đã được lưu trong
cơ sở dữ liệu ra và đánh dấu hiển thị trên bản đồ.
Mục đích: Giúp chúng ta lưu trữ lại những nơi mà chúng ta lưu ý đến. Ngoài ra
còn có sử dụng hiển thị chi tiết các thông tin điểm đánh dấu mà chúng ta đã lưu vào
cơ sở dữ liệu.
Để thực hiện được ứng dựng demo này chúng ta ứng dụng:
4.1.1. Đăng ký API Key
Ứng dụng Maps API sử dụng một API key. Một key API cho chúng ta kiểm soát
các ứng dụng.
Chúng ta xem lại tại phần Dịch vụ Google Map.
4.1.2. Load bản đồ
Khi đã có key google cung cấp ta sử dụng key đó trong đoạn mã javascripts trong
cặp thẻ script với phương thức callback hàm initMap:
Hình 23 Callback Google Map Script
Sau đó chúng ta tiến hành tạo hàm initMap javascript:
Hình 24 Hàm callBack initMap()
45. 45
- Center: một điểm làm trung tâm của bản đồ Latitude (vĩ độ) và Longitude
(kinh độ).
- Zoom: độ zoom được quy định khi Map được load.
4.1.3. Markers
Markers dùng để xác định một điểm trên bản đồ hoặc đánh dấu địa điểm dựa trên
vĩ độ và kinh độ. Theo mặc định sử dụng icon của google làm hình ảnh hiện lên điểm
đánh dấu.
Sau đây là các trường được xây dựng trong new google.maps.Marker:
- Position (bắt buộc): quy định là tọa độ LatLng của điểm được đánh dấu.
- Map: quy định đối tượng bản đồ được đánh dấu. nếu thuộc tính này được
khai báo trong đây nó sẽ thay thế cho Markers.setMap(map).
- Icon: hình ảnh tùy chọn mà chúng ta muốn hiển thị thay thế hình ảnh mặc
định. Dùng tùy chọn này thay thế cho marker.setIcon(url).
- Title (tùy chọn): tiêu đề của địa điểm.
- Draggable: kéo thả markers trên bản đồ. Nếu TRUE tính động được khởi
động.
4.1.4. Info Windows
Hình 25 Markers
Infowindows là một cửa sổ chứa các thông tin. Thông tin này là tùy chọn. Chúng
ta gọi Infowindows.open() để có thể mở được cửa sổ
Trông như hình ảnh sau:
46. 46
4.1.5. Các sự kiện
Hình 26 InfoWindow
Một số đối tượng trong Maps API được thiết kế để đáp ứng với sự kiện người sử
dụng chẳng hạn như các sự kiện chuột hoặc bàn phím.
Một đối tượng google.maps.Marker có thể lắng nghe người sử dụng các sự kiện:
- click
- dbClick
- mousedown
- mouseover
- mouseout
4.1.6. Tiến hành thực hiện ứng dụng
a) Cơ sở dữ liệu
Bao gồm các trường để lưu trữ thông tin về địa chỉ (address), kinh độ (lat), vĩ
độ (lon), ghi chú trên địa điểm (note), biểu tượng marker hiển thị đánh dấu trên map
(icon).
47. 47
b) Khởi tạo Map và giao diện
Hình 27 Database
Hình 28 Giao diện ứng dụng
Sử dụng Place Autocomplete của Google Map để hiển thị bản đồ. Sau đó custom
thanh tìm kiếm, tạo chế độ hiển thị markers trên map (hide/show) và tạo form để gửi
thông tin về địa chỉ.
48. 48
Khi nhập vào ô tìm kiếm hệ thống Google Map API sẽ tự động gợi ý về địa chỉ mà
chúng ta tìm kiếm.
Hình 29 AutoComplete SearchBox
Chúng ta tiến hành chọn địa chỉ phù hợp với địa chỉ mà chúng ta tìm kiếm. Thông tin
về địa chỉ, tọa độ sẽ được load đến form.
Hình 30 Kết quả tìm kiếm
Tiếp theo nếu muốn lưu lại địa chỉ này chúng ta có thể nhập vào ô ghi chú về tên mà
địa điểm chúng ta muốn lưu, cùng với đó là chọn biểu tượng icon mà chúng ta muốn
hiển thị trên map. Ở đây chúng ta lựa chọn ghi chú + icon như trong ảnh.
Cuối cùng, nhấn submit để tiến hành lưu vào cơ sở dữ liệu đồng thời hiển thị icon
đánh dấu trên bản đồ.
49. 49
- Dữ liệu lưu thành công vào cơ sở dữ liệu như sau:
Hình 31 Kết quả lưu dữ liệu
- Hiển thị icon của biểu tượng karaoke trên bản đồ.
Hình 32 Kết quả hiển thị Markers
- Hiển thị các thông tin địa điểm đã lưu khi di chuyển chuột vào.
50. 50
Hình 33 Kết quả hiện thị InfoWindow
- Ngoài ra chúng ta có thể lự chọn hide ở trên thanh tìm kiếm để hiện thị hay ẩn
markers đang có trên map:
Hình 34 Kết quả Hide
51. 51
5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
5.1. Kết luận
Với mục tiêu nghiên cứu các dịch vụ, so sánh chọn lựa và xây dựng ứng dụng
demo sử dụng 1 dịch vụ geocoding hiệu quả nhất. Đề tài đã đạt được những kết quả
cụ thể sau:
Hoàn thành so sánh tổng quan giữa 3 dịch vụ geocoding: Google Map, Here,
Mapquest.
Lựa chọn dịch vụ Google Map để tiến hành xây dựng demo sản phẩm.
Hoàn thành thiết kế cơ sở dữ liệu lưu trữ thông tin địa điểm.
Hoàn thành giao diện trang web.
Hoàn thành thiết kế và xây dựng các chức năng.
Ứng dụng:
Tìm kiếm thông tin địa điểm, gợi ý địa chỉ khi nhập liệu thông qua dịch
vụ Google Map API.
Tùy chỉnh hiển thị hoặc ẩn các markers trên bản đồ.
Trả về thông tin địa điểm (kinh độ, vĩ độ) trên form.
Ghi chú và chọn icon cùng với thông tin địa điểm để hiển thị địa điểm
trên bản đồ.
Tuy nhiên, ngoài những mục tiêu đã đạt được đề tài còn tồn tại một số hạn chế:
Một số đánh giá như tốc độ còn chưa thực hiện được và sử dụng tham khảo qua
các trang web, bài viết phân tích khác.
Giao diện website còn đơn giản, chưa đầy đủ, không thực sự chuyên nghiệp.
5.2. Hướng phát triển
Mặc dù đề tài đã đạt được mục tiêu đề ra nhưng để đề tài hoàn thiện và có thể ứng
dụng vào thực tế, đề tài cần nghiên cứu bổ sung thêm các nội dung sau:
Tiến hành nghiên cứu và phân tích các dịch vụ geocoding chi tiết hơn. Đặc biệt
là phần so sánh.
Tiến hành so sánh được tốc độ trên group lớn để có được kết quả thực tế hơn.
Thiết kế giao diện chuyên nghiệp hơn.
52. 52
Nghiên cứu xây dựng thêm các chức năng khác (xóa markers …), quản lý
thông tin.
Xây dựng và phát triển chế độ bảo mật khi đưa lên mạng internet.
53. 53
Tài liệu tham khảo
[1] Hutchinson, Matthew J (2010). Developing an Agent-Based
Framework for Intelligent Geocoding (PhD thesis). Curtin University.
[2] Ratcliffe, Jerry H. (2001). "On the accuracy of TIGER-type geocoded
address data in relation to cadastral and census areal
units" (PDF). International Journal of Geographical Information Science.
[3] "Spatially enabling the data: What is geocoding?". National Criminal
Justice Reference Service. Retrieved 22 June 2016.
[4] "On the accuracy of TIGER-type geocoded address data in relation
to," Ratcliffe, Jerry H., 2001.
[5] B. LLC, "Fastest Geocoders: Benchmarking Google, Bing, and
MapQuest," [Online]. Available: https://blog.batchgeo.com/fastest-
geocoders-benchmarking-google-bing-and-mapquest.