У меня есть набор классов объектов для перепроектирования, и некоторые из них имеют меры.Чтобы воспроизвести измерения в перепроецированных объектах, мне нужно найти шкалу измерений объектов перед проецированием (некоторые классы объектов имеют измерения в километрах).
Когда я пытаюсь измерить масштаб, он недостаточно точен:
public static double measuresScaleFactor(IFeature pFeat, int iShpLenFld, out string sError)
{
// Get the scale factor of the feature measures assuming it has measures assigned
sError = "";
double dScale = 1;
IMSegmentation4 pSeg = null;
double dMax;
double dLength;
try
{
if (pFeat.Shape != null && pFeat.Shape.IsEmpty == false )
{
pSeg = (IMSegmentation4)pFeat.Shape;
dMax = pSeg.MMax;
dLength = (double)pFeat.Value[iShpLenFld];
dScale = dMax / dLength;
}
return dScale;
}
catch (Exception ex)
{
System.Diagnostics.StackTrace pStack = new System.Diagnostics.StackTrace(ex, true);
System.Diagnostics.StackFrame pFrame = pStack.GetFrame(pStack.FrameCount - 1);
int iLineNo = pFrame.GetFileLineNumber();
sError = "Error: measuresScaleFactor; Line: " + iLineNo + " \r\n" + ex.Message;
return dScale;
}
}
Для пробного запуска значение dLength составляло 745 м, а dMax было 0,741 км.Также могут возникнуть проблемы, когда pFeat является мультиполилиной, а меры дублированы в отдельных ее частях.
Может кто-нибудь сказать мне, есть ли интерфейс ArcSbjects с информацией о сегментации, который содержит (точное) значение масштабного коэффициента?
Спасибо,
J