Skip to content

A Rails application responding to airports, cities, countries, lakes, ports, regions and timezones searches with geospatial data. Uses fuzzy string matching, graphQL support

Notifications You must be signed in to change notification settings

heri/geo-db-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Geo Db API

A Rails application responding to airports, cities, countries, lakes, ports, regions and timezones searches with geospatial data. Uses fuzzy string matching, graphQL support

Response for request /airports?name=london:

[{"id":148,"coordinates_wkt":"POINT (-0.3762272673974393 51.8802952570969)","kind":"major","name":"London Luton","icao_code":"EGGW","iata_code":"LTN"},{"id":474,"coordinates_wkt":"POINT (-0.1629616391394559 51.155756751927456)","kind":"major","name":"London Gatwick","icao_code":"EGKK","iata_code":"LGW"},{"id":833,"coordinates_wkt":"POINT (-0.4531566520633094 51.47099587999384)","kind":"major","name":"London Heathrow","icao_code":"EGLL","iata_code":"LHR"},{"id":251,"coordinates_wkt":"POINT (-56.120177475472424 -15.651147019195495)","kind":"mid","name":"Marechal Rondon Int'l","icao_code":"SBCY","iata_code":"CGB"},{"id":208,"coordinates_wkt":"POINT (-99.94589590024634 49.904727941027694)","kind":"mid","name":"Brandon","icao_code":"CYBR","iata_code":"YBR"},{"id":230,"coordinates_wkt":"POINT (77.35078887791173 28.70779686010708)","kind":"mid","name":"Hindon Air Force Station","icao_code":"VIDX","iata_code":""},{"id":731,"coordinates_wkt":"POINT (96.13419461149468 16.90115428182508)","kind":"major","name":"Mingaladon","icao_code":"VYYY","iata_code":"RGN"},{"id":143,"coordinates_wkt":"POINT (-109.08269464526103 25.68850882609902)","kind":"mid","name":"Los Mochis","icao_code":"MMLM","iata_code":"LMM"},{"id":60,"coordinates_wkt":"POINT (-108.53692938812462 45.803685571527836)","kind":"major","name":"Logan Int'l","icao_code":"KBIL","iata_code":"BIL"},{"id":330,"coordinates_wkt":"POINT (1.25093205640014 6.16687362722297)","kind":"mid","name":"Lome Tokoin","icao_code":"DXXX","iata_code":"LFW"}]

It sends a list of aiports named london: london luton, london gatwick, london heathrow, as well less obvious airports such as Mingaladon which are similar.

Geospatial data such coordinates, sovereign country, formal name, economy level, iso_alpha2 code, iso_alpha3 code, iso_numeric3 code, continent and subregion are sent with each airport. Data is from the project https://github.com/delight-im/FreeGeoDB

Trigram models

The ability to find places such Mingaladon or Hindon uses fuzzy text matching, based on probabilistic language model https://en.wikipedia.org/wiki/N-gram

Installation

Clone:

$ git clone [email protected]:heri/geo-db-api.git

$ cd geo-db-api && bundle install

Update config/database.yml file to your database settings, and:

$ cd db && unzip data.yml.zip

Return to main dir when finished

$ cd ..

Add or delete api keys that you will give to users config/initializers/app_initializer.rb. If preferable, you can also delete the line to authorize requests without api keys

Launch server

$ rails server

Available requests

Prefixed with your app url:

/airports?name=..&api_key=..

/cities?name=..&api_key=..

/countries?name=..&api_key=..

/lakes?name=..&api_key=..

/ports?name=..&api_key=..

/regions?name=.&api_key=...

/timezone?name=..&api_key=..

You can also access queries with (limited) graphQL query

TODO

  • geo requests (POSTGIS). e.g. nearest airport with params lat, long
  • better graphQL support
  • front-end with openstreetmaps

Contributing

  1. Fork it ( http://github.com/heri/geo-db-api/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Contact

Heri

About

A Rails application responding to airports, cities, countries, lakes, ports, regions and timezones searches with geospatial data. Uses fuzzy string matching, graphQL support

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published