Страница 1 из 2
Использование утилиты shp2pgsql
Добавлено: 28 мар 2009, 01:21
Игорь Черниенко
Пытаюсь пользоваться ПостГис. Из перевода руководства пользователя, из английской документации, так и не понял как пользоваться дампером. В связи с этим имею следующие вопросы:
1) как задать путь к шейп-файлу?
2) как задать название итоговой таблицы?
3) имеется ли возможность задать тип данных в итоговой таблице (может, я хочу весь слой как мультиполигон в таблицу закинуть:о)|||)?
4) И наконец: shp2pgsql точно входит в дистрибутив постгис под виндоуз?!
Заранее благодарю.
Re: Использование утилиты shp2pgsql
Добавлено: 28 мар 2009, 20:26
Denis Rykov
Здравствуйте, Игорь.
Если ещё не читали, то гляньте вот эту статью:
http://gis-lab.info/qa/postgis-work.html. Если останутся вопросы - пишите. Буду рад помочь, чем смогу.
Re: Использование утилиты shp2pgsql
Добавлено: 28 мар 2009, 23:59
Игорь Черниенко
Спасибо, я читал эту статью. Вопросы есть, и они, должно быть, примитивные. Для начала вот:
SET PATH="C:\Program Files\PostgreSQL\8.3\bin" это путь к shp2pgsql.exe, который там находится, или к шейп-файлу, которого там нет?!
Re: Использование утилиты shp2pgsql
Добавлено: 29 мар 2009, 09:22
Denis Rykov
Хорошо, тогда буду отвечать в обратном порядке.
Команда:
Код: Выделить всё
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 точно входит в дистрибутив постгис под виндоуз?!
Да, входит. А у Вас разве нет?
Re: Использование утилиты shp2pgsql
Добавлено: 01 апр 2009, 15:34
Игорь Черниенко
Большое спасибо, разобрался. Я просто только-только установил постгресс, и не сразу откуда что запускается.

)|||
Re: Использование утилиты shp2pgsql
Добавлено: 07 апр 2009, 20:26
Vavik
Статью прочитал, шейп файл скачал (который в статье указывается), правда куда сувать его не знаю, составляю этот bat файл и ничего(
Что я делаю не так ?
Всё, разобрался)
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 (или как назовете), который можно перекатать в таблицу постгис, например открыть в пгадмине через редактор запросов, или через командную строку. Удачи!
Re: Использование утилиты shp2pgsql
Добавлено: 07 май 2009, 19:00
di@mond
У меня sql-файл создается, но пустой...Почему так???
Re: Использование утилиты shp2pgsql
Добавлено: 08 май 2009, 06:45
a_medved
Пустой sql файл - значит,произошла какая-то ошибка, поставьте в конце .bat-файла pause и посомтрите какая.
Re: Использование утилиты shp2pgsql
Добавлено: 08 май 2009, 11:12
Игорь Черниенко
а что писали в строке?
Re: Использование утилиты shp2pgsql
Добавлено: 09 май 2009, 13:54
di@mond
Файл создался, но теперь не загружается в базу 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
Re: Использование утилиты shp2pgsql
Добавлено: 13 май 2009, 12:41
Игорь Черниенко
А открыть sql файл через pgAdmin и там выполнить?
Re: Использование утилиты shp2pgsql
Добавлено: 13 май 2009, 19:50
di@mond
Спасибо за помощь, все загрузилось!!!
Re: Использование утилиты shp2pgsql
Добавлено: 16 май 2009, 13:13
Игорь Черниенко
не за что, сам мучился :о)
Re: Использование утилиты shp2pgsql
Добавлено: 29 авг 2011, 15:16
xen87
Здравствуйте, возникла проблема с добавлением 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...
Подскажите пожалуйста в чем может быть проблема ???