Вы сталкиваетесь с путями каждый день для поиска ваших данных и наборов инструментов. В этом разделе представлено детальное описание путей, приведено определение различных видов путей и показан порядок работы с ними в ArcGIS.
пути
Путь (Path)
Путь – это разделенное символами обратной косой черты имя директории или файла. Директория – это тоже самое, что и папка в проводнике Windows.
E:\Data\MyStuff (path terminating in a directory name)
E:\Data\MyStuff\roads.shp (path terminating in a file name)
путь
Вы можете столкнуться с двумя написаниями пути: "pathname" и "path name". Все варианты написания пути (Path, pathname и path name) являются синонимами.
Системный путь и путь каталога
ArcGIS оперирует термином "путь каталога" или "путь ArcCatalog". Путь каталога – это путь, распознаваемый только ArcGIS. Например:
D:\Data\Final\Infrastructure.gdb\EastValley\powerlines
относится к классу пространственных объектов powerlines в наборе объектов EastValley файловой базы геоданных Infrastructure. Этот путь не является корректным системным путем с точки зрения операционной системы, поскольку Windows не распознает наборы и классы пространственных данных, расположенные внутри файловой базы геоданных. Само собой, ArcGIS работает с путями каталога.
Рабочая область и базовое имя
Пути каталога состоят из двух частей: рабочей области и базового имени, как показано ниже:
Местоположение
Местоположение (Location) является общим термином (см., например: "Укажите местоположение ваших данных" или "Введите местоположение ваших данных").
Прямые и обратные косые черты
В Windows обратная косая черта (\) используется в качестве разделителя при указании пути. UNIX системы используют прямую косую черту (/). В ArcGIS не имеет значения, какая косая черта используется при указании пути. ArcGIS всегда будет правильно считывать путь, какой бы знак в нем не использовался.
Обратная косая черта при написании скрипта
Языки программирования, уходящие корнями в UNIX и язык C, такие как Python, рассматривают обратную косую черту (\) в качестве управляющего символа. К примеру, \n соответствует возврату каретки. Поскольку пути могут содержать обратные косые черты, необходимо избегать их распознавания как знак перехода. Обычным делом является использование двойной обратной косой черты, например:
thePath = "E:\\data\\telluride\\newdata.gdb\\slopes"
Другой вариант преобразования путей в строки Python с помощью директивы r показан ниже. Благодаря этому Python будет игнорировать обратные косые черты.
thePath = r"E:\data\telluride\newdata.gdb\slopes"
Абсолютные и относительные пути
Абсолютный, или полный путь
Абсолютный (или полный) путь начинается с буквы диска, за которой следует двоеточие, например, D:.
Относительный путь
Относительный путь ссылается на местоположение относительно текущего каталога. Относительные пути используют два специальных символа: точку (.) и двойную точку (..), которые используются для перехода в текущий и родительский каталог, соответственно. Двойные точки используются для перехода на один уровень вверх. Одна точка означает собственно текущую директорию.
В приведенной ниже структуре папок, предположим, что вы воспользовались Проводником Windows для перехода в папку D:\Data\Shapefiles\Soils. После перехода в данный каталог относительный путь будет использовать директорию D:\Data\Shapefiles\Soils в качестве текущей (пока вы не перейдете в новый каталог и он не станет текущей директорией). Текущую директорию иногда называют корневой папкой.
Если вы хотите перейти к папке Landuse из текущей директории (Soils), вам нужно ввести следующий текст в адресную строку Проводника Windows:
..\Landuse
Проводник Windows перейдет в папку D:\Data\Shapefiles\Landuse. Другие примеры использования папки D:\Data\Shapefiles\Landuse в качестве текущей представлены ниже:
.. (D:\Data\Shapefiles)
..\.. (D:\Data)
..\..\Final (D:\Data\Final)
. (D:\Data\Shapefiles\Landuse - the current directory)
.\..\Soils (D:\Data\Final\Soils)
..\..\.\Final\..\Shapefiles\.\Landuse (D:\Data\Shapefiles\Landuse)
Абсолютные и относительные пути в ArcMap
При создании документа ArcMap (либо ArcScene, либо ArcGlobe) вы можете указать, что сохраняться будут относительные пути. Для установки этой опции выберите Файл (File)>Свойства документа карты (Map Document Properties). Здесь вы можете указать, будете ли вы хранить абсолютные или относительные пути.
При сохранении документа с относительными путями приложение преобразует пути в относительные (используя точку и двойную точку) в зависимости от того, где вы сохранили документ (т.е. от текущей директории). Например, если ваш документ сохранен в
D:\Maps\Posters\Newmap.mxd
и данными одного из слоев являются
D:\Data\Final\Infrastructure.gdb\Streets
то в Newmap.mxd записано следующее:
..\..\Data\Final\Infrastructure.gdb\Streets
Когда вы снова открываете Newmap.mxd, ArcMap преобразует сохраненные относительные пути (с обозначением с помощью точки и двух точек) обратно в абсолютные, которые отображаются как источник данных слоя. Эта конвертация всегда зависит от местоположения документа карты (текущей директории).
Преобразуются только пути, относящиеся к одному диску
Относительные пути не могут менять диски. То есть в случае, если корневой каталог находится на диске D, вы не сможете использовать относительные пути для перехода к директории на диске E. Если вы сохраняете документ карты с использованием относительных путей, преобразованы и сохранены будут только относящиеся к одному и тому же диску.
Абсолютные и относительные пути в инструментах модели
Так же как и в ArcMap вы можете указывать, что в инструментах модели будут сохраняться относительные пути.
Текущая папка, используемая для относительных путей, это папка, в которой находится соответствующий набор инструментов. Опция относительного пути конвертирует и сохраняет пути к:
- Данным модели
- Растровым изображениям модели
- Используемым в модели инструментам
- Файлам, на которые ссылаются метаданные инструмента и справка
- Таблицам стилей
- Файлам слоя (.lyr), использующимся для условных обозначений
- Компилированным файлам справки (.chm)
Для сохранения относительных путей щелкните правой кнопкой мыши инструмент модели, выберите Свойства (Properties), а затем перейдите на закладку Общие (General). В нижней части диалогового окна включите опцию Сохранить относительные пути (Store relative path names (instead of absolute paths), как показано ниже.
Преобразуются только пути, относящиеся к одному диску
Относительные пути не могут менять диски. То есть в случае, если корневой каталог находится на диске D, вы не сможете использовать относительные пути для перехода к директории на диске E. Если вы сохраняете вашу модель с использованием относительных путей, преобразованы и сохранены будут только пути, относящиеся к одному и тому же диску.
Абсолютные и относительные пути в инструментах-скриптах
При использовании мастера Добавить скрипт (Add Script)опция сохранения относительных путей появится на первой панели. Вы также можете установить эту опцию, щелкнув правой кнопкой мыши инструмент-скрипт, выбрав Свойства (Properties), а затем закладку Общие (General). В нижней части диалогового окна выберите Сохранить относительные пути (Store relative path names (instead of absolute paths).
Текущая папка, используемая для относительных путей, это папка, в которой находится соответствующий набор инструментов. Опция относительного пути конвертирует и сохраняет пути к:
- Скрипту
- Наборам данных, которые используются в свойстве значения по умолчанию
- Файлам, на которые ссылаются метаданные инструмента и справка
- Файлам слоя (.lyr), используемым для свойства условных обозначений
- Компилированным файлам справки (.chm)
- Таблицам стилей
Преобразуются только пути, относящиеся к одному диску
Относительные пути не могут менять диски. То есть в случае, если корневой каталог находится на диске D, вы не сможете использовать относительные пути для перехода к директории на диске E. Если вы сохраняете ваш инструмент-скрипт с использованием относительных путей, преобразованы и сохранены будут только пути, относящиеся к одному и тому же диску.
Пути в скрипте не преобразуются
Нельзя использовать точку и двойную точку в скриптах. Например, представленная ниже запись работать не будет:
arcpy.AddField_management("..\redlands.mdb\streets", "ref_ID", "long", "9", "#", "#", \
"refcode", "NULLABLE", "REQUIRED", "#")
т.к. путь ..\redlands.mdb\streets является относительным.
Какой смысл в использовании относительных путей вместо абсолютных?
Использование абсолютных путей характеризуется следующим:
- Вы можете перемещать документ или набор инструментов в любое местоположение на вашем компьютере и данные будут по-прежнему найдены, когда вы откроете документ или инструмент.
- На большинстве компьютеров расположение данных обычно не меняется. То есть вы обычно не перемещаете ваши данные из одной папки в другую. Как правило, используются абсолютные пути.
- Вы можете ссылаться на данные, которые находятся на других дисках.
С использованием относительных путей может понадобиться внесение следующих корректировок:
- При перемещении документа карты или набора инструментов необходимо перенести также и данные, на которые он ссылается.
- При передаче документов, наборов инструментов и данных другому пользователю должны использоваться относительные пути. Иначе возникнет необходимость, чтобы компьютер пользователя имел такую же структуру каталогов, как и ваш.
К примеру, возьмем представленную ниже структуру папок. В этом примере D:\Tools\Toolboxes\Toolbox1 содержит инструмент-скрипт D:\Tools\Scripts\MyScript.py.
При использовании абсолютных путей в случае, если вы перемещаете набор инструментов D:\Tools\Toolboxes\Toolbox1 на другой диск, например, в E:\Final\Toolbox1, ArcGIS найдет D:\Tools\Scripts\MyScript.py и все будет прекрасно работать. Если же вы используете относительные пути, ArcGIS не найдет скрипт и инструмент работать не будет. Диалоговое окно инструмента откроется, но после его запуска вы получите сообщение об ошибке: "Скрипт, связанный с этим инструментом, не существует". Вам необходимо открыть свойства инструмента и ввести корректный путь к скрипту.
С другой стороны, если вы работаете с относительными путями, вы можете просто скопировать папку D:\Tools в любое место на любом компьютере и все будет работать. Это не сработает при использовании абсолютных путей, поскольку другой пользователь может скопировать папку в каталог F:\NewTools и путь D:\Tools\Scripts\MyScript.py на его компьютере найден, естественно, не будет.
Заключение
- Относительные пути не могут менять диски.
- Абсолютные пути лучше применять, если данные не будут переноситься, как это обычно и происходит на дисках персональных компьютеров.
- Относительные пути полезно использовать в случае, когда вы передаете документы и данные другому пользователю.
- Относительные пути используют обозначения точки и двойной точки (. and ..). Вы можете вводить относительные пути с такими обозначениями в Проводнике Windows и командной строке Windows.
- ArcGIS не позволяет вводить относительные пути с использованием обозначений точки и двойной точки. Чаще в документе и наборе инструментов хранятся относительные пути (после того как вы отметили опцию сохранения относительных путей).
- Относительные пути "отсчитываются" от текущей папки, являющейся местоположением сохраненного документа или набора инструментов.
Пути UNC
UNC расшифровывается как Universal (или Uniform, или Unified) Naming Convention – Конвенция об универсальных наименованиях, и является синтаксисом для доступа к директориям и файлам в компьютерных сетях. Синтаксис показан ниже:
\\<computer name>\<shared directory>\
дальше следует любое число директорий, в конце указывается имя папки или файла.
Например:
\\pondermatic\public\studyarea.gdb
\\omnipotent\shared_stuff\wednesday\tools
Имя компьютера отделяется с помощью двойной обратной косой черты (\\).
В UNC имя компьютера также называется именем хоста.
Есть несколько правил для путей UNC:
- Пути UNC не могут содержать меток тома (таких как D).
- Невозможен переход в директорию выше уровнем, чем общая директория.
- Опция Сохранять относительные пути (Store relative path names) для документов и инструментов неприменима к путям UNC.
В ArcGIS вы можете использовать путь UNC при любом запросе пути. Это особенно удобно для общедоступных данных в локальной вычислительной сети (LAN). Данные могут храниться на одном компьютере, и любой пользователь, имеющий к нему доступ, может эти данные использовать, пока компьютер не будет выключен или отсоединен от сети.
В Windows возможно открывать доступ к папкам, чтобы другие пользователи в сети могли с ними работать. В ArcCatalog или Проводнике Windows щелкните правой кнопкой мыши Общий доступ и безопасность (Sharing and Security) и следуйте дальнейшим указаниям открывающегося диалогового окна.
URL
URL расшифровывается как Uniform Resource Locator – Универсальный локатор ресурса и уникально описывает адрес любого документа в Интернете. Компонентами URL являются:
- Протокол, используемый для доступа к ресурсу, такой как HTTP (HyperText Transfer Protocol) или FTP (File Transfer Protocol)
- Хост (сервер), с которым устанавливается соединение
- Путь к файлу на хосте
Например:
http://www.esri.com/products.html
Windows Internet Explorer позволяет ввести строку www.esri.com в адресной строке Internet Explorer и тип протокола будет добавлен автоматически http://. Более правильным является явное указание протокола, например, http. Среди других протоколов назовем HTTPS (Secure Hypertext Transfer Protocol), FTP, mailto (адрес электронной почты e-mail) and news (новости Usenet) и т.д.
В ArcGIS вы можете использовать пути URL там, где это является допустимым. В общем, в пользовательском интерфейсе содержатся подсказки, где возможно или необходимо использование URL. При использовании URL в ArcGIS Explorer рекомендуется включать тип протокола как в строке ниже:
http://www.esri.com
вместо
www.esri.com
Путь к файлу подключения ArcSDE
Инструменты геообработки используют путь к файлу подключения (.sde) для доступа к данным, хранящимся в базе данных ArcSDE.
D:\Data\Final\Connection to ArcSDE.sde\EastValley\powerlines
Информация о подключения в файле .sde используется для создания подключения к ArcSDE, при этом база геоданных ищет запрашиваемые данные так же как и для файловой и персональной баз геоданных (см. выше).