Как удалить из БД неиспользуемые слои
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 20 фев 2018, 14:28
- Репутация: 0
- Откуда: Москва
Как удалить из БД неиспользуемые слои
Дано:
1) Проект, содержащий много объектов
2) БД, на которую ссылается проект, содержащая ещё больше объектов (в т.ч. ненужных)
Задача:
1) Удалить из БД объекты, которых нет в проекте (вручную это займет очень много времени).
1) Проект, содержащий много объектов
2) БД, на которую ссылается проект, содержащая ещё больше объектов (в т.ч. ненужных)
Задача:
1) Удалить из БД объекты, которых нет в проекте (вручную это займет очень много времени).
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Как удалить из БД неиспользуемые слои
Код: Выделить всё
DELETE FROM БД
WHERE детек_ненужных_объектов = true
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 20 фев 2018, 14:28
- Репутация: 0
- Откуда: Москва
Re: Как удалить из БД неиспользуемые слои
Прошу прощения за глупый вопрос:
1) Куда вводить этот код?
2) Его вводить дословно, или "БД" заменить на имя моей БД?
1) Куда вводить этот код?
2) Его вводить дословно, или "БД" заменить на имя моей БД?
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Как удалить из БД неиспользуемые слои
1. sql browser
2. заменить
иногда проще скопировать нужное в новую БД
2. заменить
иногда проще скопировать нужное в новую БД
-
- Участник
- Сообщения: 55
- Зарегистрирован: 28 сен 2015, 10:47
- Репутация: 26
- Ваше звание: Специалист по ArcGIS
- Откуда: Москва
- Контактная информация:
Re: Как удалить из БД неиспользуемые слои
Можно использовать Arcpy (питоновская библиотека под arcgis):
1. Сначала получаем список классов объектов в проекте, т.е. MXD c помощью команды ListLayers, пример тут http://desktop.arcgis.com/ru/arcmap/10. ... layers.htm и тут https://support.esri.com/en/technical-article/000011530
2. Аналогично можно вытянуть список классов объектов БД, если речь о базе геоданных https://support.esri.com/en/technical-article/000011504
3. Сравниваем два списка и удаляем с помощью команды arcpy
Если кратко:)
1. Сначала получаем список классов объектов в проекте, т.е. MXD c помощью команды ListLayers, пример тут http://desktop.arcgis.com/ru/arcmap/10. ... layers.htm и тут https://support.esri.com/en/technical-article/000011530
2. Аналогично можно вытянуть список классов объектов БД, если речь о базе геоданных https://support.esri.com/en/technical-article/000011504
3. Сравниваем два списка и удаляем с помощью команды arcpy
Если кратко:)
-
- Завсегдатай
- Сообщения: 297
- Зарегистрирован: 03 июн 2015, 10:19
- Репутация: 72
Re: Как удалить из БД неиспользуемые слои
Если там "пустышки" есть, то можно удалить кодом:
import arcpy
from arcpy import env
env.workspace = r"C:\Temp\Test.gdb"
listFCs = arcpy.ListFeatureClasses("*")
for fc in listFCs:
count1 = str(arcpy.GetCount_management(fc))
if count1 == "0":
arcpy.Delete_management(fc)
import arcpy
from arcpy import env
env.workspace = r"C:\Temp\Test.gdb"
listFCs = arcpy.ListFeatureClasses("*")
for fc in listFCs:
count1 = str(arcpy.GetCount_management(fc))
if count1 == "0":
arcpy.Delete_management(fc)
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 02 июн 2015, 10:32
- Репутация: 53
- Откуда: Москва
Re: Как удалить из БД неиспользуемые слои
Я перечитал исходный вопрос и ничего не понял. Что такое "объекты"? Это слои? Это классы объектов? Типа реки, здания, дороги. Или это объекты внутри класса - например, здания из слоя/таблицы "здания", которые не отображаются на карте?
Постановка задачи совершенно нечёткая с точки зрения информатики.
Да, конечно, неиспользуемые слои и классы объектов (например, дороги) удаляются куда проще.
А для удаления объектов (конкретных зданий) из слоя (здания) нужен совсем другой код, более навороченный и заковыристый. Типа поиск объектов внутри экстента карты.
Нам нужно понимать, что такое "объекты". Аморфное определение, ни о чём специалисту не говорящее.
А "пустышек" я думаю там нет, их ведь надо специально создавать. Для чего нужны пустые классы объектов, кроме как для создания новых объектов по шаблону?
Я понимаю через интуитивный переводчик на разумный язык, что речь идёт либо о ненужных (неиспользуемых) слоях/таблицах в базе, либо о не-отображаемых в проекте объектах внутри конкретного слоя. В одном случае удаляются таблицы, в другом - записи внутри таблицы.
-
- Участник
- Сообщения: 94
- Зарегистрирован: 05 июл 2010, 07:58
- Репутация: 0
Re: Как удалить из БД неиспользуемые слои
У Евгенича нормально написано. Главное, не промахнуться с базой. Нужно точно знать, что она принадлежит одному проекту.
Жизнь - это эксперимент, поставленный на себе.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей