Arcview 3.2 подойдет.
Сбрасываю скрипт:
'Поворот и перенос начала координат у первой активной темы
theView = av.GetActiveDoc
theTheme = theView.GetActiveThemes.Get(0)
defaultName = FN.Make("$HOME").MakeTmp("theme","shp")
shpFileName = FileDialog.Put( defaultName,"*.shp","Output Shape File" )
if (shpFileName = Nil) then exit end
shpFileName.SetExtension("shp")
shapeType = theTheme.GetFtab.FindField("Shape").GetType
if (shapeType = #FIELD_SHAPELINE) then
outFTab = FTab.MakeNew( shpFileName, Polyline )
elseif (shapeType = #FIELD_SHAPEMULTIPOINT) then
outFTab = FTab.MakeNew( shpFileName, Multipoint )
elseif (shapeType = #FIELD_SHAPEPOINT) then
outFTab = FTab.MakeNew( shpFileName, Point )
elseif (shapeType = #FIELD_SHAPEPOLY) then
outFTab = FTab.MakeNew( shpFileName, Polygon )
end
inShapeField = theTheme.GetFtab.FindField("Shape")
outShapeField = outFTab.FindField("Shape")
inFTab = theTheme.GetFTab
inFieldList = inFTab.GetFields
outFieldList = inFieldList.DeepClone
outFieldList.Remove(0)
outFTab.AddFields( outFieldList )
aTrans = Transform2D.Make
aTrans.rotate(-90) 'Поворот на -90 градусов
'aTrans.Move(cX@cY) 'Перенос начала координат
for each rec in inFTab
theShape = theTheme.GetFtab.ReturnValue( inShapeField, rec )
newShape = theShape.Transform(aTrans)
newRec = outFtab.AddRecord
outFTab.SetValue( outShapeField, newRec, newShape )
fieldPtr = 0
for each fOut in outFieldList
fieldPtr = fieldPtr + 1
fIn = inFieldList.Get( fieldPtr )
outFTab.SetValue( fOut, newRec, inFTab.ReturnValue( fIn, rec ) )
end
end
outFtab.Flush
Если слоев очень много, то скрипт можно модифицировать так, чтобы он трансформировал все темы в виде.