既定では、Infrastructure Map Server は画層をレンダリングする際に発生するエラーを自動的に省略します。そのため、画層をレンダリングしているときに発生するエラーをデバッグしやすくするには、ログへの警告レベルの記録をオンにして、警告がエラー ログとトレース ログの両方に記録されるようにします。
[GeneralProperties] LogsDetail = MappingService:1,FeatureService:1, RenderingService:1
警告メッセージ自体は、問題を起こしている画層を特定できるほど十分な詳細は提供しません。
<2008-07-17T14:57:29> 2364 Anonymous Warning: An exception occurred in FDO component. Geometry property value encountered! StackTrace: - MgStylizationUtil.ExceptionTrap() line 199 file .\GeometryAdapter.cpp An exception occurred in FDO component.
トレース ログをオンにすると、十分な詳細が提供できます。利用できる詳細レベルはサービスによって決まります。ほとんどのサービスはレベル 2 の詳細を返すことができます。Mapping Service はレベル 3 の詳細を返すことができます。MgStylizationUtil.StylizerLayers トレース エントリは、Mapping Service に関するレベル 3 の詳細です。
Mapping Service に関するレベル 3 の詳細と、Feature および Rendering Service に関するレベル 2 の詳細を返すには、LogsDetail パラメータを次のように設定します。
[GeneralProperties] LogsDetail = MappingService:3,FeatureService:2, RenderingService:2
この結果は次のとおりです。
<2008-07-17T14:57:29> 2364 BGN MgStylizationUtil.StylizeLayers Map=Sheboygan,LayerId=Library://Samples/Sheboygan/Layers/ CityLimits.LayerDefinition <2008-07-17T14:57:29> 1544 MgClientHandler::Initialize() - Address: 27.0.0.1:2812 <2008-07-17T14:57:29> 1544 MgClientHandler::Initialize() - Address: 27.0.0.1:2811 <2008-07-17T14:57:29> 2300 MgServerMappingService::GenerateLegendImage <2008-07-17T14:57:29> 2364 BGN MgServerFeatureService.GetSpatialContexts Id=Library://Samples/Sheboygan/Data/ CityLimits.FeatureSource,ActiveOnly=0 <2008-07-17T14:57:29> 2364 END MgServerFeatureService.GetSpatialContexts <2008-07-17T14:57:29> 2364 BGN MgServerFeatureService.SelectFeatures Resource=Library://Samples/Sheboygan/Data/ CityLimits.FeatureSource,ClassName=SHP_Schema:CityLimits, Options={{Operator=1}{GeomProp=SHPGEOM} {GeomOp=EnvelopeIntersects}{Geometry=POLYGON ((-87.780335659913959 43.691398128787803, -87.680172841948519 43.691398128787803, -87.680172841948519 43.797520000480297, -87.780335659913959 43.797520000480297, -87.780335659913959 43.691398128787803))}} <2008-07-17T14:57:29> 2364 END MgServerFeatureService.SelectFeatures <2008-07-17T14:57:29> 2364 Warning: An exception occurred in FDO component. Geometry property value encountered! <2008-07-17T14:57:29> 2364 END MgStylizationUtil.StylizeLayers
エラー ログからは、スレッド 2364 で警告メッセージが生成されています。 タイムスタンプとスレッド ID を使用して、トレース ログで呼び出しスタックをトレースできます。トレース ログ内の警告文から MgServerFeatureService.SelectFeatures 呼び出しを介して MgStylizationUtil.StylizeLayers 呼び出しに至るまで、スレッド 2364 をバックトレースすることができます。BGN/END 文は、スレッドごとにネストしている処理を示します。Excel またはテキスト エディタを使用して、他のスレッドをログから削除することができます。
<2008-07-17T14:57:29> 2364BGNMgStylizationUtil.StylizeLayers Map=Sheboygan,LayerId=Library://Samples/Sheboygan/Layers/ CityLimits.LayerDefinition <2008-07-17T14:57:29> 2364 BGN MgServerFeatureService.GetSpatialContexts Id=Library://Samples/Sheboygan/Data/ CityLimits.FeatureSource,ActiveOnly=0 <2008-07-17T14:57:29> 2364 END MgServerFeatureService.GetSpatialContexts <2008-07-17T14:57:29> 2364 BGN MgServerFeatureService.SelectFeatures Resource=Library://Samples/Sheboygan/Data/ CityLimits.FeatureSource,ClassName=SHP_Schema:CityLimits, Options={{Operator=1}{GeomProp=SHPGEOM} {GeomOp=EnvelopeIntersects}{Geometry=POLYGON ((-87.780335659913959 43.691398128787803, -87.680172841948519 43.691398128787803, -87.680172841948519 43.797520000480297, -87.780335659913959 43.797520000480297, -87.780335659913959 43.691398128787803))}} <2008-07-17T14:57:29> 2364 END MgServerFeatureService.SelectFeatures <2008-07-17T14:57:29> 2364 Warning: An exception occurred in FDO component. Geometry property value encountered! <2008-07-17T14:57:29> 2364ENDMgStylizationUtil.StylizeLayers
FDO 例外は、SelectFeatures の呼び出し後すぐに発行されます。 これは論理的です。なぜなら、SelectFeatures は MgFeatureReader を返し、スタイライザによって実行される最初の ReadNext() はエラーを発生させるためです。
ログを見ると、StylizeLayers の BGN/END ブロックの間に警告メッセージが生じていることがわかります。これは、CityLimits 画層定義がエラーを引き起こす画層であることを意味します。これにより、マップ内のすべての画層を調べる必要なく、1 つの画層に専念することができます。