Временные слои

0 голосов
спросил 29 Июнь, 09 от invisibleshadow (780 баллов) в категории Программные продукты Esri
Разрабатывается софтина на .NET C# с использованием ArcGis Engine
Есть задача — работать с объектами слоя — сказали что работать нужно так(специфика такая что есть куча полигонов и при определенных условиях нужно работать только с некоторыми из них):
создаем временный слой, копируем туда объекты, по окончанию работы со слоем/объектами, копируем их обратно на тот слой откуда взяли.
Так вот вопрос — это нормальная практика? Интуитивно мне этот способ не очень нравится. может есть какие то определенные временные слои для этого дела?
Есть знатоки? куда копать?

6 Ответы

0 голосов
ответил 30 Июнь, 09 от Dido_kz1 (11,020 баллов)
почему бы не создать временную персональную БД и туда заливать для манипуляций с данными :-)
0 голосов
ответил 30 Июнь, 09 от invisibleshadow (780 баллов)
Не подскажете почему могут появится тормоза в следующем алгоритме:
1) сделал отдельные временные слои
2) объект из нужного слоя копирую на временный слой (на старом он остается, на временном создается новый)
3) работаю с временным слоем
4) копирую все поля объекта с временного слоя в объект обычного слоя
5) удаляю объект временного слоя.

через 10-15 таких переносов объекта начинаются тормоза, при чем не резко а постепенно, после каждого переноса, по чуть чуть добавляются. ну а после 10-15 оочень долго получается...
Ищу объект через  featureClass.Select(...)
создаю через IFeatureClass.CreateFeature(...)
удаляю через IFeature.Delete()

все это обрамлено IWorkspaceEdit.StartEditing() и IWorkspaceEdit.StopEditing()

курсоры вряд ли помогут... т.к. я работаю с одиночными объектами.
Есть мысли?


0 голосов
ответил 30 Июнь, 09 от invisibleshadow (780 баллов)
я работаю с Shap'ами
и при зависании если посмотреть на файлы
Engine что-то активно делает с файлами
*.sbn
*.sbx
при чем размер их меняется с 0 на 132(у sbn)  и 116(у sbx) и туда-сюда, туда-сюда....
как будто гоняет что-то туда-обратно...

чем больше операций, тем дольше приходится ждать их завершения.
0 голосов
ответил 30 Июнь, 09 от ppa80 (920 баллов)
А меняются шейпы в процессе указанной работы?
Если не меняются, может имеет смысл аттрибуты хранить где-то временно (не в слое), а потом просто в базу их переписывать.
Я, если требуется какое-то множество объектов просто указываю либо setDefinitionExpression на карте, либо делаю QueryFilter на слое и прохожусь по курсору, что надо-меняю.
Наверное смотря какого рода работа.
0 голосов
ответил 30 Июнь, 09 от invisibleshadow (780 баллов)
да, шейпы меняются.
первое что я делал - это хранил данные в др. месте, а потом, когда надо   - сливал их в шейп, но там эти тормоза и появились.
сейчас перевел на gdb тормозов нет... что то в шейпах наворачивает тормоза....
0 голосов
ответил 30 Июнь, 09 от invisibleshadow (780 баллов)
И еще попутный вопрос - перенесли карту из shape в gdb при увеличении карты не прорисовываются объекты.
такое ощущение, что где то стоит аттрибут - при таком то зуме не прорисовывать слой... хотя в атрибутах стоит что слой виден при любых масштабах. что может быть?
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...