我有一個數據庫表,當前在SRID 27700(英國國家網格)中包含幾何數據。雖然檢索數據,但我需要將其轉換爲SRID 4326(WGS84)。有什麼方法可以將PostGIS中發現的函數(如ST_Transform)應用於我的數據以獲得我需要的結果?將一個幾何圖形從一個SRID轉換到另一個SRID
注:該解決方案需要能夠使用T-SQL,而不是存儲過程等。我必須能夠建立一個聲明,並將它後來保存在一個表作爲一個字符串字段檢索來實現。這是因爲我的解決方案是數據庫不可知的。
我目前做這在甲骨文的方式如下:
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'
在使用PostGIS的PostgreSQL的我這樣做是這樣的:
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」版權即可。 –