Данные из баз данных и ArcGIS

При подключении к источнику данных ArcGIS применяет некоторые правила. Когда ArcGIS подключается и считывает данные из базы, применяются следующие правила:

Имена объектов

СУБД имеют различные требования к символам, используемым для названий объектов. Большинство имен должны начинаться с буквы и не содержать пробелов, обратной косой черты или зарезервированных ключевых слов СУБД. Некоторые СУБД позволяют использовать специальные символы, такие как прямую косую черту (/), подчеркивание (_), знак доллара ($), тире (-), точку (.) или смешанный регистр. Иногда база данных позволяет использовать специальные символы, зарезервированные ключевые слова или имена со смешанным, верхним или нижним регистром, если вы задаете имя объекта в разделителях, на пример, в двойных кавычках.

Однако ArcGIS не распознает такие разделители. Не создавайте таблицы, классы объектов, индексы, базы данных, пользователей*, роли или другие объекты с именами, требующими разделители, если вы собираетесь использовать их в ArcGIS. Объект будет создан в базе данных, но ArcGIS не сможет получить к нему доступ.

*Имена пользователей Microsoft SQL Server со специальными символами обозначаются разделителями для поддержки учетных записей Active Directory Groups и Windows Authenticated. Однако ArcGIS не поддерживает имена пользователей, содержащие одиночные кавычки или апострофы.

Длина имени

ArcGIS может считывать и (в некоторых случаях) создавать объекты базы данных, такие как таблицы, виды и пользователи. Максимальная длина имени, которую ArcGIS допускает для этих объектов, указана в следующей таблице вместе с исключениями, когда они могут применяться.

Примечание:

Если ваша база данных позволяет использовать меньше символов, чем позволяет ArcGIS, вы будете ограничены именно количеством символов, разрешенным базой данных. Для определения ограничений имен объектов обратитесь к документации по используемой вами СУБД.

Указанное число знаков предполагает использование однобайтовых символов.

Тип объектовМаксимальное число символов, создаваемых ArcGISМаксимальное число символов, считываемых ArcGISИсключения

Имя базы данных

Не доступно

31

ArcGIS может считать имя базы данных, максимально допускаемое Oracle.

Имена базы данных не применяются к SAP HANA.

Имя таблицы, класса объектов или представления

128

128

Имя индекса

16 - во всех базах данных, кроме SQL Server, в которой можно создавать имена индекса длиной до 128 символов.

ArcGIS может читать индексы, созданные вне ArcGIS, в пределах ограничений базы данных.

Имена индексов не применяются к SAP HANA.

Имя поля (столбца)

31 - при создании в SQL Server, PostgreSQL, SAP HANA и Teradata.

30 - при создании в Db2 и Oracle.

31 - при чтении из PostgreSQL

30 - при чтении из Db2 и Oracle 12.1 и более ранних версий.

Для других баз данных до ограничения в базе данных.

Имя пользователя

ArcGIS создает пользователей только в следующих базах данных. Показана максимальная длина имени пользователя.

  • Oracle - 30 в 12.1 или более ранних версиях; 31 - 12.2 и выше
  • PostgreSQL - 31
  • SAP HANA - 31
  • SQL Server - 128

Зависит от того, как вы подключаетесь; в диалоговом окне Подключение к базе данных поддерживается до 31 символа. Инструмент геообработки Создать подключение к базе данных поддерживает количество, соответствующее ограничению базы данных.

Имена базы данных не применяются к SQLite.

Пароль

ArcGIS создает пароли для пользователей только в следующих базах данных. Показана максимальная длина пароля.

  • Oracle - 30
  • PostgreSQL - 75
  • SAP HANA - 31
  • SQL Server - 128

256 - для всех поддерживаемых баз данных, кроме Teradata, поддерживающая до 31 символа.

Пароли не применяются к SQLite.

Проверка геометрии

