2

Oracle Spatial データベースに、Lambert 投影 (SRID=1000047) のポリゴン (オーストリアにある) を含むテーブルがあり、これを WGS84 (SRID=8307) に変換したいと考えています。実行後

create table Table2 as (
  select ..., SDO_CS.TRANSFORM(geometry, 8307) as geometry, ...
from Table1)

表 2 のポリゴンはすべて、事実上、パリの北にある 1 点にあります。私たちは何を間違っていますか?

編集:例として、ポイント[11.26555560027597,53.87928275206266]は に変換され[2.3069645331040123,49.293822884973984]ます。8307 の代わりに SRID=4326 を使用しても同じ結果が得られます。

sqlplus クエリは次をselect * from cs_srs where srid=100047返します

PROJCS["LAMBERT",GEOGCS["GCS_MGI",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.1‌55,299.1528128]], PRIMEM["Greenwich",0],UNIT["Decimal Degree",0.017453292519943295]],PROJECTION["Lambert Conformal Conic"], PARAMETER["False_Easting",400000],PARAMETER["False_Northing",400000], PARAMETER["Central_Meridian",13.33333333333333],PARAMETER["Standard_Parallel_1",‌​46], PARAMETER["Standard_Parallel_2",49],PARAMETER["Scale_Factor",1], PARAMETER["Latitude_Of_Origin",47.5],UNIT["Meter",1]]
4

1 に答える 1

1

ソース SRID (1000047) は標準の EPSG コードではなく、どのバージョンの Oracle にも付属する座標系でもありません。自分で定義したもののように見えます。定義を教えていただけますか (select * from cs_srs where srid=1000047) ?

入力 (11.26555560027597,53.87928275206266) を見ると、どのような投影にも見えません。おそらくWGS84とは異なる測地座標系のように見えます。

使用する座標系の定義は、標準の SRID 31287 のものです。

PROJCS[
  "MGI / Austria Lambert",
  GEOGCS["MGI",
    DATUM["Militar-Geographische Institut",
      SPHEROID[
        "Bessel 1841",
        6377397.155,
        299.1528128,
        AUTHORITY["EPSG", "7004"]],
      TOWGS84[577.326, 90.129, 463.919, 5.137, 1.474, 5.297, 2.4232],
      AUTHORITY["EPSG", "6312"]],
    PRIMEM["Greenwich", 0.000000, AUTHORITY["EPSG","8901"]],
    UNIT["degree (supplier to define representation)", 0.0174532925199433, AUTHORITY["EPSG", "9122"]],
    AXIS["Lat", NORTH],
    AXIS["Long", EAST],
    AUTHORITY["EPSG", "4312"]],
  PROJECTION ["Lambert Conformal Conic"],
  PARAMETER ["Latitude_Of_Origin", 47.5],
  PARAMETER ["Central_Meridian", 13.3333333333333333],
  PARAMETER ["Standard_Parallel_1", 49.0],
  PARAMETER ["Standard_Parallel_2", 46.0],
  PARAMETER ["False_Easting", 400000.0],
  PARAMETER ["False_Northing", 400000.0],
  UNIT["metre", 1.0, AUTHORITY["EPSG", "9001"]],
  AXIS["X", NORTH],
  AXIS["Y", EAST],
  AUTHORITY["EPSG", "31287"]]

あなたのものとの主な違いは、データム シフト パラメータがないことです。もう 1 つの違いは、標準緯線が逆になっていることです。平行線 1 は 49 で、平行線 2 は 46 に対して、定義では 46 と 49 です。

例として投稿したジオメトリを変換すると、次のようになります(31287を使用してエンコードされています):

select sdo_cs.transform (
  sdo_geometry(2003,31287,null,sdo_elem_info_array(1, 1003, 1),sdo_ordinate_array(607205.274999979, 528729.87700098, 607052.849999979, 528254.154000983, 607080.702999979, 528224.753000982, 607098.889999979, 528220.193000982, 607113.807999979, 528225.393000979, 607272.533999979, 528720.85100098, 607269.772999979, 528724.96700098, 607205.274999979, 528729.87700098)), 
  4326
) 
from dual;

SDO_GEOMETRY(2003, 4326, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(16.1442004, 48.62389, 16.1419009, 48.6196637, 16.1422641, 48.6193904, 16.1425084, 48.6193435, 16.1427132, 48.6193854, 16.1451079, 48.623787, 16.1450725, 48.6238249, 16.1442004, 48.62389))

結果は私にはうまく見えます。であることを確認できますか?

実行している Oracle の正確なバージョンは何ですか? SRID 31287 は 10gR2 から存在します。

カスタムの 100047 の代わりに、データに srid 31287 を使用するのが最も簡単なようです。

于 2014-05-07T08:13:22.900 に答える