Một số truy vấn spatial SQL đơn giản

Một phần của tài liệu Luận văn : Phát triển hệ thống hỗ trợ tìm đường trên các thiết bị di động có GPS doc (Trang 40 - 43)

Trong PostGIS cung cấp các hàm xử lý không gian, giúp cho việc truy vấn không gian đạt hiệu quả. Để sử dụng PostGIS hiệu quả yêu cầu phải biết về các hàm không gian đang có, và sử dụng một cách hợp lý để có thể đạt được hiệu năng truy vấn tốt.

Các ví dụ dưới đấy sẽ sử dụng 2 bảng, 1 bảng các đường đường phố, và 1 bảng các đa giác đường biên đô thị.

Bảng các đường phố bc_roads:

Column | Type | Description

---+---+--- gid |integer | Unique ID

name |character varying| Road Name

34

Bảng các đa giác đường biên đô thị bc_municipality:

Column | Type |Description

---+---+--- gid |integer |Unique ID

code |integer |Unique ID

name |character varying|City / Town Name

the_geom| geometry |Location Geometry (Polygon)

Tổng số chiều dài của các đường là bao nhiều (km) - sử dụng hàm ST_Length để tính độ dài đường?

SELECT sum(ST_Length(the_geom))/1000 AS km_roads FROM

bc_roads;

Diện tích của thành phố Prince George là bao nhiêu (hectar) – sử dụng hàm ST_Area để tính diện tích một đa giác ?

SELECT ST_Area(the_geom)/10000 AS hectares FROM bc_municipality

WHERE name = ’PRINCE GEORGE’;

Khu vực nào là rộng nhất trong tỉnh (theo diện tích) ?

SELECT name,ST_Area(the_geom)/10000 AS hectares FROM bc_municipality

ORDER BY hectares DESC LIMIT 1;

Độ dài của đường đầy đủ chứa trong mỗi đô thị là gì - hàm ST_Contains kiểm tra xem một đối tượng geometry có được chứa trong một đối tượng geometry khác hay không?

SELECT m.name,sum(ST_Length(r.the_geom))/1000 as roads_km FROM bc_roads AS r,bc_municipality AS m

35 GROUP BY m.name ORDER BY roads_km; Kết quả trả về: name | roads_km ---+--- SURREY | 1539.47553551242 VANCOUVER | 1450.33093486576 LANGLEY DISTRICT| 833.793392535662 BURNABY | 773.769091404338 PRINCE GEORGE | 694.37554369147

Tạo một bảng lưu tất cả các đường trong thanh phố Prince George – hàm ST_Intersects trả về các đối tượng geometry giao nhau.

CREATE TABLE pg_roads as

SELECT ST_Intersection(r.the_geom, m.the_geom) AS intersection_geom,

ST_Length(r.the_geom) AS rd_orig_length, r.* FROM bc_roads AS r,bc_municipality AS m

WHERE m.name = ’PRINCE GEORGE’ AND ST_Intersects(r.the_geom, m.the_geom);

36

CHƯƠNG 4. XÂY DỰNG ỨNG DỤNG

Dựa trên những kiến thức thu được, trong chương này, tôi sẽ trình bày về hệ thống dẫn đường (navigator) thử nghiệm với mục đích minh họa những hiểu biết về hệ thống thông tin địa lý và các vấn đề xử lý truy vấn không gian.

Một phần của tài liệu Luận văn : Phát triển hệ thống hỗ trợ tìm đường trên các thiết bị di động có GPS doc (Trang 40 - 43)

Tải bản đầy đủ (PDF)

(58 trang)