将lambert转换为WGS84(地理编码+ Oracle定位器)

时间:2014-11-04 09:45:45

标签: oracle geocoding spatial

我目前正在寻找奥地利的地理编码地址。从给定的邮政编码和街道等我想自动找到WGS84格式的经度和纬度。我的第一种方法是使用像OpenStreetMaps Nominatim这样的Web服务。实际上这给出了不错的结果。

仍然强制性使用具有地址(PAC)的磁盘及其各自的地理位置作为基本事实。只有当我无法匹配此数据中的地址时,我才能使用Web服务方法作为备份解决方案。

对于上下文这么多,现在问题是: 在这个磁盘上,gelocation以X_LAMBERT和Y_LAMBERT给出,我无法弄清楚如何转换为纬度+经度。

使用Locator将diks的数据加载到Oracle 11g数据库中,我正在执行以下操作:

第1步: 创建空间几何对象:MDSYS.SDO_GEOMETRY(2003,31287,NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), MDSYS.SDO_ORDINATE_ARRAY(X_LAMBERT,Y_LAMBERT))

第2步:从WGS84到LatLng的投影: 我的Java客户端中的SDO_CS.TRANSFORM( GEOMETRY, 4326)我通过oracle.spatial.geometry.JGeometry从几何体获得纬度,经度。

注意: 我怀疑31287是lambert格式的SRID,我尝试了8307和3416,但后者给出了更糟糕的结果。步骤2适用于其他几何对象,我知道正确的SRID肯定...所以我猜错误是在第1步的某个地方。

我是否必须在USER_SDO_GEOM_METADATA中设置内容? SDO_GEOMETRY构造函数的错误用法?我还在混合基准和投影吗?也许你可以在那里启发我......

我的行动和输入示例的结果是:

Input: X_LAMBERT 602823, Y_LAMBERT 464397 Resulting Output: WGS84 (48.0469757028535, 16.0542604612583) Expected Output: WGS84 (48.546363, 16.085735)

它几乎是正确的,但仍然有100公里的距离; - )

0 个答案:

没有答案