Использование утилиты shp2pgsql

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Использование утилиты shp2pgsql

Сообщение Игорь Черниенко » 28 мар 2009, 01:21

Пытаюсь пользоваться ПостГис. Из перевода руководства пользователя, из английской документации, так и не понял как пользоваться дампером. В связи с этим имею следующие вопросы:
1) как задать путь к шейп-файлу?
2) как задать название итоговой таблицы?
3) имеется ли возможность задать тип данных в итоговой таблице (может, я хочу весь слой как мультиполигон в таблицу закинуть:о)|||)?
4) И наконец: shp2pgsql точно входит в дистрибутив постгис под виндоуз?!
Заранее благодарю.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Использование утилиты shp2pgsql

Сообщение Denis Rykov » 28 мар 2009, 20:26

Здравствуйте, Игорь.
Если ещё не читали, то гляньте вот эту статью: http://gis-lab.info/qa/postgis-work.html. Если останутся вопросы - пишите. Буду рад помочь, чем смогу.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Re: Использование утилиты shp2pgsql

Сообщение Игорь Черниенко » 28 мар 2009, 23:59

Спасибо, я читал эту статью. Вопросы есть, и они, должно быть, примитивные. Для начала вот:
SET PATH="C:\Program Files\PostgreSQL\8.3\bin" это путь к shp2pgsql.exe, который там находится, или к шейп-файлу, которого там нет?!

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Использование утилиты shp2pgsql

Сообщение Denis Rykov » 29 мар 2009, 09:22

Хорошо, тогда буду отвечать в обратном порядке.

Команда:

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

SET PATH="C:\Program Files\PostgreSQL\8.3\bin"
добавляет в переменную PATH соответствующий путь для того, чтобы при запуске shp2pgsql не указывать полный путь до исполняемого файла. То есть при написании какой-либо команды в консоли, система ищет её по адресам, указанным в переменной окружения PATH. Чтобы каждый раз не писать SET PATH="C:\Program Files\PostgreSQL\8.3\bin" просто откройте "Мой компьютер", щелкните правой кнопкой мыши, выберите "Свойства", затем перейдите на вкладку "Дополнительно" и нажмите "Переменные среды". Внизу выберите системную переменную "Path" и нажмите "Изменить". В открывшейся строке через ; добавьте C:\Program Files\PostgreSQL\8.3\bin. Все, теперь свободно можете заходить в консоль (Пуск - Выполнить - cmd) и писать shp2pgsql. Если все сделали правильно, то все должно заработать. А путь до shape-файла пишется как обычно, только при этом не забывайте заключать его в двойные кавычки: "C:\shapefiles\town.shp", например.

А теперь относительного первого поста.
1) как задать путь к шейп-файлу?
Путь до шейп-файла ничем не отличается от пути до любого другого типа файлов. Только не забудьте заключить его в кавычки.
2)как задать название итоговой таблицы?
Согласно синтаксису shp2pgsql имя таблицы следует сразу же за именем шейп-файла.
3) имеется ли возможность задать тип данных в итоговой таблице (может, я хочу весь слой как мультиполигон в таблицу закинуть:о)|||)?
При загрузке данных из шейп-файлов любого типа, например полигонального (POLYGON), в PostGIS по умолчанию они будут иметь тип мультиполигон (MULTIPOLYGON) даже если состоят из одинарных полигонов. Аналогична ситуация и при загрузке линейных объектов, которые по умолчанию загружаются как мультилинии. Дальнейшее изменение типов данных возможно средствами PostGIS.
4) И наконец: shp2pgsql точно входит в дистрибутив постгис под виндоуз?!
Да, входит. А у Вас разве нет?
Последний раз редактировалось Denis Rykov 29 мар 2009, 09:43, всего редактировалось 1 раз.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Re: Использование утилиты shp2pgsql

Сообщение Игорь Черниенко » 01 апр 2009, 15:34

Большое спасибо, разобрался. Я просто только-только установил постгресс, и не сразу откуда что запускается.:o)|||

Vavik
Интересующийся
Сообщения: 16
Зарегистрирован: 07 апр 2009, 16:58
Репутация: 0

Re: Использование утилиты shp2pgsql

Сообщение Vavik » 07 апр 2009, 20:26

Статью прочитал, шейп файл скачал (который в статье указывается), правда куда сувать его не знаю, составляю этот bat файл и ничего(

Что я делаю не так ?

Всё, разобрался)

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Re: Использование утилиты shp2pgsql

Сообщение Игорь Черниенко » 08 апр 2009, 11:45

