Công cụ hiển thị, tắt các lớp

Một phần của tài liệu LUẬN VĂN:XÂY DỰNG HỆ THỐNG QUẢN LÝ BẢN ĐỒ SỐ DỰA TRÊN CÔNG NGHỆ MAPSERVER pdf (Trang 73 - 82)

- 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: - 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;

$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 (adsbygoogle = window.adsbygoogle || []).push({});

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 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:

Zoom:

Hình 23: Chức năng zoom

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:

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 (adsbygoogle = window.adsbygoogle || []).push({});

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: http://mapserver.org/documentation.html

[5] Trang web: http://trac.osgeo.org/mapserver/wiki/PHPMapScript

Một phần của tài liệu LUẬN VĂN:XÂY DỰNG HỆ THỐNG QUẢN LÝ BẢN ĐỒ SỐ DỰA TRÊN CÔNG NGHỆ MAPSERVER pdf (Trang 73 - 82)