<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.gis-lab.info/index.php?action=history&amp;feed=atom&amp;title=GeoKettle._%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B5_%D1%88%D0%B0%D0%B3%D0%B8</id>
	<title>GeoKettle. Первые шаги - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.gis-lab.info/index.php?action=history&amp;feed=atom&amp;title=GeoKettle._%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B5_%D1%88%D0%B0%D0%B3%D0%B8"/>
	<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=GeoKettle._%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B5_%D1%88%D0%B0%D0%B3%D0%B8&amp;action=history"/>
	<updated>2026-04-03T19:38:05Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=GeoKettle._%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B5_%D1%88%D0%B0%D0%B3%D0%B8&amp;diff=6680&amp;oldid=prev</id>
		<title>Amuriy: Новая страница: «{{Статья|Опубликована|geokettle}} {{Аннотация|Первое знакомство с программой GeoKettle. Простейшие…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=GeoKettle._%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B5_%D1%88%D0%B0%D0%B3%D0%B8&amp;diff=6680&amp;oldid=prev"/>
		<updated>2012-07-30T18:31:41Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{Статья|Опубликована|geokettle}} {{Аннотация|Первое знакомство с программой GeoKettle. Простейшие…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Статья|Опубликована|geokettle}}&lt;br /&gt;
{{Аннотация|Первое знакомство с программой GeoKettle. Простейшие преобразования и примеры несложных схем.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
''[http://www.geokettle.org/ www.geokettle.org]&amp;lt;br /&amp;gt;Лицензия: GPL v2''&lt;br /&gt;
&lt;br /&gt;
Программа GeoKettle в терминах бизнес-анализа (business intelligence) относится к инструментам ETL (Extract, Transform, Load) и, соответственно, предназначена для загрузки данных из разрозненных источников в единый банк данных.&lt;br /&gt;
&lt;br /&gt;
Применим ее возможности для повседневной работы с данными ГИС. Программа позволяет загружать данные самых различных форматов, преобразовывать их и сохранять результат обратно в файлы и базы данных. Поскольку GeoKettle основана на ETL общего назначения Kettle [[1]], то помимо специфичных функций ГИС (см. ниже) доступны и базовые операции - алгебраические функции, фильтры (в том числе по RegExp), обработка текстовых строк, пользовательские скрипты на языках JavaScript и SQL, и т.п.&lt;br /&gt;
&lt;br /&gt;
Как правило это не разовые операции, а рутинные процессы. Например, вы регулярно получаете файлы от смежных организаций, загружаете материалы с публичных интернет-ресурсов, производите агрегацию данных двух независимых департаментов и т.п. В таком случае составляется цепочка действий, сохраняется и вызывается в нужный момент. Думаю, многие специалисты ГИС имеют в своем запасе несколько командных файлов (скриптов), для преобразования форматов, проекций, объединения файлов. GeoKettle выполняет тоже самое, но в графическом виде.&lt;br /&gt;
&lt;br /&gt;
В статье не описываются специфичные для бизнес-анализа задачи (составление кубов Spatial OLAP), а затрагиваются только возможности ГИС.&lt;br /&gt;
&lt;br /&gt;
Итак, программа умеет работать с различными форматами данных:&lt;br /&gt;
&lt;br /&gt;
* Базы данных: PostGIS, Oracle Spatial, MySQL, Microsoft SQL Server и т.д.;&lt;br /&gt;
* Файлы ESRI Shapefile, GML, KML, форматы GDAL/OGR (только векторные);&lt;br /&gt;
* Сервисы OGC: SOS, CSW.&lt;br /&gt;
&lt;br /&gt;
Выполняет преобразования:&lt;br /&gt;
&lt;br /&gt;
* Построение буферов и центроидов, вычисление длин и площадей;&lt;br /&gt;
* Пространственная алгебра - объединение, пересечение и т.п.;&lt;br /&gt;
* Преобразование линий в полигоны и обратно, упрощение и сглаживание;&lt;br /&gt;
* Триангуляция Делоне.&lt;br /&gt;
&lt;br /&gt;
Существует проект BeETLe [[2]], ставящий своей целью интеграцию в GeoKettle библиотеки SEXTANTE [[3]] и возможность работы с растровыми форматами. Приложение было представлено на FOSS4G 2010, но состояние развития проекта неизвестно.&lt;br /&gt;
&lt;br /&gt;
==Установка программы==&lt;br /&gt;
&lt;br /&gt;
Программа работает в Windows, Linux, MacOSX и др. Инсталлятор единый - geokettle-XXX-installer.jar [[4]]. В системе уже должен быть установлен Java JRE. При работе в Linux файл требуется сделать запускаемым (chmod +x). Во время установки создается ярлык на рабочем столе, но, если этого не произошло, то программа запускается файлом geokettle.bat (geokettle.sh).&lt;br /&gt;
&lt;br /&gt;
==Простой пример==&lt;br /&gt;
&lt;br /&gt;
В качестве примера рассмотрим загрузку в базу данных PostGIS слоя границ субъектов РФ [[5]]: файл в формате ESRI Shapefile, кодировка windows-1251, проекция Albers-Siberia на эллипсоиде WGS84. Требуемая проекция - epsg:4326 (WGS84).&lt;br /&gt;
&lt;br /&gt;
Запустим программу и выберем вариант &amp;quot;No repository&amp;quot;. (Репозиторий используется для хранения документов и настроек в базе данных и для совместной работы.)&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-1.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
В открывшемся главном окне программы нужно создать документ. Возможны два типа - ''Transformation'' (преобразование) и ''Job'' (задача). Первый предназначен для работы с данными, а второй манипулирует файлами, запускает внешние скрипты, отправляет уведомления по почте. Transformation работает внутри Job.&lt;br /&gt;
&lt;br /&gt;
Для одного файла только Transformation. Создадим новый документ (File|New|Transformation). Из списка в левой части перенесем блоки:&lt;br /&gt;
&lt;br /&gt;
* Input|Shapefile File Input&lt;br /&gt;
* Transform|SRS Transformation&lt;br /&gt;
* Output|Table output&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в разделе Input доступны еще два подходящих варианта: ESRI Shapefile Reader и OGR File Input. Второй вариант не подходит потому, что не позволяет задать кодировку текстовых полей, а первый - просто не работает.&lt;br /&gt;
&lt;br /&gt;
Соединим все три блока последовательно. Операция выполняется средней кнопкой мышки (колесо прокрутки) - нажать на первом блоке и протащить на второй.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Перейдем к настройке отдельных блоков. Двойным щелчок открываем блок '''Shapefile File Input''', задаем имя файла и кодировку.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-3.png|center]]&lt;br /&gt;
&lt;br /&gt;
По кнопке Preview можно посмотреть содержимое файла, его графическое представление и убедиться что кодировка выбрана правильно.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-4bis.png|center]] [[Image:geokettle-4tris.png|center]]&lt;br /&gt;
&lt;br /&gt;
В блоке '''SRS Transformation''' укажем поле, содержащее геометрию объектов (the_geom), поставим галочку в поле ''&amp;quot;Auto-detect spatial reference system from source&amp;quot;'' для автоматического определения исходной проекции и в списке в правой части выберем требуемую проекцию (WGS 84).&lt;br /&gt;
&lt;br /&gt;
Блок '''Table output''' предназначен для экспорта результата в базу данных. В графе ''Connection'' по кнопке ''New...'' создадим подключение к PostGIS. Выберем тип БД - PostgreSQL и укажем параметры подключения.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-5.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Кнопка ''Test'' служит для проверки доступа к БД, ответ должен быть &amp;quot;[Test] is OK&amp;quot;. Создание подключения закончено, возвращаемся в блок Table output. Осталось указать только название таблицы (''Target table'') - пусть будет &amp;quot;regions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Попробуем запустить процесс. Для этого сохраняем документ (File|Save), выбираем в меню Transformation|Run, в открывшемся окне нажимаем кнопку ''Launch''. Процесс завершится ошибкой в блоке '''Table output''' (красный значок на схеме).&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-2bis.png|center]]&lt;br /&gt;
&lt;br /&gt;
Ошибка возникла потому, что в базе данных отсутствует таблица &amp;quot;regions&amp;quot; и ее требуется предварительно создать. Для этого опять откроем блок '''Table output''' и нажмем кнопку ''SQL''. Предложенный sql-запрос можно сразу запустить (кнопка ''Execute'') или изменить его и добавить в код создания таблицы дополнительные поля. Например, введем колонку первичного ключа (id).&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-6.png|center]]&lt;br /&gt;
&lt;br /&gt;
Если таблица с указанным именем в БД уже существует, то программа может предложить добавить поля (ALTER TABLE... ADD COLUMN) или изменить тип данных.&lt;br /&gt;
&lt;br /&gt;
Повторим процедуру запуска трансформации, которая теперь пройдет без ошибок, и убедимся что в БД создана новая таблица, данные загружены и внесена запись в системную таблицу &amp;quot;geometry_columns&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Обработка множества файлов==&lt;br /&gt;
&lt;br /&gt;
Поставим задачу преобразования набора файлов для MapInfo из проекта GeoSample [[6]] в формат ESRI Shapefile. Для этого потребуется составить список файлов с раширением &amp;quot;*.tab&amp;quot; в каталоге и потом для каждого элемента списка выполнить процедуру считывания (ввода) и сохранения (вывода).&lt;br /&gt;
&lt;br /&gt;
К статье приложен готовый проект, рекомендуется обращаться к нему для выяснения деталей настройки отдельных блоков.&lt;br /&gt;
&lt;br /&gt;
'''1. Список файлов'''&lt;br /&gt;
&lt;br /&gt;
Создадим новый документ типа ''Transformation'' и составим цепочку действий.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-7.png|center]]&lt;br /&gt;
&lt;br /&gt;
Первый блок '''Get File Names''' формирует список файлов в каталоге. В настройках блока можно указать как абсолютный путь, так и относительно расположения скрипта GeoKettle:&lt;br /&gt;
&lt;br /&gt;
 ${Internal.Transformation.Filename.Directory}/tab&lt;br /&gt;
