I'm trying to implement maps service in my project. The project is focused to russian-speaking countries. But in future I hope to expand audience. The problem is that different services show different names.
OSM shows local names- for example Chinese towns are not clear for me. Google maps shows - user sees all names in the world in his native language: if a'm russian I can see all names in russian lunguage, including names of streets in USA for example. But Google maps costs a lot for me now.
How to solve the problem and what free/cheap services did you use? Сartography isn't the main feature in the project but important.
This isn't a full answer, but may be of some help. There are two ways of approaching the problem using OpenStreetMap data. 1. Russian names are sometimes provided: the tag is name:ru. However, there are very few of them. They're mostly for countries and major cities. For example, London has name:ru=Лондон. 2. But if you want everything which doesn't have a name:ru to appear in the Cyrillic alphabet, you'll have to transliterate from the most convenient source: the local name if it's in some easily transliterable script like Roman or Greek; or the English name (say) if not.
So, taking the second approach, the way I would do it would be to download the OSM data and pre-process it, inserting a transliterated name:ru where one did not exist, then render the map (using, for example, Mapnik, which is free), using a style sheet modified to use name:ru, where available, for all labels.
This, however, is an off-line solution. I realise that you probably want something on-line. Perhaps you could use Mapbox with on-line vector tiles, again pre-processed in some way before they are rendered.
Related
Background: I am building a website which crawls data from real-estate websites (a sample project) in hong kong. I crawl different websites, for various property listings. Hence I get a variety of locations formats from the raw crawled locations
Example:
few Samples of raw crawled locations:
North Point
8, Java Road, North Point, Hong Kong
Hong Kong Island , North Point
As can be seen from the above addresses, the same district in hong kong, that is North point can have many forms, few have been listed above. Issue is that this data doesnt make sense unless it is mapped/structured
Requirement:
I want some elegant solution, to be able to map these raw crawled locations to a pre-defined set of values. One way I can think of is, create a database of locations (I am using mysql), and find out the matching locationId for each crawled raw location.
If the above scheme sounds good, then my database would have fields like the below:
LOCATION_REF, country, state,city, locality, subLocality1, subLocality2, lat, long
Additional information: I am also using apache solr (lucene) to built this website, so any solr related matching suggestions are also welcome
Thoughts: I think there must be some predefined APIs to do things like this, because almost every app I see have location based searching and filtering. Is there a google api to do this? If yes, I would appreciate if anyone could help with good examples
PS: I use Jsoup to parse data from the pages (to extract raw location)
I have found out a way to do it, and Google geocoding anwers all the questions that I asked.
Google geocoding API maps the raw address format to its own format, gives structured data of the location based on the location hirarchy (example street number, neighbourhood, locality etc etc . This is what I needed
Here is the link for reference: https://developers.google.com/maps/documentation/geocoding/intro
A company has stores (lat/lng) located throughout the country, these are displayed using OSM. So far so good.
Now they have the requirement to assign areas/borders to their stores to define responsibilities. You can compare responsibility areas with those of post office (responsibility areas are determined and allocated by hand, it's not shortest distance). So if a customer is searching for a store (geolocation) the responsible/prefered one should get a special icon.
Is there a (gis) standard available to define/store areas/borders? Does OSM offer special functions to achieve this?
OSM doesn't offer anything for such tasks because OSM is mainly a database. But there are lots of applications and frameworks around OSM which can be very helpful.
Your question sounds like you want to visualize isochrones which is incidentally very similar to a question recently asked on gis.stackexchange.com about drawing isochrones on an OSM map. Does the solution(s) suggested for this question help you?
I'm building a series of infographics using Fusion Tables to show yearly data for countries, each nation represented by a pin on Google's map, the data values visible when you click on the nation's pin. I've got the contemporary values working perfectly, but:
My data goes back 80 years and I'd like to allow users to view historic data for non-existant countries like USSR, East / West Germany, etc.
Are there "archive" world maps that I can use when uploading historic data to Fusion Tables? (eg, world map for 1988, world map for 1934)
If not, I can simply use the contemporary map and select pin locations to approximate the old countries, but it wouldn't look so good. I'm neither sufficiently clever nor able to invest the time to create new world maps - I figure someone must have had this problem before now, but I can't find anything.
Any suggestions gratefully appreciated.
Best,
T.
If you can't find what you need on GeoCommons, this site provides a tutorial for creating your own GIS data sets from map imagery, if you're willing to put the work into it. It requires you to install ArcGIS Explorer (it's free, don't worry). There are numerous sources of historical map imagery that you could use, such as this one for Russia.
I would also back up geocodezip in that using KML is probably the easiest way to get a GIS data set onto a Google map, and a lot of GIS applications (like ArcGIS) support it.
You can overlay older maps on top of the Google Maps tiles. This is probably the easiest way to achieve what you are looking for.
See the overlays documentation
- https://developers.google.com/maps/documentation/javascript/overlays#GroundOverlays
Examples:
https://google-developers.appspot.com/maps/documentation/javascript/examples/groundoverlay-simple
Also there is a number of tools to help do this. I just did a simple search for Google Maps Tiles Overlay Generator.
- First one I found: http://www.maptiler.org/
you can use the styling parameters to theme the map to look a little older, probably removing labels for pois, roads etc.
I'm trying to develop a application that uses informations from google/bing maps, but I need the vertice data to recreate roads and I can't use images since I can't get road names and height info.
I need vertices/nodes of streets (with latitude,longitude,altitude, street name ) and no visual data.
Thanks.
Open Street Map is definitely the way to go for this - extracting vertex information from Bing/Google is both technically difficult, and a breach of the Terms of Use. OSM data is better quality in many cases and, more to the point, free to use under a CC-BY-SA licence.
You'll also probably need a spatial database in which to store the information. I've written a couple of articles about loading OSM data into SQL Server which you might find helpful. e.g.:
http://alastaira.wordpress.com/2011/04/15/loading-open-street-map-data-in-sql-server-part-ii-ways/
My client wants some of the functionality of Google maps namely:
- geocoding
- generating maps with points based on postal code or long.lat
- optimal trip mapping
Their issues with Google maps
- cannot control outages
- postal codes are sometimes inaccurate or not updated frequently for Canada/UK
- they have no way to correct inaccurate information
They would prefer to host the mapping application themselves, but will require postal code updates.
Can anyone suggest such a product?
thanks
"cannot control outages - postal codes are sometimes inaccurate or not updated frequently for Canada/UK - they have no way to correct inaccurate information"
Outages
hosting your own mapping is the only way to control this, but you would be very very hard pushed to beat Google Maps / Bing Maps uptime over the last 5 years. Take a look at the following:
OpenStreetMap for the road imagery data, this is open source data very good in the UK (Im not sure about canada) and you can make your own changes and submit them (or just change the data you have downloaded)
Geoserver, Mapnik or MapServer will read openstreetmapdata and create the image tiles needed to create your own maps in whatever style you wish. Depending on if you dont want all countries and all zoom levels these products can create all the tiles you will need in advance, but usually they have to be created in real time and cached. You need a BIG fast server to manage tile crunching
Openlayers or Leaflet are open source javascript mapping platforms that will display your tiles for you
Obviously this is just for road maps, aerial imagery would cost you an absolute fortune.
Post Code Data
Many people do not realize that UK postcode data for latitude and longitude is now completely free and available to download every quarter from the official source (ordinance survey) http://www.ordnancesurvey.co.uk/oswebsite/products/code-point-open/index.html.
This is the same data source Google will use and there is none better but it will always contain inaccuracies and always be a few months out of date.
Finally
Hopefully that answer the question you asked and gives you information to inform your client. Now for the question you didn't ask "Is this approach good value to my client?".
I won't presume to know your business or client, however what I described above is possible but with one to many months of work involved to get it all working together and even then it wont have any where near the performance or uptime of something like google /bing maps and only offers a small subset of their features.
I think you're looking for something like Caliper-It's a very custom, and I would expect expensive, solution. Not suggested.
http://www.caliper.com/GISMappingSoftwareDevelopment.htm
One solution could be to use two different mapping services and compare their results, this way there's a much better chance the data is accurate. You can also fix inaccurate data by creating a system which acts as a barrier between the API and your user, where data you know is inaccurate is corrected before it's displayed. Not sure exactly what you're doing though, so this might not work for you.
Is trip mapping/routing the basic functionality you want to do?
Before rushing into rolling your own, I'd suggest a good think about the consequences of doing so. The first that springs to mind is whilst the pros are that you can now control your data, the cons are that you now control your data.
So you are going to have to consider where and when you get updates and the processes you are going to have to employ to keep your maps in sync with the rest of the world. There are a lot of headaches involved in these things which is why so many people use externally hosted solutions such as Googles.