При подключении к источнику данных ArcGIS применяет некоторые правила. Когда ArcGIS подключается и считывает данные из базы, применяются следующие правила:
Имена объектов
СУБД имеют различные требования к символам, используемым для названий объектов. Большинство имен должны начинаться с буквы и не содержать пробелов, обратной косой черты или зарезервированных ключевых слов СУБД. Некоторые СУБД позволяют использовать специальные символы, такие как прямую косую черту (/), подчеркивание (_), знак доллара ($), тире (-), точку (.) или смешанный регистр. Иногда база данных позволяет использовать специальные символы, зарезервированные ключевые слова или имена со смешанным, верхним или нижним регистром, если вы задаете имя объекта в разделителях, на пример, в двойных кавычках.
Однако ArcGIS не распознает такие разделители. Не создавайте таблицы, классы объектов, индексы, базы данных, пользователей*, роли или другие объекты с именами, требующими разделители, если вы собираетесь использовать их в ArcGIS. Объект будет создан в базе данных, но ArcGIS не сможет получить к нему доступ.
*Имена пользователей Microsoft SQL Server со специальными символами обозначаются разделителями для поддержки учетных записей Active Directory Groups и Windows Authenticated. Однако 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, Informix и Oracle. | 31 при считывании из PostgreSQL и SQLite. 30 - при чтении из Db2, Informix и Oracle 12.1 и более ранних версий. Для других баз данных до ограничения в базе данных. | |
Имя пользователя | ArcGIS создает пользователей только в следующих базах данных. Показана максимальная длина имени пользователя.
| Зависит от того, как вы подключаетесь; в диалоговом окне Подключение к базе данных поддерживается до 31 символа. Инструмент геообработки Создать подключение к базе данных поддерживает количество, соответствующее ограничению базы данных. | Значение имен пользователей не применяются в SQLite. |
Пароль | ArcGIS создает пароли для пользователей только в следующих базах данных. Показана максимальная длина пароля.
| 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 должен получать эти сведения из других источников.
При перетаскивании класса пространственных объектов (пространственной таблицы) в ArcMap создается слой запроса. Определение слоя запроса в ArcMap происходит следующим образом:
- В базе данных запрашивается информация о пространственной таблице, в частности, размерность, пространственная привязка и тип геометрии.
- Если эта информация не определена для всей таблицы, ArcMap считывает первую строку таблицы и использует информацию, указанную для этого объекта.
- Если пространственная привязка, тип геометрии или размерность таблицы не могут быть определены по первой строке – например, таблица является пустой, или эта строка имеет пользовательскую пространственную привязку – нужная информация для определения слоя будет запрошена у пользователя.
- ArcMap, отправляя в базу данных запрос, подбирает столбец, отличный от NULL, который можно использовать как уникальный ObjectID в отдельной таблице. Если подходящий столбец не найден, определение ObjectID таблицы будет запрошено у пользователя.
- Наконец, ArcMap вычислит экстент данного слоя при добавлении его на карту.
Поскольку данные, отображаемые на карте, зависят от запроса, можно открыть определение слоя запросов и изменить его вручную. К примеру, если класс пространственных объектов содержит как точки, так и полигоны, можно выбрать нужный тип геометрии, открыв определение слоя запросов. Кроме того, если класс пространственных объектов содержит несколько пространственных столбцов, можно открыть определение слоя запроса и изменить запрос так, чтобы использовался другой столбец. Имейте в виду, что путем изменения запроса нельзя отобразить не поддерживаемые типы данных.