&lt;br /&gt;
Список доступных переменных можно посмотреть нажав сочетание клавиш Ctrl+Пробел.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-8.png|center]]&lt;br /&gt;
&lt;br /&gt;
Результатом работы '''Get File Names''' будет список, содержащий полное и сокращенное имена файлов, размер файла, атрибуты &amp;quot;скрытый&amp;quot; и &amp;quot;защита от записи&amp;quot; (read only) и др. Поэтому следующие блоки выбирают нужное поле (filename) в двух экземплярах и заменяют в одном из них &amp;quot;tab&amp;quot; на &amp;quot;shp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Последний блок завершает процедуру и передает результат работы на следующий шаг - список, каждая строка которого содержит поля filenameTAB и filenameSHP.&lt;br /&gt;
&lt;br /&gt;
'''2. Обработка отдельного файла'''&lt;br /&gt;
&lt;br /&gt;
Следующим этапом идет преобразование формата MapInfo в ESRI Shapefile. Оно оформляется отдельно и главной задачей здесь стоит использование не абсолютных путей к файлам, а генерируемых на предыдущем шаге.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-9.png|center]]&lt;br /&gt;
&lt;br /&gt;
Для этого в графе ''&amp;quot;File name&amp;quot;'' в блоках '''OGR file input''' и '''OGR file output''' указываются переменные. '''SRS Transformation''' использован только как пример обработки файла и может быть заменен на любой другой или исключен из схемы.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-10.png|center]]&lt;br /&gt;
&lt;br /&gt;
'''3. Создание переменных'''&lt;br /&gt;
&lt;br /&gt;
Переменные filenameTAB и filenameSHP формируются из полей списка файлов, полученного на первом шаге. Для этого служит блок '''Job|Set Variables'''. Особенность его работы заключается в том, что созданные переменные будут доступны только на следующем этапе и их нельзя использовать в том же документе ''Tranformation''. Это ограничение происходит из условия '''определенности''' всех данных на момент запуска скрипта и используется для распараллеливания процесса.&lt;br /&gt;
&lt;br /&gt;
Поэтому создается отдельный, третий по счету, документ типа ''Tranformation'', который должен будет отработать до этапа &amp;quot;Обработка отдельного файла&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-11.png|center]]&lt;br /&gt;
&lt;br /&gt;
Примечание. В версии 2.0 появилась функция ''&amp;quot;Filename is defined in a field&amp;quot;'', которая позволила бы объединить этапы 2 и 3 в один. Но на текущий момент она реализована не во всех блоках ввода. Например, смотрите '''Shapefile File Input'''.&lt;br /&gt;
&lt;br /&gt;
'''4. Конвейер'''&lt;br /&gt;
&lt;br /&gt;
Осталось собрать все трансформации в единую схему. Создадим документ типа ''Job'', добавим трансформацию &amp;quot;Список файлов&amp;quot; (filelist) и задачу &amp;quot;every file job&amp;quot;, в параметрах которой укажем ''&amp;quot;Execute for every input row&amp;quot;''. Это означает, что задача &amp;quot;every file job&amp;quot; будет вызвана столько раз, сколько строк сформировано в списке файлов.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-12.png|center]]&lt;br /&gt;
&lt;br /&gt;
Второй документ (every file job) типа ''Job'' содержит трансформации этапов 2 и 3 в упомянутом порядке.&lt;br /&gt;
&lt;br /&gt;
[[Image:geokettle-13.png|center]]&lt;br /&gt;
&lt;br /&gt;
Запуск всей процедуры обработки файлов выполняется из первого документа (файл root.kjb в приложении).&lt;br /&gt;
&lt;br /&gt;
==Заключение==&lt;br /&gt;
&lt;br /&gt;
Программа GeoKettle обладает большими возможностями и высокой производительностью. Создание простых трансформаций является очень простой и наглядной операцией. Но работа со сложными схемами с вложенными задачами сильно запутана и представляет сложности при отладке с появлением неявных и плохо задокументированных ошибок. Тем не менее вторая версия программы идет по пути облегчения работы и добавляет более простые механизмы.&lt;br /&gt;
&lt;br /&gt;
В комплект дистрибутива включены хорошие примеры работы с геометрией (используется диалект JavaScript для библиотеки JTS). Расположены в каталоге установленной программы &amp;quot;samples\transformations\geokettle\&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Аналоги:&lt;br /&gt;
&lt;br /&gt;
* [http://www.talendforge.org/ Talend Open Studio] ([http://www.talendforge.org/wiki/doku.php?id=sdi:MainPage Spatial module]), лицензия GPL v2.&lt;br /&gt;
* [http://safe.com/ FME] (Safe Software), коммерческое приложение.&lt;br /&gt;
* ArcGIS ModelBuilder [[7]], коммерческое приложение.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Spatial_ETL#Spatial_ETL_tools Список программ в Wikipedia]&lt;br /&gt;
&lt;br /&gt;
==Приложения==&lt;br /&gt;
&lt;br /&gt;
* [http://gis-lab.info/other/geokettle.pdf Версия в формате PDF]&lt;br /&gt;
* [http://gis-lab.info/other/geokettle-sample.zip Готовый проект] для самостоятельной работы&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
&lt;br /&gt;
# Программа Kettle из пакета бизнес-анализа Pentaho Data Integration // http://kettle.pentaho.com/&lt;br /&gt;
# BeETLe Project // http://beetle-project.blogspot.com/&lt;br /&gt;
# Sextante project // http://www.sextantegis.com/&lt;br /&gt;
# Версия программы на момент написания статьи — [http://sourceforge.net/projects/geokettle/files/geokettle-2.x/2.0-RC1/ 2.0-RC1]&lt;br /&gt;
# Дубинин М.Ю., Генерализованные слои границ субъектов РФ // [rusbounds-rosreestr-gen.html http://gis-lab.info/qa/rusbounds-rosreestr-gen.html]&lt;br /&gt;
# Geosample: Открытый набор геоданных для различного ПО ГИС // [geosample.html#get http://gis-lab.info/qa/geosample.html]&lt;br /&gt;
# Дубинин М.Ю., Использование скриптов-посредников на Python в моделях ArcGIS // [mb-python.html http://gis-lab.info/qa/mb-python.html]&lt;/div&gt;</summary>
		<author><name>Amuriy</name></author>
	</entry>
</feed>