Как удалить из БД неиспользуемые слои

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
Всеволод
Новоприбывший
Сообщения: 2
Зарегистрирован: 20 фев 2018, 14:28
Репутация: 0
Откуда: Москва

Как удалить из БД неиспользуемые слои

Сообщение Всеволод » 20 фев 2018, 14:35

Дано:
1) Проект, содержащий много объектов
2) БД, на которую ссылается проект, содержащая ещё больше объектов (в т.ч. ненужных)

Задача:
1) Удалить из БД объекты, которых нет в проекте (вручную это займет очень много времени).

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Как удалить из БД неиспользуемые слои

Сообщение freeExec » 20 фев 2018, 14:39

Код: Выделить всё

DELETE FROM БД
WHERE детек_ненужных_объектов = true

Всеволод
Новоприбывший
Сообщения: 2
Зарегистрирован: 20 фев 2018, 14:28
Репутация: 0
Откуда: Москва

Re: Как удалить из БД неиспользуемые слои

Сообщение Всеволод » 20 фев 2018, 14:46

Прошу прощения за глупый вопрос:
1) Куда вводить этот код?
2) Его вводить дословно, или "БД" заменить на имя моей БД?
:D

trir
Гуру
Сообщения: 5271
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Как удалить из БД неиспользуемые слои

Сообщение trir » 20 фев 2018, 14:50

1. sql browser
2. заменить

иногда проще скопировать нужное в новую БД

evgenich
Участник
Сообщения: 55
Зарегистрирован: 28 сен 2015, 10:47
Репутация: 26
Ваше звание: Специалист по ArcGIS
Откуда: Москва
Контактная информация:

Re: Как удалить из БД неиспользуемые слои

Сообщение evgenich » 20 фев 2018, 15:00

Можно использовать 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

Если кратко:)

Vadim
Завсегдатай
Сообщения: 297
Зарегистрирован: 03 июн 2015, 10:19
Репутация: 72

Re: Как удалить из БД неиспользуемые слои

Сообщение Vadim » 20 фев 2018, 16:57

Если там "пустышки" есть, то можно удалить кодом:

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)

geouser
Активный участник
Сообщения: 146
Зарегистрирован: 02 июн 2015, 10:32
Репутация: 53
Откуда: Москва

Re: Как удалить из БД неиспользуемые слои

Сообщение geouser » 20 фев 2018, 17:25

Всеволод писал(а):
20 фев 2018, 14:35
Дано:
1) Проект, содержащий много объектов
2) БД, на которую ссылается проект, содержащая ещё больше объектов (в т.ч. ненужных)

Задача:
1) Удалить из БД объекты, которых нет в проекте (вручную это займет очень много времени).
Я перечитал исходный вопрос и ничего не понял. Что такое "объекты"? Это слои? Это классы объектов? Типа реки, здания, дороги. Или это объекты внутри класса - например, здания из слоя/таблицы "здания", которые не отображаются на карте?
Постановка задачи совершенно нечёткая с точки зрения информатики.

Да, конечно, неиспользуемые слои и классы объектов (например, дороги) удаляются куда проще.
А для удаления объектов (конкретных зданий) из слоя (здания) нужен совсем другой код, более навороченный и заковыристый. Типа поиск объектов внутри экстента карты.

Нам нужно понимать, что такое "объекты". Аморфное определение, ни о чём специалисту не говорящее.

А "пустышек" я думаю там нет, их ведь надо специально создавать. Для чего нужны пустые классы объектов, кроме как для создания новых объектов по шаблону?

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

Serp
Участник
Сообщения: 94
Зарегистрирован: 05 июл 2010, 07:58
Репутация: 0

Re: Как удалить из БД неиспользуемые слои

Сообщение Serp » 21 фев 2018, 12:12

У Евгенича нормально написано. Главное, не промахнуться с базой. Нужно точно знать, что она принадлежит одному проекту.
Жизнь - это эксперимент, поставленный на себе.

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя