PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да проверите дали lat long е в границите на града

Може би това е пресилено, но ако използвате postgres можете да инсталирате postgis разширение за управление на пространствени данни. След това в сирб можете да направите нещо подобно:

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

Заявката проверява дали точката е в даденото bbox с помощта на функцията ST_contains

Това ще върне:

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

След това можете да направите:

result.first

Това ще върне:

{"st_contains"=>"t"}

С тази точка -0.7265, 44.483 (точка извън полето b) резултатът ще бъде:

{"st_contains"=>"f"}

Ако не искате да използвате необработен sql, можете да използвате скъпоценни камъни за управление на пространствени данни. Много добър е:rgeo . Препоръчвам да прочетете блога на създателя

Използване на rgeo можете да дефинирате атрибути за вашите модели с "геотипове" като точки, полигони и т.н. и след това да използвате функции като съдържа?

Оставям ви с същност с много основни инструкции за инсталиране на postgis с 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. PostgresQL SQL:Преобразуване на резултатите в масив

  2. Django формуляр за заявка към база данни (модели)

  3. Буфери (кръг) в PostGIS

  4. Как да инсталирате множество PostgreSQL сървъри на RedHat Linux

  5. Как да извлечем коментара на PostgreSQL база данни?