現在、幾何データをSRID 27700(British National Grid)に保持しているデータベーステーブルがあります。しかし、データを取得する際にSRID 4326(WGS84)に変換する必要があります。必要な結果を得るために、PostGISで見つけたST_Transformなどの関数をデータに適用する方法はありますか?1つのSRIDから別のSRIDにジオメトリを変換/投影する
注:T-SQLを使用し、ストアドプロシージャなどを使用せずにソリューションを実装できる必要があります。ステートメントを作成し、後で取得するための文字列フィールドとしてテーブルに保存する必要があります。私の解決策はデータベースに依存しないからです。 PostgreSQLはPostGISのを使用して
select CLUSTER_ID,
NUM_POINTS,
FEATURE_PK,
A.CELL_CENTROID.SDO_POINT.X,
A.CELL_CENTROID.SDO_POINT.Y,
A.CLUSTER_CENTROID.SDO_POINT.X,
A.CLUSTER_CENTROID.SDO_POINT.Y,
TO_CHAR (A.CLUSTER_EXTENT.GET_WKT()),
TO_CHAR (A.CELL_GEOM.GET_WKT()),
A.CLUSTER_EXTENT.SDO_SRID
from (SELECT CLUSTER_ID,
NUM_POINTS,
FEATURE_PK,
SDO_CS.transform (CLUSTER_CENTROID, 4326) cluster_centroid,
CLUSTER_EXTENT,
SDO_CS.transform (CELL_CENTROID, 4326) cell_centroid,
CELL_GEOM FROM :0) a
where sdo_filter(A.CELL_GEOM,
SDO_CS.transform(mdsys.sdo_geometry(2003, :1, NULL, mdsys.sdo_elem_info_array(1,1003,3),mdsys.sdo_ordinate_array(:2, :3, :4, :5)),81989)) = 'TRUE'
が、私はこのようにそれをやっている:
はselect CLUSTER_ID,
NUM_POINTS,
FEATURE_PK, ST_X(a.CELL_CENTROID),
ST_Y(a.CELL_CENTROID),
ST_X(ST_TRANSFORM(a.CLUSTER_CENTROID, 4326)),
ST_Y(ST_TRANSFORM(a.CLUSTER_CENTROID, 4326)),
ST_AsText(a.CLUSTER_EXTENT),
ST_AsText(a.CELL_GEOM),
ST_SRID(a.CLUSTER_EXTENT)
FROM (SELECT CLUSTER_ID,
NUM_POINTS,
FEATURE_PK,
ST_TRANSFORM(ST_SetSRID(CLUSTER_CENTROID, 27700), 4326) cluster_centroid,
CLUSTER_EXTENT,
ST_TRANSFORM(ST_SetSRID(CELL_CENTROID, 27700), 4326) cell_centroid,
CELL_GEOM
from :0) AS a
where ST_Intersects(ST_Transform(ST_SetSRID(a.CELL_GEOM, 27700), :1), ST_Transform(ST_GeomFromText('POLYGON(('||:2||' '||:3||', '||:4||' '||:3||', '||:4||' '||:5||', '||:2||' '||:5||', '||:2||' '||:3||'))', 4326), :1))
これは私の状況では現在テストされていませんが、これまでのところ私の問題の最も良い解決策であると思われますが、実装に問題があるとは思えません。投稿していただきありがとうございます。私はあなたに恩恵を授与しました。 – CSharpened
ありがとう、私はそれ以上見て時間があったが、CLRの機能としてライブラリのすべての機能を実装し、それを並べ替えるように 'SAFE'のpesmissionsでインストールするのが良いでしょう。 –