Hallo allerseits! Wir entwickeln
Okdesk , einen Cloud-basierten Helpdesk für den Kundendienst für B2B-Kunden. Zu den Anwendern unseres Produkts zählen die Zentralheizungs- und Automatisierungszentren für Registrierkassen, Integratoren für die Handelsautomatisierung, Dienstleistungen für den Betrieb von Einzelhandelsnetzwerken, Unternehmen für gewerbliche Immobilien und viele andere Dienstleistungsunternehmen. Die Besonderheiten des Dienstes in solchen Unternehmen sind ein großer Arbeitsaufwand "vor Ort": Arbeiten mit Geräten, Wartung der Infrastruktur, geplante Wartungsarbeiten - all dies erfordert die physische Anwesenheit eines Spezialisten in der Einrichtung. Dieser Umstand stellt eine Reihe zusätzlicher Anforderungen an die Helpdesk-Lösung: Die mobile Workstation des Ingenieurs und die Visualisierung der geplanten Arbeit auf der Karte mit der Anzeige der nächstgelegenen Mitarbeiter. Die mobile Okdesk-Anwendung für Ingenieure (für iOS und Android) ist vor langer Zeit erschienen und wird von uns aktiv weiterentwickelt. Aber die Anzeige von Anwendungen und den engsten Mitarbeitern auf der Karte haben wir neulich veröffentlicht.

Der Artikel wird sich jedoch nicht auf neue Funktionen konzentrieren - Interessenten können ein 14-tägiges kostenloses Testkonto auf der
Website einrichten und das System selbst kennenlernen. Es geht um die Auswahl von Mapping-Services für die Implementierung von Funktionen und darum, welche Produktanforderungen ihnen präsentiert werden sollten. Wenn für Ihr Projekt die Auswahl von Lösungen für kartografische Module relevant ist - willkommen bei cat.
Probleme und Entscheidungsauswahlkriterien
Was wollen wir also? Wir möchten die Adresse an den Kartendienst übertragen und diese Adresse auf der Karte anzeigen lassen. Aber so funktioniert es nicht. Auf der Karte können nur Koordinaten angezeigt werden. Sie müssen also zuerst die Zeichenfolgendarstellung der Adresse in der Koordinate übersetzen. Im GIS-Jargon wird dies als "Geokodierung" bezeichnet.
Wie kann man das machen? Hier sollte ein kleiner Exkurs gemacht werden. Tatsache ist, dass in den Besonderheiten des Dienstes b2b Dienstanforderungen an voreingestellte Adressen (Dienstobjekte) gebunden sind. Eine Anwendung kann keine beliebige und bisher unbekannte Adresse haben. Alle Adressen werden bei Abschluss eines Servicevertrags festgelegt, und das Hinzufügen neuer Adressen erfolgt bei neuen Anforderungen nicht plötzlich. Daher könnte die Option für uns geeignet sein, wenn der Administrator bei der Eingabe der Adresse in die Datenbank die Koordinaten der entsprechenden Struktur auf öffentlichen Yandex-Karten überprüft und diese manuell in die Karte des Serviceobjekts eingibt:

Dieser Ansatz hat uns jedoch nicht begeistert - der Benutzer würde sich unwohl fühlen (obwohl es in unserem Fall, wie ich wiederhole, eine einmalige Operation wäre, wenn das Serviceobjekt in das System eingefügt würde). Und wir haben uns entschlossen, nach einer Möglichkeit zu suchen, die Koordinaten an der Adresse automatisch einzugeben. Es gibt solche Dienste, es bleibt nur zu wählen. Und dafür müssen Sie die Auswahlkriterien festlegen. Wir gingen von folgenden Anforderungen aus:
- Die Geokodierung sollte an den Adressen Russlands und der russischsprachigen Ex-UdSSR (dem heutigen Hauptmarkt für Okdesk) funktionieren. Es wäre ideal, einen einzigen Geokodierungsdienst zu finden, der auf der ganzen Welt gut funktioniert. Mit Blick auf die Zukunft werde ich jedoch sagen, dass wir ihn nicht gefunden haben.
- Die Geokodierung sollte die Möglichkeit bieten, Koordinaten ohne Einschränkungen in unserer Datenbank zu speichern. Wir möchten nicht jedes Mal eine Geokodierung durchführen, wenn wir diese Adresse auf der Karte anzeigen müssen (diese Anforderung mag seltsam erscheinen, aber nicht alle Dienste erlauben dies).
- Angemessene Kosten und Nutzungsbedingungen (Geokodierung ist eine der Zusatzfunktionen von Okdesk, und wir sind heute nicht bereit, Hunderttausende Rubel pro Jahr dafür zu zahlen).
- Die Geokodierung sollte bei der Eingabe einer Adresse Vorschläge enthalten (wenn ein Benutzer Adresszeichen eingibt, werden dem Benutzer dynamisch Auswahloptionen angeboten, die den eingegebenen Zeichen entsprechen):

