Python падает при выполнении перепроецирования ogr в Jupyter Notebook (VSCode) - PullRequest
0 голосов
/ 25 марта 2020

Я перепроектирую шейп-файл следующим образом: Взято из https://pcjericks.github.io/py-gdalogr-cookbook/projection.html

from osgeo import gdal, ogr, osr
import os

driver = ogr.GetDriverByName('ESRI Shapefile')

# input SpatialReference
inSpatialRef = osr.SpatialReference()
inSpatialRef.ImportFromEPSG(31468)


# output SpatialReference
outSpatialRef = osr.SpatialReference()
outSpatialRef.ImportFromEPSG(32632)

# create the CoordinateTransformation
coordTrans = osr.CoordinateTransformation(inSpatialRef, outSpatialRef)

# get the input layer
inDataSet = driver.Open(r'/Users/.../test.shp')
inLayer = inDataSet.GetLayer()

# create the output layer
outputShapefile = r'/Users/.../test_UTM32N.shp'
if os.path.exists(outputShapefile):
    driver.DeleteDataSource(outputShapefile)
outDataSet = driver.CreateDataSource(outputShapefile)
outLayer = outDataSet.CreateLayer("test_UTM32N", geom_type=ogr.wkbMultiPolygon)

# add fields
inLayerDefn = inLayer.GetLayerDefn()
for i in range(0, inLayerDefn.GetFieldCount()):
    fieldDefn = inLayerDefn.GetFieldDefn(i)
    outLayer.CreateField(fieldDefn)

# get the output layer's feature definition
outLayerDefn = outLayer.GetLayerDefn()

# loop through the input features
inFeature = inLayer.GetNextFeature()
while inFeature:
    # get the input geometry
    geom = inFeature.GetGeometryRef()
    # reproject the geometry
    geom.Transform(coordTrans)
    # create a new feature
    outFeature = ogr.Feature(outLayerDefn)
    # set the geometry and attribute
    outFeature.SetGeometry(geom)
    for i in range(0, outLayerDefn.GetFieldCount()):
        outFeature.SetField(outLayerDefn.GetFieldDefn(i).GetNameRef(), inFeature.GetField(i))
    # add the feature to the shapefile
    outLayer.CreateFeature(outFeature)
    # dereference the features and get the next input feature
    outFeature = None
    inFeature = inLayer.GetNextFeature()

# Save and close the shapefiles
inDataSet = None
outDataSet =  None


outSpatialRef.MorphToESRI()
file = open('/Users/.../test_UTM32N.prj', 'w')
file.write(outSpatialRef.ExportToWkt())
file.close()

Я работаю в VSCode, Python 3.6.7 64-бит. Когда я выполняю код как скрипт .py, он работает, но когда я добавляю его в блокнот Jupyter и открываю окно, в котором отображаются активные переменные, я всегда получаю сообщение о том, что Python сбой. см. Скриншот

Почему это так и что я могу сделать? Я хочу продолжать работать с ноутбуком Jupyter ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...