diff --git a/src/COM classes/OgrLayer.cpp b/src/COM classes/OgrLayer.cpp index e01c49b2..72f00661 100644 --- a/src/COM classes/OgrLayer.cpp +++ b/src/COM classes/OgrLayer.cpp @@ -84,7 +84,12 @@ void COgrLayer::StopBackgroundLoading() IShapefile* COgrLayer::LoadShapefile() { bool isTrimmed = false; - IShapefile* sf = Ogr2Shape::Layer2Shapefile(_layer, _activeShapeType, _loader.GetMaxCacheCount(), isTrimmed, &_loader, _globalCallback); + ShpfileType shpType; + get_ShapeType(&shpType); + + shpType = shpType != SHP_NULLSHAPE ? shpType : _activeShapeType; + + IShapefile* sf = Ogr2Shape::Layer2Shapefile(_layer, shpType, _loader.GetMaxCacheCount(), isTrimmed, &_loader, _globalCallback); if (isTrimmed) { ErrorMessage(tkOGR_LAYER_TRIMMED); } diff --git a/src/COM classes/Shape.cpp b/src/COM classes/Shape.cpp index 879dbcba..f4d00608 100644 --- a/src/COM classes/Shape.cpp +++ b/src/COM classes/Shape.cpp @@ -2593,11 +2593,22 @@ STDMETHODIMP CShape::ImportFromWKT(BSTR Serialized, VARIANT_BOOL *retVal) *retVal = VARIANT_FALSE; USES_CONVERSION; + /* CString ser = OLE2A(Serialized); OGRGeometry* oGeom = NULL; char* buffer = ser.GetBuffer(); OGRErr err = OGRGeometryFactory::createFromWkt(&buffer, NULL, &oGeom); + */ + + char* pBuf = _com_util::ConvertBSTRToString(Serialized); + + char *pszBuffBack = pBuf; + + OGRGeometry* oGeom = NULL; + OGRErr err = OGRGeometryFactory::createFromWkt(&pBuf, NULL, &oGeom); + delete[] pszBuffBack; + if (err != OGRERR_NONE || !oGeom) { ErrorMessage(tkINVALID_SHAPE); diff --git a/src/COM classes/Shape.h b/src/COM classes/Shape.h index d75ba6a6..35acfa28 100644 --- a/src/COM classes/Shape.h +++ b/src/COM classes/Shape.h @@ -20,6 +20,7 @@ #pragma once // +#include #include "ShapeInterfaces.h" #include "OgrConverter.h" #include "ShapeWrapper.h"