Исследование принципов построения и разработка архитектуры обобщенной открытой программной платформы для обработки и хранения пространственных данных тема диссертации и автореферата по ВАК РФ 25.00.35, кандидат наук Гвоздев Олег Геннадьевич
- Специальность ВАК РФ25.00.35
- Количество страниц 140
Оглавление диссертации кандидат наук Гвоздев Олег Геннадьевич
систем
2.2.2 Принцип множественной реализации
2.2.3 Принцип обобщения и поздней специализации
2.2.4 Принцип прозрачных абстракций
2.2.5 Принцип свободной топологии
2.2.6 Принцип гарантий
2.2.7 Формирование методологической основы построения архитектуры программной платформы
2.3 Разработка концептуальной модели архитектуры программной
платформы для обработки и хранения пространственных данных
Глава 3. Разработка архитектуры программной платформы для
обработки и хранения пространственных данных
3.1 Разработка базовых правил и соглашений относительно реализации разработанной концептуальной модели архитектуры
3.1.1 Применение парадигмы объектно-ориентированного программирования
3.1.2 Идентификация объектов данных
3.1.3 Обработка ошибок и исключительных ситуаций
3.1.4 Поддержка параллельной обработки
3.2 Разработка архитектуры слоя структур данных
3.2.1 Свойства элементов данных
3.2.2 Основные типы элементов данных
3.2.3 Пространственные типы элементов данных
3.2.4 Операции над элементами данных
3.2.5 Разработка архитектуры метаобъектной системы как средства реализации элементов данных
3.2.5.1 Разработка блока метаописаний элементов данных
3.2.5.2 Архитектура метаобъектного генератора
3.3 Разработка архитектуры слоя алгоритмов
3.3.1 Алгоритмы общего назначения
3.3.2 Алгоритмы обработки пространственных данных
3.4 Разработка архитектуры слоя промежуточных блоков
3.5 Анализ свойств разработанной архитектуры
Глава 4. Разработка методики и экспериментальное исследование свойств прототипа программной платформы для обработки и хранения пространственных данных
4.1 Разработка методики тестирования и оценки свойств прототипа
программной платформы
4.1.1 Разработка контрольной задачи
4.2 Тестирование прототипа программной платформы согласно разработанной методике
4.3 Анализ результатов тестирования свойств прототипа программной платформы
Заключение
Список литературы
Список терминов, условных обозначений и сокращений
Приложение 1. Сравнительный анализ языков программирования, применямых для обработки пространственных данных
Приложение 2. Результаты оценки потенциала к повторному использованию программных решений в области обработки пространственных данных
Приложение 3. Пример программного кода для описания простейшей структуры данных средствами разработанной мета-объектной системы
Рекомендованный список диссертаций по специальности «Геоинформатика», 25.00.35 шифр ВАК
Математическое и программное обеспечение географических информационно-аналитических систем регионального уровня: На примере Красноярского края2003 год, кандидат технических наук Песегов, Дмитрий Александрович
Метод и алгоритмы геоинформационного моделирования техногенного воздействия угледобывающих предприятий на состояние окружающей среды2013 год, кандидат наук Фанасков, Виталий Сергеевич
Математическое и программное обеспечение систем автоматизации проектирования цифровых систем обработки сигналов2013 год, кандидат наук Андреев, Валерий Сергеевич
Корпоративная интеллектная технология обработки пространственно-распределенных данных в задачах управления регионом2003 год, доктор технических наук Бычков, Игорь Вячеславович
Усовершенствование методов удаленного доступа к топографической составляющей АИС "Ведомственный кадастр" Федерального агентства по образованию РФ2004 год, кандидат технических наук Жемеря, Андрей Вячеславович
Введение диссертации (часть автореферата) на тему «Исследование принципов построения и разработка архитектуры обобщенной открытой программной платформы для обработки и хранения пространственных данных»
Введение
Пространственно-временные характеристики и соотношения
являются неотъемлемыми атрибутами любого материального объекта или явления. Это делает их необходимыми для решения множества задач в различных областях человеческой деятельности. Их привлечение к уже существующим решениям часто позволяет многократно повысить их качество и полноту.
В широком смысле к системам обработки пространственных данных могут быть отнесены любые информационные системы, использующие пространственно-временные характеристики объектов или явлений при решении стоящих перед ними задач. Среди этих систем можно выделить две характерных категории.
Системы обработки пространственных данных общего назначения (универсальные) не имеют заложенных на этапе разработки ограничений по области применения, решаемым задачам или методикам выполнения работ, ориентируясь на обеспечение пользователя функциональными возможностями, применимыми для решения широкого спектра прикладных задач. К этой категории относятся геоинформационные системы (ГИС) общего назначения и системы автоматизированного проектирования (САПР). К этой же категории могут быть условно отнесены специализированные системы обработки геодезических, фотограмметрических и других видов измерений.
Специализированные системы обработки пространственных данных, напротив, обслуживают потребности определенных прикладных процессов конкретных предметных областей, таких как управление территориями, оценка недвижимости, логистика, телекоммуникации, аварийно-спасательная работа, метеорология, экология и многих других.
Скорость роста объемов информации и изменения условий функционирования информационных систем в современном мире непрерывно увеличивается. Аппаратные и программные инструментальные средства для сбора и обработки пространственных данных становятся всё более доступны. На пересечении областей знаний появляются новые направления исследований
и разработок. Возрастает интерес к применению последних достижений математики и информатики, таких как интеллектуальный анализ и извлечение данных (data mining) и методы машинного обучения (machine learning), к пространственным данным. Увеличивается заинтересованность государственных и коммерческих организаций в разработке специализированных систем обработки пространственных данных, в особенности — специализированных ГИС и систем поддержки принятия решений на их основе.
Способность в кратчайшие сроки и с минимальными затратами ресурсов адаптироваться к этим изменениям является важнейшим фактором, обеспечивающим конкурентное преимущество как на уровне индивида или организации, так и на региональном, федеральном и даже цивилизационном уровнях.
Таким образом, перед исследователями и разработчиками в области систем обработки пространственных данных особо остро встает вопрос адаптивности автоматизированных информационных систем — их способности реализовывать новые функциональные возможности с использованием доступных ресурсов и существующих структурных элементов, в частности — теоретических и практических достижений смежных областей деятельности.
Наиболее актуален вопрос адаптивности в экспериментально-исследовательской и образовательной работе, на ранних этапах разработки решений промышленного и корпоративного уровня, задачах, подчиненных изменчивым внешним факторам, таким как законодательно-правовые нормы, организационно-технические характеристики внешних систем или требования заказчика.
С точки зрения системного анализа, автоматизированную информационную систему можно рассматривать как структуру, компонующуюся из постепенно укрупняющихся блоков, начиная с простейших, заканчивая большими и сложными подсистемами.
Таким образом, адаптивность процесса конструирования программного обеспечения и разрабатываемых в его рамках решений обеспечивается, в первую очередь, возможностью рационального, с точки зрения затрат трудовых и вычислительных ресурсов, использования существующих программных компонентов как внутренней разработки, так и внешних,
наиболее приближенных к предметной области решаемой задачи, с одной стороны, и наиболее удовлетворяющих локальным организационным, технологическим и техническим потребностям, с другой.
Анализ распространенных программных решений в области обработки пространственных данных, а также технологических факторов, под влиянием которых проходит их разработка и эксплуатация, представленный в первой главе настоящей работы, обнаружил, что существующие решения имеют принципиальные ограничения применимости и программной совместимости.
В этих условиях решение задачи построения системы обработки пространственных данных, предполагающей комбинирование функциональных возможностей множества существующих программных решений, требует значительного количества работы, направленной на преодоление технологических преград, не связанных с первоначальной задачей предметной области.
Актуальность темы в прикладном значении определяется описанными потребностями практики в увеличении адаптивности автоматизированных информационных систем и рационализации процессов их разработки.
Актуальность темы в теоретическом значении определяется привлечением для достижения цели настоящего исследования новейших научных и прикладных разработок в области информатики и программной инженерии, модифицированных и адаптированных автором к предметной области геоинформатики.
Степень разработанности темы. Как в русскоязычных, так и в зарубежных источниках активно рассматривается проблематика обеспечения адаптивности, программной совместимости и интеграции программных решений как применительно к предметной области геоинформатики, так и в других областях деятельности. Доминирующими являются принципы, методы и подходы, находящиеся в сильной зависимости от особенностей задачи, базовых программных решений или технологий интеграции, либо, напротив, предполагающие использование универсальных решений и технологий, не учитывающих в должной мере особенности предметной области и задачи. Им свойственен недостаток внимания к вопросам рационализации трудозатрат разработчика-исследователя, обеспечению возможностей повторного использования реализованных решений, а также к технологическим свойствам
и внутреннему устройству используемых технологий.
Область настоящего исследования — автоматизированные информационные системы, осуществляющие хранение и обработку пространственных данных различного типа, назначения, пространственного и тематического охвата, программное обеспечение для них, научные и методические основы геоинформатики.
Объект исследования — методологические и технологические основы проектирования и разработки программного обеспечения для автоматизированных информационных систем, осуществляющих хранение и обработку пространственных данных.
Предмет исследования — принципы построения и программная архитектура обобщенной открытой программной платформы для обработки и хранения пространственных данных, формирующей основу для построения специализированных систем обработки пространственных данных, построенных на базе композиции существующих разнородных программных компонентов и решений.
Целью исследования является рационализация процессов проектирования и разработки специализированных систем автоматизированной обработки пространственных данных, построенных на основе композиции существующих разнородных программных компонентов и решений.
Для достижения этой цели понадобилось решить следующие исследовательские задачи:
1. Провести анализ существующих программных решений в области обработки пространственных данных, архитектурных и технологических особенностей их устройства, факторов, влияющих на возможность построения производных решений на их основе.
2. Разработать модель требований к свойствам архитектуры программной платформы для обработки и хранения пространственных данных, позволяющую обеспечить выполнимость и рациональность процессов проектирования и разработки производных программных решений, построенных на основе композиции существующих разнородных программных компонентов и решений.
3. Разработать систему методологических и технологических принципов,
образующих методологическую основу построения архитектуры программной платформы для обработки и хранения пространственных данных.
4. Разработать концептуальную модель и архитектуру программной платформы для обработки и хранения пространственных данных.
5. Провести экспериментальное подтверждение правильности и практической применимости разработанной методологической основы и построенной на её базе архитектуры программной платформы для обработки и хранения пространственных данных, а также теоретических заключений относительно её свойств.
Научную базу исследования составили методы системного и структурного анализа, методологии обобщенного и метапрограммирования. Основные научные результаты, выносимые на защиту:
1. Методологическая основа проектирования и разработки программных решений в области обработки и хранения пространственных данных, построенных на основе композиции существующих разнородных программных компонентов и решений.
2. Архитектура обобщенной открытой программной платформы для обработки и хранения пространственных данных.
Соискателем лично получены все перечисленные научные результаты.
Новизна научных результатов заключается в том, что впервые:
1. Разработана методологическая основа проектирования и разработки программных решений в области обработки и хранения пространственных данных, построенных на основе композиции существующих разнородных программных компонентов и решений, комбинирующая в себе методологии обобщенного и метапрограммирования, а также оригинальный набор принципов, дополняющих и уточняющих их приложение к предметной области геоинформатики.
2. Разработана архитектура программной платформы для обработки и хранения пространственных данных, построенная на базе разработанной методологической основы, что выражается в разделении программного интерфейса элемента данных на специализированный и обобщен-
ный варианты, наличии метаобъектной системы, позволяющей прикладному программисту контролировать низкоуровневые аспекты процесса специализации, а также в отсутствии архитектурных свойств, увеличивающих зависимость от особенностей среды выполнения (рис. 4, 5), что обеспечивает совокупность следующих её свойств: открытость, обобщенность, управляемость и предсказуемость поведения производных решений.
Основные положения, выносимые на защиту:
1. Разработанная методологическая основа формирует теоретическую базу построения систем автоматизированной обработки пространственных данных, построенных на основе композиции существующих разнородных программных компонентов и решений, обладающих набором свойств (открытость, обобщенность, управляемость и предсказуемость поведения производных решений), совокупность которых приводит к синергетическому эффекту.
2. Разработанные архитектура и принципы построения позволяют рационализировать процессы проектирования и разработки специализированных систем автоматизированной обработки пространственных данных, построенных на основе композиции существующих разнородных программных компонентов и решений.
Достоверность научных результатов подтверждена экспериментально в четвертой части настоящего исследования.
Практическое значение научных результатов определяется тем, что их применение позволяет рационализировать процессы проектирования и разработки программного обеспечения для обработки и хранения пространственных данных, активно использующего разработанные ранние программные компоненты и решения, особенно при низком уровне их программной совместимости, позволяя при этом обеспечить совокупность свойств: открытость, обобщенность, управляемость и предсказуемость поведения производных решений.
Теоретическое значение работы определяется тем, что в её рамках произведен пересмотр проблематики проектирования и разработки программного обеспечения для автоматизированных информационных систем,
производящих обработку и хранение пространственных данных, традиционно рассматриваемой в контексте прикладного программирования, с позиций теории и практики системного программирования, а также последних достижений информатики и программной инженерии.
Значимость данного подхода определяется свойствами построенной архитектуры, обеспечиваемыми созданной методологической основой: открытость, обобщенность, управляемость и предсказуемость поведения производных решений, совокупность которых приводит к синергетическому эффекту.
Данный подход и разработанная в его рамках методологическая основа могут быть развиты для применения в других научных и прикладных областях деятельности со схожей проблематикой.
Апробация работы. Основные положения диссертации докладывались и получили положительную оценку на 66-й научно-технической конференции студентов, аспирантов и молодых ученых МИИГАиК, проходившей в марте 2011 года в Москве, и на Международной научно-технической конференции «Геодезия, картография, кадастр — современность и перспективы», посвященной 235-летию основания МИИГАиК, проходившей в мае 2014 года в Москве.
Результаты работы использовались на третьем этапе научно-исследовательской работы «Разработка обобщенной открытой программной платформы для обработки и хранения пространственных данных» (№ УДК 01201068386), выполнявшейся по заказу Министерства образования и науки Российской Федерации. Работа завершена, положительные экспертные заключения по третьему этапу свидетельствуют о достоверности полученных результатов.
Результаты работы учитывались при проведении фундаментальных исследований по теме «Разработка метода интеграции мультиспектраль-ных данных дистанционного зондирования оптического диапазона с радиолокационными данными с целью извлечения комплексной геопространственной информации при мониторинге территории ЧС» (регистрационный номер 10.9220.2014 от 04.02.2014).
Публикации по работе. Основные научные результаты диссертационной работы опубликованы в четырех журнальных статьях, в том числе
трех — в журналах, рекомендованных ВАК.
Объем и структура работы. Диссертационная работа состоит из введения, четырех глав, заключения, списка литературы, списка использованных терминов, условных обозначений и сокращений и трех приложений. Общий объем работы составляет 140 страниц, работа иллюстрирована 10 рисунками и содержит 12 таблиц. Список использованной литературы содержит 165 наименований.
Глава 1. Обзор и анализ существующих решений в области обработки пространственных данных и факторов, влияющих на их программную совместимость
С точки зрения системного анализа автоматизированную информационную систему можно рассматривать как структуру, компонующуюся из постепенно укрупняющихся блоков, начиная с простейших: инструкций процессора, конструкций языка программирования или вызовов функций операционной системы (системных вызовов), заканчивая большими и сложными подсистемами.
Таким образом, возможность рационального, с точки зрения затрат трудовых и вычислительных ресурсов, использования существующих программных компонентов как внутренней разработки, так и внешних, наиболее приближенных к предметной области решаемой задачи, с одной стороны, и наиболее удовлетворяющих локальным организационным, технологическим и техническим потребностям, с другой, является основой процесса конструирования программного обеспечения.
Концепция повторного использования программных компонентов является фундаментальной для основной массы методологий конструирования программного обеспечения.
В качестве обобщения этих методологий можно рассматривать комплекс организационно-технологических мер, известных под общим названием «быстрая разработка» (реже — «гибкая разработка»), основанный на итеративной разработке функционирующего прототипа. При этом, его программная архитектура, используемые для его разработки инструментальные средства и сторонние компоненты обеспечивают на каждом этапе:
• предсказуемость и воспроизводимость поведения прототипа,
• компактность и выразительность программного кода,
• повторное использование существующих решений — как внутренних,
так и внешних,
• возможность доработки с целью приближения характеристик к требу-
емым для внедрения.
Методологии, лежащие в основе этих требований, их обоснование, организационные и технологические способы их обеспечения и факторы, влияющие на полноту и трудоемкость их удовлетворения, подробно рассматриваются во множестве трудов по информатике и программной инженерии [36, 26, 15, 21, 25, 47, 23, 57, 70, 67, 22, 34, 27].
Возможность повторного использования программных компонентов для построения производных решений на их базе или, в частности, возможность интеграции двух и более существующих программных решений определяется соотношением их собственных характеристик, характеристик базовых по отношению к ним программных компонентов, факторов, под влиянием которых происходит их разработка, развитие и эксплуатация, а также особенностями предметной области и конкретной задачи.
В рамках настоящей работы перечисленные категории факторов будут рассмотрены в свете архитектурных, технологических и технических аспектов. Рассмотрение организационных, экономических, правовых, нормативных и других аспектов выходит за рамки задач представленной работы.
Целью данного этапа исследования является выявление и анализ факторов, оказывающих наибольшее влияние на архитектуру, внутреннее устройство и внешние характеристики программной системы в частях, определяющих её программную совместимость.
При этом автор не ставит перед собой задачу поиска и анализа всех возможных факторов и их вариаций, а только наиболее характерных факторов, рассмотрение которых позволит получить достаточно точное представление о распределении возможных характеристик программных решений.
На основе результатов этого анализа будет разработана методика оценки свойств программного решения, определяющих его программную совместимость, на основе которой, в свою очередь, будет проведен сравнительный анализ существующих решений в области обработки пространственных данных.
На следующем этапе настоящего исследования результаты проведенного анализа будут использованы в качестве основы для разработки модели требований к программной платформе для обработки и хранения простран-
ственных данных.
1.1 Обзор и анализ технологических особенностей задач обработки пространственных данных
В широком смысле слова понятие пространственных данных обобщает множество представлений информации, объединенных общей целью: отразить пространственные (пространственно-временные) характеристики и соотношения материальных объектов и явлений [7]. При этом каждое из этих представлений может быть закодировано множеством способов.
Наиболее общим является разделение на растровое и векторное представления [9]. В случае растрового представления вычислительная сложность обработки и объем занимаемой памяти определяются объемом отображенного пространства, разрешающей способностью растра, количеством и разрешающей способностью каналов. В случае векторного представления — сложностью внутренней структуры объектов, количеством объектов и связей между ними и точностью представления значений координат.
Несмотря на множество способов кодирования растровой информации, все они представляют её в виде одного или более (по одному на канал) потоков двоичных данных. В ряде случаев растровые данные снабжаются метаданными, которые могут быть представлены отдельным потоком данных (ENVI Header), либо интегрированы в основной (GeoTIFF) [74, 69].
Векторная информация имеет значительно больше вариаций внутренней структуры, поэтому вопрос её кодирования сложнее. Большинство программных решений реализует собственные форматы представления векторной информации, учитывающие специфику их задач, свойства примененных в них алгоритмов и структур данных [82, 139, 90].
Векторная информация, помимо пространственных характеристик объектов, может содержать сведения об их топологических отношениях [82, 90].
Среди ГИС наиболее распространена поддержка текстового формата кодирования пространственных данных WKT и его двоичного аналога WKB, стандартизированных OGC [151, 152], а также формата Shapefile [72] (.shp, .shx, .dbf, .sbn), развиваемого компанией ESRI. Среди САПР наиболее рас-
пространены форматы DXF, его двоичная версия DXB и DWG, развиваемые компанией Autodesk. При этом форматы DXF и DXB являются ограниченными, однако открытыми и стандартизированными аналогами формата DWG, официальная спецификация которого недоступна широкой публике, а единственная полная реализация (за исключением интегрированной в Autodesk AutoCad) — RealDWG является коммерческим продуктом, распространяемым под ограниченной лицензией [123].
На практике рассмотрение пространственно-временных характеристик и соотношений имеет смысл только в связи со сведениями о семантике рассматриваемых объектов или явлений, что делает атрибутивные данные неотделимыми от пространственных данных [9].
Задача поддержания связи пространственных данных с атрибутивными также имеет множество решений.
Наиболее общим решением является рассмотрение пространственных данных как частного случая атрибутивных и хранения их наравне, в общем «контейнере», целостность которого обеспечивается используемым хранилищем данных. Это решение применяется в СУБД с пространственными расширениями (PostgreSQL+PostGIS, Oracle Spatial, Microsoft SQL Server, MySQL/MariaDB и др.) [131, 76]. Ключевым преимуществом этого подхода является возможность обработки пространственных и атрибутивных данных обобщенными алгоритмами, не учитывающими специфику пространственных данных. Недостатком метода является низкая производительность доступа к пространственной части данных, что снижает эффективность реализации некоторых задач, в частности — визуализации данных для интерактивного пользовательского интерфейса.
Остальные способы основываются на построении ссылочной системы между пространственными и атрибутивными данными, хранимыми раздельно [9]. Такой подход решает проблему эффективного доступа к пространственной части данных, однако порождает новую — поддержание целостности ссылочной системы, которая, в свою очередь, увеличивает накладные расходы, что особенно сказывается при активном обновлении массива данных.
Визуализация пространственных данных и наличие интерак-
тивного пользовательского интерфейса для их обработки являются важнейшими для конечного пользователя функциональными возможностями [7]. С точки зрения реализации задача визуализации пространственной информации имеет ряд особенностей, важнейшие из которых:
• относительно большие объемы данных,
• широкий диапазон масштабов отображения,
• различные системы координат исходных данных — как плоские, так и
сферические.
Другой, не менее важной функциональной возможностью является выполнение над данными пространственных операторов. Для ГИС их
набор стандартизирован OGC [151, 152] и разбит на категории: измерения (Spatial Measurements), функции (Spatial Functions), предикаты (Spatial Predicates), построения (Constructor Functions) и аналитические вычисления (Observer Functions).
Технологической основой для эффективного выполнения задач визуализации и математической обработки пространственных данных является пространственная индексация [5].
Существует два семейства структур данных, обеспечивающих быстрый поиск по большому массиву данных, загруженных в память или хранящихся на внешнем носителе: деревья поиска и хеш-таблицы. Однако их реализации общего назначения не подходят для пространственных данных, так как приспособлены для одномерных распределений, в то время как пространственные данные имеют двух- или трехмерное распределение.
Для приложения двоичных деревьев поиска к задаче поиска в многомерном пространстве применяется метод двоичного разделения пространства, для которого создано множество реализаций: k-D дерево, R-дерево, Я+-дерево, Я*-дерево и др. [5, 130].
Альтернативой деревьям поиска являются алгоритмы пространственного хеширования — специализированные функции, представляющие координаты в пространстве в виде последовательности бит таким образом, что близость значений старших разрядов последовательностей соответствует близости представленных последовательностями координат, а общее количество разрядов пропорционально точности представленных координат. Технически
этот подход также основан на двоичном разделении пространства [50, 54].
Оба эти подхода требуют дополнительной обработки особых случаев — близости значений координат к началу или концу периода [50].
Поддержка множества различных систем координат также является важным свойством систем обработки пространственных данных. Помимо глобальных прямоугольных, геоцентрических, астрономических и географических систем координат необходима поддержка национальных, региональных и местных систем координат различных видов [24, 9, 133].
Похожие диссертационные работы по специальности «Геоинформатика», 25.00.35 шифр ВАК
Методы и инструменты декларативного программирования динамических Web-узлов и приложений2017 год, кандидат наук Кейно, Павел Петрович
Векторизация и конвертация данных лазерной локации в ГИС-технологиях2007 год, кандидат технических наук Жигалов, Кирилл Юрьевич
Разработка структуры интегрированной системы управления технологическими процессами на железнодорожном транспорте, основанной на обработке пространственно-ориентированной информации2001 год, кандидат технических наук Павловский, Андрей Александрович
Методы, модели и технологии разработки и интеграции распределённых гетерогенных программно-вычислительных комплексов в АСДУ ЕСГ2018 год, доктор наук Леонов Дмитрий Генадьевич
Методы разработки интеграционной платформы для многомасштабного моделирования (в задачах материаловедения)2022 год, кандидат наук Гаврилов Евгений Сергеевич
Список литературы диссертационного исследования кандидат наук Гвоздев Олег Геннадьевич, 2016 год
Список литературы
1. Александр Богданов, Владимир Корхов, Владимир Мареев, Елена Стан-кова. Архитектуры и топологии многопроцессорных вычислительных систем. Курс лекций. М.: Интернет-университет информационных технологий. 2004. ISBN 5-9556-0018-3
2. Александр Степанов, Пол Мак-Джонс Начала программирования = Elements of Programming. - М.: «Вильямс», 2011. - 272 с. - ISBN 9785-8459-1708-9.
3. Алексеевский М.В. Интеграция и глобализация программного обеспечения обработки данных // Проблемы управления . 2007. №4. С.19-23.
4. Артур Бакиев. Типичные сценарии распространения и обработки исключений [Электронный ресурс]. URL: http://experience.openquality.ru/exception-handling/ (дата обращения: 25.08.2014).
5. Боресков А.В. Пространственные индексы (spatial index) и их использование [Электронный ресурс] URL: http://steps3d.narod.ru/tutorials/spatial-index-tutorial.html (дата обращения: 25.08.2014).
6. Брюс Эккель. Философия Java - Питер, 2013. - ISBN 978-5-4461-0107-8
7. Бугаевский Л.М., Цветков В.Я. Геоинформационные системы. - М.: Златоуст, 2000. - 222 с.
8. Вентцель Е.С. Исследование операций: задачи, принципы, методология. -М.: Наука, 1988. - С. 206.
9. Геоинформатика: Учеб. для студ. вузов / Е.Г.Капралов, А. В. Кошкарев, В. С. Тикунов и др.; Под ред. В. С.Тикунова. - М: Издательский центр Академия», 2005. - 480 с.
10. Гленфорд Майерс, Том Баджетт, Кори Сандлер. Искусство тестирования программ, 3-е издание = The Art of Software Testing, 3rd Edition. - М.: «Диалектика», 2012. - 272 с. - ISBN 978-5-8459-1796-6.
11. Граничин О.Н. Введение в методы стохастической оптимизации и оцени-
вания. Учебное пособие. Издательство С.-Петербургского университета, 2003 - 131 с.
12. Грин Д., Кнут Д.. Математические методы анализа алгоритмов./Пер. с англ. - М.: Мир, 1987. - 120 с.
13. Гуц А.К. Математическая логика и теория алгоритмов: Учебное пособие.
- Омск: Издательство Наследие. Диалог-Сибирь, 2003. - 108 с. ISBN 5-82390126-7
14. Джереми Сик, Лай-Кван Ли, Эндрю Ламсдэйн. C++ Boost Graph Library.
- Питер, 2006. - 304 с. - ISBN 5-469-00352-3
15. Дональд Кнут. Искусство программирования - 3-е изд. Т. 1: Основные алгоритмы/ М.: Вильямс, 2006. - 720 с.
16. Евгений Кирпичев. Монады в Haskell [Электронный ресурс]. URL: http://rsdn.ru/article/funcprog/monad.xml (дата обращения: 25.08.2014).
17. Искусство программирования на C. Фундаментальные алгоритмы, структуры данных и примеры приложений. Энциклопедия программиста: Пер. с англ./Ричард Хэзфилд, Лоуренс Кирби и др. - К.: Издательство "ДиаСофт 2001. - 736 с.
18. Каймин В.А. Основы доказательного программирования. М.:МИЭМ, 1987.
19. КБ ПАНОРАМА - Средство разработки ГИС-приложений GIS ToolKit (Windows) [Офиц. сайт]. URL: http://www.gisinfo.ru/products/gistool_win.htm (дата обращения: 25.08.2014).
20. Кент Бек. Экстремальное программирование: разработка через тестирование. - «Питер», 2003. ISBN 5-8046-0051-6, ISBN 0-321-14653-0
21. Кролл П., Крачтен Ф.. Rational Unified Process - это легко. Руководство по RUP для практиков. - Перевод с английского. - М.: КУДИЦ-Образ, 2004. - 432 с - ISBN 5-9579-0019-2
22. Крэг Ларман. Применение UML 2.0 и шаблонов проектирования = Applying UML and Patterns : An Introduction to Object-Oriented Analysis
and Design and Iterative Development. — 3-е изд. — М.: Вильямс, 2006. — 736 с. — ISBN 0-13-148906-2.
23. Лайза Криспин, Джанет Грегори Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = Agile Testing: A Practical Guide for Testers and Agile Teams. — М.: «Вильямс», 2010. — 464 с. — (Addison-Wesley Signature Series). — ISBN 978-5-8459-1625-9.
24. М.Э. Флейс, М.М. Борисов. Системы координат и математическая основа ГИС. [Электронный ресурс]. URL: http://geocnt.geonet.ru/ru/cs (дата обращения: 25.08.2014).
25. Майк Кон Scrum: гибкая разработка ПО = Succeeding with Agile: Software Development Using Scrum (Addison-Wesley Signature Series). — М.: «Вильямс», 2011. — С. 576.
26. Макконнелл С.. Совершенный код. — СПб.: «Питер», 2007. — С. 896.
27. Мартин Р., Мартин М. Принципы, паттерны и методики гибкой разработки на языке C# - Символ-Плюс, 2011, ISBN: 5-93286-197-5 978-5-93286197-4 0-13-185725-8 978-0-13-185725-4
28. Матерухин А.В. Разработка методических и технологических принципов создания специализированных геоинформационных систем — инструментальных средств для массовой оценки недвижимости: диссертация кандидата технических наук: 25.00.35/ Матерухин А.В.; [Место защиты Московский Государственный Университет Геодезии и Картографии. защищена 17.05.2012]. Москва, 2012.
29. Николай Непейвода. Стили и методы программирования. Курс лекций. Учебное пособие. М.: Интернет-университет информационных технологий. 2004. ISBN 5-9556-0023-Х
30. О.М. Атаева, А.А. Каленкова, В.А. Серебряков. MultiMeta — Система интеграции пространственных данных и ресурсов электронных библиотек. Вычислительный центр им. А.А. Дородницына, РАН, г.Москва. [Электронный ресурс] URL: http://ceur-ws.org/Vol-803/paper4.pdf (дата обращения: 26.08.2014).
31. П.А. Клеменков. Оценка производительности программного обеспече-ния
в виртуализованном окружении на основе атомарных тестов // Тру-ды Института системного программирования РАН. 2011. Т. 21.
32. Прокофьева И.В., Шибанов С.В., Шашков Б.Д. Анализ применения современных технологий интеграции данных в разнородных распределенных информационных системах // Труды Международного симпозиума «Надежность и качество» . 2009. №. С.243-249.
33. Рихтер Дж. Windows для профессионалов: создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows/Пер. с англ. - 4-е изд. - СПб: Питер; М.: Издательско-торговый дом «Русская редакция», 2001. - 752 с.:ил.
34. Роберт С. Мартин, Джеймс В. Ньюкирк, Роберт С. Косс. Быстрая разработка программ. Принципы, примеры, практика — Вильямс, 2004, ISBN 5-8459-0558-3, ISBN 0-13-597444-5
35. Синицын С.В., Налютин Н.Ю. Верификация программного обеспечения. М.:БИНОМ, 2008.
36. Соловьев И.В., Майоров А.А. Проектирование информационных систем. Фундаментальный курс. Под ред. В.П. Савиных. - СПб.: «Академический Проект». 2009. - 394 с.
37. Сравнительный анализ потенциала к повторному использованию существующих решений в области обработки пространственных данных / А.А. Майоров, О.Г. Гвоздев // Известия вузов. Геодезия и Аэрофотосъемка. 2014. №4. С.81-87
38. Сравнительный анализ технологий локальной оптимизации программ на языке Python в задачах обработки пространственных данных / А.А. Майоров, О.Г. Гвоздев // Известия вузов. Геодезия и Аэрофотосъемка. 2014. №5. С.61-69
39. Стивен Прата. Язык программирования С++. Лекции и упражнения. Учебник/Пер. с англ./К.:Издательство "ДиаСофт 2001. - 656 с.
40. Франгулова Е.В. Классификация подходов к интеграции и интеропера-бельности информационных систем // Вестник АГТУ. Серия: Управление, вычислительная техника и информатика . 2010. №2. С.176-180.
41. Х. Фултон. Программирование на языке Ruby = The Ruby Way / пер. с англ. А. Слинкин. - 2-е изд. - М.: ДМК Пресс, 2007. - 688 с. - (Языки программирования). — ISBN 5-94074-357-9.
42. Харольд Абельсон, Джеральд Джей Сассман, Джуля Сассман. Структура и интерпретация компьютерных программ. М.: Добросвет. 2006. 608 с.
43. Шибанов С.В., Яровая М.В, Шашков Б.Д., Кочегаров И.И., Трусов В.А., Гришко А.К. Обзор современных методов интеграции данных в информационных системах // Труды Международного симпозиума «Надежность и качество» . 2010. № 1. С.292-295.
44. Штойер Р. Многокритериальная оптимизация: теория, вычисления и приложения. — М.: Радио и связь, 1992. — С. 504.
45. Энтони Уильямс. Параллельное программирование на C++ в действии. Практика разработки многопоточных программ. М.: ДМК Пресс. 2012. ISBN 978-5-94074-448-1
46. A. Pavlo, E. Paulson, A. Rasin, D. J. Abadi, D. J. DeWitt, S. Madden, and M. Stonebraker, "A comparison of approaches to large-scale data analysis,"in SIGMOD '09: Proceedings of the 35th SIGMOD international conference on Management of data, New York, NY, USA, 2009, pp. 165-178.
47. Alan S. Koch Agile Software Development: Evaluating the Methods for Your Organization. — Artech House, 2004. — С. 280.
48. Alexander Stepanov. Short History of STL. [Электронный ресурс]. URL: http://www.stepanovpapers.com/history
49. Andreas Hart, Yolanda Gil. Geospatial Data Integration with Linked Data and Provenance Tracking [Электронный ресурс] URL: http://www.w3.org/2014/03/lgd/papers/lgd14_submission_54.pdf (дата обращения: 26.08.2014).
50. Anthony Fox, Chris Eichelberger, James Hughes, Skylar Lyon. Spatio-temporal Indexing in Non-relational Distributed Database. Commonwealth Computer Research. [Электрон-
ный ресурс] URL: http://www.geomesa.org/assets/outreach/ SpatioTemporalIndexing_IEEEcopyright.pdf (дата обращения: 25.08.2014).
51. ArcGIS for Professionals [Офиц. сайт]. URL: http://pro.arcgis.com/ (дата обращения: 26.04.2014).
52. Aspect Oriented Programming: learn step by step and roll your own implementation! [Электронный ресурс]. URL: http://www.codeproject.com/Articles/479302/Aspect-0riented-Programming-learn-step-by-step-and , 2013 (дата обращения: 25.08.2014).
53. Bertrand Meyer. Genericity versus Inheritance. University of California, Santa Barbara. 1986. ACM 0-89791-204-7/86/0900-0391
54. Big Data Modeling. Visualizing Geohash. [Электронный ресурс] URL: http://www.bigdatamodeling.org/2013/01/intuitive-geohash.html (дата обращения: 25.08.2014).
55. Bjarne Stroustrup. C++ Style and Technique FAQ [Электронный ресурс]. URL: http://www.stroustrup.com/bs_faq2.html 2014. (дата обращения: 25.08.2014).
56. Bjarne Stroustrup. C++11 - the new ISO C++ standard [Электронный ресурс]. URL: http://www.stroustrup.com/C++11FAQ.html 2014. (дата обращения: 25.08.2014).
57. Bjorn Gustafsson. OpenUP — The Best of Two Worlds. [Электронный ресурс]. URL: http://www.methodsandtools.com/archive/archive.php?id=69 (дата обращения: 25.08.2014).
58. BLAS (Basic Linear Algebra Subprograms) [Офиц. сайт]. URL: http://www.netlib.org/blas/ (дата обращения: 25.08.2014).
59. Boost C++ Libraries [Офиц. сайт]. URL: http://www.boost.org/ (дата обращения: 25.08.2014).
60. Boost.Archive [Офиц. руководство]. URL: http://www.boost.org/doc/libs/1_56_0/libs/serialization/doc/index.html (дата обращения: 25.08.2014).
61. Chris Lattner. What Every C Programmer Should Know About Undefined
Behavior. [Электронный ресурс]. URL: http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html 2011. (дата обращения: 25.08.2014).
62. Data types — NumPy Manual [Офиц. сайт]. URL: http://docs.scipy.org/doc/numpy/user/basics.types.html (дата обращения: 25.08.2014).
63. David A. Musser and Alexander A. Stepanov. Generic Programming. In proceeding of International Symposium on Symbolic and Algebraic Computation, volume 358 of Lecture Notes in Computer Science, pages 13-25, Rome, Italy, 1988
64. David Abrahams, Aleksey Gurtov. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond. Addison Wesley Professional. ISBN: 0-321-22725-5
65. David Morgan, Andreas Leitner and Nhat Minh Le. Contracts for Java [Электронный ресурс]. URL: http://google-opensource.blogspot.ru/2011/02/contracts-for-java.html (дата обращения: 25.08.2014).
66. David Vandevoorde, Nicolai M Josuttis, C++ Templates: The Complete Guide, 2003 Addison-Wesley. ISBN 0-201-73484-2
67. Don Wells. Extreme Programming: A gentle introduction [Электронный ресурс]. URL: http://www.extremeprogramming.org/ (дата обращения: 25.08.2014).
68. Donald E. Knuth. Literate Programming. Stanford, California: Center for the Study of Language and Information, 1992. ISBN 0-937073-80-6
69. Earth science satellite remote sensing: Data, computational processing, and tools. Vol.2, 2006, Springer, 354p. ISBN 3-540-35630-4
70. Eclipce Project Foundation — OpenUP [Электронный ресурс]. URL: http://epf.eclipse.org/wikis/openup/ (дата обращения: 25.08.2014).
71. Eric Steven Raymond. The Art of Unix Programming. [Электронный ресурс]. URL: http://www.faqs.org/docs/artu/ (дата обращения: 25.08.2014).
72. ESRI Shapefile Technical Description [Электронный ресурс] URL:
http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf (дата обращения: 25.08.2014).
73. Ester, M., H. P. Kriegel, J. Sander, and X. Xu, "A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise". In: Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining, Portland, OR, AAAI Press, pp. 226-231. 1996
74. Exelis VIS Docs Center. ENVI Header Files. [Электронный ресурс] URL: https://www.exelisvis.com/docs/ENVIHeaderFiles.html (дата обращения: 25.08.2014).
75. Extensible Markup Language (XML) 1.1 (Second Edition). [Электронный ресурс]. URL: http://www.w3.org/TR/2006/REC-xml11-20060816/ (дата обращения: 25.08.2014).
76. Extensions for Spatial Data [Офиц. руководство]. URL: http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html (дата обращения: 25.08.2014).
77. FlatBuffers Documentation [Офиц. руководство]. URL: http://google.github.io/flatbuffers/ (дата обращения: 25.08.2014).
78. Francesco Logozzo and Tom Ball, Modular and Verified Automatic Program Repair, in Proceedings of the 27th ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA'12), ACM SIGPLAN, 23 October 2012
79. Francesco Logozzo, Shuvendu Lahiri, Manuel Fahndrich, and Sam Blackshear, Verification Modulo Versions: Towards Usable Verification, in Proceedings of the 35th conference on Programming Languages, Design, and Implementation (PLDI 2014), ACM SIGPLAN, June 2014
80. Gabriel Dos Reis and Jaakko Jarvi, What is Generic Programming? 2005, LCSD
81. GCC, the GNU Compiler Collection. [Офиц. сайт]. URL: https://gcc.gnu.org/ (дата обращения: 25.08.2014).
82. GDAL — Geospatial Data Abstraction Library [Офиц. сайт] URL: http://www.gdal.org/ (дата обращения: 25.08.2014).
83. GeoAlchemy2: Using SQLAlchemy with Spatial Databases. [Офиц. сайт] URL: https://geoalchemy-2.readthedocs.org/ (дата обращения: 25.08.2014).
84. GeoniCS: Изыскания (RGS, RGSPL) 8.0.0 [Электронный ресурс] // ООО "ПК Румб". Оффициальный сайт [Офиц. сайт]. URL: http://www.rumbgeo.ru/programma-rgs.html (дата обращения: 26.04.2014).
85. GEOS - Geometry Engine, Open Source [Офиц. сайт]. URL: http://trac.osgeo.org/geos/ (дата обращения: 25.08.2014).
86. GNU Gama [Офиц. сайт].
URL: http://www.gnu.org/software/gama/gama.html (дата обращения: 26.04.2014).
87. Goldberg, Daniel W. A Geocoding Best Practices Guide. [Электронный ресурс]. URL: http://www.naaccr.org/LinkClick.aspx? fileticket=ZKekM8k_IQ0%3d&tabid=239&mid=699 , Springfield, IL: NAACCR, 2008 (дата обращения: 25.08.2014)
88. Google C++ Style Guide [Электронный ресурс]. URL: http://google-styleguide.googlecode.com/svn/trunk/cppguide.html (дата обращения: 25.08.2014).
89. Google Python Style Guide [Электронный ресурс]. URL: https://google-styleguide.googlecode.com/svn/trunk/pyguide.html (дата обращения: 25.08.2014).
90. GRASS GIS [Офиц. сайт]. URL: http://grass.osgeo.org/ (дата обращения: 26.04.2014).
91. gvSIG Portal [Офиц. сайт]. URL: http://www.gvsig.org/ (дата обращения: 25.08.2014).
92. Harvey Tuch. Formal verification of C systems code: Structured types, separation logic and theorem proving [Электронный ресурс]. URL: http://ssrg.nicta.com/publications/papers/Tuch_09.pdf 2009. (дата обращения: 25.08.2014).
93. Hemant Mehta, Priyesh Kanungo and Manohar Chandwani. Generic data access and integration service for distributed computing environment.
International Journal of Grid Computing & Applications (IJGCA) Vol.1, No.1, September 2010
94. Heshan Du, Suchith Anand, Natasha Alechina, Jeremy Morley, Glen Hart, Didier Leibovici, Mike Jackson, Mark Ware. Geospatial Information Integration for Authoritative and Crowd Sourced Road Vector Data. Transactions in GIS, 2012, № 16(4): 455-476
95. Holt, Jon SysML for Systems Engineering. — The Institution of Engineering and Technology, 2008. — ISBN 978-0-86341-825-9.
96. Hossein Mohammadi, Abbas Rajabifard, Ian P. Williams. Enabling Spatial Data Sharing through Multi-source Spatial Data Integration. Centre for Spatial Data Infrastructure and Land Administration. Department of Geomatics. University of Melbourn [Электронный ресурс] URL: http://www.gsdi.org/gsdiconf/gsdi11/papers/pdf/170.pdf (дата обращения: 26.08.2014).
97. IBM developerWorks Россия. A0P@Work: Мифы и реальности [Электронный ресурс]. URL: https://www.ibm.com/developerworks/ru/library/j-aopwork15/ , 2006 (дата обращения: 25.08.2014).
98. IDEF Family of Methods: A Structured Approach to Enterprise Modeling & Analysis [Офиц. сайт]. URL: http://idef.com/ (дата обращения: 25.08.2014).
99. Jeffrey M. Squyres. The Architecture of Open Source Applications. Volume 2. Open MPI. [Электронный ресурс]. URL: http://aosabook.org/en/openmpi.html (дата обращения: 25.08.2014).
100. Joel Spolsky. Joel on Software. The Law of Leaky Abstractions. [Электронный ресурс]. URL: http://www.joelonsoftware.com/articles/LeakyAbstractions.html (дата обращения: 25.08.2014).
101. Joel Spolsky. Joel on Software. Three Wrong Ideas From Computer Science. [Электронный ресурс]. URL: http://joelonsoftware.com/articles/fog0000000041.html (дата обращения: 25.08.2014).
102. Joel Spolsky. Joel on Software. Up the tata without a tutu. [Электронный
ресурс]. URL: http://www.joelonsoftware.com/articles/fog0000000026.html (дата обращения: 25.08.2014).
103. Jonathan Bartlett. The art of metaprogramming, Part 1: Introduction to metaprogramming [Электронный ресурс]. URL: http://www.ibm.com/developerworks/linux/library/l-metaprog1/index.html
, 2005 (дата обращения: 25.08.2014).
104. JSON (JavaScript Object Notation). [Офиц. сайт]. URL: http://json.org/ (дата обращения: 25.08.2014).
105. Kevin Hazzard, Jason Bock. Metaprogramming in .NET. Manning Publications Co. 2013. ISBN: 9781617290268
106. Leica Geosystems. [Офиц. сайт]. URL: http://www.leica-geosystems.com/ (дата обращения: 26.04.2014).
107. Lugovsky V. S.. Using a hierarchy of Domain Specific Languages in complex software systems design. arXiv:cs/0409016
108. Lui, J. C. S.; Misra, V.; Rubenstein, D. "On the robustness of soft state protocols". Proceedings of the 12th IEEE International Conference on Network Protocols, 2004. ICNP 2004. p. 50. ISBN 0-7695-2161-4.
109. M. Stonebraker, D. Abadi, D. J. DeWitt, S. Madden, E. Paulson, A. Pavlo, and A. Rasin, "MapReduce and Parallel DBMSs: Friends or Foes?,"Communications of the ACM, vol. 53, iss. 1, pp. 64-71, 2010.
110. Manuel Fahndrich, Static Verification for Code Contracts, in SAS'10 Proceedings of the 17th international conference on Static analysis, Springer Verlag, September 2010
111. MapInfo.com [Офиц. сайт]. URL: http://www.mapinfo.com/ (дата обращения: 26.04.2014).
112. Markus Kowarschik and Christian Weib. An Overview of Cache Optimization Techniques and Cache-Aware Numerical Algorithms [Электронный ресурс]. URL: http://www.cc.gatech.edu/ bader/COURSES/UNM/ece637-Fall2003/papers/KW03.pdf 2003. (дата обращения: 25.08.2014).
113. Martin Fowler. The LMAX Architecture. [Электронный ресурс]. URL: http://martinfowler.com/articles/lmax.html (дата обращения: 25.08.2014).
114. McCabe Thomas J. A Complexity Measure // IEEE Transactions on software engineering. 1976. Т. SE-2, № 4. С. 308-320.
115. MessagePack. [Офиц. сайт]. URL: http://msgpack.org/ (дата обращения: 25.08.2014).
116. Michael Kerrisk. The Linux Programming Interface: A Linux and UNIX System Programming Handbook. No Starch Press. 2010. ISBN 978-1-59327220-3.
117. Michael Rosen, David Curtis. Integrating CORBA and COM Applications. John Wiley & Sons. ISBN 0-471-19827-7.
118. Michael S. V. Turner. Microsoft Solutions Framework Essentials. — Microsoft Learning, 2006. — С. 340.
119. Microsoft Extensions to C and C++ [Офиц. руководство]. URL: http://msdn.microsoft.com/en-us/library/34h23df8.aspx (дата обращения: 25.08.2014).
120. MicroSurvey STAR*NET Least Squares Adjustment [Электронный ресурс] // MicroSurvey: Land Surveying Software and Surveying Data Collection Software [Офиц. сайт]. URL: http://www.microsurvey.com/products/starnet/ (дата обращения: 26.04.2014).
121. Mortaza Saleh, Tahere Yaghoobi and Ahmad Faraah. A combinational approach of gis and soa for performance improvement of organization. International Journal of Web & Semantic Technology (IJWesT) Vol.3, No.1, January 2012.
122. Object-oriented programming With ANSI-C [Электронный ресурс]. URL: http://www.cs.rit.edu/ ats/books/ooc.pdf (дата обращения: 25.08.2014).
123. ObjectARX - AutoCAD API Programming Environment. [Офиц. руководство]. URL: http://usa.autodesk.com/adsk/servlet/index ?siteID=123112&id=773204 (дата обращения: 26.04.2014).
124. OpenLayers 3 API Documentation [Офиц. руководство] URL: http://openlayers.org/en/v3.0.0/apidoc/ (дата обращения: 25.08.2014).
125. Oracle Documentation [Офиц. сайт]. URL: http://docs.oracle.com/ (дата обращения: 26.04.2014).
126. pandas: Python Data Analysis Library [Офиц. сайт]. URL: http://pandas.pydata.org/ (дата обращения: 25.08.2014).
127. Paolo Perrotta. Metaprogramming Ruby: Program Like the Ruby Pros. ISBN: 978-1-934356-47-0
128. PEP 8 - Style Guide for Python Code [Электронный ресурс]. URL: http://www.python.org/dev/peps/pep-0008 (дата обращения: 25.08.2014).
129. Peter Van Roy. Concepts, Techniques, and Models of Computer Programming. MIT Press. 2004. ISBN: 0262220695
130. Philippe Rigaux, Michel Scholl and Agnes Voisard. Spatial Databases - With Application to GIS. Morgan-Kauffman Publishers. 2002. ISBN 1-55860-588-6
131. PostGIS - Spatial and Geographic Objects for PostgreSQL [Офиц. сайт]. URL: http://postgis.net/ (дата обращения: 26.04.2014).
132. Pouria Amirian and Ali A. Alesheikh. Publishing Geospatial Data through Geospatial Web Service and XML Database System. American Journal of Applied Sciences 5 (10)1358-1368, 2008. ISSN 1546-9239
133. PROJ.4 - Cartographic Projections Library [Офиц. сайт]. URL: http://trac.osgeo.org/proj/ (дата обращения: 25.08.2014).
134. Protocol Buffers - Google's data interchange format. [Офиц. сайт]. URL: https://code.google.com/p/protobuf/ (дата обращения: 25.08.2014).
135. pyproj - Python interface to PROJ.4 library [Офиц. сайт]. URL: https://code.google.com/p/pyproj/ (дата обращения: 25.08.2014).
136. Python for ArcGIS [Электронный ресурс] // ArcGIS for Professionals [Офиц. сайт]. URL: http://pro.arcgis.com/en/analysis/python/ (дата обращения: 26.04.2014).
137. Python Programming Language [Офиц. сайт]. URL: https://www.python.org/ (дата обращения: 26.04.2014).
138. Python v2.7 documentation [Офиц. руководство]. URL: https://docs.python.org/2.7/ (дата обращения: 26.04.2014).
139. QGIS Geographic Information System. Open Source Geospatial Foundation Project. [Офиц. сайт]. URL: http://www.qgis.org/ (дата обращения: 26.04.2014).
140. RFC 1737 - Functional Requirements for Uniform Resource Names [Электронный ресурс]. URL: http://tools.ietf.org/html/rfc1737 (дата обращения: 25.08.2014).
141. RFC 1738 - A Gopher URL Format [Электронный ресурс]. URL: http://tools.ietf.org/html/rfc1738 (дата обращения: 25.08.2014).
142. RFC 2141 - URN Syntax [Электронный ресурс]. URL: http://tools.ietf.org/html/rfc2141 (дата обращения: 25.08.2014).
143. RFC 3986 - Uniform Resource Identifier (URI) Generic Syntax [Электронный ресурс]. URL: http://tools.ietf.org/html/rfc3986 (дата обращения: 25.08.2014).
144. RFC 4122 - A Universally Unique IDentifier (UUID) URN Namespace [Электронный ресурс]. URL: http://tools.ietf.org/html/rfc4122 (дата обращения: 25.08.2014).
145. Richardson, Leonard; Sam Ruby (2007), RESTful web service, O'Reilly Media, ISBN 978-0-596-52926-0
146. Robert C. Martin. Design Principles and Design Patterns. [Электронный ресурс]. URL: http://objectmentor.com/resources/articles/Principles_and_Patterns.pdf 2000. (дата обращения: 25.08.2014).
147. Roy T., Taylor, Richard N. Principled Design of the Modern Web Architecture. May 2002, ACM Transactions on Internet Technology (TOIT) (New York: Association for Computing Machinery) 2 (2): 115-150, doi:10.1145/514183.514185, ISSN 1533-5399
148. Scikit-learn: Machine Learning in Python / F. Pedregosa, G. Varoquaux, A. Gramfort [и др.] // Journal of Machine Learning Research. 2011. Т. 12. С. 2825-2830
149. Segaran, Toby; Hammerbacher, Jeff. Beautiful Data: The Stories Behind Elegant Data Solutions. O'Reilly Media. 2009. p. 257. ISBN 978-0-596-157111.
150. Shapely - Manipulation and analysis of geometric objects [Офиц. сайт]. URL: https://github.com/Toblerity/Shapely (дата обращения: 25.08.2014).
151. Simple Feature Access - Part 1: Common Architecture [Электронный ресурс] // Open Geospatial Consortium [Офиц. сайт]. URL: http://www.opengeospatial.org/standards/sfa (дата обращения: 26.04.2014).
152. Simple Feature Access - Part 2: SQL Option [Электронный ресурс] // Open Geospatial Consortium [Офиц. сайт]. URL: http://www.opengeospatial.org/standards/sfs (дата обращения: 26.04.2014).
153. SOAP Version 1.2 Part 1: Messaging Framework (Second Edition) [Электронный ресурс]. URL: http://www.w3.org/TR/soap12-part1/ (дата обращения: 25.08.2014).
154. SOAP Version 1.2 Part 2: Adjuncts (Second Edition) [Электронный ресурс]. URL: http://www.w3.org/TR/2007/REC-soap12-part2-20070427/ (дата обращения: 25.08.2014).
155. Spatial Data (SQL Server) [Офиц. руководство]. URL: http://msdn.microsoft.com/en-us/library/bb933790.aspx (дата обращения: 25.08.2014).
156. SQLAlchemy: The Python SQL Toolkit and Object Relational Mapper [Офиц. сайт] URL: http://www.sqlalchemy.org/ (дата обращения: 25.08.2014).
157. Standard for Programming Language C++. [Электронный ресурс]. URL: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf (дата обращения: 25.08.2014).
158. TerraLib [Офиц. сайт]. URL: http://www.terralib.org/ (дата обращения: 25.08.2014).
159. The Apache Thrift software framework [Офиц. сайт]. URL: https://thrift.apache.org/ (дата обращения: 25.08.2014).
160. The ArcPy site package [Электронный ресурс] // ERSI ArcGis Resource Center [Офиц. сайт]. URL: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/ What_is_ArcPy/000v000000v7000000/ (дата обращения: 26.04.2014).
161. W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures [Электронный ресурс] URL: http://www.w3.org/TR/xmlschema11-1/ (дата обращения: 25.08.2014).
162. W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes [Электронный ресурс] URL: http://www.w3.org/TR/xmlschema11-2/ (дата обращения: 25.08.2014).
163. Walter Bright. D Programming Language, Contract Programming. Digital Mars, 2006.
164. Xavier Leroy. Formal verification of a realistic compiler [Электронный ресурс]. URL: http://gallium.inria.fr/ xleroy/publi/compcert-CACM.pdf 2008. (дата обращения: 25.08.2014).
165. Zahavi, Ron. Enterprise Application Integration with CORBA: Component and Web-Based Solutions. John Wiley & Sons. ISBN 0-471-32720-4.
Список терминов, условных обозначений и сокращений
ABI (англ. Application Binary Interface) — набор соглашений между программами, библиотеками и операционной системой, обеспечивающих взаимодействие этих компонентов на низком уровне на данной платформе. ABI регламентирует размер и выравнивание основных типов данных, формат передачи аргументов и возвращаемого значения при вызове функции и др.
API (англ. Application Programming Interface) — Интерфейс Программирования Приложений. Иногда используется более общий термин — «программный интерфейс». Набор классов, функций, структур данных и констант, предоставляемых приложением, библиотекой или сервисом для использования во внешних программных продуктах.
DSL — см. предметно-ориентированный язык программирования.
OGC — Open Geospatial Consortium.
Вычислительная единица — см. Единица выполнения.
Вычислительная среда — множество аппаратных и программных компонентов, определяющих условия функционирования рассматриваемого блока. Включает в себя операционную систему, используемые программные платформы, каркасы, библиотеки и другие компоненты.
Геоинформационная система — в широком смысле слова, совокупность аппаратного и программного обеспечения, пространственных данных, методов их обработки и пользователей. В узком смысле слова — программное обеспечение геоинформационных систем. В рамках данной работы термин «геоинформационная система» применяется в узком смысле слова.
Десериализация — обратный сериализации процесс восстановления структуры данных из соответвующей ей последовательности битов.
Единица выполнения — общее название примитивов операционной системы, управляемых планировщиком процессорного времени. Наиболее часто представлена с помощью процессов или потоков.
«Закрытое» программное обеспечение — программное обеспечение, исходный код которого не доступен для изучения или изменения.
Защитный отказ — состояние неработоспособности аппаратной или
программной системы, при котором оно не представляет опасности для взаимодействующих с ним объектов или процессов.
Массовая обработка данных — программное решение, в котором количество объектов данных многократно превосходит количество типов этих объектов, то есть программное решение, обрабатывающее преимущественно однотипные данные.
Метаобъект — одно из основных понятий метапрограммирования. Объект, который манипулирует или описывает программные объекты такие, как типы, переменные, интерфейсы, классы, методы, атрибуты и т.п.
Метапрограммирование — совокупность принципов, методов и технологий проектирования и разработки программ, анализирующих или манипулирующих объектами, составляющими другие программы, такими как типы, переменные, интерфейсы, классы, методы, атрибуты и т.п.
Неопределённое поведение (англ. undefined behaviour) — свойство некоторых языков программирования, в особенности низкоуровневых, программных библиотек и аппаратного обеспечения в определённых ситуациях возвращать результат, зависящий от особенностей их реализации и случайных параметров, например, состояния памяти или сработавшего прерывания.
Обобщенное программирование — парадигма программирования, предполагающая описание структур данных и алгоритмов их обработки в виде, накладывающем минимально необходимые ограничения на конкретные обрабатываемые типы данных.
«Открытое» программное обеспечение — программное обеспечение, исходный код которого доступен для изучения и изменения неограниченной группе лиц.
Побочный эффект — взаимодействие функции с любыми механизмами и данными, за исключением своих внутренних и выходных данных, в том числе глобальных переменных, системы ввода-вывода и т.д.
Предметно-ориентированный язык программирования — язык программирования, специализированный для конкретной области или модели применения.
Приведение типов — преобразование переменной одного типа к переменной другого типа.
Программное решение — практически полезный результат процесса проектирования или разработки программного обеспечения любого уровня, масштаба и степени завершенности.
Программный интерфейс — функциональность, которую некоторый программный компонент предоставляет другим программным компонентам, а также совокупность методов и технологий, необходимых для её использования.
Программный каркас — программное решение, предоставляющее разработчику набор функциональных возможностей, управляя при этом выполнением разработанных им блоков.
Пространственные данные — в рамках данной работы, в широком смысле слова, множество представлений информации, объединенных общей целью — отразить пространственные (пространственно-временные) характеристики и соотношения материальных объектов и явлений.
Псевдокод — компактный (зачастую неформальный) язык описания структур данных или алгоритмов, построенный на структуре и ключевых словах языков программирования, но опускающий несущественные для рассматриваемой задачи подробности.
Сериализация — обратимый процесс перевода структуры данных в последовательность битов.
Системное программирование — совокупность принципов, методов и технологий разработки программного обеспечения, потребителем функций которого являются программные решения, разрабатываемые прикладным программистом.
Системный вызов — вызов пользовательским приложением функции ядра операционной системы.
Стек технологий — см. технологический стек.
Технологический стек — устоявшаяся совокупность расширяющих друг друга технологий, приспособленная для решения определенного класса задач.
Утечка ресурсов — процесс неконтролируемого уменьшения объёма доступных ресурсов, связанный с ошибками в программах, не обеспечивающих своевременное и корректное освобождение ресурсов, таких как память,
открытые файлы, потоки и т.д.
Фреймворк — см. программный каркас.
Шаблон проектирования — воспроизводимое архитектурное построение, представляющее собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
Язык программирования общего назначения — язык программирования, организация и устройство которого не предусматривают ограничений областей применения или моделей использования. Противоположность — предметно-ориентированный язык программирования.
Приложение 1. Сравнительный анализ языков программирования, применямых для обработки пространственных данных
Критерий Язык программирования
C C++ Java Python
Примеры применения для задач обработки пространственных данных GRASS GIS GDAL PostGIS ArcGis Quantum GIS Credo AutoCad Mapnik ArcGis Engine gvSIG GeoTools H2GIS ArcGis Quantum GIS Mapnik GeoAlchemy
Базовые свойства
Тип Компилируемый Компилируемый для выполенения в вирутальной машине Интерпретируемый
Грамматика Контекстно -свободная Контекстно -зависимая Контекстно -свободная Контекстно -свободная
Поддержка парадигм программирования
Процедурная + + + +
Структурная + + + +
Модульная + +
Объектно-ориентированная + + +
Функциональная +/- +/- +
Поддержка технологий программирования
Обобщенное программирование + +
Интроспекция + +
Обработка исключений Структурная ограниченная Структурная Структурная
Система типов
Строгая + + + +
Явная + + +
Динамическая c 7 версии +
Наследование Множественное Одиночное Интерфейсное Множественное
Способности интеграции и межпрограммного взаимодействия
ABI-совместимость +++ ++ + ++
с C __—— +++ + ++
с C++ +++ ______——~ ~ + ++
с Java + + ______—— " +
с Python ++ ++ + __—-'
Таблица 10: Сравнительный анализ языков программирования, применямых для обработки пространственных данных
Приложение 2. Результаты оценки потенциала к повторному использованию программных решений в области обработки пространственных данных
Программное решение Тип архитектруры Базовые компоненты Открытые стандарты Технологии взаимодействия Открытость процесса разработки
Геоинформационные системы (ГИС)
ArcGis for Desktop Компонентная MS Windows, Python SHP, DXF, DXB, WKT, WKB и др. Python API (ArcPy), COM API -
ArcGis Engine Runtime Компонентная Java, Qt, .NET u gp. API -
MapInfo Professional Монолитная MS Windows н/д MapBASIC, COM API -
GRASS GIS Модульная Все форматы, поддерживаемые GDAL/OGR C API, Python API, CLI +++
QGIS Компонентная Qt C++ API, Python API (PyQGIS) +++
gvSIG Компонентная Java Java API +++
TerraLib Монолитная - C++ API ++
ГИС Панорама GIS Toolkit Компонентная SHP, WKT, WKB, MIF/MID и др. VCL API COM API, ActiveX -
СУБД с пространственными расширениями
Oracle Locator Монолитная - SQL/MM с собственными расширениями SQL -
Microsoft SQL Server Монолитная MS Windows -
MySQL Монолитная - +++
PostGIS Компонентная PostgreSQL +++
Системы автоматизированного проектирования (САПР)
Autodesk AutoCad Монолитная MS Windows DWG, DXF, DXB ObjectARX, AutoLISP, COM API, .NET API -
Специализированные системы обработки геодезических измерений
Leica GeoOffice Монолитная MS Windows - COM API -
Rumb RGS Монолитная MS Windows - - -
КРЕДО Компонентная MS Windows, Python Python API -
MicroSurvey STAR*NET Монолитная MS Windows - - -
GNU Gama Монолитная - XML CLI +++
Таблица 11: Результаты оценки потенциала к повторному использованию программных решений в области обработки пространственных данных
Программное решение Способ взаимодействия Организационное и информационное обеспечение
Технология Тип Выразительность Полнота Производительность Сообщество Документация Стандартизация
Геоинформационные системы (ГИС)
ArcGis for Desktop Python API (ArcPy) Платформа ++ ++ + ++ ++ ++
COM API Сервис ++ ++ + ++ ++ ++
ArcGis Engine Runtime Java, Qt, .NET u gp. API Библиотека +++ +++ ++ ++ ++ ++
MapInfo Professions MapBASIC Платформа ++ ++ + + ++ +
COM API Сервис ++ ++ + + ++ +
GRASS GIS C API Платформа/ Библиотека ++ +++ +++ +++ +++ +++
Python API ++ +++ ++ +++ +++ +++
CLI +++ +++ + +++ +++ +++
QGIS C++ API Платформа ++ +++ +++ +++ +++ +++
Python API (PyQGIS) Платформа ++ +++ ++ +++ +++ +++
gvSIG Java API Платформа ++ +++ ++ ++ +++ ++
TerraLib C++ API Библиотека ++ +++ +++ ++ +++ +++
ГИС Панорама GIS Toolkit VCL API COM API Библиотека +++ +++ +++ ++ +++ ++
СУБД с пространственными расширениями
Oracle Locator SQL Сервис +++ +++ ++ ++ +++ +++
Microsoft SQL Server +++ +++ ++ ++ +++ +++
MySQL +++ +++ ++ +++ +++ +++
PostGIS +++ +++ ++ +++ +++ +++
Системы автоматизированного проектирования (САПР)
Autodesk AutoCad ObjectARX Платформа + +++ +++ + +++ +
AutoLISP Платформа + + + ++ +++ +
COM API Сервис + ++ + + ++ +
.NET API Платформа + +++ ++ + +++ +
Специализированные системы обработки геодезических измерений
Leica GeoOffice COM API Сервис ++ ++ + + ++ +
Rumb RGS - Общие данные - - - + ++ +
КРЕДО Python API Платформа ++ ++ ++ + + +
MicroSurvey STAR*NET - Общие данные - - - + +++ +
GNU Gama CLI Библиотека - - - + ++ +
Таблица 12: Результаты оценки потенциала к повторному использованию программных интерфейсов, предоставляемых программными решениями в области обработки пространственных данных
Приложение 3. Пример программного кода для описания простейшей структуры данных средствами разработанной метаобъектной системы
Описание в императивном стиле:
import xud
import xud.typedef as xtd
# определение корневого объекта - библиотеки типов: lib = xtd.Library( 'xud://example.com/lib/spatial' )
# определение типов элементов данных:
coord2d_t = lib << xtd.Type( 'xud://example.com/spatial/coord2d' ) # 2Б-коорд. point_t = lib << xtd.Type( 'xud://example.com/spatial/point' ) # точка line_t = lib << xtd.Type( 'xud://example.com/spatial/line' ) # отрезок polyline_t = lib << xtd.Type( 'xud://example.com/spatial/polyline' ) # полилиния polygon_t = lib << xtd.Type( 'xud://example.com/spatial/polygon' ) # полигон
# определение служебного типа - последовательность координат: coord2d_list_t = xud.types.list( coord2d_t ) )
# определение полей объекта - координат:
coord2d_t <<= xtd.Field( 'x', xtd.Storage( xud.types.float64 ) ) coord2d_t <<= xtd.Field( 'y', xtd.Storage( xud.types.float64 ) )
# определение полей объекта - отрезка:
point_t <<= xtd.Field( 'coord', xtd.Storage( coord2d_t ) )
# определение полей объекта - линии:
line_t <<= xtd.Field( 'begin_coord', xtd.Storage( coord2d_t ) ) line_t <<= xtd.Field( 'end_coord', xtd.Storage( coord2d_t ) )
# определение полей объекта - полилинии:
polyline_t <<= xtd.Field( 'coords', xtd.Storage( coord2d_list_t ) )
# определение полей объекта - полигона:
polygon_t <<= xtd.Field( 'coords', xtd.Storage( coord2d_list_t ) )
Описание в декларативном стиле:
import xud
import xud.typedef as xtd
# определение корневого объекта - библиотеки типов: lib = xtd.Library( 'xud://example.com/lib/spatial' )
# 2Б-координаты @xtd.specifies( lib )
@xtd.define( xtd.Type( 'xud://example.com/spatial/coord2d' ) ) class coord2d_t( xtd.Declarative ):
x = xtd.Field( xtd.Storage( xud.types.float64 ) ) y = xtd.Field( xtd.Storage( xud.types.float64 ) )
# определение служебного типа - последовательность координат coord2d_list_t = xud.types.list( coord2d_t ) )
# точка
@xtd.specifies( lib )
@xtd.define( xtd.Type( 'xud://example.com/spatial/point' ) ) class coord2d_t( xtd.Declarative ):
coord = xtd.Field( xtd.Storage( coord2d_t ) )
# отрезок
@xtd.specifies( lib )
@xtd.define( xtd.Type( 'xud://example.com/spatial/line' ) ) class coord2d_t( xtd.Declarative ):
begin_coord = xtd.Field( xtd.Storage( coord2d_t ) ) end_coord = xtd.Field( xtd.Storage( coord2d_t ) )
# полилиния @xtd.specifies( lib )
@xtd.define( xtd.Type( 'xud://example.com/spatial/polyline' ) ) class coord2d_t( xtd.Declarative ):
coord = xtd.Field( xtd.Storage( coord2d_list_t ) )
# полигон
@xtd.specifies( lib )
@xtd.define( xtd.Type( 'xud://example.com/spatial/polygon' ) ) class coord2d_t( xtd.Declarative ):
coord = xtd.Field( xtd.Storage( coord2d_list_t ) )
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.