Создать и заполнить поле в shape-файле с помощью ogr2ogr
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Создать и заполнить поле в shape-файле с помощью ogr2ogr
Кто-то сталкивался с подобной задачей?
Есть shape-файл, нужно добавить к нему новое поле с неким любым значением, используя только ogr2ogr?
Промучался, так и не смог сделать, в принципе в ogr2ogr есть параметр -sql "", куда можно передать синтаксис SQL команды, но что-то не очень получается, знаний SQL не хватает.
Есть shape-файл, нужно добавить к нему новое поле с неким любым значением, используя только ogr2ogr?
Промучался, так и не смог сделать, в принципе в ogr2ogr есть параметр -sql "", куда можно передать синтаксис SQL команды, но что-то не очень получается, знаний SQL не хватает.
пристегивайтесь, турбулентность прямо по курсу
-
- Участник
- Сообщения: 74
- Зарегистрирован: 07 фев 2006, 22:54
- Репутация: 0
Re: Создать и заполнить поле в shape-файле с помощью ogr2ogr
Я не знаю ogr, но если там есть SQL-интерфейс, то должно получиться. Синтаксис SQL формализован достаточно четко, фразы работают начиная от Access и кончая Oracle/mySQL. Однако создание поля - ALTER TABLE - не во всех реализациях работает, по старинному стандарту ANSI-92 все поля только с начала, с нуля. Тогда глядите CREATE TABLE. В связи с этим обычно встроенные команды приложений с такими делами лучше справляются. Однако все равно гляньте любой учебник по SQL, например, вот.
http://www.sql.ru/docs/sql/u_sql/index.shtml
Заполнить значением через SQL уже гораздо легче,
UPDATE [Table] SET [Column] = "Value";
Это везде одинаково
http://www.sql.ru/docs/sql/u_sql/ch15.shtml#15.7
Для начала советую не слать команды вслепую, а потренироваться в Access, там визуальный интерфейс очень помогает разобраться в основах SQL. Да, перед любой посылкой в БД извне с ней должна быть установлена связь: логин, пароль и т.п.
http://www.sql.ru/docs/sql/u_sql/index.shtml
Заполнить значением через SQL уже гораздо легче,
UPDATE [Table] SET [Column] = "Value";
Это везде одинаково
http://www.sql.ru/docs/sql/u_sql/ch15.shtml#15.7
Для начала советую не слать команды вслепую, а потренироваться в Access, там визуальный интерфейс очень помогает разобраться в основах SQL. Да, перед любой посылкой в БД извне с ней должна быть установлена связь: логин, пароль и т.п.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Создать и заполнить поле в shape-файле с помощью ogr2ogr
Да, SQL это свой мир...Поэкспериментировал, хочу посоветоваться.
На любую попытку ввести SQL-команду без SELECT, ogr2ogr выдает следующее:
SELECT, как я понимаю, извлекает информацию из таблицы. Однако, в данном случае мне выбирать ничего не надо, хорошо, даже если я пытаюсь выбрать все (не уверен, что мне это нужно, ну раз он хочет SELECT)...
Выдает большое количество разных ошибок, ругаясь на синтаксис (все перепробованные варианты не привожу).
Хотя вот еще один:
Подозреваю, что это просто нельзя сделать, ни одного примера не нашел с подключением к шейпу, как к базе, к PostGIS, Oracle сколько угодно. Жаль, уж больно производительная штука. Придется постаринке.
На любую попытку ввести SQL-команду без SELECT, ogr2ogr выдает следующее:
Код: Выделить всё
ERROR 1: SQL: Missing keyword SELECT
Код: Выделить всё
ogr2ogr output.shp test.shp -sql "SELECT * FROM test; ALTER TABLE test ADD COLUMN New"
Хотя вот еще один:
Код: Выделить всё
ogr2ogr output.shp test.shp -sql "SELECT *, ALTER TABLE ADD COLUMN New
ERROR 1: SQL: Missing comma after column ALTER in SELECT statement.
пристегивайтесь, турбулентность прямо по курсу
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Создать и заполнить поле в shape-файле с помощью ogr2ogr
Это не решение, но может натолкнет на мысль. Shp с полями HEMISPHERE, INDEXNUM, UNIQUE, запрос
добавит еще одну колонку INDEXNUM.
В нормальном sql сработал бы и такой запрос:
но в ogr2ogr почему-то не хочет. Также не хочет производить и действия над полями, создавая вычисляемые колонки...
Код: Выделить всё
ogr2ogr -f "ESRI Shapefile" -sql "select HEMISPHERE, INDEXNUM, UNIQUE, INDEXNUM from tst" tst2.shp tst.shp
В нормальном sql сработал бы и такой запрос:
Код: Выделить всё
ogr2ogr -f "ESRI Shapefile" -sql "select HEMISPHERE, INDEXNUM, UNIQUE, INDEXNUM as NewName from tst" tst2.shp tst.shp
-
- Участник
- Сообщения: 74
- Зарегистрирован: 07 фев 2006, 22:54
- Репутация: 0
Re: Создать и заполнить поле в shape-файле с помощью ogr2ogr
Опять же, я не знаток ogr и других клиентов SQL. Но правила обычно похожие. Если клиент требует SELECT, обычно это означает, что он принимает только запросы на выборку и доступ, похоже, read_only. Это характерно для слаборазвитого софта. Вставить другую фразу в этом случае не удастся, они идут всегда по отдельности - это не язык программирования, а язык команд.
Однако проверьте документацию - может быть другой тип доступа, на изменение. Обычно он идет через логин-пароль и соответственно, указание прав. Тогда команды create/alter могут работать. Вообще сомнительно чтобы на отдельных dbf работал полноценный SQL. Нужна ведь полноценная БД: списки пользователей, таблиц, индексов, транзакций и другие метаданные.
Однако проверьте документацию - может быть другой тип доступа, на изменение. Обычно он идет через логин-пароль и соответственно, указание прав. Тогда команды create/alter могут работать. Вообще сомнительно чтобы на отдельных dbf работал полноценный SQL. Нужна ведь полноценная БД: списки пользователей, таблиц, индексов, транзакций и другие метаданные.
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Создать и заполнить поле в shape-файле с помощью ogr2ogr
OGR SQLТакже не хочет производить и действия над полями, создавая вычисляемые колонки...
Field List Limitations:
- Field arithmetic, and other binary operators are not supported
лангольеры под окном жрали время ом-ном-ном
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Создать и заполнить поле в shape-файле с помощью ogr2ogr
Как вариант - выгрузить shp в csv, добавить нужные поля в csv, а затем сконвертировать обратно в шейп. Вот пример.
Spatial is now, more than ever, just another column- The Geometry Column.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 30 гостей