Доступно с лицензией Standard или Advanced.
Администратор базы данных может добавить тип, подтип и функции ST_Geometry Esri в вашу свою базу данных Oracle при помощи инструмента геообработки Создать пространственный тип или скрипта Python, который вызывает функцию CreateSpatialType ArcPy.
После добавления типа ST_Geometry в свою базу данных вы можете использовать его для хранения пространственных данных.
И инструмент, и функция создают пользователя sde в базе данных. Пользователь sde является владельцем типа ST_Geometry, подтипов, функций и таблиц.
Примечание:
При развертывании на сервере Microsoft Windows для библиотеки ST_Geometry требуется Microsoft Visual C++ Redistributable Package (x64). См. Требования ArcGIS к базе данных Oracle, чтобы узнать о требующейся версии пакета. Если данный пакет отсутствует на сервере, загрузите его с сайта Microsoft и установите его.
Используйте инструмент геообработки Создать пространственный тип.
Чтобы запустить инструмент геообработки Создать пространственный тип для установки типа ST_Geometry в базу данных Oracle, выполните следующие шаги:
- Загрузите библиотеку st_shapelib (Windows) или libst_shapelib (Linux) из My Esri и переместите ее в местоположение сервера Oracle.
Используйте библиотеку, соответствующую операционной системе вашего сервера Oracle.
Директория на сервере, где расположена библиотека, должна быть доступна с клиентских компьютеров, с которых запускается инструмент Создать пространственный тип или скрипт. При размещении библиотеки на компьютере с UNIX или Linux убедитесь, что у администратора базы данных есть права чтения в этой директории и права на выполнение файла библиотеки.
Если опция загрузки отсутствует, свяжитесь с администратором вашей организации ArcGIS.
- Откройте проект в ArcGIS Pro, откройте панель Каталог и подключитесь к базе данных в качестве системного администратора базы данных Oracle.
Файл подключения к базе данных (.sde) создан в вашей папке проекта.
- Откройте инструмент геообработки Создать пространственный тип.
Вы можете воспользоваться окном Поиск, чтобы найти инструмент или открыть его из группы инструментов Рабочая область набора инструментов Управление данными.
- Добавьте подключение к базе данных, созданное на шаге 2, в текстовое поле параметра Входное подключение к базе данных.
- Введите пароль пользователя базы данных sde в поле параметра Пароль пользователя SDE.
- При необходимости в текстовом поле параметра Имя табличного пространства укажите имя табличного пространства, которое будет использоваться в качестве табличного пространства пользователя sde по умолчанию.
Инструмент Создать пространственный тип создает табличное пространство объемом 400 Mб в местоположении хранилища по умолчанию Oracle. Чтобы управлять местом размещения или объемом табличного пространства, сначала создайте табличное пространство в Oracle, затем укажите существующее пространство в параметре Имя табличного пространства. Инструмент сделает это существующее рабочее пространство используемым по умолчанию для пользователя sde.
- В параметре Путь библиотеки геометрии ST_Geometry введите путь к директории на сервере Oracle, в которой расположен файл libst_shapelib.so или st_shapelib.dll, включая имя файла.
Например, если вы поместили файл libst_shapelib.so в каталог libraries на сервере Linux с именем boxy, вы должны ввести /boxy/libraries/libst_shapelib.so.
- Щелкните Запустить.
Тип ST_Geometry, подтипы и функции создаются в схеме пользователя sde, а в Oracle создается запись о библиотеке геометрии.
Если вы планируете использовать функцию ST_Transform для выполнения географических преобразований, то вам необходимо скопировать папку pedata из директории установки ArcGIS Pro, поместить ее на сервер Oracle и задать переменную среды PEDATAHOME на сервере, который указывает на данное расположение.
Используйте функцию CreateSpatialType
Чтобы запустить скрипт Python, который вызывает функцию CreateSpatialType ArcPy на любом компьютере ArcGIS Pro или ArcGIS Server для создания типа, подтипа и функций Esri ST_Geometry в базе данных Oracle, выполните следующие шаги:
- Загрузите библиотеку st_shapelib (Windows) или libst_shapelib (Linux) из My Esri и переместите ее в местоположение сервера Oracle.
Убедитесь, что вы используете библиотеку, соответствующую операционной системе вашего сервера Oracle.
Директория на сервере, где расположена библиотека, должна быть доступна с клиентских компьютеров, с которых запускается скрипт. При размещении библиотеки на компьютере с UNIX или Linux убедитесь, что у администратора базы данных есть права чтения в этой директории и права на выполнение файла библиотеки.
- Создайте текстовый файл на клиентском компьютере ArcGIS и скопируйте в этот файл следующий скрипт:
""" Name: create_spatial_type.py Description: Provide connection information to an enterprise database and create spatial type in the Oracle or PostgreSQL database. Type create_spatial_type.py -h or create_spatial_type.py --help for usage Author: Esri """ # Import system modules import arcpy, os, optparse, sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for 10.1 and higher releases") #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS: ORACLE, or POSTGRESQL.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user") parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") parser.add_option ("-p", dest="Password", type="string", default="", help="SDE user password") parser.add_option ("-t", dest="tablespace", type="string", default="", help="Default tablespace for SDE user") parser.add_option ("--path", dest="libpath", type="string", default="", help="path to the ST shape library including library file name.") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print("{}: error: {}\n".format(sys.argv[0], "No command options given")) parser.print_help() sys.exit(3) #Usage parameters for spatial database connection database_type = options.Database_type.upper() instance = options.Instance account_authentication = options.account_authentication.upper() password = options.Password tablespace = options.tablespace database = options.Database.lower() dbms_admin = options.Dbms_admin dbms_admin_pwd = options.Dbms_admin_pwd lib_path = options.libpath if( database_type ==""): print("{}: error: {}\n".format(sys.argv[0], "DBMS type (--DBMS) must be specified.")) parser.print_help() sys.exit(3) # Local variables instance_temp = instance.replace("\\","_") instance_temp = instance_temp.replace("/","_") instance_temp = instance_temp.replace(":","_") Conn_File_NameT = instance_temp + "_" + database if os.environ.get("TEMP") == None: temp = "c:\\temp" else: temp = os.environ.get("TEMP") if os.environ.get("TMP") == None: temp = "/usr/tmp" else: temp = os.environ.get("TMP") Connection_File_Name = Conn_File_NameT + ".sde" Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde" # Check for the .sde file and delete it if present arcpy.env.overwriteOutput=True if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) print("\nCreating Database Connection File...\n") # Process: Create Database Connection File... # Usage: out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true) arcpy.management.CreateDatabaseConnection(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=dbms_admin, password=dbms_admin_pwd, save_user_pass="TRUE") for i in range(arcpy.GetMessageCount()): if "000565" in arcpy.GetMessage(i): #Check if database connection was successful arcpy.AddReturnMessage(i) arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++\n") sys.exit(3) else: arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") # Process: Create spatial type... try: print("Create spatial type...\n") arcpy.management.CreateSpatialType(input_database=Connection_File_Name_full_path, sde_user_password=password, tablespace_name=tablespace, st_shape_library_path=lib_path) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print("\n") parser.print_help() parser.exit(2) - Сохраните файл с расширением .py.
- Запустите скрипт, предоставив специфичные для вашего сайта опции и информацию.
Например, этот скрипт создает тип ST_Geometry в экземпляре Oracle oserve/orcl, а библиотека ST_Geometry размещается в директории /ora/shape на сервере Oracle (oserve).
create_spatial_type.py --DBMS ORACLE -i oserve/orcl --auth DATABASE_AUTH -U sys -P M3tsy$ -p 3$@b0eg -t sde --path /net/oserve/ora/shape/libst_shapelib.so
Тип ST_Geometry, подтипы и функции создаются в схеме пользователя sde, а в Oracle создается запись о библиотеке геометрии.
Если вы планируете использовать функцию ST_Transform для выполнения географических преобразований, то вам необходимо скопировать папку pedata из директории установки ArcGIS Pro, поместить ее на сервер Oracle и задать переменную среды PEDATAHOME на сервере, который указывает на данное расположение.