PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara memeriksa apakah lat long berada di batas kota

Mungkin ini berlebihan, tetapi jika Anda menggunakan postgres Anda dapat menginstal postgis ekstensi untuk mengelola data spasial. Kemudian dalam irb Anda dapat melakukan sesuatu seperti ini:

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))')

Kueri memeriksa apakah titik berada di dalam bbox yang diberikan menggunakan fungsi ST_contains

Ini akan mengembalikan:

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

Kemudian Anda dapat melakukan:

result.first

Ini akan mengembalikan:

{"st_contains"=>"t"}

Dengan titik ini -0,7265, 44,483 (satu titik di luar bbox) hasilnya adalah:

{"st_contains"=>"f"}

Jika Anda tidak ingin menggunakan sql mentah, Anda dapat menggunakan permata untuk mengelola data spasial. Yang sangat bagus adalah:rgeo . Saya sarankan untuk membaca blog pembuatnya

Menggunakan rgeo Anda dapat menentukan atribut untuk model Anda dengan "geotipe" seperti titik, poligon, dll. dan kemudian menggunakan fungsi seperti berisi?

Saya meninggalkan Anda dengan inti dengan instruksi yang sangat mendasar untuk menginstal postgis dengan 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. Apa yang dapat menyebabkan idle dalam transaksi untuk pernyataan BEGIN

  2. Bagaimana cara saya melemparkan string ke integer dan memiliki 0 jika terjadi kesalahan dalam pemeran dengan PostgreSQL?

  3. KESALAHAN:lebih dari satu baris yang dikembalikan oleh subquery yang digunakan sebagai ekspresi

  4. PostgreSQL GABUNG dengan tipe array dengan urutan elemen array, bagaimana cara mengimplementasikannya?

  5. Bagaimana cara menghapus atau membuat database dari clojure.java.jdbc?