Comment lire un fichier Shapefile depuis Google Cloud Storage en utilisant Dataflow + Beam + Python.
J'ai trouvé seulement beam.io.ReadFromText
mais le lecteur de fichiers de forme de python exige un objet de type fichier : shp.Reader(shp=shp_file, dbf=dbf_file)
ou un fichier de forme.
J'utilise Python 2.7.
Réponses
Trop de publicités?C'est comme ça qu'il faut faire :
prj_file = beam.io.gcp.gcsio.GcsIO().open(
filenamePRJ,
mode='r',
read_buffer_size=1677721600,
mime_type='application/octet-stream'
)
shp_file = beam.io.gcp.gcsio.GcsIO().open(
filenameSHP,
mode='r',
read_buffer_size=1677721600,
mime_type='application/octet-stream'
)
dbf_file = beam.io.gcp.gcsio.GcsIO().open(
filenameDBF,
mode='r',
read_buffer_size=1677721600,
mime_type='application/octet-stream'
)
sf = shp.Reader(shp=shp_file, dbf=dbf_file)
euref = osr.SpatialReference()
euref.ImportFromWkt(str(prj_file.read()))
wgs84 = osr.SpatialReference()
wgs84.ImportFromEPSG(4326)
transformation = osr.CoordinateTransformation(euref,wgs84)
Travis Webb
Points
5765
Voici un paquet python qui inclut des connecteurs d'E/S Beam personnalisés pour la lecture de Shapefiles : https://github.com/GoogleCloudPlatform/dataflow-geobeam