PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách kiểm tra xem vĩ độ dài có nằm trong giới hạn thành phố không

Có thể đây là mức quá mức cần thiết, nhưng nếu bạn đang sử dụng postgres bạn có thể cài đặt postgis phần mở rộng để quản lý dữ liệu không gian. Sau đó, trong irb bạn có thể làm điều gì đó như sau:

result = ActiveRecord::Base.connection.execute('SELECT
ST_Contains(ST_SetSRID(ST_MakeBox2D(ST_Point(-0.489, 51.28), ST_Point(0.236, 51.686)), 4326),
ST_SetSRID(ST_Point(-0.1265, 51.483), 4326))')

Truy vấn đang kiểm tra xem điểm có nằm trong bbox đã cho hay không bằng cách sử dụng hàm ST_contains

Điều này sẽ trả về:

=> #<PG::Result:0x007fa517fcbe08 @connection=#<PG::Connection:0x007fa5167f8970 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>>

Sau đó, bạn có thể làm:

result.first

Điều này sẽ trả về:

{"st_contains"=>"t"}

Với điểm này -0,7265, 44,483 (một điểm bên ngoài bbox) kết quả sẽ là:

{"st_contains"=>"f"}

Nếu bạn không muốn sử dụng sql thô, bạn có thể sử dụng đá quý để quản lý dữ liệu không gian. Một cái rất hay là: rgeo . Tôi khuyên bạn nên đọc blog của người sáng tạo

Sử dụng rgeo bạn có thể xác định các thuộc tính cho mô hình của mình bằng "geotypes" như điểm, đa giác, v.v. và sau đó sử dụng các hàm như contains?

Tôi để lại cho bạn một ý chính với hướng dẫn rất cơ bản để cài đặt postgis với ubuntu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chủ sở hữu cơ sở dữ liệu postgresql không thể truy cập cơ sở dữ liệu - Không tìm thấy quan hệ nào.

  2. Sự cố khi biên dịch chương trình với pqxx

  3. Symfony2 Doctrine - Điều khoản ILIKE cho PostgreSQL?

  4. SQLAlchemy, Decl Compare, PostgreSQL:không thể tạo bảng

  5. Làm thế nào để xác minh rằng một kho lưu trữ được tạo bởi kho lưu trữ pg_dump là OK và hợp lệ?