Điểm Mysql trong đa giác

Trong hướng dẫn này, chúng ta sẽ hiểu cách lưu trữ và sử dụng các kiểu dữ liệu không gian như tọa độ và đối tượng. Tuy nhiên, chúng tôi sẽ chủ yếu tập trung vào Điểm (Tọa độ Descartes 2D) và Vị trí địa lý (Tọa độ trắc địa)

(lịch sự của pexels. com)

Open Geospatial Consortium (OGC) là một tập đoàn quốc tế gồm hơn 250 công ty, cơ quan và trường đại học tham gia phát triển các giải pháp khái niệm có sẵn công khai có thể hữu ích với tất cả các loại ứng dụng quản lý dữ liệu không gian

Thông số kỹ thuật do Open Geospatial Consortium xuất bản (OGC) xuất bản chỉ định rằng cách MySQL triển khai các phần mở rộng không gian như một tập hợp con của môi trường SQL với các kiểu hình học. Thuật ngữ này đề cập đến một môi trường SQL đã được mở rộng với một tập hợp các loại hình học. Cột SQL có giá trị hình học được triển khai dưới dạng cột có loại hình học. Đặc tả mô tả một tập hợp các loại hình học SQL, cũng như các chức năng trên các loại đó để tạo và phân tích các giá trị hình học

Các tính năng của các kiểu dữ liệu không gian MySQL

Phần mở rộng không gian của MySQL cho phép tạo, lưu trữ và phân tích các đối tượng địa lý

  • Các kiểu dữ liệu để biểu diễn các giá trị không gian
  • Các hàm để thao tác các giá trị không gian
  • Lập chỉ mục không gian để cải thiện thời gian truy cập vào các cột không gian

MySQL hỗ trợ một số loại dữ liệu không gian

MySQL có các kiểu dữ liệu tương ứng với các lớp OpenGIS. Một số loại này giữ các giá trị hình học đơn lẻ

  • HÌNH HỌC
  • ĐIỂM
  • LINESTRING
  • ĐA GIÁC

Các kiểu dữ liệu khác chứa các tập hợp giá trị

  • ĐA ĐIỂM
  • MULTILINESTRING
  • ĐA GIÁC
  • BỘ SƯU TẬP HÌNH HỌC

Loại hình học

Hình học là một từ biểu thị một đối tượng địa lý. Ban đầu từ hình học có nghĩa là phép đo trái đất. Một ý nghĩa khác xuất phát từ bản đồ học, đề cập đến các đặc điểm hình học mà người vẽ bản đồ sử dụng để lập bản đồ thế giới. Nó là một lớp không thể hiện được nhưng có một số thuộc tính, được đưa ra dưới đây là chung cho tất cả các giá trị hình học được tạo từ bất kỳ lớp con Hình học nào

NameDescriptiontypeMỗi hình học thuộc về một trong các lớp có thể khởi tạo trong cấu trúc phân cấp. SRID Dạng đầy đủ của SRID là Mã định danh tham chiếu không gian. Hệ thống này mô tả không gian tọa độ trong đó đối tượng hình học được xác định. Trong MySQL, giá trị SRID chỉ là một số nguyên được liên kết với giá trị hình học. tọa độTất cả hình học khác rỗng bao gồm ít nhất một cặp tọa độ (X,Y). Hình học rỗng không chứa tọa độ. Các tọa độ có liên quan đến SRID. nội thất, ranh giới, ngoại thất. Mỗi hình học chiếm một số vị trí trong không gian. Mặt ngoài của hình học là toàn bộ không gian không bị hình học chiếm chỗ. Nội thất là không gian bị chiếm bởi hình học. Ranh giới là giao diện giữa bên trong và bên ngoài của hình học. MBRIts MBR (hình chữ nhật giới hạn tối thiểu) hoặc phong bì. Đây là hình học giới hạn, được hình thành bởi tọa độ (X,Y) tối thiểu và tối đa. đơn giản hay không đơn giản. Cho dù giá trị là đơn giản hay không đơn giản. Giá trị hình học của các loại (LineString, MultiPoint, MultiLineString) là đơn giản hoặc không đơn giản. Mỗi loại xác định các xác nhận của riêng nó là đơn giản hay không đơn giản. đã đóng hay chưa đóngCho dù giá trị đã đóng hay chưa đóng. Giá trị hình học của các loại (LineString, MultiString) được đóng hoặc không đóng. Mỗi loại xác định các xác nhận của riêng nó để đóng hoặc không đóng. rỗng hay không rỗngCho dù giá trị rỗng hay không trống Một hình học trống nếu nó không có bất kỳ điểm nào. Ngoại thất, nội thất và ranh giới của một hình học trống không được xác định. Một hình học trống được định nghĩa là luôn đơn giản và có diện tích bằng 0. thứ nguyênThứ nguyên của nó. Một hình học có thể có kích thước là –1, 0, 1 hoặc 2
– 1 cho một hình học rỗng
0 cho hình học không có chiều dài và không có diện tích
1 cho hình học có độ dài khác không và diện tích bằng không
2 cho hình học có diện tích khác không

