Message posté par : Yvan Riou
----------------------------------------
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
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=349602#p349602
Pour y répondre : geolibre(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net