Я написал подпрограмму строки cmd для импорта файла kml в приложение geoDjango, которое прекрасно работает, когда вы передаёте ему локально сохраненный путь к файлу KML (используя объект источника данных).
Сейчас я пишу диалоговое окно загрузки файлов, чтобы добиться того же. Это начало кода, который у меня есть, проблема в том, что объект GDAL DataSource, похоже, не понимает формат Djangos UploadedFile. Он хранится в памяти, а не в пути к файлу, как ожидалось.
Какова была бы лучшая стратегия для преобразования UploadedFile в обычный файл и доступа к нему по пути? Я не хочу сохранять файл после обработки.
def createFeatureSet(request):
if request.method == 'POST':
inMemoryFile = request.FILES['myfile']
name = inMemoryFile.name
POSTGIS_SRID = 900913
ds = DataSource(inMemoryFile) #This line doesnt work!!!
for layer in ds:
if layer.geom_type in (OGRGeomType('Point'), OGRGeomType('Point25D'), OGRGeomType('MultiPoint'), OGRGeomType('MultiPoint25D')):
layerGeomType = OGRGeomType('MultiPoint').django
elif layer.geom_type in (OGRGeomType('LineString'),OGRGeomType('LineString25D'), OGRGeomType('MultiLineString'), OGRGeomType('MultiLineString25D')):
layerGeomType = OGRGeomType('MultiLineString').django
elif layer.geom_type in (OGRGeomType('Polygon'), OGRGeomType('Polygon25D'), OGRGeomType('MultiPolygon'), OGRGeomType('MultiPolygon25D')):
layerGeomType = OGRGeomType('MultiPolygon').django