Choosing a map service for the cloud Help Desk system. Options and pitfalls. Product side view

Hello! We are developing Okdesk , a cloud-based Helpdesk for after-sales service for b2b customers. Among the users of our product are central heating and automation centers for cash registers, integrators for trade automation, retail network operation services, companies serving commercial real estate and many other service companies. The specifics of the service in such companies is a large amount of work ā€œin the fieldsā€: work with equipment, maintenance of infrastructure, scheduled maintenance work ā€” all this requires the physical presence of a specialist at the facility. This circumstance imposes a number of additional requirements for the Helpdesk solution, namely: the engineerā€™s mobile workstation and visualization of the planned work on the map with the display of the closest employees. The Okdesk mobile application for engineers (for iOS and Android) appeared a long time ago and we continue to actively develop it. But the display of applications and the closest employees on the map we released the other day.



image



But the article will not focus on new functionality - those interested can get a 14-day free trial account on the site and get to know the system on their own. It will be about the choice of mapping services for the implementation of functionality and what product requirements should be presented to them. If for your project the task of choosing solutions for cartographic modules is relevant - welcome to cat.



Issues and decision selection criteria



So what do we want? We want to transfer the address to the map service, and get the display of this address on the map. But it doesnā€™t work like that. Only coordinates can be displayed on the map. So, you must first translate the string representation of the address in the coordinate. In GIS jargon, this is called "geocoding."



How to do it? A slight digression should be made here. The fact is that in the specifics of service b2b, service requests are tied to pre-fixed addresses (service objects). An application cannot have an arbitrary and previously unknown address. All addresses are fixed at the conclusion of a service contract, and the addition of new addresses does not occur suddenly in the process of new requests. Therefore, the option could be suitable for us, when the administrator, when entering the address into the database, looks at the coordinates of the corresponding structure on public Yandex maps and manually enters them into the card of the service object:







But this approach did not cause us enthusiasm - the user would be uncomfortable (although, I repeat, in our case it would be a one-time operation when entering the service object into the system). And we decided to look for a way to automatically fill in the coordinates at the address. There are such services, it remains only to choose. And for this it is necessary to set the selection criteria. We proceeded from the following requirements:







When the coordinates of the address are already known, it can be displayed on the map. We had the minimum requirements for a map service):





So, we decided what tools we need and by what criteria we will choose them. So, it's time to analyze the available services and choose the appropriate configuration to solve the problem.



Candidates



To select a solution, we identified a list of potential candidates. They became:



  1. Service dadata.ru (geocoding);
  2. Geoservices 2GIS (geocoding and maps);
  3. Google geo services (geocoding and maps);
  4. Yandex geo services (geocoding and maps);
  5. Services of the OpenStreetMaps project (geocoding and maps).


Geocoding selection



Dadata.ru



Dadata.ru has many useful services for working with data. In our case, we are talking about the service ā€œTips at the addressā€ . Dadata has many advantages. Tips work ā€œout of the boxā€ and are technically built into third-party products. Not only coordinates, but also other information is returned to the address (in our case this is not relevant, but it may be useful to someone). The data is ā€œfreshā€ and can be stored at home. There is a free tariff, which is limited to 10,000 requests per day, but the paid tariff has more than an affordable price (from 7,000 rubles per year for organizations and 5,000 rubles per year for individuals).



But there is one minus: the service works only at Russian addresses.



Geoservices 2GIS



2GIS has a large number of reference geoservices, and geocoding is one of them. According to official data, geo services operate in 370 cities in 9 countries of the world. This gives a good (but worse than Dadata) coverage for Russia (we selectively looked - in cities from 100k residents everything is fine, but in cities smaller - by 50k residents, more often there is detail only to the street) and a rather weak coverage for others countries of the Russian-speaking ex-USSR (for example, the relatively large Kazakhstan city of Ekibastuz with 130k + residents is missing in the 2GIS directory). Outside the ex-USSR, the service is pointwise.



There are significant disadvantages. Firstly, there is a ban on storing received data. Those. whenever necessary, display the address on the map, you will need to make a request for coordinates. Also, the service does not have a free tariff: the minimum package costs 5000 rubles per month and includes 5000 requests to the geocoding API (i.e., for a ruble per request). With an increase in the number of requests, the cost per 1 request decreases. For example, if you make over 5,000,000 requests per month, the cost of one request will drop to 5 kopecks. Interestingly, a request is considered to be a request for hints when entering an address, and a request for address coordinates when choosing from hints (i.e. the minimum number of requests to get coordinates at an address is 2 pieces). In conjunction with the fact that the geocoding data cannot be stored at home and every time you draw an object on the map, you need to make a request for geocoding, the use of geocoding from 2GIS will result in a significant amount in our case.