Thí dụ

Sử dụng câu lệnh CREATE TABLE để tạo bảng có cột không gian

CREATE TABLE geotest (code int(5),descrip varchar(50), g GEOMETRY);
 

Đây là cấu trúc của bảng

Đầu ra mẫu

MySQL> describe geotest;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| code    | int(5)      | YES  |     | NULL    |       | 
| descrip | varchar(50) | YES  |     | NULL    |       | 
| g       | geometry    | YES  |     | NULL    |       | 
+---------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

Sử dụng câu lệnh ALTER TABLE để thêm hoặc xóa một cột không gian vào hoặc từ một bảng hiện có

ALTER TABLE geotest ADD pt_loca POINT; 
ALTER TABLE geotest DROP pt_loca ;

Loại điểm

Điểm là một hình học đại diện cho một vị trí duy nhất trong không gian tọa độ

Cách sử dụng điểm

Trên bản đồ thành phố, một đối tượng Điểm có thể đại diện cho một nhà ga

Thuộc tính điểm

  • Giá trị tọa độ X
  • Giá trị tọa độ Y
  • Điểm được định nghĩa là một hình học không chiều
  • Biên của một điểm là tập hợp rỗng

Thí dụ

MySQL> SELECT X(POINT(18, 23));
+------------------+
| X(POINT(18, 23)) |
+------------------+
|               18 | 
+------------------+
1 row in set (0.00 sec)


MySQL> SELECT X(GeomFromText('POINT(18 23)'));
+---------------------------------+
| X(GeomFromText('POINT(18 23)')) |
+---------------------------------+
|                              18 | 
+---------------------------------+
1 row in set (0.00 sec)

Loại đường cong

Đường cong là hình học một chiều, nói chung, nó được biểu diễn bằng một chuỗi các điểm. Các lớp con cụ thể của Curve xác định kiểu nội suy giữa các điểm. Đường cong là một lớp không thể xác định

Thuộc tính đường cong

  • Một đường cong có tọa độ của các điểm của nó
  • Đường cong được định nghĩa là hình học một chiều
  • Một đường cong là đơn giản nếu nó không đi qua cùng một điểm hai lần
  • Một đường cong được đóng nếu điểm đầu của nó bằng điểm cuối của nó
  • Ranh giới của một đường cong khép kín trống rỗng
  • Ranh giới của một Đường cong không khép kín bao gồm hai điểm cuối của nó
  • Đường cong đơn giản và khép kín là LinearRing

DòngChuỗi Loại

LineString là một Curve với nội suy tuyến tính giữa các điểm

Cách sử dụng LineString

Các đối tượng LineString có thể đại diện cho một dòng sông trong bản đồ quốc gia

Thuộc tính LineString

  • Một LineString có tọa độ của các phân đoạn, được xác định bởi từng cặp điểm liên tiếp
  • LineString là một Line nếu nó bao gồm chính xác hai điểm
  • Một LineString là một LinearRing nếu nó vừa đóng vừa đơn giản

Thí dụ

MySQL> SET @g = 'LINESTRING(0 0,1 2,2 4)';
Query OK, 0 rows affected (0.00 sec)
MySQL> INSERT INTO geotest VALUES (123,"Test Data",GeomFromText(@g));
Query OK, 1 row affected (0.00 sec)

Loại bề mặt

Surface là một hình học hai chiều. Nó là một lớp không thể xác định. Lớp con duy nhất có thể khởi tạo của nó là Đa giác

Thuộc tính bề mặt

  • Một Surface được định nghĩa là một hình học hai chiều
  • Đặc tả OpenGIS định nghĩa một Bề mặt đơn giản là một hình học bao gồm một "bản vá" duy nhất được liên kết với một ranh giới bên ngoài duy nhất và không có hoặc nhiều ranh giới bên trong
  • Ranh giới của một Surface đơn giản là tập hợp các đường cong khép kín tương ứng với ranh giới bên ngoài và bên trong của nó

Loại đa giác

Đa giác là một Bề mặt phẳng biểu thị hình học nhiều mặt. Nó được xác định bởi một ranh giới bên ngoài duy nhất và không có hoặc nhiều ranh giới bên trong, trong đó mỗi ranh giới bên trong xác định một lỗ trong Đa giác

Sử dụng đa giác

Các đối tượng Đa giác có thể đại diện cho các quận, khối, v.v. từ bản đồ trạng thái

Xác nhận đa giác

  • Ranh giới của một Đa giác bao gồm một tập hợp các đối tượng LinearRing (nghĩa là các đối tượng LineString vừa đơn giản vừa đóng) tạo nên các ranh giới bên ngoài và bên trong của nó
  • Đa giác không có vành nào cắt nhau. Các vòng trong ranh giới của Đa giác có thể cắt nhau tại một Điểm, nhưng chỉ như một tiếp tuyến
  • Đa giác không có đường thẳng, gai hoặc lỗ thủng
  • Một Đa giác có phần bên trong là một tập hợp điểm được kết nối
  • Một đa giác có thể có lỗ. Mặt ngoài của Đa giác có lỗ không được kết nối. Mỗi lỗ xác định một thành phần được kết nối của bên ngoài

