Free Open source Geocoder, geolocalisation and fulltext webservices (for geonames and openstreetmap data)
NEW :
Gisgraphy V2-beta is available : it provides an importer and webservice for openstreetmap, a worldwide opensource geocoder /reverse geocoder : see a
demo.
Gisgraphy Framework
Gisgraphy is a free and open source framework. Its goal is to provide tools to use free GIS Data on the Web via REST webservices. Actually it manage
Geonames and
OpenStreetMap (34 million entries). it provides an importer to inject the data into a strongly typed Postgres / Postgis database and use them via webservices : worldwide geocoding, worldwide reverse geocoding, fulltext and find nearby. Results can be output in XML, Atom, RSS, JSON, PHP, Ruby, and Python. Here are the main functionalities :
- Importers from geonames CSV files. Just give the country(ies) you wish to import and / or the placetypes, and Gisgraphy download the files and import them with all the alternateNames (optional), and sync the database with the fulltext search engine
- Importers for Openstreetmap data in csv format (view data)
- WorldWide geocoding / worldWide reverse geocoding / street search WebServices;
- REST WebService
- Several output formats supported : XML, json, PHP, ruby, python, Atom, RSS / GeoRSS
- Full text search (based on Lucene / Solr with default filters optimized for city search
(case insensitivity, separator characters stripping, ..) via an Java API or a webservice
- Findnearby function (with limits, pagination, restrict to a specific country and/or language and other useful options) via a Java API or a Web Service
- An admin / back office whith statistics interface
- Fully replicated / scalable / high performance / cached services
- Search for zipcode name, IATA, ICAO
- Internationalized (with support of cyrillique, arabic, chinese,... alphabet)
- Dojo widgets / prototype / Ajax to ease search but can be use it even if javascript is not enabled on the client side
- Opensearch module
- Plateform / language independent
- Provides all the countries flags in svg and png format
Examples
Geocoding / street webservices examples
Fulltext webservice examples
- Find cities, with population, gps positions, elevation, zipcode...that matchs 'paris france' with the translation in japanese, output in php, indented, with all the administrative division, paginate from 1 to 10 and without spellchecked suggestions :
http://services.gisgraphy.com/fulltext/fulltextsearch?q=paris+france&placetype=city&country=&spellchecking=false&lang=JA&format=PHP&style=FULL&indent=true&from=1&to=10
- Find cities that have zipcode=75000 in XML, paginate from 1 to 2 :
http://services.gisgraphy.com/fulltext/fulltextsearch?q=75000&placetype=&country=&lang=&format=XML&style=FULL&indent=true&from=1&to=2
- Hotels in new york, output in python :
http://services.gisgraphy.com/fulltext/fulltextsearch?q=hotel+new+york&placetype=&country=&spellchecking=true&lang=&format=PYTHON&style=FULL&indent=true&from=1&to=10
-
Airport that have ICAO code= LFPG :
http://services.gisgraphy.com/fulltext/search?q=LFPG&placetype=airport&country=&to=10&from=1&style=FULL
Geolocalisation webservice examples
A little bit of technical detail...
- Spring services / Hibernate mapping with a custom Hibernate dialect.
- Lucene schema.
- Uses PostgreSQL / PostGIS but will be soon compatible with other spatial providers (Oracle, MySQL,...).
- Build using Maven2.
- Automatic synchronisation between PostgreSQL and Solr.
- High test coverage.
- Event based design.
- UTF-8 used throughout.
- Gisgraphy has it's own Maven repository with all the dependencies.
- Designed with DSL (Domain Specific Language).
- Designed with the DDD paradigm.
What is Gisgraphy for?
- Find streets via a Web service a Java API
- Do worldwide geocoding and reverse geocoding
- Find places (city, lake, forest, country, stream, castle airport, more than 650 different features) via a web service or a Java API.
- Find city by zipcode
- Import Geonames features into a strongly typed database with error correction.
- Use Spring / Hibernate to manage places.
- Find places around a GPS point or an other place via a REST API or a Java API.
- Use Dojo widgets / prototype / JavaScript to ease search.
Some examples uses:
- I want to search the nearest street from a GPS point
- I want to search street in a city
- I want to find a street by name
- I want to know the Length and GPS position of a street
- I've got a project in an other language than Java and I want to offer a city full-text search, and open a popup if more than one result match is found.
- I've got a Java project and I need Spring DAO and services / Hibernate Mapping for geolocations
- I want to import all the features of Geonames for the United States and use them in Python.
- I want to get all of the zipcodes of Paris.
- I want to find all of the forests around Paris and their distances, within a radius of 10km in Spanish, ordered by distance.
- I want to find all of the cities that match 'Paris' and paginate from 1 to 1O with scoring.
- I want to find all of the lakes of Ireland in JSON format and limit the search to 5 results.
- I want to find the GPS position of London.
- I want to type 'lutece' or 'paname' and get Paris.
- I want to locate the results on a Google or Yahoo map.
- I want to search for the elevation of Madrid.
- I want to know what the flag of Argentina is.
- I want to find the administrative division of New york.
- I want to search for the city nearest to the GPS point lat=47.5/Long=5.
- I want to search for all of the monuments / restaurants and hotels around a given GPS position.
- I want to search the country for a specified GPS point.