Upload
serge-tyatin
View
160
Download
0
Embed Size (px)
Citation preview
Datum WGS 84
Датум (лат. Datum) — набір параметрів, які використовуються для зміщення і
трансформації референц-еліпсоїду в локальні географічні координати.
SRID Spatial Reference System Identifier
SRID=4326;POINT(24.0267731 49.8386644)
SRID=3785;POINT(2674648.14689752 6418382.09688131)
Інструменти• PostGIS (http://postgis.net/) • gem ‘rgeo’ • gem 'activerecord-postgis-adapter’
gem ‘activerecord-postgis-adapter’
The activerecord-postgis-adapter provides access to features of the PostGIS geospatial database from
ActiveRecord
Мають починатися і закінчуватись поряд
SELECT FROM routes WHERE ST_DWithin( ?, routes.start, 500) AND ST_DWithin( ?, routes.end, 500)
float ST_HausdorffDistance(geometry g1, geometry g2);
SELECT * FROM ( SELECT ST_HausdorffDistance(routes.route, ? ) as distance, … FROM routes WHERE ST_DWithin( ?, routes.start, 500) AND ST_DWithin( ?, routes.end, 500)
) ORDER BY distance ASC LIMIT 1
Знайти маршрути для пассажира
start
finish
• Місце зустрічі/виходу близько • Де найкраще зустрітись/вийти • Напрямок має значення
Місце зустрічі/виходу близько
SELECT FROM routes WHERE ST_DWithin(routes.route, ?, 500 ) AND ST_DWithin(routes.route, ?, 500 )
Де найкраще зустрітись/вийти
SELECT ST_ClosestPoint(route, ?) as pickup_location,ST_ClosestPoint(route, ?) as drop_location, FROM routes WHERE ST_DWithin(routes.route, ?, 500 ) AND ST_DWithin(routes.route, ?, 500 )
Напрямок має значенняМаємо вибрати тільки ті маршрути які йдуть від
точки старт до точки фініш
float ST_LineLocatePoint(geometry a_linestring, geometry a_point);
Повертає значення між 0 та 1 яке визначає положення найближчої точки на лінії до заданої
точки
Напрямок має значення
SELECT ST_LineLocatePoint(route, ?) as pickup_float,ST_LineLocatePoint(route, ?) as drop_float, ST_ClosestPoint(route, ?) as pickup_location,ST_ClosestPoint(route, ?) as drop_location, FROM routes WHERE ST_DWithin(routes.route, ?, 500 ) AND ST_DWithin(routes.route, ?, 500 )