Thí dụ

MySQL> SET @g = 'POLYGON((0 0,8 0,12 9,0 9,0 0),(5 3,4 5,7 9,3 7, 2 5))';
Query OK, 0 rows affected (0.00 sec)

MySQL> INSERT INTO geotest VALUES (123,"Test Data",GeomFromText(@g));
Query OK, 1 row affected (0.03 sec)

Loại bộ sưu tập hình học

GeometryCollection là một hình học là tập hợp của một hoặc nhiều hình học của bất kỳ lớp nào

Tất cả các phần tử trong GeometryCollection phải nằm trong cùng một Hệ quy chiếu không gian. Không có ràng buộc nào khác đối với các phần tử của GeometryCollection, mặc dù các lớp con của GeometryCollection được mô tả trong các phần sau có thể hạn chế tư cách thành viên. Các hạn chế có thể dựa trên

  • Loại phần tử (ví dụ: MultiPoint có thể chỉ chứa các phần tử Điểm)
  • Kích thước
  • Ràng buộc về mức độ chồng chéo không gian giữa các phần tử

Thí dụ

MySQL> SET @g ='GEOMETRYCOLLECTION(POINT(3 2),LINESTRING(0 0,1 3,2 5,3 5,4 7))';
Query OK, 0 rows affected (0.00 sec)

MySQL> INSERT INTO geotest VALUES (123,"Test Data",GeomFromText(@g));
Query OK, 1 row affected (0.00 sec)

Loại đa điểm

MultiPoint là một tập hợp hình học bao gồm các phần tử Điểm. Các điểm không được kết nối hoặc sắp xếp theo bất kỳ cách nào

Sử dụng MultiPoint

Trên bản đồ thế giới, một MultiPoint có thể đại diện cho một chuỗi các hòn đảo nhỏ

Thuộc tính đa điểm

  • MultiPoint là một hình học không chiều
  • Một MultiPoint là đơn giản nếu không có hai giá trị Điểm nào bằng nhau (có các giá trị tọa độ giống hệt nhau)
  • Ranh giới của MultiPoint là tập rỗng

Loại đa đường cong

MultiCurve là một tập hợp hình học bao gồm các phần tử Đường cong. MultiCurve là một lớp không thể hiện được

Thuộc tính đa đường cong

  • MultiCurve là hình học một chiều
  • MultiCurve là đơn giản khi và chỉ khi tất cả các phần tử của nó đều đơn giản;
  • Một ranh giới MultiCurve có được bằng cách áp dụng “quy tắc hợp mod 2” (còn được gọi là “quy tắc chẵn lẻ”). Một điểm là ranh giới của MultiCurve nếu nó nằm trong ranh giới của một số lẻ phần tử MultiCurve
  • MultiCurve bị đóng nếu tất cả các phần tử của nó bị đóng
  • Ranh giới của MultiCurve đã đóng luôn trống
MySQL> SET @g ='MULTIPOINT(0 0, 15 25, 45 65)';
Query OK, 0 rows affected (0.00 sec)

MySQL> INSERT INTO geotest VALUES (123,"Multipoint",GeomFromText(@g));
Query OK, 1 row affected (0.00 sec)

Loại MultiLineString

MultiLineString là một tập hợp hình học MultiCurve bao gồm các phần tử LineString

Cách sử dụng MultiLineString

  • Trên bản đồ khu vực, MultiLineString có thể biểu thị hệ thống sông hoặc hệ thống đường cao tốc

Thí dụ

________số 8_______

Loại đa bề mặt

MultiSurface là một tập hợp hình học bao gồm các phần tử bề mặt. MultiSurface là một lớp không thể xác định. Lớp con duy nhất có thể khởi tạo của nó là MultiPolygon

Làm cách nào để tìm các điểm có trong đa giác bằng MySQL?

Cách tìm các điểm trong đa giác bằng MySQL .
ST_Distance_Sphere để tính khoảng cách giữa hai điểm trên một hình cầu
Chỉ mục không gian cho InnoDB
Tích hợp GeoJSON, trích dẫn từ RFC, “một định dạng trao đổi dữ liệu không gian địa lý dựa trên JSON. ”

Điểm trong MySQL là gì?

MySQL có kiểu dữ liệu không gian POINT. Đó là loại đóng gói một cặp giá trị x và y để biểu thị tọa độ trong một số không gian . Bạn có thể tạo một bảng có một cột thuộc loại đó thông qua. TẠO BẢNG my_table (pt POINT); .

MySQL có hỗ trợ dữ liệu không gian không?

MySQL có các kiểu dữ liệu không gian tương ứng với các lớp OpenGIS . Cơ sở cho các loại này được mô tả trong Phần 11. 4. 2, “Mô hình Hình học OpenGIS”.

Không gian trong phpmyadmin là gì?

Không gian trong MySQL là cột có các loại dữ liệu sau. hình học, điểm,chuỗi dòng, đa giác, đa điểm, chuỗi nhiều dòng, đa giác, bộ sưu tập hình học .