Các hàm và toán tử hình học

Một phần của tài liệu Phân tích dữ liệu không gian GIS-3D và xây dựng ứng dụng (Trang 46)

Các kiểu hình học point, box, lseg, line, path, polygon, circle có nhiều hàm và toán tử hỗ trợ nguyên gốc, được trình bày trong các Bảng 2.2, Bảng 2.3, và Bảng 2.4.

Toán tử Mô tả Sử dụng

+ dịch chuyển box ‟((0,0),(1,1))‟+ point ‟(2.0,0)‟

- dịch chuyển box ‟((0,0),(1,1))‟ - point ‟(2.0,0)‟

* Scaling/rotation box ‟((0,0),(1,1))‟ * point ‟(2.0,0)‟ / Scaling/rotation box ‟((0,0),(2,2))‟ / point ‟(2.0,0)‟

# Phần giao nhau ‟((1,-1),(-1,1))‟ #‟((1,1),(-1,-1))‟

# số đỉnh của một path hay polygon # ‟((1,0),(0,1),(-1,0))‟

## điểm gần nhất point ‟(0,0)‟ ##

lseg ‟((2,0),(0,2))‟ && Overlaps? box ‟((0,0),(1,1))‟ &&

box ‟((0,0),(2,2))‟ &< Overlaps bên trái ? box ‟((0,0),(1,1))‟ &<

box ‟((0,0),(2,2))‟ &> Overlaps bên phải ? box ‟((0,0),(3,3))‟ &>

box ‟((0,0),(2,2))‟ <-> Khoảng cách ? circle ‟((0,0),1)‟ <->

circle ‟((5,0),1)‟ << Ở về bên trái ? circle ‟((0,0),1)‟ <<

circle ‟((5,0),1)‟

<^ Ở bên dưới ? circle ‟((0,0),1)‟ <^

circle ‟((0,5),1)‟ >> Ở về bên phải ? circle ‟((5,0),1)‟ >>

circle ‟((0,0),1)‟

>^ Ở bên trên ? circle ‟((0,5),1)‟ >^

circle ‟((0,0),1)‟ ?# có cắt nhau hay đè nhau lseg ‟((-1,0),(1,0))‟ ?#

box ‟((-2,-2),(2,2))‟

?- là nằm ngang ? point ‟(1,0)‟ ?- point ‟(0,0)‟

?-| là vuông góc ? lseg ‟((0,0),(0,1))‟ ?-|

lseg ‟((0,0),(1,0))‟

@-@ độ dài hay chu vi @-@ path ‟((0,0),(1,0))‟

?| là thẳng đứng ? point ‟(0,1)‟ ?| point ‟(0,0)‟

?|| là song song ? lseg ‟((-1,0),(1,0))‟ ?||

lseg ‟((-1,2),(1,2))‟

@ chứa trong hay nằm trên point ‟(1,1)‟ @ circle ‟((0,0),2)‟

@@ Ở tâm của @@ circle ‟((0,0),10)‟

~= Same as polygon ‟((0,0),(1,1))‟ ~= polygon

‟((1,1),(0,0))‟

Nguyên mẫu Kiểu giá trị trả về

Mô tả Ví dụ

area(object) double

precision diện tích của area(box‟((0,0),(1,1))‟)

box(box,box) box giao của hai box box(box‟((0,0),(1,1))‟,box‟((0.5,0 .5),(2,2))‟)

center(object) point tâm của center(box‟((0,0),(1,2))‟) diameter(circle) double precision đường kính của vòng tròn diameter(circle‟((0,0),2.0)‟) height(box) double precision

chiều cao của box

height(box‟((0,0),(1,1))‟) isclosed(path) boolean là đường đóng

kín ?

isclosed(path‟((0,0),(1,1),(2,0))‟) isopen(path) boolean là đường hở ? isopen(path‟[(0,0),(1,1),(2,0)]‟) length(object) double

precision

độ dài của length(path‟((-1,0),(1,0))‟) npoints(path) integer số đỉnh của npoints(path‟[(0,0),(1,1),(2,0)]‟) npoints(polygon) integer số đỉnh của npoints(polygon‟((1,1),(0,0))‟)

pclose(path) path chuyển path

thành đóng

pclose(path‟[(0,0),(1,1),(2,0)]‟)

popen(path) path chuyển path

thành hở popen(path‟((0,0),(1,1),(2,0))‟) radius(circle) double precision bán kính radius(circle ‟((0,0),2.0)‟) width(box) double

precision chiều ngang width(box‟((0,0),(1,1))‟)

Nguyên mẫu Kiểu dữ liệu trả về

Mô tả Ví dụ

box(circle) box circle -> box box(circle‟((0,0),2.0)‟) box(point,point) box points -> box box(point, point‟(1,1)‟) box(polygon) box polygon -> box box(polygon‟((0,0),(1,1),(2,0)

)‟)

circle(box) circle box -> circle circle(box‟((0,0),(1,1))‟) circle(point,double

precision)

circle point, number -> circle

circle(point‟(0,0)‟,2.0)

lseg(box) lseg đường chéo box

-> lseg

lseg(box‟((-1,0),(1,0))‟) lseg(point,point) lseg 2 điểm -> lseg lseg(point‟(-

1,0)‟,point‟(1,0)‟)

path(polygon) point polygon -> path path(polygon‟((0,0),(1,1),(2,0 ))‟)

point(circle) point vòng tròn -> tâm

của point(circle‟((0,0),2.0)‟)

point(lseg,lseg) point giao điểm point(lseg‟((-

1,0),(1,0))‟,lseg‟((-2,- 2),(2,2))‟)

point(polygon) point đa giác ->

tâm của nó 0))‟) point(polygon‟((0,0),(1,1),(2, polygon(box) polygon box -> polygon polygon(box‟((0,0),(1,1))‟) polygon(circle) polygon circle ->

polygon 12 đỉnh

polygon(circle ‟((0,0),2.0)‟) polygon(npts,circle) polygon cirle -> polygon

n đỉnh

polygon(12, circle‟((0,0),2.0)‟) polygon(path) polygon path -> polygon polygon(path

‟((0,0),(1,1),(2,0))‟)

Bảng 2.4. Các hàm chuyển đổi hình học

Có thể để truy nhập hai tọa độ thành phần của một điểm như thể nó là một mảng với chỉ số 0, 1. Cho ví dụ, nếu t.p là một cột kiểu điểm (point) thì câu lệnh

SELECT p[0] FROM t Sẽ lấy ra tọa độ X, câu lệnh

UPDATE t SET p[1] = ... sẽ sửa đổi tọa độ Y.

Một phần của tài liệu Phân tích dữ liệu không gian GIS-3D và xây dựng ứng dụng (Trang 46)

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

(92 trang)