数据文件=打开(文件名,“ r”); TypeError:预期的str,字节或os.PathLike对象,而不是GeojsonFile
有人可以帮我为什么会这样吗?我想以geojson格式读取空间数据。
我想将geojson数据存储到数据库中。我已经连接了数据库,它是MongoDB数据库。我使用gridfs克服了限制,但是首先我需要读取数据并将其存储到数据库中。
非常感谢
#read in the spatial data
filename = "/dami_data/data1/countries.geojson"
geojfile = pygeoj.load(filename)
for feature in geojfile:
print(feature.geometry.type)
print(feature.geometry.coordinates)
datafile = open(filename, "r")
thedata = datafile.read()
#create a gridFS object
filesystem = gridfs.GridFS(db, collection='data')
#write data to GridFS
myfile = filesystem.put(thedata, filename = "countries")
print ("Store to database :)")
#retrieve what was just stored/document
filesystem.get(myfile).read()
答案 0 :(得分:1)
在您的代码中,filename
是指GeojsonFile对象而不是文件名。
如果要原始读取的文件与pygeoj读取的文件相同,则应该这样做:
filename = "/dami_data/test_data/roads.geojson"
geojfile = pygeoj.load(filename)
for feature in geojfile:
print(feature.geometry.type)
print(feature.geometry.coordinates)
datafile = open(filename, "r")
thedata = datafile.read()
datafile.close()
尽管可以做到,但您应该考虑使用geojfile
而不是再次读取文件。无论如何,它已经保存了您从该文件中需要的信息(如@Karl Knechtel在评论中指出的那样。)
如果没有,表示您想读取其他文件,则应传递文件名:
filename = "/dami_data/test_data/roads.geojson"
geojfile = pygeoj.load(filename)
for feature in geojfile:
print(feature.geometry.type)
print(feature.geometry.coordinates)
datafile = open("my_other_file_name", "r")
thedata = datafile.read()
datafile.close()
最后,如果您想获取该GeojsonFile的原始数据,请执行以下操作:
filename = "/dami_data/test_data/roads.geojson"
geojfile = pygeoj.load(filename)
for feature in geojfile:
print(feature.geometry.type)
print(feature.geometry.coordinates)
thedata = str(geojfile)