Wenn die Adresskoordinaten bereits bekannt sind, können sie auf der Karte angezeigt werden. Wir hatten die Mindestanforderungen für einen Kartendienst):
- Die Relevanz von Informationen auf der Karte;
- Angemessene Kosten und Nutzungsbedingungen.
Also haben wir entschieden, welche Tools wir benötigen und nach welchen Kriterien wir sie auswählen werden. Es ist also Zeit, die verfügbaren Dienste zu analysieren und die geeignete Konfiguration zur Lösung des Problems auszuwählen.
Kandidaten
Um eine Lösung auszuwählen, haben wir eine Liste potenzieller Kandidaten identifiziert. Sie wurden:
- Service dadata.ru (Geokodierung);
- Geoservices 2GIS (Geokodierung und Karten);
- Google Geo-Dienste (Geokodierung und Karten);
- Yandex-Geodienste (Geokodierung und Karten);
- Dienste des OpenStreetMaps-Projekts (Geokodierung und Karten).
Geokodierungsauswahl
Dadata.ru
Dadata.ru bietet viele nützliche Dienste für die Arbeit mit Daten. In unserem Fall handelt es sich um den Service
"Tipps an der Adresse". Dadata hat viele Vorteile. Tipps funktionieren „out of the box“ und sind technisch in Produkte von Drittanbietern integriert. Nicht nur Koordinaten, sondern auch andere Informationen werden an die Adresse zurückgegeben (in unserem Fall ist dies nicht relevant, kann aber für jemanden nützlich sein). Die Daten sind "frisch" und können zu Hause gespeichert werden. Es gibt einen kostenlosen Tarif, der auf 10.000 Anfragen pro Tag begrenzt ist, aber der bezahlte Tarif hat mehr als einen erschwinglichen Preis (von 7.000 Rubel pro Jahr für Organisationen und 5.000 Rubel pro Jahr für Einzelpersonen).
Aber es gibt ein Minus: Der Dienst funktioniert nur an russischen Adressen.
Geoservices 2GIS
2GIS verfügt über eine große Anzahl von Referenz-Geodiensten, und die Geokodierung ist eine davon. Nach offiziellen Angaben sind Geodienste in 370 Städten in 9 Ländern der Welt tätig. Dies ergibt eine gute (aber schlechtere als Dadata) Abdeckung für Russland (wir haben selektiv nachgesehen - in Städten mit 100.000 Einwohnern ist alles in Ordnung, aber in kleineren Städten - mit 50.000 Einwohnern gibt es häufiger nur Details auf der Straße) und eine eher schwache Abdeckung für andere Länder der russischsprachigen Ex-UdSSR (zum Beispiel fehlt die relativ große kasachische Stadt Ekibastuz mit mehr als 130.000 Einwohnern im 2GIS-Verzeichnis). Außerhalb der Ex-UdSSR ist der Dienst punktuell.
Es gibt erhebliche Nachteile. Erstens ist das Speichern empfangener Daten verboten. Das heißt, Zeigen Sie bei Bedarf die Adresse auf der Karte an. Sie müssen eine Koordinatenanfrage stellen. Es gibt auch keinen kostenlosen Tarif im Service: Das Mindestpaket kostet 5000 Rubel pro Monat und enthält 5000 Anfragen an die Geokodierungs-API (d. H. Für einen Rubel pro Anfrage). Mit zunehmender Anzahl von Anfragen sinken die Kosten pro 1 Anfrage. Wenn Sie beispielsweise mehr als 5.000.000 Anfragen pro Monat stellen, sinken die Kosten für eine Anfrage auf 5 Kopeken. Interessanterweise wird eine Anfrage als Anfrage nach Hinweisen bei der Eingabe einer Adresse und als Anfrage nach den Koordinaten einer Adresse bei der Auswahl aus Hinweisen betrachtet (d. H. Die Mindestanzahl von Anfragen zum Erhalten von Koordinaten an einer Adresse beträgt 2 Stück). In Verbindung mit der Tatsache, dass Geokodierungsdaten nicht zu Hause gespeichert werden können und Sie jedes Mal, wenn Sie ein Objekt auf der Karte zeichnen, eine Geokodierungsanforderung stellen müssen, führt die Verwendung der Geokodierung von 2GIS in unserem Fall zu einer erheblichen Menge.
Ja, außerdem gibt es eine „Eintrittsgebühr“ - eine einmalige Gebühr von 15.000 Rubel beim Anschließen. Es sieht aus wie eine Art Unheil :)
(Informationen über die Kosten sind für das erste Halbjahr 2019 relevant, aber ich denke nicht, dass sich seit unserem Eintauchen in die Möglichkeiten und Bedingungen des Dienstes alles dramatisch geändert hat).
Google Geo Services
Google Geo-Dienste werden unter der Marke
Google Maps Platform zusammengeführt. Unter ihnen gibt es auch Geokodierung mit Hinweisen. Die Site behauptet, in 99% der Adressen unseres Planeten abgedeckt zu sein. Wir haben nicht 99% überprüft, sondern nur Russland. Und ich sage Ihnen, die Qualität und Relevanz der Daten zu Russland lässt zu wünschen übrig. Zum Beispiel existiert laut Google die Wohnanlage, in der ich wohne, nicht (Moskau, mehr als 10 Millionen Einwohner), obwohl die ersten Häuser vor mehr als 3 Jahren in Betrieb genommen wurden. Aber der „Wohnkomplex“, in dem ich geboren und aufgewachsen bin (Penza, mehr als 500.000 Einwohner), existiert immer noch, obwohl er in Wirklichkeit bereits seit 4 Jahren zum Abriss geschickt wurde. Als kleine Ausrede für die Google Maps-Plattform können Sie hinzufügen, dass die Daten in den Panoramen viel relevanter sind - sie haben mein aktuelles Zuhause und mein "Eltern" -Haus sieht folgendermaßen aus:

Dies könnte die Überprüfung der Geokodierung von Google beenden - mit der beschriebenen Abdeckung und Relevanz ist sie für unsere Zwecke nicht anwendbar. Aber um ehrlich zu sein, haben wir das Studium des Dienstes am anderen Ende begonnen: mit Bedingungen und Preisen. Deshalb werden wir trotzdem darüber schreiben.
Die Bedingungen sind also ziemlich menschlich. Alle Anfragen werden in Rechnung gestellt: 4 bis 5 US-Dollar pro 1000 Geokodierungsanfragen, und Trinkgelder werden separat in Rechnung gestellt - 2,83 US-Dollar pro 1000 Anfragen. Darüber hinaus belastet Google das Konto monatlich mit 200 virtuellen Dollar, mit denen Plattformdienste bezahlt werden können.
Mit Google können Sie die Ergebnisse der Geokodierung sogar zu Hause speichern. Sie können sie jedoch nur auf einer Karte anzeigen, wenn es sich bei dieser Karte um Google Maps handelt, wie im ersten Abschnitt des Dokuments mit den
Geokodierungs-API-Richtlinien ausdrücklich angegeben:
Anzeigen der Geokodierungs-API-Ergebnisse
Sie können Geocoding API-Ergebnisse auf einer Google Map oder ohne Karte anzeigen. Wenn Sie Geocoding-API-Ergebnisse auf einer Karte anzeigen möchten, müssen diese Ergebnisse auf einer Google Map angezeigt werden. Es ist verboten, Geokodierungs-API-Daten auf einer Karte zu verwenden, die keine Google-Karte ist.
Es ist schade, dass nicht alle Kollegen, die gerade die Entscheidung lesen, rechtliche Informationen lesen. Mit diesem Ansatz können Sie Ihre Kunden problemlos ersetzen und ihnen die Möglichkeit geben, Geokodierungsergebnisse von Google zu erhalten, Objekte jedoch beispielsweise in OpenStreetMaps anzuzeigen.
Yandex Geo-Dienste
Der Yandex-Dienst für die Geokodierung heißt
Geocoder . Hervorragende Abdeckung in Russland - es gibt Adressen auch für Siedlungen mit ein paar tausend Einwohnern. Für Länder der russischsprachigen Ex-UdSSR ist die Abdeckung nicht schlechter. Die globale Abdeckung ist symbolisch. Die Relevanz der Daten ist hoch.
Im Allgemeinen wäre alles großartig, wenn es nicht die Nutzungsbedingungen für kommerzielle Projekte gäbe (für nichtkommerzielle - kostenlos mit einer Reihe von Einschränkungen).
Die Nutzungsbedingungen für kommerzielle Projekte lauten wie folgt. Die Mindestkosten betragen 120.000 Rubel pro Jahr, und bei dieser Rate beträgt das tägliche Limit 1.000 Anfragen. Mit zunehmender Anzahl täglicher Anfragen sinken die Kosten pro 1 Anfrage. Im Allgemeinen sind die Kosten nicht schockierend, wenn es keine geben würde, ABER: Wenn Sie Geokodierungsdaten zu Hause behalten möchten, werden weitere 500.000 Rubel zu den Kosten des Jahrestarifs hinzugefügt (ich betone: nicht einmal, sondern jährlich). Infolgedessen beginnt die „Eintrittsschwelle“ für uns mit 620.000 Rubel pro Jahr mit einem Limit von 1000 Anfragen pro Tag. Solche Sachen.
Geo Services OpenStreetMaps
OpenStreetMaps (OSM) ist ein gemeinnütziges Web-Mapping-Projekt, das darauf abzielt, eine detaillierte kostenlose und kostenlose geografische Weltkarte für die Community der Teilnehmer - Internetnutzer - zu erstellen. (c) Wikipedia.
OSM hat einen Geokodierungsdienst namens
Nominatim . Die Daten werden "von der ganzen Welt" gepflegt und aktualisiert. Im Allgemeinen sind die Daten relevant, aber die Abdeckung ist nicht tiefgreifend - in Russland in Städten mit 20 bis 30.000 Einwohnern sind Angaben zur Hausnummer häufig nicht verfügbar.
Nutzungsbedingungen - kostenlos. Daten können zu Hause gespeichert werden, Daten können auf jede legale Weise verwendet werden. Im Allgemeinen ist es als Hilfsquelle für die Geokodierung ausreichend! (Spoiler: Wir haben uns entschieden, es in diesem Status zu verwenden).
Geokodierungs-Pivot-Tabelle
Und jetzt ist alles gleich, aber kurz in der Tabelle:
Wahl des Kartendienstes
Etwas höher haben wir die Vor- und Nachteile verschiedener Geokodierungen untersucht. Bei der Auswahl der Karten haben wir uns von der Tatsache leiten lassen, dass die Karten relevant sein sollten, die Abdeckung gut ist und die Kosten und Nutzungsbedingungen - Heben -. Da die Relevanz und Abdeckung von Karten vollständig der Relevanz der Geokodierung entspricht (und es keinen Sinn macht, diese Informationen zu duplizieren), konzentrieren wir uns in der Übersicht der Karten nur auf Kosten und Bedingungen.
2GIS Karte
Die Bedingungen für die Verwendung von Karten aus 2GIS sind recht loyal. Die Abrechnung basiert nicht auf der Anzahl der Anfragen / Renderings der Karte, sondern zu festen Kosten. Die Kosten bestehen aus einer „Eintrittsgebühr“ - einer einmaligen Gebühr von 15.000 Rubel - und einer jährlichen Abonnementgebühr von 60.000 Rubel.
Google Maps
Wie bei der Geokodierung basiert die Verwendung von Karten von Google auf der Anzahl der Anfragen (Anfrage = Kartenanzeige). Die Kosten für die Anfrage hängen jedoch davon ab, welche Karte Sie wo anzeigen möchten.
Wenn Sie beispielsweise eine statische Karte mit den angegebenen Merkmalen und Beschriftungen anzeigen müssen (d. H. Wenn Sie eine Karte anfordern, gibt Google ein Bild des angegebenen Stücks mit den angegebenen Beschriftungen zurück), kostet dies 2 USD pro 1000 Anfragen. Wenn Sie das gleiche Format für Anwendungen auf Android verwenden - kostenlos. Für mobile Anwendungen sind Google Maps übrigens weitgehend kostenlos. Aber schmeicheln Sie sich nicht - Google kann die Nutzungsbedingungen jederzeit einseitig ändern. Beispielsweise erhöhte Google 2018 die Kosten für die Verwendung von Karten in der Weboberfläche um das 14-fache.
Für unsere Nutzungsszenarien (dynamische Karten in der Weboberfläche) betragen die Kosten pro 1000 Kartenimpressionen 7 USD. Wenn die Anzahl der Impressionen von 100.000.000 (einhundert Millionen) pro Monat überschritten wird, "fallen" die Kosten auf 5,6 USD pro 1000 Impressionen.
Da das "persönliche Konto" des Unternehmens für alle Google Maps Platform-Dienste gleich ist, können Sie für die Verwendung von Google-Karten mit denselben virtuellen 200 US-Dollar bezahlen, die Google Ihrem Konto jeden Monat in Rechnung stellt.
Yandex-Karten
Wenn Sie ein kostenloses Projekt haben, für den Zugriff auf Karten keine Registrierung der Benutzer im Projekt erforderlich ist und Sie weniger als 25.000 Anrufe pro Tag an Karten tätigen, können Sie Yandex.Maps kostenlos verwenden. Andernfalls steht Ihrem Projekt nur eine kommerzielle Nutzung zur Verfügung. Die Anfrage an den Geocoder, die an die Karten - wird gleich berechnet. Das Jahresabonnement beginnt bei 120 000 Rubel pro Jahr (1000 Anfragen pro Tag sind enthalten, 120 Rubel für jede weiteren 1000 Anfragen, die das Tageslimit überschreiten). Die Anzahl der Anfragen nach Geocoder und Karten ist allgemein.
Und wenn Sie die Ergebnisse von Anfragen zu Hause behalten möchten, müssen Sie zusätzlich über 500.000 Rubel pro Jahr bezahlen.
Straßenkarten öffnen
Ich werde mich kurz fassen: frei und frei. Aber es gibt eine Nuance - manchmal verlangsamen sich Karten in Russland.
upd: Es gibt noch eine Nuance: Wenn Sie OSM-Onlinedienste verwenden (und diese nicht auf Ihren Servern bereitstellen), gibt es informelle Einschränkungen, die im Wortlaut ausgedrückt werden:
Starke Nutzung (z. B. das Verteilen einer App, die Kacheln von openstreetmap.org verwendet) ist ohne vorherige Genehmigung der Systemadministratoren verboten. Alternativen finden Sie weiter unten.
Das heißt, OSM-Dienste eignen sich nicht für große Projekte mit intensiver Nutzung der Karte. Sie können sie jedoch auf Ihren Servern bereitstellen und ohne Einschränkungen verwenden.
Übersichtstabelle
Was haben wir gewählt?
Geokodierung
Für die Geokodierung haben wir eine Hybridlösung aus dem Dadata.ru-Dienst und dem Nominatim-Dienst aus OpenStreetMaps ausgewählt. Die Geokodierung funktioniert wie folgt.
Wenn Sie die Adresse eingeben, zeigt der Benutzer Eingabeaufforderungen vom Dadata.ru-Dienst an. Wenn die Eingabeaufforderungen das enthalten, wonach der Benutzer gesucht hat, klickt er auf die Eingabeaufforderung, die ausgewählte Adresse wird auf der Karte angezeigt und die Koordinaten werden unter der Textdarstellung der Adresse angezeigt (von Dadata.ru empfangen).
Youtube Video .
Wenn die vom Benutzer im Dadata.ru-Dienst eingegebene Adresse nicht vorhanden ist, kann der Benutzer die Eingabetaste drücken, und die Anforderung der Adresse wird an den Nominatim-Dienst gesendet. Wenn die Adresse in den Suchergebnissen gefunden wird, klickt der Benutzer auf die Adresse, die Adresse wird auf der Karte angezeigt und die Koordinaten werden unter der Zeichenfolgendarstellung der Adresse angezeigt.
Youtube Video .
Und schließlich, wenn die Adresse weder in Dadata.ru noch in Nominatim gefunden wird, kann der Benutzer einfach einen Punkt auf der Karte nehmen und angeben - und die Koordinaten des angegebenen Punkts werden zur eingegebenen Zeichenfolgendarstellung der Adresse hinzugefügt.
Youtube Video .
Karten
Ich werde mich kurz fassen. Wir haben uns für OpenStreetMaps entschieden. Es gibt viele Pluspunkte, es gibt keine signifikanten Minuspunkte.
Bonusvideo: Wie Karten in Okdesk funktionieren
In diesem Video können Sie jedoch sehen, wie die Anzeige von Anwendungen auf der Karte mit der Zuweisung der Verantwortung an den nächsten Mitarbeiter in Okdesk funktioniert:
Registrieren Sie übrigens ein Testkonto
auf der Website und testen Sie es 14 Tage lang kostenlos.