КиберФлит: Подключаем карту Google - CyberFleet Работа с программой - CyberFleet, CrossPoint - Статьи - Эффективная навигация с М2М
27.03.2017
Эффективная Навигация М2М
Меню сайта
Категории раздела
CyberFleet Скрипты для работы [10]
Приводятся разлинчые скрипты для работы с данной программой.
CyberFleet Работа с программой [24]
Методика работы, принципы, описание
Анализитор CF [13]
Скрипты анализа CyberFleet на наличие ошибок
Форма входа
Вход через Google
Вход через Вконтакте
Вход через Facebook
Партнеры
Реклама

КиберФлит: Подключаем карту Google
 
Внимание! Все действия выполняете на свой страх и риск. Перед выполнением операций желательно снять копию с базы данных [GisDbMain], дабы иметь возможность восстановить все как было в случае нерабочей системы. Остальные частей статья вроде как не касается, но архивная копия всего тоже не повредит.

И так, имею КиберФлит версии 1.17.1.5 с установленным движком картографии М2М 1.1.4185

После установки обновления я подключил по прилагаемой к движку инструкции карты OSM, и теперь хочется иметь и карты google map.
 
Для этого пришлось разобраться с тем, что из себя представляет база данных GisDbMain, что появилась при установки обновления 1.17.1.3
И так, разборку я начал с того, как именно подключена карта OSM. В КиберФлите для нее зарегистрирована примерно такая строка подключения:
mapId=2;isGrayscale=false;compressImage=false;imageFormat=png
 
оказывается, mapId показывает на номер карты, зарегистрированной в таблице [GisDbMain].[dbo].[Map] с Id=2
т.е. указав mapId=мой_номер я смогу подключить свою карту, но надо ее зарегистрировать сначала в списке карт (insert into [GisDbMain].[dbo].[Map])
Что же из себя представляет запись о карте? - а вот тут информации не много - только какие-то координаты (видно границы для карты какие-то), и совсем не понятно, как идет связь с движком... 
Поискав немного в таблицах, я наткнулся на [GisDbMain].[dbo].[Map_BaseMap]... и там три колонки...
[MapID] ,[BaseMapID], [Priority]
ага, подумал я, видно тут идет какая-то связь между картами что в  [GisDbMain].[dbo].[Map] и движком...
и если MapId отвечает за номер карты, то [BaseMapID] за??? ну правильно, рядом оказалась таблица [GisDbMain].[dbo].[BaseMap] с довольно интересным реквизитом [InitializationData]
' <TileRenderer>   <copyright>(c) пользователи OpenStreetMap, CC-BY-SA</copyright>   <urlTemplates>     <urlTemplate>http://tile.openstreetmap.org/{ZOOM}/{XTILE}/{YTILE}.png</urlTemplate>   </urlTemplates>   <tileCacheFolder>C:\GisPlatform\Server\TileCache\OSM Mapnik</tileCacheFolder>   <tileSize width="256" height="256" />   <zoom min="3" max="18" /> </TileRenderer>'
ха! да это же родной xml, с указанием адреса сервера в реквизите urlTemplate, который возвращает карту в "картинках" (тайлы - умное слово означает просто картинки-нарезки карты).
Почитав описание на osm о тайлах и api, пришел к выводу, что {ZOOM} - это зум карты, {XTILE}, {YTILE} - номера тайлов.
Значит, найдя в интернете сервер, который подобным же образом выдаст мне информацию, я получу новую карту у себя в КиберФлите.
 
Ну так ведь у гугула есть сервер тайлов! Ура!!! 
Покопавшись на просторах интернета я нашел адрес сервера, и присмотрел api работы с ним... вот и пример
получается, все что мне требуется, это в нужные места подставить {ZOOM},{XTILE},{YTILE}
подправить каталог для кеша <tileCacheFolder>C:\GisPlatform\Server\TileCache\Google1</tileCacheFolder>
ну и копирайты за компанию..., занести данные в [GisDbMain].[dbo].[BaseMap]  и [GisDbMain].[dbo].[Map], связать данные через [GisDbMain].[dbo].[Map_BaseMap], и тогда можно будет регистрировать свою карту, подсмотрев ее id в [GisDbMain].[dbo].[Map]
 
