|
if you don't like writing functions, you could do it all in an SQL statement: SELECT (lat_d + lat_m/60 + lat_s/3600) AS lat_dd, (lon_d + lon_m/60 + lon_s/3600) AS lon_dd FROM ( SELECT Cast(StringSubStringLen(lat_dms,0,StringFindNth(lat_dms, ' ',0)) AS float32) AS lat_d, Cast(StringSubStringLen(lat_dms,StringFindNth(lat_dms, ' ',0)+1,StringFindNth(lat_dms, ' ',0)) AS float32) AS lat_m, Cast(StringSubStringLen(lat_dms,StringFindNth(lat_dms, ' ',1)+1,StringLength(lat_dms)) AS float32) AS lat_s, Cast(StringSubStringLen(lon_dms,0,StringFindNth(lon_dms, ' ',0)) AS float32) AS lon_d, Cast(StringSubStringLen(lon_dms,StringFindNth(lon_dms, ' ',0)+1,StringFindNth(lon_dms, ' ',0)) AS float32) AS lon_m, Cast(StringSubStringLen(lon_dms,StringFindNth(lon_dms, ' ',1)+1,StringLength(lon_dms)) AS float32) AS lon_s FROM [t] ) and, you can wrap that into a geometry like: SELECT GeomMakePoint(VectorMakeX2((lon_d + lon_m/60 + lon_s/3600), (lat_d + lat_m/60 + lat_s/3600)) ) FROM ( SELECT Cast(StringSubStringLen(lat_dms,0,StringFindNth(lat_dms, ' ',0)) AS float32) AS lat_d, Cast(StringSubStringLen(lat_dms,StringFindNth(lat_dms, ' ',0)+1,StringFindNth(lat_dms, ' ',0)) AS float32) AS lat_m, Cast(StringSubStringLen(lat_dms,StringFindNth(lat_dms, ' ',1)+1,StringLength(lat_dms)) AS float32) AS lat_s, Cast(StringSubStringLen(lon_dms,0,StringFindNth(lon_dms, ' ',0)) AS float32) AS lon_d, Cast(StringSubStringLen(lon_dms,StringFindNth(lon_dms, ' ',0)+1,StringFindNth(lon_dms, ' ',0)) AS float32) AS lon_m, Cast(StringSubStringLen(lon_dms,StringFindNth(lon_dms, ' ',1)+1,StringLength(lon_dms)) AS float32) AS lon_s FROM [t] )
|