GRASS: меняем DBF на SQLite

Решенные задачи, первая запись - описание решения.
Ответить
Александр Мурый
Гуру
Сообщения: 5105
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 744
Ваше звание: званий не имею
Откуда: Москва

GRASS: меняем DBF на SQLite

Сообщение Александр Мурый » 25 сен 2011, 15:12

Сразу говорю: писано для Linux/bash, в Windows можно то же самое в граф. интерфейсе или даже в консоли.

Если не работает v.db.reconnect.all (а с ним такое случается), "подключить" вектора к SQLite вместо осточертевших ( :twisted: ) уже DBF-таблиц можно ещё и так:
  • сначала подключаемся к SQLite

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

    eval $(g.gisenv)
    db.connect driver=sqlite database=$GISDBASE/$LOCATION_NAME/$MAPSET/$MAPSET.db
  • проверяем подключение:

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

    db.connect -p
  • затем пакетно как здесь (или только те, что надо) копируем таблицы из DBF в SQLite:

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

    for i in $(g.mlist vect); do db.copy from_driver=dbf from_database=$GISDBASE/$LOCATION_NAME/$MAPSET/dbf from_table=$i to_driver=sqlite to_database=$GISDBASE/$LOCATION_NAME/$MAPSET/$MAPSET.db to_table=$i; done
  • теперь пакетно же (или только те, что надо) подсоединяем атрибуты к векторам :

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

    for i in $(g.mlist vect); do v.db.connect -o map=$i driver=sqlite database=$GISDBASE/$LOCATION_NAME/$MAPSET/$MAPSET.db table=$i; done
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5105
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 744
Ваше звание: званий не имею
Откуда: Москва

Re: GRASS: меняем DBF на SQLite

Сообщение Александр Мурый » 24 авг 2012, 23:28

Все описанные выше действия можно произвести с помощью шелл-скрипта dbf2sqlite. Запускается из командной строки без аргументов.

Проверено в GRASS 6.4.*
Редактор материалов, модератор форума

Ответить

Вернуться в «Рецепты»

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

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