И так, сначала копируем данные карты осм в новую карту:, а так же регистрируем движок гугла тоже скопировав его с осм-кого
 
см. скрипт 1 из сообщения
 
скрипт напечатал мне номер id=7 (basemap)
ага. значит запись о базовой карте в basemap именно 7
теперь добавляем так же карту в таблицу [GisDbMain].[dbo].[Map]
 
см. скрипт 2 из сообщения
 
Скрипт аналогичен предыдущему.
id карты 9 (map) - именно это нужно указывать при подключении карты в киберфлите
 
и последний штрих, привязываем таблицу друг к другу см. скрипт 3 из сообщения
 
добавил запись о карте во флит...
 
mapId=9;isGrayscale=false;compressImage=false;imageFormat=png
....
перезапустил флита и гиссервер....
вздохнул.... и попытался посмотреть на карте... не взлетело....
первая версия инструкций для гиссервера выглядела так (не верный вариант)
 
'   <TileRenderer>    <copyright>(c) Google</copyright>    <urlTemplates>      <urlTemplate>http://mt.google.com/vt?x={XTILE}&y={YTILE}&z={ZOOM}&hl=ru</urlTemplate>    </urlTemplates>    <tileCacheFolder>C:\GisPlatform\Server\TileCache\Google1</tileCacheFolder>    <tileSize width="256" height="256" />    <zoom min="1" max="18" /></TileRenderer>'
но запускаться не желала.
оказывается, было две ошибки:
1. забыл создать каталог для кеша... ну создал, перезапустил флит и службу гиссервера - сообразил сам. все одно не работало.
2. покопавшись в настройках движка, и включив логирование, почесал голову, и сообразил, что ругается еще движок на знак амперсанда... стоп... это я уже видел! точно!!! в xml амперсанд должен передаваться не как "&" а как "&amp;"
произведя замену я получил:
 
  <TileRenderer>    <copyright>(c) Google</copyright>    <urlTemplates>      <urlTemplate>http://mt.google.com/vt?x={XTILE}&amp;y={YTILE}&amp;z={ZOOM}&amp;hl=ru</urlTemplate>    </urlTemplates>    <tileCacheFolder>C:\GisPlatform\Server\TileCache\Google1</tileCacheFolder>    <tileSize width="256" height="256" />    <zoom min="1" max="18" /></TileRenderer>'
 
Скрипт для замены см. скрипт 4 из сообщения
 
 
перезапустил гиссервер, флита, затаив дыхание выбрал карту.... и, о чудо,  оно заработало!

Как показал опыт, движок м2м несколько медлительнее в работе (наверное требуется его более тонкая настройка) и требует больше ресурсов при работе.
Так же периодически, по не понятным лично мне причинам он переставал отвечать на запросы.
Все тесты производились на виртуальной машине.
Из опыта, движок тайлов OSM достаточно медлителен, потому могут быть приличные паузы при заполнении кеша - работа с кешам на нормальном уровне.
Гугл работает несколько быстрее при начальном получении данных.
будем надеяться, что все эти "детские" болезни со временем будут полностью решены.
На данный момент релиз КиберФлита 1.17.1.5 является релизным (рекомендуется к установке клиентам).
Возможно, найденный путь подойдет и для 1.17.1.3 - не пробовал.
 
PS: На данный момент (18/01/2013) движок переработан, многие проблемы устранены. Скорость его работы вполне на уровне.
 
 
Так же читайте статьи:
 




Источник: CyberFleet, карты, google, OpenStreetMap
Похожие материалы
Категория: CyberFleet Работа с программой | Добавил: logoff (10.08.2011) | Автор: Бондарь Михаил W
Просмотров: 6275 | Комментарии: 6 | Теги: КиберФлит, карта google, картография, КиберФлит карта | Рейтинг: 0.0/0
Всего комментариев: 6
6  
Знающие люди, подскажите, как подключать карты навителовского формата.

