1

私たちは、空間データを扱うGISRoRベースのソフトウェア会社です。現在、Oracleで純粋なSQLを直接実行していますが、これは困難なプロセスであるため、GeoRubyに切り替えることを検討しています。
当社のOracleデータベースとRails環境でGeoRubyを採用したいと考えています。
おそらくご存知のように、この目的のための適切に構造化されたアダプターはありません。
現在、私は自分の空間オラクルアダプタに取り組んでいます。今のところ、移行を使用してテーブルとジオメトリ列を作成できます。また、テーブルのモデルを作成することもできます。
たとえば、2つのプロパティ(name:stringとgeom:geometry)を持つGeoShapeモデルがあると仮定すると、次のことができます。

g = GeoShape.new(:name => "Point1", geom: Point.from_x_y(-1.6, 2.8, 123))

上記のステートメントを実行した後、私は次のようになります。

=> #<GeoShape id: nil, name: "Point1", geom: <GeoRuby::SimpleFeatures::Point:0x6a3cb030 @srid=123, @with_z=false, @with_m=false, @y=2.8, @x=-1.6, @z=0.0, @m=0.0>, created_at: nil, updated_at: nil>

ここで、g.saveを使用してモデルをDBに保存します。

GeoRubyタイプとOracleタイプのタイプが一致しないため、完全に論理的な次のエラーが発生します。

INSERT INTO "GEO_SHAPES" ("CREATED_AT", "GEOM", "ID", "NAME", "UPDATED_AT") VALUES (:a1, :a2, :a3, :a4, :a5)  [["created_at", Sun, 01 Jul 2012 04:34:34 UTC +00:00], ["geom", #<GeoRuby::SimpleFeatures::Point:0x6a3d3410 @srid=123, @with_z=false, @with_m=false, @y=2.8, @x=-1.6, @z=0.0, @m=0.0>], ["id", 10053], ["name", "Point1"], ["updated_at", Sun, 01 Jul 2012 04:34:34 UTC +00:00]]
ActiveRecord::StatementInvalid: OCIError: ORA-00932: inconsistent datatypes: expected MDSYS.SDO_GEOMETRY got CHAR: INSERT INTO "GEO_SHAPES" ("CREATED_AT", "GEOM", "ID", "NAME", "UPDATED_AT") VALUES (:a1, :a2, :a3, :a4, :a5)   


誰かがこれを行うプロセスについて何か考えがありますか?
GeoRuby構造を対応するOracleSDO_Geometryにマップする必要があると思いますが、プロセスについてはわかりません。

ご協力ありがとうございます。

4

2 に答える 2

1

素敵な宝石のrgeoがあります

そのコアは、業界標準のOGC Simple Features Specificationの実装です。これは、一連の幾何学的分析操作とともに、ポイント、ライン、ポリゴンなどの幾何学的オブジェクトのデータ表現を提供します。これにより、ジオロケーションデータのモデリングに最適です。また、さまざまなジオロケーション関連サービスを提供するオプションのアドオンモジュールのスイートもサポートしています。

于 2012-07-01T11:43:22.373 に答える
0

私はなんとかこれを行うことができました。これで、GeoRubyモデルからOracleDBに直接保存できます。このプロセスは、このスレッドで説明されています。

于 2012-07-04T18:29:29.057 に答える