Yes, besides this there is also an ā€œentrance feeā€ - a one-time fee of 15,000 rubles when connecting. It looks like some kind of deceit :)



(Information about the cost is relevant for the first half of 2019, but I do not think that everything has changed dramatically since our immersion in the possibilities and conditions of the service).



Google Geo Services



Google geo services are merged under the Google Maps Platform brand. Among them there is also geocoding with hints. The site claims coverage in 99% of the addresses of our planet. We did not check 99%, but we checked only Russia. And, I tell you, the quality and relevance of data on Russia leaves much to be desired. For example, according to Google, the residential complex where I live does not exist (Moscow, more than 10 million inhabitants), although the first houses were commissioned more than 3 years ago. But the ā€œresidential complexā€ in which I was born and raised (Penza, more than 500k inhabitants) still exists, although in reality it has already been sent for demolition for 4 years. As a small excuse for the Google Maps Platform, you can add that the data in the panoramas is much more relevant - they have my current home and my ā€œparentā€ home looks like this:







This could be the end of Googleā€™s geocoding review - with the described coverage and relevance, it is not applicable for our purposes. But, to be honest, we started the study of the service from the other end: with conditions and prices. Therefore, we will write about them anyway.



So, the conditions are quite humane. All requests are billed: from 4 to 5 dollars per 1000 requests for geocoding, and tips are separately billed - 2.83 dollars per 1000 requests. In addition, Google monthly charges 200 virtual dollars to the account, which can be used to pay for platform services.



Google even allows you to save the results of geocoding at home. But you can only display them on a map if that map is Google Maps, as explicitly stated in the very first section of the Geocoding API Policies document:

Displaying Geocoding API results

You can display Geocoding API results on a Google Map, or without a map. If you want to display Geocoding API results on a map, then these results must be displayed on a Google Map. It is prohibited to use Geocoding API data on a map that is not a Google map.


It is a pity that not all colleagues in the process of choosing a solution read legal information. With this approach, you can easily substitute your customers, giving them the opportunity to receive geocoding results from Google, but display objects on, for example, OpenStreetMaps.



Yandex geo services



The Yandex service for geocoding is called Geocoder . Excellent coverage in Russia - there are addresses even for settlements with a couple of thousand inhabitants. For countries of the Russian-speaking ex-USSR, coverage is no worse. Global coverage is symbolic. The relevance of the data is high.



In general, everything would be great if it were not for the terms of use for commercial projects (for non-commercial ones - for free with a number of restrictions).



The terms of use for commercial projects are as follows. The minimum cost is 120,000 rubles per year, and at this rate the daily limit is 1,000 requests. With an increase in the number of daily requests, the cost per 1 request falls. In general, the cost is not shocking if there would not be one BUT: if you want to keep geocoding data at home, another 500,000 rubles will be added to the cost of the annual tariff (I emphasize: not once, but annually). As a result, the ā€œentry thresholdā€ for us begins with 620,000 rubles per year with a limit of 1000 requests per day. So it goes.



Geo Services OpenStreetMaps



OpenStreetMaps (OSM) is a non-profit web-mapping project for creating a detailed free and free geographical map of the world by the community of participants - Internet users. (c) Wikipedia.



OSM has a geocoding service called Nominatim . Data is maintained and updated "by the whole world." In general, the data is relevant, but the coverage is not deep - in Russia in cities with a population of 20-30 thousand people, detailing to the house number is often absent.



Terms of use - free. Data can be stored at home, data can be used in any legal way. In general, as an auxiliary source for geocoding - it will do! (spoiler: we decided to use it in this status).



Geocoding Pivot Table



And now everything is the same, but briefly in the table:

Dadata 2 GIS Google Yandex OSM
Tips there is there is there is there is Not
Coating Russia (very good). Russia (large and medium-sized cities), ex-USSR (large cities). Russia and the ex-USSR are mediocre and not relevant. Probably in the "developed countries" is good. Russia and ex-USSR (very good). The whole world, but for small cities often poor detail.
data usage It can be stored and used freely. You canā€™t store at home, but after receiving the data you can use it freely. You can store it on your own, but you can only display it on maps if it's Google Maps. + 500 000 rubles per year if you plan to keep data at home. Free
Cost There is a free tariff with wide borders, a paid tariff from 7000 rubles per year. 15,000 rubles one-time + from 5,000 rubles per month. $ 4-5 for 1000 requests. But within 200 $ / month so far (as of October 2019) for free. From 120 000 rubles per year + 500 000 rubles per year, if you plan to keep data at home. Is free