5  

4  
Спасибо огромное. Все работает. Еще небольшлй вопрос. Как узнать адресс тайлового сервера какой-либо произвольной картографии?

3  
а чистый гугл-сателит
<urlTemplate>http://khm1.google.ru/kh/v=85&x={XTILE}&y={YTILE}&z={ZOOM}&s=Galile</urlTemplate>

2  
Думаю, гибридная будет более удобноваримая, ибо будет наложение дорог...
и не забудьте создать каталог для кеша

USE GisDbMain
GO

declare @baseMapId int
declare @mapId int

-- 2 Google hybrid
-- базовая карта
INSERT INTO [dbo].[BaseMap] ([Name], [MinLongitude], [MinLatitude], [MaxLongitude], [MaxLatitude], [EngineType], [InitializationData], [BasePath], [DeploymentSide], [Copyright])
VALUES
(N'Россия - Google satellite', -180, -90, 180, 90, N'Google', N'<?xml version="1.0" encoding="utf-8"?>
<TileRenderer>
<copyright>© Google</copyright>
<urlTemplates>
<urlTemplate>http://khm1.google.ru/kh/v=85&x={XTILE}&y={YTILE}&z={ZOOM}&s=Galile</urlTemplate>
<urlTemplate>http://mt1.google.com/vt/lyrs=h@154000000&hl=ru&x={XTILE}&y={YTILE}&z={ZOOM}&s=Galile</urlTemplate>
</urlTemplates>
<tileCacheFolder>C:\GisPlatform\Server\TileCache\Google Satellite</tileCacheFolder>
<tileSize width="256" height="256" />
<zoom min="1" max="18" />
<sourceName>Google Maps</sourceName>
<daysToUpdateTilesInCache>365.00:00:00</daysToUpdateTilesInCache>
<downloadTimeoutInMiliseconds>1500</downloadTimeoutInMiliseconds>
<unloadTileIdleTimeSpan>00:10:00</unloadTileIdleTimeSpan>
</TileRenderer>', N'', 0, N'© ООО М2М телематика')
set @baseMapId = @@IDENTITY

-- логическая карта
INSERT INTO [dbo].[Map] ([ParentID], [Name], [MinLongitude], [MinLatitude], [MaxLongitude], [MaxLatitude])
VALUES
(NULL, N'Россия - Google satellite', 26, 45, 110, 80)
set @mapId = @@IDENTITY

-- привязка логической карты к базовой
INSERT INTO [dbo].[Map_BaseMap] ([MapID], [BaseMapID], [Priority])
VALUES
(@mapId, @baseMapId, 0)

1  
Подскажите, пожалуйста, адресс тайлового сервера Google со снимками со спутника.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
TOP 10 Популярное
1 Оборудование> Гранит-Навигатор 4.14
2 Оборудование> Абонентский терминал M2M Cyber GLX
3 Оборудование> Гранит-Навигатор 4.14: Настройка терминала
4 Прочее> "Красные" против "Синих" - статистка космических запусков России (СССР) и США
5 CyberFleet, CrossPoint> КиберФлит: Учет топлива при помощи датчиков
6 CyberFleet, CrossPoint> CyberFleet: Переустановка CyberFleet
7 Оборудование> M2M Cyber GLX: отправка команд
8 Прочее> SQL: CyberFleet: Занятие №3 Объединение таблиц Часть 1/2 (теория, inner join)
9 CyberFleet, CrossPoint> КиберФлит: Причины расхождения пробега по данным одометра и карте
10 CyberFleet, CrossPoint> КиберФлит: Подключаем карту Google
Наш опрос
Как вы учились работать с КиберФлит?
Всего ответов: 49
LogOff © 2017
Сайт создан в системе uCoz Рейтинг GPS Клуба. GPS навигаторы. GPS мониториг. GPS трекеры. ГЛОНАСС