IlString query = IlString(“SELECT * FROM ROADS”); IldDbms* myDbms = IldNewDbms(“oracle81”, “scott/tiger@myDomain”); IlvObjectSDOFeatureIterator* iterator = new IlvObjectSDOFeatureIterator(myDbms, “SELECT * FROM ROADS”, // the name of the geometries column “Geometry”, // no Key ID 0, // the name of the x ordinates column “X”, // the name of the y ordinates column “Y” ); |
IldDbms* myDbms = IldNewDbms("oracle81", "scott/tiger@myDomain"); // You should create an adapter that fits your data. IlvMapAdapter* adapter = new IlvMapAdapter(0.5); IlvObjectSDOLayer* layer = new IlvObjectSDOLayer(adapter, myDbms, // The name of the SDO layer "ROADS". // Assume that the layer has only one // geometry column. 0, // Width of a tile in the database // coordinate system. 1500, // height of a tile in the database // coordinate system. 1500, // The name of the x-ordinates column "X". // The name of the y-ordinates column "Y". ); manager->addLayer(layer); |
IlvObjectSDOLayer* layer = new IlvObjectSDOLayer(adapter, myDbms, "ROADS", 0, 1500, 1500); |
メモ: IlvObjectSDOLayer レイヤーのロード・オン・デマンドで取得した各 IlvMapFeature で特別な操作を処理する場合、IlvDefaultObjectSDOTileLoader をサブクラス化して getFeatureIterator メソッドをオーバーライドする必要があります。このメソッドでは、getNextFeature メソッドをオーバーライドした IlvObjectSDOFeatureIterator のサブクラスのインスタンスを返す必要があります (この中で、レイヤーから返された各 IlvMapFeature で特別な処理を実行できます)。最後に、IlvDefaultObjectSDOTileLoader のサブクラスをレイヤーのタイル・ローダーとして設定する必要があります。 |
IldDbms* myDbms = IldNewDbms(“oracle8”, “scott/tiger@myDomain”); IlvObjectSDOWriter* writer = new IlvObjectSDOWriter(myDbms, “MyLayer”, “GEOMETRY”, “X”, “Y”, IlTrue); // Create a source feature iterator. IlvShapeFileReader* reader = new IlvShapeFileReader(“foo.shp”, 0); // Dump its content to the Oracle layer. IlvInt count; writer->writeFeatureIterator(reader, count); // calls close() |
メモ: Oracle Spatial オブジェクト・モデルの場合、ユーザー・メタデータ・テーブルなどの一部の補助テーブルを更新する必要があります。write() メソッドでデータを書き込んだときに、メソッド IlvObjectSDOWriter::close() を呼び出してデータベースを最新に保つようにしてください。 |
名前 | Null? | タイプ |
GEOMETRY | MDSYS.SDO_GEOMETRY | |
TYPE_DESC | VARCHAR2(512) |
IldDbms* myDbms = IldNewDbms(“oracle81”, “scott/tiger@myDomain”); IlvObjectSDOWriter* myWriter = new IlvObjectSDOWriter(myDbms, “ROADS”, “GEOMETRY”, “X”, “Y”, IlTrue); IlvMapFeature* feature = new IlvMapFeature(); // Construction of the IlvFeatureAttributeInfo: it can be done just once. IlvMapClassInfo** attributeClasses = new IlvMapClassInfo*[1]; IlvBoolean* nullable = new IlvBoolean[1]; nullable[0] = IlTrueIlTrue; attributeClasses[0] = IlvStringAttribute::ClassInfo(); char** names = new char*[1]; names[0] = new char[10]; //Exactly the same name as the layer column name. strcpy(names[0], “TYPE_DESC”); IlvFeatureAttributeInfo* info = new IlvFeatureAttributeInfo(1, names, attributeClasses, nullable); // The writing itself. IlvFeatureAttribute** attributes = new IlvFeatureAttribute*[1]; attributes[0] = new IlvStringAttribute(“MY FOO TYPE”); IlvMapsError error; IlvFeatureAttributeProperty* prop = new IlvFeatureAttributeProperty(info, attributes, error); feature->setAttributeInfo(info); feature->setAttributes(prop); if (error == IlvMaps::NoError()) error = myWriter->writeFeature(feature, IlTrue); |