Il a été suggéré que je pose à nouveau cette question, mais peut-être libellé différemment de la façon de charger en bloc plusieurs fichiers de formes dans PostGIS .
Je suis nouveau sur postgis et sql mais je veux utiliser postgis comme esclave (pour le moment) d'ArcSDE. Par conséquent, ce que je recherche, c'est de l'aide pour savoir comment je pourrais procéder au téléchargement par lots de données ArcSDE dans PostGIS tous les soirs.
Je peux produire un script python pour exporter les données ArcSDE dans SHP tous les soirs, mais je ne sais pas comment télécharger par lots les fichiers SHP exportés dans PostGIS, écrasant ceux qui existaient déjà dans postgis tout comme une tâche automatisée (fichier batch je suppose ).
Mon grand plan est de remplacer ArcSDE / ArcGIS à temps par PostGIS, QGIS et GeoServer ou MapServer.
la source
Réponses:
Plutôt que de faire une conversion DB -> fichier -> DB, où Esri Shapefiles est le composant basé sur un fichier intermédiaire, il pourrait être utile d'enquêter sur un transfert DB -> DB plus direct. Il existe quelques outils qui peuvent le faire, mais je me concentre uniquement sur les outils open source GDAL / OGR .
En supposant que vous disposez d'un serveur Windows, vous pouvez facilement installer GDAL / OGR à l'aide d' OSGeo4W . Avec le mode d'installation avancée, vous avez la possibilité de sélectionner des configurations de packages personnalisées, telles que le pilote SDE (consultez cette liste de packages pour vous assurer qu'il existe une correspondance appropriée pour votre version SDE - seules les versions SDE 9.0 à 9.2 sont prises en charge). Ces packages ne sont que les en-têtes et les wrappers, et vous obligent à installer les bibliothèques SDE, que vous devriez avoir sur un CD / DVD ROM, et à vous assurer que les variables PATH sont correctement définies pour que GDAL / OGR les trouve. Une installation réussie affichera "SDE" quelque part avec la commande suivante dans un shell OSGeo4W:
ogr2ogr --formats
Après avoir configuré GDAL / OGR, vous pouvez utiliser quelques outils:
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" \ SDE:server,instance,database,username,password,layer,[version]
(vous pouvez aussi explorer les différents-append
,-overwrite
ou-update
options)La mise en garde majeure de cette méthode est qu'elle est compliquée à configurer.
la source
shp2pgsql
,psql
etc.PostGIS possède un chargeur nommé shp2pgsql que vous pouvez utiliser pour charger des fichiers de formes dans une base de données PostGIS. L'une de ses options ("-d") supprime la table de base de données existante avant de charger les données. Il devrait être assez simple de créer un fichier de commandes ou un script qui peut parcourir tous les fichiers de formes et les charger pour vous.
Si vous vouliez vous familiariser avec cela, vous pouvez installer GDAL et utiliser les outils OGR (qui ont un connecteur ArcSDE) et ignorer l'exportation du fichier de formes. Des informations sur le connecteur ArcSDE peuvent être trouvées ici .
la source
Je sais que je suis en retard à la fête mais il y a une autre option pour cela qui évite d'avoir 2 bases de données.
Vous pouvez avoir ArcSDE au-dessus de Postgresql + Postgis. Ce serait votre maître et seulement db.
ArcSDE peut être configuré pour utiliser des géométries postgis et non st_geometries (propriétaire ESRI).
Cela signifie que vous pouvez ensuite utiliser n'importe quel outil postgis pour utiliser directement les tables spatiales chargées / éditées ArcSDE, car il s'agit en fait de tables natives postgis.
Par exemple, vous pouvez utiliser qgis pour vous connecter directement à la base de données postgis et lire les mêmes données que arcgis via arcsde.
la source
Une autre approche consisterait à utiliser un ETL spatial comme Geokettle (open source).
http://www.spatialytics.org/projects/geokettle/
J'utilise Geokettle pour déplacer des données entre le serveur SQL et PostGIS tout le temps. Cependant, bien qu'il fonctionne bien avec PostGIS, il existe des défis lors de l'utilisation du type de données spatiales de SQL Server (voir les conseils ci-dessous). En outre, cela suppose que vous stockez des géométries SDE en tant que type de données spatiales natives SQL Server. Vous pouvez le faire avec le mot clé Geometry lors du chargement de données via ArcCatalog.
Astuce 1: lors de la sélection des données du serveur SQL, appliquez .STAsText () au champ de géométrie ou Geokettle s'étouffera avec le type de données du serveur SQL.
Astuce 2: Lors de l'insertion de données dans le serveur SQL, vous devrez insérer la géométrie sous forme de texte dans un champ de texte. Utilisez ensuite l'étape sql pour ajouter une nouvelle colonne de géométrie (si nécessaire) et remplissez-la à partir de la géométrie du texte. De cette façon, vous utilisez SQL Server pour créer la géométrie à partir d'une représentation textuelle standard OGC d'une géométrie.
Astuce 3: assurez-vous d'enregistrer votre nouvelle table spatiale avec SDE.
la source
Envisagez de configurer la réplication de la base de données sur la base de données d'origine de 9,3.
Cela ne fonctionne pas aussi bien que le nouveau 10 mais ...
répliquez cela à un autre sde dans postgresql en utilisant le type de données postgis pg_geometry.
Voici une aide esri
REMARQUE: cela nécessitera des licences en double si les deux dbs ne sont pas sur la même machine
la source
Vous pouvez écrire ArcObjects dans:
A) vider votre base de données arcsde; B) Code c # simple pour générer des sql shp2pgsql; C) Code c # simple pour vider les anciennes tables; D) C # simple pour exécuter tous les shp2pgsql dans votre postgresql;
Vous pouvez utiliser le pilote npgsql pour y parvenir, en exécutant des fonctions et des instructions sql directement dans votre base de données postgis;
la source
Quelle est votre géométrie ArcSDE ( stockage de géodatabase dans des bases de données relationnelles )? Dans un tel scénario, vous pouvez envisager d'utiliser le type ST_Geometry, puis d'utiliser les outils de réplication PostGre / PostGIS ( PostGIS Replication @ FOSS4G ). Ce schéma peut avoir l'avantage d'utiliser les fonctionnalités ArcSDE / ArcGIS / géodatabase pour l'édition (base de données d'édition) et les outils open source pour la diffusion (base de données de diffusion répliquée).
la source