Hình 2 .8 Đƣờng viền
Hình 2.9 Một số hàm cơ bản trong PostGis
Nhóm hàm điều khiển Addgeometry column()
Chức năng:
Hàm Addgeometry là thêm một cột hình học vào bảng đã tồn tại, hàm này rất quan trọng trong việc tạo bảng trong CSDL không gian.
Cú pháp:
Text Addgeometry column( varchar table_name, varvhar column _name, integer scrid, varchar type, integer dimension);
Text Addgeometry column( varchar schema_name, varvhar table_name, vachar column_name,integer srid, varchar type, integer dimension);
Trong đó:
schema_name: Tên của bảng sơ đồ, thƣờng mặc định khi cài đặt PostgreSQL
Srid: Giá trị là một số nguyên, tham chiếu đến bảng SPATIAL_REF_SYS.
Type: Xác định kiểu hình học cho cột cần thêm.
Dimension: Xác định chiều hình học, chiều tƣơng ứng với kiểu hình học.
DropGeometry column()
Chức năng:
Hàm DropGeometry column() là loại bỏ một cột hình học từ bảng không gian
Cú pháp:
Text DropGeometry column( varchar table_name, vachar column_name); Text DropGeometry column( varchar schema_name, varvhar table_name, vachar column_name);
Nhóm hàm khởi tạo hình học ST_Geometry FromText()
Chức năng:
Hàm ST_Geometry FromText() trả về giá trị đƣợc chỉ định ST_Geometry từ hiển thị WKT
Cú pháp:
Geometry ST_Geometry FromText(text WKT);
Hàm trả về kiểu hình học ở đầu ra ST_AsText().
Chức năng:
Hàm ST_AsText().trả về hiển thị dạng WKT của hình Cú pháp:
Text ST_AsText( geometry g);
Hàm xác định mối quan hệ không gian. ST_Equals()
Chức năng:
Hàm ST_Equals() là trả về True nếu đƣa ra những hình đƣợc coi là "bằng nhau trong không gian".
Cú pháp:
Boolean ST_Equals(geometry A, geometry B);
ST_Disjoint().
Chức năng:
Hàm ST_Disjoint() là trả về True nếu các hình "không giao nhau trong không gian" nếu chúng không chia sẻ bất cứ khoảng không gian nào cho nhau, hay là tách biệt hẳn với nhau. Nếu bất kỳ các hàm ST_Overlaps(),ST_Touches(),ST_within() trả về true thì các hình đó không phải có không gian phân chia. Hàm ST_Disjoint() không sử dụng cơ chế đánh chỉ mục.
Cú pháp:
Boolean ST_Disjoint(geometry A, geometry B);
ST_Intersects()
Chức năng:
Hàm ST_Intersects() là trả về True nếu các hình gọi là "giao nhau trong không gian" trả về false nếu chúng không có bất cứ điểm nào giao nhau. Nếu các hàm ST_Overlaps(),ST_Touches(),ST_within() trả về true thì các hình đó là giao nhau.
Cú pháp:
Boolean ST_Intersects(geometry A, geometry B);
ST_Touches()
Chức năng:
Hàm ST_Touches() là trả về True nếu các hinh đó có ít nhất một điểm chung, nhƣng bên trong chúng lại không giao nhau, quan hệ ST_Touches() áp dụng cho vùng/vùng, đƣờng/đƣờng, đƣờng/vùng và điểm /đƣờng nhƣng không áp dụng cho cặp điểm /điểm.
Cú pháp: Boolean ST_Intersects(geometry g1, geometry g2);
ST_Overlaps()
Chức năng:
Hàm ST_Overlaps() trả về true nếu các hình có khoảng không gian chia sẻ, có cùng chiều, nhƣng chúng không hoàn toàn bị chứa bởi hình khác.
Cú pháp:
Boolean ST_Overlaps(geometry A, geometry B);
Chức năng:
Hàm ST_Crosses() là trả về true nếu đối tƣợng hình học thu đƣợc có chiều nhỏ hơn chiều lớn nhất của hai đối tƣợng hình học ban đầu. Đối tƣợng thu đƣợc phải chứa các điểm bên trong của hai đối tƣợng hình học ban đầu và đối tƣợng thu đƣợc phải không bằng một trong hai đối tƣợng đầu vào, trƣờng hợp còn lại trả về false.
Cú pháp:
Boolean ST_Crosses(geometry g1, geometry g2);
ST_within()
Chức năng:
Hàm ST_within() là trả về true nếu hình A nằm hoàn toàn bên trong hình B. Cú pháp:
Boolean ST_within(geometry A, geometry B);
ST_Contains()
Chức năng:
Hàm ST_Contains() là trả về true khi và chỉ khi không có điểm nào của B nằm bên ngoài A và ít nhất 1 điểm bên trong B nằm bên trong A.
Cú pháp:
Boolean ST_Contains(geometry A, geometry B);
ST_Distance().
Chức năng:
Hàm ST_Distance() trả về khoảng cách giữa hai điểm, giữa hai điểm và đƣờng trong không gian 2D. Đơn vị mặc định là meter.
Cú pháp:
Float ST_Distance(geometry g1, geometry g2).
ST_length().
Chức năng:
Hàm ST_length()trả về độ dài 2 d của hình nếu chúng là linestring hoặc multilinestring. Đơn vị mặc định là "meter".
Cú pháp:
Float ST_length(geometry linestring);
ST_Area().
Hàm .ST_Area() trả về diện tích của hình nếu nó mô tả Polygon hoặc multipolygon. Đơn vị mặc định là meter.
Cú pháp:
Float ST_Area(geometry g1);
ST_Perimeter().
Hàm ST_Perimeter trả về giá trị chu vi của hình nếu nó có dạng polygon hoặc multipolygon. Đơn vị mặc định là meter.
Cú pháp:
Float ST_Perimeter(geometry g1);
Nhóm hàm đƣa ra đối tƣợng hình mới. ST_Intersection().
Chức năng:
Hàm ST_Intersection() là trả về một hình , hiển thị phần chung giữa hình A và hình B. Nếu hình A và hình B không có bất kỳ điểm chung thì trả về đối tƣợng hình rỗng.
Cú pháp:
Geometry ST_Intersection(geometry A, geometry B) ;
Hình 2.10. A. Intersection(B)
ST_Difference()
Chức năng:
Hàm ST_Difference() trả về một hình hiển thị phần của hình A mà không giao với hình B. Chúng ta có thể hiểu theo công thức sau:
ST_Difference()=Geometry A- ST_Intersection(A,B).
Nếu A hoàn toàn nằm trong B, thì A và B không có điểm khác biệt, nghĩa là hàm ST_Difference() trả về giá trị rỗng.
Geometry ST_Difference(geometry geomA, geometry geomB) ;
Hình 2.11: A. Difference(B) và B. Difference(A)
ST_Union()
Chức năng:
Hàm ST_Union() trả về một hình hiển thị hợp của các hình. Kiểu trả về của hàm có thể là multi*, hình đơn lẻ hoặc tập hợp các hình.
Cú pháp:
Geometry ST_Union(geometry g1, geometry g2) ;
Hình 2.12. A. Union(B)
ST_SymDifference()
Chức năng:
Hàm ST_SymDifference() trả về hình hiển thị phần của hình A và hình B không giao nhau, nó đƣợc gọi là sự khác nhau đối xứng, theo công thức sau:
ST_SymDifference(A, B)= ST_Union(A,B)- ST_Intersection(A, B); Cú pháp:
Hình 2.13. A. SymDifference(B)
Nhóm hàm thay đổi hình học. ST_Buffer()
Chức năng:
Hàm ST_Buffer() trả về một hình hiển thị cho tất cả các điểm mà khoảng cách của chúng từ hình đến khoảng cách.
Option(tùy chọn)
quad_segs: Số đoạn được sử dụng để xấp xỉ 1/4 vòng tròn(mặc định là 8) endcap=round\flat\square: Kiểu kết thúc mặc định là round.
joint= round\mitre\bevel: Kiểu nối mặc định là round. mitre_limit: Tỉ lệ giới hạn cho mép.
Đơn vị đo của bán kính đƣợc đo bằng đơn vị của hệ thống tham chiếu không gian. Đầu ra của hàm có thể là Point, Multipoint, linestring, multipolygon, polygon, multipolygon và geometrycollection.
Cú pháp:
Geometry ST_Buffer(geometry g1, float R) ;
Geometry ST_Buffer(geometry g1, float R, integer
num_seg_quater_cricle) ;