Когда вы создаете данные в базе с помощью клиента ArcGIS, ArcGIS проверяет геометрию на основе определенных правил. Если создаваемая в клиенте ArcGIS геометрия является недопустимой, ArcGIS не позволит разместить ее в базе данных.

Функции конструктора Esri и IBM ST_Geometry, а также ArcGIS API, используют для проверки геометрии данных библиотеку геометрии Esri. Поэтому даже если вы создаете геометрию Esri или IBM ST_Geometry с помощью SQL, применяются правила проверки и недопустимая геометрия не будет размещена в базе.

Другие пространственные типы, такие как SDO_Geometry, PostGIS geometry или geography и Microsoft SQL Server geometry или geography, имеют собственные функции конструктора и используют собственные правила проверки геометрии. Эти правила могут не совпадать с правилами ArcGIS. Клиенты ArcGIS проверяют геометрию при чтении данных и не отображают такую геометрию, которая нарушает правила проверки ArcGIS. Если вы подключаетесь к базе данных, которая содержит данные, созданные не в ArcGIS, необходимо помнить о применении правил ArcGIS.

Правила проверки для точек

  • Площадь и длина точек равны 0,0.
  • Конверт одной точки равен значениям X, Y этой точки.
  • Конверт из нескольких точек равен минимальному прямоугольнику, ограничивающему точки.

Правила проверки для простых линий или последовательностей линий

  • Каждая часть линии должна иметь, по меньшей мере, две различные точки.
  • Каждая часть линии не должна пересекать сама себя. Начальная и конечная точка линии могут быть одинаковыми, но полученное замкнутое кольцо не будет считаться полигоном.
  • Части линии могут касаться друг друга в конечных точках.
  • Длина линии равна сумме длин всех ее частей.

Правила проверки для линий или слабо структурированных последовательностей линий

  • Линии могут пересекать сами себя.
  • Каждая часть линии должна иметь, по меньшей мере, две различные точки.
  • Длина линии равна сумме длин всех ее частей.

Правила проверки и операции для полигонов

  • Висячие узлы недопустимы.
  • Сегменты линий, составляющие полигон, должны быть замкнуты (при этом z-координаты начальной и конечной точек также должны совпадать) и не должны перекрещиваться.
  • Если полигоны содержат пробелы, они должны полностью располагаться внутри внешней границы площади. Пробелы, находящиеся за пределами внешней границы, недопустимы.
  • Пробел, имеющий одну общую точку с внешней границей, преобразуется в полигон.
  • Несколько пробелов, имеющих общие точки, объединяются в один пробел.
  • Составные полигоны не могут перекрываться. Однако две части могут касаться в одной общей точке.
  • Составные полигоны не могут иметь общих границ.
  • Если два кольца имеют общую границу, они сливаются в одно кольцо.
  • В качестве длины геометрии рассчитывается общий периметр, включая границы всех пробелов в полигонах с пробелами.
  • Вычислена площадь.
  • Вычислен конверт.
  • Точки полигона хранятся в базе по направлению против часовой стрелки, хотя клиенты ArcGIS могут обратить точки в любом направлении. Если создается полигон, содержащий координаты в направлении по часовой стрелке, ArcGIS изменяет это направление и записывает координаты против часовой стрелки.

    Вершины полигона хранятся по направлению против часовой стрелки

    В этом примере начальная точка – a, и координаты должны быть перечислены в порядке a,b,c,d,a.

  • Полигон может иметь выемки, в тех местах, где пустоты внутри полигона касаются внешней границы.

    Порядок следования вершин полигона с выемками

  • Полигоны с выемками имеют внутреннее кольцо, касающееся внешней границы. Они не считаются полигонами с пробелами.
  • Если в полигоне имеется пробел, в первую очередь считывается внешняя граница. Точки пробелов хранятся в направлении, противоположном направлению внешней границы.

    В примере на следующем рисунке внешняя граница описана в порядке a,b,c,d,a, а пробел – в порядке e,f,g,h,e. Весь полигон, как объект, хранится в виде a,b,c,d,a,e,f,g,h,e.

    Порядок следования вершин полигона с выемкой

  • Если два пробела касаются в одной общей точке, они считаются за один пробел, а не за два.

    Порядок следования вершин полигона с двумя пробелами, имеющими общую точку

    В приведенном примере две внутренние области являются единым пробелом, так как они имеют общую точку g.

  • Как показано на следующем рисунке, сочетания обычных полигонов и полигонов с пробелами могут иметь достаточно сложную структуру. Внешняя граница представляет озеро с островом. На острове тоже есть небольшое озеро.

    Вложенные полигоны

    Можно представить такие полигоны как один, два или три объекта. Каждый полигон может храниться как отдельный объект. Большое озеро является полигоном с пробелом. Граница большого озера является внешней границей формы, тогда как остров представлен границей ее единственного пробела. Остров также является полигоном с пробелом. Граница острова является внешней границей, тогда как маленькое озеро представлено пробелом. Маленькое озеро является одним полигоном.

    Если озера являются важными объектами, один полигон с пробелом может представлять большое озеро, а второй полигон – малое озеро. Также для отображения объектов можно использовать составные полигоны. Первой частью полигона будет большое озеро с пробелом, представляющим остров. Второй частью будет малое озеро.

  • Нулевая геометрия допустима и действует как заполнитель. Они позволяют хранить атрибутивную строку без соответствующей геометрии. Например, нулевая геометрия может появиться как результат запроса пересечения двух непересекающихся полигонов.

    Не пересекающиеся полигоны приводят к появлению нулевой геометрии

    Так как площади A и B не касаются друг друга, в результате запроса их пересечения будет возвращена пустая геометрия.

  • Объекты обладают размерами. Объект, обладающий только координатами x и y, считается двухмерным. Объекты с z-координатами и измерениями являются трехмерными. Объект также может иметь нулевое измерение.

