Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Hier 13:14

janyv
Membre
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 342

python ogr - opengeodb vers postgis

Bonjour smile

Pourriez-vous m'aider à écrire un script python permettant de transférer les classes d'entités d'une géodatabase fichier d'Esri vers un schéma d'une bdd postgres/postgis ?

J'ai commencé cet petit bout de code mais je coince sur les instructions de copie :

#!/usr/bin/python3

import sys , getopt
import os
from osgeo import ogr

def main(argv):
   dbname = ''
   schemaname = ''
   wkid = ''
   try:
       opts, args = getopt.getopt(argv,"d:s:w:",["FileGeoDB=","schema=","wkid"])
   except getopt.GetoptError:
      print ('esri2postgis.py -d <FileGeoDB> -s <schema PostGIS> -w <WKID>')
      sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print ('esri2postgis.py -d <FileGeoDB> -s <schema PostGIS> -w <WKID>')
         sys.exit()
      elif opt in ("-d", "--FileGeoDB"):
         dbname = arg
      elif opt in ("-s", "--schema"):
         schemaname = arg
      elif opt in ("-w", "--wkid"):
         wkid = arg

   if os.path.isdir(dbname):
      driver = ogr.GetDriverByName('OpenFileGDB')
      gdb = driver.Open(dbname)
      for featsClass_idx in range(gdb.GetLayerCount()):
         featsClass = gdb.GetLayerByIndex(featsClass_idx)
         if wkid == str(featsClass.GetSpatialRef().GetAuthorityCode(None)) :
            print (featsClass.GetName())

            ogr.UseExceptions()

            inLayerName = featsClass

            inDriver = ogr.GetDriverByName('OpenFileGDB')
            inDS = inDriver.Open(dbname, 0)
            inLayer = inDS.GetLayerByName(featsClass)

            outDriver = ogr.GetDriverByName('PostgreSQL')

# MANQUE LE CODE POUR ECRIRE DANS LE SCHEMA De la bdd PostGIS !!!

   else:
      print ("le nom de FileGeoDB fourni n'est pas un répertoire.")
      sys.exit()

if __name__ == "__main__":
   main(sys.argv[1:])


##########


Merci par avance pour votre aide smile

Bien à vous


Si tu ne sais pas demande, si tu sais partage smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |