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

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

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

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

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

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

Длина имени

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

Примечание:

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

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

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

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

Недоступно

250 при создании в SQLite

31

250 при считывании из SQLite

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

Значение имен баз данных не применяются в SAP HANA.

Имя базы данных для SQLite состоит из пути к файлу, имени файла и его расширения. Если для базы данных SQLite настроено использование пространственного типа ST_Geometry или SpatiaLite, расширение файла - .sqlite. Если база данных SQLite настроена как OGC GeoPackage, расширение файла - .gpkg.

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

128

158 при создании в SQLite

128

158 при считывании из SQLite

Имя индекса

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

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

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

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

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

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

31 при считывании из PostgreSQL и SQLite.

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 вычисляет экстент данного слоя при добавлении его на карту.

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