Ajout de fichiers de formes à la base de données PostGIS


30

J'ai pu créer une base de données Postgresql puis j'ai exécuté,

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

Alors maintenant, puis-je importer directement les fichiers de formes? Serait-ce la bonne commande,

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

Je ne sais pas comment structurer la base de données, n'aurait-elle pas besoin d'une table? J'aurai éventuellement besoin d'ajouter un tas de fichiers de formes et donc y a-t-il une commande pour le faire?

Réponses:


49

Essayez shp2pgsql. La syntaxe de base est comme:

shp2pgsql -s SRID SHAPEFILE.shp SCHEMA.TABLE | psql -h HOST -d BASE DE DONNEES -U UTILISATEUR

Je trouve toujours cette feuille de sécurité de http://www.bostongis.com utile. Si vous faites défiler un peu, vous trouverez des exemples simples sur la façon de charger les données.

J'espère que ça aide.


Mais je n'ai pas de table. Quelle table et quel schéma dois-je créer?
Sam007

1
Si vous jetez un œil à la triche , ce (-d|-a|-c|-p)sont les drapeaux des tableaux. Si vous n'avez rien spécifié, il choisira -cpar défaut (crée un nouveau tableau et le remplit). Quant à SRID, je ne sais pas - cela dépend de la projection de vos données. Si vous avez le .projfichier fourni avec les fichiers de formes, vous pouvez vérifier sa projection sur prj2epsg.org/search . J'espère que ça aide ..

merci pour la réponse @Haziq. Je suis seulement confus quant à la -cprovenance J'ai essayé shp2pgsql -s 4326 /var/www/geo/shapefile/PimaPine.shp -c public.Pima | psql -h localhost -d geospecies -U smaranhmais j'obtiens
Sam007

Je pense que le -cdevrait aller après -s 4326et avant /var/www/geo/shapefile/PimaPine.shp.. La syntaxe est shp2pgsql [OPTIONS] shapefile [schema.]table. Est-ce que changer la position des -ceffets fixes par erreur?

Non, toujours la même erreur. Il pourrait également être confronté au type d'erreur ROLLBACK à ce sujet, gis.stackexchange.com/questions/41807/…
Sam007

5

Ahh! Je ne peux pas encore commenter!

Ce que Haziq a posté serait la bonne façon de le faire en ligne de commande Sam.

TABLE est exactement ce que vous voulez lui donner et serait le nom à utiliser lors de l'appel depuis une requête, la table sera générée lors de l'importation.

Si vous devenez paresseux comme moi, j'utilise simplement le génial SPIT (Shapefile to PostGIS Import Tool) disponible en tant que plugin QGIS pour importer tous mes fichiers de formes maintenant. En supposant que vous utilisez QuantumGIS comme vous l'avez dit précédemment, vous utilisiez OpenGeo.


1
le problème est que je n'ai pas d'interface graphique. Je travaille à distance sur Ubuntu Server.
Sam007

SPIT fonctionnera à distance, je fais tout le temps du travail à ma base de données personnelle, il vous suffit de remplir les informations de connexion comme vous l'avez fait pour vous connecter sur psql.
RomaH

Comment l'exécuter
Sam007

Eh bien, je supposais que vous preniez des fichiers shp locaux et les mettiez sur votre serveur distant. Vous démarrez QGIS et utilisez le plugin SPIT sur votre machine locale, connectez votre serveur distant et téléchargez.
RomaH

Tous mes fichiers shp sont sur le serveur
Sam007
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.