Oracle опубликовал новую версию Mapviewer. Кто пользуется более ранними версиями, а также версиями 11g рекомендуется обновить до версии 10.1.3.3. По функциональности и уровню пропатченности это самая лучшая на данный момент версия.
Читать далее...
Oracle опубликовал новую версию Mapviewer. Кто пользуется более ранними версиями, а также версиями 11g рекомендуется обновить до версии 10.1.3.3. По функциональности и уровню пропатченности это самая лучшая на данный момент версия.
UPDATE1: Начиная с версии 1.1.2 gvSIG для использование Oracle Spatial не требуется инсталлировать geoDB extension. Тем не менее все равно требуется скачать библиотеке ojdbc14.jar и положить ее в нужное место (см. ниже).
В мире в настоящее время используется большое количество open source GIS и в большинстве своем эти ГИС поддерживают Oracle Spatial, т.к. очевидно, что это один из самых распространенных форматов хранения пространственных данных.
Кроме того большинство из этих проектов зарождаются, либо спонсируются государственными и мунициальными организациями.
Сегодня мы рассмотрим одну из таких систем - gvSIG.
gvSIG — свободная геоинформационная система с открытым исходным кодом. Первая рабочая версия появилась в конце 2006 года и распространялась через интернет.
Системные требования
Pentium III 800 МГц
256 Мбайт RAM
Предлагаются исходный код, и готовые сборки для:
Microsoft Windows и Windows NT
GNU/Linux i586
Mac OS X Intel.
Программа поддерживает все необходимые функции ГИС:
Pабота со слоями, благодаря которой можно отображать лишь необходимые в данный момент объекты;
Функции масштабирования карты;
Поддержка сохранения необходимых ракурсов карты;
Автоматические расчёты расстояния между объектами и площадей областей;
Размещение активных объектов на карту;
Создание профессиональных географических карт с необходимыми элементами, которые можно впоследствии печатать.
Собственно, к системе есть небольшая документация, которую можно взять здесь.
Есть также драйвер для Oracle. К сожалению, в поставке он не идет.
Итак, давайте приступим к установке.
Основная инсталляция достаточно простая. Сложностей не возникает. Только под линуксом возникает небольшая сложность. При инсталляции gvSIG свою версию java (1.4.2) кидает в папку /root/gvSIG/jre. Это не позволяет в дальнейшем запускать gvSIG под обычным пользователем. Для решения проблемы нужно проинсталлировать в режиме по умолчанию. Скопировать jre в общедоступную папку. Проинсталлировать повторно, но при инсталляции указать наш jre в соответствующей папке.
После этого нужно проинсталлировать geoDB расширение, а файлик ojdbc14.jar положить в папку /opt/gvSIG_1.0.2/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/ (я инсталлировал в папку /opt/gvSIG_1.02
Запускается файликом /opt/gvSIG_1.0.2/bin/gvSIG.sh (для линукса) и из меню в Windows.
После запуска нужно настроить соединения с базой данных Oracle. Для этого заходим в меню Show->Geographic database connections wizard. В меню жмем Add и попадаем в диалог настройки соединения.
Настраиваем соединение.
gvSIG готов к работе с СУБД Oracle.
gvSIG умеет работать с Oracle Spatial, но он налагает ряд требований на таблицы, содержащие данные. Одно из них – это наличие первичного ключа (Primary Key). Кроме того, для редактирования необходимо также иметь триггер, заполняющий соответствующее поле.
Давайте, создадим таблицу, удовлетворяющую требованиям. Эта таблица будет содержать информацию о ресторанах в городе:
Также создаем индекс. Без индекса ничего работать не будет.
CREATE TABLE restaurants
( id NUMBER PRIMARY KEY, name VARCHAR2(30), geom mdsys.sdo_geometry);
CREATE INDEX restaurants_spat_idx ON restaurants (geom) indextype IS mdsys.spatial_index;
Создаем также последовательность для генерации первичного ключа
CREATE SEQUENCE restaurants_pk_seq;
Создаем триггер для заполнения первичного ключа:
CREATE OR REPLACE TRIGGER RESTAURANTS_PK_TRIG BEFORE
INSERT ON RESTAURANTS FOR EACH ROW BEGIN :new.id:=restaurants_pk_seq.nextval;
END;
Теперь необходимо зарегистрировать таблицу как слой
INSERT INTO user_sdo_geom_metadata VALUES ('restaurants','geom',
MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.005),MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.005)) ,8307);
Теперь необходимо настроить отображение информации в gvSIG:
а) Запускаем gvSIG
б) Выбираем в Document Types – View, затем New
в) Появится новый View с именем Untitles – 0. Выбираем его и жмем Properties
г) Даем название, указываем проекцию базы данных. В нашем случае это будет WGS 84, Geodesica. Это обязательно сделать.
д) Соглашаемся и закрываем. Далее выбираем наше View. Жмем Open.
е) В панели инструментов выбираем Add Layer. В диалоге нам нужна закладка GeoBD. Выбираем соединение. Выбираем слой, который необходимо подключить.
ж) В результате откроется выбранный слой, с которым можно работать
з) Этот слой можно редактировать. Для этого слева щелкаем на названии слоя правой кнопкой и выбираем Start edition
и) В панели инструментов выбираем инструмент Point. Щелкаем, делаем точки :) Для завершения редактирования и сохранения щелкаем правой кнопкой на слой и говорим “Finish edition”. Соглашаемся, что хотим сохранить слой.
Each time you call the SDO_GEOR_UTL.createDMLTrigger procedure successfully, GeoRaster creates a trigger with a unique name. (All GeoRaster DML trigger names start with the string GRDMLTR_.) When you drop a GeoRaster table, all GeoRaster triggers associated with the table are automatically dropped also.
If you have created the GeoRaster DML trigger on a column, GeoRaster automatically performs the following actions when the trigger is fired as a result of a DML operation affecting that column:
After an insert operation, the trigger inserts a row with the GeoRaster table name, GeoRaster column name, raster data table name, and rasterID value into the USER_SDO_GEOR_SYSDATA view (described in Section 2.4). If an identical entry already exists, an exception is raised.
After an update operation, if the new GeoRaster object is null or empty, the trigger deletes the old GeoRaster object. If there is no entry in the USER_SDO_GEOR_SYSDATA view for the old GeoRaster object (that is, if the old GeoRaster object is null), the trigger inserts a row into that view for the new GeoRaster object. If there is an entry in the USER_SDO_GEOR_SYSDATA view for the old GeoRaster object, the trigger updates the information to reflect the new GeoRaster object.
After a delete operation, the trigger deletes raster data blocks for the GeoRaster object in its raster data table, and it deletes the row in the USER_SDO_GEOR_SYSDATA view for the GeoRaster object.