ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

Добавление типа ST_Geometry в базу данных Oracle

Доступно с лицензией Standard или Advanced.

  • Используйте инструмент геообработки Создать пространственный тип.
  • Используйте функцию CreateSpatialType

Вы можете добавить тип Esri ST_Geometry type, подтип и функции в вашу базу данных Oracle при помощи скрипта Python, использующего инструмент геообработки Создать пространственный тип или скрипта Python, который вызывает CreateSpatialType функцию ArcPy.

И инструмент, и функция создают пользователя sde в базе данных. Пользователь sde является владельцем типа ST_Geometry, подтипов, функций и таблиц.

Примечание:

При развертывании на сервере Windows, для типа ST_Geometry требуется Microsoft Visual C++ 2013 SP1 Redistributable Package (x64). Если на сервере Oracle нет пакета Microsoft Visual C++ 2013 Redistributable Package (x64), загрузите его с сайта Microsoft и выполните установку.

Используйте инструмент геообработки Создать пространственный тип.

Следующие шаги объясняют процесс запуска инструмента геообработки Создать пространственный тип для установки типа ST_Geometry в базу данных Oracle:

  1. Скопируйте новую библиотеку libst_shapelib (st_shapelib для Windows) из директории DatabaseSupport места установки клиента ArcGIS и переместите ее в директорию на сервере Oracle.

    Убедитесь, что вы используете библиотеку, соответствующую операционной системе вашего сервера Oracle.

    Директория на сервере, где расположена библиотека, должна быть доступна с клиентских компьютеров, с которых запускается инструмент Создать пространственный тип или скрипт. При размещении библиотеки на компьютере с UNIX или Linux, убедитесь, что администратор базы данных имеет права чтения в этой директории и права на выполнение файла библиотеки.

  2. Запустите ArcCatalog или ArcMap и откройте окно Каталога.
  3. Создайте подключение к базе данных Oracle. Выполните вход в качестве администратора базы данных Oracle.
  4. Откройте инструмент Создать пространственный тип.

    Вы можете воспользоваться окном Поиск для поиска инструмента или открыть его из группы инструментов Рабочая область набора инструментов Управление данными.

  5. Добавьте подключение к базе данных, созданное в шаге 3, в текстовое поле Входная база данных.
  6. Введите пароль пользователя базы данных sde в поле Пароль пользователя SDE.
  7. Если вы хотите создать табличное пространство для использования в качестве области по умолчанию для пользователя sde, введите его в текстовое поле Имя табличного пространства.

    400MB Табличное пространство будет создано в месте хранения Oracle по умолчанию. Если вы хотите управлять местом размещения или объемом табличного пространства, сначала создайте табличное пространство в Oracle, затем укажите существующее пространство в текстовом окне Имя табличного пространства. Инструмент сделает это существующее рабочее пространство используемым по умолчанию для пользователя sde.

  8. Перейдите к или введите Путь к библиотеке ST_Geometry Shape. Это путь к библиотеке геометрии ST_Geometry на сервере Oracle, в которой расположен файл libst_shapelib или st_shapelib, включая имя файла.

    Например, если файл libst_shapelib.so находится в папке libraries на сервере Linux с именем boxy, введите /boxy/libraries/libst_shapelib.so.

  9. Щелкните OK, чтобы запустить инструмент.

Тип ST_Geometry, подтипы и функции создаются в схеме пользователя sde, а в Oracle создается запись о библиотеке геометрии.

Если вы планируете использовать функцию ST_Transform для выполнения географических преобразований, то вам необходимо скопировать папку pedata из директории установки ArcMap, поместить ее на сервер Oracle и задать переменную среды PEDATAHOME на сервере, который указывает на данное расположение.

Используйте функцию CreateSpatialType

Вы можете запустить скрипт Python, который вызывает CreateSpatialType функцию ArcPy на любой машине с ArcMap, ArcGIS Pro или ArcGIS for Server для создания типа, подтипа или функции Esri ST_Geometry в базе данных Oracle.

  1. Скопируйте новую библиотеку libst_shapelib (st_shapelib для Windows) из директории DatabaseSupport места установки клиента ArcGIS и переместите ее в директорию на сервере Oracle.

    Убедитесь, что вы используете библиотеку, соответствующую операционной системе вашего сервера Oracle.

    Директория на сервере, где расположена библиотека, должна быть доступна с клиентских компьютеров, с которых запускается инструмент Создать пространственный тип или скрипт. При размещении библиотеки на компьютере с UNIX или Linux, убедитесь, что администратор базы данных имеет права чтения в этой директории и права на выполнение файла библиотеки.

  2. Создайте текстовый файл на клиентском компьютере ArcGIS и скопируйте следующий скрипт в файл.
    """
    Name: create_spatial_type.py
    Description: Provide connection information to an Oracle or PostgreSQL database
    and create spatial type in the 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 " + arcpy.GetInstallInfo()['Version'] )
    
    #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 "%s: error: %s\n" % (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 " \n%s: error: \n%s\n" % (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, instance, database, account_authentication, username, password, save_username_password(must be true)
    	arcpy.CreateDatabaseConnection_management(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.CreateSpatialType_management(input_workspace=Connection_File_Name_full_path, sde_user_password=password, tablespace_name=tablespace, st_shape_library_path=lib_path)
    		print "after spatial type...\n"
    		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)
    
  3. Сохраните файл с расширением .py.
  4. Запустите скрипт, предоставив специфичные для вашего сайта опции и информацию.

    Например, этот скрипт создает тип 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 для выполнения географических преобразований с помощью SQL, необходимо скопировать папку pedata из директории установки ArcMap или ArcGIS for Server, поместить ее на сервер Oracle и задать переменную среды PEDATAHOME на сервере, который указывает на данное расположение.

Связанные разделы

  • ST_Geometry в Oracle

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2019 Esri. | Конфиденциальность | Правовая информация