để 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.. Ý 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
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
~~~~~~*~~~~~~
NGHIÊN CỨU BÀI TOÁN GEOCODING
VÀ PHÁT TRIỂN ỨNG DỤNG MINH HỌA
NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
Trang 2L Ờ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
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
và tận tình chỉ bảo của quý Thầy Cô
Trang 3M Ụ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
Trang 44.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
Trang 5DANH 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
Trang 6DANH 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
đó có thể thấy hữu ích hoặc thú vị
quân sự
B ảng 1 Bảng ký hiệu viết tắt
Trang 71 Giới thiệu
1.1 Đặt vấn đề
1.1.1 Tính cấp thiết
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 …
website
để 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
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
Trang 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
- 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ể
Trang 92 Công nghệ liên quan
2.1 Tìm hiểu về geocoding
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,
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
Khi đó sẽ chuyển đổi sang các tọa độ dựa trên các kinh độ và vĩ độ hoặc hệ
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
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
2.1.2 Địa chỉ là gì?
Trang 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
Trang 12Cách làm như thế sẽ phân tích và cho ra được nhiều trường hợp để tìm kiếm
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ừ
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ị
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
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
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:
Trang 13Ví 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
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ẽ
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
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ẽ
đườ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à
nhất với dữ liệu
Trang 142.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í
đườ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
đị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
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
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ý
Trang 15b) Nghiên cứu và thực hiện triển khai dịch vụ
Google Cloud Platform được viết tắt là GCP là 1 nền tảng của điện toán đám
Để 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
Places Search Box: Sử dụng mã nguồn tạo ra ô tìm kiếm cho phép nhập vào địa
Trang 16Hì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
Hình 4 Google Map - Tọa độ bắt đầu
Trang 17Hì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 Map
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
Trang 182.2.2 Dịch vụ MapQuest
a) Tổng quan
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ợ
Trang 19(developer)
https://developer.mapquest/com Sau đó tạo Key Mapquest API
Hình 7 MapQuest - Key MapQuest API
Trang 20 Ví dụ: test code trên môi trường localhost
Hình 8 Mapquest - Demo
Hình 9 Mapquest - Tọa độ bắt đầu
Trang 21
Hình 9: Search MapQuest
Trang 22 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
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ị
đượ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
Trang 23Để 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
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
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
Trang 24Hình 11 Minh họa interpulation
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ố
đườ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
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
Trang 253.2.2.2 V ề dữ liệu:
đó 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
một lúc
Cách thực hiện:
Trang 26Hình 13 Mapquest - Gửi dữ liệu đến API
- Nhập các địa chỉ vào ô location để gửi đến server
- Nhập Key API Mapquest
- Nhấn Send để gửi dữ liệu
- Kết quả Server trả về:
"info": { "statuscode": 0, "copyright": { "text": "© 2020 MapQuest, Inc.", "imageUrl": "http://api.mqcdn.com/res/mqlogo.gif", "imageAltText": "© 2020 MapQuest, Inc."
}, "messages": []
}, "options": { "maxResults": 1, "thumbMaps": false, "ignoreLatLngInput": false
"results": [ { "providedLocation": { "location": "1103 W 1130 N\nOrem Ut"
}, "locations": [ {
"street": "1103 W 1130 N",
Trang 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