HOME » FDO Open Source » FDO 3.0 対 FDO 3.2
FDO 3.0 対 FDO 3.2
FDO API 名前変更
FDO API バージョン3.2で使用される命名規則は、バージョン3.0で公開されたものから変更されています。これらの変更は、APIで使用されていた命名規則を、オートデスク社に由来する命名規則を取り去り、OSGeoフレームワーク内での命名規則に変更するために行われました。
これらの変更を実施した結果、ユーザーはリネームされたFDOのクラスや一覧表、ヘッダーファイル、ライブラリ、その他を使用するために、アプリケーションを修正することが必要となります。
注:3.0から3.2へ移行する際にAPI変更は、3.1と3.2の違いについて検討するときにも適用できます。
下記のセクションはFDO3.2 で作成された命名規則の概要です。
未使用のFDO API インターフェースの削除
どのプロバイダでも実装されていなかったFDO APIのサブセットがありました。これらの未実装のインターフェースはFDO API から削除されました。Topology API の削除
Topology API の削除は、クラスやファイル、一覧の値に関連付けられている全てのトポロジーがFDO API から削除されることを意味します。要求された変更点の要約は下記の通りです。
- FdoITopologyCapabilities インターフェースはFDO API から削除されました。
- FdoIConnectionインターフェースはcapabillities メソッドmethod(機能メソッド?)に関連付けられたトポロジーを削除するよう変更されました。
virtual FdoITopologyCapabilities GetTopologyCapabilities(); - FdoCommandType Enumerationは一覧の値に関連付けられているトポロジーを削除するようアップデートされました。
- FdoCommandType_ActivateTopologyArea
- FdoCommandType_DeactivateTopologyArea
- FdoCommandType_ActivateTopologyInCommandResult
- FdoCommandType_DeactivateTopologyInCommandResults
- 下記のコマンド・インターフェースは、それらの関連する.hおよび.cppファイルと同様にFDO APIから削除されました。
- FdoIActivateTopologyArea
- FdoIDeactivateTopologyArea
- FdoIActivateTopologyInCommandResults
- FdoIDeactivateTopologyInCommandResults
- FdoIMoveTopoNode
- FdoIReconnectTopoEdge
- 下記のスキーマ管理クラスは、それらの関連する.hおよび.cppファイルと同様にFDO APIから削除されました。
- FdoTopoGeometryPropertyDefinition
- FdoTopology
- Removal of the Network API
Network APIの削除
Network APIの削除は、すべてのネットワーク関連のクラス、ファイル、列挙値がFDO APIから削除されたことを意味します。要求された変更点の要約は以下の通りです。
- FdoISchemaCapabilitiesインターフェースは以下のcapabilities メソッに関連付けられているネットワークを削除するよう変更されました。
virtual bool SupportsNetworkModel(); - FdoCommandType Enumerationは一覧の値に関連付けられているFDO Networkを削除するようアップデートされました。
- FdoCommandType_NetworkShortestPath
- FdoCommandType_NetworkAllPaths
- FdoCommandType_NetworkReachableNodes
- FdoCommandType_NetworkReachingNodes
- FdoCommandType_NetworkNearestNeighbors
- FdoCommandType_NetworkWithinCost
- FdoCommandType_NetworkTSP
- 下記のコマンドおよびリーダ・インターフェースは、それらの関連する.hおよび.cppファイルと同様にFDO APIから削除されました。
- FdoINetworkCommand
- FdoINetworkAllPathsCommand
- FdoINetworkNearestNeighborsCommand
- FdoINetworkPathReader
- FdoINetworkReachableNodesCommand
- FdoINetworkReachingNodesCommand
- FdoINetworkReader
- FdoINetworkShortestPathCommand
- FdoINetworkTSPCommand
- FdoINetworkWithinCostCommand
- 下記の一覧の値はFdoClassType enumerationから削除されました。
- FdoClassType_NetworkClass,
- FdoClassType_NetworkLayerClass,
- FdoClassType_NetworkNodeClass,
- FdoClassType_NetworkLinkClass
- 下記のスキーマ管理クラスは、それらの関連する.hおよび.cppファイルと同様にAPIから削除されました。
- FdoNetworkClass
- FdoNetworkFeatureClass
- FdoNetworkLayerClass
- FdoNetworkLinkFeatureClass
- FdoNetworkNodeFeatureClass
- プロバイダが書き込みをサポートするかどうか識別する。
- 名前の最大サイズや文字列のサイズといった、様々なスキーマ要素のサイズ範囲を識別する。
- スキーマ要素名に有効でない文字を識別する。
- ジオメトリプロパティ用に許可された明示的なジオメトリタイプを指定することをサポートする。
- プロバイダが書き込みをサポートしていたら、trueを返す
virtual FDO_API bool SupportsWrite()=0 - プロバイダが一度に複数のユーザーがデータ・ストアに書き込みできることをサポートしていたら、trueを返す
virtual FDO_API bool SupportsMultiUserWrite=0 - Int32 Max(Int32)
- Double Max(Double)
- String Max(String)
- Date Max(Date)
- 関数に必要なFdoArgumentDefinitionの一連のオブジェクトを得る。
FDO_API FdoReadOnlyArgumentDefinitionCollection GetArguments () - 関数の戻り値のFdoPropertyTypeを得ます。
FDO_API FdoPropertyType GetReturnPropertyType () - 関数戻り値のFdoDataTypeを得ます。関数の戻り値がFdoPropertyType_DataPropertyである場合のみ有効です。
FDO_API FdoDataType GetReturnType() - 関数によってサポートされている、異なった署名を記述する一連のFdoSignatureDefinitionオブジェクトを入手する。
FDO_API FdoReadOnlySignatureDefinitionCollection GetSignatures () - 関数が集約関数である場合trueを返し、単純な関数の場合falseを返す。
FDO_API bool IsAggregate() - データ・ストア名の最大値
- スキーマ名の最大値
- クラス名の最大値
- プロパティ名の最大値
- 記述の最大値
- 予約文字のリスト:(データ・ストア名、スキーマ名、クラス名およびプロパティ名)
- identityプロパティ用に使用するようサポートされたプロパティ
- プロパティ用のデフォルト値の仕様をサポート
- 与えられたタイプの最大値を返す。クラス名、プロパティ名、説明欄のサイズサイズのリミットを含む。
virtual FDO_API FdoInt32 GetNameSizeLimit (FdoSchemaElementNameType name)=0 - プロバイダの様々なスキーマ要素名(例えばデータ・ストア名、クラス名など)に使用することができない予約文字をすべて含んでいる文字列を返す。
virtual FDO_API FdoString GetReservedCharactersForNames()=0 - もしデフォルトの値がデータ・プロパティ定義用に標準化されたものであればTRUEを返し、それ以外はFALSEを返す。
virtual FDO_API FdoDataType SupportsDefaultValue ()=0 - identityプロパティに使用できるプロパティ・リストを得る。
virtual FDO_API FdoDataType GetSupportedIdentityPropertyTypes (FdoInt32 &length)=0 - 10進法の最大精度
- 10進法の最大尺度
- 文字列の最長値
- BLOBの最長値
- CLOBの最長値
- サポートされている文字列、BLOB、CLOBデータ・プロパティの最長値を得る。
- 10進法については最大尺度および最大精度。
- 可変長でない他のデータタイプについては、値はバイト長で返ってくる。
- いくつかのプロバイダはint32に適合しないblob長を使用しているため、ちはint64で返ってくることに注意。
virtual FDO_API FdoInt64 GetMaximumDataValueLength (FdoDataType dataType)=0 - 10進法のデータ・プロパティのサポートされている最大の精度を得る。
virtual FDO_API FdoInt32 GetMaximumDecimalcision()=0 - 10進法のデータ・プロパティのサポートされている最大の尺度を得る。
virtual FDO_API FdoInt32 GetMaximumDecimalScale()=0 - ポイント: ポイント, マルチポイント
- 線形: ライン・ストリング,マルチ・ライン・ストリング, カーブ・ストリング, マルチ・カーブ・ストリング
- 領域: ポリゴン, マルチ・ポリゴン, カーブ・ポリゴン, マルチ・カーブ・ポリゴン
- 立体: 立体ジオメトリック・タイプにはジオメトリ・タイプが存在しない
- ポイント+線形+領域: 上記の全て+マルチ・ジオメトリ
- クラスが書き込みをサポートしていたらtrueを返す
FDO_API FdoBoolean SupportsWrite()=0 - プロバイダの現在の接続によってサポートされているデータ・ストア・タイプを返す。
FDO_API FdoProviderDatastoreType GetProviderDatastoreType()=0 - ファイル・ベースのデータストアの現在の接続用の依存ファイルを得る。
ファイル名はフルパスquolificationを含む。
FDO_API FdoStringCollection GetDependentFileNames()=0
- ファイル: Raster, SDF, SHP, ODBC, OGR
- データベース・サーバー: ArcSDE, MySQL, ODBC, OGR
- Webサーバー: WFS, WMS
FDO API ライブラリのための命名変更
FDO APIのコンポーネントは、Gisのリファレンスを取り除いて、接頭語としてFDO(大文字)を使用するコンポーネントを標準化するために改名されました。| コンポーネント | 説明 |
|---|---|
| GisCommon | 共通タイプの定義とテンプレート。FDOCommonへリネーム。 |
| GisGeometry | FGF用ジオメトリ・インターフェースおよびファクトリー。 FDO Geometryへリネーム。 |
| FdoMessage | FDO用メッセージ・カタログ。FDO Messageへリネーム。 |
| GisMessage | 単一のメッセージ・カタログを形成するためにFDOMessageに統合された、GisCommonとGisGeometryのためのメッセージ・カタログ。 |
| GisNLS | グローバル化ユーティリィティをFDONLSへリネーム。 |
| GisSpatial | GisGeometry周りのユーティリティ・コンポーネント。(ジオメトリ検証、縦座標(2倍にするべき整数)の変形、近似アルゴリズムを含む。)FDOSpatialへリネーム。 |
| MgCommon | GisCommonのための管理ラッパー。.OSGeo.FDO.Common.dllへリネーム。 |
| MgFDO | Fdoのための管理ラッパー。.OSGeo.FDO.dllへリネーム。 |
| MgGeometry | GisGeometryのための管理ラッパー。.OSGeo.FDO.Geometry.dllへリネーム。 |
| MgSpatial | GisGeometryに基づいた空間ユーティリティ。OSGeo.FDO.Spatial.dllへリネーム。 |
オープンソースコード命名規則の強化
これらの変更から、FDO APIのすべてのクラス名はcamel caseである “Fdo”で始まるべきとなりました。FDOインターフェース定義は「FdoI」で始まります。
クラスのメンバーはGet/セットと共にゲッタとセッター接頭語によって定義されます。
FDOプロバイダのインプリメンテーションは、Fdo immentationクラスを「Fdo<プロバイダの省略表記>Implimentation」のようなパターンに表記していくらか標準化しました
現在のFDO API は’Autodesk’および’Gis’という用語を使っています。これらの用語は、オープン・ソース・リリースにおいて、’OSGeo’および’Fdo’に置き換えられます。下記のセクションは、主な変更箇所の概説です。
管理APIのネームスペース変更
バージョン3.0において、FDO Managed API 用のネームスペースはAutdesk.Gis.Fdoを参照しています。これらのネームスペースは、下記のようにOSGeo.FDOを参照するよう変更される予定です。| 3.0 API | 3.2 API |
|---|---|
| Autodesk.Gis | OSGeo |
| Autodesk.Gis.Runtime | OSGeo.Runtime |
| Autodesk.Gis.Common | OSGeo.Common |
| Autodesk.Gis.Geometry | OSGeo.Geometry |
| Autodesk.Gis.Spatial | OSGeo.Spatial |
| Autodesk.Gis.Fdo | OSGeo.FDO |
| Autodesk.Gis.Fdo.Utilities | OSGeo.FDO.Utilities |
| Autodesk.Gis.Fdo.Providers | OSGeo.FDO.Providers |
| Autodesk.Gis.Fdo.Providers.Shape | OSGeo.FDO.Providers.SHP |
| Autodesk.Gis.Fdo.Providers.ODBC | OSGeo.FDO.Providers.ODBC |
| Autodesk.Gis.Fdo.Providers.MySQL | OSGeo.FDO.Providers.MySQL |
| Autodesk.Gis.Fdo.Providers.WMS | OSGeo.FDO.Providers.WMS |
| Autodesk.Gis.Fdo.Providers.WFS | OSGeo.FDO.Providers.WFS |
マクロ/プリプロセッサー ネーム変更
Gisの参照を削除するためにリネームされた多くのFDOマクロ/プリプロセッサー定義があります。| 3.0 API | 3.2 API |
|---|---|
| EXP_GIS | EXP_FDO |
| EXP_GISGEOM | EXP_GEOM |
| GIS_API | FDO_API |
| GISGEOM_API | GEOM_API |
| GISSPATIAL_STATIC | SPATIAL_STATIC |
| EXP_GISSPATIAL | EXP_SPATIAL |
| GISSPATIAL_API | SPATIAL_API |
| GIS_COLL_MAP_THRESHOLD | FDO_COLL_MAP_THRESHOLD |
| GIS_NLSID | FDO_NLSID |
| GIS_SAFE_RELEASE | FDO_SAFE_RELEASE |
| GIS_SAFE_ADDREF | FDO_SAFE_ADDREF |
タイプ ネーム変更
Gisの参照を削除するためにリネームされた多くのFDOタイプ定義があります。| 3.0 API | 3.2 API |
|---|---|
| GisDimensionality | FdoDimensionality |
| GisGeometryType | FdoGeometryType |
| GisGeometryComponentType | FdoGeometryComponentType |
| GisStreamReaderType | FdoStreamReaderType |
| GisSpatialGeometryValidity | FdoSpatialGeometryValidity |
| GisToken | FdoToken |
| gis_awkt_yytokentype | fdo_awkt_yytokentype |
| GisByte | FdoByte |
| GisInt8 | FdoInt8 |
| GisInt16 | FdoInt16 |
| GisInt32 | FdoInt32 |
| GisInt64 | FdoInt64 |
| GisCharacter | FdoCharacter |
| GisVoid | FdoVoid |
| GisDouble | FdoDouble |
| GisFloat | FdoFloat |
| GisSize | FdoSize |
| GisBoolean | FdoBoolean |
| GisString | FdoString |
| GisDateTime | FdoDateTime |
| GisSpatialGeometryValidity | FdoSpatialGeometryValidity |
クラス/インターフェース 名前変更
FDO Commonクラスの接頭辞はGisからFdoに変更されまました。| 3.0 Class Names | 3.2 Class Names |
|---|---|
| GisArray | FdoArray |
| GisIntArray | FdoIntArray |
| GisArrayHelper | FdoArrayHelper |
| GisCollection | FdoCollection |
| GisDictionary | FdoDictionary |
| GisDictionaryElement | FdoDictionaryElement |
| GisDisposable | FdoDisposable |
| GisIDisposable | FdoIDisposable |
| GisException | FdoException |
| GisPtr | FdoPtr |
| GisSemaphore | FdoSemaphore |
| GisStringP | FdoStringP |
| GisIDisposable | FdoIDisposable |
| GisIStreamReader | FdoIStreamReader |
| GisIStreamReaderTmpl | FdoIStreamReaderTmpl |
| GisNamedCollection | FdoNamedCollection |
| GisReadOnlyNamedCollection | FdoReadOnlyNamedCollection |
| GisRestrictedNamedCollection | FdoRestrictedNamedCollection |
| GisStack | FdoStack |
| GisStringElement | FdoStringElement |
| GisStringCollection | FdoStringCollection |
| GisStringsP | FdoStringsP |
| GisDateTime | FdoDateTime |
| GisVectorElement | FdoVectorElement |
| GisVector | FdoVector |
| GisVectorP | FdoVectorP |
| GisGml212 | FdoGml212 |
| GisGml212Schema | FdoGml212Schema |
| GisIoBufferStream | FdoIoBufferStream |
| GisIoByteStreamReader | FdoIoByteStreamReader |
| GisIoFileStream | FdoIoFileStream |
| GisIoMemoryStream | FdoIoMemoryStream |
| GisIoObjectStreamReader | FdoIoObjectStreamReader |
| GisIoObjectStream | FdoIoObjectStream |
| GisIoStream | FdoIoStream |
| GisIoTextReader | FdoIoTextReader |
| GisIoTextWriter | FdoIoTextWriter |
| GisXmlAttribute | FdoXmlAttribute |
| GisXmlAttributeCollection | FdoXmlAttributeCollection |
| GisXmlCharDataHandler | FdoXmlCharDataHandler |
| GisXmlCopyHandler | FdoXmlCopyHandler |
| GisXmlReader | FdoXmlReader |
| GisXmlSaxContext | FdoXmlSaxContext |
| GisXmlSaxHandler | FdoXmlSaxHandler |
| GisXmlSkipElementHandler | FdoXmlSkipElementHandler |
| GisXmlUtilXrcs | FdoXmlUtilXrcs |
| GisXmlWriter | FdoXmlWriter |
| GisXml | FdoXml |
| GisXslTransformer | FdoXslTransformer |
| GisXslTransformerXalan | FdoXslTransformerXalan |
注:GisExceptionクラスと、FdoExceptionクラスは単一のFdoException例外クラスを形成するために統合されました。
FDO Geometryクラスの接頭辞はGisからFdoへ変更されました。
| 3.0 Class Names | 3.2 Class Names |
|---|---|
| GisDirectPositionImpl | FdoDirectPositionImpl |
| GisEnvelopeImpl | FdoEnvelopeImpl |
| GisGeometryFactoryAbstract | FdoGeometryFactoryAbstract |
| GisIArcSegmentAbstract | FdoIArcSegmentAbstract |
| GisICircularArcSegment | FdoICircularArcSegment |
| GisICurveAbstract | FdoICurveAbstract |
| GisICurvePolygon | FdoICurvePolygon |
| GisCurvePolygonCollection | FdoCurvePolygonCollection |
| GisICurveSegmentAbstract | FdoICurveSegmentAbstract |
| GisCurveSegmentCollection | FdoCurveSegmentCollection |
| GisICurveString | FdoICurveString |
| GisCurveStringCollection | FdoCurveStringCollection |
| GisIDirectPosition | FdoIDirectPosition |
| GisDirectPositionCollection | FdoDirectPositionCollection |
| GisIEnvelope | FdoIEnvelope |
| GisIGeometricAggregateAbstract | FdoIGeometricAggregateAbstract |
| GisIGeometry | FdoIGeometry |
| GisGeometryCollection | FdoGeometryCollection |
| GisILinearRing | FdoILinearRing |
| GisLinearRingCollection | FdoLinearRingCollection |
| GisILineString | FdoILineString |
| GisLineStringCollection | FdoLineStringCollection |
| GisILineStringSegment | FdoILineStringSegment |
| GisIMultiCurvePolygon | FdoIMultiCurvePolygon |
| GisIMultiCurveString | FdoIMultiCurveString |
| GisIMultiGeometry | FdoIMultiGeometry |
| GisIMultiLineString | FdoIMultiLineString |
| GisIMultiPoint | FdoIMultiPoint |
| GisIMultiPolygon | FdoIMultiPolygon |
| GisIPoint | FdoIPoint |
| GisPointCollection | FdoPointCollection |
| GisIPolygon | FdoIPolygon |
| GisPolygonCollection | FdoPolygonCollection |
| GisIRing | FdoIRing |
| GisRingCollection | FdoRingCollection |
| GisIRingAbstract | FdoIRingAbstract |
| GisISurfaceAbstract | FdoISurfaceAbstract |
| GisAgfGeometryFactory | FdoFgfGeometryFactory |
| GisGeometryStreamFactory | FdoGeometryStreamFactory |
| GisGeometryStreamReader | FdoGeometryStreamReader |
| GisGeometryStreamWriter | FdoGeometryStreamWriter |
FDO Spatial API クラスの接頭辞はGisからFdoに変更されました。
| 3.0 Class Name | 3.2 Class Name |
|---|---|
| GisSpatialGridTransform | FdoSpatialGridTransform |
| GisSpatialUtility | FdoSpatialUtility |
AGFからFGFへの名前変更
FDO APIはバージョン3.0の中で、AGFまたはAutodesk Geometry Formatという用語を使用しました。バージョン3.2では、この用語はFdo Geometry Format または Feature Geometry Format をあらわすFGFに置き換えられました。この変更をするために、AGF geometry GisAgfGeometryFactory および GisAgfGeometryFactory2を作成するジオメトリ・クラスはFdoFgfGeometryFactory および FdoFgfGeometryFactory2へリネームされなければなりません。その他、CreateGeometryFormatAgfやGetAgfのように変更が必要なファクトリー・メソッドもあります。
| 3.0 Factory Method Name | 3.2 Factory Method Name |
|---|---|
| CreateGeometryFromAgf | CreateGeometryFromFgf |
| GetAgf | GetFgf |
SHP Override API クラス命名規則
Physical Overrides APIは、SHP、ODBC、MySQLおよびWMSプロバイダのために定義されています。3.0において、API 用命名規則は標準化されていません。オープンソース化への取り組みの一部として、これらのAPIはFdo[Provider]Ovの共通の接頭辞を使用するよう標準化されました。
この命名規則は、すでにODBC、MySQL、およびWMSプロバイダで使用されています。SHPプロバイダもこの標準化に従うためにアップデートされます。次のテーブルは、FDO SHPプロバイダのバージョン3.2に使用されたオープン・ソース・クラス名の概説です。
| 3.0 Class Name | 3.2 Class Name |
|---|---|
| FdoShpClassCollection | FdoShpOvClassCollection |
| FdoShpClassDefinition | FdoShpOvClassDefinition |
| FdoShpColumnDefinition | FdoShpOvColumnDefinition |
| FdoShpPhysicalSchemaMapping | FdoShpOvPhysicalSchemaMapping |
| FdoShpPropertyDefinition | FdoShpOvPropertyDefinition |
| FdoShpPropertyDefinitionCollection | FdoShpOvPropertyDefinitionCollection |
ファイル名 変更
いくつかのFDO APIファイルは、共通のファイル命名規則に一致するかあるいはそれらのファイル名からGISを削除するために名前を変更しました。| 3.0 File Name | 3.2 File Name |
|---|---|
| GisCommon.h | FdoCommon.h |
| GisGeometry.h | FdoGeometry.h |
| GisMessage.h | FdoMessage.h |
| common/Types.h | Common/FdoTypes.h |
| common/GisPtr.h | Common/Ptr.h |
| common/GisSemaphore.h | Common/Semaphore.h |
| common/GisStd.h | Common/Std.h |
| common/GisStringp.h | Common/Stringp.h |
| fdo/FdoCollection.h | Common/Collection.h |
| fdo/FdoException.h | Common/Exception.h |
| Geometry/AgfGeometry/AgfGeometryFactory.h | Geometry/Fgf/Factory.h |
| Spatial/GisSpatialGeometryValidity.h | Spatial/SpatialGeometryValidity.h |
| Spatial/GisSpatialGridTransform.h | Spatial/SpatialGridTransform.h |
| Spatial/GisSpatialStd.h | Spatial/SpatialStd.h |
| Spatial/GisSpatialUtility.h | Spatial/SpatialUtility.h |
ドキュメンテーション
バージョン3.2では、FDO Open Source API リファレンス・ドキュメンテーションはDoxygenを使用して作成されます。API ドキュメンテーション内容は、公共のFDO API Capabilities Related Changesを構成するヘッダーファイルから直接読み出されます。変化に関連する機能
FDO3.2で追加された機能サポートは、FDO APIを以下のように使用する場合に加えられました。接続機能
主な追加はデータ・ストアが読み出し専用か書き込みをサポートできるかどうかを示すことです。SupportsWrite() 機能を追加することで、クライアントはプロバイダが読み取り専用かどうかわかります。データをアップデートできるということと関連しますが、スキーマの変更は含まないということに注意してください。スキーマの変更用には別のスキーマ機能があります。関連する追加分はプロバイダがマルチユーザーアップデートをサポートするかどうか示す機能、つまり、書き込みをサポートするプロバイダのために、複数のユーザがデータ・ストアを同時に更新することができる機能のことです。例えば、ファイルに基づいたデータ・ストアは一度にたった1人のユーザーしか更新することができませんが、データベースは一度に多数のユーザが更新することができるということです。
上記の目的をサポートするために、2つの追加機能が下記のメソッドと共にFdoIConnectionCapabilitiesに加えられました:
書き込みがサポートされなければ、ロック、処理、および複数ユーザーの書き込みもサポートされません。複数ユーザーの書き込みがサポートされる場合、書き込みもサポートされます。
式機能
オーバーロード関数の定義を処理するために、式機能の変更が行われました。補足変更は単純関数から集約関数を識別するために変更が追加されました。E.g.Max()は1セットのオブジェクトから単一の結果を計算する集約関数です。それに比べてSqrt()は単一の値上で動作する、単純な関数です。オーバーロード関数をサポートできるように、1セットのfunction signatureについて記述する方法が必要です。
E.g.
その機能強化は、関数定義から返すことができる署名構造および署名収集構造を定義します。
上記のコンセプトをサポートするために、新しいクラスFdoSignatureDefinitionは、下記のメソッドと共にFDO APIに加えられました:
FdoSignatureDefinitionのインスタンスをcollectionの中に集めるために、読み取り専用のcollectionであるFdoReadOnlySignatureDefinitionCollectionもFDO APIに加えられました。
最終的にFdoFunctionDefinitionに、下記のメソッドが追加されました:
下位互換性と、オーバーロード関数のために、既存のメソッドであるGetArguments() および GetReturnType()は現在と今と同じ結果を返します。現在サポートされているmin(),max(),avg(),ceil(),floor(),などの集約関数のために、機能は2倍の引数をとり、2倍の値を返します。
スキーマの機能 および スキーマの制限
名前のサイズおよび値の最大値に対する制限について記述することができるようFDO APIスキーマ機能に追加分が作成されました。以下は、この機能のセットに追加された追加分の制限情報です。
一般的に、様々な国の言語サポートをが考慮に入れた場合、完全なリストを決定するには有効な文字のリストはとても長くて難しいため、有効な文字のリストよりもむしろ予約された文字のリストのほうが選択されました。
予約された文字のリストは、OracleやSQL Serverなどのソースにとって、通常比較的小さくて決定するのが簡単です。このリストはwide-char文字のリストです。
追加されたスキーマ機能が2つあります。
ここでnameタイプを列挙します。
enum FdoSchemaElementNameType:
| FdoSchemaElementNameType_Datastore | データ・ストア名 |
| FdoSchemaElementNameType_Schema | スキーマ名 |
| FdoSchemaElementNameType_Class | クラス名 |
| FdoSchemaElementNameType_Property | プロパティ名 |
| FdoSchemaElementNameType_Description | 説明欄 |
FdoISchemaCapabilitiesには以下の新しい機能が追加されました。
APIを通じて公開される必要があるデータ・プロパティに適用する制限もあります。
これらの制限をサポートするために、下記の関数がFdoISchemaCapabilitiesに追加されました。
ジオメトリプロパティ用ジオメトリタイプ
ジオメトリ・プロパティにとって、プロパティがサポートするジオメトリ・タイプを明確にするための能力がFDO API に必要でした。現在、このメソッドがSet/Get GeometryTypes()と呼ばれるにもかかわらず、メソッドを通して、設定はポイントや線形、あるいは領域を示す“geometric”タイプです。
これらは、線形がポリラインやマルチ・ポリライン、マルチ・カーブを含むことができるため明確ではありません。ポイントはポイントかマルチ・ポイントどちらか一方を含むことができます。多くの場合、ユーザは特定のものあるいはジオメトリ・タイプのセットを指定するか、あるいは利用できる特定のタイプを決める必要があります。例えば、SHPデータ・ストアにおいて、ジオメトリは一つの特定なタイプでなくてはなりません。もしポイントなら、マルチポイントではなく、一つのポイントだけが許可されています。
残念ながら、現在の方法では、新しいメソッドのセットに対する明白な選択肢になっていたであろう
GeometryTypesという名前を使用しています。代わりにSpecificGeometryTypesが選ばれました。
その結果、下記のFdoGeometricPropertyDefinitionメソッドがAPI に追加されました。
//このジオメトリック・プロパティに格納することができる特定のジオメトリ・タイプを得る。
戻り値は戻ってきたタイプの数である長さとともにサポートされるジオメトリ・タイプのリストで、戻されるタイプ数分の長さを伴っています。
FDO_API FdoGeometryType GetSpecificGeometryTypes (FdoInt32& length)
//このジオメトリ・プロパティに格納することができる特定のジオメトリ・タイプのセットをセットする。
値はジオメトリ・タイプのリストです。通常、1つの特定のタイプがサポートされるが、それ以上の場合もある。
FDO_API FdoGeometryType SetSpecificGeometryTypes (FdoGeometryType types, FdoInt32 length)
既存のメソッドとの相互作用
SetGeometryTypes()が使用され、GetSpecificGeometryTypes()が呼ばれたら、新しいメソッドはジオメトリック・タイプが許可するジオメトリ・タイプの完全なリストを返します。例えば、ジオメトリック・タイプがFdoGeometricType_Pointなら、GetSpecificGeometryTypes()によってFdoGeometryType_PointとFdoGeometryType_MultiPointが返ってきます。もし、GetGeometryTypes()の後にSetSpecificGeometryTypes()が呼ばれて、関連するジオメトリック・タイプがすべて指定されていれば、それは単にジオメトリック・タイプを返します。例えばFdoGeometryType_Point と FdoGeometryType_MultiPointの両方が設定されている場合のみ、FdoGeometricType_Pointを表示するということです。ジオメトリック・タイプが完全には指定されない場合、GetGeometryTypesは0を返すことができます。
ジオメトリック・タイプからジオメトリ・タイプへのマッピング
プロバイダの機能により、特定のプロバイダ用のジオメトリック・タイプのための有効なジオメトリ・タイプのリストは、上記のもののサブセットになることがあります。
クラス・レベル機能
FdoClassCapabilitiesインターフェースに下記のメソッドを追加しました。データ・ストア・タイプおよび依存ファイル
この機能強化は、FDOユーザーに、あるプロバイダがファイル・ベースのプロバイダなのか、データベース・ベースのプロバイダなのか、あるいはウェブサーバ・タイプのプロバイダ(例えばWFS)なのかどうかわかるようにするための方法を提供することです。さらに、ファイル・ベースのプロバイダ用に、データ・ストアに依存ファイルのリストを供給します。例えば、SHPファイルは.shp,.prj,.dbfなどの関連ファイルのセットを含みます。
さらに、ほとんどのプロバイダが単一のタイプです。例えば、SDFプロバイダは常にファイル・プロバイダで、Oracleは、常にデータベースプロバイダですが、一方、ODBCやOGRは特定の接続に依存して変わるプロバイダです。
ODBCや、おそらくOGRやFMEプロバイダには、プロバイダとデータ間に外部・アクセス・レイヤーがあるために正確なデータ・ストアを決めるのが難しいケースがあります。
ODBCへの接続は、DSNかODBCドライバー特有の接続文字列を経由します。もしDSNであれば、私たちはODBCドライバー・マネージャーから適切なファイル対サーバー情報を得る必要があります。これは単純ではないことがありますかもしれません。これは分析の必要が出てきます。接続文字列であるなら、私たちは、DSNを見つけるためか、またはファイルが特定されているかどうかを判断する、文字列を解析しなければいけません。これもまた、特に接続文字列のキーワードがややドライバーに特有なものかもしれないため、行うのが難しいかもしれません。
その結果、私たちには、ODBCプロバイダにローカルファイルが使用されているかどうか、またはサーバが使用されているかどうかを知らない状況があり得ます。
この機能強化では下記のメソッドがFdoIConnectionInfoインターフェースに追加されています。
FdoProviderDatastoreType enumerator を追加します。
enum FdoProviderDatastoreType:
| FdoProviderDatastoreType_Unknown | 未知のタイプ |
| FdoProviderDatastoreType_File | ファイル・ベースのデータ・ストア |
| FdoProviderDatastoreType_DatabaseServer | DBMSデータ・ストア |
| FdoProviderDatastoreType_WebServer | Webサーバー |
SHPプロバイダなど、いくつかのプロバイダは、ファイル・ディレクトリへの接続をサポートしています。
この場合、依存ファイルのリストには、データ・ストアで使われる辞書の中の関連ファイルを全て含みます。
ディレクトリがデータ・ストア(例えば.docファイル)を構築しない追加のファイルを含んでいる場合、それらはリストに含まれません。SHPデータ・ストア用のディレクトリーにコンフィギュレーション・ファイルがある場合、それはリストに含まれます。
返されたファイル名はフルパス修飾を含みます。
ファイル・タイプではないプロバイダ向けの依存ファイルのリストをリクエストすると、nullポインターが返って来ます。
一旦接続が開始されれば、依存ファイルのリストは利用可能になります。
現在のFDOプロバイダは下記のタイプに分類されます。
これらは特定の接続によって、依存するファイルかデータベース・サーバのいずれかになりえます。