Добавление шейп-файлов в базу данных PostGIS

30

Мне удалось создать базу данных Postgresql, а затем я выполнил,

createlang plpgsql geospecies
psql -d geospecies -f postgis.sql
psql -d geospecies -f spatial_ref_sys.sql

Так что теперь я могу напрямую импортировать шейп-файлы? Будет ли это правильная команда,

ogr2ogr -f PostgreSQL PG:"host=server_ip user=username dbname=dbname password=password" yourshapefile.shp;

Я не уверен, как структурировать базу данных, не нужна ли ей таблица? В конце концов мне нужно будет добавить кучу шейп-файлов, и есть ли команда для этого?

Sam007
источник

Ответы:

49

Попробуй shp2pgsql. Основной синтаксис выглядит так:

shp2pgsql -s SRID SHAPEFILE.shp SCHEMA.TABLE | psql -h HOST -d БАЗА ДАННЫХ -U ПОЛЬЗОВАТЕЛЬ

Я всегда нахожу этот лист с http://www.bostongis.com полезным. Если вы прокрутите немного вниз, вы найдете простые примеры того, как загружать данные.

Надеюсь, это поможет.

Stophface
источник
Но у меня нет стола. Какую таблицу и схему я должен создать?
Sam007
1
Если вы посмотрите на таблицу , (-d|-a|-c|-p)есть флаги для таблиц. Если вы ничего не указали, он выберет -cпо умолчанию (создает новую таблицу и заполняет ее). Что касается SRID, я не знаю - это зависит от проекции ваших данных. Если у вас есть .projфайл, который поставляется с шейп-файлами, вы можете проверить его проекцию на prj2epsg.org/search . Надеюсь, это поможет ..
спасибо за ответ @Haziq. Я только смущен относительно того, где -cприходит? Я пытался, shp2pgsql -s 4326 /var/www/geo/shapefile/PimaPine.shp -c public.Pima | psql -h localhost -d geospecies -U smaranhно я получаю сообщение об ошибке dpaste.com/834563
Sam007
Я думаю, что -cследует после -s 4326и до /var/www/geo/shapefile/PimaPine.shp.. Синтаксис есть shp2pgsql [OPTIONS] shapefile [schema.]table. Влияет ли изменение положения -cнеподвижного эффекта на ошибку?
Нету все той же ошибки. Это также может быть связано с
Sam007
5

Ааа! Пока не можете комментировать!

То, что написал Хазик, будет правильным способом командной строки, Сэм.

TABLE - это то, что вы хотите назвать по имени, и это будет имя, которое будет использоваться при вызове из запроса, таблица будет сгенерирована при импорте.

Если вы становитесь ленивым, как я, я просто использую замечательный SPIT (Shapefile to PostGIS Import Tool), доступный как плагин QGIS, чтобы импортировать все мои шейп-файлы сейчас. Предполагая, что вы используете QuantumGIS, как вы сказали, что вы использовали OpenGeo ранее.

RoMaH
источник
1
проблема в том, что у меня нет графического интерфейса. Я работаю на сервере Ubuntu удаленно.
Sam007
SPIT будет работать удаленно, я делаю все время от работы до моей домашней БД, вам просто нужно заполнить информацию о соединении, как вы это сделали для входа на psql.
RomaH
Как мне это выполнить
Sam007
Ну, я предполагал, что вы берете локальные файлы shp и помещаете их на свой удаленный сервер. Вы должны запустить QGIS и использовать плагин SPIT на своем локальном компьютере, подключить удаленный сервер и загрузить.
RomaH
Все мои файлы
shp