我目前正在寻找奥地利的地理编码地址。从给定的邮政编码和街道等我想自动找到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公里的距离; - )