Choice of map service



A little higher, we examined the pros and cons of various geocoding. When choosing cards, we were guided by the fact that the cards should be relevant, the coverage is good and the cost and terms of use - lifting. Since the relevance and coverage of maps is fully consistent with the relevance of geocoding (and this information does not make sense to duplicate), in the overview of maps we dwell only on the cost and conditions.



2GIS Map



The conditions for using cards from 2GIS are quite loyal. Billing is not based on the number of requests / rendering of the card, but at a fixed cost. The cost consists of an ā€œentrance feeā€ - a one-time fee of 15,000 rubles - and an annual subscription fee of 60,000 rubles.



Google maps



As in the case of geocoding, the use of maps from Google is based on the number of requests (request = map display). But the cost of the request depends on which map you want to display and where.



For example, if you need to display a static map with the specified characteristics and labels (i.e., when you request a map, Google will return a picture of the given piece with the specified labels) - it will cost $ 2 per 1000 requests. If you use the same format for applications on Android - for free. By the way, for mobile applications Google maps are broadly free. But do not flatter yourself - Google may at any time change the terms of use unilaterally. For example, in 2018, Google raised the cost of using maps in the web interface by 14 times.



For our usage scenarios (dynamic maps in the web-interface), the cost per 1000 card impressions is $ 7. When exceeding the number of impressions of 100,000,000 (one hundred million) per month, the cost "falls" to $ 5.6 per 1000 impressions.



Since the companyā€™s ā€œpersonal account" is the same for all Google Maps Platform services, you can pay for the use of Google cards from the same virtual $ 200 that Google charges to your account every month.



Yandex maps



If you have a free project, access to maps does not require registration of users in the project, and you make less than 25,000 calls to cards per day, then you can use Yandex.Maps for free. Otherwise, only commercial use is available to your project. The request that to the geocoder, that to the cards - is charged the same. The annual subscription starts from 120 000 rubles per year (1000 requests per day are included, 120 rubles for each subsequent 1000 requests in excess of the daily limit). The limit of requests for geocoder and maps is general.



And if you want to keep the results of queries at home - you need to pay extra from above 500,000 rubles annually.



Open street maps



I will be brief: free and free. But there is a nuance - sometimes cards in Russia slow down.



upd: there is one more nuance - if you use OSM online services (and do not deploy them on your servers), there are informal restrictions that are expressed in the wording:

Heavy use (eg distributing an app that uses tiles from openstreetmap.org) is forbidden without prior permission from the System Administrators. See below for alternatives.


Those. OSM services are not suitable for large projects with intensive use of the map, but you can deploy them on your servers and use them without restrictions.



Summary table



2 GIS Google Yandex OSM
Relevance and coverage Russia (large and medium-sized cities), ex-USSR (large cities). Russia and ex-USSR coverage is mediocre and not relevant. Russia and ex-USSR (very good coverage and high relevance). The whole world, but for small cities often poor detail.
Cost and terms 15,000 rubles one-time + 60,000 rubles per year. $ 7 per 1000 requests. But within 200 $ / month so far (as of October 2019) for free. From 120 000 rubles per year (the price includes the use of geocoding, the total number of requests is + 500 000 rubles per year, if you plan to store data at home. Free and free.


What did we choose?



Geocoding



For geocoding, we chose a hybrid solution from the Dadata.ru service and the Nominatim service from OpenStreetMaps. Geocoding works as follows.



When you enter the address, the user displays prompts from the Dadata.ru service. If the prompts contain what the user was looking for, he clicks the prompt, the selected address is displayed on the map and the coordinates are displayed below the text representation of the address (received from Dadata.ru). Youtube video .



If the address entered by the user in the Dadata.ru service is missing, the user can press Enter - and the request for the address will go to the Nominatim service. If the address is found in the search results, the user clicks on the address, the address is displayed on the map, and the coordinates are displayed under the string representation of the address. Youtube video .



And finally, if the address is not found either in Dadata.ru or in Nominatim, the user can simply take and indicate a point on the map - and the coordinates of the specified point will be added to the entered string representation of the address. Youtube video .



Cards



I will be brief. We chose OpenStreetMaps. There are many pluses, there are no significant minuses.



Bonus video: how cards work in Okdesk



But in this video you can see how the display of applications on the map works with the assignment of responsibility to the nearest employee in Okdesk:





By the way, register a test account on the site and try for 14 days for free.



All Articles