TÓM TẮT NỘI DUNG KHÓA LUẬN
Ngày nay Hệ thống thông tin địa lý (GIS – Geographic Information System) đã phát triển rất mạnh, nó được ứng dụng vào rất nhiều ngành và lĩnh vực khác nhau như trong quân sự, dự báo thời tiết, bản đồ tìm đường đi, bản đồ địa chất, khoáng sản Cùng với sự bùng nổ của mạng internet toàn cầu và phần cứng máy tính, GIS đã phát triển công nghệ cho phép chia sẻ các thông tin qua mạng, người sử dụng ở khắp mọi nơi trên thế giới đều có thể sử dụng các ứng dụng này thông qua internet. Việc này đòi hỏi phải có một ứng dụng trên nền web là sự kết hợp của GIS và web, để quản lý các thông tin trên bản đồ cho phép xem nội dung các thông tin bản đồ trên web, có thể thêm hoặc xóa sửa các thông tin này. Bên cạnh đó, xu hướng phát triển phần mềm dựa trên công nghệ mã nguồn mở cũng đang được phát triển rất mạnh vì nhiều lợi ích mà nó mang lại. Vì thế, việc nghiên cứu ứng dụng quản lý bản đồ số dựa trên cơ sở mã nguồn mở sẽ mang lại khả năng chia sẻ thông tin địa lý rộng rãi.
Nội dung chính của đề tài là nghiên cứu công nghệ mã nguồn mở MapServer, trên cơ sở đó xây dựng một ứng dụng quản lý bản đồ số WebGIS phục vụ cho mục đích nhất định.
Mục lục
Mở đầu 1
Chương 1 Cơ sở địa lý học 3
1.1 Khái niện chung về bản đồ địa lý 3
1.1.1 Định nghĩa bản đồ 3
1.1.1.1. Bản đồ - mô hình toán học 3
1.1.1.2. Mô hình thực tiễn 4
1.1.1.3. Bản đồ - mô hình qui ước 5
1.1.2 Các tính chất của bản đồ 5
1.1.3 Cơ sở toán học của bản đồ địa lý 6
1.1.3.1. Tỉ lệ bản đồ (map scale) 6
1.1.3.2. Cơ sở trắc địa – thiên văn của bản đồ 6
1.1.3.3. Hệ toạ độ 8
1.2 Các hệ qui chiếu bản đồ (Map Projection) 8
1.2.1 Lưới chiếu bản đồ (lưới kinh vĩ tuyến) 8
1.2.1.1. Phép chiếu bản đồ 8
1.2.1.2. Các phép chiếu hình và lưới chiếu hình 9
1.2.2 Bố cục bản đồ 14
1.3. Các phương pháp biểu thị hiện tượng trên bản đồ 14
1.3.1. Phương pháp đường đẳng trị 14
1.3.2. Phương pháp chấm điểm 15
1.3.3. Phương pháp ký hiệu đường 15
1.3.4. Phương pháp ký hiệu đường chuyển động 15
1.3.5. Phương pháp biểu đồ định vị 16
1.3.6. Phương pháp ký hiệu 16
1.3.7. Phương pháp biểu đồ 16
Chương 2 GIS – Hệ thống thông tin địa lý 17
2.1. Khái niệm hệ thống thông tin địa lý 17
2.1.1 Định nghĩa GIS 17
2.1.2 Các thành phần của GIS 18
2.1.2.1. Thiết bị (Hardware) 18
2.1.2.2. Phần mềm 18
2.1.2.3. Chuyên viên 19
2.1.2.4. Dữ liệu địa lý (Geographic data) 19
2.1.2.5. Chính sách và quản lý 20
2.2 Dữ liệu trong GIS 20
2.2.1 Các dạng dữ liệu GIS 20
2.2.2 Mô hình thông tin không gian 20
2.2.2.1. Hệ thống vector 21
2.2.2.2. Hệ thống raster 25
2.2.2.3. Chuyển đổi cơ sở dữ liệu dạng vector và raster 29
2.2.2.4. So sánh vector và raster 30
2.2.3 Mô hình thông tin thuộc tính 31
2.3. WebGIS – Công nghệ GIS qua mạng 33
2.3.1. Giới thiệu WebGIS 34
2.3.2. Sơ đồ hoạt động của WebGIS 34
2.3.3. Tiềm năng của WebGIS 35
2.3.4. Các kiến trúc triển khai WebGIS 35
2.3.4.1. Server side 35
2.3.4.2. Client side 36
2.3.4.3. Kết hợp cả 2 chiến lược 37
2.3.5. Trao đổi dữ liệu của hệ thống WebGIS 38
2.3.5.1. Web Map Service / Server 38
2.3.5.2. Web Feature Service / Server 39
Chương 3 MapServer – WebGIS Application 40
3.1. Giới thiệu Mapserver 40
3.2. Các thành phần của Mapserver 41
3.2.1 File khởi tạo 41
3.2.2 Map file 41
3.2.3 Template file 42
3.2.4 Dữ liệu GIS 42
3.3. Sơ đồ hoạt động của Mapserver 42
3.4. Cài đặt Mapserver 43
3.5. Tìm hiểu Mapfile 44
3.5.1. Map Object 44
3.5.2. Layer Object 46
3.5.3. Query Map Object 48
3.5.4. Projection Object 49
3.6. Kết nối các loại dữ liệu 51
3.6.1. Dữ liệu ESRI Shapefiles (SHP) 51
3.6.2. Kết nối dữ liệu Raster 53
3.6.3. Kết nối dùng thư viện OGR 56
3.6.4. Kết nối dữ liệu dùng WMS 60
3.6.5. Kết nối dữ liệu dùng WFS (Web Feature Server) 62
Chương 4: Xây dựng hệ thống quản lý bản đồ số dựa trên công nghệ
MapServer 64
4.1 Bài toán xây dựng hệ thống quản lý bản đồ số 64
4.2 Dữ liệu bản đồ 64
4.2.1 Shapefile 64
4.2.2 Xây dựng cơ sở dữ liệu 65
4.3 Xây dựng chương trình 66
4.3.1 Tạo Mapfile 66
4.3.2. Xây dựng các chức năng 67
4.3.2.1. Công cụ phóng to, thu nhỏ, pan 67
4.3.2.2. Công cụ hiển thị, tắt các lớp 67
4.3.2.3. Công cụ hiển thị thông tin của đối tượng 68
4.3.2.4. Công cụ tìm kiếm 68
4.3.3. Xây dựng các hàm xử lý 68
4.4. Cài đặt chương trình và thử nghiệm 71
4.4.1. Cài đặt 71
4.4.2. Một số giao diện chương trình 71
4.4.3. Thử nghiệm chương trình 74
Kết luận 75
Mở đầu
Trong lịch sử, con người đã biết sử dụng bản đồ từ rất lâu, bản đồ ban đầu chỉ là hình vẽ mô tả những thực thể trên mặt đất ở dạng đơn giản bằng các điểm, đường. Nó thường là các bản đồ quân sự và bản đồ thám hiểm. Ngày nay bản đồ giấy không chỉ là bản đồ quân sự hay thám hiểm, nó đã mang trên mình được rất nhiều thông tin, và phân ra làm nhiều loại bản đồ khác nhau. Nó sử dụng các đường nét, màu sắc, ký hiệu, chữ và số để thể hiện các thông tin địa lý. Nó có thể mô tả vị trí, hình dạng đặc tính có thể nhận thấy như phong cảnh: sông, suối, đường xá, làng mạc, rừng cây Bản đồ giúp con người có cái hình dung tổng thể và trừu tượng hơn, chúng ta có thể dùng bản đồ để tìm đường đi, tìm điểm du lịch
Tuy nhiên ngày nay thì lượng thông tin càng ngày càng nhiều, và phân hóa thành nhiều lĩnh vực khác nhau. Bản đồ in trên giấy với nhiều nhược điểm như thời gian xây dựng, đo đạc tạo lập và con người dùng cho việc tạo bản đồ là rất nhiều và tốn kém. Lượng thông tin trên bản đồ giấy lại hạn chế vì quá nhiều thông tin sẽ gây khó đọc, và không thể cập nhật theo thời gian. Bản đồ máy tính ra đời, nó là sự mô hình hóa không gian và lưu trữ vào trong máy tính, nó có thể hiển thị trên máy tính và in ra giấy. Thuật ngữ GIS (hệ thống thông tin địa lý) ra đời, GIS hình thành từ các ngành khoa học: địa lý, toán học, bản đồ, và tin học. GIS là một hệ thống nó bao gồm cả phần cứng và phần mềm, phục vụ cho việc vẽ bản đồ, phân tích vật thể, hiện tượng trên trái đất. GIS có thể tạo được bản đồ tĩnh nhiều màu sắc đẹp và hơn nữa là bản đồ động, giúp người dùng có thể chọn lựa và bỏ bất cứ thành phần nào trên bản đồ nhằm phân tích một cách nhanh chóng các yếu tố trên bản đồ. GIS ra đời từ những năm 1960 tới nay, nhưng nó chưa đến được với người dùng, vì các ứng dụng GIS thường vẫn là các ứng dụng GIS chạy trên máy tính đơn, yêu cầu phải có phần mềm riêng biệt cho việc xử lý các thông tin GIS. Cùng với sự bùng nổ của công nghệ thông tin và mạng internet toàn cầu, máy tính đã trở nên phổ biến. Và GIS cũng đã thực sự bùng nổ từ nhu cầu thực tiễn. Tất cả các ngành như quy hoạch, quản lý tài nguyên và môi trường, quản lý đô thị, giao thông, phòng chống và giảm nhẹ thiên tai, thông tin du lịch; tất cả các cấp từ quốc gia, tỉnh, huyện đến xã, thôn đều có nhu cầu ứng dụng GIS cho các hoạt động điều hành, quản lý. Bản đồ sẽ được số hóa và đưa lên trên mạng internet, người dùng trên khắp thế giới chỉ cần có máy tính nối mạng internet và trình duyệt web, là có thể sử dụng bản đồ này một cách dễ dàng mà không phải cài đặt thêm một phần mềm nào phức tạp và tốn kém.
Nội dung chính của đề tài là tìm hiểu công nghệ Mapserver mã nguồn mở, áp dụng xây dựng các ứng dụng GIS mà tiêu biểu là WebGIS trên internet.
Nội dung khóa luận được chia làm 4 chương.
Chương 1: Cơ sở địa lý học, tìm hiểu về bản đồ, cơ sở toán học của bản đồ, các phép chiếu hình bản đồ, các phương pháp biểu thị đối tượng trên bản đồ.
Chương 2: GIS các thành phần của một hệ thống GIS, các dạng dữ liệu GIS, WebGIS công nghệ GIS trên mạng internet.
Chương 3: Tìm hiểu phần mềm mã nguồn mở MapServer, hoạt động của Mapserver, Các thành phần của Mapserver, Kết nối dữ các loại dữ liệu bản đồ trong MapServer.
Chương 4 : Xây dựng hệ thống quản lý bản đồ số dựa trên MapServer
Khóa luận sẽ rất khó hoàn thành nếu không có sự giúp đỡ tận tình, và truyền đạt các kiến thức mới của thầy TS. Trần Minh. Em xin chân thành cảm ơn sự dạy dỗ chỉ bảo của thầy. Qua khóa luận em cũng xin được trân trọng cảm ơn các Thầy cô trong trường đã giảng dạy cho em kiến thức trong suốt bốn năm học, làm nền tảng vững chắc cho em thực hiện khóa luận.
Mặc dù đã cố gắng nỗ lực hết mình, nhưng do thời gian cũng như kiến thức của bản thân còn hạn chế nên không tránh khỏi những thiếu sót, rất mong được sự thông cảm và chỉ bảo tận tình của thầy cô và các bạn. Em xin chân thành cảm ơn!
83 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3190 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Khóa luận Xây dựng hệ thống quản lý bản đồ số dựa trên công nghệ mapserver, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
iới hạn và các thông tin mang tính chất mô tả.
Các thông tin mô tả có các đặc điểm:
Có thể nằm tại một vị trí xác định trên bản đồ
Có thể chạy dọc theo arc (đường)
Có thể có các kích thước, màu sắc, các kiểu chữ khác nhau
Nhiều mức của thông tin mô tả có thể được tạo ra với ứng dụng khác nhau
Có thể tạo thông tin cơ sở dữ liệu lưu trữ thuộc tính
Có thể tạo độc lập với các đối tượng địa lý có trong bản đồ
Không có liên kết với các đối tượng điểm, đường, vùng và dữ liệu thuộc tính của chúng
Bản chất một số thông tin dữ liệu thuộc tính như sau:
Số liệu tham khảo địa lý: mô tả các sự kiện hoặc hiện tượng xảy ra tại một vị trí xác định. Không giống các thông tin thuộc tính khác, chúng không mô tả về bản thân các hình ảnh bản đồ. Thay vào đó chúng mô tả các danh mục hoặc các hoạt động như cho phép xây dựng, báo cáo tai nạn, nghiên cứu y tế, … liên quan đến các vị trí địa lý xác định. Các thông tin tham khảo địa lý đặc trưng được lưu trữ và quản lý trong các file độc lập và hệ thống không thể trực tiếp tổng hợp chúng với các hình ảnh bản đồ trong cơ sở dữ liệu của hệ thống. Tuy nhiên các bản ghi này chứa các yếu tố xác định vị trí của sự kiện hay hiện tượng.
Chỉ số địa lý: được lưu trong hệ thống thông tin địa lý để chọn, liên kết và tra cứu số liệu trên cơ sở vị trí địa lý mà chúng đã được mô tả bằng các chỉ số địa lý xác định. Một chỉ số có thể bao gồm nhiều bộ xác định cho các thực thể địa lý sử dụng từ các cơ quan khác nhau như là lập danh sách các mã địa lý mà chúng xác định mối quan hệ không gian giữa các vị trí hoặc giữa các hình ảnh hay thực thể địa lý. Ví dụ: chỉ số địa lý về đường phố và địa chỉ địa lý liên quan đến phố đó.
Mối quan hệ không gian: của các thực thể tại vị trí địa lý cụ thể rất quan trọng cho các chức năng xử lý của hệ thống thông tin địa lý. Các mối quan hệ không gian có thể là mối quan hệ đơn giản hay lôgic, ví dụ tiếp theo số nhà 101 phải là số nhà 103 nếu là số nhà bên lẻ hoặc nếu là bên chẵn thì cả hai đều phải là các số chẵn kề nhau. Quan hệ Topology cũng là một quan hệ không gian. Các quan hệ không gian có thể được mã hoá như các thông tin thuộc tính hoặc ứng dụng thông qua giá trị toạ độ của các thực thể.
Mối quan hệ giữa dữ liệu không gian và phi không gian: thể hiện phương pháp chung để liên kết hai loại dữ liệu đó thông qua bộ xác định, lưu trữ đồng thời trong các thành phần không gian và phi không gian. Các bộ xác định có thể đơn giản là một số duy nhất liên tục, ngẫu nhiên hoặc các chỉ báo địa lý hay số liệu xác định vị trí lưu trữ chung. Bộ xác định cho một thực thể có thể chứa toạ độ phân bố của nó, số hiệu mảnh bản đồ, mô tả khu vực hoặc con trỏ đến vị trí lưu trữ của số liệu liên quan. Bộ xác định được lưu trữ cùng với các bản ghi toạ độ hoặc mô tả số khác của các hình ảnh không gian và cùng với các bản ghi số liệu thuộc tính liên quan.
Sự liên kết giữa hai loại thông tin cơ bản trong cơ sở dữ liệu GIS thể hiện theo sơ đồ sau:
Hình 20: Mối quan hệ giữa thông tin bản đồ và thông tin thuộc tính
2.3. WebGIS – Công nghệ GIS qua mạng
2.3.1. Giới thiệu WebGIS
WebGIS là hệ thống thông tin địa lý phân tán trên một mạng các máy tính để tích hợp, trao đổi các thông tin địa lý trên World Wilde Web. Trong cách thực hiện nhiệm vụ phân tích GIS, dịch vụ này gần giống như là kiến trúc Client-Server của Web. Xử lý thông tin địa lý được chia ra thành các nhiệm vụ ở phía server và phía client. Điều này cho phép người dùng có thể truy xuất, thao tác và nhận kết quả từ việc khai thác dữ liệu GIS từ trình duyệt web của họ mà không phải trả tiền cho phần mềm GIS. Một client tiêu biểu là trình duyệt web và server-side bao gồm một Web server có cung cấp một chương trình phần mềmWebGIS. Client thường yêu cầu một ảnh bản đồ hay vài xử lý thông tin địa lý qua Web đến server ở xa. Server chuyển đổi yêu cầu thành mã nội bộ và gọi những chức năng về GIS bằng cách chuyển tiếp yêu cầu tới phần mềm WebGIS. Phần mềm này trả về kết quả, sau đó kết quả này được định dạng lại cho việc trình bày bởi trình duyệt hay những hàm từ các plug-in hoặc Java applet. Server sau đó trả về kết quả cho client để hiển thị, hoặc gửi dữ liệu và các công cụ phân tích đến client để dùng ở phía client. Phần lớn sự chú ý gần đây là tập trung vào việc phát triển các chức năng GIS trên Internet. WebGIS có tiềm năng lớn trong việc làm cho thông tin địa lý trở nên hữu dụng và sẵn sàng tới số lượng lớn người dùng trên toàn thế giới. Thách thức lớn của WebGIS là việc tạo ra một hệ thống phần mềm không phụ thuộc vào platform và chạy trên chuẩn giao thức mạng TCP/IP, có nghĩa là khả năng WebGIS được chạy trên bất kì trình duyệt web của bất kì máy tính nào nối mạng Internet. Đối với vấn đề này, các phần mềm GIS phải được thiết kế lại để trở thành ứng dụng WebGIS theo các kỹ thuật mạng Internet.
2.3.2. Sơ đồ hoạt động của WebGIS
Hình 22: Sơ đồ hoạt động của WebGIS
Quá trình hoạt động của WebGIS được minh họa như hình vẽ trên.
Người dùng sử dụng trình duyệt web ở phía client
Client gửi yêu cầu của người sử dụng đến WebServer qua giao thức HTTP
Webserver nhận yêu cầu của người dùng, nếu là yêu cầu về bản đồ thì webserver sẽ chuyển tiếp nó đến ứng dụng server tương ứng ở đây là Mapserver
Mapserver sẽ nhận các yêu cầu cụ thể, gọi các hàm có liên quan để tính toán xử lý. Nếu có yêu cầu về dữ liệu Mapserver sẽ gửi yêu cầu tới cơ sở dữ liệu để lấy ra dữ liệu.
Data server dữ liệu tiến hành truy vấn lấy ra dữ liệu cần thiết và gửi lại cho Mapserver
Trong quá trình truy cập cơ sở dữ liệu, Mapserver thực thi tham chiếu đến tập tin cấu hình bản đồ (Map file). Dữ liệu lấy về được chuyển về WebServer tham chiếu đến tệp tin mẫu (html template) để tạo ra kết quả.
Kết quả sẽ được gửi về Client và hiển thị trên trình duyệt.
2.3.3. Tiềm năng của WebGIS
Khả năng phân phối thông tin địa lý rộng rãi trên toàn cầu
Người dùng internet có thể truy cập đến các ứng dụng GIS mà không phải mua phần mềm
Đối với phần lớn người dùng không có kinh nghiệm về GIS thì việc sử dụng WebGIS sẽ đơn giản hơn việc sử dụng các ứng dụng GIS khác.
2.3.4. Các kiến trúc triển khai WebGIS
Mô hình hoạt động của WebGIS được chia ra làm 2 phần: các hoạt động ở phái client – client side và các hoạt động xử lý ở phái server (server side)
Server side : cho phép người dùng gửi yêu cầu lấy dữ liệu và phân tích trên máy chủ. Máy chủ sẽ thực hiện các yêu cầu và gửi trả dữ liệu hoặc kết quả cho người dùng.
Client side : cho phép người dùng thực hiện vài thao tác phân tích trên dữ liệu tại chính máy người dùng.
Server và client có thể kết hợp giữa client side và server side để phục vụ nhu cầu của người dùng.
2.3.4.1. Server side
Server side tập trung cung cấp dữ liệu GIS và phân tích trên một máy chủ (Server). Máy chủ này có khả năng truy cập dữ liệu và phần mềm để giải quyết yêu cầu của máy khách. Máy khách sẽ chỉ sử dụng rất ít tiến trình, chủ yếu là gửi các yêu cầu và hiển thị kết quả. Trong WebGIS đôi khi thuật ngữ mapserver chỉ ra kiến trúc được dùng là server-side, mà trong đó người dùng gửi yêu cầu cần map để hiển thị, thì sẽ được phục vụ bởi server. Kiến trúc server side dựa trên khả năng trình duyệt web của người dùng có thể gửi các yêu cầu đến các phần mềm GIS trên server thông qua internet. Để có thể giao tiếp với các ứng dụng WebGIS đặt trên server, web server có thể sử dụng các chuẩn giao tiếp phổ biến như CGI, Java…
Ưu điểm:
Nếu máy chủ có khả năng xử lý cao, người dùng sẽ truy cập được các dữ liệu lớn và phức tạp thay vì phải xử lý trên máy khách.
Nếu máy chủ có khả năng xử lý cao được dùng, các chức năng phân tích GIS phức tạp sẽ được xử lý nhanh hơn thay vì xử lý trên máy khách.
Nhược điểm:
Bất cứ các yêu cầu dù lớn hay nhỏ đều phải được gửi về cho máy chủ xử lý và các kết quả cũng được gửi trả lại cho máy khách hiển thị thông qua Internet.
Ảnh hưởng đến băng thông khi truyền tải dữ liệu lớn.
Không tận dụng được ưu thế của máy cục bộ.
Server side thường được sử dụng cho các hệ thống lớn trên toàn cầu.
2.3.4.2. Client side
Client side chuyển đổi các yêu cầu sang được xử lý tại máy khách. Máy khách phải có khả năng đủ mạnh để xử lý các yêu cầu này.Thay vì phải bắt máy chủ xử lý tất cả thì một số chức năng GIS sẽ được tải về máy khách, trú ngụ ở đó và dữ liệu được xử lý tại máy khách.
Có 2 dạng triển khai của kiến trúc client side như sau:
GIS applet được phân phối đến client khi có yêu cầu
Các xử lý GIS sẽ được server cung cấp cho phía client dưới dạng các chương trình thực thi nhỏ hoặc là các applet để có thể chạy được ở client
Người dùng tạo ra một yêu cầu từ trình duyệt, yêu cầu được gửi tới server, server xử lý các yêu cầu
Kết quả trả về cho client bao gồm các dữ liệu và các applet cần thiết để người dùng có thể làm việc trên dữ liệu đó
Applet được viết bằng javascript, java…
GIS applet và các plug-in cố định ở client
Các GIS applet cài đặt cố định ở client
Trình duyệt web cài đặt một số các plug-in cần thiết
Server được gọi khi client cần dữ liệu mới
Người dùng được thao tác trên dữ liệu họ dùng và phân tích chúng
Ưu điểm:
Sử dụng được ưu thế của máy khách.
Người dùng có thể điều khiển được các điều khiển xử lý dữ liệu.
Người dùng có thể làm việc mà không cần phải gửi và nhận các yêu cầu qua Internet.
Nhược điểm:
Việc tải các chức năng từ máy chủ như các Applets có thể bị trì hoãn, kéo dài.
Các dữ liệu lớn và phức tạp sẽ khó được xử lý trên máy khách nếu máy khách không đủ mạnh.
Các thủ tục GIS phức tạp sẽ khó thực hiện trên máy khách nếu máy khách không đủ mạnh.
Người dùng sẽ không được huấn luyện (đào tạo) nếu muốn dùng dữ liệu hoặc các chức năng phân tích.
Client side thường được sử dụng cho các hệ thống nhỏ trong phạm vi cục bộ.
2.3.4.3. Kết hợp cả 2 chiến lược
Nếu dùng thuần Server side hoặc Client side thì sẽ gặp các giới hạn:
Nếu server side đòi hỏi phải chuyển tải thường xuyên, thì các tác vụ của nó sẽ dễ làm giảm đến băng thông và đường truyền Internet.
Client side thì lại có thể chiếm hết tài nguyên của máy khách. Một số chương trình sẽ thực hiện rất chậm do sự không phù hợp giữa các yêu cầu của các tiến trình và khả năng của máy.
Server side và client side có thể kết hợp với nhau để cho ra các kết quả lai phù hợp với khả năng của server và client.
Các tác vụ đòi hỏi sử dụng database hoặc phân tích phức tạp sẽ được gán trên máy chủ.
Các tác vụ nhỏ sẽ được gán ở máy khách.
Trong trường hợp này, cả máy chủ và máy khách cùng chia sẻ thông tin với nhau về sức mạnh và khả năng của chúng.
2.3.5. Trao đổi dữ liệu của hệ thống WebGIS
GIS đã ra đời từ khá lâu và các ứng dụng GIS đã được phát triển trên nhiều lĩnh vực khác nhau, mỗi ứng dụng này, dữ liệu GIS cũng được tạo ra, các dữ liệu này là rất lớn và tốn thời gian và công sức xây dựng. Việc chia sẻ nguồn tài nguyên dữ liệu sẽ làm giảm chi phí xây dựng và quản lý dữ liệu GIS.
Trong mô hình kiến trúc WebGIS đơn thì dữ liệu GIS được dùng cho một nhóm ứng dụng, mà dữ liệu này lại có thể được sử dụng cho các nhóm ứng dụng khác.
Tổ chức OGC đã đưa ra 2 chuẩn trao đổi dữ liệu:
2.3.5.1. Web Map Service / Server
Trong chuẩn trao đổi dữ liệu này, web server sẽ trở thành web map server có service phục vụ cho chia sẻ dữ liệu. Các hoạt động mà client có thể thực hiện thông qua service này gồm : nhận về mô tả các bản đồ, nhận về bản đồ, và các thông tin truy vấn các đặc điểm được thể hiện trên bản đồ. Chuẩn này không áp dụng cho việc nhận dữ liệu chưa xử lý dạng thuộc tính hay không gian mà thường nhận về một ảnh bản đồ dạng đồ họa. Những bản đồ này thường được tạo ra với các định dạng như PNG, GIF, JPEG.
Các chức năng của một web map service:
GetCapabilities: Khả năng hỗ trợ, client nhận về một mô tả thông tin WMS, các tham số được chấp nhận và hỗ trợ, bảng mô tả dưới dạng file XML.
GetMap lấy bản đồ, client nhận về một ảnh bản đồ phù hợp với tham số mà client gửi lên server.
GetFeatureInfo lấy thông tin đặc điểm, client hỏi thông tin về đặc điểm nào đó xuất hiện trên bản đồ.
Client gửi các yêu cầu dưới dạng một URL, các yêu cầu được chỉ ra bởi tham số.
2.3.5.2. Web Feature Service / Server
Server được gọi là Web Feature server có service phục vụ việc chia sẻ dữ liệu. Tuy nhiên thay vì trả về một ảnh bản đồ dạng đồ họa thì Web Feature Server sẽ gửi về thông tin không gian và thông tin thuộc tính có liên quan dưới dạng file GML (Geographic Markup Language) một dạng file XML, client sử dụng file XML này để tạo ra ảnh bản đồ. Chức năng của WFS giống với WMS chỉ khác dữ liệu trao đổi.
GetCapabilities: trả về một tài liệu XML (Extensible Markup Languge) mô tả chức năng của WCS.
DescribeCoverage: trả về một tài liệu XML mô tả các Coverage mà WCS Server có thể cung cấp.
GetCoverage: trả về một Coverage thoả mãn các điều kiện mà Client cung cấp.
Chương 3 MapServer – WebGIS Application
3.1. Giới thiệu Mapserver
Mapserver là môi trường phát triển cho việc xây dựng ứng dụng GIS thông qua internet. Trong mô hình kiến trúc WebGis, Mapserver là ứng dụng GIS được đặt trên webserver. Mapserver là sản phẩm của trường đại học Minnesota (University of Minnesota - UMN) trong dự án kết hợp giữa NASA và bộ tài nguyên Minnesota. Mapserver có thể chạy trên nhiều môi trường, nó được viết bằng C++ có thể chạy trên các version của UNIX/LINUX, WINDOWS và cả trên MacOS. Để giao tiếp với các thành phần trên môi trường web, Mapserver sử dụng chuẩn giao tiếp CGI (Common Gateway Interface). Phiên bản Mapserver hiện tại là MapServer 5.4.
MapServer có các đặc điểm sau:
Hỗ trợ các dịch vụ WebGIS theo chuẩn OGC, bao gồm: WMS Server, WMS Client, WFS Server, WFS Client và WCS Server.
Xuất bản đồ với nhiều ưu điểm:
Vẽ đối tượng theo tỷ lệ.
Hiển thị nhãn theo đối tượng
Tùy biến giao diện, mẫu trước khi xuất.
Sử dụng font: TrueFont
Tạo bản đồ chuyên đề dựa trên biểu thức truy vấn trên các lớp cơ sở.
Hệ thống Mapserver bao gồm cả Mapscript, hỗ trợ các ngôn ngữ kịch bản phổ biến và môi trường phát triển như C#, PHP, Perl, Python, Java, và Ruby. Mapscript cung cấp môi trường thuận lợi cho việc phát triển các ứng dụng tích hợp các dữ liệu phân tán.Ta có thể lấy dữ liệu không gian qua các ngôn ngữ kịch bản và dựa vào Mapscript ta có thể tạo ra được ảnh bản đồ.
Hỗ trợ các hệ điều hành: Linux, Windows, MAC OS X, Solaris, …
Hỗ trợ định dạng dữ liệu raster và vector:
TIFF/GeoTIFF, GIF, PNG, ERDAS, JPEG và EPPL7.
ESRI shapefile, PostGIS, ESRI ArcSDE, Oracle Spatial, MySQL, …
Hỗ trợ lưới chiếu: hỗ trợ hơn 1000 lưới chiếu trong thư viện Proj.4
Mapserver đóng vai trò như là một map engine được cung cấp nội dung để tạo ảnh bản đồ khi cần đến.
3.2. Các thành phần của Mapserver
Ứng dụng Mapserver sử dụng chuẩn giao tiếp CGI để giao tiếp với các thành phần và với HTTP Server. Do có mã nguồn mở nên cũng có những ứng dụng được biên dịch để có thể dùng Mapscript truy xuất trực tiếp các hàm API của Mapserver.
Ứng dụng Mapserver CGI sử dụng các tài nguyên sau:
Một webserver server (Apache hoặc IIS)
Phần mềm Mapserver (WebGIS application)
File khởi tạo dùng để cấu hình và tùy biến các thông số của ứng dụng Mapserver (không bắt buộc)
Map file là file cấu hình cho ứng dụng Mapserver.
Template file là giao diện giữa người dùng và Mapserver
Dữ liệu GIS
3.2.1. File khởi tạo
Mỗi khi http server nhận được yêu cầu từ client thông qua chuỗi URL thì http server sẽ gọi Mapserver chạy và thực thi. Bằng cách sử dụng file khởi tạo (file html) ta định nghĩa tham số cơ bản càn thiết để Mapserver có thể thực thi được.
Ví dụ:
[map],[map_web_imagepath],[img]…
3.2.2. Map file
Là một file text cấu hình cho ứng dụng Mapserver. Nó định nghĩa vùng bản đồ, thông báo cho Mapserver biết dữ liệu ở đâu và output là dạng gì và ở đâu. Nó định nghĩa các layer, bao gồm nguồn dữ liệu, khung chiếu và các biểu tượng. Nó có đuôi mở rộng là .map.
3.2.3. Template file
Nó điều khiển các hình bản đồ và các ghi chú trả về bởi Mapserver sẽ xuất hiện trên trang html. Đầu tiên Mapserver đọc template file này và nếu gặp các từ khóa hoặc các mẫu thì nó sẽ thay thế các giá trị tương ứng lấy từ chuỗi kết quả trả về, file này sẽ được gửi trở vè trình duyệt và hiển thị trên trình duyệt.
3.2.4. Dữ liệu GIS
Dữ liệu vector, Mapserver sử dụng ESRI shapefile làm dữ liệu mặc định.Ngoài ra các định dạng dữ liệu vector GIS phổ biến khác hiện nay, Mapserver đều có thể hiểu và tương tác được, như PostGIS, ESRI, ArcSDE, MapInfo… và nhiều định dạng khác thông qua thư viện OGR. Dữ liệu raster, MapServer hỗ trợ TIFF/GeoTIFF, EPPL7 và các định dạng khác thông qua thư viện GDAL.
3.3. Sơ đồ hoạt động của Mapserver
Hình 21: Sơ đồ hoạt động của Mapserver
MapServer có thể hoạt động ở hai chế độ CGI (Common Gateway Interface) và API (Application Program Interface). Ở chế độ CGI, các chức năng của MapServer trong môi trường WebServer là CGI MapScript. Ở chế độ API, có thể truy cập MapServer bằng PHP, Perl hoặc Python. MapServer hoạt động dựa vào các mẫu. Trước khi thực thi yêu cầu của web, MapServer đọc tệp tin cấu hình (mapfile) mô tả các lớp và các thành phần khác của bản đồ.Mapserver sẽ vẽ ra ảnh bản đồ. Tiếp theo, nó sẽ đọc một hoặc nhiều tệp tin mẫu HTML mà nó nhận diện trong tệp tin cấu hình. Mỗi tệp tin mẫu sẽ chứa đựng các tags HTML và các chuỗi MapServer đặc biệt. Các chuỗi này sẽ được sử dụng, ví dụ chuỗi chỉ đường dẫn để lưu ảnh bản đồ do Mapserver tạo ra, hoặc chuỗi dùng để nhận diện các lớp nào sẽ được sắp xếp, …MapServer thay thế các giá trị hiện tại vào các các chuỗi này và gửi luồng dữ liệu về cho WebServer để WebServer tiếp tục chuyển về cho trình duyệt. Khi có một yêu cầu mới phát sinh, MapServer sẽ nhận yêu cầu từ WebServer với các giá trị mới và chu trình cứ thế tiếp diễn.
3.4. Cài đặt Mapserver
UMN MapServer là mã nguồn mở và nó là một phương tiện render bản đồ tự do cho web. Do nó là mã nguồn mở nên nó có thể được biên dịch trên nhiều môi trường và nhiều hệ điều hành khác nhau. Chúng ta sẽ tìm hiểu việc biên dịch và cài đặt MapServer trên môi trường ubuntu Linux.
Các thư viện yêu cầu :
GD: là thư viện đồ họa. MapServer sử dụng GD để render ảnh, là thư viện bắt buộc phải cài đặt. Các thư viện GD sử dụng là zlib, libpng, Freetype, libJPEG.
Zlib: Thư viện nén dữ liệu sử dụng bởi GD.
Libpng: thư viện render ảnh PNG.
Libjpeg : thư viện render ảnh JPEG
Freetype: Được sử dụng bởi GD vho việc render ảnh.
Proj.4 thư viện lưới chiếu bản đồ. Nó có thể hiện thị trên web bởi MapServer.
Webserver apache
Mysql server
PHP5
File cài đặt mapserver cgi-mapserver.deb.
Các thư viện và file cài đặt MapServer ở dạng binary packages có thể tải về từ trang
Để kiểm tra cài đặt Mapserver khởi động lại Webserver bằng lệnh :
$ /etc/init.d/apache2 restart
Kiểm tra Mapserver đã cài đặt đúng chưa gõ lệnh:
$ /usr/lib/cgi-bin/mapserv
Nếu hiện ra :
This script can only be used to decode form results and should be initiated as a CGI process via a httpd server.
Thì đã cài đặt MapServer thành công.
3.5. Tìm hiểu Mapfile
Mapfile là trái tim của Mapserver. Nó định nghĩa các quan hệ giữa các đối tượng, điểm, chỉ ra dữ liệu ở đâu và định nghĩa mọi thứ được vẽ như thế nào. Trong mapfile có nhiều đối tượng như Map, PROJECTION, LAYER, CLASS.. mỗi đối tượng định nghĩa cách thức tạo nên ảnh bản đồ hoặc đối tượng để Mapserver truy xuất dữ liệu cho câu truy vấn. Mapfile có cấu trúc phân cấp, MAP Object là root, các object nằm dưới nó. Chú thích trong mapfile là dấu #.
3.5.1. Map Object
Trong mapfile thì MAP là đối tượng gốc, chứa trong nó các đối tượng khác.
EXTENT [minx][miny][maxx][maxy] : Không gian phạm vi của ảnh bản đồ được tạo ra, nó được được định nghĩa bởi kết hợp góc dưới bên trái [minx],[miny] và góc trên bên phải [maxx][maxy]. Lỗi trong định nghĩa extent có thể tạo ra kết quả là trang trắng, bản đồ bị méo hoặc lỗi. EXTENT phải được đinh nghĩa, và nó phải ở trong cùng một hệ thống kết hợp như là các đối tượng PROJECTION.
FONTSET [filename] : Liệt kê danh sách các font được dùng. Mỗi dòng chứa 2 thành phần: một bí danh và một đường dẫn đến font được phân cách bằng khoảng trắng. Alias là tên dùng để chỉ font này trong mapfile. Mapserver sử dụng true font.
IMAGECOLOR [r][g][b]: Màu được dùng làm background cho ảnh bản đồ. Nếu thuộc tính transparency được chọn , thì màu sắc này sẽ đánh dấu như là màu trong suốt trong bảng màu. Khi đó thành phần nào của ảnh bản đồ sử dụng màu này để vẽ cũng trong suốt. Nên khi tạo ảnh bản đồ nếu chọn ảnh bản đồ trong suốt thì nên chọn màu imagecolor là màu không được dùng để vẽ các thành phần khác trên bản đồ.
IMAGETYPE [gif|png|jpeg|swf|gtiff] : Định dạng ảnh bản đồ được tạo ra
LAYER : Bắt đầu đối tượng LAYER
LEGEND : Bắt đầu cho đối tượng LEGEND
NAME [name] : Xác định tiền tố cho tên ảnh bản đồ, ảnh các thước tỷ lệ, ghi chú được tạo ra từ mapfile
Ví dụ :
NAME HN_ Các ảnh bản đồ tạo ra sẽ có tiền tố là HN_
PROJECTION : Bắt đầu cho đối tượng PROJECTION
QUERYMAP : Bắt đầu cho đối tượng QUERY MAP
REFERENCE : Bắt đầu cho đối tượng QUERYMAP
RESOLUTION : Định đồ phân giải cho ảnh kết quả, độ phân giải sẽ ảnh hưởng đến việc tính toán tỷ lệ, mặc định là 72.
SCALE : Tỉ lệ của bản đồ
SHAPEPATH [filename] : đường dẫn tới dữ liệu dạng vector
SIZE [x][y] : kích thước theo đơn vị pixel của ảnh bản đồ
STATUS [on|off] : trạng thái có được kích hoạt không của ảnh bản đồ. Nếu không được kích hoạt thì Mapserver sẽ không tạo ra ảnh bản đồ khi sử dụng mapfile này
SYMBOLSET [filename] : file chứa tập hợp các biểu tượng được dùng trên bản đồ. Trên bản đồ, các symbol được dùng để đánh dấu các đối tượng nhằm làm nổi bật và tăng thêm ngữ nghĩa.
SYMBOL : Bắt đầu đối tượng symbol
TEMPLATEPATTERN [regular expression] và DATAPATTERN [regular expression] : Trong request được gửi lên từ trình duyệt gồm có 2 dạng tham số là DATA và TEMPLATE. Các tham số đề là các từ khóa được Mapserver quy định trước và thường khó nhớ. Bằng cách sử dụng TEMPLATEPATTERN và DATAPATTERN ta có thể định nghĩa một tên khác cho các từ khóa này.
TRANSPARENT [on|off] : Thiết lập trong suốt cho ảnh bản đồ, mặc định là off.
UNITS [feet|inches|kilometers|meters|miles|dd] : Đơn vị của hệ tọa độ ảnh bản đồ.
WEB : Bắt đầu đối tượng web
3.5.2. Layer Object
Là đối tượng được sử dụng nhiều nhất trong mapfile, mỗi đối tượng layer mô tả một layer được dùng để tạo ra ảnh bản đồ. Các layer được vẽ theo thứ tự xuất hiện của chúng trong mapfile, layer đầu tiên ở dưới cùng, layer cuối cùng ở trên. Phiên bản MapServer nhỏ hơn 5, số layer tối đa là 200 trong một mapfile, còn trong phiên bản 5 trở lên thì không giới hạn số lượng layer. Có thể thay đổi số lượng layer bằng cách sửa file map.h thay đổi giá trị MS_MAXLAERS. Đường dẫn tới mapfile phải là đường dẫn tuyệt đối. Các layer được vẽ ra còn được tính thêm thứ tự ưu tiên. Raster độ ưu tiên thấp nhất sẽ được vẽ trước và đặt ở phía dưới, tiếp đến là vùng, đường, điểm và nhãn (label). Thứ tự này đảm bảo các layer khi xếp chồng thì không che khuất nhau.
CLASS : Bắt đầu đối tượng CLASS. Trong các định dạng vector, mỗi layer được vẽ, lấy dữ liệu từ một bảng dữ liệu. Mỗi bảng dữ liệu có nhiều trương thuộc tính. Mỗi thuộc tính xem như một CLASS.
CLASSITEM [attribute] : ứng với tên của trường thuộc tính trong bảng dữ liệu, được định nghĩa trong mapfile.
CONNECTIONTYPE [local|postgis|wms] : Kiểu kết nối OGR được dùng cho các loại dữ liệu khác ngoài dữ liệu mặc định là shapefile của ESRI. OGR là một thư viện được viết bằng C++ nó hỗ trợ các kết nối của nhiều loại dữ liệu như MapInfo, ArcInfo…
CONNECTION [string] : Câu kết nối cơ sở dữ liệu để nhận về dữ liệu nằm trên các server hoặc các DBMS
DATA [filename] : Tên file đầy đủ của dữ liệu để xử lý. Đối với dữ liệu là shapefile không cần chỉ rõ phần mở rộng. Đường dẫn có thể là tuyệt đối hoặc tương đối so với giá trị được chỉ ra bởi tham số SHAPEPATH của đối tượng MAP.
DUMP [true|false] : cho phép Mapserver trả dữ liệu dưới dạng GML. Đặc biệt có ích khi sử dụng với phương thức WMS GetFeatureInfo, mặc định là false.
FILTER [string] : Tham số này cho phép định nghĩa điều kiện lọc dữ liệu. Đối với dữ liệu shapefiles hoặc các dữ liệu được kết nối thông qua OGR, điều kiện lọc dữ liệu đơn giản là một chuỗi điều kiện. Còn đối với các loại dữ liệu được trích xuất từ cơ sở dữ liệu thông qua chuỗi kết nối thì điều kiện lọc là mệnh đề SQL WHERE.
FILTERITEM [attribute] : Trường dữ liệu dùng cho câu chuỗi lọc FILTER, chỉ dùng cho OGR và shapefiles.
MAXSCALE [double] : Tỉ lệ lớn nhất mà layer được vẽ
METADATA : được dùng với OGC WMS để định nghĩa như tiêu đề của layer, tạo ra các template. Những dữ liệu được đặt trong Metadata sẽ được truy xuất thông qua các tag của tập tin template.
Ví dụ:
METADATA
Title “Lớp địa hình”
Author “cục bản đồ việt nam”
Create date “8/5/2009”
END
MINSCALE [double] : Tỉ lệ nhỏ nhất mà layer được vẽ
NAME [string] : Tên layer, giới hạn trong khoảng 20 ký tự. Tên layer được dùng để liên kết giữa giao diện web và mapfile. Ảnh bản đồ là kết quả của nhiều layer chồng lấp lên nhau. Từ giao diện web có thể cho phép người dùng chọn lựa layer hiển thị. Khi tên layer được chọn và tên layer được định nghĩa trong mapfile phải giống nhau để có thể hiển thị. Tên layer là duy nhất, tên layer khác cùng tên thì phải khác tỷ lệ. Sử dụng GROUP để nhóm các layer lại với nhau.
PROJECTION : Bắt đầu đối tượng PROJECTION
STATUS [on|off|default] : Trạng thái của layer. Giá trị là default thì layer luôn được vẽ ra. Trạng thái là on thì layer sẽ được vẽ ra nhưng có thể chuyển về trạng thái off, trạng thái off thì layer không được vẽ ra nhưng có thể chuyển sang trạng thái on.
TOLERANCEUNIT [double] & TOLERANCE [double] : Trong trường hợp cần lấy thông tin đối tượng trên bản đồ, ta cần chỉ ra đối tượng được chọn bằng click chuột vào vùng cần chọn. TOLERANCE được dùng để quy định phạm vi đối tượng với tâm là vị trí click chuột. TOLERANCEUNIT chỉ ra đơn vị của TOLERANCE, mặc định nó là 3 pixel
Ví dụ:
TOLERANCE 3
TOLERANCE 6
Khi người dùng click chuột lên bản đồ. Mapserver xác định được vị trí click chuột là X,Y, sau đó tìm kiếm trong cơ sở dữ liệu xác định có đối tượng nào có vị trí trong hình tròn tâm X,Y bán kính 6*3.
TRANSPARENCY [interger|alpha] : Mức độ trong suốt của layer. Giá trị là số nguyên từ 0-100 hoặc là giá trị bằng alpha. Giá trị nguyên là giá trị độ mờ, giá trị là 0 là trong suốt hoàn toàn. Giá trị bằng alpha được dùng khi ảnh bản đồ xuất ra dưới dạng RGB.
TRANSFORM [true|false] : Báo cho Mapserver chuyển từ hệ tọa độ địa lý sang hệ tọa độ đồ họa (ảnh đồ họa). Mặc định là true. Đối với hệ tọa độ đồ họa, gốc tọa độ luôn là điểm góc trái trên của ảnh. Nó thường được dùng để đặt các logo và các mục cố định ở trên bản đồ.
TYPE [point|polygon|circle|raster|query] : Quy định các dữ liệu được vẽ ra. Không cần phải cùng loại dữ liệu. Ví dụ: các đối tượng polygon có thể được vẽ như là một tập các điểm, ngược lại một điểm không thể vẽ như là tập các polygon. Dữ liệu shapefile không chỉ chứa đơn thuần một loại đối tượng, mà có thể có nhiều đối tượng. Nếu có đối tượng là Point và Polygon, chọn TYPE là polygon thì kiểu Point sẽ không vẽ được. Query chỉ ra layer được truy vấn thông tin, không cần phải vẽ lại. Nếu giá trị là circle thì 2 điểm sẽ xác định hình chữ nhật chứa đường tròn.
3.5.3. Query Map Object
Định nghĩa cơ chế thực hiện câu truy vấn từ bản đồ
COLOR [r][g][b] : Khi xác định được đối tượng trên bản đồ, được chọn để truy vấn, Mapserver sẽ vẽ lại đối tượng này với màu là Color. Mặc định là Yellow.
SIZE [x][y] : Phạm vi thực hiện truy vấn, ngoài phạm vi này các đối tượng sẽ không được chọn để truy vấn dữ liệu. Mặc định là kích thước cả bản đồ, được quy định trong đối tượng Map.
STATUS [on][off] : Giá trị off thì sau khi thực hiện truy vấn, ảnh bản đồ sẽ không được vẽ lại.
STYLE [normal|hilite|selected] : Quy định cách thức vẽ lại các đối tượng được chọn cho truy vấn, các đối tượng khác vẫn được vẽ lại như bình thường.
Normal : vẽ lại các đối tượng này bình thường theo các giá trị thiết lập cho layer
Hilite : vẽ lại các đối tượng được chọn theo màu COLOR
Selected : chỉ vẽ lại các đối tượng được chọn, các đối tượng khác không vẽ lại.
3.5.4. Projection Object
Thiết lập phép chiếu cần xác định một phép chiếu chung cho đối tượng Map, và mỗi layer cũng cần chỉ ra một phép chiếu để vẽ các đối tượng trong layer đó. Đối tượng phép chiếu bao gồm tập các từ khóa của PROJ.4 (thư viện các phép chiếu).
Ví dụ: Giả sử bản đồ có trung tâm là 90 kinh độ tây, phép chiếu sẽ là:
PROJECTION
"proj=lcc"
"lon_0=90w"
END
Trong mỗi layer, phải định nghĩa một đối tượng PROJECTION miêu tả phép chiếu của dữ liệu nguồn, trong shapefile chứa dữ liệu không gian không được chiếu thì trong mỗi layer đối tượng PROJECTION sẽ là:
PROJECTION
"proj=latlong" END
Ví dụ phép chiếu UTM khu vực 15
PROJECTION
“proj=utm”
“ellps=GRS80”
“zone=15”
“north”
“no_defs”
END
Ví dụ một mapfile:
Hello.map
NAME "hello"
SIZE 400 300
IMAGECOLOR 249 245 186
IMAGETYPE png
EXTENT -1.00 -1.00 1.00 1.00
WEB
TEMPLATE "/var/www/hello.html"
IMAGEPATH "/var/www/image/"
IMAGEURL "/image/"
END
LAYER
STATUS default
TYPE point
FEATURE
POINTS 0.0 0.0 END
TEXT "hello"
END
CLASS
STYLE
COLOR 255 0 0
END
LABEL
TYPE bitmap
END
END
END
END
3.6. Kết nối các loại dữ liệu
3.6.1. Dữ liệu ESRI Shapefiles (SHP)
ESRI là công ty đã đưa ra định dạng dữ liệu này, Arcview là sản phẩm đầu tiên sử dụng shapefiles.
Shapefiles được tạo bởi 3 file:
Ví dụ:
Countries_area.dbf
Countries_area.shp
Countries_area.shx
Truy cập dữ liệu và phương thức kết nối
Truy cập shapefiles được gắn trực tiếp vào trong Mapserver. Nó có thể dùng được thông qua thư viện OGR, nhưng ở đây chúng ta sẽ nói về việc truy cập trực tiếp không thông qua thư viện OGR. Đường dẫn tới shapefile là được yêu cầu, không cần chỉ ra phần mở rộng của file. Mỗi một shapefile thì trong mapfile định nghĩa một layer, tên của layer trùng với tên shapefile.
Ví dụ:
NAME "First"
SIZE 400 300
IMAGECOLOR 255 255 255
IMAGETYPE JPEG
SHAPEPATH "/home/mapdata"
EXTENT -125.00 20.00 -65.00 50.00
WEB
TEMPLATE '/var/www/first.html'
IMAGEPATH '/var/www/image/'
IMAGEURL '/image/'
END
LAYER
NAME "US States"
STATUS default
TYPE line
DATA "statesp020"
LABELITEM "STATE"
CLASS
STYLE
COLOR 0 0 0
END
LABEL
COLOR 0 0 0
SIZE SMALL
END
END
END
END
3.6.2. Kết nối dữ liệu Raster
Mapserver hỗ trợ rất nhiều các định dạng file raster trong bản đồ. Để sử dụng ảnh raster như một layer, cần phải khai báo một đối tượng layer trong Mapfile và xác định các tham số kèm theo. Một layer raster đơn giản khai báo như sau.
LAYER
NAME "JacksonvilleNC_CIB"
DATA "Jacksonville.tif"
TYPE RASTER
STATUS ON
END
Trong đó DATA chỉ ra đường dẫn tới file ảnh raster, có thể là đường dẫn tuyệt đối hoặc tương đối theo SHAPEPATH khai báo trong đối tượng MAP. Ngoài các tham số trên một đối tượng layer dạng raster còn có thể thêm các thông tin PROJECTION, METADATA, MINSCALE, MAXSCALE và không có CONNECTION, CONNECTIONTYPE, FEATURE, LABEL…
Chọn lọc dữ liệu Raster
Dữ liệu raster dưới dạng các pixel, do đó có thể chọn lọc dữ liệu cần dựa vào giá trị của các pixel, hoặc dựa theo bảng màu giá trị của pixel theo bộ ba giá trị r, g, b. Ví dụ:
LAYER
NAME "JacksonvilleNC_CIB"
DATA "Jacksonville.tif"
TYPE RASTER
STATUS ON
CLASSITEM "[pixel]"
# class dử dụng điều kiện đơn giản “0” tương đương ([pixel] = 0)
CLASS
EXPRESSION "0"
STYLE
COLOR 0 0 0
END
END
# class sử dụng điều kiện lọc theo giá trị pixel
CLASS
EXPRESSION ([pixel] >= 64 AND [pixel] < 128)
STYLE
COLOR 255 0 0
END
END
# class sử dụng ba màu r g b từ bảng màu
CLASS
NAME "near white"
EXPRESSION ([red] > 200 AND [green] > 200 AND [blue] > 200)
STYLE
COLOR 0 255 0
END
END
# Class lọc các pixel có giá trị tận cùng bằng 1
CLASS
EXPRESSION /*1/
STYLE
COLOR 0 0 255 END END END
Việc chọn lọc được tiến hành như sau: đọc và phân loại trước các giá trị pixel vào một bảng gọi là bảng tìm kiếm, khi đó các pixel có giá trị lân cận được xếp gần nhau. Cuối cùng khi vẽ sẽ đọc được từng nhóm pixel từ bảng tìm kiếm dựa vào các chọn lọc dữ liệu trong định nghĩa các class của đối tượng layer. Nhanh hơn so với việc đọc và so sánh giá trị từng pixel, một ảnh raster thường lên tới hàng triệu pixel. Việc lọc dữ liệu pixel chỉ có thể tiến hành tốt trên các loại raster dạng 8 bit (giá trị pixel thuộc 0 - 255) còn đối với các ảnh raster dạng khác như 16 bit (0 - 65535) cần định nghĩa thêm giá trị cho tham số PROCESSING để quy định phạm vi chọn lọc các pixel
Ví dụ:
LAYER
NAME grid1
TYPE raster
STATUS default
DATA data/float.tif
PROCESSING "SCALE=-10,10"
PROCESSING "SCALE_BUCKETS=4"
CLASS
NAME "red"
EXPRESSION ([pixel] < -3)
STYLE
COLOR 255 0 0
END
END
CLASS
NAME "green"
EXPRESSION ([pixel] >= -3 and [pixel] < 3)
STYLE
COLOR 0 255 0
END
END
CLASS
NAME "blue"
EXPRESSION ([pixel] >= 3)
STYLE
COLOR 0 0 255
END
END
END
Trong đó PROCESSING “SCALE=-10,10” chỉ ra khoảng giá trị của những pixel được xét (-10,10) và PROCESSING “SCALE_BUCKETS=4” là sẽ lấy 4 pixel có giá trị thỏa mãn bất đẳng thức sau:
([pixel] < -3)
([pixel] >= -3 and [pixel] < 3)
([pixel] >= 3)
3.6.3. Kết nối dùng thư viện OGR
OGR (OpenGIS Simple Features Reference Implementation) là một thư viện C++ mã nguồn mở cung cấp khả năng đọc ghi các loại dữ liệu vector khác nhau, trong đó bao gồm cả ESRI shapefile và MapInfo mid/mif và định dạng TAB. OGR hỗ trợ rất nhiều định dạng: ArcInfo Coverages, ESRI shapefiles, MapInfo, OGDI vectors, Oracle Spatial, PostgreSQL…
Tích hợp OGR vào Mapserver
OGR được tích hợp thẳng vào source code của Mapserver, do đó để thực hiện kết nối một layer sử dụng OGR chỉ cần thay đổi và khai báo layer trong mapfile. Tham số DATA của đối tượng LAYER được thay bằng 3 tham số CONNECTONTYPE, CONNECTON và DATA.
Khai báo layer kết nối OGR trong mapfile
LAYER
…
CONNECTIONTYPE OGR
CONNECTION “datascource_name”
DATA “layer_definition”
…
END
Trong đó:
- là đường dẫn tới nguồn dữ liệu cần đọc. Nếu nguồn dữ liệu dạng tập hợp các file cung tên thì datasource_name là đường dẫn của một file trong tập hợp đó. Đường dẫn này có thể là tương đối hoặc tuyệt đối theo SHAPEPATH hoặc theo mapfile. Đối với các nguồn dữ liệu được lấy từ một CSDL thì datasource_name bao gồm cả user và password, tên bảng dữ liệu
Ví dụ: Kết nối đến Oracle Spatial : “OCI: user/password@mypass”
- layer_definition: tên, số lượng hoặc các định nghĩa SQL của layer dùng cho việc đọc nguồn dữ liệu
- Layer Name: tên layer
- Layer Number: số thứ tự layer dùng để chọn một layer
- Omitted: nếu không có khóa DATA, chọn layer 0
- SQL SELECT: câu SQL SELECT được dùng, trong trường hợp dữ liệu được lưu trữ trong một cơ sở dữ liệu gồm nhiều bảng. Khi đó từ câu SQL này dữ liệu được chọn ra để phát sinh một layer tạm thời sử dụng.
Ví dụ:
MapInfo TAB file
LAYER
NAME "Builtup_Areas_tab"
TYPE POLYGON
CONNECTIONTYPE OGR
CONNECTION "data/tab/092b06_builtup_a.tab"
STATUS ON
CLASS
...
END
...
END
Microstation DGN file using
LAYER
NAME "dgn"
TYPE LINE
CONNECTIONTYPE OGR
CONNECTION "dgn/santabarbara02.dgn"
DATA "0"
STATUS ON
STYLEITEM "AUTO"
CLASS
END
END # Layer
TIGER/Line file using
LAYER
NAME "Roads_tig"
TYPE line
CONNECTIONTYPE OGR
CONNECTION "full/path/to/tiger/TGR25001"
DATA "CompleteChain"
STATUS ON
CLASS
...
END
END
Directory of Shapefiles using SQL JOIN
LAYER
NAME "Parks_cov"
TYPE POLYGON
CONNECTIONTYPE OGR
CONNECTION "data/shppoly"
DATA "SELECT eas_id, idlink.Name FROM poly LEFT JOIN idlink ON poly.eas_id = idlink.eas_id"
STATUS ON
CLASSITEM "idlink.Name"
CLASS
... END END
3.6.4. Kết nối dữ liệu dùng WMS
WMS (Web Map Server) cho phép dử dụng dữ liệu từ nhiều server khác nhau, và tạo một mạng các Map server từ những client có thể tạo tùy chỉnh bản đồ. WMS server tương tác với client thông qua giao thức HTTP. Trong hầu hết các trường hợp, một WMS server là một chương trình CGI. Thực hiện kết nối dữ liệu theo chuẩn WMS, Mapserver lúc này đóng vai trò là client của WMS. Do là client nên Mapserver chỉ cần khai báo layer lấy dữ liệu từ WMS.
Lưu trữ file tạm
Cần đặt giá trị cho tham số IMAGEPATH trong đó đối tượng WEB của mapfile chỉ đến một thư mục hợp lệ và có thể ghi được. Mapserver sẽ dùng thư mục này để lưu trữ các file tạm được download từ server ở xa. Những file tạm này được tự động xóa đi bởi Mapserver.
Khai báo IMAGEPATH
MAP
...
WEB
IMAGEPATH "/tmp/ms_tmp/"
IMAGEURL ...
END
...
END
Để giữ lại các file tạm cho mục đích debug, khai báo :
LAYER
....
DEBUG ON
...
END
Khai báo layer dùng WMS
Layer dùng dữ liệu từ WMS được gọi là WMS layer. WMS layer được truy xuất qua kết nối kiểu WMS.
LAYER
NAME "prov_bound"
TYPE RASTER
STATUS ON
CONNECTION ""
CONNECTIONTYPE WMS
METADATA
"wms_srs" "EPSG:42304 EPSG:42101 EPSG:4269 EPSG:4326
"wms_onlineresource" ""
EPSG:42304"
"wms_name" "prov_bound"
"wms_server_version" "1.1.0"
"wms_formatlist" "image/gif,image/png,image/jpeg,image/wbmp"
"wms_format" "image/gif"
END
END
Các tham số sau đây là bắt buộc đối với kiểu kết nối WMS
+ CONNECTIONTYPE WMS
+ Tham số CONNECTION : chuỗi URL xác định địa chỉ của Web Map Server.
+ “wms_onlineresource” (meta data): được dùng khi tham số CONNECTION không có giá trị.
+ “wms_srs” (metadata): danh sách các mã phép chiếu EPSP được hỗ trợ bởi Web Map Server. Thông tin này có được từ câu truy vấn GetCapabilites (xem phần Các chuẩn WebGIS).
+ “wms_name” (metadata): danh sách các layer được lấy từ WMS server, giá trị được dùng để đặt LAYERS và tham số QUERY_LAYERS WMS URL
+ “wms_server_version” : phiên bản của giao thức WMS được hỗ trợ bởi WMS server, và WMS server sẽ dùng cho GetMap.
+ "wms_format" metadata: Định dạng ảnh dùng để thực hiện yêu cầu GetMap
+ "wms_formatlist" : Danh sách các định dạng ảnh sử dụng cho GetMap
3.6.5. Kết nối dữ liệu dùng WFS (Web Feature Server)
Để Mapserver hộ trợ WFS cần biên dịch Mapserver với các thư viện PROJ.4, GDAL/OGR thư viện hỗ trợ đọc ghi các file vector. LibCURL dùng giúp MapServer đóng vai tro HTTP client. Cần chỉ ra thư mục trong IMAGEPATH trong mapfile bởi vì Mapserver sử dụng thư mục này để lưu trữ file tạm download từ WFS server.
MAP
…
WEB
IMAGEPATH “/tmp/ms_tmp”
IMAGEURL …
END
…
END
Khai báo layer dùng WFS
Layer dùng cho WFS được khai báo như với các tham số chỉ rõ kết nối tới WFS server sử dụng tham số CONNECTION và tham số METADATA. Các tham số bắt buộc là:
CONNECTIONTYPE WFS
CONNECTION: chuỗi URL đến WFS server
LAYER phải chứa đối tượng METADATA với các tham số:
wfs_connectiontimeout: thời gian tối đa đợi để WFS trả lời mặc định là 30s
wfs_service: là WFS
wfs_typename: tên layer. Tên layer được xác định khi các client gởi GetCapabilities request lên WFS server.
Wfs_version phiên bản của wfs server
Wfs_request_method: thực hiện Get request cần đặt wfs_request_method là GET
Ví dụ layer sử dụng WFS
LAYER
NAME "wfs_gmap_roads"
STATUS DEFAULT
TYPE LINE
CONNECTIONTYPE WFS
CONNECTION "
METADATA
"wfs_version" "1.0.0"
"wfs_srs" "EPSG:42304"
"wfs_typename" "road"
"wfs_request_method" "GET"
"wfs_service" "WFS"
END
CLASS
NAME "roads"
STYLE
COLOR 0 0 0
END END END # layer
Chương 4: Xây dựng hệ thống quản lý bản đồ số dựa trên công nghệ MapServer
4.1. Bài toán xây dựng hệ thống quản lý bản đồ số
Hiện nay cùng với sự phát triển của công nghệ thông tin và máy tính, thông tin mà con người tạo ra là vô cùng lớn và đa dạng về nhiều lĩnh vực. Bản đồ cũng vậy, bản đồ không chỉ thể hiện các thông tin thông thường như đường đi, sông ngòi… mà nó còn thể hiện nhiều thông tin khác như du lịch, địa chất khoáng sản, thời tiết, bản đồ dự báo cảnh báo… Cùng với sự phổ biến của mạng internet mọi thông tin chúng ta cần có thể tìm trên internet, việc tìm kiếm thông tin trên mạng internet ngày càng được chú trọng và sử dụng rộng rãi, nhằm nắm bắt được thông tin một cách nhanh nhất. Với internet người sử dụng có thể dùng những ứng dụng bản đồ mà không cần phải cài đặt bất cứ phần mềm nào phức tạp và tốn kém. Trên tư tưởng đó, em muốn tìm hiểu xây dựng demo một website quản lý thông tin trên bản đồ, hiển thị các thông tin đó lên bản đồ, sử dụng công nghệ WebGIS mã nguồn mở MapServer. Các thông tin đó có thể là vị trí các điểm du lịch, nhà hàng, khách sạn…
4.2. Dữ liệu bản đồ
4.2.1. Shapefile
Hiện nay có 2 loại dữ liệu bản đồ phổ biến đó là ESRI shapefile và tab file MapInfo, Do MapServer sử dụng dữ liệu mặc định là shapefile nên trong đề tài này em sẽ sử dụng dữ liệu shapefile bản đồ Hà Nội để xây dựng demo một ứng dụng WebGIS MapSever.Phần mềm mã nguồn mở sử dụng shapefile làm dữ liệu mặc định. Dữ liệu shapfile là cấu trúc dữ liệu GIS của công ty ESRI, Một shapefile được tổ chức thành các tập tin riêng rẽ tối thiểu cần có 3 tập tin với phần mở rộng là ".shp", ".shx" và ".dbf".
".shp" chứa các thông tin về đặc dạng hình học của đối tượng
".shx" chứa thông tin về thứ tự của các đối tượng
".dbf" chứa thông tin về bảng dữ liệu thuộc tính của đối tượng
Dữ liệu shape file bản đồ Hà Nội gồm các file:
Border
Border_region.shp
Border_region.shx
Border_region.dbf
Quận
Quan_Region_region.shp
Quan_Region_region.shx
Quan_Region_region.dbf’
Giao Thông:
Duong_Region_polyline.shp
Duong_Region_polyline.shx
Duong_Region_polyline.dbf
Sông hồ
Song_Region_region.shp
Song_Region_region.shx
Song_Region_region.dbf
Song_Region_polyline.shp
Song_Region_polyline.shx
Song_Region_polyline.dbf
4.2.2 Xây dựng cơ sở dữ liệu
Ứng dụng sử dụng cơ sở dữ liệu quan hệ MySql, lưu trữ các thông tin về một đối tượng trên bản đồ cần quản lý. Trong ứng dụng này, em sẽ xây dựng cơ sở dữ liệu về các nhà hàng trên bản đồ Hà Nội.
Cơ sở dữ liệu restaurant gồm 3 bảng:
- Bảng store
Field
Type
Extra
Notes
id
Tinyint(3)
Auto_increment
resName
Varchar(50)
Tên nhà hàng
address
Varchar(25)
Địa chỉ nhà hàng
latitude
Float
Tọa độ theo vĩ độ
longitude
Float
Tọa độ theo kinh độ
phone
Varchar(20)
Số điện thoại
website
Varchar(50)
Website
- Bảng product
Field
Type
Extra
Notes
id
Tynyint(3)
Auto_increment
description
Varchar(20)
Danh sách các món ăn
- Bảng menu:
Tạo menu các món ăn cho từng nhà hàng theo id
Field
Type
Extra
Notes
store_id
Tinyint(3)
product_id
Tinyint(3)
4.3. Xây dựng chương trình
4.3.1. Tạo Mapfile
Tạo Mapfile tích hợp dữ liệu để tạo ra bản đồ được xây dựng theo mẫu qui định của MapServer, trong mapfiile cần khai báo về các nguồn dữ liệu, các lớp dữ liệu, cách hiển thị các lớp dữ liệu.
Gồm có 5 layer:
Layer Border_Region: định nghĩa layer vẽ đường viền của bản đồ.
Layer Quận: Định nghĩa layer vẽ các quận, trong layer này định nghĩa các class như là class Quận Ba Đình, Quận Cầu Giấy, Quận Thanh Xuân… để mô tả chi tiết vẽ các quận phân biệt màu sắc, tên quận cho dễ nhận biết.
Layer Giao Thông: Layer này vẽ các đường giao thông và tên đường phố.
Layer Song_Region_region : layer vẽ các sông lớn và hồ theo region.
Layer poi: Định nghĩa các điểm cần thêm vào trên bản đồ như vị trí của các nhà hàng, khách sạn trường học.
4.3.2. Xây dựng các chức năng
Sử dụng MapScript của UMN MapServer để xây dựng các ứng dụng, MapScript cung cấp các đối tượng tương tác với bản đồ (MapObject), Lớp (LayerObject), chú thích (LegendObject), Bản thân các đối tượng này đã được cài đặt các thuộc tính và các hàm cơ bản.
4.3.2.1. Công cụ phóng to, thu nhỏ, pan
- Input:
+ Bản đồ hiện tại
+ Tỷ lệ phóng to thu nhỏ cho trước
+ Một điểm do người dùng kích chuột trên bản đồ hoặc một vùng chữ nhật do người dùng vẽ trên bản đồ.
+ Kiểm tra các radio box của các công cụ pan, zoomin, zoomout được check
- Output: Bản đồ được phóng to, thu nhỏ hoặc pan
- Giải thuật: Người dùng kích chuột lên một điểm, xác định tọa độ của điểm đó, dùng hàm ZoomPoint của MapObject với hệ số phóng to, thu nhỏ cho trước.
4.3.2.2. Công cụ hiển thị, tắt các lớp
- Input:
+ Danh sách các lớp được hiển thị hoặc tắt dự vào các checkbox cho mỗi lớp
- Ouput : Các lớp được hiển thị hoặc tắt
Giải thuật: Lấy tên của lớp đó qua tên của checkbox, dùng hàm getLayerbyname để tạo một đối tượng layer tương ứng với lớp đó, tùy vào checkbox được check hay không thì dùng hàm set(‘status’,MS_ON||MS_OFF) với đối tượng layer đó.
4.3.2.3. Công cụ hiển thị thông tin của đối tượng
- Input: Đối tượng cần xem thông tin sẽ được người dùng click chuột vào tại một điểm, xác định tọa độ điểm đó, chuyển tọa độ điểm đó từ tọa độ màn hình về tọa độ bản đồ.
- Output: Đối tượng tồn tại trong cơ sở dữ liệu thì sẽ được hiển thị trên bản đồ, và các thông tin thuộc tính của đối tượng đó.
- Giải thuật: Truy vấn trong cơ sở dữ liệu tìm đối tượng có tọa độ theo kinh độ, vĩ độ tương ứng mà người dùng vừa bấm vào, lấy ra các thông tin của đối tượng đó và hiển thị trên bản đồ.
4.3.2.4. Công cụ tìm kiếm
- Input: Tên của đối tượng cần tìm kiếm trên bản đồ, submit tìm kiếm.
- Output: Nếu đối tượng được tìm thấy thì sẽ trả về bản đồ zoom tới đối tượng cần tìm kiếm.
- Giải thuật: Tìm kiếm theo tên đối tượng trong cơ sở dữ liệu, nếu đối tượng tồn tại trong cơ sở dữ liệu, thì lấy ra tọa độ theo kinh độ và vĩ độ của đối tượng đó, chuyển tọa độ đó về tọa độ màn hình dùng hàm map2img, dùng hàm zoomPoint để thiết lập các thông số cho ảnh bản đồ hiển thị kết quả tìm kiếm.
4.3.3. Xây dựng các hàm xử lý
Sử dụng PHP/ MapScript truy cập vào các hàm API của MapServer để vẽ bản đồ. Xây dựng một ứng dụng MapServer hiển thị bản đồ với các chức năng pan, zoom, bật tắt các layer thành phần bản đồ. Hiển thị các địa điểm nhà hàng, khách sạn trên bản đồ, kết nối với cơ sở dữ liệu MySql lấy ra thông tin thuộc tính của các đối tượng đó trên bản đồ.
- Hàm img2map(): chuyển từ tọa độ màn hình về tọa độ ảnh
function img2map($width,$height,$point,$ext) {
$minx = $ext->minx;
$miny = $ext->miny;
$maxx = $ext->maxx;
$maxy = $ext->maxy;
if ($point->x && $point->y){
$x = $point->x;
$y = $point->y;
$dpp_x = ($maxx-$minx)/$width;
$dpp_y = ($maxy-$miny)/$height;
$x = $minx + $dpp_x*$x;
$y = $maxy - $dpp_y*$y;
}
$pt[0] = $x;
$pt[1] = $y;
return $pt;
}
- Hàm map2img() : Chuyển từ tọa độ bản đồ về tọa độ màn hình
function map2img($width,$height,$point,$ext) {
if ($point->x && $point->y){
$ppd_x = $width/($ext->maxx - $ext->minx);
$ppd_y = $height/($ext->maxy - $ext->miny);
$p[0] = $ppd_x * ($point->x - $ext->minx);
$p[1] = $height - $ppd_y * ($point->y - $ext->miny);
settype($p[0],"integer");
settype($p[1],"integer");
}return $p;}
- Hàm GetStoreTable() lấy ra thông tin thuộc tính của một nhà hàng trên bản đồ trong bảng store.
function GetStoreTable() {
@mysql_connect("localhost", "root", "password") or die("Could not connect to MySQL server!");
@mysql_select_db("restaurant") or die("Could not select database");
$query = "SELECT * FROM store";
$result = mysql_query($query);
$i = 0;
while ( $row = mysql_fetch_array($result,MYSQL_NUM) ) {
$qresult[$i] = $row;
$i++;
}
return $qresult;
}
- Hàm AddPoint(): Thêm các điểm trên bản đồ là vị trí của các nhà hàng, khách sạn theo kinh độ và vĩ độ của nhà hàng đó, được lưu trong cơ sở dữ liệu.
function AddPoints ( $map, $qresult ) {
$this_layer = $map->getLayerByName('poi');
$i = 0;
foreach($qresult as $row) {
$poi[$i] = ms_newPointObj();
$ln[$i] = ms_newLineObj();
$shp[$i] = ms_newShapeObj(MS_SHAPE_POINT);
$poi[$i]->setXY($row[3],$row[2]);
$ln[$i]->add($poi[$i]);
$shp[$i]->add($ln[$i]);
$shp[$i]->set(index, $row[0]);
$this_layer->addFeature( $shp[$i] );$i++;
}return;
}
4.4. Cài đặt chương trình và thử nghiệm
4.4.1. Cài đặt
Chương trình cài đặt chạy trên hệ điều hành ubuntu linux. Để chạy chương trình ta phải cài đặt các phần mềm.
Webserver apache
Hệ quản trị cơ sở dữ liệu Mysql
PHP5
Phpmyadmin
Cgi-MapServer
Các file dữ liệu bản đồ dạng shp, shx, dbf, và file mapfile nằm trong thư mục /home/bdhanoi.
Các file php, js và các file ảnh nằm trong thư mục /var/www/.
4.4.2. Một số giao diện chương trình
Giao diện chính:
Hình 22: Giao diện chính chương trình
Zoom:
Hình 23: Chức năng zoom
Bật, tắt các layer:
Hình 24: Chức năng bật tắt các layer
Thông tin đối tượng trên bản đồ:
Hình 25: Xem thông tin của đối tượng trên bản đồ
Tìm kiếm:
Hình 26: Chức năng tìm kiếm
4.4.3. Thử nghiệm chương trình
Chương trình được cài đặt chạy thử nghiệm trên máy Pentium(R) 4, CPU 3.0 GHz, 512MB Ram kết quả như sau
STT
Tính năng
Đánh giá
1
Hiển thị bản đồ
Hiển thị tốt, hiển thị chậm trong lần đầu tiên, các lần sau nhanh hơn.
2
Phóng to, thu nhỏ bản đồ
Bản đồ được phóng to, thu nhỏ theo zoomsize có thể thay đổi
3
Dịch chuyển bản đồ
Việc dịch chuyển với người dùng sẽ khó khăn trong việc xác định chính xác vị trí cần dịch chuyển
4
Tắt bật các layer
Tắt bật các layer tốt
5
Tìm vị trí của nhà hàng
Chức năng được thực hiện tốt, nhà hàng được tìm thấy sẽ được dịch chuyển tới giữa khung ảnh cho người dùng.
KẾT LUẬN
1. Các kết quả đạt được
Sau khi thực hiện đề tài, em đã đạt được một số kết quả như sau:
Nghiên cứu về bản đồ, các cơ sở toán học của bản đồ, chiếu hình bản đồ
Hệ thống thôn tin địa lý – GIS, tổ chức cơ sở dữ liệu trong GIS
Nghiên cứu công nghệ mã nguồn mở MapServer, PHP/MapScript, ứng dụng xây dựng WebGIS
Nắm vững được các kiến thức về các ngôn ngữ PHP, Javascript, HTML…
Xây dựng một WebGIS dựa trên MapServer, với các chức năng cơ bản
Cài đặt và chạy tốt trên localhost
2. Hướng phát triển của đề tài
Do hạn chế về thời gian và thiếu dữ liệu nên ứng dụng còn thiếu nhiều tính năng cần phát triển như:
Sử dụng các công nghệ mới như web 2.0 và javascript nhằm cải thiện tốc độ, và các công cụ zoom, pan tiện lợi hơn bằng lăn chuột và kéo thả chuột.
Phát triển thêm các chức năng hỗ trợ người dùng như tìm đường đi ngắn nhất, và cập nhật thêm dữ liệu không gian
MapServer hỗ trợ rất nhiều các ngôn ngữ kịch bản như C#, Perl, PHP, nghiên cứu và phát triển dựa trên các ngôn ngữ này.
Tài liệu tham khảo
[1] Phạm Hữu Đức - Đại học Kiến Trúc Hà Nội. Giáo trình Cơ sở dữ liệu & Hệ thống thông tin địa lý – GIS.
[2] Võ Quang Minh, Nguyễn Hồng Điệp , Trần Ngọc Trinh, Trần Văn Hùng – Đại học Cần Thơ. Giáo trình hệ thống thông tin địa lý (GIS SYSTEM).
[3] Bill Kropla. Beginning MapServer Open Source GIS Development 2005
[4] Trang web:
[5] Trang web:
Các file đính kèm theo tài liệu này:
- Xây dựng hệ thống quản lý bản đồ số dựa trên công nghệ mapserver.doc