Event тема X Y по представлению

0 голосов
спросил 25 Апр, 08 от Holger (19,360 баллов) в категории Программные продукты Esri

В SQL Server сделал вью с  Left JOIN таблицами. По ней - event тему. В теме не создаётся  Object-ID поле, таблица атрибутов пустая. выборку сделать нельзя.

Пытался сделать по открытой в аркмапе таблице из вью новую таблицу для формирования Object -ID через MakeQueryTable - пишет ошибку. Как получить корректную тему событий?

14 Ответы

0 голосов
ответил 25 Апр, 08 от Vadim (28,120 баллов)

Какую ошибку пишет? Сама вьюха в ArcMap читается? А выгружать в пространственный класс получается?

0 голосов
ответил 25 Апр, 08 от Holger (19,360 баллов)
выгружать не хочу, база динамическая. Пишет всякую чушь, хотя вроде синтаксис из хелпа переписал
Не удается выполнить. Параметры не корректны. Входные таблицы: Некорректное значение. Неверный тип элемента данных Значение не равно Растровый слой.
0 голосов
ответил 25 Апр, 08 от Vadim (28,120 баллов)
Если сама таблица читается в ArcGIS и мы далее хотим работать с восстановленным слоем по x,y как с классом пространственных объектов (редактирование, селект, запросы и т.д.), то ArcGIS так и пишет, что требуется выгрузка:
image
0 голосов
ответил 25 Апр, 08 от Vadim (28,120 баллов)

Если таблица не читается, значит нужно править типы данных полей.

0 голосов
ответил 28 Апр, 08 от Holger (19,360 баллов)

Нет, мне нужны обновляемые данные. Я если напрямую подключаю/преобразовываю таблицу (не вью по ней) в тему - всё нормально (в таблице есть индекс ключ поле). Но тогда вся обработка на клиенте - тормоз страшный Хотел просто всё во вью скомпоновать, все табл присоед, чтобы меньше тянуть, а соединение только LEFT.

0 голосов
ответил 06 Май, 08 от Grigoriy (127,020 баллов)
Начнем с того, что View должен просто работать - т.е. для начала Вы должны добиться того, что при добавлении в ArcMap Вы сможете просмотреть записи, возвращаемые View. При этом view нужно подключать не через SDE-connect, а через OLEDB-соединение.
Далее такой view уже можно использовать, как тему XY-событий и она ДОЛЖНА отображаться. Т.е. в ArcMap Вы должны видеть и точки, и все записи этой темы. Если это работает, то View правильный. Если нет, то проблема в самом View. В такой теме событий не получиться выделять объекты селектом, но можно находить объекты запросами и поиском, и подсвечивать найденные объекты.
Если нужно иметь полностью все возможности, то придется пойти на хитрости.
1. Для начала добейтесь чтобы View содержал столбец с уникальными, не нулевыми значениями, который может выполнять роль OBJECTID.
2. Вам необходимо создать средствами SQL (create table) пустую таблицу с названием будущего View и со всеми необходимыми столбцами, включая OBJECTID.
3. С помощью ArcCatalog (через SDE-подключение) зарегиструйте эту таблицу в SDE, указав какой столбец будет использоваться в качестве ключевого (OBJECTID).
4. Средствами SQL удалите эту таблицу.
5. Средствами SQL создайте View с именем удаленной таблицы.
6. Теперь можно добавлять View в ArcMap через SDE-подключение и использовать. Такой View может быть темой событий, участовать в relationship-классах и пр.
см. http://support.esri.com/index.cfm?fa=listserve.messageShow&m=49305
    
0 голосов
ответил 02 Окт, 08 от Holger (19,360 баллов)

Прочитал, что можно сделать по подключённому через OLE DB SQL Server View  в Tools  "Создать таблицу запроса" с заданием ключевого поля, по ней построить тему события. Вроде работает.

Насколько такой вариант лучше\хуже указанного выше? Мне нужна хорош производительность, хочу опублик динамич объекты (~ 100) на ArcGIS Server?
0 голосов
ответил 02 Окт, 08 от Grigoriy (127,020 баллов)
Да не насколько не лучше/хуже для отображения. Скорость отрисовки будет одинаковая.
Разница может быть только в одном - получиться с таким View делать select в ArcMap или нет.
Сто объектов должно рисоваться легко и быстро (в ArcMap).
А вот как настроить ArcGIS Server для работы с изменямыми данными - см.
http://blogs.esri.com/Dev/blogs/arcgisserver/archive/2008/08/05/Design-patterns-for-Web-maps.aspx
0 голосов
ответил 02 Окт, 08 от Holger (19,360 баллов)

SELECT то делает, но пока за 2-3 сек. Но результаты в задачах Server выдает только текстом почему -то, без индикации объетов на карте.

Экспортировал в шейп - в сервере по нему Query atr отрабатывает корректно (пока по числ полям проверил).
0 голосов
ответил 02 Окт, 08 от geologic (39,860 баллов)
Разница что вы так подключите, что с ключевым полем заключается в идентификации. Соответственно если вам важно, будет ли Select работать, и другие механизмы, основанные на идентификации строк (редактирование и тп) то надо ключ задавать, если нет - то необязательно. В реляционных базах данных таблицы с ключевыми полями работают быстрее при выборках, но для этого нужно строить индексы. В БД обычно они создаются автоматически, в ArcMap - вряд ли. Тем более для ста объектов эффект будет незаметен. не знаю, будет ли тормоз оттого, что возникает лишний этап запроса (с присвоением ID). Из-за одного акта вряд ли, но если этот принцип многократно используется... Проверять надо.

А Left Join ни при чем - работает что с ним, что без.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...