Начиная с версии 9.2, программное обеспечение ArcSDE входит в состав лицензии ArcGIS Server.
ArcSDE представляет собой интерфейс, который позволяет хранить и управлять пространственными данными в выбранной системе управления реляционной базой данных (РСУБД). Важнейшее преимущество использования ArcSDE состоит в возможности совместного доступа (чтения, записи, обновления, удаления) к используемым данным. ArcSDE - открытая система, которая работает с различными системами управления базами данных, включая Oracle, Informix, IBM DB2, Microsoft SQL Server. ArcSDE масштабируется от работы с базами данных небольших рабочих групп до баз данных крупных предприятий. ArcSDE позволяет эффективно использовать встроенные в СУБД развитые средства аутентификации пользователей, резервного копирования и восстановления данных и другие преимущества централизованного хранения и управления базой данных [6].
Для представления и хранения информации в РСУБД ArcGIS использует объектно-реляционную модель данных, называемую базой геоданных. Эта модель данных позволяет описывать не только геометрию объектов, но и их поведение, правила, взаимосвязи с другими классами объектов и объектами базы геоданных. Эта интеграция поведения с геометрией позволяет создавать более сложные, расширенные модели ГИС-данных. Однажды описанное поведение объектов становится доступным для применения во всех приложениях ArcGIS Desktop — ArcCatalog, ArcMap, ArcToolBox, а также в ArcObjects — объектно-ориентированных библиотеках разработки для ArcGIS.
ArcSDE играет ключевую роль в многопользовательских корпоративных ГИС. С использованием ArcSDE приложения линейки ArcGIS (ArcInfo, ArcEditor, ArcView или ArcIMS), а также приложения для обработки ДДЗ (ERDAS IMAGINE, SOCET SET) или CAD-системы (AutoCAD или Microstation) могут работать непосредственно с пространственными данными, находящимися в РСУБД. ArcSDE работает также как сервер приложений, который распределяет пространственные данные для различного рода приложений, а также поставляя пространственные данные через глобальные сети по протоколу TCP/IP.
В рамках системы ArcGIS для использования с ArcSDE и многопользовательской РСУБД доступны четыре типа рабочих мест:
· ArcExplorer или HTML - браузер в качестве клиента картографического сервера ArcIMS для просмотра карт, простого анализа и вывода на печать.
· ArcView для базового картографирования, картографического анализа и использования базы геоданных.
· ArcEditor для создания и поддержки многопользовательской базы геоданных с развитым редактированием и работой с версиями данных.
· ArcInfo для загрузки данных, геообработки и других сложных задач.
ArcSDE служит интерфейсом между ГИС и РСУБД для организации совместного доступа и управления вашими пространственными данными, как таблицами. В среде разнотипных баз данных, где используется целый ряд различных баз данных, созданных организациями или отдельными пользователями, ArcSDE обеспечивает общую модель хранения географической информации. ArcSDE значительно улучшает характеристики всей ГИС за счет распределения функций приложения ГИС между сервером базы данных, клиентом и сервером приложений ArcSDE.
В свете современных тенденций применения больших баз данных, рассчитанных на совместное использование большим числом пользователей, ArcSDE обеспечивает ряд ключевых преимуществ, включая следующие [6]:
· Стандартное представление пространственных данных
· Представление пространственных данных основано на стандартных типах данных в РСУБД. В тех случаях, когда в РСУБД используются типы пространственных данных с расширенными свойствами, ArcSDE может обеспечивать доступ и использование этих типов данных для работы с пространственными объектами. При необходимости ArcSDE сам полностью представляет механизм для работы с пространственными объектами. Используемые способы хранения данных обеспечивают быстрое и компактное представление пространственных данных.
· Переносимость базы данных
· Пользуясь возможностями для экспорта и импорта данных в ArcSDE, возможно перемещать данные из одной системы РСУБД в другую без потери информации. Это особенно важно, если предприятие использует разнородные базы данных, которые могут включать, как базы данных рабочих групп, так и персональные базы данных. Это предоставляет возможность проектирования наиболее современных баз геоданных.
· Переносимость приложений
· ArcSDE определяет единую логическую модель для пространственных данных, реализуемую на верхнем уровне представления конкретной физической базы данных. Приложения, разработанные с использованием интерфейса для разработки API ArcSDE, будут запускаться с минимальными изменениями или вообще без них, на разных физических схемах РСУБД (если РСУБД позволяет это делать). Это позволяет администратору базы данных вашей ГИС выбрать наилучшую схему базы данных для каждого конкретного набора данных, чтобы удовлетворить требованиям прикладной программы. Например, один набор данных можно поддерживать и редактировать, используя бинарную схему хранения, а для другого набора может использоваться объектно-реляционная или реляционная схема. Способ хранения данных прозрачен для приложения конечного пользователя.
· Полнота данных
· ArcSDE обеспечивает целостность и полноту данных для точек, линий и полигонов, добавляемых в базу данных, и не допускает добавления векторных объектов с нарушениями геометрии (например, границы полигона должны быть замкнуты). Помимо этого, вы можете использовать сервер приложений ArcSDE совместно с ArcInfo и ArcEditor для наложения дополнительных ограничений на модель данных, что не позволяет сделать сама РСУБД. К примеру, можно ввести правила неразрывности (connectivity) для производственных сетей.
· Интерфейс прикладного программирования
· ArcSDE предоставляет открытый интерфейс прикладного программирования с использованием языков высокого уровня - С или Java, для запросов и обработки пространственной информации. Этот интерфейс обеспечивает работу с функциями ГИС для разработки современных прикладных программ. В тех случаях, когда сервер РСУБД обеспечивает работу с пространственными типами с расширенными свойствами (например, Oracle Spatial, Informix Spatial Data Blade или DB2 Spatial Extender компании IBM), для работы с пространственными колонками доступен также интерфейс SQL API.
· ArcGIS обеспечивает интерфейс для программирования, основанный на модели Component Object Model (COM) компании Microsoft, который называется AcrObject и содержит подсистему доступа к географическим данным, удовлетворяющую требованиям стандарта к простым векторным объектам Консорциума открытых ГИС (Open GIS Consortium).
· Затраты на разработку базы данных и прикладной программы
· Использование ArcSDE с ArcGIS дает возможность существенно снизить затраты на создание и поддержание пространственной базы данных. ArcGIS предоставляет различные инструменты и наборы данных, чтобы помочь быстро разработать проект. Другие программные продукты ESRI и других фирм могут использовать шлюз ArcSDE, поэтому можно выбрать наиболее подходящие инструменты для приложения.
· Инструменты для приложений и программирования
· ArcSDE предлагает стандартный интерфейс, который обеспечивает непосредственный доступ к пространственным базам данных из таких ГИС программ от ESRI, как ArcInfo, ArcEditor, ArcView, ArcExplorer и ArcIMS. Эти прикладные программы и их инструменты для программирования обеспечивают полную среду для создания, управления и использования пространственной информации. ArcSDE, кроме этого, непосредственно поддерживает интерфейсы ERDAS IMAGINE, а также AutoCAD и MicroStation для доступа к пространственным базам данных. Помимо этого, существует значительное число программных продуктов, выпускаемых третьими фирмами для работы с ArcSDE.
6.1 Клиентский интерфейс для разработки приложений ArcSDE
Этот интерфейс (API), рассчитанный на использование языков программирования С и Java, предоставляет большое число эффективных функций ГИС. Все клиентские приложения ESRI, которые работают с ArcSDE, используют C API. Клиентский интерфейс ArcSDE обеспечивает возможность взаимосвязанного просмотра простых пространственных объектов для этих приложений. Он позволяет программистам разрабатывать заказные прикладные программы, предназначенные для работы с любой РСУБД, поддерживаемой ArcSDE. Этот клиентский интерфейс наиболее подходит для разработки узко специализированных приложений, работающих в ответственных ситуациях, например, при анализе реакций на чрезвычайные ситуации или при обслуживании клиентов. Достаточно большое число сторонних разработчиков пишут приложения для различных областей применения, с использованием в качестве сервера приложений ArcSDE [6].
· ArcObjects
· ArcObjects представляет собой интерфейс программиста COM API для ArcGIS Desktop. Он обеспечивает возможность доступа и работы с содержимым баз геоданных, как с объектами ГИС, снабженными такими современными свойствами, как "поведения" и взаимоотношения.
· SQL
· Интерфейс для запросов на языке SQL доступен для работы с базами геоданных. Этот интерфейс, поддерживаемый вашей РСУБД, может быть использован для работы с содержимым баз геоданных. Именно потому, что РСУБД используют стандартные колонки, и используется этот интерфейс. Для РСУБД, имеющих возможность работы непосредственно с пространственными данными (например, Informix, IBM DB2 и Oracle Spatial), в самой СУБД поддерживаются специальные геометрические типы, и это позволяет выполнять пространственные SQL-запросы к базе геоданных. Он позволяет выполнять запросы к геометрическим объектам с использованием приложений РСУБД. Например, вы можете использовать запрос на языке SQL для осуществления пространственного объединения (join).
6.2 Архитектура ArcSDE
Говоря на языке архитектуры, существуют две базовые конфигурации, которые вы можете использовать при установке ArcSDE. Вы можете выбрать трехуровневую архитектуру с использованием сервера приложений, либо двухуровневую архитектуру, которая использует драйверы прямого подключения, либо комбинацию этих конфигураций [6].
6.2.1 Сервер приложений
http://dataplus.ru/Soft/ESRI/ArcGIS/ArcSDE/Images/Pic2.gifРасширение ArcSDE построено на технологии клиент/сервер. Клиентское приложение посылает запрос на сервер. В свою очередь, сервер, получив запрос, формирует ответ на запрос и направляет его клиенту.
Сервер ArcSDE распространяет пространственные данные, основываясь на высокоэффективном механизме пространственного поиска, который обеспечивает проверку корректности геометрических данных, выполняет работы с картографическими проекциями и работает в разнородной среде аппаратных и сетевых конфигураций. Данные могут доставляться к любому клиенту от любого сервера в любом месте сети.
В типовой конфигурации сервер приложений ArcSDE устанавливается на единую платформу с вашей реляционной базой данных. Сервер приложений ArcSDE выполняет пространственный поиск и отсылает данные, удовлетворяющие условиям поиска, обратно клиенту. Например, частым запросом, который выполняет сервер приложений ArcSDE, является возврат клиенту всех географических объектов в определенном фрагменте карты, чтобы вывести результат на экран.
ArcSDE посылает данные клиенту, используя технологию "буферизации данных". Под буферизацией понимается процесс, при котором собирается большой объем данных, и только после этого все эти данные посылаются клиентскому приложению, вместо того, чтобы посылать по одной записи по мере выполнения запроса. Обработка и буферизация данных на сервере оказывается более эффективной, нежели пересылка всех данных по сети и принятия решения у клиента, какие данные необходимо еще передать на его рабочую станцию. Это особенно важно, если учесть, что разные приложения одновременно используют тысячи записей в базе данных.
ArcSDE использует совместный принцип обработки, что означает, что данные обрабатываются как на стороне клиента, так и на сервере, в зависимости от того, где быстрее. Выполнение некоторых функций не требует связи с сервером. Задачи, которые требуют интенсивной нагрузки CPU, такие как оверлейные задачи для полигонов, а также вырезки, лучше выполнять в клиентских прикладных программах, чтобы исключить чрезмерные требования к быстродействию сервера и пропускной способности сети.
6.2.2 Векторные данные в базе геоданных
Векторы представляют гибкий и широко используемый способ для представления данных в базе геоданных, который пригоден для отображения объектов с дискретными границами, как, например, скважины, улицы, реки, штаты и земельные участки. Обычно, векторные данные пространственно отображаются в виде точек, линий или полигонов. Ниже дан обзор векторных элементов в базе геоданных.
Класс объектов. Это таблица в базе геоданных, которой вы можете приписывать "поведение". Строки в таблице соответствуют записям для отдельных объектов, которые имеют свое "поведение" в ГИС. Например, к классу объектов могут быть отнесены объекты типа "собственник" "земельных участков". Пользователь может устанавливать взаимоотношения между полигональными векторными объектами для земельных участков и объектами класса собственников.
Класс векторных объектов. Совокупность векторных объектов одного типа. Векторным объектом является простой объект, который имеет географическое положение, сохраняемое как одно из его свойств или в соответствующих полях в строке таблицы. Обычными типами геометрии таких объектов являются точки, линии, полигоны или аннотации. Примерами векторных объектов могут служить реки, административные округа, административные регионы для проведения переписи населения и т.п. Классы векторных объектов могут быть независимыми или взаимосвязаны с другими классами векторных объектов. Если классы взаимно связаны, то вместе они организуются в набор векторных объектов, о которых сказано чуть ниже.
Атрибуты векторных объектов. Свойства объектов хранятся как данные в полях таблицы для класса векторных объектов. Атрибуты определяют стандартные и частные свойства векторных объектов и могут быть численными, текстовыми или описательными идентификаторами.
Пространственная привязка. Система наземных координат, в которой представлен набор данных. Она служит для описания реального положения набора данных на земле. Пространственная привязка включает такие характеристики, как тип картографической проекции, тип датума, допустимый диапазон значений координат (например, для координат x, y или x, y, z) и т.п.
Подтипы. Набор классов для отдельных представителей класса векторных объектов. Класс векторных объектов может содержать векторные объекты, которые имеют одинаковое "поведение" и одинаковые свойства, но их значение или роль в данной модели могут отличаться. Например, если требуется различать стальные трубы и трубы из поливинилхлорида (ПВХ), а также роль каждой из этих труб в данной модели, то может оказаться целесообразным ввести один класс векторных объектов "трубы", а для того, чтобы различать различные виды труб, использовать подтипы.
Набор векторных объектов. Совокупность классов векторных объектов с одинаковой пространственной привязкой. Классы векторных объектов в наборе векторных объектов могут быть организованы в виде сетей или пространственных топологий. Если вы знакомы с ArcInfo, то наборы векторных объектов аналогичны покрытиям, в которых они являются совокупностью связанных классов векторных объектов, однако, наборы векторных объектов имеют меньше ограничений и более функциональны, чем покрытия. Наборы векторных объектов становятся особенно полезными, когда в вашей ГИС необходимо моделировать системы пространственно связанных векторных объектов, таких как производственные сети, дороги, слои, характеризующие окружающую среду (например, почвы, топография, растительность), географические регионы для переписи населения и т.п.
Взаимоотношения. Связь между двумя объектами. Взаимные отношения позволяют вам работать с векторными объектами и соответствующими строками в таблице, а также с взаимными отношениями между строками. Взаимоотношения организуются в классы взаимоотношений. Указанные классы взаимоотношений определяют набор взаимоотношений между двумя классами векторных объектов или классами объектов. Например, используя взаимные связи, можно создавать аннотации для соответствующих объектов. Вы можете определить, что случится с аннотацией, если объект будет перемещен, удален или если изменится его атрибутивное значение.
Геометрические сети. Определяемый пользователем набор классов векторных объектов, которые образуют часть неразрывной сети, состоящей из краевых элементов, переходов и поворотов. Вы определяете набор классов векторных объектов, которые включаются в геометрическую сеть, роль каждого класса векторных объектов (например, краевых элементов или переходов) и организуете эти классы векторных объектов в набор векторных объектов. Например, в сетях водоснабжения, задвижки и манометры играют роль переходов, а сами магистрали и станции обслуживания играют роль краевых элементов.
Пространственная топология. Определяемый пользователем набор классов векторных объектов, которые используют общую геометрию. Пространственная топология позволяет вам использовать один общий набор линий, чтобы представить геометрию ряда классов векторных объектов. Например, такие классы объектов, как типы почв, растительность, модель местности и водные объекты, могут использовать совместно общие границы полигонов. Любое изменение, внесенное в общую границу, автоматически обновляет коллективно используемые границы для всех этих векторных объектов. Классы векторных объектов, которые участвуют в пространственной топологии, организуются в такие же наборы векторных объектов.
Домены. Определяют допустимые значения для атрибутов в виде диапазона или набора значений. Домены можно использовать для проверки корректности любого атрибута в базе геоданных.
Правила проверки корректности. Одно или более ограничений, накладываемых на значения атрибутов, топологию или положение векторных объектов, чтобы обеспечить единство "поведения" для ваших векторных объектов. Например, правила неразрывности накладывают ограничения на места соединений в сетях.
6.2.3 Растровые данные в базе геоданных
Базы геоданных могут содержать наборы растровых данных, каждый растр представляет изображаемое пространство в виде одинаковых по размерам элементов или пикселов. Набор растровых данных хранится в виде двумерной матрицы с определенным значением параметра для каждого элемента изображения. Каждый элемент изображения имеет одинаковые размеры по высоте и ширине. Положение (географические координаты) верхнего левого угла грида вместе с размерами элемента и числом элементов в строках и столбцах определяет пространственный экстент растрового набора данных.
Растровые данные представляют собой обособленный класс данных, используемый в ГИС. ArcGIS обеспечивает возможность работы с достаточно большим количеством растровых форматов.
ArcSDE работает с растровыми данными также хорошо, как и с векторными. Когда создается бизнес-таблица со столбцом растрового типа, ArcSDE рассматривает этот столбец как набор растровых данных. Набор растровых данных может иметь множество изображений, составляющих этот набор, но геопривязанные изображения не могут соединиться в один растровый слой с непривязанными изображениями. Информация о растровом столбце, хранится в одной из системных таблиц ArcSDE, называемой raster_columns.
Растровые наборы данных содержат один или более слоев, называемые полосами (bands). Например, обычное цветное изображение состоит из трех полос (красной, зеленой и синей), изображение цифровой модели местности (DEM) содержит одну полосу (полутоновое монохромное изображение со значениями яркости, соответствующими отметкам высот), а многоспектральное изображение может иметь много спектральных полос.
Каждая полоса растра содержит помимо самих элементов такие важные данные, как:
· Статистику (минимальное, максимальное и среднее значение для элементов изображения).
· Гистограмму значений яркостей элементов изображения.
· Таблицу значений атрибутов (необязательная вспомогательная атрибутивная информация о различных значениях элементов изображения).
· Принятую по умолчанию цветовую таблицу (color map) для отображения растрового изображения (необязательна)
6.2.4 Поддержка растровых изображений большого объема
Растровые наборы данных в базах геоданных могут занимать очень большие объемы и покрывать большие географические области, обеспечивая при этом высокое разрешение. Для обеспечения эффективного доступа и хранения таких данных в базе геоданных, растровые данные автоматически режутся на отдельные фрагменты, и при этом сжимаются. Вы можете использовать этот метод, чтобы создавать очень большие растровые наборы данных в базе геоданных. При загрузке растровых данных, можно сшивать в мозаику необходимое число таких фрагментов, чтобы обеспечить покрытие требуемого экстента. При загрузке в ArcSDE в мозаику можно сшивать изображения с одинаковым разрешением.
Поскольку растровые данные могут покрывать очень большие площади, то вам часто будет необходимо использовать вырезанные фрагменты из общего слоя растровых данных. Когда вы работаете с большой растровой базой данных, то можете определять видимый экстент растрового изображения, чтобы минимизировать время на ожидание получения данных с сервера. Для ускорения отображения передача данных ограничивается автоматически текущим экстентом карты.
Для работы с очень большими растрами часто имеет смысл не укладывать эти растры в базу данных, а пользоваться каталогом снимков — таблицей со ссылками на растровые файлы. Таблица может лежать в базе данных, а снимки — на файловом сервере. Для ускорения отображения и в целях экономии места их можно сжать MrSID.
6.2.5 Пирамидальные слои увеличивают скорость отображения
Вы можете создавать пирамидальные слои для растровых данных, которые представляют собой ряд слоев, получаемых из исходного изображения с понижением разрешения. Каждый слой получается в результате преобразования (resampling) исходного изображения в изображение с более грубым пространственным разрешением. Пирамидальные слои используются для ускорения процесса вывода и отображения растровых изображений в тех ситуациях, когда вы не используете максимальное разрешение в изображении, например, при уменьшении масштаба изображения на экране. Каждый последующий слой пирамид характеризуется более высокой степенью обобщения.
Показаны три пирамидальных слоя. Каждое растровое изображение преобразуется в новый растр с большими размерами элемента изображения, чем у предыдущего слоя в пирамиде.
Когда используется изображение, для которого созданы пирамидальные слои, ArcGIS автоматически определяет масштаб наиболее подходящего пирамидального слоя, чтобы использовать его каждый раз, когда происходит перерисовка изображения на экране. К примеру, для вывода на экран изображения на большую территорию потребуется пирамидальный слой с большей степенью генерализации, а изображение наиболее детального слоя используется, когда вы увеличиваете изображение.
Для хранения растрового набора данных с созданными пирамидальными слоями требуется дополнительная память, которая зависит от числа слоев в пирамиде. Обычно затраты памяти для создания пирамидальных слоев составляют около 8% от исходного объема. Однако, выигрыш от создания пирамидальных слоев при работе с большими изображениями, оказывается неизмеримо большим. Как правило, этот выигрыш начинает сказываться при объеме изображений, превышающем 100 мегабайт.
6.2.6 Поддерживаемые форматы растровых изображений
Все общепринятые растровые форматы можно использовать в ArcGIS для создания растровых наборов данных в базе геоданных ArcSDE. Форматы растровых данных, которые поддерживаются как наборы растровых данных, включают:
· Гриды (Grids), включая и наборы слоев
· TIFF
· Формат ERDAS IMAGINE
· Форматы файлов ERDAS® .raw, .lan и .gis
· Изображения из ER Mapper®
· Форматы файлов BIL/BIP/BSQ
· BMP
· Формат со сжатием MrSID® (хранится без сжатия в базе геоданных)
· JPEG
· GIF
· ADRG
· PNG
· CIB
· CADRG
· DTED уровней 1 и 2
· NITF
6.2.7 Длинные транзакции и альтернативные версии
Ключевой особенностью любой многопользовательской базы данных является способность управлять одновременным доступом к данным. Доступ многих пользователей на чтение и запись является критическим моментом. Система РСУБД обеспечивает эту возможность при работе с таблицами. Что, однако, не делает РСУБД, так это выполнение длинных транзакций при внесении изменений в ГИС, или обработки сценариев типа "что случится, если". ArcSDE совместно с ArcGIS дает возможность осуществлять это с использованием версий.
Главная роль от использования версий сводится к упрощению практики внесения изменений. Многие операции редактирования в ГИС требуют всего нескольких минут на выполнение редактирования. Однако есть ряд задач, которые требуют для выполнения редактирования нескольких часов, дней или даже месяцев. Выполнение таких длинных транзакций возможно при создании версий. Версии дают пользователям возможность одновременно создавать несколько независимых представлений для базы данных, не копируя эти данные. Многие пользователи могут при этом одновременно вносить изменения в одни и те же векторные объекты или строки таблиц, не внося блокировок для запрета внесения изменений в те же данные другим пользователям.
В конце сеанса редактирования, либо при согласовании с другими версиями отредактированные объекты объединяются в версии-получателе в базе геоданных. Если один и тот же объект был отредактирован в различных версиях, возникает конфликт. При такой ситуации в ArcMap Editor выводится специальное диалоговое окно, которое обеспечивает помощь пользователю в разрешении конфликта, соответствующие конфликтующие объекты отображаются на карте.
Это диалоговое окно разрешения конфликтов отображает три класса объектов, участвующих в конфликте и объекты каждой из версий с атрибутами.
Синим цветом отображается объект до редактирования (А), объект после изменения (В); на третьем виде — все три представления во время разрешения конфликта (С).
Все свойства версий доступны для использования в ArcGIS Desktop. С использованием версий ArcInfo и ArcEditor позволяют осуществлять многопользовательское редактирование, работать с длинными транзакциями и использовать историю при работе с базами геоданных ArcSDE. ArcView может присоединяться, просматривать и использовать различные версии базы данных, но не может редактировать их.
Все организации, которые используют ArcSDE и работают с данными с помощью ArcInfo и ArcEditor, могут использовать версии. Базы геоданных и возможность создания версий обеспечивает организации самыми современными методами хранения данных, которые помогают организовать рабочий процесс при использовании пространственных данных. Используя базы геоданных, инженеры могут разрабатывать свои проекты. Аналитики пространственных данных могут выполнять сложные пространственные запросы по сценариям «что будет, если», не влияя на исходные объекты базы данных. А администраторы баз данных могут создавать «исторические срезы» базы геоданных для целей архивирования и восстановления данных.
Общая структура рабочего процесса, включаемая на каждом этапе проекта
Общая задача, в которой используются версии, является задача поддержания базы геоданных. Большая часть пользователей работает и просматривает исходную версию (принятую по умолчанию). Администраторы и пользователи, которые вносят изменения, используют другие версии базы данных, обновляя версию, принятую по умолчанию, когда это необходимо.
Скачать PDF-версию с оригинальным оформлением. © Для использования опубликованных на ресурсе материалов достаточно упоминания имени автора и адреса первоисточника. Дата обновления: 2009-02-08.
Комментариев нет:
Отправить комментарий