Ошибка типа: ожидаемый объект str, bytes или os.PathLike, а не GeojsonFile - PullRequest
0 голосов
/ 01 апреля 2020

datafile = open (имя файла, "r"); Ошибка типа: ожидаемый объект str, bytes или os.PathLike, а не GeojsonFile

Может кто-нибудь помочь мне, почему это происходит? я хочу читать пространственные данные в формате geo json.

Act Я хочу сохранить данные geo json в базе данных. Я уже подключаю базу данных, которая является базой данных 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()

1 Ответ

1 голос
/ 01 апреля 2020

В вашем коде filename ссылается на объект GeojsonFile вместо имени файла.

Если файл, который вы хотите прочитать в формате raw, является тем же файлом, что и файл, который читает pygeoj, вам следует сделать: * вместо чтения файла снова. В любом случае он уже содержит информацию, которая вам нужна из этого файла (как указано @ 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)
...