Установка семнатических атрибутов

0 голосов
спросил 03 Март, 09 от leshy (520 баллов) в категории Программные продукты Esri
Здравствуйте!

У меня возникла проблема с установкой и сохранением атрибутов объекта из приложения на Java через ArcObjects.

Делаю так:
получаю объект IFeature feature через mapServer.queryFeatureData

далее
feature.setValue(feature.getFields().findField("attrName"), "attrValue");

далее
feature.store();
здесь возникает
AutomationException: 0x80004005 - Unspecified error
        at com.esri.arcgis.geodatabase.Feature.store(Unknown Source)
....

однако, значение этого атрибута можно установить через Editing task в стандартном веб-клиенте без ошибок

feature не null, атрибут 'attrName' существует и имеет текстовый тип, значение 'attrValue' гарантированно умещается в поле

ArcGis Server 9.3 Java SP1

11 Ответы

0 голосов
ответил 03 Март, 09 от ppa80 (920 баллов)
1) проверьте что возвращает findField
2) Там вроде как для установки аттрибутов используется открытие курсора что-то типа mapServer.queryFeatureData_update

P.S. Так-то для сервера ошибки просто в кошмарном виде выводятся. С таким же успехом и пользой можно просто выводить слово "Гладиолус". Приходится ломать голову днями над ошибками. Это давний упрёк в сторону ESRI.
0 голосов
ответил 03 Март, 09 от Alexander1 (32,520 баллов)
В каком формате данные? SDE?
0 голосов
ответил 04 Март, 09 от leshy (520 баллов)
Данные в формате SDE на SQL Server 2005
0 голосов
ответил 04 Март, 09 от leshy (520 баллов)
1) findField возвращает индекс нужного атрибута, пробовал подставлять индекс в виде числа
для проверки просто перед установкой значения выводил текущее значение атрибута через feature.getValue(index)

2) на сколько я знаю, mapServer.queryFeatureData_update используется при массовых операциях
впрочем, если уж не будет другого варианта, можно попробовать и так...
0 голосов
ответил 04 Март, 09 от Alexander1 (32,520 баллов)
Имеет ли ArcGISSOC user read/write permission in SQL Server?
0 голосов
ответил 05 Март, 09 от leshy (520 баллов)
Arc SDE с SQL Server'ом и Arc GIS Server стоят на разных машинах, пользователь ArcGISSOC есть только на машине с Arc GIS Server'ом, подключение к SDE происходит под пользователем sde, который есть только на машине с SDE(это настраивается в конекшине). У пользователя sde есть полный набор прав.
0 голосов
ответил 05 Март, 09 от Worker (22,480 баллов)
Вроде как ArcGIS Soc тоже нужен доступ к бгд на другой машине, надо добавить пользователя soc на машине с sde, дать ему такое же имя и пароль, как на сервере ГИС. И вручную выдать ему право как минимум на чтение к бгд.
0 голосов
ответил 10 Март, 09 от leshy (520 баллов)
все так и сделали, проблема не исчезла ((
0 голосов
ответил 10 Март, 09 от leshy (520 баллов)
нашел еще вот что
http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.articleShow&d=29516

но ведь это относится конкретно к "AutomationException: 0x80070005 - General access denied error", чего по логам не наблюдается в моем случае
0 голосов
ответил 10 Март, 09 от Grigoriy (127,020 баллов)
Для начала, нужно бы указать версию ArcGIS Server - Standard или Advanced?
Далее, если у Вас версия Advanced - перед началом программирования попробуйте настроить стандартную задачу редактирования:

http://webhelp.esri.com/arcgisserver/9.3/java/configuring_tasks.htm#editor

Более подробно требования к данным, сервису и задаче описаны для .NET, но они такие же и для Java.
http://webhelp.esri.com/arcgisserver/9.3/dotnet/tutorial_web_editing_app.htm
http://webhelp.esri.com/arcgisserver/9.3/dotnet/editing_task.htm

И если эта задача работает, то можно изучать как программировать редактирование:

http://resources.esri.com/arcgisserver/adf/java/index.cfm?fa=codeGalleryDetails&scriptID=15753

http://resources.esri.com/help/9.3/ArcGISServer/adf/java/help/api/adfwebcontrols/com/esri/adf/web/ags/tasks/EditingTask.html
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...