- Đầu vào:
+ Loại chuyên đề cần xem.
+ Vị trí điểm hoặc hình chữ nhật do ngƣời dùng chọn trên bản đồ. - Đầu ra: Thông tin về đối tƣợng thuộc chuyên đề do ngƣời dùng chọn. - Giải thuật:
+ Sử dụng hàm GetLayerByName của MapObject để lấy lớp chuyên đề. + Nếu ngƣời dùng vẽ hình chữ nhật?
Tạo hình chữ nhật có tọa độ địa lý bằng cách chuyển tọa độ pixel sang tọa độ địa lý.
Sử dụng hàm QueryByRect của đối tƣợng LayerObject để truy vấn. + Ngƣợc lại nếu ngƣời dùng chọn điểm
Tạo điểm có tọa độ địa lý bằng cách chuyển tọa độ pixel sang tọa độ địa lý. Sử dụng hàm QueryByPoint của đối tƣợng LayerObject để truy vấn.
+ Kiểm tra kết quả trả về. Nếu không tồn tại đối tƣợng không gian đƣợc chọn thì thoát.
+ Ngƣợc lại: Lặp trong danh sách kết quả, lấy thông tin từng đối tƣợng và xuất sang trang kết quả để hiển thị.
Đối tƣợng đƣợc lựa chọn hiển thị màu khác biệt so với các đối tƣợng khác nhờ khai báo trong nhãn QUERYMAP của file map:
QUERYMAP
STYLE HILITE COLOR 255 0 0 STATUS ON END
Nhãn STYLE nhận một trong ba giá trị:
HILITE: Hiển thị tất cả các đối tƣợng trong đó đối tƣợng đƣợc lựa chọn có màu sắc nhƣ khai báo trong nhãn COLOR.
SELECTED: Chỉ hiển thị mỗi đối tƣợng lựa chọn trên bản đồ.
Đoạn mã truy vấn đối tƣợng không gian khi ngƣời dùng kích vào một điểm trên đối tƣợng:
$nClickGeoX = GMapPix2Geo($nClickPixX, 0, $dfWidthPix, $dfMinX, $dfMaxX, 0); $nClickGeoY = GMapPix2Geo($nClickPixY, 0, $dfHeightPix,
$dfMinY, $dfMaxY, 1);
$oClickGeo = ms_newPointObj();
$oClickGeo->setXY($nClickGeoX, $nClickGeoY); // Use '@' to avoid warning if query found nothing
@$gpoMap->queryByPoint($oClickGeo, MS_SINGLE, -1);
Trong file map mỗi lớp của bản đồ ta khai báo tên bảng tƣơng ứng. Vì vậy khi truy vấn để lấy tên bảng ta dung lệnh
$tblname = $oLayer->getMetaData(“ TABLE_NAME” );
Mỗi đối tƣợng trên một lớp sẽ đƣợc gắn một định danh duy nhất- shapeindex. Việc lấy định danh này có thể thực hiện bằng đoạn mã:
for ($iRes=0; $iRes < $numResults; $iRes++) {
$oRes = $oLayer->getResult($iRes); $gid = $oRes->shapeindex;
Khi chuyển đổi dữ liệu từ shape file sang dữ liệu PostgreSQL định danh này đƣợc lƣu trong trƣờng gid. Vì thế từ trƣờng gid này ta có thể truy vấn ra dữ liệu thuộc tính, dữ liệu đa phƣơng tiện gắn với đối tƣợng.
Đoạn mã kết nối đến cơ sở dữ liệu:
$conn = pg_connect('port = 5432 dbname = hanoidb1 password=tra123 user = postgres');
Nếu muốn xem chi tiết về đối tƣợng ngƣời dùng kích vào siêu liên kết xem chi tiết
Hình 7: Truy vấn đối tượng trên bản đồ
Khi kích vào liên kết xem chi tiết sẽ xuất hiện trang chi tiết về đối tƣợng này. Trang này có thể hiển thị các thông tin thuộc tính lấy trong cơ sở dữ liệu kèm ảnh. Nếu muốn xem video kích đƣờng link Xem video
Hình 8: Chi tiết đối tượng truy vấn
Việc hiển thị dữ liệu hình ảnh, âm thanh nhƣ đã trình bày ở trên