Пространственные метаданные

Базы данных хранят метаданные пространственных данных. Клиенты ArcGIS могут считывать информацию о типе классов объектов (например, точки, линии и полигоны), размерности (x, y, z и m координаты), пространственной привязке, уникальном идентификаторе и экстенте класса объектов из системных таблиц базы геоданных. Эти таблицы недоступны, если ArcGIS подключается к классу объектов в базе данных. Поэтому ArcGIS должен получать эти сведения из других источников.

При перетаскивании класса пространственных объектов (пространственной таблицы) на карту в ArcGIS Pro, создается слой запроса. Определение слоя запроса в ArcGIS Pro происходит следующим образом:

  1. В базе данных запрашивается информация о пространственной таблице, в частности, размерность, пространственная привязка и тип геометрии.
  2. Если эта информация не определена для всей таблицы, ArcGIS Pro считывает первую строку таблицы и использует информацию, указанную для этого объекта.
  3. Если пространственная привязка, тип геометрии или размерность таблицы не могут быть определены по первой строке – например, таблица является пустой, или эта строка имеет пользовательскую пространственную привязку – нужная информация для определения слоя будет запрошена у пользователя.
  4. ArcGIS Pro, отправляя в базу данных запрос, подбирает столбец, отличный от NULL, который можно использовать как уникальный ObjectID в отдельной таблице. Если подходящий столбец не найден, определение ObjectID таблицы будет запрошено у пользователя.
  5. Наконец, ArcGIS Pro вычисляет экстент данного слоя при добавлении его на карту.

Поскольку данные, отображаемые на карте, зависят от запроса, можно открыть определение слоя запросов и изменить его вручную. К примеру, если класс пространственных объектов содержит как точки, так и полигоны, можно выбрать нужный тип геометрии, открыв определение слоя запросов. Кроме того, если класс пространственных объектов содержит несколько пространственных столбцов, можно открыть определение слоя запроса и изменить запрос так, чтобы использовался другой столбец. Имейте в виду, что путем изменения запроса нельзя отобразить не поддерживаемые типы данных.