Thuật toán tìm đường đi tối ưu trong GIS, hiện nay đang được triển khai rộng rãi trong các ứng dụng quan trọng trên thực tế như lập kế hoạch vận chuyển, điều khiển giao thông,… Trên đây
Trang 1§¹i häc Th¸i Nguyªn Khoa c«ng nghÖ th«ng tin
Trang 2§¹i häc Th¸i Nguyªn Khoa c«ng nghÖ th«ng tin
Ph¹m ThÞ H»ng Nga
ThuËt to¸n t×m ®êng ®i tèi u trong gis
Chuyªn ngµnh: Khoa häc m¸y tÝnh
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan bản luận văn “Thuật toán tìm đường đi tối ưu trong GIS” là công trình nghiên cứu của tôi dưới sự hướng dẫn khoa học của PGS.TS Đặng Văn Đức, tham khảo các nguồn tài liệu đã được chỉ rõ trong trích dẫn và danh mục tài liệu tham khảo Các nội dung công bố và kết quả trình bày trong luận văn này là trung thực và chưa từng được ai công bố trong bất cứ công trình nào
Thái Nguyên, tháng 10 năm 2010
Phạm Thị Hằng Nga
Trang 4Lời cảm ơn
Tôi xin gửi lời cảm ơn sâu sắc tới PGS TS Đặng Văn Đức, người đã tận tình
có những chỉ bảo cần thiết để giúp đỡ tôi trong suốt quá trình nghiên cứu và phát triển luận văn
Xin chân thành cảm ơn quý Thầy cô trong khoa Sau đại học trường Đại học Thái Nguyên đã nhiệt tình giảng dạy, trang bị cho tôi những kiến thức quý báu trong suốt thời gian học tập tại trường
Xin chân thành cảm ơn các bạn cùng lớp, đồng nghiệp và đơn vị nơi tôi công tác đã tạo điều kiện cho tôi hoàn thành luận văn này
Xin gửi lời cảm ơn tới gia đình tôi đã động viên tôi trong suốt quá trình học
và hoàn thành luận văn
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
MỞ ĐẦU 1
CHƯƠNG 1 - TỔNG QUAN VỀ GIS 4
1.1 Định nghĩa, các thành phần, chức năng GIS 4
1.1.1 Định nghĩa 4
1.1.2 Các thành phần 9
1.1.3 Chức năng của Gis 12
1.2 Cấu trúc dữ liệu không gian véctơ và các thuật toán liên quan 14
1.2.1 Các thành phần dữ liệu 14
1.2.2 Các phép toán phân tích không gian trên mô hình Vector 18
1.3 Các ứng dụng GIS 22
CHƯƠNG 2 – MỘT SỐ THUẬT TOÁN TÌM ĐƯỜNG ĐI TỐI ƯU ỨNG DỤNG TRONG GIS 24
2.1 Một số thuật toán cơ sở: Disktra, Floy, A* 24
2.1.1 Phát biểu bài toán 24
2.1.2 Thuật toán Dijkstra 25
2.1.3 Thuật toán Bellman-Ford 34
2.1.4 Thuật toán A* 37
2.2 Ứng dụng logíc mờ trong tìm đường đi tối ưu 46
2.2.1 Giới thiệu Logic mờ 46
2.2.2 Ứng dụng logic mờ trong tìm đường đi tối ưu 50
2.3 Nhận xét đánh giá 53
CHƯƠNG 3 – PHÁT TRIỂN CHƯƠNG TRÌNH THỬ NGHIỆM 56
3.1 Giới thiệu bài toán tìm đường đi tối ưu 56
3.1.1 Lý do xây dựng chương trình 56
Trang 63.1.2 Mục tiêu, nhiệm vụ của chương trình 56
3.2 Các công nghệ sử dụng 57
3.2.1 MapInfo Professional 57
3.2.2 Thư viện hỗ trợ xây dựng ứng dụng bản đồ MapXtreme 60
3.2.3 Hệ quản trị cơ sở dữ liệu Access 64
3.2.4 Ngôn ngữ lập trình Microsoft Visual C#.NET 64
3.3 Thiết kế, lập trình hệ thống demo 65
3.3.1 Thiết kế 65
3.3.2 Lập trình demo 67
3.4 Đánh giá kết quả thu được 72
KẾT LUẬN 73
HƯỚNG PHÁT TRIỂN 74
TÀI LIỆU THAM KHẢO 75
Trang 7DANH MỤC HÌNH VẼ
Hình 1.1 Hệ thống thông tin tin địa lý 6
Hình 1.2 Tầng bản đồ 7
Hình1.3 Các hoạt động chính của GIS 8
Hình 1.4 Các thành phần của GIS 9
Hình 1.5 Phần cứng GIS 11
Hình 1.6 Phần mềm của GIS 12
Hình 1.7 Các nhóm chức năng trong GIS 13
Hình 1.8 Các thành phần hình học cơ sở 14
Hình 1.9: Số liệu vector được biểu thị dưới dạng điểm (Point) 15
Hình 1.10: Số liệu vector được biểu thị dưới dạng Arc 16
Hình 1.11: Số liệu vector được biểu thị dưới dạng vùng (Polygon) 17
Hình 1.12 Một số khái niệm trong cấu trúc cơ sở dữ liệu bản đồ 17
Hình 1.13 Phép toán Buffer 18
Hình 1.14 Phép toán Difference 18
Hình 1.15 Phép toán Clip 19
Hình 1.16 Phép toán Intersect 19
Hình 1.17 Phép toán Convex hull 19
Hình 1.18 Phép toán Symmetric difference 20
Hình 1.19 Phép toán cut 20
Hình 2.1 Đồ thị minh họa thuật toán Dijkstra 28
Hình 2.2 Đồ thị minh họa thuật toán Bellman-Ford 35
Hình 2.3: Minh hoạ phép toán hợp trên tập mờ 50
Hình 2.4: Minh hoạ phép toán giao trên tập mờ 50
Hình 2.5: Đồ thị mờ G minh hoạ thuật toán FSA 51
Hình 2.6: Các đường đi mờ ngắn nhất của đồ thị mờ G 53
Trang 8Hình 3.1 Sơ đồ phân cấp chức năng 65
Hình 3.2 Bảng dữ liệu 66
Hình 3.3 Giao diện tìm kiếm đường đi ngắn nhất 71
Hình 3.4 Giao diện kết quả tìm kiếm 72
Trang 9MỞ ĐẦU
Từ xa xưa, thông tin địa lý đã là nhu cầu cần thiết của mọi người trong mọi sinh hoạt hàng ngày tại những vị trí khác nhau Mỗi người trong xã hội luôn luôn có nhu cầu cần biết về thế giới thực xung quanh mình Con người muốn được hiểu biết về các thực thể, các sự kiện, các hiện tượng như thế nào, xảy ra ở đâu, xảy ra khi nào, và tại sao như vậy Ở quy mô rộng lớn hơn, những nhà lãnh đạo một địa phương, một quốc gia, một khu vực luôn luôn cần có thông tin địa lý một cách đầy đủ, chính xác, kịp thời để ra những quyết sách đúng đắn, phù hợp lòng dân, làm cho địa phương, quốc gia ngày càng phát triển Những nhà quân sự cần có thông tin địa lý để có những phương án chiến lược, chiến thuật bảo vệ lãnh thổ Những nhà đầu tư cần thông tin địa lý
để tính toán những khả năng và hiệu quả đầu tư, những nhà kinh doanh cần có thông tin địa lý để qui hoạch chiến lược thị trường, làm cho hàng hóa được tiêu thụ nhanh chóng Những nhà quản lý công trình giao thông đô thị cần thông tin địa lý để cơ cấu lại phương tiện giao thông công cộng theo hướng giảm ách tắc giao thông, tiết kiệm nhiên liệu, giảm ô nhiễm môi trường,…
Ngày nay, với sự phát triển của công nghệ thông tin, đặc biệt là từ khi xuất hiện ngành đồ họa vi tính cũng như sự gia tăng vượt bậc những khả năng phần cứng, hệ thống thông tin địa lý (GIS) đã ra đời và phát triển nhanh chóng cả về mặt công nghệ cũng như ứng dụng Hệ thống thông tin địa lý đã chứng tỏ khả năng ưu việt hơn hẳn các hệ thông tin bản đồ truyền thống nhờ vào khả năng tích hợp thông tin mật độ cao, cập nhật thông tin dễ dàng cũng như khả năng phân tích, tính toán của nó Do đó, hệ thống thông tin địa lý đã nhanh chóng trở thành một công cụ trợ giúp quyết định cho tất cả các ngành
từ quy hoạch đến quản lý, tất cả các lĩnh vực từ tài nguyên thiên nhiên, môi trường, đất đai, hạ tầng kỹ thuật đến xã hội nhân văn Có thể nói ngày nay
Trang 10không có lĩnh vực nào không có hoặc không thể ứng dụng công nghệ GIS Cũng chính vì thế, công nghệ thông tin địa lý (công nghệ GIS) được tiếp cận
từ nhiều hướng khác nhau và do đó cũng có nhiều định nghĩa khác nhau về GIS
Thuật toán tìm đường đi tối ưu trong GIS, hiện nay đang được triển khai rộng rãi trong các ứng dụng quan trọng trên thực tế như lập kế hoạch vận chuyển, điều khiển giao thông,…
Trên đây đã điểm qua tầm quan trọng của hệ thông tin địa lý, đặc biệt là thuật toán tìm đường đi tối ưu trong Gis đã cho ta thấy rõ tính cần thiết cũng như tính thời sự của vấn đề, đồng thời có ý nghĩa khoa học và thực tiễn Vì
thế, tôi đã thực hiện đề tài luận văn: “Thuật toán tìm đường đi tối ưu trong Gis”
Mục tiêu đề tài là tìm hiểu các thuật toán áp dụng trong đồ thị Đề tài cũng bước đầu xây dựng một chương trình tìm kiếm đường đi tối ưu giúp cho những người tham gia giao thông, hay khách du lịch ở thành phố Hải Phòng chọn được hướng đường đi tối ưu nhất, nhằm tiết kiệm thời gian và công sức
Bố cục của luận văn bao gồm phần mở đầu, phần kết luận và ba chương nội dung được tổ chức như sau:
Chương 1: Tổng quan về GIS
Chương này trình bày tổng quan về hệ thống thông tin địa lý bao gồm các thành phần, chức năng và các ứng dụng của GIS Hơn nữa, đề cập đến một số vấn đề về cấu trúc dữ liệu không gian vectơ và các thuật toán liên quan…
Chương 2: Một số thuật toán tìm kiếm đường đi tối ưu ứng dụng trong GIS
Trang 11Trong chương này tập trung vào một số thuật toán tìm đường đi ngắn nhất trong đồ thị như thuật toán Dijkstra, thuật toán A*, thuật toán Floyd,…
Chương 3: Phát triển chương trình thử nghiệm
Trong chương này phát triển ứng dụng về thuật toán tìm đường đi tối
ưu trong thực tế Cụ thể là cài đặt và thử nghiệm với thuật toán Floyd để tìm kiếm đường đi có khoảng cách ngắn nhất giữa các điểm đường trên đồ thị của thành phố Hải Phòng
Xây dựng chương trình dựa trên cơ sở dữ liệu đã tạo trên MapInfo, với công cụ lập trình là Visual C#.NET và MapXtreme Thiết kế, đặc tả chức năng, cách thức lập trình, cài đặt và thử nghiệm, giao diện chương trình
Trang 12CHƯƠNG 1 - TỔNG QUAN VỀ GIS
Hệ Thông tin địa lý - GIS (Geographical Information System) là một công cụ máy tính để lập bản đồ và phân tích các sự vật, hiện tượng thực trên trái đất Công nghệ GIS kết hợp các thao tác cơ sở dữ liệu thông thường (như cấu trúc hỏi đáp) và các phép phân tích thống kê, phân tích địa lý, trong đó phép phân tích địa lý và hình ảnh được cung cấp duy nhất từ các bản đồ Những khả năng này phân biệt GIS với các hệ thống thông tin khác và khiến cho GIS có phạm vi ứng dụng rộng trong nhiều lĩnh vực khác nhau (phân tích các sự kiện, dự đoán tác động và hoạch định chiến lược)
1.1 Định nghĩa, các thành phần, chức năng GIS
là hai công việc tách biệt nhau Do vậy GIS có khả năng quan sát từ các góc
độ khác nhau trên cùng tập dữ liệu Sau đây là một vài định nghĩa về GIS hay được sử dụng:
Định nghĩa của dự án The Geographer’s Craft, Khoa địa lý, Trường Đại học Texas
GIS là CSDL số chuyên dụng trong đó hệ trục tọa độ không gian là phương tiện tham chiếu chính GIS bao gồm các công cụ để thục hiện các công việc sau đây:
Nhập dữ liệu từ bản đồ giấy, ảnh vệ tinh, ảnh máy bay, số liệu điều tra và các ngồn khác
Trang 13 Lưu trữ dữ liệu, khai thác, truy vấn CSDL
Biến đổi dữ liệu, phân tích, mô hình hóa, bao gồm cả dữ liệu thống kê và
dữ liệu không gian
Lập báo cáo, bao gồm bản đồ chuyên đề, các bảng biểu, biểu đồ và kế hoạch
Từ định nghĩa trên thấy rõ ba vấn đề sau của GIS Thứ nhất, GIS có quan hệ với ứng dụng CSDL Toàn bộ thông tin trong GIS đều liên kết với tham chiếu không gian Có những CSDL chứa thông tin vị trí (địa chỉ đường phố…) nhưng CSDL GIS sử dụng tham chiếu khôn gian như phương tiện chính để lưu trữ và xâm nhập thông tin Thứ hai, GIS là công nghệ tích hợp
Hệ GIS đầy đủ có đầy đủ khả năng phân tích, bao gồm phân tích ảnh máy bay, ảnh vệ tinh hay tạo lập mô hình thống kê, vẽ bản đồ… Cuối cùng, GIS được xem như tiến trình không chỉ là phần cứng, phần mềm rời rạc mà GIS còn sử dụng vào trợ giúp quyết định Cách thức nhập, lưu trữ, phân tích dữ liệu trong GIS phải phản ánh đúng cách thức thông tin sẽ được sử dụng trong công việc lập quyết định hay nghiên cứu cụ thể
Định nghĩa của Viện Nghiên cứu Hệ thống Môi trường ESRI, Mỹ
GIS là công cụ trên cơ sở máy tính để lập bản đồ và phân tích những cái đang tồn tại và các sự kiện xảy ra trên Trái đất công nghệ GIS tích hợp các thao tác CSDL như truy vấn và phân tích thống kê với lợi thế quan sát và phân tích thống kê bản đồ Các khả năng này sẽ phân biệt GIS với các hệ thông tin khác Có rất nhiều chương trình máy tính sử dụng dữ liệu không gian như AutoCAD và các chương trình thống kê, nhưng chúng không phải là GIS vì chúng không có khả năng thực hiện các thao tác không gian
Trang 14 Định nghĩa của David Cowen, NCGIA, Mỹ
GIS là hệ thống phần cứng, phần mềm và các thủ tục được thiết kế để thu thập, quản lý, xử lý, phân tích, mô hình hóa và hiển thị các dữ liệu qui chiếu không gian để giải quyết các vấn đề quản lý và lập kế hoạch phức tạp
Độ phức tạp của thế giới thực là không gian hữu hạn Càng quan sát thế giới gần hơn càng thấy được chi tiết hơn Con người mong mỏi lưu trữ, quản
lý đầy đủ các dữ liệu về thế giới thực Nhưng sẽ dẫn đến phải có cơ sở dữ liệu lớn vô hạn để lưu trữ mọi thông tin chính xác về chúng Do vậy, để lưu trữ được dữ liệu không gian của thế giới thực vào máy tính thì phải giảm số lượng dữ liệu đến mức có thể quản lý được bằng tiến trình đơn giản hóa hay
trừu tượng hóa (Hình 1.1) Trừu tượng là đơn giản hóa một cách thông minh
Trừu tượng cho ta tổng quát hóa và “ý tưởng” hóa vấn đề đang xem xét Chúng loại bỏ đi các chi tiết dư thừa mà chỉ tập trung vào các điểm chính, cơ bản Các đặc trưng địa lý phải được biểu diễn bởi các thành phần rời rạc hay các đối tượng để lưu vào CSDL máy tính
Hình 1.1 Hệ thống thông tin tin địa lý
Ý nghĩa chủ yếu của tin học hóa thông tin địa lý là khả năng tích hợp các kiểu và nguồn dữ liệu khác biệt Mục tiêu của GIS là cung cấp cấu trúc một cách hệ thống để quản lý các thông tin địa lý khác nhau và phức tạp,
Phần mềm công cụ + CSDL
hóa hay đơn giản hóa
Người sử dụng
Kết quả
Thế giới thực
Trang 15đồng thời cung cấp các công cụ, các thao tác hiển thị, truy vấn, mô phỏng… Cái GIS cung cấp là cách thức suy nghĩ mới về không gian Phân tích không gian không chỉ là truy cạp mà còn cho phép khai thác các quan hệ và tiến trình biến đổi của chúng
Hình 1.2 Tầng bản đồ
GIS lưu trữ thông tin thế giới thực thành các tầng (layer) bản đồ chuyên
đề mà chúng có khả năng liên kết địa lý với nhau Giả sử ta có vùng quan sát
như trên Hình 1.2 Mỗi nhóm người sử dụng sẽ quan tâm đến một hay là vài
loại thông tin Thí dụ, Sở giao thông công chính sẽ quan tâm nhiều đến hệ thống đường phố Sở nhà đất quan tâm nhiều đến các khu dân cư và công sở
Sở thương mại quan tâm nhiều đến phân bổ khách hàng trong vùng Tư tưởng tách bản đồ thành tầng tuy đơn giản nhưng khá mềm dẻo và hiệu quả, chúng
có khả năng giải quyết rất nhiều vấn đề về thế giới thực, từ theo dõi điều hành
xe cộ giao thông, đến các ứng dụng lập kế hoạch và mô hình hóa lưu thông
Ta có thể sử dụng tiến trình tự động, gọ là mã hóa địa lý (geocoding) để liên
kết dữ liệu bên ngoài với dữ liệu bản đồ Thí dụ sử dụng mã hóa địa lý để ánh
Trang 16xạ thông tin bán hàng bằng mã bưu điện (ZIP) hay chỉ ra địa chỉ khách hàng trên bản đồ bằng các điểm
Hình1.3 Các hoạt động chính của GIS
Hiểu biết của chúng ta về trái đất là giới hạn vì thiếu thông tin cũng như thiếu chi thức Để quan sát vật thể quá nhỏ con người đã phát minh ra kính hiển vi, để quan sát vật thể quá lớn như toàn bộ Trái đất, con người đã sử dụng vệ tinh nhân tạo Hệ thông tin địa lý là công cụ tích hợp dữ liệu không gian theo tỷ lệ và thời gian khác nhau, theo các khuôn mẫu khác nhau Người
sử dụng thông tin địa lý như các nhà khoa học, giám sát tài nguyên môi trường, lập kế hoạch phát triển đô thị… đều làm việc theo vùng hay lãnh thổ
Họ quan sát và đo đạc các tham số môi trường Họ xây dựng các bản đồ biểu diễn một và đặc tính Trái đất Họ giám sát sự thay đổi xung quanh ta theo thời gian và không gian Cuối cùng, họ mô hình hóa các tác động, tiến trình trong
Trang 17môi trường (hình 1.3) Hiệu quả cơ bản của các hoạt dộng này sẽ được nâng
cao nhờ sử dụng thông tin địa lý, một hình thức của hệ thống thông tin
+ Người sử dụng hệ thống (system user) là những người sử dụng GIS
để giải quyết các vấn đề không gian
+ Thao tác viên hệ thống (system operator) có trách nhiệm vận hành hệ
thống hàng ngày để người sử dụng hệ thống làm việc có hiệu quả
Trang 18+ Nhà cung cấp GIS (GIS supplier) có trách nhiệm cung cấp phần
mềm cập nhật phần mềm, phương pháp nâng cấp cho hệ thống
+ Nhà cung cấp dữ liệu (data supplier) có thể là Tổ chức nhà nước hay
tư nhân
+ Người phát triển ứng dụng (application developer) là những lập trình
viên được đào tạo Họ xây dựng các giao diện người dùng, làm giảm khó khăn khi thực hiện các thao tác cụ thể trên hệ thống GIS chuyên nghiệp
+ Chuyên viên phân tích hệ thống GIS (GIS system analysts) là nhóm
người chuyên nghiên cứu thiết kế hệ thống
- Dữ liệu: là thành phần quan trọng nhất trong hệ thống GIS, chiếm khoảng 70% giá thành sản phẩm Dữ liệu thống kê gắn theo các hiện tượng tự nhiên với mức độ chính xác khác nhau Hệ thống thước đo của chúng bao gồm các biến tên, số thứ tự, khoảng và tỷ lệ Ngoài bốn loại biến dữ liệu này, các hệ GIS còn phân chia dữ liệu thành hai loại khác nhau:
+ Dữ liệu không gian (spatial): là thông tin về vị trí của các đối tượng trong thế giới thực trên mặt đất theo một hệ quy chiếu nhất định Thực thể không gian có thể cấu trúc theo hai cách: cấu trúc dạng vectơ và cấu trúc dạng raster
+ Dữ liệu phi không gian (non-spatial): còn gọi là dữ liệu thuộc tính, là những số hiệu, bảng biểu mô tả tính chất , đặc trưng của dữ liệu không gian
Nó được biểu thị dưới dạng những con số hoặc chữ mô tả số lượng, tính chất, thông số liên quan đến các đối tượng đó trên bản đồ
Dữ liệu phi không gian được kết nối logic với dữ liệu không gian Sự kết nối này là cơ sở để xác định chính xác các thông tin của đối tượng địa lý
Trang 19và thực hiện phép phân tích tổng hợp trong hệ thống GIS Mỗi hệ GIS đều có các công cụ lưu trữ dữ liệu thuộc tính cùng với dữ liệu không gian
- Phần cứng: GIS đòi hỏi các thiết bị ngoại vi đặc biệt như bàn số hóa, máy vẽ, máy quét ảnh để vào ra dữ liệu Các thiết bị này có thể được nối với
nhau thông qua thiết bị truyền tin hay mạng cục bộ (hình 1.5)
Hình 1.5 Phần cứng GIS
- Công cụ phần mềm: Một hệ thống GIS bao gồm nhiều modul phần mềm Khả năng lưu trữ, quản lý dữ liệu không gian bằng hệ quản trị cơ sở dữ liệu địa lý là khía cạnh quan trọng nhất của GIS Các modul khác là công cụ phân tích dữ liệu, làm báo cáo và truyền tin
Trang 20Hình 1.6 Phần mềm của GIS
- Giao diện người dùng: Giao diện đồ họa cho phép người dùng dễ dàng thực hiện các thao tác địa lý và các thao tác khác như truy cập cơ sở dữ liệu, làm báo cáo
1.1.3 Chức năng của Gis
GIS là hệ thống có khả năng tự động thực hiện những chức năng được phân chia như sau :
- Thu thập dữ liệu
- Xử lý sơ bộ dữ liệu
- Lưu trữ và truy nhập dữ liệu
- Tìm kiếm và phân tích không gian
- Hiển thị đồ họa và tương tác
Hình 1.7 mô tả quan hệ giữa các nhóm chứa năng và cách biểu diễn
thông tin khác nhau của GIS
Hiển thị, làm báo cáo
Phân tích không gian
Thu thập dữ liệu
Chuyển đổi dữ liệu
Giao diện người dùng
Quản trị CSDL địa lý
Trang 21Hình 1.7 Các nhóm chức năng trong GIS
Chức năng thu thập dữ liệu tạo ra dữ liệu từ các quan sát hiện tượng thế giới thực và từ các tài liệu, bản đồ giấy, đôi khi chúng có sẵn dưới dạng số Kết quả ta có tập “dữ liệu thô”, có nghĩa là dữ liệu này không được phép áp dụng trực tiếp cho chức năng truy nhập và phân tích của hệ thống Chức năng
xử lý sơ bộ dữ liệu sẽ biến đổi dữ liệu thô thành dữ liệu có cấu trúc để sử dụng trực tiếp các chức năng tìm kiếm và phân tích không gian Kết quả tìm kiếm và phân tích được xem như diễn giải dữ liệu, đó là tổ hợp hay biến đổi đặc biệt của dữ liệu có cấu trúc Hệ thống GIS phải có phần mềm công cụ để
tổ chức và lưu trữ các loại dữ liệu khác nhau, từ dữ liệu thô đến dữ liệu diễn giải Phần mềm công cụ này phải có các thao tác lưu trữ, truy nhập; đồng thời
có khả năng hiển thị, tương tác đồ họa với tất cả loại dữ liệu
Trang 221.2 Cấu trúc dữ liệu không gian véctơ và các thuật toán liên quan
Mô hình dữ liệu vectơ coi hiện tượng là tập các thực thể không gian cơ
sở và tổ hợp giữa chúng Trong mô hình 2D thì thực thể sơ đẳng bao gồm
điểm, đường và vùng; mô hình 3D còn áp dụng bề mặt ba chiều và khối (hình 1.8) Các thực thể sơ đẳng được hình thành trên cơ sở các vectơ hay tọa độ
của các điểm trong một hệ trục tọa độ nào đó
Hình 1.8 Các thành phần hình học cơ sở
1.2.1 Các thành phần dữ liệu
Kiểu đối tượng điểm (Points)
Điểm được xác định bởi cặp giá trị các đối tượng đơn, thông tin về địa lý chỉ gồm cơ sở vị trí sẽ được phản ánh là đối tượng điểm Các đối tượng kiểu điểm có đặc điểm:
Trang 23 Là toạ độ đơn (x,y)
Không cần thể hiện chiều dài và diện tích
Hình 1.9: Số liệu vector được biểu thị dưới dạng điểm (Point)
Tỷ lệ trên bản đồ tỷ lệ lớn, đối tượng thể hiện dưới dạng vùng Tuy nhiên trên bản đồ tỷ lệ nhỏ, đối tượng này có thể thể hiện dưới dạng một điểm Vì vậy, các đối tượng điểm và vùng có thể được dùng phản ánh lẫn nhau
Kiểu đối tượng đường (Arcs)
Đường được xác định như một tập hợp dãy của các điểm Mô tả các đối tượng địa lý dạng tuyến, có các đặc điểm sau:
Là một dãy các cặp toạ độ
Một arc bắt đầu và kết thúc bởi node
Các arc nối với nhau và cắt nhau tại node
Hình dạng của arc được định nghĩa bởi các điểm vertices
Độ dài chính xác bằng các cặp toạ độ
Trang 24Hình 1.10: Số liệu vector được biểu thị dưới dạng Arc
Kiểu đối tượng vùng (Polygons)
Vùng được xác định bởi ranh giới các đường thẳng Các đối tượng địa lý
có diện tích và đóng kín bởi một đường được gọi là đối tượng vùng polygons,
có các đặc điểm sau:
Polygons được mô tả bằng tập các đường (arcs) và điểm nhãn (label points)
Một hoặc nhiều arc định nghĩa đường bao của vùng
Một điểm nhãn label points nằm trong vùng để mô tả, xác định cho mỗi một vùng
Trang 25Hình 1.11: Số liệu vector được biểu thị dưới dạng vùng (Polygon)
Hình 1.12 Một số khái niệm trong cấu trúc cơ sở dữ liệu bản đồ
Trang 261.2.2 Các phép toán phân tích không gian trên mô hình Vector
GIS cung cấp rất nhiều phép toán phân tích không gian trên mô hình dữ liệu vector Các phép toán này dựa trên cơ sở so sánh lôgic tập các đối tượng này với tập đối tượng khác
1.2.2.1 Buffer
Cho trước một đối tượng và một giá trị khoảng cách, phép toán buffer
sẽ tạo ra một vùng đệm là một vùng bao phủ xung quanh tất cả các điểm mà khoảng cách từ chúng đến đối tượng nhỏ hơn hoặc bằng khoảng cách đề ra
Trang 27Hình 1.17 Phép toán Convex hull
Trang 281.2.2.6 Symmetric difference
Phép toán symmetric difference sẽ tiến hành so sánh vị trí hai đối tượng
và tạo ra một đối tượng mới từ hai đối tượng ban đầu và bỏ đi phần giao giữa chúng
Hình 1.18 Phép toán Symmetric difference
1.2.2.7 Cut
Cho một đường cong và một đối tượng, phép toán cut sẽ tách đối tượng này thành hai phần nửa phải và nửa trái theo hướng của đường cong Điểm và multipoint không được áp dụng Line và polygon phải cắt đường cong
Hình 1.19 Phép toán cut
1.2.2.8 Union
Phép toán này tiến hành so sánh vị trí tương đối của hai đối tượng và trả về một đối tượng trên cơ sở hợp hai đối tượng ban đầu
Trang 29Hình 1.20 Phép toánUnion
Mô hình dữ liệu vectơ cho phép nhiều thao tác hơn trên các đối tượng
so với mô hình raster Việc đo diện tích, khoảng cách của các đối tượng được thực hiện bằng các tính toán hình học từ các tọa độ của các đối tượng thay vì việc đếm các tế bào của mô hình raster Rất nhiều thao tác trong mô hình này chính xác hơn Một số thao tác ở mô hình này thực hiện nhanh hơn như tìm kiếm đường đi trong mạng lưới giao thông hay hệ thống thủy lợi Một số thao tác khác có chậm hơn như nạp chồng các lớp, các thao tác với vùng đệm
Phương pháp vectơ hình thành trên cơ sở quan sát đối tượng của thế giới thực Quan sát các đặc trưng theo hướng đối tượng là phương pháp tổ chức thông tin trong các hệ GIS để định hướng các hệ quản trị cơ sở dữ liệu Chúng có ưu việt trong việc lưu trữ số liệu bản đồ bởi vì chúng chỉ lưu các đường biên của các đặc trưng, không cần lưu toàn bộ vùng của chúng Bởi vì các thành phần đồ họa biểu diễn các đặc trưng của bản đồ liên kết trực tiếp với các thuộc tính của cơ sở dữ liệu cho nên người sử dụng có thể dễ dàng tìm kiếm và hiển thị thông tin từ cơ sở dữ liệu
Trang 30Hình 1.21 Biểu diễn bản đồ vectơ
1.3 Các ứng dụng GIS
Vì GIS được thiết kế như một hệ thống chung để quản lý dữ liệu không gian nên có rất nhiều ứng dụng trong các lĩnh vực thường thấy trong thực tế GIS đóng vai trò như là một công cụ hỗ trợ quyết định cho việc lập kế hoạch hoạt động [1]
- Quản lý và lập kế hoạch mạng lưới đường phố: bao gồm các chức năng tìm kiếm địa chỉ, tìm vị trí khi biết trước địa chỉ đường phố; điều khiển đường đi, lập kế hoạch lưu thông xe cộ; phân tích vị trí, chọn địa điểm xây dựng các công trình công cộng; lập kế hoạch phát triển đường giao thông
- Giám sát tài nguyên, thiên nhiên, môi trường: bao gồm các chức năng quản lý sông ngòi, các vùng lụt, vùng đất nông nghiệp, có mưa, đất rừng, sống hoang dã; phân tích tác động môi trường; vị trí của các công trình công cộng, …
- Quản lý đất đai: bao gồm các chức năng lập kế hoạch vùng, miền sử dụng đất; quản lý nước tưới tiêu; kiến trúc mặt bằng sử dụng đất …
Trang 31- Quản lý và lập kế hoạch các dịch vụ công cộng: bao gồm các chức năng tìm địa điểm cho các công trình ngầm: ống dẫn, đường điện,…; cân đối tải điện; lập kế hoạch bảo dưỡng các công trình công cộng…
- Phân tích tổng điều tra dân số, lập bản đồ các dịch vụ y tế, bưu điện
và nhiều ứng dụng khác
Trang 32CHƯƠNG 2 – MỘT SỐ THUẬT TOÁN TÌM ĐƯỜNG ĐI TỐI
ƯU ỨNG DỤNG TRONG GIS
2.1 Một số thuật toán cơ sở: Disktra, Floy, A*
2.1.1 Phát biểu bài toán
Các thuật toán đồ thị nổi tiếng xác định đường đi “ngắn nhất” giữa hai điểm A và B trên mạng lưới đường phố mà tiêu chuẩn “ngắn nhất” có thể được dựa trên khoảng cách, thời gian đi hoặc một số ràng buộc khác do người
sử dụng tự đặt ra
Giả sử cho trước đồ thị G trong đó mỗi cung (x, y) gắn với trọng số của cung a(x, y) Trong một số ứng dụng, chiều dài có thể là chi phí hoặc giá trị khác nào đó Chiều dài của đường đi được xác định bằng tổng chiều dài của các cung đơn trong đường đi Với hai đỉnh bất kỳ, s và t trong G, có thể tồn tại nhiều đường đi từ s đến t Bài toán đường đi ngắn nhất bao gồm tìm đường
đi từ s đến t sao cho chiều dài nhỏ nhất có thể
Bài toán này có thể chia làm hai loại sau:
Tìm đường đi ngắn nhất từ một đỉnh nguồn đến các đỉnh còn lại của đồ thị
Tìm đường đi ngắn nhất giữa mọi cặp đỉnh của đồ thị
Với hai loại bài toán này ta có thể phát biểu chung bài toán như sau:
Đầu vào: Cho một đồ thị có hướng có trọng số G = (V, E) (với V: tập
đỉnh, E: tập cạnh), một hàm trọng số w: E [0, )
Đầu ra: Hãy tìm đường đi ngắn nhất giữa hai đỉnh (chẳng hạn (s, t))
trong đồ thị G
Trang 332.1.2 Thuật toán Dijkstra
Thuật toán này do nhà khoa học Hà Lan - ông Edsger Dijkstra đưa ra vào năm 1959 cung cấp nền tảng cơ bản cho thuật toán hữu hiệu nhất để giải quyết bài toán này Thuật toán Dijkstra được thiết kế dựa trên kỹ thuật tham
ăn để giải quyết bài toán tìm đường đi ngắn nhất từ một đỉnh nguồn trong đồ thị có hướng với trọng số không âm Thuật toán Dijkstra hoạt động dựa trên việc gán nhãn cho các đỉnh
2.1.2.1 Phát biểu bài toán
Đầu vào: Cho một đồ thị có hướng G = (V, E) (với V: tập đỉnh, E: tập cạnh),
từ s đến y bằng cách kết nối đường đi ngắn nhất từ s đến x với cung (x, y) cho tất cả các đỉnh x đã được gán nhãn Chọn đường đi ngắn nhất trong k đường
đi này và đặt nó là đường đi ngắn nhất từ s đến y
Vì vậy, nếu đã biết đỉnh thứ k gần đỉnh s nhất thì đỉnh thứ k+1 có thể được xác định như trên Bắt đầu với k=0, quá trình này có thể lặp đi lặp lại cho đến khi tìm ra đường đi ngắn nhất từ s đến t (tức là t đã được gán nhãn)
2.1.2.3 Thuật toán
Thuật toán Dijkstra được thực hiện như sau:
Trang 34Bước 1:
- Ban đầu, tất cả các cung và các đỉnh chưa được gán nhãn
- Với mỗi đỉnh x V, gọi d(x) là nhãn được gán cho mỗi đỉnh x là độ dài đường đi ngắn nhất từ s đến x
- Khởi tạo, đặt d(s) = 0 và d(x) = cho mọi đỉnh x s
- Gọi y là đỉnh cuối cùng được gán nhãn
Gán nhãn đỉnh s và đặt y = s
Bước 2:
- Với mỗi đỉnh chưa được gán nhãn x, tính lại nhãn d(x) như sau:
d(x) = min{d(x), d(y) + a(x, y)} (2.1)
- Nếu d(x) = với mọi đỉnh x chưa gán nhãn thì dừng lại vì không tồn tại đường đi từ s đến đỉnh bất kỳ chưa gán nhãn
- Ngược lại,
+ Gán nhãn cho đỉnh x chưa gán nhãn với giá trị d(x) nhỏ nhất + Gán nhãn cho cung có hướng đến đỉnh x từ đỉnh đã được gán nhãn với giá trị d(x) ở trên
Trang 35Chú ý rằng bất cứ khi nào thuật toán gán nhãn cho đỉnh (ngoại trừ đỉnh s) thì cũng gán nhãn cho cung hướng về đỉnh này Vì vậy, mỗi đỉnh có tối đa một cung đã được gán nhãn hướng vào nó và các cung đã được gán nhãn không có chu trình vì không có cung nào được gán nhãn nếu cả hai điểm đầu cuối có cung đã được gán nhãn vốn gắn liền với nó Do đó, chúng ta có thể kết luận rằng các cung đã được gán nhãn tạo thành một dạng cây có gốc tại s Dạng cây này được gọi là cây đường đi ngắn nhất Đường đi duy nhất từ s đến bất kỳ điểm x nào khác nằm trong cây đường đi ngắn nhất là đường đi ngắn nhất từ s đến x
Nếu đường đi ngắn nhất từ s đến x trong cây đường đi ngắn nhất đi qua đỉnh y thì phần đường đi từ y đến x này là đường đi ngắn nhất từ y đến x Ngược lại thì tồn tại đường đi khác, thậm chí còn ngắn hơn đường đi từ y đến
x, điều này mâu thuẫn với đường đi ngắn nhất từ s đến x đã tìm ra
Vì các cung đã được gán nhãn luôn luôn tạo thành cây nên có thể xem thuật toán này như phát triển một cây có gốc tại đỉnh s Một khi đến được đỉnh t thì có thể kết thúc quá trình phát triển
Mở rộng thuật toán:
Nếu muốn tìm đường đi ngắn nhất từ đỉnh s đến mọi đỉnh khác trong đồ thị thì tiếp tục quá trình phát triển cho đến khi tất cả các đỉnh được nằm trong cây đường đi ngắn nhất Trong trường hợp này, cây trở thành cây mở rộng (nếu cây tồn tại) Khi đó, bước 3 sẽ là:
Bước 3:
- Nếu tất cả các đỉnh đã được gán nhãn thì dừng lại vì đường đi duy nhất của các cung đã được gán nhãn từ s đến x là đường đi ngắn nhất từ s đến x với mọi đỉnh x
Trang 36- Ngược lại, trở về bước 2
2.1.2.4 Ví dụ minh họa
Tìm đường đi ngắn nhất từ nút s đến nút t trong đồ thị G trong hình 2.1
sau bằng thuật toán Dijkstra:
Hình 2.1 Đồ thị minh họa thuật toán Dijkstra
Bước 1: Khởi tạo, d(s) = 0, d(x) = với mọi x s Đặt y = s
Bước 2: Tính lại khoảng cách cho các nút chưa gán nhãn:
d(1) = min{d(1), d(s) + a(s, 1)} = min{, 0 + 4} = 4
d(2) = min{d(2), d(s) + a(s, 2)} = min{, 0 + 7} = 7
d(3) = min{d(3), d(s) + a(s, 3)} = min{, 0 + 3} = 3
Vì khoảng cách nhỏ nhất trong các nút chưa gán nhãn là d(3) = 3 nên gán nhãn cho nút 3 và cung (s, 3) Cây đường đi ngắn nhất hiện tại chứa cung (s, 3) Đặt y = 3
Bước 3: Nút t chưa được gán nhãn nên quay lại bước 2
Bước 2: Tính d(4) = min{d(4), d(3) + a(3, 4)} = min{, 3 + 3} = 6
Trang 37Khoảng cách nhỏ nhất trong các nút chưa gán nhãn là d(1) = 4 nên gán nhãn cho nút 1 và cung (s, 1) Cây đường đi ngắn nhất hiện tại chứa cung (s, 3) và (s, 1) Đặt y = 1
Bước 3: Đỉnh t chưa được gán nhãn nên quay lại bước 2
Bước 2: Tính d(2) = min{d(2), d(1) + a(1, 2)} = min{7, 4 + 3} = 7
d(4) = min{d(4), d(1) + a(1, 4)} = min{6, 4 + 2} = 6 Khoảng cách nhỏ nhất trong các nút chưa gán nhãn là d(4) = 6 nên gán nhãn cho nút 4 và cung (1, 4) hoặc (3, 4) vì cả hai đều bằng d(4)
Chọn tùy ý cung (3, 4) Khi đó, cây đường đi ngắn nhất chứa cung (s, 3), (s, 1) và (3, 4) Đặt y = 4
Bước 3: Đỉnh t chưa được gán nhãn nên quay lại bước 2
Bước 2: Tính d(t) = min{d(t), d(4) + a(4, t)} = min{, 6 + 2} = 8
Khoảng cách nhỏ nhất trong các nút chưa gán nhãn là d(2) = 7 nên gán nhãn cho nút 2 và cung (s, 2) Đường đi ngắn nhất hiện tại chứa cung (s, 3), (s, 1) (3, 4) và (s, 2) Đặt y = 2
Bước 3: Đỉnh t chưa được gán nhãn nên quay lại bước 2
Bước 2: Tính d(t) = min{d(t), d(2) + a(2, t)} = min{8, 7 + 2} = 8
Khi đó, nút t được gán nhãn cuối cùng và cung (4, t) cũng được gán nhãn là d(t) Do vậy, đường đi ngắn nhất cuối cùng chứa các cung (s, 3), (s, 1), (3, 4), (s, 2) và (4, t)
Đường đi ngắn nhất từ s đến t chứa các cung (s, 3), (3, 4) và (4, t) với chiều dài là 3 + 3 + 2 = 8 Đường đi này không chỉ là đường đi ngắn nhất duy nhất từ s đến t vì đường đi (s, 1), (1, 4) và (4, t) cũng có chiều dài bằng 8
Trang 38int pre; /* Predecessor */
int length; /* Length between the nodes */
enum {perm,tent} label; /* Enumeration for permanent and tentative labels */ }state[MAX];
state[ds].length=0; /*Destination length set to 0 */
state[ds].label=perm; /*Destination set to be the permanent node*/
k=ds; /* initial working node */
/* Checking for a better path from the node k ? */
Trang 40Thật vậy, tại bước k ta có giả thiết quy nạp sau:
(i) nhãn của đỉnh x trong S là độ dài của đường đi ngắn nhất từ đỉnh s đến đỉnh này và
(ii) nhãn của đỉnh x không thuộc S là độ dài của đường đi ngắn nhất từ đỉnh s tới đỉnh này và đường đi này chỉ chứa các đỉnh (ngoài chính đỉnh này) thuộc S
Khi k = 0, tức là khi chưa có bước lặp nào được thực hiện, S = {s}, vì thế độ dài của đường đi ngắn nhất từ s đến các đỉnh khác s là và độ dài của đường đi ngắn nhất từ s đến chính nó bằng 0 (ở đây cho phép đường đi không