кладете шейп-файл в любую папку, например D:\sp2pg. Запускаете командную строку (Пуск>PostgreSQL 8.3>Командная строка), там будет С:\Program Files\PostgreSQL\8.3\bin>
вводите shp2pgsql2 "D:\sp2pg\myshape.shp" myshape>myshape.sql (или, как там файл называется и где он лежит:о) В С:\Program Files\PostgreSQL\8.3\bin создается файл myshape.sql (или как назовете), который можно перекатать в таблицу постгис, например открыть в пгадмине через редактор запросов, или через командную строку. Удачи!

di@mond
Интересующийся
Сообщения: 47
Зарегистрирован: 13 апр 2009, 14:34
Репутация: 0
Откуда: Астрахань
Контактная информация:

Re: Использование утилиты shp2pgsql

Сообщение di@mond » 07 май 2009, 19:00

У меня sql-файл создается, но пустой...Почему так???

a_medved
Новоприбывший
Сообщения: 3
Зарегистрирован: 07 май 2009, 12:13
Репутация: 0

Re: Использование утилиты shp2pgsql

Сообщение a_medved » 08 май 2009, 06:45

Пустой sql файл - значит,произошла какая-то ошибка, поставьте в конце .bat-файла pause и посомтрите какая.

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Re: Использование утилиты shp2pgsql

Сообщение Игорь Черниенко » 08 май 2009, 11:12

а что писали в строке?

di@mond
Интересующийся
Сообщения: 47
Зарегистрирован: 13 апр 2009, 14:34
Репутация: 0
Откуда: Астрахань
Контактная информация:

Re: Использование утилиты shp2pgsql

Сообщение di@mond » 09 май 2009, 13:54

Файл создался, но теперь не загружается в базу postgis. Привожу содержимое командной строки:

C:\Program Files\PostgreSQL\8.3\bin>shp2pgsql "C:\geoserver-1.7.3\привязанный пр
оект\streets.shp" streets.shp>streets.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]

C:\Program Files\PostgreSQL\8.3\bin>psql -U postgres -f "C:\Program Files\Postgr
eSQL\8.3\bin\streets.sql" -d postgis
Password for user postgres:
BEGIN
psql:C:/Program Files/PostgreSQL/8.3/bin/streets.sql:4: ERROR: schema "streets"
does not exist
psql:C:/Program Files/PostgreSQL/8.3/bin/streets.sql:5: ERROR: current transact
ion is aborted, commands ignored until end of transaction block
psql:C:/Program Files/PostgreSQL/8.3/bin/streets.sql:6: ERROR: current transact
ion is aborted, commands ignored until end of transaction block
psql:C:/Program Files/PostgreSQL/8.3/bin/streets.sql:7: ERROR: current transact
ion is aborted, commands ignored until end of transaction block
psql:C:/Program Files/PostgreSQL/8.3/bin/streets.sql:8: ERROR: current transact
ion is aborted, commands ignored until end of transaction block
ROLLBACK

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Re: Использование утилиты shp2pgsql

Сообщение Игорь Черниенко » 13 май 2009, 12:41

А открыть sql файл через pgAdmin и там выполнить?

di@mond
Интересующийся
Сообщения: 47
Зарегистрирован: 13 апр 2009, 14:34
Репутация: 0
Откуда: Астрахань
Контактная информация:

Re: Использование утилиты shp2pgsql

Сообщение di@mond » 13 май 2009, 19:50

Спасибо за помощь, все загрузилось!!!

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Re: Использование утилиты shp2pgsql

Сообщение Игорь Черниенко » 16 май 2009, 13:13

не за что, сам мучился :о)

xen87
Активный участник
Сообщения: 168
Зарегистрирован: 08 апр 2009, 14:44
Репутация: 18
Откуда: Кострома

Re: Использование утилиты shp2pgsql

Сообщение xen87 » 29 авг 2011, 15:16

Здравствуйте, возникла проблема с добавлением sql файла в PostgreSQL 8.4 (PostGis 1.5), как написано в статье http://gis-lab.info/qa/postgis-work.html при помощи SHP2PGSQL создал файл bnd-political-boundary-a.sql, но в БД файл не добавился, попробовал выполнить запрос постгрессе, вылезла ошибка:

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

ERROR:  syntax error at or near "1"
LINE 17: 1 FA001 Administrative Area KHABAROVSKIY KRAY RS Russia A As...
Подскажите пожалуйста в чем может быть проблема ???

Ответить

Вернуться в «PostGIS/PostgreSQL»

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

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