Привет всем!
Когда-то давно я описал решение по использованию в Oracle BI11g представлений-карт с подложкой от OpenStreetMap
Сам до сих пор пользуюсь описанной методикой. Но что меня всегда смущало - на клиентских машинах необходим доступ в Интернет. Так как подложка от OSM отображается с помощью javascript, т.е. картинки со всем, что мы привыкли видеть на карте (административные границы; реки и озера; железные и автомобильные дороги; ландшафт...), подгружаются браузером пользователя.
Это далеко не всегда удобно.
Сегодня я хочу рассказать как решить эту проблему в OBIEE 11.1.1.6
На скриншоте ниже показан отчет с представлением-картой у пользователя без доступа в Интернет.
На скриншоте ниже показан отчет с представлением-картой у пользователя без доступа в Интернет.
1. Создадим карту-подложку
В режиме администрирования Mapviewer добавим новую карту-подложку с типом External
В свойствах подложки укажем:
- адрес WMS-ресурса (Web Map Service) - http://osm.wheregroup.com/cgi-bin/mapserv
- класс адаптера, отвечающего за получение "картинок" от WMS - mcsadapter.WMSAdapter
- путь до jar-файла с классом-адаптером - c:\Middleware\Oracle_BI1\bifoundation\jee\mapviewer.ear\web.war\WEB-INF\tileserver\mvadapter\mvadapter.jar
- свойства адаптера (параметры формируемого URL):
- service - WMS
- srs - EPSG:4326
- format - image/png
- map - /data/umn/osm/osm_basic.map
- layers - OSM_Basic
- путь до каталога с кешем (полученными картинками-элементами пазла) - c:\Middleware\Oracle_BI1\bifoundation\jee\mapviewer.ear\web.war\tilecache\DWH19.OSM
На этом можно было бы и закончить. WMS-сервис мы настроили - изображения с базовой подложкой от OpenStreetMap он уже сможет получать (складировать в папку-кеш).
Но только в том случае, если с машины-сервера BI возможен прямой доступ к Интернету.
На практике же чаще всего используется корпоративный proxy-сервер.
2. Научим BI работать с PROXY
1. Внесем ряд изменений в файл c:\Middleware\user_projects\domains\bifoundation_domain\bin\setDomainEnv.cmd
(у меня все сервера на Windows, если вы используете *nix, то править нужно setDomainEnv.sh)
Перед строками
set JAVA_OPTIONS=%JAVA_OPTIONS% @REM SET THE CLASSPATH
добавьте следующие:
@REM Jack Carver start set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.net.proxyAuthenticatorClassName=ru.servplus.common.XxProxyAuthenticator set PRE_CLASSPATH=%WL_HOME%\server\lib\servplus.jar;%PRE_CLASSPATH% set JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyHost=HOST set JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyPort=PORT set JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyUser=USER set JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyPassword=PASSWORD set JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.noProxyHosts="localhost" @REM Jack Carver end
Разумеется , замените под ваше окружение значения HOST, PORT, USER, PASSWORD.
Также рекомендую прописать в исключениях для прокси (http.noProxyHosts) доменные имена вашего сервера (/ов в случае кластера). Через разделитель |
2. Скопируйте jar-файл servplus.jar в каталог c:\Middleware\wlserver_10.3\server\lib
Внутри servplus.jar класс, предназначенный для аутентификации на прокси.
package ru.servplus.common; import weblogic.common.ProxyAuthenticator; public class XxProxyAuthenticator implements ProxyAuthenticator { public void init(String proxyHost, int proxyPort, String authType, String loginPrompt) { } public String[] getLoginAndPassword() { String[] auth = new String[2]; auth[0] = System.getProperty("http.proxyUser"); auth[1] = System.getProperty("http.proxyPassword"); return auth; } }
3. Скорректируем XML определение подложки
Чтобы безболезненно перейти от прошлой реализации карт к новой. Следует убедиться, что определения карт-подложек совпадают. А именно - равно ли общее количество и свойства каждого уровня детализации.
Я рекомендую вам просто скопировать значения узлов zoom_levels из существующей рабочей карты и вставить в определение новой WMS-карты.
4. Определим новую карту в Oracle BI
Не забудьте добавить созданную карту-подложку в список доступных для Oracle BI. А также добавьте привязку геометрических слоев (вкладка Layers) к новой карте.
После всех действий вы можете смело править существующие отчеты с представлениями-картами, где в качестве карты теперь можете задать новую.
Допустил неточность в сообщении.
ОтветитьУдалитьДля корректного отображения WMS-подложки в системе координат 3785 нужно вносить изменения в WMSAdapter-класс.
Исправлю и опубликую в ближайшее время...
Спасибо!
ОтветитьУдалитьА можно реальзовать подобное если доступа в интернет нет даже через прокси? Тоесть создать свою offline базу (конечно только по нужным районам).
Интересный вопрос!
ОтветитьУдалитьКак варианты:
- Использовать GeoRaster (http://www.oraclegis.com/blog/?p=4).
- Настроить external-tile на сервере, где ЕСТЬ доступ в интернет, "прощелкать" всю интересующую вас карту (очевидно, нужно будет ограничить границы интересующей области карты и уменьшить кол-во уровней детализации); в итоге у вас будет в кеше mapviewer куча картинок под каждый прямоугольник внутри границ + на каждый уровень детализации (думаю, это то еще "веселье" будет...); затем настроить external-tile чтобы кеширование никогда не сбрасывалось и можно переносить на сервер БЕЗ интернета.
- затянуть в БД все-все-все интересующие вас слои данных (административные границы, реки, моря, "точки интереса", автодороги, железные дороги т.д.) и отображать в mapviewer все эти слои на одной подложке (т.е. заменить "сводную" картинку внешнего WMS-сервиса на свой набор слоев); но это будет, конечно, тяжеловесное решение для пользовательских браузеров.
Может быть, все-таки с интернетом?
Спасибо за ответ!
ОтветитьУдалитьИнтернет к сожелению использоваться не может (предпологается обрабатывать персональные данные).
Поэтому вопрос отображения информации на карте в замкнутом контуре крайне актуален.
Еще раз огромное Вам спасибо за выложенную информацию!
Подскажите, пожалуйста!
ОтветитьУдалитьДелаю все в соответствии с вышеприведенным руководством, но вместо подложки отображается белый фон с надписью: «OpenStreetMap- Daten CC BY-SA Lizenz – provided by WhereGroup». Возможно, как Вы ранее писали, необходимо вносить какие-то изменения в WMSAdapter-класс?
Добрый день!
УдалитьНа этих выходных разберусь и обновлю эту публикацию.
/* Спасибо за ваши замечания ;) */
В первую очередь в очередной раз - Огромное Вас спасибо за материалы!
УдалитьТоже столкнулся с проблеммой отображения на белом фоне надписи - " «OpenStreetMap- Daten CC BY-SA Lizenz – provided by WhereGroup». "
Сообщение вываливается как для SRID 8307 так и 3785.
Может уже нашли решение?
Упс, если по карте поползать, то в определенных (x, y) можно найти карту.
УдалитьВобщем нужно играться с max и min (x,y)
Спасибо, будем ждать ответа!
ОтветитьУдалитьХочу вот еще о чём спросить. Судя по всему, подложка не отображается только для системы координат 3785. Если её значение оставить по умолчанию 8307, то всё начинает отображаться. Но, к сожалению, данная подложка не охватывает Россию целиком и не столь информативна, как та, что может подтягиваться браузером в ранее описанном Вами способе. Есть ли возможность использовать эту подложку через BI?
Поднять свой OSM сервер, например.
ОтветитьУдалитьВажное дополнение: нужно использовать параметр JVM с именем "http.nonProxyHosts" вместо "http.noProxyHosts" (пропущена буква n в non)
ОтветитьУдалить