2013-03-19 7 views
0

Я надеюсь, что моя проблема может быть решена с помощью некоторого опыта geojson. Проблема, которую я испытываю, связана с RhinoPython - встроенным движком IronPython в Rhino 5 от McNeel (подробнее здесь: http://python.rhino3d.com/). Я не считаю необходимым быть экспертом по RhinoPython, чтобы ответить на этот вопрос.Открытие файла geojson в RhinoPython

Я пытаюсь загрузить файл geojson в RhinoPython. Потому что вы не можете импортировать модуль GeoJSON в RhinoPython как в Python Я использую этот пользовательский модуль GeoJson2Rhino, представленную здесь: https://github.com/localcode/rhinopythonscripts/blob/master/GeoJson2Rhino.py

Сейчас мой сценарий выглядит следующим образом:

`import rhinoscriptsyntax as rs 
import sys 
rp_scripts = "rhinopythonscripts" 
sys.path.append(rp_scripts) 
import rhinopythonscripts 

import GeoJson2Rhino as geojson 

layer_1 = rs.GetLayer(layer='Layer 01') 
layer_color = rs.LayerColor(layer_1) 

f = open('test_3.geojson') 
gj_data = geojson.load(f,layer_1,layer_color) 
f.close()` 

В частности:

f = open('test_3.geojson') 
gj_data = geojson.load(f) 

отлично работает, когда я пытаюсь извлечь данные geojson из обычного python 2.7. Однако в RhinoPython появляется следующее сообщение об ошибке: Сообщение: ожидаемая строка для параметра «текст», но получена «файл»; в отношении gj_data = geojson.load (f).

Я смотрел сценарий GeoJson2Rhino, связанный выше, и я думаю, что я правильно установил параметры для этой функции. Насколько я могу судить, он, похоже, не распознает мой файл geojson и не хочет, чтобы он был строкой. Есть ли альтернативная функция открытия файла, которую я могу использовать, чтобы заставить функцию распознавать ее как файл geojson?

ответ

1

Судя по сообщению об ошибке, это выглядит как метод load требует строку в качестве первого ввода, но в приведенном выше, например, файл объект передается вместо этого. Попробуйте это ...

f = open('test_3.geojson') 
g = f.read(); # read contents of 'f' into a string 
gj_data = geojson.load(g) 

... или, если вы на самом деле не нужен объект файла ...

g = open('test_3.geojson').read() # get the contents of the geojson file directly 
gj_data = geojson.load(g) 

См here для получения дополнительной информации о чтении файлов в Python.